第五部分
面向对象的数据库系统
参考书:
6,蔡希尧,陈平, 面向对象技术, 西安, 西安电子科技
大学出版社,1993年 11月 (第 6章)
2.冯玉林,黄涛,倪彬, 对象技术导论, 北京, 科学出版
社,1998年 3月 (第五章)
术语:数据库、数据库管理系统、数据库系统
一,引言
数据库技术的发展
网状
数据库
关系型
数据库
面向对象
的数据库
层次
数据库
从 文件系统
发展到 数据库
具备了:最小冗余、支持
共享、独立于应用、高效
的检索与更新操作等特点
基于网状
数据模型
基于层次
数据模型
基于关系
数据模型
基于面向对象
数据模型
为什么出现面向对象的数据库( OODB)?
数据库应用范围的扩大,数据类型更为复杂,如:
CAD应用 —— 二维、三维图形与图象
多媒体应用 —— 文本、图形、图象、声音、视频
复杂、嵌套的数据,超长、变长文本 等等
面向对象程序设计范型的推动
越来越多的应用系统采用面向对象的程序设计范型
传统的数据库不能有效地支持对象存储
面向对象的数据库系统
必须具备的两项特征 —— 蔡希尧
( 1)支持核心的面向对象数据模型(对象模型);
( 2)借助对传统数据库之语义的扩充或修改,使之与核
心的面向对象数据模型的语义一致,以支持传统数据库中
所有的数据库特征。
面向对象数据库管理系统的两种类型
1、在已有的面向对象编程语言基础上增加数据库功能
主要是增加对象的永久存储与检索、并发控制、等功能
和可恢复性、一致性(完整性)、可靠性措施
例如,GenStone,ORION,ObjectStore
2、在关系型数据库中增加对 OO范型的支持
主要是将数据模型扩充为对象数据模型,支持类的定义
,提供应用接口等
例如,O2,Iris,POSTGRES
前者侧重于语言,带有较多的语言色彩
后者侧重于数据库,较多地体现数据库的特征
二,对象模型
对象模型
在 OODB领域作为“面向对象的数据模型”的简称,有以
下特征:(蔡希尧)
对象 (包括操作、请求、消息、方法和状态)
联编(绑定)和多态
密封(封装)性
对象标识
类型和类
继承性和 代理
值得注意的对象:
联系和属性、字面对象、组合对象 /复杂对象、聚集
可扩充性
完整性
对象语言
值得注意的对象
联系(关联)在数据库中的实现
单向实现和双向实现
带有属性和操作的关联
属性的实现
在关系型数据库中,属性都是简单类型的
在 OODB中,属性的类型可以是构造类型,可以是类
字面对象
不需要显式生成的数据对象,如数、字符串等
组合对象(复杂对象)
以其它对象作为自己属性的对象
(相当于本课以往讲的整体 -部分结构中的整体对象)
聚集( aggregation)
以某种方式(例如集合、包、列表、元组、数组等)组织
在一起的一组对象的总称(不同于本课以往讲的聚合)
可扩充性
可扩充的数据库
允许数据库 模式 进行扩充和修改
对象模型的可扩充性
( 1)在系统建立之后允许继续定义新类
在已有类的基础上,通过继承扩充新类
( 2)允许对已有的类进行修改
如添加新的操作、属性、约束、操作的实现等
( 3)允许已有的对象实例获得新的类型
完整性约束
由用户在对象中定义一些检验数据一致性的规则(约束
条件),由系统保证。例如:
只允许向对象施加预先说明过的操作
对操作数和操作结果的类型加以约束
对属性值加以约束
对引用加以约束(例如被引用的对象必须存在)
对象语言( OL)
用于定义和操纵系统中的类和对象
相当于传统数据库中的数据定义语言( DDL)和
数据操纵语言( DML)
具有以下能力:
类的定义和操纵
例如类的创建、访问、修改、删除
操作(方法)的定义
操作接口的定义和操作的编程实现
支持封装,允许用不同的编程语言实现操作
对象的操纵
例如对象的创建、访问、修改、删除
计算完全的 对象语言
除了提供与数据库有关的功能之外,还能完成所
有的常规程序设计。
三,对象数据管理
对象数据管理( ODM) 指面向对象数据库中的数据管理。
相应的系统叫做 对象数据管理系统( ODM系统) 。
提供的功能或机制:
永久对象(持久对象)
并发控制
事务
分布处理
变动管理
安全性
可靠性
永久对象:可以超过程序运行的时间而长久存在的对象
暂态对象:生命期不超过程序运行时间的对象
OODB中的对象都是永久对象
但是相关的语言未必把所有的对象都定义为永久对象
编程语言(或数据库语言)表示对象永久性的策略
所有的对象都是永久对象
声明某些类所有的对象实例都是永久对象
声明某些对象实例是永久对象
通过显式的操作将对象永久化
按可达性规则
永久对象
并发控制机制
当多个进程并发地访问数据库中的对象时,需要一种机
制保证不发生冲突,这种机制称作并发控制机制。
例如:锁定
事务 (transaction)
一个原子的(不可分的)操作集合,以一个一致的数据
库状态为起点,要么全部完成,要么作废并恢复起点状
态。
ODM的并发控制和事务机制与传统的数据库没有本质不
同,只是它是针对对象的。
分布处理
ODM中可分布的实体包括:
对象、操作、类(模式)、
ODM系统功能、
ODM系统进程
不同的对象分布方案:
以对象为划分单元,分布到各点
将单个对象的实现分布到各点
将多个对象打包作为分布单位
透明性
非透明:查询时必须指出被查询对象的位置
透明:查询时不必指出被查询对象的位置
ODM系统功能的分布
每个结点实现全部 ODM功能
客户 /服务器结构,客户端和服务器端分布不同的功能
变动管理
某些系统需要记录和管理:
版本,对象的演化历史
配置,将若干对象组织成更高层的系统单位
依赖或演化,将变化传播到相关的对象,以保持一致性
元数据演化管理
元数据:类的定义(模式)、方法、继承性、约束、实
现、索引、定位、权限等方面的信息
由数据词典进行存储和管理
安全性
主要指保密措施
在 ODM系统中,安全性措施与对象标识、类、封装
性、继承性、完整性等概念结合在一起考虑。
可靠性
指系统的提供的服务正确、可靠
恢复,当用户进程,ODM系统、操作系统或硬件
出现故障时重新产生数据库的一个一致的状态。
容错,当系统发生软硬件错误时,自动地避免错误
造成的影响,使结果仍保持正确。通常是通过冗余
的软硬件资源实现的。
四,对象数据管理系统的特征
介绍对象数据管理系统通常所拥有的部件以及提供的功能
提供类库
存储大量可复用的类,实行有效的管理
支持信息建模
能够将应用系统模型和程序中的类映射到 OODB
用户角色支持
支持用户中不同角色的人员对 ODM系统的使或与管理
应用程序接口( API)
一个系统的应用程序接口,定义了它的应用程序使用该
系统功能时的语法和语义。
用户界面
针对 用户中 不同角色的角色,提供不同的用户界面。
五,OODBMS实例简介
1,GemStone
市场上第一个 OODBMS
1986年推出,1991年有 3个版本
将 Smalltalk与传统的 DBMS的存储管理功能相结合
带有明显的语言特征( Smalltalk+永久对象功能)
对数据和操作进行一体化的存储和管理
方法的实现代码也存储在数据库中
由 DBMS管理,可以动态地检索和执行
GemStone的
系统结构
网络软件
Windows环境
应用系统
网络软件
PC
客户机
Gem
Gem
C应用
Stone
VMS文件 I/O
数据库 数据库副本
VMS服务器
局域网
GemStone的数据描述与数据操纵语言( DDL/DML)
将数据描述语言和数据操纵语言一体化
是一种运行在数据库对象空间的 Smalltalk的变种语言
是计算完整的
去掉了 Smalltalk编程环境,
增加了事务控制、注册、授权、副本、用户预置文件
、索引控制等方面的类
类层次结构可扩充,可随时增加新类
GemStone的查询
带有浓厚的编程语言色彩,功能不很强
只允许在受限聚集上进行
受限聚集:受某种条件约束的元素集合,例如要求元素是同一
个类的对象实例(适应范围仍大于关系型中的集合)
DML中引入一种 selection block语法
表明挑选元素的规则,类似于 SQL中的 SELECT语法
通过建立索引提高查询效率
GemStone的 C语言接口
通过一组 C函数,建立 C程序和数据库之间的桥梁
使 C应用程序可以通过这些函数使用数据库的功能
实现数据表示方式的转换
C程序也可以使用 DDL/DML进行数据定义和操作
用户也可以向 DML加入自定义的函数
GemStone的 C++语言接口
提供 C++程序操纵 GemStone数据库的函数
类库中有常用的 C++类和相应的 GemStone类
可将用 C++定义的新类加入类库,
并生成与 GemStone类映射的代码
提供缓存
用一个散列表管理 C++对象在虚拟存储器中的位置
可以用两种指针引用对象
G指针 —— 对象标识
D指针 —— 在缓存中的地址
2,O2
法国几家公司和大学合作的产物,1990年推出
是一种新型的 OODBMS
既具有 DBMS的功能
持久性、磁盘管理、数据共享、查询语言等
又具有面向对象系统的功能
复杂对象、对象标识、类、继承、封装、重置、可扩充性
、完备性
含有用户界面生成工具和编程环境
支持多种编程语言
O2的系统结构
O2Engine
O2Tools
C C++ OC2 O2QueryO2Look
O2的对象模型与 O2C语言
O2将数据库中的实体分为 值 和 数据 两类
值由类型定义
原子类型:布尔、字符、整数、实数、串、字位
类型构造符,tuple(元组),list(列表),set(集合)
对象由类定义
类由一个 02类型和作用于其上的一组操作(方法)组成
对属性封装
但可通过 read表明允许读操作
支持多继承
支持方法和属性的重置
每个对象有唯一的对象标识,值没有
O2的永久性
以 name为前导而显式命名的对象或值称作永久性根
如果对象 A是对象 B的一个直接或间接的分量,则称从
A可达 B
从一个永久性根可达的所有对象都是永久的
O2的查询语言 —— O2Query
是一种类 SQL语言
对 SQL扩充了对复杂值和复杂对象的支持
既是 O2的子集,又可以独立运行以支持即席查询
还可以作为函数被 C或 C++调用
界面生成器 O2LookO2
是在 Motif和 X Window之上用 C++实现的
快速地生成图形用户界面
提供用于展示 O2对象和值的操纵功能
对大型、多媒体、复杂对象进行显示、编辑和浏览
图形化编程环境 O2Tools
支持用户
对数据模式进行浏览、编辑和查询,
对方法进行编辑、试和测试
提供了一些可简化编程的工具
与现在流行的可视化编程环境很相似,
但具有对数据库应用的支持
O2Engine
功能上分为三个层次
模式管理层
对象管理层
磁盘管理层
模式管理层:
完成类、方法、和全局变量的产生、检索、修改和删除
控制模式入口、执行继承语义、检查模式一致性
对象管理层:
实行对象管理(基于对象标识),执行消息传递,
管理结构化值和结构化操作,
实现对象可达性模型、废料收集、索引与聚集存储
磁盘管理层:(略)
O2的编程语言接口
符合编程语言标准,即 C或 C++标准
对其它语言有开放性,将提供一种与语言无关的对象模型
提供一种高级数据库语言,即 O2C
具有复用 C和 C++程序的能力
用 export to C++命令,将 O2中的类“出口”到 C++中
使 C++程序可以使用 O2的类
用 import from C++命令,将 C++的类“进口”到 O2
使 C++程序定义的类的实例永久化
面向对象数据库系统要点回顾
为什么出现面向对象的数据库( OODB)?
数据库应用范围的扩大,数据类型更为复杂,如:
面向对象程序设计范型的推动
面向对象的数据库系统的两项特征(蔡希尧)
( 1)支持核心的面向对象数据模型(对象模型);
( 2)支持传统数据库中所有的数据库特征。
面向对象数据库管理系统的两种类型
1、在已有的面向对象编程语言基础上增加数据库功能
2、在关系型数据库中增加对 OO范型的支持
数据模型
概念模型:面向应用,描述用户和设计者能够理解的信息
结构,例如 ER模型
逻辑模型:面向数据库管理系统,描述实体和联系在数据
库中的组织结构,例如,网状模型、层次模型、关系模型
面向对象的数据模型 —— 对象模型
对象模型 —— 两个含义:
( 1)在一种面向对象的方法或系统中,定义该所采用的对
象概念,规定对象应具备的要素,包括对象标识、内部组
成、相互关系、描述方式等。
( 2)在 OODB领域作为“面向对象的数据模型”的简称,
有以下特征:(蔡希尧)
对象 (包括操作、请求、消息、方法和状态)
联编(绑定)和多态
密封(封装)性
对象标识
类型和类
继承性和 代理
值得注意的对象:
联系和属性、字面对象、组合对象 /复杂对象、聚集
可扩充性
完整性
对象语言
对象数据管理( ODM)
指面向对象数据库中的数据管理。
相应的系统叫做对象数据管理系统( ODM系统) 。
提供的功能或机制:
永久对象(持久对象)
并发控制
事务
分布处理
变动管理
安全性
可靠性
提供类库
存储大量可复用的类,实行有效的管理
支持信息建模
能够将应用系统模型和程序中的类映射到 OODB
用户角色支持
支持用户中不同角色的人员对 ODM系统的使或与管理
应用程序接口( API)
一个系统的应用程序接口,定义了它的应用程序使用该
系统功能时的语法和语义。
用户界面
针对 用户中 不同角色的角色,提供不同的用户界面。
对象数据管理系统的特征
学习两个实际的 OODBMS
1,GemStone
2,O2