面向对象技术和数据库
摘要
本文简要回顾了面向对象技术和数据库技术结合的发展历程和方向,探讨面向对象技术和数据库技术的结合的三种方式的基本特征、优势、劣势,着重介绍面向对象数据库和以应用面向对象技术的后关系型数据库——
Caché
,以其为例分析面向对象技术和数据库技术结合的现状,并展望面向对象技术和数据库技术结合发展前景。
关键词
面向对象、
SQL
、
MUPUS
语言、
Caché
、
ORM
(对象关系映射)
前言
在当今软件的世界里,面向对象技术一统天下,渗透到几乎所有软件设计领域、应用领域和工程领域。与此同时,在数据库领域中,虽然关系数据库占据了绝大部分的市场份额,
Oracle
、
DB2
、
SQLServer
、
Infomix
成为数据库中的霸主,但关系数据库究竟还是是数据的一种存储方式,它不属于面向对象领域。当以关系数据库为数据存储方式时,由于关系概念与面向对象概念是完全不同的两个概念,它们之间存在严重的“阻抗失谐(
Impedance Mismatch
)”。为了解决这个问题,面向对象技术和数据库技术自然而然开始交流和结合,应用上层的面向对象要求渗透到数据库,甚至是数据库底层,并开始影响未来数据库的发展。
面向对象技术和数据库技术的结合,开拓出多种结合方式,出现了许多新兴的概念,创造出来许多优秀的产品,下面就让我们一起来疏理其脉络,管窥其机理,展望其发展。
发展
八十年代以来
,
不同领域的应用提出了许多新的数据管理需求
,
传统数据库技术遇到了巨大的挑战。在这种挑战之下,第三代数据库应运而生,并和诸多新技术相结合(比如分布处理技术、并行计算技术、人工智能技术、多媒体技术、模糊技术),广泛应用于多个领域(商业管理、
GIS
、计划统计等),由此也衍生出多种新的数据库技术。其中一个重要的方向就是数据库的面向对象技术,在面向对象技术和数据库技术相结合的过程中,基本上是沿着下面几种途径发展的:
一种是建立纯粹的面向对象数据库管理系统(即
OODBMS
)
,这种途径往往是以一种面向对象语言为基础,增加数据库的功能,主要是支持持久对象和实现数据共享。面向对象的数据库不仅在处理多媒体等数据类型时可以做到游刃有余,而且在应用系统开发速度和维护等方面有着极大的优越性。面向对象数据库系统产生于
80
年代后期,它利用类的设施来描述复杂对象,利用类中封装的方法来模拟对象的复杂行为,利用继承性来实现对象的结构和方法的重用。面向对象数据库系统对一些特定应用领域(例如
CAD
等),能较好地满足了其应用需求。但是,这种纯粹的面向对象数据库系统并不支持
SQL
语言,在通用性方面失去了优势,因而其应用领域受到了很大的局限。
另一种途径是从传统的关系数据库加以扩展,增加面向对象的特性,把面向对象技术与关系数据库相结合,建立对象关系数据库管理系统(
ORDBMS
)
,这种系统既支持已经被广泛使用的
SQL
,具有良好的通用性,又具有面向对象特性,支持复杂对象和复杂对象的复杂行为,是对象技术和传统关系数据库技术的最佳融合。
1997
年,对象关系数据库的出现和发展应该算是数据库技术的一次革命,对象技术和关系技术珠联壁的优点,吸引着全球数据库厂商竞相研究开发。如何在现有的关系型数据库产品中加入对象技术,即开发面向对象的关系型数据库成为数据库软件厂商竞争的一个焦点。
第三种就是最近两年中,在开源领域中最为炙热的
ORM
(对象关系映射)。
解决“阻抗失谐(
Impedance Mismatch
)”矛盾的办法是在对象层和关系层间建立一个映射层(
Mapping Layer
),通过这种方式数据源中的关系数据才能进入对象领域,以对象的面貌出现,供上层应用使用。
最后一种来自于
MUMPS
领域——
M
技术数据库。
MUMPS
语言,简称:
M
技术算起来也是一种古老的语言了,与
FORTRAN
和
COBOL
属于同时代的语言。
它在医学、商业和教育领域中的用处正在日益扩大。
M
技术应用于数据库领域产生一个数据库分支——
M
数据库,其中的佼佼者——
Caché
是将
M
技术和面向对象技术融合得到的后关系型数据库,在医疗领域的绝对占有率。在面向对象技术和数据库技术结合的大环境下,这种技术可以说是剑走偏锋,又锐利难当。
面向对象数据库
面向对象和关系数据库一样,都支持数据库的持久性、二次存储管理、并发控制、恢复和查询的功能。不同的是:
1.
面向对象的范例是以分类为基础的,类用于定义存储在数据库内对象的结构及行为
2.
关系范例是以元组(
tuple
)或记录为基础的,它被唯一地用来定义存储在数据库内的数据结构。一组元组被称之为一个关系(
relation
)或一个表(
table
)
面向对象数据库系统的优点
1.
能有效地表达客观世界和有效地查询信息:面向对象的方法符合一般人的思维规律、即将现实世界分解成明确的对象,这些对象具有属性和行为。
2.
可维护性好:在耦合性和内聚性方面,面向对象数据库的性能尤为突出。这使得数据库设计者可在尽可能少影响现存代码和数据的条件下修改数据库结构。这种先进的耦合性和内聚性也简化了在异种硬件平台的网络上的分布式数据库的运行。
3.
能很好地解决
Impedance mismatch
问题
面向对象数据库系统的缺点
1.
技术还不成熟。面向对象数据库技术的根本缺点是这项技术还不成熟,还不广为人知。
ODBMS
如今还存在着标准化问题,由于缺乏标准化,许多不同的
ODBMS
之间不能通用。此外,是否修改
SQL
以适应面向对象的程序,还是用新的对象查询语言来代替它,目前还没有解决,这些因素表明随着标准化的出现,
ODBMS
还会变化。
2.
面向对象技术需要一定的训练时间:人们还需要学习一套新的开发方法使之与现有技术相结合。此外,面向对象系统开发的有关原理才刚开始具有雏形,还需一段时间在可靠性、成本等方面令人可接受。
3.
理论还需完善:从正规的计算机科学方面看,还需要设计出坚实的演算或理论方法来支持
ODBMS
的产品。此外,既不存在一套数据库设计方法学,也没有关于面向对象分析的一套清晰的概念模型,怎样设计独立于物理存储的信息还不明确。
对象关系数据库和对象关系映射
对象关系数据库和对象关系映射作的是同一件事:在关系数据库之上,加入对象——关系映射引擎,将应用领域中的实体对象和数据中的表作一个映射,上层应用操作对象,映射引擎作具体的关系表的操作。所不同的是角色不同:对象关系数据库是由数据库厂商实现,是一个自底向上的行为,而对象关系映射由应用层来作,是一个自上而下的行为,殊途同归。核心技术便是
OR
映射,包括:
1.
将属性映射成列。类属性将映射成关系数据库中的零或几列。要记住,并不是所有属性都是持久的。
2.
在关系数据库中实现继承。在将对象保存到关系数据库中时,继承的概念中发生几个有趣的问题。
3.
将类映射成表。类到表的映射通常不是直接的。除了非常简单的数据库以外,您不会有类到表的一对一映射。
其优点包括:
1.
该技术最大的有点在于让数据库的关系技术得到“可持续发展”。当今业界,关系数据库占据着绝大部分的应用领域,纵然从纯技术角度来看,关系技术与其他先进的数据库技术相比存在诸多限制,但从市场、应用、发展和经济多角度来看,只有在关系数据库之上作出调适,进行改进,才能保护客户的既有投资,才能让熟悉关系技术的开发群体能够平滑过渡到新的阶段。因此可以说,对象关系映射技术才是最可能得到长足发展和广泛应用的技术
2.
能够在很大的程度上解决
Impedance mismatch
问题,现今对象关系技术已经支持,对象关系的一对一映射,一对多映射,部分产品还实现了多对多映射,较好的实现了主键、外键和事务。并且,在过程语言上的发展使得关系世界的存储过程和触发器的功能得到实现
3.
对象关系映射技术较好的实现同现有主流开发语言的结合,如
Java
、
C
#语言,无缝的融入到开发环境中,这样的便捷性大大提高的开发的效率,减少了应用程序的代码量。
当然,虽然对象关系数据库和对象关系映射殊途同归,但是对象关系数据库有数据库厂商开发和维护,算是正规军,对象关系映射中间件主要由开源组织和个人开发和维护,算是游击队,两相比较,正规军将对象关系层直接融入数据库产品,在技术上具备效率、和数据库的结合度等多方优势;在实力层面又具备强大的经济、市场和研发优势,因此会成为对象关系映射技术发展的主流。而对象关系映射中间件短小精悍,具备多数据库的支持能力,并且受开发社群的鼎立支持,也将在未来占据一席之地。
后关系型数据库-
Caché
作为唯一实用过的面向对象数据库,我试图给它作一个分类,关系对象数据库?还是对象数据库?很难将其归类,因此单列给予分析说明。可以
Caché
是一种高性能的面向对象数据库,具有高效率和可升级的多维对象模型,由于市场的需要其内部集成了
SQL
访问,并且具有独特的分布式数据缓冲功能。其底层是多维数据模型,其前身是
Mupus
语言的数据库产品。它有下列特点:
1.
全面采用了面向对象模型,
Caché
存储的数据模型接近现实世界。对象世界的一切特点它都具备,并且实现得很。
Caché
的对象模型是基于
ODMG
标准的,
Caché
全
面
支持所有面向对象概念,包括封装、嵌入对象、多继承、多形性和集合。
2.
Caché’s
高性能数据库使用多维数据模型,它允许有效地紧密存储丰富的数据结构。在这个多维数据模型之上,构建对象和关系表,可以说:对象和关系表是其多维数据的外部表现,就想同样一个人,在外面穿着警服是警察,在家穿着便服是父亲和丈夫。
Caché
通过统一数据结构,提供用对象和关系表两种方式的灵活而迅速的数据访问,可以用两种方式并行访问相同的数据。
3.
Caché
可以与多种开发工具和语言互操作,这些访问方法允许同时使用来满足不同应用需求和优化性能。对于对象,可以通过
ActiveX
、
Java
、
C++
和
Web
方式访问,同时产品统一数据结构可以同时支持用标准
SQL
方式访问对象库。
4.
全面支持
SQL
的访问方式,
Caché
也提供了对微软
ODBC
和
SUN
的
JDBC
的高性能驱动程序,在应用端可以象访问关系数据库一样访问
Caché
。
5.
Caché
应用服务器提供
CSP
技术。用
Caché
开发的应用可以与
Web
进行数据交互,
CSP
提供了:
·
一个为数据库应用提供的先进的面向对象开发方法。
·
极好的运行性能和可扩展性
·
CSP
支持
HTML
、
XML
、
WML
和其它基于
Web
的语言。
讲得太多,有为
Caché
作广告的嫌疑,但根据实际的应用,我认为它是一个真正集关系数据库和对象数据库之所长的产品,通过它,开发者可以自由的游弋于对象世界和关系世界,不同的应用逻辑采用不同的技术对相同的数据进行访问。因此,可以预言,在将来的支持面向对象的数据库世界中,
Caché
将扮演颇为重要的角色。
结论
“阻抗失谐(
Impedance Mismatch
)” 的问题引发了当今数据发展的一大趋势——面向对象技术和数据库技术的结合和相互促进。对象是对复杂事物进行抽象思维结果,也是认识事物的普遍方法。对象编程和对象数据库符合人们对于客观世界的认识,事物的复杂行为在程序实现对象时也可以隐藏其复杂性。这些特性在现代的面向对象应用中越来越多地体现。因此,不管选择怎样的道路来实现,未来的几年或者十几年中,伴随着面向对象技术的发展,面向对象技术和数据库技术的结合将会稳步向前,逐渐向产业化和主流化方面发展。
参考文献
《数据库技术的新浪潮》,微电脑世界
《
Cach
é技术白皮书》
Intersystem Inc.
《面向对象的关系数据库设计》,互联网
《
Object-oriented database product vendors
》
www.soa.org
《对象数据库的实现技术及其查询处理》
复旦大学博士论文