(来源:http://www.ccidnet.com)
一、概述
就象关系数据库一样,市场上有许多面向对象的数据库(Object-Oriented Database,OODB)可供选择。然而,OODB在价格、功用、特色和体系上没有什么统一的标准。本文将协助你理解各种OODB系统之间的一些差别,在为使用选择合适的OODB时,协助你缩小挑选的范围。
依据标准的不同,我用于评估这些产品的参考材料也是五花八门。在大多数情况下,本文的评价以团体经验和看法为基础;另外一些细节直接从评测软件或供应商提供的数据材料获得。在作出选择之前,务必针对你的使用进行全面的测试。毕竟,你我看法可能有所不同。
我们将要分析的四种OODB产品是ObjectStore、Versant Developer Suite、Poet FastObjects和Objectivity。每一种产品将从以下几个方面进行评估:
价格和答应 顺从性 兼容性 特色 功用 可伸缩性和可用性
二、价格和答应
工程成本包括两个方面:初始成本和维护费用。初始成本往往在评估中起支配作用,但象年度支持、联机讨论、老手培训等问题都应该成为产品成本的考虑要素。即便和它的竞争者大型RDBMS相比,OODB的价格通常显得很昂贵。
标准考虑…评估软件可免费下载的、全功用的试用软件。开发版答应价格低价格,以用户数量为基础的答应。产品答应价格低价格,按照CPU数量为单位的答应,低廉的年度维护费用。联机支持担任的技术支持人员,大量有用的技术说明、示范和论坛。活跃的用户社团大量的热心用户,旧事组里丰富无益的活动,非官方网站的支持。
三、顺从性
和关系数据库相比,OODB普通对顺从标准的要求不是那么严厉。大多数OODB都用本人独特的方法实现各种特色功用。由于还没有明确的标准评价OODB,所以对象数据库管理组织(Object Database Management Group,ODMG)的标准是当前最好的准绳。但各个OODB步调一致却带来了一些麻烦,要找出一个完全顺从ODMG 2.0或3.0规范的OODB产品很困难(与曾经有一年历史的3.0规范相比,2.0规范是一个相当宽松和不完善的规范)。也许在不远的将来,我们将用Java Data Object(JDO)规范评价Java OODB。
标准考虑…对“对象定义言语”(ODL)的顺从完全服从ODMG 3.0规范有关对象定义的规范。对“对象查询言语”(OQL)的顺从完全服从ODMG 3.0规范有关查询的规范。对Java的顺从性完全服从ODMG 3.0规范意味着正确实现Java API/绑定。对C++的顺从性完全服从ODMG 3.0规范意味着正确实现C++ API。对Smalltalk的顺从性完全服从ODMG 3.0规范(如果你的系统不太可能用到Smalltalk,那么这只是一个可选的标准)。
四、兼容性
无论是言语还是平台,工程对可伸缩性的要求会日益添加。OODB不应该在任何一方面影响这种可伸缩性。然而,平台支持的代价很昂贵,它要求进行广泛的测试和大量的文档说明。因此,一些供应商的产品只支持数量很少的平台。要找出一个和各种主流OO言语(如C++、Java、Smalltalk)紧密结合的方案是相当困难的。
标准考虑…支持的平台广泛的平台支持——我总是考虑三个关键的平台:Linux,Win2000,和Solaris。你优先考虑的平台可能有所不同。Java集成广泛的JDK支持,紧紧跟踪最新的JDK规范。C++集成广泛的编译器支持持久类的特殊化避免紧密结合——寻觅那些不要求修正代码中持久类的数据库。这是一种与偏好有关的选择,所以你应该认真研讨处理后扩展和扩展/实现方式相比的优缺点。可嵌入的版本只占用少量的磁盘空间、RAM;具有取消一些非核心功用的能力。
五、特色
每一种数据库方案都有本人的一些独特的功用。下面我特别指出一些核心功用,由于这些功用对于开发工程来说具有很高的价值:
标准考虑…数据库浏览管理数据库、修正内容、更新模式和生成内容报表的能力。客户端缓冲改善“热点”数据库呼应速度的能力;在确保对象同步的前提下,使得对数据库的提取操作减到最少。数据库安全用户、用户组访问控制,最好在对象(如果不是容器的话)的层次上进行。XML支持无缝地从数据库提取、向数据库插入XML的工具。IDE集成和TogetherSoft之类提高开发效率的环境集成能够提高开发效率。
六、功用
在功用的某些方面,OODB占有优势;但在其他方面,OODB又有所不足。在这里提供每一种产品详细的功用测试数据显得过于冗长,但理解可能影响功用的体系和功用方面的局限是很重要的。
标准考虑…加锁策略使用-对象级的加锁机制能够带来很大的方便,但页面级的加锁机制在某些条件下能够带来功用上的飞跃。负载平衡通明地分布数据库、调用近程服务器上的方法、在并发线程/访问之间共享对象的能力。最大的数据库大小越大越好。事务支持检查点:由多个线程共享一个事务,一个线程占用多个事务,嵌套事务;当某个给定产品的实现影响了你的使用时,确保你本人理解了结合客户端缓冲时客户端/服务器端同步的任务机制。有关查询/功用的信息提取这些信息的能力,它能够协助你找出功用瓶颈;OODB提供的优化和调整选项通常要比RDB少,但一些帮你提取功用信息和解释查询执行计划的工具仍很有用。
七、可伸缩性和可用性
虽然并非每一个工程都要求有企业级的恢复、可用性、可伸缩性功用,了解你所选择的OODB方案能够随着工程一同发展而提供这方面的能力是值得的。
标准考虑…失败转移主服务器出现问题时,通明地切换到冗余数据库。负载平衡把负载分布到冗余服务器、把对象分割到多个服务器、同步多个客户端对象缓冲之间数据视图的能力。复制和增量备份无缝地复制数据,支持负载平衡和恢复的能力。公用的查询引擎(Ad hoc query engine)丰富的查询言语,允许对数据的快速访问;理想情况下,它应该能够跨越没有直接关联的对象连接数据。
八、产品评论
下面,我按照前文提出的标准评估以下产品:
ObjectStore Versant Developer Suite Poet FastObjects Objectivity
请参考Cetus OODB area,那里有一个相当新的OODB供应商清单。
标准ObjectStoreVersant Developer SuitePoetObjectivity背景信息供应商Object DesignVersantPoetObjectivity产品主页ObjectStoreVDSFastObjectsObjectivity技术参考[29]Spec 或 PDF data sheetOverview 或 manualsJava 或 C++PDF overview 或 specific data sheets版本6.06.0t7 8.0[16]6.0价格和答应试用版本30天试用[1]60天试用功用限制90天试用答应费用[2][2][2][2]联机支持尚可[3][9]尚可[9]好[19]很好用户社团[23]中等[4]中等较小中等顺从性ODL顺从性NNN不完整的2.0/3.0支持OQL顺从性NN[10]ODMG 3.0[17]NJava接口服从ODMG 3.0ODMG 3.0ODMG 3.0ODMG 3.0C++接口支持ODMG 3.0N/A不完整的2.0/3.0支持Smalltalk接口N/AN/AN/AODMG 3.0兼容性支持的Unix操作系统Linux,Solaris,HP-UX,IRIX,AIX,Tru64 [ref]Linux,Solaris,HP-UX,IRIX,SGI,Tru64 [ref]Linux,Solaris,HP-UX[ref]Linux,Solaris,HP-UX,IRIX,AIX,Tru64 [ref]支持的Windows操作系统98,NT4,2000 [ref]NT4,2000 [ref]98,NT4,2000 [ref]98,NT4,2000 [ref]JDK要求1.0,1.1–1.3[22]1.2,1.31.1-1.31.22,1.3持久类的特殊化N[5]N[5]N[5]Y[24]可嵌入的版本YNY[18]N功用数据库浏览器YYYY客户端缓冲YYYY数据库安全数据库或者段的用户/组控制数据库的用户控制[14]特定类和数据库的用户/组控制数据库的用户控制XML支持YY[15]部分[20]部分[20]功用加锁策略数据库,页,或者对象对象级对象级容器级[25]最大的数据库大小[7]数百个GB?数十个GB到数百个GB?[12]?依据报告,它达到了TB级事务支持死锁检测,MVCC [8]分布式事务管理(类似于MVCC的概念)检查点,共享或并行的事务,嵌套事务检查点,死锁检测,共享或并行的事务提供有关查询/功用的信息YN[13]NN[26]可伸缩性失败转移(failover)YYY可选[27]负载平