Persistente Hashtabelle für Ruby-Programme?

7

Ich brauche eine kleine unstrukturierte Datenbank für meine Ruby-Skripte. Nicht Sqlite, etwas mehr wie ein persistentes Hashtabellen würde perfekt funktionieren, solange es grundlegende Ruby-Strukturen (Arrays, Strings, Hashes usw. - alle serialisierbar) speichern kann und nicht beschädigt wird, wenn Ruby-Skripte abstürzen.

Ich weiß, dass es für Perl mit Tie :: Hash viele Lösungen wie diese gibt, also gibt es wahrscheinlich ein solches Juwel für Ruby. Welches Juwel wäre das?

EDIT: Soweit ich das beurteilen kann, basieren PStore- und yaml-Lösungen auf dem Lesen, dem Unmarshalling, dem Remarshalen und dem Schreiben der gesamten Datenbank bei jeder Änderung. Das erfordert nicht nur alles, um in den Speicher zu passen, es ist O (n ^ 2). Also scheint keiner von ihnen eine besonders gute Lösung zu sein.

    
taw 10.07.2009, 14:47
quelle

6 Antworten

4

Vielleicht FSDB (Dateisystem-Datenbank) wird Ihren Bedürfnissen entsprechen.

  

FSDB ist eine Dateisystemdatenbank. FSDB bietet eine threadsichere, prozesssichere Datenbankklasse, die das native Dateisystem als Backend verwendet und mehrere Dateiformate und Serialisierungsmethoden zulässt. Benutzer greifen auf Objekte bezogen auf ihre Pfade relativ zum Basisverzeichnis der Datenbank zu. Es ist sehr leicht (der Zustand einer Datenbank ist im Wesentlichen nur eine Pfadzeichenfolge und die Codegröße ist sehr klein, unter 1K Zeilen, alles Ruby).

%Vor%

Hier ist ein Beispiel aus der Dokumentation:

%Vor%     
Ryan McGeary 10.07.2009, 15:03
quelle
10

Es gibt PStore in der Ruby-Standardbibliothek, Sie müssen nichts installieren.

%Vor%     
gerrit 10.07.2009 15:13
quelle
4

Hast du gdbm ausprobiert? Es kommt mit Ruby stdlib, ist wirklich einfach und viel schneller als PStore oder YAML.

    
Pablo Lorenzzoni 04.03.2010 10:15
quelle
3

Wenn die Daten klein genug sind, um während der Ausführung des Programms im Speicher zu bleiben, und serialisieren / deserialisieren beim Beenden / Starten, könnten Sie YAML ausprobieren. Es kommt standardmäßig mit Ruby und kann jede Art von Objekt speichern.

%Vor%

Gibt dir

%Vor%

laden, einfach tun:

%Vor%     
wvdschel 10.07.2009 15:06
quelle
2

Sie könnten bdb verwenden, Ruby-Schnittstelle zur "Berkeley DB" (Download-Link von dieser URL scheint nicht zu arbeiten, aber github tut; -).

    
Alex Martelli 10.07.2009 15:03
quelle
0

Schauen Sie sich GDBM an: Ссылка

Vergleich Benchmark, der PStore enthält: Ссылка

    
Nakilon 04.08.2017 09:08
quelle

Tags und Links