八章面向对象数据库.ppt
文本预览下载声明
第八章 面向对象数据库 8.1 新应用的需求和传统数据库的局限性 OODB vs RDB 8.2 面向对象程序设计语言 面向对象程序设计的特点 支持模块化设计 以主体数据(对象)为中心,以数据上的操作作为界面进行设计(结构化的方法:数据输入-处理-数据输出) 软件复用 对象封装使程序员可以通过界面理解和操作对象 对象继承允许对象实现复用具有相同特征的其它对象代码 软件维护 面向对象的软件开发,从分析、设计、实现和测试等阶段都是基于对象的概念,在开发和维护阶段,软件系统的结构都是一致的,易于维护。 面向对象程序设计方法在计算机多个领域产生深远影响 程序设计语言 人工智能 软件工程 信息系统设计 计算机硬件设计 数据库 面向对象数据库系统:ObjectStore、O2、Orion、Versant、Gemstone、Itasca 8.3 面向对象数据模型 OO数据模型 用面向对象的观点描述现实世界对象的逻辑组织、对象之间的限制、联系的模型称为OO数据模型。 OO模型的核心概念 对象 属性集合 描述对象的状态、组成和特征 方法集合 描述对象的行为特征 消息集合 是对象向外提供的界面,由对象接收和响应 简单对象、 复杂对象 对象标识 每个对象都有一个内部标识符OID,OID在整个系统中 是唯一的,一旦生成就不能改变。 OID的表示 值标识 由对象的属性组成对象标识 指针标识 指向物理存储位置的指针作为对象标识 代用品法(surrogate),与对象的内部属性无关。 类标识,实例标识 封装 每个对象都是其状态和行为的封装体。 类 具有相同特征对象的集合;对象为类中的实例。 类本身看作对象,称为类对象。 面向对象数据库模式是类的集合,形成类层次结构 类层次 一组相关类形成类层次结构 子类、超类 子类和超类的关系体现了“is A”的语义 继承 子类和超类间具有继承关系 子类继承超类的属性和方法。 单继承和多继承 解决同名冲突的方法: 子类与超类间的同名冲突按子类优先处理; 多个超类间的同名冲突,按说明超类的先后取第一个超类中的定义 或 规定继承的超类; 提供显式方法: 从多个冲突的实例变量或方法中继承一个;继承多个,在类定义中重新命名。 多态性 同一操作有不同的实现,取决于具体对象。如“+”法 滞后联编 对对象操作的编译推迟到运行时实现,称滞后联编。 例:在同一个超类的不同子类上执行同一个操作。 如同一个显示操作可以显示不同的数据类型: 人的信息、图象 定义图书类: class book{ book_no: string; book_name: string; written_by: author; publisher_by: publisher; date_of_publation: date; new(); …… }; class author{ …… }; class publisher{ …… }; 多粒度封锁 允许类层次中的每个结点单独加锁 对一个结点加锁,其下层结点也被加以同样类型的隐式锁。 在多粒度封锁中一个数据对象可以两种方式封锁:显式封锁和隐式封锁- 多粒度封锁 显式封锁 通过上锁命令(LOCK)直接加到数据对象上的封锁; 隐式封锁 该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象隐式加了锁。 隐式锁和显式锁的作用是一样的 对某个数据对象加锁 时系统检查的内容 该数据对象 有无显式封锁与之冲突 所有上级结点 检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突:(由上级结点封锁造成的) 所有下级结点 看上面的显式封锁是否与本事务的隐式封锁( 加到下级结点的封锁)冲突。 意向锁(intention lock) 例:事务T对类C 加X锁,系统必须检查其所有超类结点有无冲突、所有子类有无冲突,如果有冲突,则T等待。 意向锁 什么是意向锁 对任一结点加基本锁,必须先对它的上层结点加意向锁 如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁 常用意向锁 意向共享锁(Intent Share Lock,简称IS锁) 意向排它锁(Intent Exclusive Lock,简称IX锁) 共享意向排它锁(Share Intent Exclusive Lock,简称SIX锁) 意向锁 意向锁: IS、IX、SIX 意向共享锁(IS): 对一个数据对象加IS锁,表示事务可能对类中的实例显式请求S锁。 意向排它锁(IX): 在类上加I
显示全部