解析:数据库应用需求与对象关系数据库

来源:岁月联盟 编辑:zhuzhu 时间:2007-08-14

一 数据管理技术随着应用进步而迅速发展

应用的发展始终是数据管理技术进步的动力。或者说,应用发展与技术进步是互相推动、互相促进的。回顾数据管理领域的发展历史,正说明了这一点。

在五十年代后期到六十年代中期,数据管理功能主要由文件系统实现,只提供较为简单的数据存取功能,各个文件之间相互独立、互相不发生联系,系统对数据文件提供打开文件、关闭文件、从文件中读/写一个记录等操作。

但随着应用的发展,要求存储和管理有结构的数据,即不但管理数据本身,还管理数据间的联系,以便提供按照数据间的联系进行导航式的查询,从而大量的查询应用需求可以由系统(而不必通过应用程序)直接予以满足。于是在六十年代后期产生了数据库系统。

数据库系统管理的数据是有结构的,提供强有力的数据查询功能,并提供良好的数据共享性。当时,数据库系统大都采用层次数据模型或网状数据模型。随着数据管理技术的发展,在七十年代初,提出了关系数据理论,建立了关系数据方法,继而诞生了关系数据库系统。

关系数据库系统管理的数据,其结构较为简单,数据本身以二维表形式进行存储;表之间的数据联系通过一个表的码与另一个表的外码的连接来体现。关系数据库系统提供了强大的查询功能,提供了十分方便、易用的非过程化的查询语言(已形成关系数据库语言国际标准SQL),从而获得了极为广泛的应用,大大促进了商务数据处理应用的飞速发展。

随着像CAD、CASE、图像处理、GIS等新的应用领域的发展,以及传统应用领域中应用的深化(例如:需处理多媒体信息),要求数据管理软件管理复杂对象,模拟复杂对象的复杂行为(对数据施加较为复杂的操作)。于是,在八十年代中后期产生了面向对象数据库系统,把面向对象技术与数据库技术结合起来,利用类的设施来描述复杂对象,利用类中封装的方法来模拟对象的复杂行为,利用继承性来实现对象的结构和方法的重用。

面向对象数据库系统对一些特定应用领域(例如CAD等),较好地满足了其应用需求。但是,这种纯粹的面向对象数据库系统,并不支持SQL,在通用性方面失去了优势,其应用领域受到很大的局限。在面向对象技术与数据库技术相结合的过程中,基本上是沿着两种途径发展的:一种是建立纯粹的面向对象数据库管理系统(即OODBMS),这种途径往往是以一种面向对象语言为基础,增加数据库的功能,主要是支持持久对象和实现数据共享。

另一种途径是从传统的关系数据库加以扩展,增加面向对象特性,把面向对象技术与关系数据库相结合,建立对象-关系数据库管理系统(即ORDBMS),ORDBMS既支持已被广泛使用的SQL,具有良好的通用性,又具有面向对象特性,支持复杂对象和复杂对象的复杂行为。

正在制定的新的SQL国际标准(现称为SQL3)体现了ORDBMS的特征。ORDBMS适应了某些新应用领域的需要和传统应用领域深化发展的需要,因而近几年来,ORDBMS获得了快速的发展。

 

二.应用需求分类和数据管理软件

应用需求是数据库管理系统和其它数据管理软件发展的推动力。

不同的应用领域需要管理的数据类型、数据复杂程度不同;对数据所需进行的查询的复杂程度不同;对数据的其它操作处理,以及数据安全性、并发控制、故障恢复等的要求也不同。

没有一种万能的数据管理软件能够满足所有的应用需求,能够有效地为各个不同的应用领域服务。因此,受应用需求的驱动,多种多样的数据管理软件被研制出来,推向市场。

下面,我们以数据的复杂程度和查询要求的复杂程度为基本区分原则,将应用需求进行分类,并对适合于各类应用需求的数据管理软件进行讨论。

1.简单数据,简单查询———文件系统

我们以正文处理系统为例,描述这一类应用的需求。文字处理是办公室工作中必不可少的一项内容。常见的正文处理系统有Word、Framemaker、Word Perfect、vi等。它们的工作方式非常简单:使用者用名字打开文件,文件内容被拷贝到虚存中。在编辑正文时,更新虚存对象,对象被定期地保存到硬盘中。在结束正文处理时关闭文件,这时,虚存中的拷贝被存回到文件系统中。 上面描述的这种正文处理系统代表了一类可称为简单数据简单查询(或无查询要求)的应用需求。它的数据结构非常简单,仅仅是字符的序列;它的查询要求更为简单,仅仅是读文件和写文件。因此,对于此类应用,操作系统厂商提供的文件系统就足以满足其功能要求,并具有较高的性能。

2.简单数据,复杂查询———关系数据库系统

目前,具有简单数据,复杂查询特性的应用是人们心目中传统的数据库应用的典范。保险业务处理系统、企业的人事管理、生产管理、物资管理等管理信息系统都具有这样的特点。下面,我们以公司职工信息管理系统为例,来看一看这类应用的需求和解决方案。 假设你需要为公司的每一个职工保存如下的信息:职工的姓名、开始工作的时间、工资、所在的部门。为每一个部门,则需要保存部门名称、楼层号、年度预算等信息。这些都可以通过使用符合SQL-92标准的SQL语句创建数据库表来完成。表中的属性都是SQL-92标准中的标准数据类型,所以称为"简单数据"。在系统的运行中,可能需要进行如下的查询:查询1980年以后开始工作的、工资超过4万元的职工的姓名;在同一层楼工作的职工的姓名;市场部职工的平均工资。查询要求可能很复杂,但是用SQL语句很容易把这些查询表达出来。 满足这一类应用需求的是成熟的关系数据库技术。

对于查询语言,国际标准组织相继推出了SQL-86、SQL-89和SQL-92标准。为了方便数据库应用系统的开发,数据库厂商开发了各种客户工具,除了可以将SQL语句嵌入第三代语言(如C,COBOL等),还提供4GL(第四代)语言,使得用户能够以交互的方式创建用于录入和显示信息的Form,并通过控制流逻辑建立Form间的顺序关系。另外,还有一些报表书写工具、数据库设计工具、性能监视器可供使用。 与上面所讲到的第一类应用相比,这一类应用在性能上也有了更高的要求。作为管理信息系统,首先提出的就是对并发的要求:多用户并发查询、并发更新、相互冲突的并发更新的解决等。故障恢复能力也是一条重要的性能标准,需要在磁盘或操作系统发生故障时不丢失用户的数据,不出现数据不一致错误。另外,还要求有事务的概念,保证事务的原子性、一致性、孤立性和持久性。关系数据库管理系统(RDBMS)对于事务管理,并发控制,故障恢复等都提供了有力的支持。

而且,由于管理信息系统所管理的是企业进行商务活动所必需的重要的信息资源,因此,对数据的安全性的要求也是很高的。RDBMS的地址空间与客户应用通常是分开的,各有自己的用户标识,只有RDBMS对构成数据库的数据文件有实际的读写能力,用户对数据库的增删改查操作都是通过RDBMS来实现的。这种结构,再加上RDBMS的权限控制机制,提供了对于数据安全性的可靠保障。 目前这一类应用在所有的数据库应用中占的比例仍然最大,关系数据库也是当今的一个商业热点,主要的关系数据库厂商(如 Informix, Oracle, Sybase等)不断地致力于关系数据库产品的发展和完善,因此,目前的关系数据库管理软件能够很好地满足上述这类应用的需求。

3.复杂数据,简单查询———面向对象数据库系统

另一种类型的应用的特点是复杂数据,简单查询。一个典型的例子就是公司办公室规划。在某些公司中采用的是"开阔楼层"策略,即所有的雇员都没有办公室,大家公用一个大厅,每个人被安排在一个"立方体"中,这些"立方体"是以"隔断"来分割的。在这样的公司中,雇员的调动和离职引起部门的膨胀或收缩。这样,在过了一段时间之后,雇员们的物理位置就显得不尽合理了,这时就需要对空间进行全局性的重新排列。本例的目标就在于对空余空间进行"垃圾回收",同时对雇员的位置进行重新排列。 在本例中,需要存储有关雇员的信息,如姓名、所占用的空间、邻接关系等,以及有关楼层的信息,如楼层号和可使用的面积(即建筑面积减去洗手间,楼梯等辅助设施之后的面积)。在这里,仍然可以用SQL语句创建数据库表,但是,表中的一些属性不再是符合SQL标准的简单数据了。例如,雇员所占用的空间是多边形的,邻接关系是雇员集合,等。而应用程序是这样实现的:读取所有的雇员信息;读取所有的楼层信息;建立某种虚存结构存储这些信息;在虚存结构上进行周游,对雇员的位置进行重新分配;最后重写雇员信息,记录分配结果。

 

大家可以看到,在这里,操作包括两个读过程,一个计算过程和一个写过程,而没有查询过程,这与前面提到的正文编辑是非常相似的。所不同的就是这一应用中的数据是相当复杂的。 本例代表了大多数复杂数据,简单查询的应用的特性。对于这类应用,符合SQL标准的关系数据库显然是不适用的,而使用传统的文件系统又将带来很大的麻烦,需要人工地读入雇员和楼层的信息,将数据从磁盘格式转换为内存格式;邻接信息在磁盘上可能是一个雇员的唯一标识,在装入信息时需要转换成虚指针,而这些虚指针是依赖于装入位置的,在以后的执行中不能重用;在将计算结果写出时,还要进行同样复杂的转换。在这种操作上浪费程序员的时间和精力是不值得的,最好能够有一种语言支持复杂对象的持久存储。 本类应用与前两类应用最主要的不同在于增加了复杂数据,而与第二类应用相比,它又几乎没有查询要求,从面向对象语言上发展起来的面向对象数据库系统(OODB)是这类应用的最佳选择。使用了持久变量,对象的装入和转换过程就可以完全交给语言支持系统去解决,应用程序代码也就可以大大简化了。由于复杂数据的持久存储,必然会引起速度的下降,性能的降低,这类语言的设计者为了保持运行速度,常常不得不放弃安全性方面的考虑。 目前,市场上已经推出了Gemstone、Objectivity、 Objectstore等若干个OODBS产品,满足这一类应用的要求。然而,这些产品在坚固性,可伸缩性,客户/服务器结构,应用开发工具等许多方面不如RDBMS产品。目前的应用领域也比较局限。

 

4.复杂数据,复杂查询———对象—关系数据库系统

随着计算机工业的发展和数据库技术的普及,数据库技术被越来越多的领域所关注和采用,一些以前认为不必或不适合于用数据库技术实现的领域纷纷探讨采用数据库技术的问题。于是,存储简单数据,在其上进行复杂查询的关系数据库系统,以及存储复杂数据,而不易进行查询的面向对象数据库系统,都不再能够满足应用的进一步的需要。

下面就是一个典型的例子。 加州水资源管理局(DWR)需要对全州的各种水道进行管理。该局的资料库中保存了50万张幻灯片,每天需要对它们进行多次存取查询操作,一般是按照内容进行查询的。例如:查找日落时的旧金山湾的幻灯片;查找低水位时的圣巴巴拉水库的幻灯片;查找美洲河岸边一种濒危水禽的幻灯片,等等。按照内容对幻灯片进行查找是很困难的。解决方案之一是按照预先定义的概念集建立索引,但是这样做价格昂贵,而且,客户所关心的概念随时间不断发生变化,新的关心焦点可能根本就不在建立索引所依据的概念集中,也就无从查找了。另一个解决方案是按照关键词对幻灯片的标题进行查找,但是实践证明此方法并不有效,因为许多感兴趣的概念并不出现在标题中。

于是,DWR计划将全部的幻灯片扫描成数据形式,建立数据库系统加以管理。在这里,就需要数据库系统能够支持对幻灯片的分类,支持对图像数据的存储和理解,支持客户的即席查询等功能。 首先就是对查询语言提出了更高的要求,至少需要允许用户自定义数据类型,并自定义这些数据类型上的函数和操作。第一个具有这样的能力的SQL标准是正在制定中的SQL3标准。

由于输入和输出都有可能是用户自定义的数据结构的数据(例如地图,坐标,图像等),因此在客户工具方面,原有的支持关系数据库系统的工具在新的应用面前也显得有些无能为力了。这样的应用,强烈要求可视化系统与数据库管理系统集成在一起,为用户提供"pan andzoom"的界面。 对于上例中的查询,例如找日落时旧金山湾的幻灯片,在性能方面也有所要求。在这样的环境中,要提高系统的运行效率,需要各种优化策略。

 

例如:

(1)执行次序的优化。

在查询语句的where子句中有定义在复杂数据类型上的函数或过程时,应将其放在所有并列的where子句的最后执行。

(2)预计算。

当很多查询都应用到某一个定义于复杂数据类型上的函数或过程时,可以在系统空闲时预先对这些函数或过程进行计算,并存储计算结果,以备查询时直接取用。

(3)空间存取方法。传统的B-树索引是适用于一维查询的,在多维查询中就无能为力了。对于空间数据的存取,需要采用栅格文件、R-树、K-D-B树等形式来存储数据。DBMS要处理这类查询,也需要有特定于对象的存取方法。 对象-关系数据库(ORDB)是满足这类应用需求的数据库系统。正如它的名字所指出的,它是关系世界的SQL和对象世界的模型基元的结合。它具有面向对象的特性,支持用户定义自己的抽象数据类型,以及由基类组合成复杂的组合类型的能力,从而支持了复杂数据。它支持SQL 语言,遵从正在制定中的SQL3标准,对复杂的SQL3查询进行了基于上述几种策略的查询优化,从而支持了复杂查询。ORDBMS产品往往还提供非传统的工具集,以利于这类应用的开发。 目前,已经有几家厂商推出了具有对象-关系数据库特征的产品。如:Illustra、UniSQL、Omniscience等。特别值得一提的是,Informix公司收购Illustra,推出Informix Universal Server,将对象-关系的Illustra的可扩充性与关系的Informix的动态可伸缩体系结构相结合,使得Informix Universal Server成为ORDBMS的一个有代表性的产品。 从上面所谈到的四种类型的应用来看,不同类型的应用适用的数据管理软件不同。对于简单数据简单查询的正文处理需求,传统的文件系统就能很好地解决;符合SQL标准的关系数据库系统经过多年的发展和完善,能够很好地满足简单数据复杂查询的商务数据处理应用的需求;对于复杂数据简单查询的应用,关系数据库系统就不再适合了,面向对象数据库系统则满足这种类型的应用的需要;而对于数据和查询的复杂程度都很高的应用,就需要采用对象-关系数据库系统了。

三 对象-关系数据库是发展的大趋势

就目前的DBMS市场来看,据统计RDBMS市场约为$80亿/年,而OODBMS市场不到RDBMS市场的1%。有人预计:十年后,RDBMS市场与OODBMS市场的比率仍会如此;而ORDBMS市场将会是RDBMS市场的1.5倍。不管这个预计是否准确,但可以肯定,ORDBMS将获得极大发展,迅速占领市场,形成一个大浪潮。

我们认为:由于RDBMS适应了大量商务数据处理的需要,在今后的一段时期内,仍能占有相当广泛的市场。而由于下述两个方面应用的需求ORDBMS,将促使它迅速发展,很快获得与RDBMS具有相当规模的市场。 一方面的应用需求是新的多媒体应用的计算机化。而ORDBMS很好地适应了这一应用需求。应用的发展正以惊人的速度将复杂数据计算机化。据估计,现在世界上85%的有用信息还不是电子形式的,其中大多是多媒体信息,将这些信息变成电子形式,由计算机进行管理,这将给ORDBMS带来巨大的市场。例如,人们正在以难以置信的速度将信息放入World WideWeb(WWW,或Web),即利用Web作为传输机制发布信息内容,提供即席查询,其信息内容一般是多媒体对象。

每个Web节点都有一个信息的管理和存取问题。ORDBMS为此提供了很好的手段,再一个例子是数字胶片。

有人估计,在今后十年中,传统的胶片作为数据的存储媒体可能会消失。像X-光系统、超声波系统、甚至家庭照相,均采用数字相机进行照相。把产生的数字图像存入计算机中,提供浏览、查询等功能,这些应用具有数以千万计的潜在用户,也为ORDBMS带来广阔的市场。 另一方面的应用需求是:传统的商务数据处理应用深入发展,基于复杂数据的决策支持查询日益增长,ORDBMS为这些应用提供了很好的解决方案。例如,在一家保险公司里,对机动车险有客户数据库和理赔数据库,作为传统的商务数据处理应用,这些数据库均在RDBMS上实现。

随着应用的深化,为了提供更好的决策支持查询、保险公司想把每次交通事故的现场照片、警方报告、损坏的汽车的图片、事故现场的坐标等信息存入计算机,保险公司的决策者们就可以通过该应用系统找出该城市中最危险(即发生交通事故频率最高)的若干个交叉路口(或地段);进一步可通过系统列出住在这些交叉路口(或地段)附近(例如1公里内)的客户名单;保险公司的决策者们可以决定对这些客户增收保费。

要支持这样的应用,显然ORDBMS比RDBMS具有极大的优势。类似这种传统应用的深入发展,会大大扩展ORDBMS的市场规模。 上述两方面的应用需求,可望使ORDBMS市场迅速达到RDBMS市场的规模。DBMS市场重点将向ORDBMS转移,这是一个大趋势。