面向对象数据库系统是一种持久可用并且可以共享对象库的存储器和管理器,而对象库是面向对象模型所定义对象的集合体。由于是基于面向对象的思想,所以这类数据库系统也有封装、类、类层次、消息等概念。
面向对象型数据库系统在存储和读取数据时,采用面向对象的形式,即操作的数据为对象。这类数据库系统较好的完成了面向对象系统的数据持久化工作。然而,由于缺少较好的查询语句,这些系统一直没有得到很广泛的运用,在市场上只占相当小的份额。
面向对象数据库主要用于存储彼此没有内在联系的数据对象。面向对象的数据库系统使人们可以使用某种程序设计语言去直接访问这种程序设计语言所定义的数据对象,还使人们可以在无需进行格式转换的情况下把这类对象存储在数据库里,这有助于保持有关对象的原来格式。这点是在关系型数据库系统里无法做到的,关系型数据库系统里的数据只能被存放在结构化的关系表里。
在工程设计系统中,面向对象数据库系统被广泛的应用。工程设计本身是在不断变化的,不断的纠正错误或者修改设计会使设计更加的完美,这是工程设计系统的特征之一,
而当设计者对问题及其解决方案有更深刻的理解的情况下,设计者也会选择修改数据库模型。如果采用关系型数据库,意味着随时都要改变表结构。
经过多年的开发、研究和应用,面向对象数据库当前的状况是:
3
南京邮电大学硕士研究生学位第二章数据库系统的立体视图(1)对面向对象数据库的核心概念逐步取得了共识,标准化的工作也已经逐步展开;
(2)随着核心技术问题的得到逐步解决,外围应用工具正在开发,面向对象数据库系统正在走向试用阶段;
(3)担忧仍然存在,主要针对性能和形式化理论。
由此可以看出,面向对象数据库系统在实际应用中仍然面临着各种新技术问题的挑战。
2.1.2 关系型数据库
关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
关系型数据库基于表的特性,大大方便了用户使用查询语言(SQL)进行查询、插入、删除和修改等操作。关系型数据库是建立在严格的数学理论基础上的,它采用简单的表结构,使许多厂商较容易地开发出产品来。
关系型数据库系统总结起来有如下优点:(1)应用灵活性且易于建库:一方面,从软件设计的长远角度来分析,关系数据库的
编程接口对于用户来说是易于实现的。当前,由于大多数的数据库管理系统使用标准话查询语言 SQL,因此用户能够在不同的产品之间存储和提取信息,使用的方法几乎没有差别。同时,外围应用软件采用相似的程序访问机制与关系型数据库接口,并且提供大量标准的
数据存取方式。
(2)结构简单:另一方面,从数据建模的角度来分析,关系数据库拥有相当简洁清晰的结构,因此可为用户或程序提供多个复杂的视图,这样,数据库的设计和规范化过程将变得简单易行和易于理解。由于关系数据库多方面的功能,已经实现了支持大量的数据库应用。
相应的,关系型数据库也存在先天性的缺点:(1)数据类型单一。这是由关系型数据库的前提决定的。从理论上看,关系数据库模
型不能直接支持复杂的数据类型,这是由于关系型数据库的大前提——第一范式的要求,所有的数据必须转换成简单的类型,如整数、实数、双精度数和字符串。因此,目前大多数的RDBMS 产品已成熟的应用于商业系统,因为这些领域不要求很高和很复杂的数据模型。从下一代应用软件的发展方向来看,关系型数据库的最大缺陷是,缺乏针对不同应用构造与之相适应的数据类型。这种能力的缺乏将会导致有害的结果:比如,大多数数据库
4
南京邮电大学硕士研究生学位第二章数据库系统的立体视图管理系统采用简单的数据类型,但是在重构复杂数据的过程中将会出现性能问题;数据库开发过程中额外添加的复杂性;数据库管理系统和编程语言在数据类型方面的不一致。对于工程应用来说,这样的缺陷尤为明显,由于不能够支持复杂的数据类型,其典型结果就是需要额外的工作来分解复杂数据的结构,这些数据被分解之后,其结构不能直接表示为现成的应用数据,而且基本成分重构的工作也非常繁琐。
(2)复杂信息查询繁琐。关系型数据库系统的优点是用SQL 语言为数据查询提供很好的方法,但是在查询复杂信息时过程将会十分繁琐,这时优点会变成它的不足。除此之外,通常情况下,在工程应用中数据规范化的过程都会产生大量的简单数据表,这时查询操作需要处理大量的表和繁琐的码连接运算。除非这些查询以固定的例行程序方式提供,否则用户就必须对 SQL 非常熟悉,以便适当的浏览数据库,查出所需的信息。然而,一旦查询方式按固定例行程序进行,用户最终就要进行应用软件的常规维护。但应用或人机接口软件的变化有可能要求经常修改例行的查询,数据库结构的变化也可能导致例行查询程序以及应用或人机接口软件的失效。在出现以上各类情况时,关系型数据库系统的维护开销将会变的十分巨大,而关系型数据库无法提供足够的构造能力及性能,因此在设计较为复杂的数据库系统过程中,无法将工程类问题直接分解成简单的表。同时,由于缺少指针直接存取方式,所以查询相关的信息时需要花费更多的时间。
(3)缺乏环境应变能力。在设计不同的程序时,经常发生需要系统环境不断更换,例如前文所提到的工业设计系统,其关系系统成本高且修改困难。关系型数据库管理系统不容易支持模式的演变,而这种功能在工程应用的实现中是十分重要的。此外,如果关系型数据库和编程语言提供了不一致的数据类型,那么在环境转换的过程中将会需要增加多至
30%的额外代码。
2.1.3 对象关系型数据库
是将关系型数据库技术引入面向对象技术,融合在一起之后就成为对象关系型数据库。对象关系型数据库既支持 SQL 存取和查询功能,并且增加了基本数据类型的数量,增加了
对复杂对象的继承性并实现对规则系统的支持等等,因此在对复杂数据类型和复杂查询操作过程中,关系对象型数据更加适合。虽然在存储数据时,它成为对象型数据库的一种可
替代方案,但它并未能够从根本上解决问题。归纳起来,目前的关系型数据库大多都支持
面向对象的概念,在 MySQL 中,也引入了 OpenGIS [7]
的支持。
5
南京邮电大学硕士研究生学位第二章数据库系统的立体视图2.2 关系型数据库系统总体架构
RDBMS 是存储和获取数据的功能集合,它支持大量的用户同时读或者写同一份数据。因此 DBMS 需要合理的处理并发情况。只有采用了缓冲技术的 DBMS 才能提供大并发量下
的快速访问。并发访问要求数据库系统的内存管理系统采用类似于操作系统的虚拟内存管理方式和算法。在网络方面,DBMS 的网络协议被设计成能够高速的解析客户端的查询。
DBMS 是一个庞大的系统软件,其众多的子模块相互协作并实现 DBMS 繁多且复杂的功能。不同的 DBMS 功能也不尽相同。大型系统功能完备,小型系统则常常对系统功能做了剪裁。DBMS 主要的功能模块如图 2-1 所示。
图 2-1 DBMS 的基本功能模块
2.2.1 客户端应用程序
大部分 DBMS 的客户端应用程序作为一个独立的可执行文件,通过网络连接到 DBMS,而有些客户端通过接口连接到 DBMS,此时数据库系统成为系统的一部分。在这种情况下,
则称为嵌入式数据库系统。
在通过通信方式连接 DBMS 的系统中,大部分采用通用的连接器,例如 ODBC [8]
。
MySQL 还支持 JDBC[9]和微软的.NET 方式连接。
不管采用何种连接方式,客户端应用程序都是要发送命令到数据库系统且获得命令的执行结果集。如图 2-2 所示,客户端通过 ODBC 连接器发送命令,而 ODBC 驱动程序通过

