BerkeleyDBは、単一のキーに複数の値を格納できることを除いて、RubyハッシュテーブルまたはPythonディクショナリと同等のデータベースです。
私の質問は、複雑なデータ型をこのようなストレージ構造に格納したい場合、どうすればよいでしょうか。
通常のリレーショナルテーブルでは、Personを表す場合は、特定のデータ型の列を含むテーブルを作成します。
Person
-id:integer
-name:string
-age:integer
-gender:string
このように書き出すと、人がキーと値のペアのセットとしてどのように理解されるかがわかります。
id=1
name="john";
age=18;
gender="male";
個人を個々のキー/値のペア(name = "john")に分解するのは簡単です。
ただし、BerkeleyDB形式を使用して個人を表すには、構成要素であるキーと値のペアから個人を再構成する何らかの方法が必要になります。
そのためには、人を1つの単位としてまとめるために、人工的なカプセル化構造を課す必要があります。
これを行う方法はありますか?
編集:Robert Harveyの回答が示すように、BerkeleyDBのJavaエディションにはエンティティ永続化機能があります。残念ながら、 Monetaを使用してRubyアプリケーションからBerkeleyDBに接続するため、このサポートがない場合はカスタムソリューションを作成する必要があると思われるStandardEditionを使用します。