Was ist eine gute Datenbankauswahl für eine kleine .NET-Anwendung? [geschlossen]


180

Ich entwickle eine kleine Anwendung mit C # in .NET und möchte eine kleine, leichte Datenbank, die nicht viele Ressourcen verbraucht.

Könnten Sie einige der Liste bitte bekanntesten Leichtgewichtler Datenbank - Software .


Antworten:


192

14/06/2016 Yep ... bekommt immer noch positive Stimmen: - /


17/03/2014 Ich erhalte immer noch Upvotes dafür. Beachten Sie das Datum, an dem dies ursprünglich beantwortet wurde. Obwohl die drei wichtigsten aufgelisteten Elemente noch vollständig realisierbar sind, wird die Liste tendenziell veraltet sein. Es sind weitere Datenbanktechnologien verfügbar, die nicht aufgeführt sind.


Sie haben einige sofort erkennbare und kostenlose Optionen:

Der SQL Server Compact-Download wird mit dem ADO.NET-Anbieter geliefert, auf den Sie im Code verweisen müssen. Der SQLite-Download hat es möglicherweise nicht. Hier ist ein Link:

http://sqlite.phxsoftware.com/

Alle drei verwenden SQL, allerdings mit einigen Einschränkungen / Macken. Management Studio funktioniert mit Compact und LocalDB, während Sie mit SQLite ein anderes UI-Tool wie SQLite Administrator benötigen:

http://sqliteadmin.orbmu2k.de/

Es gibt NoSQL-Alternativen wie:

Persönlich würde ich die Verwendung von MS Access angesichts anderer kostenloser Optionen vermeiden. Mit LocalDB, Compact oder SQLite können Sie nichts falsch machen. Es sind alles schöne kleine Datenbanken, die relativ schnell in wenig RAM laufen - persönliche Präferenz für die religiösen Aspekte, wenn man ein Microsoft-Produkt mag, nehme ich an :-)

Ich verwende Sterling für die Windows Phone-Programmierung, da es für die Verwendung von isoliertem Speicher ausgelegt ist. Ich habe nur Artikel über RavenDb gesehen, aber ich kann Ihnen sagen, dass es sich um ein JSON-basiertes Dokumentenspeicherframework handelt.

Um die Situation nicht zu verwechseln (mit SQLite, SQL Server Express LocalDB oder SQL Server Compact Edition), aber es gibt andere eingebettete / lokale Datenbanken, einige sind relational, andere objektorientiert:

Nicht alle davon sind kostenlos. Die SQL / LINQ / In-Proc-Unterstützung ist in allen Bereichen unterschiedlich. Diese Liste dient nur der Neugier.

Es gibt jetzt auch Karvonite , jedoch ist der Link zur Code-Galerie defekt. Wenn es wieder live ist, werde ich dieses für die WP7-Entwicklung untersuchen.


11
+1 Für SQL Server CE. Anstatt einen SQL Server neben Ihrer App zu installieren, können Sie einfach die SQL Server CE-DLLs verwenden und eine Datenbankdatei im Arbeitsverzeichnis Ihrer Anwendung haben. Einfach.
Phil

2
RavenDB ist zwar eine Dokumentendatenbank, aber die API ist viel leistungsfähiger als einfache Name-Wert-Paare. Das Problem ist, dass es für kommerzielle Projekte nicht kostenlos ist, falls Sie nach kostenlosen Alternativen suchen.
JCallico

@JCallico Ich gebe zu, dass ich ein bisschen mit der Zusammenfassung verallgemeinert habe, aber ich bezweifle, dass irgendjemand das, was ich gesagt habe, als Evangelium betrachten würde.
Adam Houldsworth

@Brendan Long, es gibt keine SQL-Implementierung, von der man sagen kann, dass sie 100% Standard ist.
Pop Catalin

1
Anstatt die kleine, schwer lesbare Nachricht oben in Ihrer Antwort zu hinterlassen, die erklärt, dass die Informationen veraltet sind. Es ist möglicherweise einfacher, Ihre Antwort zu aktualisieren und / oder an sie anzuhängen und einige Beispiele für heute verfügbare Optionen anzugeben.
James Shaw

58

Ich würde SQLite empfehlen . Wir verwenden es für fast alle Apps, die wir dort entwickeln, wo ich arbeite.

Es ist klein und kompakt. Es muss sich eine DLL im App-Verzeichnis befinden, aber Sie müssen keine andere Software wie Access oder SQL Server installieren. Wie von danielkza unten angegeben, ist "SQLite gemeinfrei, sodass Sie sich überhaupt keine Gedanken über die Lizenzierung machen müssen." Das kann wirklich einen großen Unterschied machen.

Sie können System.Data.SQLite oder csharp-sqlite verwenden , um in einer C # -App mit denselben Methoden wie in SQL oder OleDB darauf zuzugreifen.

Sie benötigen außerdem eine Anwendung zum Bearbeiten / Verwalten der Datenbank. Das beste ist meiner Meinung nach SQLite Studio . Hier noch ein paar mehr:
SQLite Admin
SQLite 2009 Pro (unten auf der Seite)
Update - 25.07.11 - Weitere SQLite-Apps (Frage hier zu SO)

Weitere Informationen zu SQLite:
SQLite zu Wikipedia
Unternehmen, die SQLite verwenden

Benutzerdefinierte Funktionen: Wenn Sie in den SQLite-Kernfunktionen suchen und keine sehen, die Ihnen gefällt, können Sie außerdem Ihre eigenen benutzerdefinierten Funktionen erstellen. Hier einige Beispiele:
Aus dem SO
Anoter-Beispiel


8
Ein Zusatz: SQLite ist gemeinfrei, sodass Sie sich überhaupt keine Gedanken über die Lizenzierung machen müssen.
Danielkza

@MikeWebb Funktioniert Sqlite mit ClickOnce-Anwendungen, ohne dass ein zusätzlicher Dienst oder ähnliches installiert werden muss? Funktioniert es, wenn es sich auf einer Netzwerkfreigabe für mehrere gleichzeitige Benutzer befindet?
Prokurors

1
@Prokurors - Alles, was SQLite ausführen muss, ist die DLL-Datei, die der Sprache entspricht, die Sie in Ihrem Programm verwenden (C ++, C # usw.). Es sind keine weiteren Dienste oder Programme erforderlich. Außerdem sollte es in einem Netzwerk mit gleichzeitigen Benutzern funktionieren. Wir haben eine Kopie auf einem Server, auf dem ich arbeite, und sie funktioniert hervorragend. Weitere Informationen
Mike Webb

10

Firebird Embedded kann eine gute Wahl sein

Die eingebettete Version ist eine erstaunliche Variante des Servers. Es ist ein voll funktionsfähiger Firebird-Server, der in nur wenigen Dateien enthalten ist. Die Bereitstellung ist sehr einfach, da der Server nicht installiert werden muss.

Es gibt einige sehr gute Dot-Net- Treiber


8

SQL Server Compact, wenn Sie die offizielle Microsoft-Lösung verwenden möchten. Dies hat den Vorteil, dass Sie die Replikation mit SQL Server verwenden können, wenn Sie so etwas benötigen.

SQLite, wenn Sie etwas sehr einfaches, kleines und freies wollen. Dies ist, was Android für seine internen Datenbanken verwendet, so dass es sehr gut unterstützt wird und es sehr gute .NET-Bindungen gibt.

Ein klarer Vorteil von SQLite ist, dass es plattformübergreifend ist. Wenn Sie also Ihre Anwendung auf Mono.NET portieren möchten, müssen Sie keine Änderungen an der Datenbankimplementierung vornehmen.

Ich mag MS Access für diese Lösung nicht, aber viele Leute haben es in ihre Antwort aufgenommen. Es ist aufgrund des proprietären Formats und der Plattformabhängigkeit begrenzt. Es hat jedoch seine Vorteile. Sie können Daten einfach bearbeiten, wenn Sie über eine Kopie von MS Access verfügen. Sie können Abfragen grafisch erstellen und Makros erstellen. Sie können es problemlos in den Rest von MS Office integrieren.

Von all diesen wäre SQLite meine Empfehlung, da es so kompakt, gut dokumentiert und von einer wachsenden Armee von Entwicklerkollegen unabhängig von der Plattform unterstützt wird.

BEARBEITEN

Mir wurde klar, dass es eine andere Option gibt, die jeder hier vergessen hat zu erwähnen

Solange Sie keine relationalen Tabellen benötigen, können Sie die über ADO.NET gelesene CSV-Datei als Dataset verwenden. (Eher ein Lulz-Vorschlag als alles andere, aber in einigen Fällen geeignet und erfordert keine zusätzlichen Bibliotheken für eine MS-Bereitstellung.


8

Wenn Sie ein Projekt mit .NET 4.0.2 oder höher erstellen und Unterstützung für eingebettete Datenbanken wünschen, ziehen Sie SQL Server Express LocalDB in Betracht .

Es ist eine relativ neue Erweiterung der Express-Familie, die einen geringeren Installationsaufwand und einen geringeren Verwaltungsaufwand (im Vergleich zu anderen Express-Editionen) bietet, jedoch die Programmierbarkeitsaspekte von SQL Server beibehält. Das heißt, im Gegensatz zu Compact Edition erfordert LocalDB nicht die Installation eines separaten ADO.NET-Anbieters, um mit SQL zu kommunizieren.

Weitere Informationen finden Sie im Folgenden:

SQL Express v LocalDB v SQL Compact Edition (MSDN-Blogs)
SQL LocalDB vs SQL Server CE ( Stapelüberlauf )


7

1
Oder speziell für .NET möchten Sie vielleicht RavenDB
marc_s

Mongo ist zwar reizend, läuft aber nicht eingebettet - Sie müssen einen separaten Serverprozess starten, der für die Zwecke des OP etwas schwer sein kann.
Mike Woodhouse

Mongodb unterstützt kein SQL. Der Fragesteller möchte, "wo ich Datensätze durch SQL-Abfragen speichern und abrufen kann". Und außerdem ist Mongodb gedächtnishungrig. Ich empfehle es nicht für diesen Anwendungsfall.
Peter Long

4

Sie könnten nutzen Sql Server Express Editionals ihre freie und ist ebenso leistungsfähig , bis und es sei denn , Sie wollen Funktionalität wie mirroringusw. Werfen Sie einen Blick auf diese .


8
Die Frage lautet "Ich brauche nichts Mächtiges". SQL Server Express ist KEINE Light-Version von SQL Server. Es handelt sich um eine Version mit begrenzter Datenbankgröße, die einen großen Einfluss auf den Start des Benutzer-PCs beim Start der Dienste hat. Es ist übertrieben für diese Frage. SQL Server Compact ist besser geeignet.
Moog

2

Ich habe db4o mit Erfolg verwendet.
Dateibasierte, große Community, einfach zu bedienen.

http://www.db4o.com/

Lizenzdetails

Kostenlose allgemeine öffentliche Lizenz db4o ist standardmäßig unter der GPL lizenziert.

Die GPL-Lizenz ist ideal, wenn Sie db4o intern verwenden oder Ihre eigene abgeleitete Arbeit als freie Software auch unter der GPL entwickeln und vertreiben möchten.

Kommerzielle Lizenz Eine kommerzielle Lizenz ist erforderlich, wenn Sie db4o in ein kommerzielles Nicht-GPL-Produkt einbetten möchten. Kommerzielle Lizenznehmer erhalten Zugang zu Premium-Services und -Support.


Ich habe db4o 2012 6 Monate lang verwendet. Wenn es eine Möglichkeit gäbe, Probleme zu vermeiden, wenn nach Änderungen des Objektmodells nicht auf alte Daten zugegriffen werden kann, würde ich diese Antwort positiv bewerten. Soweit ich weiß, ist es schwierig zu vermeiden, dass alte Daten verloren gehen, wenn Sie Ihre Objekte ändern. Unter dem Strich wird immer eine Sicherungskopie Ihrer Daten an anderer Stelle in einem anderen Nicht-DB4O-Format aufbewahrt (was ohnehin eine ziemlich allgemeine Regel ist).
Contango

2

Eine Alternative, die nicht erwähnt wurde, wenn Sie keine kostenlose Datenbank benötigen, ist VistaDB. Es ist alles verwalteter Code, bietet unzählige Funktionen für eine eingebettete Datenbank und bietet eine ziemlich gute Leistung. Eine ziemlich gute Brücke zwischen SQL CE und SQL Server Express, da die meisten Ihrer gespeicherten VistaDB-Prozeduren ohne Änderungen in SQL Server Express ausgeführt werden. Ich war auch zu diesem Zeitpunkt ziemlich zufrieden mit dem Kundenservice. Ich habe es bei der Arbeit benutzt. Keine Dienste zu starten. Eine leere Datenbank ist ungefähr 1 MB groß und die DLL ist auch ziemlich leicht. Hat ADO.NET-Anbieter und solche Dinge. Mir hat es gut gefallen.

VistaDB


Hallo! Funktioniert es in einem Mehrbenutzerszenario? Kann ich diese VistaDB beispielsweise auf einer Netzwerkfreigabe speichern und von mehreren Benutzern gleichzeitig darauf zugreifen?
Prokurors

1
Diesbezüglich sind einige begrenzte Fähigkeiten vorhanden. Offensichtlich kann es keine echte Datenbank ersetzen, die mit einer lokalen Datenbank-Engine auf dieser Box ausgeführt wird, aber es bietet einige Transaktionsoptionen. Wir hatten vor, es in diesem Szenario zu verwenden, da es so aussah, als würde es besser damit umgehen als jede der kostenlosen Optionen, auf die wir gestoßen sind, und unsere Kunden würden wahrscheinlich nicht über das Fachwissen verfügen, um einen SQL Server oder was auch immer einzurichten. Es bietet mehr Funktionen als SQL, aber nicht ganz so viel wie ein vollständiger SQL Server. Es ist eine echte Qualitätssoftware.
Rig

Ich danke Ihnen für Informationen! Und ihre neue erwartete Version 5 klingt sehr vielversprechend. Haben Sie Entity Framework mit VistaDB ausprobiert? Vielleicht sogar zuerst eine VistaDB-Datei mit EF-Code erstellt?
Prokurors

1
Ich habe es getan, aber das war vor ungefähr 3-4 Jahren. Zu diesem Zeitpunkt fand ich es gut und das war meine erste EF-Erfahrung. Ich nehme an, es ist jetzt besser. Der einzige Mangel, den es zu dieser Zeit hatte, war, dass bestimmte Segmente der Dokumentation spärlich waren, aber das war während des Übergangs, nachdem sie von ihren jetzigen Besitzern gekauft wurde.
Rig

1
PS: Zumindest zu der Zeit, als ich es benutzte, waren sie mehr als bereit, eine Demo-Lizenz zur Nutzung bereitzustellen. Ich würde Ihnen wärmstens empfehlen, es zu versuchen, bevor Sie sich auf die Lizenzkosten festlegen.
Rig

1

SQL Server Compact Edition am besten, da es kostenlos und leicht ist und sich gut integrieren lässt


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.