对象模型是什么
面向对象数据库面向谁? 它的市场在哪里?
陶伟 编译
当今冠以面向对象的东西很多,什么面向对象分析,面向对象设计,面向对象语言,面向对象操作系统,面向对象软件工程,等等,诸如此类,不胜枚举。似乎凡是和面对象挂上了边,就要好卖得多。 其实面向对象也不是包治百病的灵丹妙药,数据库加上了面向对象同样不可能解决所有的问题,它不是大街上的冰棍,人人都可以买,它有自己独特的应用领域和特有的用户。向不懂C++或Smalltalk的人兜售面向对象数据库,无异于对牛弹琴。
面向对象数据库的用户主要是从事系统软件和高级应用软件开发的程序员和系统设计人员,它不是大众数据库,在这方面它有别于关系数据库面。面向对象数据库好比是医生用的手术刀,干的是"细活儿",和家庭主妇用的菜刀(关系数据库)不一样,那是用来干"粗活儿"的。 面向对象数据库是什么? 面向对象数据库=数据库系统+面向对象系统 面向对象数据库必须满足两条准则:首先,它是一个数据库管理系统,其次它是一个面向对象系统。第一条准则可以翻译成六条特征:持久性、缓冲管理、数据共享、数据可靠性(事务管理和恢复)、即席查询以及模式修改。第二条准则可以翻译成:封装性、继承性、多态、对象标识、计算完整性、复杂对象和可扩展性。 除了基本定义之外,为了满足所谓的非常规应用领域,还要引入一些扩展的特征:如版本管理、长事务、协同工作、触发和约束等。其中最重要的是封装性、继承性、多态,它们充分体现了面向对象的特征。 面向对象数据库的应用领域 面向对象数据库的应用面比较窄,主要集中于系统级的软件开发,以及数据密集的、复杂的应用软件开发,包括: ▲计算机辅助设计CAD ▲计算机辅助制造CAM ▲计算机集成制造系统CIMS ▲计算机辅助软件工程CASE ▲超大规模集成电路设计VLSI Design ▲地理信息系统GIS ▲决策支持系统DSS 这些应用领域和传统的商业应用领域有着显著不同,它们表现为复杂的数据类型,而不是简单的二维表,复杂的数据结构上定义着复杂的操作语义,需要不同层次的数据抽象能力,这些均是传统数据库系统所无法满足的。 面向对象数据库与文件系统和关系数据库的区别 文件系统存贮的数据格式因程序员的设计的不同而不同,一般不能保证数据的一致性和完整性,也很难多个用户共享。关系数据库存贮的是二维表,能保证数据的一致性与完整性,但只能用关系数据模型去描述世界。面向对象数据库则用面向对象数据模型去映射客观世界,存贮的不仅是数据,而且存贮了定义在数据上的操作语义,以及对象之间的复杂引用和约束关系。 相对于文件系统和关系数据库而言,面向对象数据库的特点可以做以下的形象描述:面向对象数据库提供了一种存贮对象的更好方法,因为它提供了传统数据库的全部服务,然而却无存储和检索对象时对象的拆卸与装配的开销,比较关系数据库和面向对象数据库存储复杂对象,后者好似直接把汽车开进车库存放,而前者则是把汽车拆成零部件来保存。 如何应用面向对象数据库 面向对象数据已进入了商业应用领域,但没有取代现有的数据库系统,通常是在处理非常复杂的数据,或者数据很难被分解为关系数据库二维表的情况时,才采用面向对象数据库。 一般认为图像数据的处理,使用面向对象数据库非常合适,其实还有许多数据类型可以用面向对象数据库来存储。就目前使用情况看,计算机辅助设计CAD是面向对象数据库最大的应用领域,现在电信、金融服务、医疗保健、制造过程控制等诸多领域,也开始推广使用。 主要的面向对象数据库厂商 主要的面向对象数据库厂商有以下几家。 ·Object Design,Inc. ·Gemstone System,Inc. ·O2 Technology,Inc. ·Objectivity,Inc. ·Versant Object Technology Corp. ·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一块儿使用。 使用面向对象数据库最头痛的问题 管理面向对象数据库应用程序开发的项目经理一致认为"建立本领域的专业知识"和"确认面向对象数据库所能带来的好处"是最难的两件事。 调查了66个项目经理,可以有多个回答。 @@I1;表1@@ 真正用的有几家? 66个信息系统经理主管的面向对象数据库项目中,有一半投入使用。 @@I2;表2@@ 面向对象数据库厂商面临的主要障碍与挑战 由于面向对象数据库是一种系统级的开发工具,曲高和寡,在整个数据库市场中只占很小的份额。许多开发者承认采用面向对象数据库也有它本身的问题,这就是把对象映射到关系数据库的处理往往非常耗费时间与精力,并会导致性能上的严重问题。 虽然面向对象数据库系统为面向对象应用程序提供了最佳的性能和映射服务,但是仍缺乏对标准的报表和查询的支持。现在一般的做法是通过第三方厂家提供的转换程序,许多严肃的面向对象开发者已认识到面向对象数据和关系数据之间的转换是何等的困难,希望厂家能够提供相应的处理程序。 今天,面向对象数据库厂商面临着三大挑战:消除采用面向对象数据库所带来的风险,和已装机的关系数据库应用程序和开发商竞争,支持标准的数据访问和报表功能,为迎接这些挑战,各面向对象数据库厂商采取了不同的策略: ● Gemstone System,Inc.仍集中于Smalltalk市场,它拥有一批用户,证明了在大型的、关键的应用系统用Gem-stone是成功的。它的主要目标是这样的一些Smalltalk用户,它们已经认识到把面向对象应用系统映射到关系数据库的缺陷。为了和其它面向对象数据库以示区别,Gemstone称自己的产品为"应用程序服务器",允许应用程序在面向对象的环境去访问关系数据库中的数据。 ● ObjectStore,Inc.在整个面向对象数据库市场份额中占33%,是排名第一的面向对象数据库厂商,但它的形势也不容乐观。该公司最近为了保证利润解雇了一批人,这件事给面向对象数据库界以很大的震动,这至少说明了面向对象数据库市场存在着很大的问题。最近该公司也发布一些新产品,如SQL Client和RDBMS gateway。其它的一些独立开发商的参与也巩固了ObjectStore的地位。 ● Objectivity,Inc.主要目标是C++市场,并联合大批的增值销售商和独立的软件开发商。在许多方面,Objectivity似乎太钟爱自己的技术,而忽略了市场的需求。它提供了Smalltalk,C++和Objectivity SQL三种选择。在Smalltalk、C++市场上,它并不突出,但是这个市场在信息系统方面增长很快。 ● Ontos,Inc.,传统上注重面向对象数据引擎,现在则强调对象集成服务(Object Integration Service)。它为C++应用程序提供映射工具,把对象无缝地存入标准的关系数据库中。Ontos希望抢占由UniSQL Software,Inc., Persistence Software,Inc.占领的一部分市场,同时在VMark Software,Inc.,Hewlett Packard Co.以及Rogue Ware所属市场争一席之地。从长远的观点来看,用户会逐步认识到在维护一个映射环境时,他们必须要做出某种妥协,会有一部用户会采用面向对象数据库引擎。 ● Versant Object Technology Corp.采取两面战略,一方面向电信领域和网络管理用户提供一个高性能的面向对象数据库引擎,另一方面为大型机应用系统的软件开发提供基于Smalltalk的工具。这一双元策略有助于增加Versant的装机量,但也要求更多的技术支持和消耗更多的开发资源。 ● 关系数据库厂商如Oracle、Sybase和Informix则承诺在未来的产品中提供对象的持久性存贮机制。当然,它们提供的是一种混合型环境,许多关系数据库用户正在等待着这些产品的推出,而不去购买现有的纯的面向对象数据库,以期在他们现有关系库上去支持面向对象应用程序。关系数据库的解决方案尚需实践来验证,而面向对象数据库的高性能和强大的对象模型已得到了开发者的承认。风险最大的是映射工具开发厂商,它们受到了"纯"和"混合型"面向对象数据库的两面夹击。 面向对象数据库用可靠性和速度来赢得用户 面向对象数据库系统不如关系数据库应用得广泛,并不是因为它们没有满足用户的需求。许多使用面向对象数据库的公司认为面向对象数据库非常可靠,性能上也非常优异,和已有的关系数据库能较好地共容。当然从另一面看,面向对象数据库仍然要克服易用性方面的障碍。美国Computerworld在1995年10月雇用了Texas Anstin的First Market Research Corp.对面向对象数据库市场做了一次调查,这一次调查与以往不同之处在于,它是调查用户对面向对象数据库的整体满意程度,而不单个产品。 一共调查了66个经理,他们正在使用10个不同的品牌的面向对象数据库产品,或正在考虑使用。最引起用户注目的三个产品是Hewlett Packard Co.的OpenODB, Object Design,Inc.的ObjectStroe和Versant Object Technology Corp.的Versant。 当问及对面向对象数据库的满意程度时,大多数被调查者认为是"好"或"非常好"。甚至有些用户认为HP的OpenODB性能已超过他们的期望值。他们同时表示,面向对象数据库也表现出一些问题,主要是学习周期长,"当然会用之后,我们会发现它存储复杂数据对象能力是关系数据库远远不及的"。 易于使用 调查中发现,面向对象数据库并不那么易用,即使是开发程序的老手也不例外。许多人反应面向对象数据库在易用方面"一般"。San Francisco的United Airlines的高级商业分析家Mike Rodger这样评论"在我们的开发人员生产效率提高之前确实需要相当长的一段时间。"一旦开发人员熟悉系统后,面向对象编程会大大缩短开发时间,特别是在开发人员开始重用对象时。 速度 速度是面向对象数据库厂商整天不厌其烦地宣传的方面。但用户们却并不认为这是一个问题。30个用户在速度方面的评语是"好"或"很好",速度成为用户的最为满意的一个方面。 一旦面向对象数据库的继承机制开始工作,其它任何数据库在速度上不能与之匹敌。关系数据库依赖于关联访问,由于查询许多表,必然降低了速度,而面向对象数据库采用和层次数据库类似的导航式查询,消除了表的访问过程。 至于可扩展性方面,情况则不太妙。当用户增加时,面向对象数据库的性能满意程度陡然下降,从扩展到30用户、30~99用户、100用户以上三个方面来看,满意的用户从45%降低到11%。 兼容性 从调查结果来看,用户对面向对象数据库和系统软件的兼容性并不担心。14个用户评价为"很好",这是所有调查项目中最高的。评价为"好"的用户认为面向对象数据库和现有系统软件不冲突。即使是评价为"一般"的用户也没有抱怨有什么问题。 虽然兼容性方面得分很高,但和关系数据库的兼容性尚不清楚,用户和关系数据库的接口大部分依赖于面向对象数据库提供。例如:UniSQL,Inc.的UniSQL/X是一个混合型数据库,允许用户访问多个品牌的数据库的数据。对于有些用户,集成是一件琐碎的事。"我们设计和实现了一个非常特别的程序后,我们关系数库才能运行起来"一个OpenODB的用户反映。HP把Open ODB设计成一个独立产品,没有和它的妹产品Odapter"捆"到一块儿。Odaptor可以帮助开发人员开发带有关系视图的的面向对象应用程序。 可靠性 许多用户认为可靠性是他们最关心的问题,不过厂商已满足了他们的要求。"我们已经习惯了高可靠性,我们没有准备要接受一丁点儿的差距"。Rachel Lohr认为,他是Wisconsin大学的一个信息处理方面的咨询专家。 "Gemstone的可靠性和数据完整性非常好,至今我们尚未发现一个错误",他接着评价。Lohr的观点代表了大多数用户。25个用户评价为"好"或"很好"。数据完整性的满意得分更高,有32个用户表示满意,其中16人认为"非常好"。 唯一的一个批评来自Poole,此君在多个Server上运行分布式数据库,惹了不少麻烦。Poole说,在分布式环境中出了许多严重问题,但他搞不清楚为什么。"我确信问题一半是我们造成的,另一半则是别人的,但我不知如何划分"他说。 @@I3;表3@@

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。