第12章 数据库管理系统
复习笔记
一、数据库管理系统(DBMS)的基本功能
DBMS具有如下基本功能:
01数据库定义和创建
创建数据库主要是用数据定义语言DDL定义和创建数据库模式、外模式、内模式等数据库对象。在关系数据库中就是建立数据库(或 Schema)、表、视图、索引等。还有创建用户、安全保密定义(如用户口令、级别、角色、存取权限)、数据库的完整性定义。
02数据组织、存储和管理
DBMS 要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等;要确定以何种文件结构和存取方式在存储器上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率和方便存取,提供多种存取方法(如索引查找、Hash查找、顺序查找等)提高存取效率。
03数据存取
提供用户对数据的操作功能,实现对数据库数据的检索、插入、修改和删除。
04数据库事务管理和运行管理
这是指DBMS运行控制和管理功能。
05数据库的建立和维护
包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及性能监测分析等功能。
06其他功能
包括DBMS与网络中其他软件系统的通信功能;一个DBMS与另一个DBMS或文件系统的数据转换功能;异构数据库之间的互访和互操作功能等。
二、数据库管理系统的系统结构
01层次结构
图 12-1给出一个关系数据库管理系统的层次结构示例。这个层次结构是按照处理对象的不同,依最高级到最低级的次序来划分的,具有普遍性。
图12-1 关系数据库管理系统的层次结构
(1)应用层
应用层位于关系数据库管理系统的核心之外。应用层处理的对象是各种各样的数据库应用,该层是关系数据库管理系统与用户/应用程序的界面层。
(2)语言处理层
语言处理层处理的对象是数据库语言。该层的功能是对数据库语言的各类语句进行语法分析、视图转换、安全性检查、完整性检查、查询优化等;通过对下层基本模块的调用,生成可执行代码。
(3)数据存取层
数据存取层处理的对象是单个元组。其功能是把上层的集合操作转换为单记录操作,执行扫描排序、元组的查找、插入、修改、删除、封锁等基本操作,完成数据记录的存取、存取路径维护、事务管理、并发控制和恢复等工作。
(4)数据存储层
数据存储层处理的对象是数据页和系统缓冲区。其功能是执行文件的逻辑打开、关闭、读页、写页、缓冲区读和写、页面淘汰等操作,完成缓冲区管理、内外存交换、外存的数据管理等功能。
(5)操作系统
操作系统是RDBMS的基础。操作系统处理的对象是数据文件的物理块。其功能是执行物理文件的读写操作,保证RDBMS对数据逻辑上的读写真实地映射到物理文件上。操作系统提供的存取原语和基本的存取方法通常作为和RDBMS存储层的接口。
02关系数据库管理系统的运行过程
RDBMS是一个复杂而有序的整体,应该用动态的观点看待RDBMS各个功能模块。如图12-2所示是RDBMS 读取数据库中数据的过程。整个RDBMS各层模块互相配合、互相依赖共同完成对数据库的操纵。
图12-2 关系数据库管理系统的运行过程
三、语言处理层
01任务和工作步骤
(1)任务
语言处理层的任务就是把用户在各种方式下提交给关系数据库管理系统的数据库语句转换成对关系数据库管理系统内层可执行的基本存取模块的调用序列。
(2)数据库语言
数据库语言通常包括数据定义语言、数据操纵语言和数据控制语言三部分。数据定义语句的处理相对独立和简单,数据操纵语句和数据控制语句则较为复杂。
(3)数据操纵语句处理
对数据操纵语句,语言处理层要做的工作比较多,图12-3给出了关系数据库管理系统中数据操纵语句处理过程的示意。
图12-3 束缚过程
02解释方法
(1)内容
解释执行方法的具体做法是直到执行前,数据库操纵语句都以原始字符串的形式保存:当执行到该语句时,才利用解释程序去完成全部过程,同时予以执行。这种方法通过尽量推迟束缚过程来赢得数据独立性。
(2)优点
解释方法具有灵活、应变性强的优点,甚至能适应在解释过程中发生的数据结构、存储结构等的变化,因此能保持较高的数据独立性。
(3)缺点
由于每次执行一个DML语句时都要执行所有步骤,尤其当这样的语句位于一个循环体内时,就要多次重复解释一个DML语句,开销会很大,因此效率比较低。
03编译方法
(1)内容
预编译方法的基本思想是:在用户提交DML语句之后,在运行之前对它进行翻译处理,保存产生好的可执行代码。当需要运行时,取出保存的可执行代码加以执行。
(2)优点
自动重编译技术使得预编译方法既拥有了编译时进行束缚所带来的高效率,又具备了执行时束缚带来的数据独立性。
(3)缺点
使用预编译方法会遇到这样的问题:在束缚过程中进行优化所依据的条件可能在运行前已不存在,或者数据库结构已被修改,因而导致已作出的应用规划在执行时不再有效。
四、数据存取层
数据存取层介于语言处理层和数据存储层之间。它向上提供单元组接口,即导航式的一次一个元组的存取操作;向下则以系统缓冲区的存储器接口作为实现基础。
01任务
存取层的任务主要包括:
(1)提供一次一个元组的查找、插入、删除、修改等基本操作。
(2)提供元组查找所循的存取路径以及对存取路径的维护操作,如对索引记录的查找、插入、删除、修改。若索引是采用B+树,则应提供B+树的建立、查找、插入、删除、修改等功能。
(3)对记录和存取路径的封锁、解锁操作。
(4)日志文件的登记和读取操作。
(5)其他辅助操作,如扫描、合并/排序,其操作对象有关系、有序表、索引等。
为了完成上述功能,通常把数据存取层又划分为若干功能子系统加以实现。
02数据存取层的系统结构
(1)记录存取、事务管理子系统;
(2)控制信息管理模块;
(3)排序/合并子系统;
(4)存取路径维护子系统;
(5)封锁子系统,执行并发控制;
(6)日志登记子系统,用以执行恢复任务。
03数据存取层的功能子系统
(1)记录存取、事务管理子系统
①记录存取子系统提供按某个属性值直接取一个元组和顺序取一个元组的存取原语。这种存取运算是按已选定的某个逻辑存取路径进行的,如某个数据文件或某个索引。
②事务管理子系统提供定义和控制事务的操作。
(2)日志登记子系统
日志登记子系统和事务管理子系统紧密配合,完成 RDBMS对事务和数据库的恢复任务,它把事务开始、回滚、提交;对元组的插入、删除、修改;对索引记录的插入、删除、修改等。每一个操作作为一个日志记录存入日志文件中。当事务或系统软、硬件发生故障时利用日志文件执行恢复。
(3)控制信息管理模块
利用专门的数据区(内存中)登记不同记录类型以及不同存取路径的说明信息(取自数据字典)和控制信息。这些信息是存取元组和管理事务的依据。它和事务管理、记录存取子系统一起保证事务的正常运行。该模块提供对数据字典中说明信息的读取、增加、删除和修改操作。
(4)排序/合并子系统
排序/合并子系统实现输出有序结果,删去重复值,动态建立索引结构,减少数据块的存取次数等功能。
(5)存取路径维护子系统
对数据执行插入、删除、修改操作的同时要对相应的存取路径进行维护。
(6)封锁子系统
封锁子系统完成并发控制功能。
五、缓冲区管理
01设立缓冲区的原因
(1)隔离外存设备与存储层以上各系统,保证DBMS具有设备独立性。
(2)减少内外存交换的次数,提高存取效率。
02缓冲区构成
缓冲区由控制信息和若干定长页面组成。
(1)缓冲区管理模块向上层提供的操作是缓冲区的读、写。
(2)缓冲区内部的管理操作有:查找页、申请页、淘汰页。
(3)缓冲区管理调用操作系统的操作有:读、写。
03主要算法
缓冲区管理中主要算法是淘汰算法和查找算法。查找算法用来确定所请求的页是否在内存,可采用顺序扫描、折半查找、Hash查找算法等。
六、数据库的物理组织
01数据库组织标准
衡量数据库组织是否适宜的标准包括两方面:
(1)存储效率高,节省存储空间;
(2)存取速度快,代价小。
02数据库系统与文件系统的区别和联系
(1)数据库系统是文件系统的发展;
(2)文件系统中每个文件存储同质实体的数据,各文件是孤立的,没有体现实体之间的联系;
(3)数据库系统中数据的物理组织必须体现实体之间的联系,支持数据库的逻辑结构。
03数据字典的组织
有关数据的描述存储在数据库的数据字典中。数据字典的特点是数据量比较小、使用频繁,因为任何数据库操作都要参照数据字典的内容。数据字典按不同的内容在逻辑上组织为若干张表,在物理上就对应若干文件而不是一个文件。由于每个文件中存放数据量不大,可简单地用顺序文件来组织。
04数据和数据联系的组织
(1)文件结构类型
操作系统提供的常用文件结构有:顺序文件、索引文件、索引顺序文件、Hash文件(杂凑文件)和B树类文件等。
(2)关系数据库组织方式
在关系数据库中,实体及实体之间的联系都用一种数据结构——“表”来表示。在数据库的物理组织中,每一个表通常对应一种文件结构。因此数据和数据之间的联系两者组织方式相同。
05存取路径的组织
(1)在网状和层次数据库中,存取路径是用数据之间的联系来表示的,因此已与数据结合并固定下来。
(2)关系数据库中,存取路径和数据是分离的,对用户是隐蔽的。存取路径可以动态建立、删除。关系数据库中存取路径的建立是十分灵活的。