(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和消息的传递(也就是方法调用),从而消除了大范围的笛卡尔集带来的困扰,提高数据库的访问效率。