db4o和/或Eloquera数据库的实际应用经验

12

我正在评估两个对象数据库,db4o (http://www.db4o.com) 和 Eloquera Database (http://eloquera.com),用于即将开展的项目。我必须选择其中一个。我的基本要求是可扩展性、多用户支持和易于类型演化进行 RAD。

  1. 请分享您的实际经验。

  2. 如果您都有使用过,请比较这两个数据库?您更喜欢哪个?

4个回答

16

过去2年我一直使用DB4O,现在我正在转换到Eloquera。我的原因如下:

  1. 我正在开发一个商业产品,而DB4O基于版税的许可费用实在太高了;虽然DB4O说我们可以“谈论一下”,但我是一家非常小的开发公司,每次销售都要放弃巨额收入,这根本没有任何意义,因为有完全可以替代的良好选择。

  2. 我正在使用Db4oTool.exe在构建后步骤中修改我的程序集,这真的会减慢构建过程。Eloquera不需要修改我的程序集。

  3. 我发现了DB4O代码中的一个错误,但它花费了很多个月才被整合到他们的代码库中。我在Eloquera中发现了错误,他们会在一两天内修复。

  4. DB4O还没有适配.NET 4(尽管他们最终推出了早期测试版)。DB4O是唯一阻止我使用VS2010(和.NET 4)的东西。我尝试迁移到VS2010,但是VS2010会自动将所有单元测试转换为.NET 4,所以我的所有与持久性相关的单元测试立即失败了。

  5. DB4O并不是真正设计成线程安全的。

  6. DB4O具有许多明显从Java移植过来的功能和API特性。

罗伯特


1
我完全同意你关于第一个原因的看法。我甚至告诉db4O我会向公众发布免费试用版,并期望我不需要为无限制的副本付费。他们没有给我积极的反馈。我还没有开始使用Eloquera,但我很快会尝试。谢谢。 - Ying
+1 给 @Robert!我和你的情况一模一样。我曾在一个项目中开始使用 db4o,现在正在转向 Eloquera。它现在(在 4.1 版本中)支持模型更改(非常好地检测到,一切都是自动的)。服务器随安装一起提供,而对于 db4o,您必须创建自己的 Windows 服务... 我还发现 Eloquera 更快。它支持在模型上使用 Index 和 ID 属性。ID 属性允许使用它们的 uid 来映射断开连接的对象,这真的很棒:http://bit.ly/nlk2rk ... - billy

9
Eloquera(www.eloquera.com)最初是为Web环境设计和开发的,并且是使用C#编写的本地.NET应用程序设计的。Eloquera不像许多其他数据库一样是从Java移植过来的。Eloquera作为架构的本质部分本地支持以下内容:同时用户访问、安全设置、具有真正的C/S体系结构,具有桌面模式可用、最大数据库大小1TB+,在大数据规模下,Eloquera维护快速的查询响应;它拥有专利技术,包括虚拟文件系统、索引和自适应缓存,以及采用MSIL编写的最先进的反射技术,使Eloquera能够超越许多使用微软标准反射的数据库。它支持内存数据库,以进行快速数据处理。由于Web中的大多数用户来自关系型数据库世界,因此Eloquera自然支持SQL和LINQ。EF支持将于下个月推出。与一些数据库不同,如果您将字段从int;int;更改为long;,则Eloquera不会盲目地将对象放入数据库中,并保留错误结果,因为它仍然看到两个int;int; - 它将通知用户更新定义。Eloquera为属性和字段提供本地索引,大多数数据库不提供属性索引。我可能会对Carl关于市场上最简单的数据库DB4O提出异议,因为从API角度来看,Eloquera可以做同样的事情。Eloquera比Versant年轻,仍有一些企业功能即将推出。上个月,Eloquera研发部门与Eloquera Parallel Server合作,以提供水平扩展,这种扩展的成本应该比Versant的VOD低得多。以下是一些杰出的特点:Eloquera可用于商业用途且免费。您不需要支付任何版税。您可以免费获得以上所有功能。Eloquera提供商业支持。Eloquera针对现代化架构设计,它不是随着市场需求而不断适应的。它是Eloquera架构的自然组成部分。

@Ted 似乎已经失效。项目网站需要登录才能下载,登录需要电子邮件验证,但是网络主机无法发送电子邮件。 - Chris Marisic

0

如果您有兴趣听取使用db4o的用户经验,我建议您也在我们的db4o用户论坛中提问。

虽然db4o最初是为嵌入式应用程序开发而设计的,用于资源有限的应用程序(现在在像Android、CompactFramework和Silverlight这样的受限平台上运行非常良好),但我知道我们有很多用户正在愉快地使用db4o进行Web应用程序开发。

事实上,leatrop发布的关于db4o的负面评论是有一定正确性的:db4o服务器核心目前只允许一个线程进入,用于存储和查询特定数据库的任务。

然而,有几种方法可以使db4o应用程序非常好地扩展:
由于db4o数据库的设置成本非常低(一个单一的API调用),因此可以使用多个数据库。您可以使用db4o复制系统(dRS)在多个数据库之间分配对象。还可以在运行时创建db4o数据库的备份,并将这些备份复制到多台计算机上。对于备份和调试目的,使用多个数据库(用于数据时间切片或应用程序中的不同用例)的方法非常好。如果您只想测试现有应用程序的某些方面,则无需复制整个数据库。

如果您仍然发现db4o对于并发用户或数据库大小来说不够好,您可以随后切换到我们的高端对象数据库Versant VOD。它是为云环境构建的,并且已经证明可以为具有多个千兆字节数据库的数千个并发用户工作。 VOD for .NET还配备了LINQ提供程序,因此db4o和VOD的接口是兼容的。

我的建议:从db4o开始。它是最容易入门和开发的对象数据库。只需一行代码存储任何对象,无需设置模式或映射文件。使用LINQ查询(或原生查询,如果您使用Java)。

db4o是开源的,免费(根据GPL许可证)。


在db4o用户论坛中,我发现了一个相关主题:嵌入式DB4O(LINQ)与Web Eloquera(SQL)的比较。http://developer.db4o.com/Forums/tabid/98/aft/5081/Default.aspx#15619 - Ying
一个有趣的巧合:这个叫做"Dmytro"的家伙在我们的论坛上询问意见,似乎是Eloquera公司的员工,因为在Eloquera论坛上明显可以看到他的身影:http://groups.google.com.au/group/eloquera - Carl Rosenberger
是的,甚至可以在他的个人资料中看到(“我是Eloquera数据库的联合创始人”)。您论坛上的帖子似乎并不真诚... - Fabrice

0
我正在创建第二代社交媒体平台,完全基于Javafx和Db4o。我们能够使用db4o做出其他数据库无法实现的事情。语义OWL本体论和复杂对象关系以及我们用户定义的画布使Db4o非常适合我们。我们也不用担心扩展问题,并已找到了几种解决方案。卡尔是软件领域中最聪明的人之一。当你了解他的产品时,这一点显而易见。
Mike Tallent CEO Objectwheel

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