我正在评估两个对象数据库,db4o (http://www.db4o.com) 和 Eloquera Database (http://eloquera.com),用于即将开展的项目。我必须选择其中一个。我的基本要求是可扩展性、多用户支持和易于类型演化进行 RAD。
请分享您的实际经验。
如果您都有使用过,请比较这两个数据库?您更喜欢哪个?
我正在评估两个对象数据库,db4o (http://www.db4o.com) 和 Eloquera Database (http://eloquera.com),用于即将开展的项目。我必须选择其中一个。我的基本要求是可扩展性、多用户支持和易于类型演化进行 RAD。
请分享您的实际经验。
如果您都有使用过,请比较这两个数据库?您更喜欢哪个?
过去2年我一直使用DB4O,现在我正在转换到Eloquera。我的原因如下:
我正在开发一个商业产品,而DB4O基于版税的许可费用实在太高了;虽然DB4O说我们可以“谈论一下”,但我是一家非常小的开发公司,每次销售都要放弃巨额收入,这根本没有任何意义,因为有完全可以替代的良好选择。
我正在使用Db4oTool.exe在构建后步骤中修改我的程序集,这真的会减慢构建过程。Eloquera不需要修改我的程序集。
我发现了DB4O代码中的一个错误,但它花费了很多个月才被整合到他们的代码库中。我在Eloquera中发现了错误,他们会在一两天内修复。
DB4O还没有适配.NET 4(尽管他们最终推出了早期测试版)。DB4O是唯一阻止我使用VS2010(和.NET 4)的东西。我尝试迁移到VS2010,但是VS2010会自动将所有单元测试转换为.NET 4,所以我的所有与持久性相关的单元测试立即失败了。
DB4O并不是真正设计成线程安全的。
DB4O具有许多明显从Java移植过来的功能和API特性。
罗伯特
如果您有兴趣听取使用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许可证)。