面向对象数据库

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该数据对象 有无显式封锁与之冲突 所有上级结点 检查本事务的显式封锁是否与该数据对象上的隐 式封锁冲突:(由上级结点封锁造成的) 所有下级结点 看上面的显式封锁是否与本事务的隐式封锁 ( 加到下级结点的封锁)冲突。
24
意向锁(intention lock)
例:事务T对类C 加X锁,系统必须检查其所有超类 结点有无冲突、所有子类有无冲突,如果有冲突 ,则T等待。
引进意向锁目的
– 提高对数据对象加锁时系统的检查效率
引入意向锁,在某对象实例上加S或X锁前,先在其 祖先结点上加意向锁 ,事务T对类C请求 加X锁时, 只要检查该类上的意向锁即可。
25
意向锁

什么是意向锁 对任一结点加基本锁,必须先对它的上层结 点加意向锁
如果对一个结点加意向锁,则说明该结点的 下层结点正在被加锁
例而仅更新少数实例的情况。 否则,若仅加IX锁,对只
需读操作的那些实例为防止其它事务写都要加 S锁,增加 了锁的开销。
29
共享锁(S): 加S锁表示该事务读类中实例。
排它锁(X):该事务要修改类中的实例,请
求X锁。
30
锁 类 型 的 相容性 矩阵 S S Y X N IS IX Y N SIX N
18
8.4
面向对象数据库系统的查询(续)
OODB 语言标准,大多采用了扩充 SQL 语言的方法,
称为OSQL。
例: 检索作者为严亮的“数据库原理”书的出版社名。
SELECT b. published_by.publi_name
FROM b IN book
WHERE b.book_name = “数据库原理”
35
8.6.1 ORION的数据模型 ORION支持面向对象的核心概念: 对象、类、消息、方法。 ORION采用多重继承,一个类可以有多个超类。 解决同名冲突的方法: (1) 类与超类间的同名冲突按子类优先处理; (2) 多个超类间的同名冲突,按说明超类的先后取 第一个超类中的定义; (3) 提供显式方法: 从多个冲突的实例变量或方法 中继承一个;继承多个,在类定义中重新命名。
由识别他们的应用程序解释执行;
(4)查询实现复杂,连接优化降低了存取效率。
下下
3
OODB vs RDB
OODBMS
Original
Stored
Recovered
RDBMS Original Recovered
Stored
4
89年1月,在美国ANSI /X3/SPARC的数据库系统研究 组(DBSSG)下成立了面向对象数据库任务组(OODBTG), 专门对对象数据管理的标准化进行了研究。90年高级 DBMS功能委员会发表了《第三代数据库系统宣言》的文 章,文章中提出了第三代DBMS应具有的基本特征: (1)支持面向对象的数据模型,支持复杂数据类型; (2)具有第二代数据库系统的优点,即高效、安全、方便
32
• 例:
已知学校人员的类层次结构,若事务T要修改
李伟峰教授的属性值,则不同层次的加锁顺序和锁类型。 (1) 给类人加IX锁, (2) 给类教职工加IX锁, (3) 给类教师加IX锁, (4) 给类教授加IX锁, (5) 给对象李伟峰加X锁。 解锁的顺序:李伟峰、教授、教师、教职工、人。 若要查询其他教授的信息,则对类教授改加SIX锁其 它锁不变。
33
ORACLE的锁:
(1)RS 行共享锁 (2)RX 行排它锁 可以上SRX、RS、RX、S锁 可以上RS、RX锁 LOCK TABLE <表名>IN ROW SHARE MODE LOCK TABLE <表名>IN ROW EXCLUSIVE MODE
(3) S 共享表锁
可以上RS、S锁
可以上RS锁
LOCK TABLE <表名>IN SHARE MODE (4)SRX 共享行排它表锁 (5)X 排它表锁 EXCLUSIVE MODE
34
LOCK TABLE <表名>IN SHARE ROW EXCLUSIVE MODE
LOCK TABLE <表名> IN
8.6 ORION的系统结构
消息处理子系统 对象子系统 存储子系统 事务管理子系统
20
8.5 面向对象数据库系统的并发控制
多粒度锁,锁的粒度有:
RDBS中的锁粒度:
逻辑单元(属性、元组、表、数据库),
物理单元(数据页、索引页、数据块)。
OODBMS中锁的粒度:
数据库、类、对象、属性、物理页等。
21
多粒度封锁
允许类层次中的每个结点单独加锁 对一个结点加锁,其下层结点也被加以同样类 型的隐式锁。
X
SIX S IX
X
IS
N
Y
N
N
N
Y
N
Y
N
Y
IX N
SIX N
N
N
Y
Y
Y
N
N
N
IS
锁强度的关系
31
在OODBS中多粒度加锁的规则:
(1). 若事务对类层次中的某个粒度上加 S锁,则在其所
有祖先上都要加IS锁。
(2). 若事务对类层次中的某个粒度上加X锁,在该粒度 的所有祖先粒度上要加IX锁或SIX锁。 (3). 若事务已获得对一个类的某个锁,则该类的所有子 孙也隐含获得同样的锁。 (4). 加锁从类层次的根开始依此往下进行直到事务申请 锁的那个粒度,而解锁时的顺序则是由下而上的。
若在auth_name上建立book的嵌套属性索引,可 找到某个作者的所有书,以加快查找速度。
下下17
定义图书类:
class book{ book_no: string; book_name: string; written_by: author; publisher_by: publisher; date_of_publation: date; new(); …… }; class author{ …… }; class publisher{ …… };
AND b. written_by.auth_name = “严亮”;
19
8.5 面向对象数据库系统的并发控制
在OODBS中的更新处理:
(1) 当一个事务访问某个类的实例时其它事务不能对这
个类的任何超类进行修改。
(2) 一个事务在查询计算时其它事务也不能修改该类的
所有子类。 查询一个类时要对该类和所有子类进行评估。 在 OODBMS 中需要提供更复杂的锁机制,需要锁更多的 语义信息。
(1)消息处理子系统。 负责处理发给 页缓冲管理 磁盘段管理 对象的所有消息; (2) 对象子系统。 对象的存取操作、版本管理、查询优化、多媒体信息管理; (3) 事务管理子系统。 提供并发控制和恢复机制; (4) 存储子系统。 该子系统包括页缓冲区管理和磁盘管理二个子系统 ,负责存储在磁盘上对象的存取。
第八章
面向对象数据库
1
本章主要内容: 面向对象数据模型 面向对象数据库的查询 面向对象数据库的并发控制 面向对象数据库管理系统 对象—关系数据库系统
2
8.1 新应用的需求 和传统数据库的局限性
关系数据库系统的不足:
(1)关系模型结构简单,不能很好模拟复杂对象 (2)数据类型简单,没有定义抽象数据类型的能力 (3)结构与行为完全分离,使数据库中的信息仅能
意向排它锁(IX):
在类上加IX锁表示事务可能对类中实例显式请求X或S锁。
28
共享意向排它锁(SIX)
SIX=S+IX,在类上加SIX锁表示对类中所有实例都隐
式地加了S锁。表示该事务要读类中实例,还可能对一些
实例请求 X 锁。因此,仅允许其它事务读但不允许更新
类中的实例。
SIX锁的引入是必要的。合适于需要查询类中的大量实

同一操作有不同的实现,取决于具体对象。如“+”法
滞后联编
对对象操作的编译推迟到运行时实现,称滞后联编。
例:在同一个超类的不同子类上执行同一个操作。 如同一个显示操作可以显示不同的数据类型: 人的信息、图象
对象的嵌套 复合类层次结构
书:书号、书名、作者、出版社、出版日期。 作者:作者名、地址、电话
子类继承超类的属性和方法。 单继承和多继承
解决同名冲突的方法:
– 子类与超类间的同名冲突按子类优先处理;
– 多个超类间的同名冲突,按说明超类的先后取第一 个超类中的定义 或 规定继承的超类; – 提供显式方法: 从多个冲突的实例变量或方法中继 承一个;继承多个,在类定义中重新命名。
13
多态性

OO模型的核心概念
对象
属性集合 方法集合
消息集合
收和响应 简单对象、
描述对象的状态、组成和特征 描述对象的行为特征 是对象向外提供的界面,由对象接 复杂对象
9
对象标识
每个对象都有一个内部标识符OID,OID在整个
系统中 是唯一的,一旦生成就不能改变。 OID的表示
值标识
7
面相对象数据库系统在许多应用中取得了进展:
(1)计算机辅助设计与制造(CAD/CAM); (2)计算机集成制造(CIM); (3)计算机辅助软件工程(CASE); (4)地理信息系统(GIS); (5)企业资源规划(ERP); (6)能源管理系统(EMS)。
8
8.3

面向对象数据模型
OO数据模型 用面向对象的观点描述现实世界对象的逻辑组织、 对象之间的限制、联系的模型称为OO数据模型。
出版社:出版社名、地址、负责人
14
8.4
面向对象数据库系统的查询
一般提供:
对单一类中对象的查询
以类为根的类层次上的查询。
二类索引:


类层次索引
嵌套属性索引
15
8.4

面向对象数据库系统的查询
建立在类 C 的属性A 上的一个类层次 在单一类
类层次索引
索引,是以该类为根的类层次中所有类在属性A 上的单一 索引,属性A称为索引属性,类C称为索引类。 上建立的索引称为单一索引。
26
常用意向锁


意向共享锁(Intent Share Lock,简称IS锁)
意向排它锁(Intent Exclusive Lock,简称IX锁)

共享意向排它锁(Share Intent Exclusive Lock,简
称SIX锁)
27
意向锁

意向锁:
IS、IX、SIX
意向共享锁(IS): 对一个数据对象加IS锁,表示事务可能对类中的实例 显式请求S锁。
(3) 具有开放性,即支持数据库标准 (SQL)、网络协议、
适应多种软硬件平台 。
5
8.2
面向对象程序设计语言
面向对象程序设计的特点
支持模块化设计 以主体数据(对象)为中心,以数据上的操作作为界 面进行设计(结构化的方法:数据输入-处理-数据 输出) 软件复用
对象封装使程序员可以通过界面理解和操作对象 对象继承允许对象实现复用具有相同特征的其它对象代码
类层次
一组相关类形成类层次结构 子类、超类 子类和超类的关系体现了“is
A”的语义
11
类层次的例子
人 教职工 教师 助教 讲师 教授 行政人员 工人 学生 本科生 研究生
在职研究生
类层次 一组相关类形成类层次结构 子类、超类 子类和超类的关系体现了“is A”的语义
12
继承 子类和超类间具有继承关系

在多粒度封锁中一个数据对象可以两种方式封锁: 显式封锁和隐式封锁->
22
多粒度封锁

显式封锁 通过上锁命令(LOCK)直接加到数据对象 上的封锁; 隐式封锁 该数据对象没有独立加锁,是由于其上级结 点加锁而使该数据对象隐式加了锁。 隐式锁和显式锁的作用是一样的
23

对某个数据对象加锁 时系统检查的内容
由对象的属性组成对象标识
指针标识 指向物理存储位置的指针作为对象标识 代用品法(surrogate),与对象的内部属性无关。 <类标识,实例标识>
10
封装 每个对象都是其状态和行为的封装体。 类 具有相同特征对象的集合;对象为类中的实例。 类本身看作对象,称为类对象。
面向对象数据库模式是类的集合,形成类层次结构
Байду номын сангаас
软件维护
面向对象的软件开发,从分析、设计、实现和测试等阶段
都是基于对象的概念,在开发和维护阶段,软件系统的结 构都是一致的,易于维护。
6
面向对象程序设计方法在计算机多个领域产生深远影响
程序设计语言 人工智能 软件工程 信息系统设计 计算机硬件设计 数据库 面向对象数据库系统:ObjectStore、O2、Orion、 Versant、Gemstone、Itasca
教职工
教师 行政人员 工人 人
学生
本科生 研究生
教职工:职务、工资、参加工作时间
16

嵌套属性索引
在复合类层次的某个类的
属性上建立索引。这种索引是以索引类为根的类复
合层次中某个类的属性,该属性称为索引类的嵌套
属性。 书:书号、书名、作者、出版社、出版日期。 作者:作者名、地址、电话 出版社:出版社名、地址
相关文档
最新文档