übersicht - Ist eine NoSQL-Datenbank so einfach wie SQLite?




sql datenbank vorteile nachteile (11)

Eine andere Lösung ist LevelDB . Die Homepage sagt:

LevelDB ist eine schnelle Schlüsselwert-Speicherbibliothek, die bei Google geschrieben wurde und eine geordnete Zuordnung von Zeichenfolgenschlüsseln zu Zeichenfolgenwerten bietet.

Eigenschaften

  • Schlüssel und Werte sind beliebige Byte-Arrays.
  • Daten werden nach Schlüsseln sortiert gespeichert.
  • Anrufer können eine benutzerdefinierte Vergleichsfunktion bereitstellen, um die Sortierreihenfolge zu überschreiben.
  • Die grundlegenden Operationen sind Put (Schlüssel, Wert), Get (Schlüssel), Delete (Schlüssel).
  • Mehrere Änderungen können in einer atomaren Charge vorgenommen werden.
  • Benutzer können einen vorübergehenden Snapshot erstellen, um eine konsistente Datenansicht zu erhalten.
  • Die Vorwärts- und Rückwärtsiteration wird über die Daten unterstützt.
  • Daten werden automatisch mithilfe der Snappy-Komprimierungsbibliothek komprimiert.
  • Externe Aktivitäten (Dateisystemoperationen usw.) werden über eine virtuelle Schnittstelle weitergeleitet, sodass Benutzer die Betriebssysteminteraktionen anpassen können.
  • Ausführliche Dokumentation zur Verwendung der Bibliothek ist im Quellcode enthalten.

Einschränkungen

  • Dies ist keine SQL-Datenbank. Es verfügt nicht über ein relationales Datenmodell, SQL-Abfragen werden nicht unterstützt und Indizes werden nicht unterstützt.
  • Nur ein einzelner Prozess (möglicherweise mehrere Threads) kann auf eine bestimmte Datenbank gleichzeitig zugreifen.
  • Es ist keine Client-Server-Unterstützung in die Bibliothek integriert. Eine Anwendung, die diese Unterstützung benötigt, muss ihren eigenen Server in die Bibliothek einbinden.

Ist eine NoSQL-Datenbank so einfach wie SQLite? Ich suche nach einer leichten Datenbank, um eine kleine Menge von Daten für eine einfache Desktop-Anwendung zu erhalten. Ich kann immer noch SQLite verwenden, bevorzuge aber einen eher OO-Ansatz, da meine App nicht viele Daten verarbeitet.


Ich bin persönlich auf der Suche nach etwas, das mit Python 3 funktioniert. Ich sehe die akzeptierte Antwort ist UnQLite , wo die Python-Bindungen derzeit nicht für Python 3 verfügbar sind.

TinyDB jedoch eine gute Alternative zu sein.


Ich habe vor ein paar Tagen UnQLite gefunden, aber es scheint keine Indizes zu unterstützen und hat keine Adapter.


Ich würde gerne CouchbaseLite vorschlagen. Es ist eine ziemlich leichte NoSQL-Datenbank, die in einer eingebetteten Form, auf Mobilgeräten verwendet werden kann und sogar Ereignisbehandlung, Ansichten, Revisionen, Synchronisierung, Konfliktlösung, Filterung, Abonnements und mehr bietet.


Sie können rabaDB ausprobieren. Es ist ein Python NoSQL schemaless ORM für SQLite mit einer sehr leichten Schnittstelle.


Sie können einige oodb (objektorientierte Datenbank) überprüfen


Unter bestimmten Umständen (wenn Sie keine Requisiten als Indizes benötigen) können Sie das Dateisystem selbst als DB verwenden: Dateiname / Pfad als Schlüssel und Dateiinhalt als Wert. JSON ist speichereffizient, daher können Sie einen Parser verwenden, um Daten serialisieren / unserialisieren.

Stellen Sie sicher, dass Sie nicht zu viele Dateien (Tausende) unter demselben Ordner speichern (teilen Sie Dateien in verschiedene Ordner mit einem Hash).

Das eigentliche Problem dieser Lösung (zusätzlich zu dem Fehlen einiger Features) ist, dass Dateieinträge in 4KB Blöcken gespeichert werden, so dass eine Datei von 10 Bytes 4KB verwendet, eine Datei von 4097 Bytes 8KB usw. (at mindestens bei den meisten Dateisystemen), so dass große Mengen kleiner Datensätze nicht sehr disketteneffizient sind.

Die Vorteile: ist schnell, leicht, weil viel weniger RAM verwendet, und kein Interprozess Connector Engpass hinzugefügt wird, ist bewiesen und transparent-OS optimiert durch den RAM-R / W-Cache. Sie können Sperren verwenden und sogar per Remote-Mount verteilen.

Schließlich würde ich diese Lösung vermeiden, wenn Ihre Produktionsplattform eine Windows-Maschine ist, aber auch möglich ist.


Vielleicht möchten Sie auch UnQL von den Entwicklern von CouchDB und SQLite im Auge behalten.


RavenDB ist eine interessante Option (faire Offenlegung - ich habe nur ein bisschen damit gespielt - habe es noch nicht in einem echten Projekt verwendet).

Am interessantesten finde ich, dass das Objektmodell automatisch dem persistenten Speicher zugeordnet wird. In der RDMS-Welt ist Fluent NHibernate das einzige Werkzeug, das dies (soweit ich weiß) gut beherrscht.

Das automatische Zuweisen kann während der Entwicklung eine große Zeitersparnis bedeuten, insbesondere wenn Sie ein kompliziertes Objektmodell oder sich schnell ändernde Anforderungen haben.


stsdb ist einfach zu benutzen. Alles, was Sie brauchen, ist Client-Lib und eine db-Datei, die es erstellen kann.

Ich benutze es in der ac # / wpf App. Aber es ist nicht für die Entwicklung geeignet. Weil Sie bereits gespeicherte Modelle nicht ändern können.

Aber es ist einfach, schnell und klein. So viele Profis machen es würdig


Friendly ist eine Art NOSQL-Datenbank, die Ruby + SQLite als Backend verwendet. Es ist eine Art Hack, aber es ist auch irgendwie nett. Ich habe eine Beispiel-Sinatra-App geschrieben, die es here demonstriert.





nosql