Qual è una buona scelta di database per una piccola applicazione .NET? [chiuso]


180

Sto sviluppando una piccola applicazione con C # in .NET e voglio avere un piccolo database leggero che non utilizza molte risorse.

Potresti elencare alcuni dei software di database leggeri più conosciuti .


Risposte:


192

14/06/2016 Sì ... ancora ricevendo voti: - /


17/03/2014 Ricevo ancora voti positivi per questo, siate consapevoli della data alla quale è stata inizialmente data risposta. Sebbene i tre elementi principali elencati siano ancora interamente praticabili, l'elenco tenderà a diventare stantio. Sono disponibili ulteriori tecnologie di database che non sono elencate.


Hai un paio di opzioni immediatamente riconoscibili e gratuite:

Il download di SQL Server Compact viene fornito con il provider ADO.NET che sarà necessario fare riferimento nel codice. Il download di SQLite potrebbe non averlo, quindi ecco un link:

http://sqlite.phxsoftware.com/

Tutti e tre usano SQL, anche se probabilmente con alcune limitazioni / stranezze. Management Studio funziona con Compact e LocalDB, mentre con SQLite è necessario un altro strumento di interfaccia utente come SQLite Administrator:

http://sqliteadmin.orbmu2k.de/

Esistono alternative NoSQL, come:

Personalmente eviterei di usare MS Access di fronte ad altre opzioni gratuite. Non puoi sbagliare con LocalDB, Compact o SQLite. Sono tutti piccoli database adorabili che girano relativamente velocemente con poca RAM - preferenza personale per quanto riguarda gli aspetti religiosi sull'apprezzamento di un prodotto Microsoft suppongo :-)

Uso Sterling per la programmazione di Windows Phone in quanto è stato creato per utilizzare l'archiviazione isolata. Ho visto solo articoli su RavenDb, ma posso dirti che si tratta di un framework di archiviazione dei documenti basato su JSON.

Per non confondere la situazione (utilizzare SQLite, LocalDB di SQL Server Express o SQL Server Compact Edition), ma esistono altri database incorporati / locali, alcuni sono relazionali, altri sono orientati agli oggetti:

Non tutti sono gratuiti. Il supporto SQL / LINQ / in-proc differisce tra loro tutti. Questo elenco è solo per curiosità.

Ora c'è anche Karvonite , tuttavia il link alla galleria di codici è interrotto. Quando sarà di nuovo live, esaminerò questo per lo sviluppo di WP7.


11
+1 per SQL Server CE. Invece di installare un server SQL insieme alla tua app, puoi semplicemente usare le dll di SQL Server CE e avere un file di database nella directory di lavoro della tua applicazione. Semplice.
Phil

2
RavenDB è davvero un database di documenti ma la sua API è molto più potente delle semplici coppie nome e valore. Il problema è che non è gratuito per i progetti commerciali nel caso in cui stavi cercando alternative gratuite.
JCallico,

@JCallico Devo ammettere che stavo generalizzando un po 'con il riassunto, ma dubito che qualcuno prenderebbe quello che ho detto come vangelo.
Adam Houldsworth,

@Brendan Long, non esiste un'implementazione SQL là fuori che puoi dire che è standard al 100%.
Pop Catalin,

1
Invece di lasciare il piccolo messaggio difficile da leggere nella parte superiore della risposta che spiega che le informazioni sono obsolete. Potrebbe essere più semplice aggiornare e / o aggiungere alla tua risposta e includere alcuni esempi di opzioni disponibili oggi.
James Shaw,

58

Consiglierei SQLite . Lo stiamo usando per quasi tutte le app che sviluppiamo dove lavoro.

È piccolo e compatto. Richiede una DLL per essere nella directory dell'app, ma non è necessario avere altri software installati come Access o SQL Server. Inoltre, come affermato da danielkza di seguito, "SQLite è di dominio pubblico, quindi non devi preoccuparti affatto delle licenze". Questo può davvero fare la differenza.

Puoi usare System.Data.SQLite o csharp-sqlite per accedervi in ​​un'app C # usando gli stessi metodi di SQL o OleDB.

Sarà inoltre necessaria un'applicazione per modificare / gestire il database. Il migliore secondo me è SQLite Studio . Eccone un altro paio:
SQLite Admin
SQLite 2009 Pro (in fondo alla pagina)
Aggiornamento - 25/07/11 - Altre app SQLite (domanda qui su SO)

Ecco di più su SQLite:
SQLite su Wikipedia
Aziende che utilizzano SQLite

Funzioni personalizzate: come aggiunta, se stai cercando nelle funzioni principali di SQLite e non ne vedi una che ti piace, puoi creare le tue funzioni personalizzate. Ecco un paio di esempi: dall'esempio
SO
Anoter


8
Un'aggiunta: SQLite è di dominio pubblico, quindi non devi preoccuparti affatto delle licenze.
danielkza,

@MikeWebb Sqlite funzionerà con le applicazioni ClickOnce senza la necessità di installare alcun servizio aggiuntivo o altro? Funzionerà se si trova su una condivisione di rete per più utenti simultanei?
Prokurors,

1
@Prokurors - Tutto ciò che SQLite deve eseguire è il file DLL corrispondente alla lingua che stai usando nel tuo programma (C ++, C #, ecc.). Non ci sono altri servizi o programmi richiesti. Inoltre, dovrebbe funzionare su una rete con utenti simultanei. Ne abbiamo una copia in esecuzione su un server in cui lavoro e funziona benissimo. Puoi approfondire la concorrenza qui: sqlite.org/lockingv3.html
Mike Webb,

10

Firebird incorporato può essere una buona scelta

La versione integrata è una straordinaria variante del server. È un server Firebird con tutte le funzionalità e racchiuso in pochi file. È molto facile da implementare, poiché non è necessario installare il server.

Ci sono alcuni driver dot net molto buoni


8

SQL Server Compact se si desidera utilizzare la soluzione Microsoft ufficiale. Questo ha il vantaggio di poter usare la replica con SQL Server se hai bisogno di quel genere di cose.

SQLite se vuoi qualcosa di molto semplice, piccolo e gratuito. Questo è ciò che Android utilizza per i suoi database interni, quindi è molto ben supportato e ci sono ottimi collegamenti .NET disponibili.

Un netto vantaggio di SQLite è che è multipiattaforma. Quindi, se si desidera trasferire la propria applicazione su Mono.NET, non si dovrebbero apportare modifiche all'implementazione del database.

Non mi piace MS Access per questa soluzione, ma molte persone lo hanno incluso nella loro risposta. È limitato a causa del formato proprietario e della dipendenza dalla piattaforma. Ha i suoi vantaggi però. Puoi manipolare facilmente i dati se disponi di una copia di MS Access, puoi creare query graficamente e creare macro. Puoi facilmente integrarlo con il resto di MS Office.

Tra tutti questi SQLite sarebbe la mia raccomandazione perché è così compatto, ben documentato e supportato da un esercito crescente di colleghi sviluppatori indipendentemente dalla piattaforma.

MODIFICARE

Mi sono reso conto che esiste un'altra opzione che tutti qui hanno dimenticato di menzionare

Finché non sono necessarie tabelle relazionali, è possibile utilizzare il file CSV letto come set di dati tramite ADO.NET. (Più di un suggerimento lulz di ogni altra cosa, ma sarebbe adatto in alcuni casi e non richiede librerie aggiuntive per una distribuzione MS.


8

Se si sta creando un progetto con .NET 4.0.2 o versione successiva e si desidera il supporto del database incorporato, prendere in considerazione SQL Server Express LocalDB .

È un'aggiunta relativamente nuova alla famiglia Express che presenta un footprint di installazione più piccolo e un overhead di gestione ridotto (rispetto ad altre edizioni di Express), ma mantiene gli aspetti di programmabilità di SQL Server. Cioè, a differenza di Compact Edition, LocalDB non richiede l'installazione di un provider ADO.NET separato per comunicare con SQL.

Vedere quanto segue per maggiori dettagli:

SQL Express v LocalDB v SQL Compact Edition (Blog MSDN)
SQL LocalDB vs SQL Server CE ( StackTranslate.it )


7

1
O in particolare per .NET, ti consigliamo di dare un'occhiata a RavenDB
marc_s

Mongo, sebbene adorabile, non funziona in modalità embedded: devi avviare un processo server separato, che potrebbe essere un po 'pesante per gli scopi del PO.
Mike Woodhouse,

Mongodb non supporta sql. chi chiede "dove posso salvare e recuperare i record con le query Sql". E per di più, mongodb ha fame di memoria. Non lo consiglio per questo caso d'uso.
Peter Long,

4

Puoi usarlo Sql Server Express Editioncome gratuito ed è ugualmente potente fino a quando e se non vuoi funzionalità come mirroringecc. Dai un'occhiata a questo .


8
La domanda afferma "Non ho bisogno di nulla di potente". SQL Server Express NON è una versione leggera di SQL Server. È una versione limitata delle dimensioni del database e ha un grande impatto sull'avvio del PC dell'utente all'avvio dei servizi. È eccessivo per questa domanda. SQL Server Compact è più adatto.
Moog,

2

Ho usato db4o con successo.
Basato su file, grande comunità, semplice da usare.

http://www.db4o.com/

Dettagli delle licenze

Licenza pubblica generale gratuita db4o è concessa in licenza predefinita GPL.

La licenza GPL è l'ideale se si prevede di utilizzare db4o internamente o si prevede di sviluppare e distribuire il proprio lavoro derivato come software gratuito in base alla GPL.

Licenza commerciale È necessaria una licenza commerciale se si desidera incorporare db4o in un prodotto commerciale non GPL. I licenziatari commerciali hanno accesso a servizi e supporto premium.


Ho usato db4o per 6 mesi nel 2012. Se ci fosse un modo per evitare problemi di non poter accedere ai vecchi dati dopo la modifica del modello a oggetti, voterei a favore di questa risposta. Per quanto ne so, è difficile evitare di perdere vecchi dati se si cambiano gli oggetti. La linea di fondo è sempre conservare una copia di backup dei dati altrove in un formato diverso, non db4o (che è comunque una regola piuttosto generica).
Contango,

2

Un'alternativa che non è stata menzionata se non è necessario che sia un database gratuito è VistaDB. È tutto codice gestito, offre tonnellate di funzionalità per un database incorporato e offre prestazioni piuttosto buone. Un ponte piuttosto buono tra SQL CE e SQL Server Express poiché la maggior parte delle procedure memorizzate VistaDB verrà eseguita senza modifiche in SQL Server Express. Sono stato abbastanza soddisfatto del servizio clienti anche a questo punto. L'ho usato al lavoro. Nessun servizio da avviare. Un DB vuoto è di circa 1 MB e anche la DLL è piuttosto leggera. Ha provider ADO.NET e cose del genere. Mi è piaciuto molto.

VistaDB


Ciao! Funziona in uno scenario multiutente? Ad esempio, posso archiviare questo VistaDB su una condivisione di rete e accedervi contemporaneamente da più utenti?
Prokurors,

1
Fa alcune abilità limitate in questo senso. Ovviamente non può sostituire un vero database in esecuzione con un motore db locale su quella casella, ma offre alcune opzioni transazionali. Stavamo pianificando di usarlo in quello scenario come se sembrasse che lo gestisse meglio di qualsiasi delle opzioni gratuite che abbiamo incontrato e i nostri clienti probabilmente non avrebbero l'esperienza per configurare il server SQL o qualsiasi altra cosa. Offre più funzionalità di sqlce ma non tanto quanto il server sql completo. È un software di qualità reale.
Rig

Grazie per le informazioni! E la loro nuova versione 5 prevista sembra molto promettente. Hai provato Entity Framework con VistaDB? Forse hai anche creato prima il file VistaDB con il codice EF?
Prokurors il

1
L'ho fatto ma questo è stato circa 3-4 anni fa. A quel punto ho scoperto che funzionava bene e quella è stata la mia prima esperienza EF. Presumo che sia meglio ora. L'unica mancanza che aveva al momento era che alcuni segmenti della documentazione erano scarsi, ma ciò avveniva durante la transizione dopo che era stata acquistata dai loro attuali proprietari.
Rig

1
PS: Almeno quando l'ho usato erano più che disposti a fornire una licenza demo per l'uso. Consiglio vivamente di provarlo prima di impegnarsi al costo della licenza.
Rig

1

SQL Server Compact Edition è il migliore in quanto è gratuito, leggero e integra bene


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.