db4o问题

3

我有兴趣在我的桌面应用程序中使用db4o作为持久性机制,但我对一些事情感到担忧。

第一个问题:意外截断非常复杂的对象图。

假设我有一个高度为10的树,并且我获取了根节点,它如何处理我再次存储根对象?

据我所知,它不会获取整个树,而是获取前5个引用层。

那么..如果我对根节点进行微不足道的更改,然后将其存储,它是否会裁剪掉树下面的节点,从本质上删除它们。

如果不是这样的话..它是如何处理的呢?

第二个问题:从较大的对象图中提取子图

使用上面的树示例...如果数据库包含1棵巨大的树,我能否查询其中的单个节点?由于只调用了.store,我的数据库是否认为它只包含1个“记录”?

谢谢。

2个回答

2
你必须非常小心,因为会发生两种情况:你可以将整个数据库加载到内存中,或者只加载部分图形(其余对象将为空)。在db4o中,有激活器和更新深度的概念,可以在dbv40配置时进行配置,或在获取对象时进行配置。这是告诉db40在获取引用对象时要深入多少的方法。请查看db4o网站上的文档:http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Activationhttp://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Update_Depth

2

DB4O的透明激活应该能解决你在这里表达的大部分担忧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接