BerkeleyDB est l'équivalent de la base de données d'une table de hachage Ruby ou d'un dictionnaire Python, sauf que vous pouvez stocker plusieurs valeurs pour une seule clé.Comment représenteriez-vous une entité relationnelle comme une seule unité de données récupérables dans BerkeleyDB?
Ma question est: Si vous vouliez stocker un type de données complexe dans une structure de stockage comme celle-ci, comment pourriez-vous y remédier?
Dans une table relationnelle normale, si vous souhaitez représenter une personne, vous créez une table avec des colonnes de types de données particulières:
Person
-id:integer
-name:string
-age:integer
-gender:string
Quand il est écrit comme ça, vous pouvez voir comment une personne peut être comprise comme un ensemble de paires clé/valeur:
id=1
name="john";
age=18;
gender="male";
la personne en décomposition clé individuelle/paires de valeurs (name = « john ») est facile. Mais pour utiliser le format BerkeleyDB pour représenter une personne, il faudrait un moyen de recomposer la personne de ses paires clé/valeur constituantes. Pour cela, vous devrez imposer une structure d'encapsulation artificielle pour maintenir une personne ensemble en tant qu'unité.
Existe-t-il un moyen de le faire?
EDIT: Comme l'indique la réponse de Robert Harvey, il existe une fonctionnalité de persistance d'entité dans le Java edition de BerkeleyDB. Malheureusement, parce que je serai connecté à BerkeleyDB à partir d'une application Ruby en utilisant Moneta, j'utiliserai le standard edition qui, selon moi, me demande de créer une solution personnalisée en l'absence de ce support.
Excellent lien, merci. Presque exactement ce que je cherchais. Malheureusement cette fonctionnalité est disponible dans l'édition Java mais pas dans l'édition standard que j'utiliserais dans Ruby: http://www.oracle.com/technology/products/berkeley-db/db/index.html – Hank