2009-10-16 10 views
9

Sto facendo questo piccolo programma di utilità (Windows Form) e avrebbe bisogno di salvare un po 'di dati sul disco. In termini di DB si tratterebbe di circa una tabella, non più di circa duemila righe, ogni riga ha una dimensione inferiore a 1 KB.Quali opzioni ci sono per un DB incorporato veloce in .NET?

Cosa useresti?

Aggiunto: Dimenticato di dire: sarebbe davvero bello se l'intero programma fosse solo un file .EXE (più il file di dati, ovviamente). Quindi preferirei qualcosa che è costruito in .NET.

risposta

23

SQLite. È piccolo e ha great wrapper per .Net.

+0

+1. Non conoscevo il wrapper per .NET. Molto bello –

+1

E la porta .NET http://code.google.com/p/csharp-sqlite/ – mcintyre321

+0

Proprio come ulteriore avvertenza per il wrapper SQLite, supporta LINQ. –

8

È possibile utilizzare SQL Server Compact Edition (fornito con Visual Studio) o SQLite.

Ce ne sono molti altri, ma questi sono i più comuni.

Sono un grande fan di SQLite, perché è piccolo, semplice e veloce. C'è un fantastico ADO.NET provider per questo, che supporta Entity Framework.

3

Se si utilizza un DB incorporato, SQL Server Compact Edition è probabilmente la soluzione migliore seguita da SQLite come secondo.

Se stai parlando di una tabella, sembra che un DB incorporato potrebbe essere eccessivo e potresti essere servito meglio da un semplice file di testo.

2

I secondi il voto per SQLite. SQL Server CE è troppo pesante per qualsiasi scopo incorporato, a meno che non sia necessaria una semplice sincronizzazione con un database centrale, quindi è fantastico.

4

Se stai parlando di un singolo tavolo, non riesco a capire perché pensi di dover utilizzare un database relazionale per raggiungere i tuoi obiettivi. Che dire di un singolo file?

Naturalmente, a seconda del motivo per cui è necessario memorizzare le informazioni e il modo in cui i dati sono correlati, ci può essere un motivo per cui è necessario un db. Ma dovresti considerare se un DB è effettivamente ciò di cui hai bisogno in questo caso.

Un database relazionale non deve essere lo standard defacto per la memorizzazione dei dati. Ci sono molte molte alternative da prendere in considerazione prima di selezionare l'RDBMS.

Vedere il post di mcintyre321 per esempio.

+0

Divertente come le persone vedono la parola "DB" e immediatamente sono bloccati nel pensare a un DBMS. Ho detto da nessuna parte che volevo un DBMS completo? In effetti, pensavo più a soluzioni flat-file, serializzazione XML e simili. Mi chiedevo solo cosa avrebbero fatto le altre persone e perché o perché non avrebbero scelto alcune soluzioni. +1 –

+0

Sarei curioso di sapere quale sarebbe il formato di file flat e la libreria più veloce da interrogare. Il problema più comune è che non si ha il vantaggio di un indice durante la ricerca di file flat senza un motore di qualche tipo dietro le quinte per generare gli indici. –

+0

Questo sarebbe al limite dell'essere e del DBMS incorporato. I file flat sono piatti perché non hanno indici. A PARER MIO. –

1

Per qualcosa di piccolo e semplice, probabilmente andrei con XML e non usare un database. Se si astraggono il codice CRUD, è possibile modificare in seguito la parte del livello dati del codice in modo che utilizzi un database quando i dati crescono in termini di dimensioni e complessità.

0

Se non deve essere un database compatibile con SQL, quindi guarderei anche Db4o. Db4o è un database di oggetti per Java e .NET. La versione .NET è completamente scritta in C#.

3

È possibile creare un array della classe, contrassegnarlo [Serializable] e utilizzare solo i metodi serialize/deserialize incorporati per la persistenza.

1

Dopo aver esaminato lo stesso problema. Da tutti i possibili candidati due sembravano buoni. Questi sono SQLite e Firebird (firebirdsql.org). Ma l'uccello di fuoco aveva alcune caratteristiche in più di SQLite.

UPD: Ecco un interessante informazioni su un semplice file XML con lo scrittore deflate per ridurre le dimensioni Firebird + dotnet http://www.firebirdsql.org/dotnetfirebird/embedded/index.html

+0

+1 per nominare un'alternativa a SQLite – tobsen

0

I secondi SQL Lite o. Veloce e non così sporco.

1

Berkeley DB è anche una buona scelta per il database incorporato. E c'è un library che fornisce un'interfaccia .NET 2.0 per questo.

0

Prova questo: https://github.com/mdsoftware/mData. Niente terze parti, incluse tutte le fonti, incluse alcune cose carine come l'elaborazione dei dati simile a Lisp e il compilatore di espressioni. Ho cercato di creare qualcosa di veramente semplice ma funzionale.

Problemi correlati