BerkeleyDB является эквивалентом хеш-таблицы Ruby или словаря Python в базе данных, за исключением того, что вы можете хранить несколько значений для одного ключа.
Мой вопрос: если вы хотите сохранить сложный тип данных в такой структуре хранения, как вы можете это сделать?
В обычной реляционной таблице, если вы хотите представить Person, вы создаете таблицу со столбцами определенных типов данных:
Person
-id:integer
-name:string
-age:integer
-gender:string
Когда это написано так, вы можете увидеть, как человека можно понимать как набор пар ключ / значение:
id=1
name="john";
age=18;
gender="male";
Декомпозировать человека на отдельные пары ключ / значение (имя = "Джон") легко.
Но чтобы использовать формат BerkeleyDB для представления личности, вам потребуется какой-то способ перекомпоновки человека из его составных пар ключ / значение.
Для этого вам нужно будет наложить какую-то искусственную инкапсулирующую структуру, чтобы удерживать Человека вместе как единое целое.
Есть ли способ сделать это?
РЕДАКТИРОВАТЬ: Как указывает ответ Роберта Харви, в Java редакции BerkeleyDB есть функция сохранения сущностей. К сожалению, поскольку я буду подключаться к BerkeleyDB из приложения Ruby с использованием Moneta , я буду использовать standard edition , который, по моему мнению, требует от меня создания специального решения в отсутствие этой поддержки .