db4o касается - PullRequest
       9

db4o касается

3 голосов
/ 12 января 2009

Я заинтересован в использовании db4o в качестве механизма сохранения в своем настольном приложении, но меня беспокоит пара вещей.

1-я проблема: случайно вырезать очень сложные графы объектов.

Скажем, у меня есть дерево с высотой 10, и я извлекаю корень, как он справляется со хранением корневого объекта снова?

Насколько я понимаю, он не получает все дерево, он выбирает первые 5 слоев, на которые есть ссылки.

Итак. Если я внесу тривиальное изменение в корень, а затем сохраню его, он отрежет узлы дальше по дереву, по сути удалив их.

Если нет .. как он справляется с этим?

2-я проблема: извлечение подграфов в более крупном объектном графе

Используя мой пример дерева сверху ... Если база данных содержит 1 массивное дерево, могу ли я запросить один узел внутри него? Поскольку .store был вызван только один раз, неужели моя база данных содержит только 1 «запись» ?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 28 сентября 2009

Прозрачная активация DB4O должна разрешить большинство страхов, которые вы здесь выразили.

2 голосов
/ 13 января 2009

Вы должны быть очень осторожны, потому что могут произойти две вещи: вы можете вытянуть всю БД в память или просто частичный граф (остальные объекты будут нулевыми).
В db4o есть понятия «Активатор» и «Глубина обновления», которые можно настроить при настройке dbv40 или при выборке объектов. Это способ, которым вы указываете db40, насколько глубоко вы хотите, чтобы он шел, выбирая ссылочные объекты. Проверьте сайт db4o, есть документация по этому поводу:
http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Activation
http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Update_Depth

...