Schreiben eines Schlüsselspeichers

Ich bin auf der Suche, um einen Key / Value Store (wahrscheinlich in Python) meist nur für Erfahrung zu schreiben, und weil es etwas ist, den ich denke, das ist ein sehr nützliches Produkt. Ich habe ein paar Fragen. Wie sind im Allgemeinen Schlüssel / Wert-Paare, die normalerweise im Speicher und auf der Festplatte gespeichert sind? Wie wäre es, wenn man die auf der Festplatte gespeicherten Sachen lädt, wieder in den Speicher? Haben Schlüssel / Wert-Läden alle Schlüssel / Wert-Paare in Erinnerung auf einmal? Oder ist es von der Scheibe gelesen?

Ich habe versucht, ein paar Literatur zum Thema zu finden, aber ich bin nicht sehr weit gekommen und habe gehofft, dass jemand hier mir helfen könnte.

7 Solutions collect form web for “Schreiben eines Schlüsselspeichers”

Es hängt alles von der Komplexität ab, in die Sie eintauchen möchten. Beginnend mit einem einfachen Python dict serialisiert auf eine Datei in einer Vielzahl von möglichen Möglichkeiten (von denen Pickle ist wahrscheinlich die einfachste), können Sie so weit wie die Umsetzung eines kompletten Datenbank-System gehen.

Schau nach redis – es ist ein Schlüssel / Wert-Shop in C geschrieben und als Server "DB" betrieben. Es hat eine gute Dokumentation und leicht zu lesen Code, so können Sie Ideen für Ihre Python-Implementierung ausleihen.

Um noch weiter zu gehen, kannst du über B-Bäume lesen.

Für Ihre spezifischen Fragen: über einige DB-Größe, können Sie nie halten sie alle in Erinnerung, so dass Sie einige robuste Art und Weise zum Laden von Daten von Festplatte benötigen. Überlegen Sie auch, ob der Speicher Single-Client oder Multi-Client ist. Das hat ernste Konsequenzen für die Umsetzung.

shelve Sie einen Blick auf Pythons shelve Modul, das ein persitentes Wörterbuch bietet. Es speichert grundsätzlich Gurken in einer Datenbank, meist dmb oder BSDDB. Wenn man shelve wie shelve Ihnen Einblicke geben werden und der Quellcode mit Ihrer shelve kommt.

Ein weiteres Produkt zu sehen ist Durus . Dies ist eine Objekt-Datenbank, dass es seine eigene B-Tree-Implementierung für die Beibehaltung auf Festplatte verwendet.

Wenn du einen Schlüssel / Wert-Shop in Python für Lernzwecke machst, könnte es am einfachsten sein, mit dem Pickle- Modul zu beginnen. Es ist eine schnelle und bequeme Möglichkeit, einen beliebigen Python-Datenstrom in einen persistenten Speicher zu schreiben und ihn wieder zu lesen.

Sie können einen Blick auf ' Berkley db ' zu sehen, wie es funktioniert, es ist eine Schlüssel / Wert-DB, so können Sie es direkt verwenden, oder wie es Open-Source sehen, wie es behandelt Beharrlichkeit, Transaktionen und Paging von den meisten Seiten.

Hier sind pythonbindungen dazu http://www.jcea.es/programacion/pybsddb.htm

Amazon hat ein Dokument über Dynamo veröffentlicht – ein hochverfügbares Key-Value-Speichersystem. Es handelt sich meist um die Skalierung (wie man einen Schlüssel / Wert-Shop, der auf einer großen Anzahl von Maschinen läuft), aber es beschäftigt sich auch mit einigen Grundlagen, und in der Regel lohnt sich zu lesen.

Zuerst kenne ich diese Frage ganz alt.

Ich bin der Schöpfer von aodbm ( http://sf.net/projects/aodbm/ ), die eine Key-Value-Store-Bibliothek ist. Aodbm verwendet unveränderliche B + Bäume, um Ihre Daten zu speichern. Also, wenn eine Änderung gemacht wird, wird ein neuer Baum an das Ende der Datei angehängt. Das klingt vermutlich wie eine schreckliche Verschwendung von Raum, aber da die überwiegende Mehrheit der Knoten aus dem vorherigen Baum referenziert wird, ist der Overhead eigentlich ganz niedrig. Sehr wenig von einem ganzen Baum wird zu irgendeiner Zeit im Gedächtnis gehalten (höchstens O (log n)).

Ich empfehle, die Rede zu sehen, schreiben Sie die Optimierung in externen Speicherdatenstrukturen ( Folien ), die einen guten Überblick über moderne Ansätze zum Erstellen von Extra-Memory- Datenbanken (zB Key-Value-Shops) gibt und log-strukturierte Merge-Bäume erläutert.

Wenn Ihr Key-Value-Store auf Anwendungsfälle reagiert, wenn alle Daten in den Hauptspeicher passen, könnte die Datenspeicherarchitektur viel einfacher sein, eine Datei auf einen großen Teil des Speichers abbilden und mit diesem Speicher arbeiten, ohne sich über Disk-to-Memory zu stören Kommunikation und Synchronisation überhaupt, weil es ein Anliegen des Betriebssystems wird.

Python ist die beste Programmiersprache der Welt.