Sto pensando di utilizzare/implementare una sorta di archivio di valori-chiave (o documento) incorporato per l'applicazione desktop Windows. Voglio essere in grado di memorizzare vari tipi di dati (le tracce GPS potrebbero essere un esempio) e naturalmente essere in grado di interrogare questi dati. La quantità di dati sarebbe tale da non poter essere caricata tutta in memoria nello stesso momento.Archivio dati non relazionale incorporato (nosql)
Sto pensando di utilizzare sqlite come motore di archiviazione per un archivio di valori-chiave, ad esempio y-serial, ma scritto in .NET. Ho anche letto su FriendFeed's usage of MySQL to store schema-less data, che è un buon indicatore su come utilizzare RDBMS per dati non relazionali. sqlite sembra essere una buona opzione per la sua semplicità, portabilità e dimensioni della libreria.
La mia domanda è se ci sono altre opzioni per un archivio non relazionale incorporato? Non ha bisogno di essere distribuibile e non deve supportare le transazioni, ma deve essere accessibile da .NET e dovrebbe avere una piccola dimensione di download.
AGGIORNAMENTO: Ho trovato un articolo dal titolo SQLite as a Key-Value Database che confronta sqlite con Berkeley DB, che è una libreria di archivio valore-chiave incorporato.
Ma voleva un negozio senza schema .... –
Astor ha ragione: voglio evitare il modello relazionale. Voglio essere in grado di memorizzare praticamente qualsiasi tipo di dati senza prima dover preparare lo schema del database per questo. Inoltre, avere un modello relazionale rigido può essere problematico se la struttura dei dati cambia in seguito - avrei bisogno di scrivere script di modifica SQL per i dati esistenti nello store. –
So cosa sta cercando, ma strumenti come NHibernate con generazione di schemi nascondono quasi completamente l'aspetto relazionale. Non è necessario definire alcuno schema, ma solo la mappatura per le classi (che è molto semplice con Fluent NHibernate) e quando le classi cambiano, sarà necessario eseguire qualche tipo di aggiornamento in qualsiasi strategia di persistenza. –