BerkeleyDB ist das Datenbankäquivalent einer Ruby-Hashtabelle oder eines Python-Wörterbuchs, außer dass Sie mehrere Werte für einen einzelnen Schlüssel speichern können.Wie würden Sie eine relationale Entität als einzelne Einheit abrufbarer Daten in BerkeleyDB darstellen?
Meine Frage ist: Wenn Sie einen komplexen Datentyp in einer Speicherstruktur wie diesem speichern möchten, wie können Sie darüber gehen?
In einer normalen relationalen Tabelle, wenn Sie eine Person darstellen mögen, erstellen Sie eine Tabelle mit Spalten von bestimmten Datentypen:
Person
-id:integer
-name:string
-age:integer
-gender:string
Wenn es so geschrieben ist, können Sie, wie eine Person sehen könnte als eine Reihe von Schlüssel/Wert-Paare zu verstehen:
id=1
name="john";
age=18;
gender="male";
Zersetzen der Person in einzelne Schlüssel/Wert-Paaren (name = „John“) ist einfach.
Um jedoch das BerkeleyDB-Format zur Darstellung einer Person zu verwenden, benötigen Sie eine Möglichkeit, die Person aus den zugehörigen Schlüssel/Wert-Paaren zusammenzusetzen.
Dafür müssten Sie eine künstliche Einkapselungsstruktur aufstellen, um eine Person als Einheit zusammenzuhalten.
Gibt es eine Möglichkeit, dies zu tun?
BEARBEITEN: Wie Robert Harvey's Antwort zeigt, gibt es eine Entity Persistenz-Funktion in der Java edition von BerkeleyDB. Leider, weil ich eine Verbindung zu BerkeleyDB von einer Ruby-Anwendung unter Verwendung Moneta herstellen werde, werde ich die standard edition verwenden, die ich glaube, erfordert, dass ich eine benutzerdefinierte Lösung in Ermangelung dieser Unterstützung erstellen.
Ausgezeichnete Verbindung, danke. Fast genau das, wonach ich gesucht habe. Leider ist diese Funktion in der Java-Edition verfügbar, aber nicht in der Standard-Edition, die ich in Ruby verwenden würde: http://www.oracle.com/technology/products/berkeley-db/db/index.html – Hank