目前,我正在尝试创建db4o(java version)和我很像我看到的。但我不想知道如何帮助它执行在真正的生活(网络)的环境。没有任何人有任何经验(或好或坏的),分享关于运行创建db4o?

有帮助吗?

解决方案

我们运行DB40.网版本中的一个大客户/服务器的项目。

我们的经验是,你可能可以得到更好的性能比典型的关系数据库。

但是,你真的要调整你的对象得到这样的性能。例如,如果你已经有了一个列表,其中包含大量的物体,创建db4o激活这些名单是缓慢的。有一定数量的方式来解决这个问题,例如,通过反向关系。

另一个痛苦的激活。当你检索或者删除一个对象从创建db4o,默认情况下,它将激活整对象的树。例如,装载Foo将载Foo。酒吧。Baz.蝙蝠,等等,直到有没有什么可以负荷。虽然这是很好的编程的角度来看,能会慢下来越多套在你的对象。改善性能的,你可以告诉创建db4o如何,许多深水平,以激活。这是耗费时间做如果你已经有了很多的对象。

另一个区域痛苦的文本搜索。创建db4o的文本检索是远远慢于SQL全部文字索引。(他们会告诉你这个彻底的在其网站上。) 好消息是,它很容易设置一个文本搜索引擎上的创建db4o.在我们的项目中,我们已经迷上了Lucene.NET 索引的文字,我们想要的。

一些Api似乎没有工作,例如GetField Api用于申请数据库的升级。(例如,你已经重命名的一个酒店你想要升级现有的数据库中的对象,需要使用这些"反射"Api找到对象的数据库。其他Api,如[指标]属性不工作的稳定的6.4版本,你必须,而不是指定的索引,使用配置().指数("someField"),而不是强类型。

我们已经目睹了性能降解的更大的数据库。我们有1GB数据库,现在,事情仍然很快,但几乎没有作为快,当我们开始一个微小的数据库。

我们已经找到了另一个问题,在那里创建db4o.GetByID将关闭的数据库如果ID不再存在数据库中。

我们已经找到了地查询法(最自然的,语言的综合法,用于查询)是远远慢于不友好的苏打水查询。那么,而不是输入:

// C# syntax for "Find all MyFoos with Bar == 23".
// (Note the Java syntax is more verbose using the Predicate class.)
IList<MyFoo> results = db4o.Query<MyFoo>(input => input.Bar == 23);

而不是那漂亮的查询码,你必须一个丑陋的苏打水的查询,这是串的基础,并不强类型。

为。净伙计们,他们最近推出了一个皇宫-对创建db4o提供商,它提供了最好的语法。但是,这尚未被看到是否能将达到与丑陋的苏打水查询。

创建db4o支持已经不错:我们已经讨论过他们的电话的次数和已经收到的有用信息。他们的用户论坛下一个到毫无价值的,但是,几乎所有的问题没有得到答复。他们的JIRA错误跟踪接收了大量的关注,所以如果你已经有了一个挥之不去的错误,文件上的JIRA在它往往将得到固定的。(我们已经有2错误,已经修复,另一个是得到修补在一个不称职的方式。)

如果这一切并没有吓到你了,让我说,我们非常高兴与创建db4o,尽管这些问题,我们已经遇到过。表现我们已经吹了一些O/RM框架,我们的努力。我推荐它。

更新2015年七月 记住,这一回答是写在2008年。同时我很感激的"顶",世界已经改变的自然后,这种信息可能不可靠的,因为它是当它被写的。

其他提示

大多数司机可以查询,并有效地转化成苏打查询在幕后如此,不应该有差别。使用NQ当然是首选,因为你仍然在该领域的强大的类型的语言。如果你有问题得到NQ使用索引,请随后你的问题 创建db4o论坛 我们会尽力帮助你。

Goran

主要问题,我遇到了与它的报告。有只是似乎并没有以任何方式运行有效的报告对创建db4o数据来源。

犹大,听起来好像你不用透明激活,其特征的最新版本的生产(7.4)?也许如果你指定您正在使用的版本如有可能的其他问题现已解决的最新版本吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top