论面向对象的数据库技术论文
论文摘要:面向对象的数据库极有可能是数据库发展的方向,关系型数据库已显得力不从心,面向对象技术已经渗透到了数据库领域,把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库的技术机理并不高深,但它的设计思想却极有价值。
论文关键词:关,键,词,数据库,面向对象,技术
(JinchangMunicipalPublicSecurityBureauGansuJingchang737100)随着应用的日趋复杂和智能化,传统的关系数据库的缺点一点点的暴露出来,人们迫切希望产生一种新的数据库解决方案来适应这些复杂需求。一种新的解决方案呼之欲出。而这个解决方案极有可能就是面向对象数据库技术。面向对象数据库的技术机理并不高深,但它的设计思想却极有价值。在传统的面向对象应用开发中,由于传统的关系数据库开发风格完全不同于面向对象风格,使得许多程序员难以从复杂的SQL编程中解脱出来(尽管已经有一些成熟的ORM技术框架,如Hibernate,但程序员仍需要做大量的数据库代码工作),从而也无法从实质上提高工作效率。
1、面向对象数据库技术概述
面向对象是当前计算机界关心的重点,面向对象是一种新的方法学,也是一种认知方法学。它是一种支持模块化设计和软件重用的实际可行的编程方法,它把程序间的逻辑活动建立在对象间的消息传递之上,且设计上更加符合现实世界,更加自然,所以面向对象方法得到了更广泛的应用。
面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。在数据库中提供面向对象的技术是为了满足特定应用的需要。随着许多基本设计应用(如MACD和ECAD)中的数据库向面向对象数据库的过渡,面向对象思想也逐渐延伸到其它涉及复杂数据的应用中,其中包括辅助软件工程(CASE)、计算机辅助印刷(CAP)和材料需求计划(MRP)。这些应用如同设计应用一样在程序设计方面和数据类型方面都是数据密集型的,它们需要识别于类型关系的存储技术,并能对相近数据备份进行调整。
セ褂行矶嘤τ靡求多媒体数据库。它们要求以集成方式和文本或图形信息一起处理关系数据,这些应用包括高级办公室系统的其它文档管理系统。
ッ嫦蚨韵笫据库从面向程序设计语言的扩充着手使之成为基于面向对象程序设计语言的面向对象数据库。例如:ONTOS、ORION等,它们均是C++的扩充,熟悉C++的人均能很方便地掌握并使用这类系统。
面向对象数据库研究的另一个进展是在现有关系数据库中加入许多纯面向对象数据库的功能。在商业应用中对关系模型的面向对象扩展着重于性能优化,处理各种环境的对象的物理表示的优化和增加SQL模型以赋予面向对象特征。如UNISQL、O2等,它们均具有关系数据库的基本功能,采用类似于SQL的语言,用户很容易掌握。
2.面向对象数据库的优点
面向对象数据库是数据库技术与面向对象程序设计方法相结合的产物,由于同是面向对象方法学,所以其具有了所有面向对象的优点。同时,由于数据库主要操作的是集合(而不是单个数据),所以其又具有自身的特点和优点。
(1)提高数据库开发效率
由于面向对象本身的亲和性,使得人们可以使用更自然的方式来开发数据库,而不必像关系数据库那样考虑到方方面面诸如规范到第几范式等等问题,大大的提高了开发效率。同时,由于面向对象开发的流行,人们往往更热衷于使用面向对象的方式思考问题,这也无形中提高了数据库系统的开发效率。再有,应用于数据库间的交互将变得更加直接和方便,因为加入应用也是面向对象的,那么可以将面向对象数据库中的对象直接映射到应用程序的对象中。比如当前J2EE开发中流行的EJB以及开源的Hibernate等框架技术就是在关系数据数据库与面向对象间搭桥方面做了积极的工作。而对于面向对象数据库来数,EJB和Hibernate等中间技术将显得无用,人们可以直接将数据库中的信息转换到基于面向对象技术应用程序的对象中,而且效率更高(因为无需中间层的转化)。程序员可以彻底的从持久层复杂的开发逻辑中解放出来,投入跟为重要的业务逻辑开发中,而且再也不用写复杂的SQL语句,因为应用中的编程和数据库中的编程时一致的【1】。
(2)数据库本身可以完成复杂的逻辑
由于使用了面向对象方法学,在数据库中编写复杂的逻辑变得简单了,于是,人们可以在数据库中加入复杂的逻辑,而且可以和在应用中添加的逻辑相互衔接。目前,主流数据库都提供了过程化查询语言,但毕竟还是过程化的,它天生就不如面向对象方法高效简单,因此人们往往并不想使用过程化查询语言实现太复杂的逻辑,因为它将导致开发和维护困难,提升成本。
在数据库中使用数据库查询语言实现复杂的基于面向对象的业务逻辑是面向对象数据库的一大亮点。这不仅使得程序的开发和维护变得简单,而且执行性能也得到了提升(因为在数据中实现的逻辑总比在应用中实现的逻辑快那么一两步)。
(3)低冗余性和高效性
在关系数据库中,低冗余和高效一直是鱼和熊掌不可兼得的状态。低冗余往往会使得查询困难并最终导致数据库效率降低(因为将产生可观的笛卡尔集或者生成复杂的查询优化方案,从而降低效率)。而在面向对象数据库中,查询将变成对对象ID和消息的传递(也就是方法调用),从而消除了大范围的笛卡尔集带来的困扰,提高数据库的访问效率。同时,由于面向对象的封装性,使得面向对象数据库在设计程序时天生就已经达到了相当于关系数据库中的第三范式的设计准则。因此面向对象的数据库天生就是低冗余的。
(4)提高软件的可重用性
原因很简单,因为面向对象的设计思想本来就要求你把业务逻辑封装到一个个对象中,并通过给它们传递消息调用业务逻辑计算。这样,你就不得不首先把一些通用的业务逻辑设计在一个个类中,下次使用只需调用它们即可。同时,面向对象方法还有继承该概念,继承使得功能可以从一个类直接扩展到它的子类中。另外,多态,动态联编等技术以及设计模式的应用使得代码的可复用性得到了最大限度的扩展【2】。
3.面向对象方法学在计算机领域中的应用
面向对象数据库系统可以应用于复杂的诸如人工智能等领域,也可以使用于传统的企业级应用。总之,面向对象数据库可以应用在所有关系数据库能够应用的地方,且在许多方面效能更高,比如人工智能和其他较为复杂的应用中。面向对象数据库现在已经存在一些实现,主要是三条路线:
(1)以关系数据库和SQL为基础的扩展关系模型
这种方式的优点是适宜于市场推广,缺点是无法做到纯粹的面向对象性。这个方式已经在各大主流数据库总得到实现,如Oracle、DB2等。
(2)以面向对象程序设计语言为基础
这种方式是以面向对象程序设计语言为基础的,研究持久的程序设计语言。这种方式的优点是它是纯粹的面向对象的,缺点是难以进行市场推广。
(3)建立新的面向对象数据库
这种方式已经有一些实现,如法国O2Technology公司的O2系统。优缺点与第二条路线一致,基于研究的目的,本文中的面向对象数据库的简易实现版本是以这种方式为基础的。
4.面向对象技术和数据库技术的结合沿着三种途径发展【3】:
1)面向对象数据库管理系统(OODBMS)
面向对象数据库管理系统以一种面向对象语言为基础,增加数据库的功能,主要支持持久对象和实现数据共享。利用类来描述复杂对象,利用封装方法来模拟对象行为,利用继承性来实现对象的结构和方法的重用。但是这种纯粹的面向对象数据库管理系统不能支持SQL语言,不能和现有的数据库结合起来,在扩展性和通用性方面受到限制。
2)对象关系数据库管理系统(ORDBMS)
对象关系数据库管理系统既支持SQL语句,也支持面向对象技术,实现了传统数据库技术和面向对象技术的完美结合。全球的数据库生产商争相研发这种数据库产品,数据库生产商竞争的一个焦点是如何在现有的数据库中加入面向对象技术。
3)对象关系映射数据库系统(ORMDBMS)
对象关系映射数据库系统是在对象层和关系层之间建立一个映射层,使得数据源中的关系数据能够进入对象领域,并且作为对象供上层应用使用。
5、面向对象技术在数据库中的实现
将面向对象技术应用到关系数据库中可以有两种方式:
一种方式是把面向对象技术中的对象作为关系数据库系统中的一种新的数据模型。关系表中的属性值包含对象指针,对象数据的操作在关系数据库之外进行。把面向对象数据模型(ODM)和关系数据模型(RDM)结合起来,对关系数据库管理系统进行扩充,但对象查询功能受到一定的限制。
另一种方式是把面向对象接口添加在关系数据库中,在关系数据库系统中增加一个对象至关系转换器,将上层的面向对象模式转化为关系存储模式,存放到关系数据库中。这样,在面向对象的数据库中关系存储模型位于底层,数据库用户可以利用标准的面向对象数据库语言进行查询处理,用户输入的面向对象数据库语言被转换成关系数据库语言,从而对底层的关系存储模式进行查询等处理,同时将操作结果按照对象方式返回给用户。这种实现方式使得数据库管理系统在实现关系模型和面向对象模型之间的模型转换时需要一定的开销,执行效率比直接面向对象数据库要低一些,但这种扩充方式实现比较简单。下面主要介绍一下第二种方式是如何实现的:
面向对象技术通过映射接口和关系数据库相结合,面向对象数据库强调的是对象的属性、方法和对象间的关系,设计这种类型的数据库需要理解对象到关系数据库表的映射方法。这种映射方法通过将对象类生成为SQL语言中的数据定义语言(DDL)来将对象转换成一个好的概念层的数据模型(DDL)【4】。
6.结论
随着计算机技术的飞速发展,现有的数据库技术不能满足计算机网络、多媒体技术、CAD/CASE等领域的需要,面向对象技术应用到现有的数据库中应运而生。面向对象技术和数据库技术结合的三种途径以及面向对象技术应用到数据库中的优势,通过在关系数据库中增加一个对象至关系转换器,把面向对象接口添加到关系数据库中来实现面向对象技术在关系数据库中的应用。
参考文献
1 Alex Kriegel and Boris M.Trukhnov.SQL宝典[M].北京:电子工业出版社,2003. 1~200
2 Bruce Eckel.Thinking In Java 4 [M].北京:机械工业出版社,2006.1~600
本文标签:
[!--temp.ykpl--]