BerkeleyDB是 Ruby 哈希表或 Python 字典的数据库等价物,但您可以为单个键存储多个值。
我的问题是:如果你想在这样的存储结构中存储一个复杂的数据类型,你该怎么做呢?
在一个普通的关系表中,如果你想表示一个人,你可以创建一个包含特定数据类型列的表:
Person
-id:integer
-name:string
-age:integer
-gender:string
当它像这样写出来时,您可以看到如何将一个人理解为一组键/值对:
id=1
name="john";
age=18;
gender="male";
将人员分解为单独的键/值对(name="john")很容易。
但是为了使用 BerkeleyDB 格式来表示 Person,您需要某种方式从其组成键/值对中重新组合 person。
为此,您需要强加一些人为的封装结构来将 Person 作为一个单元组合在一起。
有没有办法做到这一点?
编辑:正如 Robert Harvey 的回答所表明的,BerkeleyDB的Java 版中有一个实体持久性功能。不幸的是,因为我将使用Moneta从一个 Ruby 应用程序连接到 BerkeleyDB ,所以我将使用标准版本,我认为在没有这种支持的情况下,我需要创建一个自定义解决方案。