第三章 数据库管理系统结构
DESCRIPTION
第三章 数据库管理系统结构. DBMS 在整个数据库系统中的地位和作用 RDBMS 的系统体系结构举例 OODBMS 的系统结构举例 客户 / 服务器结构中 DBMS 的功能划分 对象关系型数据库管理系统的两层体系结构. 数据库系统的层次结构. 数据库系统的三层结构模型: 外部层(单个用户的视图): 各个用户所看到的数据库 概念层(全体用户的公共视图): - PowerPoint PPT PresentationTRANSCRIPT
第三章 数据库管理系统结构
•DBMS 在整个数据库系统中的地位和作用•RDBMS 的系统体系结构举例•OODBMS 的系统结构举例•客户 / 服务器结构中 DBMS 的功能划分•对象关系型数据库管理系统的两层体系结构
数据库系统的层次结构
数据库系统的三层结构模型: 外部层(单个用户的视图): 各个用户所看到的数据库 概念层(全体用户的公共视图): 是数据库中所有信息的抽象表示 内部层(存贮视图): 与数据库的实际存贮密切相关
外部层 (PL/I)
DCL 1 EMPP, 2 EMP# CHAR (6), 2 SAL FIXED BIN (31);
外部层 (COBOL)
01 EMPC. 02 NROEMP PIC X(6). 02 NRODEP PIC X(4).
概念层EMPLOYEEEMPLOYEE_NO CARACTER (6)DEPT_NO CARACTER (4)SALARY NUMERIC (5)
内部层 EMP_ALMCD LONGTH=18 PREFIJO TYPE=BYPE(6),OFFSET=0 EMP TYPE=BYTE(6),OFFSET=6, INDICE DEPT TYPE=BYTE(4),OFFSET=12 PAY TYPE=FULLWORD,OFFSET=16
A1用户 A2用户 B1用户 B2用户 B3用户
宿主语言+DSL
宿主语言+DSL
宿主语言+DSL
宿主语言+DSL
宿主语言+DSL
A外部视图 B外部视图
A外部 、概念对应 B外部 、概念对应
概念视图
概念、内部对应
物理数据库
数据库管理( DBMS)系统
DBMS 的目标
用户界面友好 : 可靠性、简单性、灵活性和立即反馈功能完备 : DBMS 主要功能包括数据库定义、数据库数据存取、数据库运行管理、数据库组织和存储管理、数据库建立和维护等等。DBMS 运行效率 : 体系结构、数据结构和算法,保证 DBMS 运行的高效率开放性 : 程序员能够在 DBMS 中加入一些新的工具模块
DBMS 的基本功能( 2 )
系统初启程序 安全性控制程序 数据库运行管理 完整性检查程序 并发控制程序 事务管理程序 运行日志管理程序
文件读写与数据组织 数据组织、 存取路径(索引)管理程序 存储、管理 缓冲区管理程序
DBMS 与操作系统
DBMS 可以用不同的方法利用操作系统的基本功能来实现 DBMS 。一般有下面三类方法:
1. 共享模块法在面向过程的操作系统环境下, DBMS 的基本成分通常设计成可重入代码。在运行时, DBMS 模块被用户进程按子程序调用,借助于操作系统的调度来完成对用户程序的并行服务。从用户角度看,每个应用程序都对应一个虚拟 DBMS (或者说对应一个虚拟的 DBMS 进程)
2. 分离进程法在面向信息的操作系统环境下,用户进程对数据库的操作通过原语请求 DBMS的服务 . DBMS 与用户进程的关系类似一个销售员与众多顾客的情形,任何用户进程都是在和同一个 DBMS 进程打交道。DBMS 进程完成一个用户进程的请求后,把结果作为消息发回给用户,然后执行下一个请求 .
RDBMS 的系统体系结构举例J.D.Ullman 对 DBMS 一般结构的描述
用户查询应用程序 数据库模式
查询语言处理器
DDL 编译
安全管理 数据管理器 内部模式
文件管理并发控制
物理数据库
OODBMS 的系统结构举例 (ORION)
美国MCC 公司研制的一个全新的面向对象数据库管理系统原型ORION 系统的三个不同原型是: ORION- 1 运行在一个单机上;ORION- 1SX 是一个客户 / 服务器系统; ORION- 2 是一个分布式系统。我们这里主要讨论 ORION- 1SX 的结构。 消息处理器处理系统中所有消息; 对象子系统处理子系统中对象的所有存取操作,版本管理和多介质信息管理; 事务子系统提供系统的并发控制与恢复机制; 存储子系统包括页缓冲区管理和磁盘段管理,处理对存储在磁盘上的对象的存取要求。对象子系统和消息处理器位于客户机上;而通讯子系统和事务子系统及存储子系统则分散在客户机和服务器上
对象子系统如图所示,实现了查询、模式演变、版本控制、长数据管理、并支持复合对象。 对象子系统的每个模块都驻留在客户机上 .
ORION- 1SX 结构 ( 对象子系统 )
对象子系统
模式管 查询处 版本管 长数据 理器 理器 理器 管理器
ORION 事务子系统提供了保护数据库完整性的机制。允许交替执行多个并发事务
事务子系统
事务管理器
死锁处理器 恢复管理器
锁管理器 日志管理器
ORION- 1SX 结构 ( 事务子系统 )
锁管理器管理着一个锁表和一个封锁事务表。它们分别记载每个活动事务持有的锁和每个事务正等待的琐。存储子系统与管理器相互作用,在检索或更新对象之前给对象加锁。当一个事务中止(提交或夭折)时,就释放它所申请的全部锁(逻辑锁)。
死锁处理器负责死锁检测和处理。 ORION 系统使用了一种基于超时的简单技术来检测死锁。它对每个锁请求给出了锁等待的时间限额;若锁请求的等待时间超出了给定的时间限额,则这个正等待的事务变成夭折的候选者(只有撤销引起死锁的那个动作)。死锁处理器是一个后台进程,当存在一些挂起的事务时,它就在预定的时间芷内激活。 日志和恢复管理器实现一个事务的原子特性。日志管理器累积对象修改的日志。日志用来撤销一个事务,或用于当一个事务处理过程中系统发生故障,而导致数据库处于一种不一致的状态时的恢复。 事务管理器负责生成事务标识符( TID ),提交或夭折事务,运行一些特别的服务进程,如死锁检测器,磁盘空闲空间收集器等等。 TID 是用于区别系统中事务的唯一标识符,它们都定义在服务器上。在 ORION-1SX 中,提交和夭折操作在客户和服务器两方执行。
它管理磁盘上页面的分配和释放,在缓冲池中查找和存放对象等 ORION 系统采用了双缓冲管理方案,即它把可用的数据库缓冲空间分成一个页缓冲池和一个对象缓冲池。为了存取一个对象,包含该对象的那个页面先被调入到页缓冲池中,然后定位、检索该对象并将它放入一个对象缓冲池中。
存储子系统
存取管理器 对象缓冲管理器
存储管理器 页缓冲管理器
ORION- 1SX 结构 ( 存储子系统 )
客户 / 服务器结构中 DBMS 的 3 种功能划分
第一种方案: 应用处理(包括实现用户界面与表示逻辑)由客户机完成。数据访问和事务管理由服务器完成。 这种方案实现了功能分布,即由客户机承担了部分处理任务,但数据都集中在服务器中。在查询处理过程中,客户机提出查询请求,由服务器完成对数据库的查询任务 . 但因数据集中于服务器,因而并未解决服务器上的主要问题,如磁盘输入 /输出 .
在第一种方案的功能划分这种体系结构中,数据库产品可分为三类: 1 )服务器产品,例如: Informix-SE, Informix-Online 等。它们可以运行在 UNIX, NETWARE 等环境下。 2 )开发工具。例如: Informix-ESQL/C, Informix-4GL, Informix-ViewPoint 等, 它们在客户端运行。 3 )连接产品,例如, Informix-NET, Informix-STAR 等
服务器上主要是执行一些底层的操作,如封锁、页面读写; 由客户机来完成查询优化和查询处理。在查询处理过程中,客户机向服务器申请它所需要的页面,在网络上传输的是页面。 在这种体系结构中,客户机分担了更多的处理任务,但数据仍集中在服务器中。
客户 / 服务器结构中 DBMS 第二功能划分方案
每个客户机通过对查询结果进行缓存建立其局部数据库,而且在客户端都有一个功能完整的 DBMS ,它与服务器上 DBMS 相互协作来完成数据库访问。这种体系结构,不仅有功能分布,而且有数据分布,因而可以避免客户机向服务器再申请相同的数据,减少了网络传输和服务器段的数据输入输出。 但在这种数据分布的环境下,数据更新要通过复杂的协议来保证数据的一致性。
客户 / 服务器结构中 DBMS 第三功能划分方案
大多数客户服务器结构的 DBMS 都支持 API , API 主要包括下列功能:. 对 SQL 的完全支持,所有数据库服务器支持的 SQL 语句必须通过 API传递。. 对一个数据库服务器的多个连接,对于运行在多任务操作系统的客户应用来说,例如, Unix 和 OS/2上的程序应能有与数据库服务器保持多个连接的能力,使每个任务都有一个与服务器的专门的连接。. 连接到多个服务器。尽管对于分布式查询和修改来说,服务器之间的连接操作是透明的,但对于数据传输应用而言,应支持客户应用同时连接到多个服务器上。. 数据类型的转换。应提供宿主语言中的数据类型与数据库服务器中的数据类型的自动转换。
客户服务器结构的 DBMS 给应用带来的好处
1 。提供数据和服务的无缝集成。通过客户服务器结构的 DBMS ,可以很容易的实现一个企业中原有数据库与应用程序的集成,从而保护了企业以前的投资。 2.为联机事务处理提供高的性能。由于客户服务器体系结构合理地划分了功能,均衡地分配了客户和服务器上的负载,并减少了网络传输。因而客户服务器结构的 DBMS 能够为联机事务处理提供高的事务吞吐量、短的响应时间、支持成百乃至上千个用户。 3 。开放性。客户服务器结构的 DBMS提供开放的客户接口和开放的服务器接口。这样一个厂家的客户端开发工具可以方便的与别的厂家的数据库服务器相连接;
面向用户层的顶端是用户定义模块接口。它主要用作把用户定义的新数据类型,新函数等融合到 ORDBMS 系统原有的数据类型系统中,这是由于对象关系数据库系统允许用户动态扩充新数据类型及其上的操作。 这在我们的系统中是通过类属的 B树索引机制和类型构造器来实现的。
用户定义模块
数据库模式的最顶层仍然是一组命名关系,但是,关系中的对象现在可以和 OODB系统中所支持的一样丰富。另外,对象关系型 SQL ( ORSQL )必须提供对对象查询,如路径表达式、类似于方法的函数引用格式、在 FROM 子句中支持嵌套的 SETS 等的支持。
语法分析器首先验证查询的语法格式,优化器选择查询数据的最佳路径,函数管理器执行完成查询的函数。 它主要是作 ORSQL 语言的翻译、处理层。它处理的对象主要是: ORSQL 。它包括了对象关系型数据操纵语言 ORDML及对象关系型数据定义语言 ORDDL 。
对象关系型语法分析器
接口模块它是数据执行层与其相邻的事务管理层的接口,按照协议与事务管理层进行控制和数据信息的交换,其协议会根据不同的硬件和软件环境而变化。 对象关系操作模块本模块的功能是执行所有对关系的操作,即数据定义、数据操纵、完整性检查、数据库维护等。它实际上是完成对元组集合的操作,利用它下面的单元组接口模块进行导航,逐个元组地进行操作。当对满足某些条件的元组集合进行操作时(即用户查询的 SQL 语句中的 WHERE 子句中的表达式),则调用关系表达式解释模块来实现。
关系表达式解释模块在关系型数据库中, SQL 的 SELECT 语句中的 WHERE 子句中的表达式经编译后翻译成关系代数表达式。本模块的功能是解释执行对象关系表达式,求出相应的对象或元组集合。 优化模块在数据执行层中所接收到的关系表达式是经过代数优化的(由编译层完成),但为了提高查询数据的效率,在执行关系表达式之前,仍需进行非代数优化。非代数优化的三条基本原则是:利用存取路径、以单元组方式加工运算序列和引入排序算符。 单元组接口模块向上层模块提供一次一个对象或元组的支持,这是实现关系导航的基本途径,本模块是在存取路径管理和记录管理模块的支持下,使用逻辑存取路径及逻辑记录结构,在关系中设置扫描,利用扫描指针在关系中的移动,实现一次一个对象或元组的功能。
存取路径管理模块存取路径是在关系上建立的特殊数据结构,以实现对关系元组的快速查询,因此存取路径实际上就是关系元组的索引,利用索引迅速确定元组的地址,然后根据地址查询元组。常用的存取路径有 B树, R树, hash 表等。
排序 / 合并模块引进这一模块的目的是为了支持非代数优化的同时满足用户要求的有序输出,将它实现成一个多功能的原语,可同时完成删重复元组、限制及投影等操作。当缓冲区不能容纳下所有排序数据时,则使用合并技术
事务管理器主要负责如并发控制、恢复、完整性检查等。
存储管理器负责数据在内外层的存储与交换。保证高效地将数据从存于外存的数据库中调入系统内存缓冲区中。它的主要任务是缓冲区管理、内外存交换及数据库的外存管理。其中记录管理模块负责记录(即元组)的存储格式、编址方法、溢出处理、对记录操作的物理实现等功能