面向对象数据库面向谁? 它的市场在哪里?陶伟编译当今冠以面向对象的东西很多,什么面向对象分析,面向对象设计,面向对象语言,面向对象操作系统,面向对象软件工程,等等,诸如此类,不胜枚举。
似乎凡是和面对象挂上了边,就要好卖得多。
其实面向对象也不是包治百病的灵丹妙药,数据库加上了面向对象同样不可能解决所有的问题,它不是大街上的冰棍,人人都可以买,它有自己独特的应用领域和特有的用户群。
向不懂C++或Smalltalk的人兜售面向对象数据库,无异于对牛弹琴。
面向对象数据库的用户主要是从事系统软件和高级应用软件开发的程序员和系统设计人员,它不是大众数据库,在这方面它有别于关系数据库面。
面向对象数据库好比是医生用的手术刀,干的是"细活儿",和家庭主妇用的菜刀(关系数据库)不一样,那是用来干"粗活儿"的。
面向对象数据库是什么? 面向对象数据库=数据库系统+面向对象系统面向对象数据库必须满足两条准则:首先,它是一个数据库管理系统,其次它是一个面向对象系统。
第一条准则可以翻译成六条特征:持久性、缓冲管理、数据共享、数据可靠性(事务管理和恢复)、即席查询以及模式修改。
第二条准则可以翻译成:封装性、继承性、多态、对象标识、计算完整性、复杂对象和可扩展性。
除了基本定义之外,为了满足所谓的非常规应用领域,还要引入一些扩展的特征:如版本管理、长事务、协同工作、触发和约束等。
其中最重要的是封装性、继承性、多态,它们充分体现了面向对象的特征。
面向对象数据库的应用领域面向对象数据库的应用面比较窄,主要集中于系统级的软件开发,以及数据密集的、复杂的应用软件开发,包括: ▲计算机辅助设计CAD ▲计算机辅助制造CAM ▲计算机集成制造系统CIMS ▲计算机辅助软件工程CASE ▲超大规模集成电路设计VLSI Design ▲地理信息系统GIS ▲决策支持系统DSS 这些应用领域和传统的商业应用领域有着显著不同,它们表现为复杂的数据类型,而不是简单的二维表,复杂的数据结构上定义着复杂的操作语义,需要不同层次的数据抽象能力,这些均是传统数据库系统所无法满足的。
面向对象数据库与文件系统和关系数据库的区别文件系统存贮的数据格式因程序员的设计的不同而不同,一般不能保证数据的一致性和完整性,也很难多个用户共享。
关系数据库存贮的是二维表,能保证数据的一致性与完整性,但只能用关系数据模型去描述世界。
面向对象数据库则用面向对象数据模型去映射客观世界,存贮的不仅是数据,而且存贮了定义在数据上的操作语义,以及对象之间的复杂引用和约束关系。
相对于文件系统和关系数据库而言,面向对象数据库的特点可以做以下的形象描述:面向对象数据库提供了一种存贮对象的更好方法,因为它提供了传统数据库的全部服务,然而却无存储和检索对象时对象的拆卸与装配的开销,比较关系数据库和面向对象数据库存储复杂对象,后者好似直接把汽车开进车库存放,而前者则是把汽车拆成零部件来保存。
如何应用面向对象数据库面向对象数据已进入了商业应用领域,但没有取代现有的数据库系统,通常是在处理非常复杂的数据,或者数据很难被分解为关系数据库二维表的情况时,才采用面向对象数据库。
一般认为图像数据的处理,使用面向对象数据库非常合适,其实还有许多数据类型可以用面向对象数据库来存储。
就目前使用情况看,计算机辅助设计CAD是面向对象数据库最大的应用领域,现在电信、金融服务、医疗保健、制造过程控制等诸多领域,也开始推广使用。
主要的面向对象数据库厂商主要的面向对象数据库厂商有以下几家。
·Object Design,Inc. ·Gemstone System,Inc. ·O2 Technology,Inc. ·Objectivity,Inc. ·Versant Object TechnologyCorp. ·Ontos,Inc. 此外关系数据库厂商,例如:Informix和Oracle也发布了自己具有面向对象数据库功能的关系数据库产品。
这些产品多以支持大二进制块对象Blobs(binary large objects)为特征。
当然Blobs在性能上无法和"纯的"面向对象数据库匹敌。
同时,还有一组混合型的关系/面向对象数据库进入市场 ,它们填补了关系数据库和面向对象数据库之间的空白。
虽然市场上出现了许多面向对象数据库产品,但到现在为止,面向对象数据库仍缺乏支持商业应用的基本特征。
例如:数据库加锁,防止两个用户同时修改同一数据;回滚,当一个事务被意外中断时,把数据库恢复到原始的一致状态。
此外,说服企业的信息系统负责人采用面向对象数据库,也不是一件轻而易举的事,许多公司都不愿意公开宣扬自己在使用面向对象数据库技术,因为害怕用户不赞同,而损害本公司的竞争力。
下面我们介绍一些用户公司在采用面向对象数据库时面临的问题、遇到的挑战和解决的方法。
金融服务业问题金融企业在进行投资决策时,往往时间紧迫,同时又要考虑投资的风险和回报等诸多方面,这些因素涉及复杂的、大量的数据信息,很难用传统的关系数据库来建模。
传统的关系数据库查询慢,描述能力差,基于关系数据库的决策支持系统往往不能满足用户的需要。
美国Chemical Back Corp.在1988年就开始采用面向对象的程序设计。
但是由于缺乏有效的面向对象数据库支持,搞得焦头烂额。
其副总经理Dante Dewitt在回忆时这么评论,"当时我们知道采用面向对象数据库会带来许多便利,但是当时市场上还没有用起来顺手的家伙"。
解决方案去年,Chemical Bank Corp.采用了Object Design的Objectstore,因为Objectstore是市场上最领先的面向对象数据库系统。
"现在我们认为面向对象数据带来的好处远远超过它带来的问题。
"Dante Dewitt认为。
好处面向对象数据库用一种统一的方式去处理复杂的关系。
在决策的过程中需要考虑各种复杂的关系,需要不同的视图。
而面向对象数据库可以提供多种视图去访问数据,却不用编制复杂的查询语句。
面向对象数据库还提供了一种数据模式演进的方便途径,保证当数据库模式改变时,程序仍能正常运行。
而关系数据库修改了数据库的模式后,会造成向后兼容的问题。
上述技术问题,一旦采用了面向对象数据库,就风消云散。
面向对象数据库把数据与操作封装起来,提供了类层次结构,建立了不同层次的数据抽象,使用户可以采用统一的模式去处理数据对象。
电信问题 "在电信企业决策时,往往要涉及许多工程因素。
任何因素都有可能影响最终的选择。
"San Cinquegrani这样认为,他是Objectware Corp.的总裁。
该公司是位于Chi-cago的一家系统集成商,正在用面向对象数据库为Ameritech Advanced Data Services公司开发应用软件,这些决策软件的决策模型涉及一系列的复杂关系。
例如,供应系统的组织和应用户的服务请求选购电信设备,都需要在商业上和技术上做复杂的权衡与比较后,才能做出决择。
解决方案开始,供应系统采用的是关系数据库,由于关系系统的局限性,许多决策因素的处理无法在系统中实现。
而在面向对象数据库中,决策的因素和方法可以嵌入到对象和关系中去。
供应系统可以在较高层次对开关、线路、设备以及设备性能进行处理,以组合起来帮助用户决策。
好处过去一个服务请求,往往要经过数天之后,才能得到回答,而今天由于采用了面向对象数据库,一般只需要几个小时。
数据库通过使用继承可以非常容易地获得所有和决策相关的数据。
Ameritech通过大量的测试后,选择了Versant,抛弃了Gemstone和Objectstore,之所以不采用Objectstore是因为它没有Smalltalk的接口。
医疗保健问题 "我们的病人信息来源很杂,我们需要把这些信息合理地存放,以便使用时随手可取"一家医疗保健公司的信息系统负责人介绍。
病人的信息类型包括:声音、视频、数字图象和传统数据等。
这些均是关系数据库很难处理的。
解决方案如果采用关系数据库存贮这些信息,也未尝不可,但是用户更希望把一些方法放入数据库,以便基于这些信息而采取正确的行动。
该公司为医疗保健建立了一个面向对象模型,使每个数据对象都有一组相关的方法,大大方便了病人信息的管理。
最后,他们采用了Gemstone。
好处虽然整个系统尚未开发完成,但公司希望借此来提高医疗保健的速度和质量,因为医生和护士能更快、更准确地获得病人的资料,而无需为收集资料四处奔波。
混合型面向对象数据库面向对象数据库和关系数据库采用不同的数据模型,两者同时使用有很大的断层。
关系数据库是大多数管理信息系统采用的底层支持系统,面向对象数据库要赢得更大的市场份额,和现有信息技术的系统集成是致关重要的方面。
混合型面向对象数据库的提出就是为弥补关系数据库和面向对象数据库之间的断层。
混合的方法有多种,包括中间件和关系数据库的面向对象前端。
主要的混合型面向对象数据库厂商是: ·Persistence Software, Inc. ·UniSQL Software,Inc. ·Illustra, Inc. ·Hewlett Packard Co. 美国Shell Exploration and Production Technology Co.Co.采用的就是混合型面向对象数据库Persistence。
Shell公司Persistence使它的用C++编制的应用程序可以访问以前存在关系数据库里的数据。
Persistence是一种中间件而不是一个数据库,它保护了Shell公司在关系数据库Oracle上的投资。
在采用Persistence之前,Shell 公司的关系数据库和面向对象数据库是分开维护的,而现在面向对象数据的应用程序和关系数据库系统共存于一体。
RWD Technologies,Inc.是另一个采用混合型面向对象数据库的公司,它们采用了Illustra,它是一个通过扩展SQL而具备对象功能的关系数据库。
使用Illustra可以允许用户用SQL来访问空间数据和图象。
RWD公司开发的应用程程序是为一家邮件速递公司服务的。
这个应用程序包括地理信息系统和传送路径的数据,通过SQL找出最短的传送路径。
Illustra为SQL扩充处理特殊数据和函数的能力。
Illustra可以和Sybase一块儿使用。
使用面向对象数据库最头痛的问题管理面向对象数据库应用程序开发的项目经理一致认为"建立本领域的专业知识"和"确认面向对象数据库所能带来的好处"是最难的两件事。