проблемы с db4o

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

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

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

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

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

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

Вторая проблема: извлечение подграфов из большего графа объектов

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

Спасибо.


person Allain Lalonde    schedule 12.01.2009    source источник


Ответы (2)


Вы должны быть очень осторожны, потому что могут произойти две вещи: вы можете вытащить всю базу данных в память или только частичный граф (остальные объекты будут нулевыми).
В 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

person Hrvoje Hudo    schedule 13.01.2009

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

person Travis Heseman    schedule 27.09.2009