4 Stimmen

.NET - Ein schneller, leichtgewichtiger, beständiger Schlüssel-Wert-Speicher

Ich bin auf der Suche nach einem persistenten Key-Value-Speicher für .NET. Die Anforderungen sind:

  • Der Speicher wird für Objekte verwendet, die durch Zeichenketten identifiziert werden und mehrere optionale (benannte) Eigenschaften mit Werten haben, die nur Byte-Arrays sind. Für eine SQL-Lösung würde ich es als eine String -> id-Tabelle und mehrere id -> Blob-Tabellen modellieren.
  • Die erwartete Datenmenge beträgt mehrere Megabyte (mehr als 10 Mb ist derzeit unwahrscheinlich, aber eine Skalierung auf 100 Mb wäre ein netter Bonus)
  • Geringes Gewicht - vorzugsweise einteilig, auf jeden Fall ohne externe Anwendungen
  • Es wird häufiger gelesen als geschrieben, mindestens um den Faktor 100.
  • Schneller Lese-/Schreibzugriff - Ich erwarte In-Memory-Speicher und Lazy Writes bei der Aktualisierung der Daten; ich kann selbst regelmäßig asynchrone Schreibvorgänge auslösen; Bonuspunkte, wenn der Speicher dies tut.
  • Atomare E/A - die Datenbank sollte nicht zusammenbrechen, wenn der Prozess mitten im Schreiben beendet wird; ansonsten sind die Daten nicht kritisch, d. h. es ist keine zusätzliche Redundanz erforderlich.

Derzeit denke ich, dass SQLite hier funktionieren wird; allerdings scheint es ein wenig übertrieben zu sein - ich brauche nur Key-Value-Speicher, nicht volle SQL-Unterstützung. Ich habe auch von bdb gehört, und von libdb-dotnet Bindung - es scheint mehr leichtgewichtig zu sein, aber ich weiß nicht, die Leistung/Konsistenz Eigenschaften.

Kann jemand hier etwas empfehlen? Zusätzliche Referenzen sind willkommen (d.h. es wäre großartig, wenn es etwas in .NET Framework gibt, das die Aufgabe erledigen kann), sowie Erfahrungen mit SQLite oder libdb-dotnet (oder bdb im Allgemeinen) oder einer selbstentwickelten Lösung, wenn es schmerzlos war.

1voto

driis Punkte 156110

Werfen Sie einen Blick auf http://ravendb.net/ . Es speichert JSON-Dokumente in einem Key-Value-Speicher, aber mit großartiger Unterstützung für .NET-Objekte.

Ausgehend von Ihren Anforderungen könnten Sie auch die verwaltete Speicher-Engine "Raven.Munin" verwenden, bei der es sich um eine einzelne Baugruppe handelt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X