Domanda

Sono un ragazzo incorporato, non è un tipo di database. Mi è stato chiesto di ridisegnare un sistema esistente che ha i colli di bottiglia in più punti.

Il dispositivo integrato si basa su un processore ARM 9 funziona a 220MHz.

Ci dovrebbe essere una base di dati di 50K voci (può aumentare a 250k) ognuno con 1k dei dati (max 8 archiviato). Questo è approssimativa -. Posso cercare di ottenere dati più precisi, se necessario

Al momento stanno utilizzando SqlLite 2 e la pianificazione di trasferirsi a SqlLite 3.

Senza iniziare una flame war - Sono un completo d newbie / b solo alla ricerca di consigli - è che la decisione "migliore"? Mi rendo conto che questo potrebbe essere un "Quanto è lungo un pezzo di corda?" domanda, ma tutti i puntatori merion essere molto apprezzato. Non mi dispiace fare un sacco di lettura e di ricerca, ma solo sperato che si potrebbe ottenere me fuori ad un inizio di volo. Grazie.

P.S Anche in questo caso, una riscrittura totale, potrebbe anche non restare con Linux embedded, ma passare a eCos, non ti preoccupare troppo di un tempo di conversione tra i formati d / b. Oh, e accessi dovrebbero essere rari, al massimo uno ogni pochi secondi.


modifica: ok, sembra che hanno 30k voci (possono raggiungere 100k o più) di soli 5 o 6 campi ciascuno, ma almeno 3 di loro può essere una chiave di ricerca per un record. Sono giocare con "non avendo d / b a tutti, dal momento che i dati sono così semplici", ma mi sembra che, con più chiavi, non abbiamo potuto usare cose fantasiose come un quicksort () cerca (ricorsiva, ricerca binaria ). Ogni pensiero su "no D / B", proprio data-strutture?

A proposito, una chiave è 800k - non so come bene SqlLite gestisce che (? Magari con "no d / b" Devo hash che 800K a qualcosa di più piccolo)

È stato utile?

Soluzione

Anche SQLite è il database scelto da praticamente tutti i sistemi operativi mobili. Android, Iphone OS e Symbian nave con SQLite che mi fa pensare che la manodopera è stato speso per ottimizzarlo per il processore a quei telefoni (quasi sempre ARM).

Altri suggerimenti

Vorrei bastone con SQLite, è ampiamente supportato e piuttosto ricco di funzionalità.

  • Firebird (precedentemente Interbase) afferma di lavorare bene incorporato.

  • HypersonicQL (HQL) è piccolo e veloce e sostiene di essere adatto per l'utilizzo incorporato anche.

Purtroppo, non ho alcuna esperienza personale per eseguire il backup o reclamo.

SQLite è probabilmente una scommessa abbastanza sicuro. Tuttavia, se le prestazioni sono veramente importante per l'applicazione e non avete bisogno di un database relazionale, vi consiglio di dare un'occhiata a Berkeley DB link testuale . Berkeley DB non è un database relazionale però. In altre parole, se i dati sono raggruppati in tabelle diverse e costantemente bisogno di interrogare set di risultati che richiedono riguardanti i dati da più di una tabella, probabilmente avete bisogno di un database relazionale. Berkeley DB è più adatto per qualcosa come guardare le tabelle (vale a dire, i dati sono organizzati in pochi tavoli e non c'è bisogno di interrogare i dati provenienti da più di uno di loro, al fine di produrre il risultato che si desidera imposta). Berkeley DB è molto veloce ma richiederà più lavoro da parte vostra, al fine di ottenere il massimo da esso.

se volete un'alternativa, quindi BerkeleyDB è la pena di guardare. ha usato per essere di proprietà di software Sleepycat, ma è ora disponibile da Oracle. si tratta di un motore di database barebone; è direttamente programmabile (anziché uno SQL) frontend. è usato come parte del motore di base in molte grandi banche dati, e come il database in molti dispositivi embedded - ha usato per essere particolarmente popolare per la gestione delle tabelle di routing nei router. tende ad avere trascurato in questi giorni per configurazioni più alla moda, ma ho trovato ad essere decente, solida e per i numeri che sta parlando può essere estremamente veloce.

Io suggerisco sqlite3 troppo. E 'utilizzato da molti famosa applicazione.

SQLite è ok, ma non si prevede di utilizzare se si prevede di inserire, aggiornare e cancellare i dati che coinvolge più di 6 righe (Millon tutti allo stesso tempo, o una parte parziale). Il fatto è che la parola chiave VUOTO deve essere fatto everynow e poi e diventa un collo di bottiglia per le prestazioni molto grave, anche quando è automatica.

8 anni di ritardo, ma come un aggiornamento: ho avuto abbastanza buona esperienza utilizzando Raima Database Manager . Se siete alla ricerca di un piccolo db ingombro, possono ottenere fino a 40k. Uno dei motivi che mi piace RDM è l'indipendenza dalla piattaforma, è portabile su macchine a 32-bit e 64-bit e tra i big-endian e little-endian architetture così come il supporto per la maggior parte dei sistemi operativi, il che significa che si può utilizzare su embedded Linux e eCos come detto nel primo post. Ed è prestazioni migliora quando si aggiungono una migliore hardware e gli utenti al contrario di SQLite

non ho familiarità con il sistema di embed, ma l'uso iphone ARM9, e SQLite come DB

Il 01-11-10 Embedded.com Newsletter fa un bel lavoro di coprire questo argomento. La newsletter è disponibile all'indirizzo Embedded.com: Embedded.com Tech focus Newsletter (1-11-10):. Embedding database

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top