【数据库系统】数据库系统概论====第十二章 数据库管理系统

第十二章 数据库管理系统


12.1数据库管理系统的基本功能

  1. 数据库定义和创建
    创建数据库主要用数据语言定义和创建数据库模式、外模式、内模式等数据库对象,并存储在数据字典中,是数据库管理系统运行的基本依据。
    例:创新数据库、表、视图、索引等,创建用户、安全保密定义、数据库完整性定义。
  2. 数据组织、存储和管理
    数据库管理系统分类组织、存储和管理各种数据字典、用户数据、存取路径等。
    目标是提高存储空间利用率和方便存取,提供多种存取方法以提高存取效率。
    任务是以某种文件结构和存取方式在存储器上组织这些数据,实现数据之间的联系。
  3. 数据存取
    数据库系统提供用户对数据的操作功能,实现对数据库数据的检索、插入、修改和删除。
    两类数据库操作语言:宿主型语言和自立(独立)型语言。
  4. 数据库事务管理和运行管理
    对多用户环境下事务管理功能和安全性、完整性控制功能;包括数据库恢复、并发控制和死锁检测、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理等保证数据库系统的正常运行和事务的ACID特性。
  5. 数据库的建立和维护
    数据库的出事建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及性能检测分析等。
  6. 其他功能
    数据库管理系统与网络中软件系统的通信功能,数据库系统之间、数据库与文件系统的数据转换,异构数据库之间的互访和互操作。

12.2数据库管理系统的系统结构

12.2.1数据库管理系统的层次结构

将数据库管理系统划分为若干层次,有利于清楚的认识数据库管理系统,同时有助于数据库管理系统的设计和维护。
例:IBM最早研制的SystemR,其核心分为底层的关系存储系统(RSS)和上层的关系数据库系统(RDS)。
RSS:空间和设备管理、索引和存取路径管理、事务管理、并发控制、运行日志管理和恢复等。
RDS:语法检查和分析、优化、代码生成、视图实现、安全性完整性检查等。
在这里插入图片描述
说明:
①数据存储层:处理数据页和系统缓冲区。
②数据存取区:处理单个元组把集合操作化为单记录操作并执行。
③语言翻译处理层:处理数据库语言,如SQL向上提供的数据接口是元组的集合。
④应用层:处理各种各样的数据库应用是RDBMS与用户/应用程序的界面层。

12.2.2关系数据库管理系统的运行过程示例

关系商户及管理系统是一个复杂而有序的整体,我们应该用动态的观点看待关系数据库管理系统的各个功能模块。
例:应用程序/用户通过关系数据库管理系统读取数据库中数据的过程。具体如下图:
在这里插入图片描述
说明:
①用户A通过应用程序A向RDBMS发出调用数据库数据的命令,如SELECT,给出一个关系名和查找条件。
②RDBMS通过数据字典对命令进行语法检查,通过后进行语义检查和存取权限的检查。
③RDBMS进行查询优化,并转换成一串记录的存取操作系列。
④RDBMS执行存取操作序列(反复执行以下各步,直至结束)。
⑤RDBMS首先在系统缓冲区中查找记录,若找到满足条件的记录则转到第10步,否则转到第6步。
⑥RDBMS查看存储模式,决定从哪个文件,用什么方式读取哪个物流记录。
⑦RDBMS根据6的结果向操作系统发出读取记录的命令。
⑧操作系统执行读取数据的有关操作。
⑨操作系统将数据从数据库的存储区送至系统缓冲区。
⑩RDBMS根据查询命令和数据字典的内容导出用户所要读取的记录格式。
⑪RDBMS将数据记录从系统缓冲区传送到应用程序A的用户工作区。
⑫RDBMS将执行状态信息,如成功读取或不成功的错误提示灯返给应用程序A。
结合RDBMS的层次机构,以上12个动作可大致分为以下的应对关系:
动作1属于第一层----应用层。
动作2、、3属于第二层----语言处理层。
动作4、10、11、12属于第三层----数据存取层。
动作5、6、7属于第四层----数据存储层。
动作8、9由操作系统完成。

12.3语言处理层

关系数据库管理系统一般向用户提供多种形式的语言,这些语言的执行是由语言处理层来支持的。

12.3.1语言处理层的任务和工作步骤

语言处理层任务:把用户在各种方式下提交给RDBMS的数据库语句转换成对RDBMS内层可执行的基本存取模块的调用序列。
说明:
①数据库语言包括书籍定义语言、书籍操作语言和数据控制语言。其中数据定义语言的处理相对独立和简单。
②数据字典是数据操作语言处理、执行以及RDBMS运行管理的基本依据。数据字典通常应用关系表来表示,如下图:
在这里插入图片描述
③对数据操作语言,语言处理层做的工作较多,具体如下图:
在这里插入图片描述
处理过程为:
(1)针对数据操作语言进行词法分析和语法分析,把外部关系名、属性名转换为内部名。
(2)根据数据字典中的内容进行查询检查,包括审核用户的存取权限和完整性检查。
(3)对查询进行优化,包括代数优化,存取路径优化。
总之,将数据库操纵语句转换成一串可执行的存取动作,这个过程称为一个逐步束缚的过程。
根据束缚时间可分为:解释方法即在执行时束缚,预编译犯法即在执行前束缚。

12.3.2解释方法

解释方法的做法:在执行前,数据操纵语句都以原始字符串的形式保存;当执行到该语句的时候,解释程序完成束缚过程,然后予以执行。目前主要用在交互式SQL语言中。
优点:数据独立性好、灵活、应变性好。
缺点:效率比较低。

12.3.3预编译方法

预编译方法的基本思想:用户提交数据操纵语句之后,在运行之前对它进行翻译处理,保存产生好的可执行代码;当需要运行时,取出保存的可执行代码加以执行。
以DB2数据库处理嵌入SQL语句的应用程序的过程为例,具体处理过程如下图:
在这里插入图片描述
处理过程为:
(1)源程序P经过预编译处理,识别SQL语句,生成数据库请求模块DBRM。
(2)源程序按照通用方式被编译、链接处理,生成装载模块。
(3)束缚依据数据字典和存取模块,生成应用规划。应用规划包括了对基本存取模块的调用,完成对应SQL语句的功能。
(4)在运行时当装载模块遇到访问数据库时,就把控制权交给运行监督器。
(5)运行监督器找到其应用规划,并调入内存并转让控制权。
(6)应用规划启动数据存储器存取实际数据,将结果返回应用程序。
存在的问题:应用规划失效,即会出现在束缚过程中进行优化所依据的条件可能在运行前就不存在了,例如数据库结构改变、存取路径改变。
解决方法:
重编译方法即当数据库中因某些成分的改变而使一些程序的编译结果无效时,再进行一次编译。
重编译不应该在数据库刚改变就立即执行;较好的方法是将受影响的编译结果设置为“无效”,当被执行时才进行自动重编译。
自动重编译技术的优点:既拥有了编译时进行束缚所带来的的高效率,又具备了执行时束缚带来的数据独立性。

12.4数据存取层

数据存取层介于语言处理层和数据存储层。向上提供单元组接口,即导航式的一次一个元组的存取操作;向下则以系统缓冲区的存储器接口作为实现基础,其接口关系如下图:
在这里插入图片描述
数据存取层的主要任务为:
(1)提供一次一个元组的查找、插入、删除、修改等操作。
(2)提供元组查找所循存取路径以及对存取路径的维护操作,如对索引记录的查找、插入、删除、修改。若索引是采取B+树,则应提供B+树的建立、查找、插入、删除、修改等功能。
(3)对记录和存取路径的封锁、解锁操作。
(4)日志文件的登记和读取操作。
(5)其他辅助操作,如扫描、排序/合并等。

12.4.1数据存取层的系统结构

数据存取层包括多个功能子系统,其系统结构及所包括的子系统和模块如右图:
在这里插入图片描述

12.4.2数据存取层的功能子系统

  1. 记录存取、事务管理子系统
    ①记录存取子系统
    提供按照某个属性值直接取一个元组和顺序取一个元组的存取原语。如下列操作:
    在某个存取路径上按属性值找元组(FIND);
    按相对位置找元组(NEXT,PRIOR,FIRST,LAST);
    给某关系增加一个元组(INSERT);
    从找到的元组中取某个属性值(GET);
    从某关系中删去一个元组(DELETE);
    把某修改完的元组写回关系中(REPLACE)。
    ②事务管理子系统
    提供定义和控制事务的操作。如下列操作:
    定义事务开始(BEGIN TRANSACTION);
    事务提交(COMMIT);
    事务回滚(ROLLBACK)。
  2. 日志登记子系统
    日志登记子系统和事务管理子系统紧密配合,完成关系数据库管理系统对事务和数据库的恢复任务。相关的操作有:
    写日志记录(WRITELOG);
    读日志记录(READLOG);
    扫描日志文件(SCANLOG);
    撤销尚未结束的事务(UNDO);
    重做已经结束的事务(REDO)。
  3. 控制信息管理模块
    利用专门的数据区登记不同记录类型及不同存取路径的说明信息和控制信息,为存取元组和管理事务提供依据。
  4. 排序/合并子系统
    该系统完成关系元组的重新排序,以满足用户的有序输出或加速关系运算的中间步骤。主要用途如下:
    ①输出有序结果
    例:SELECT Eno.Salary
    FROM EMP
    ORDER BY Salary DESC;
    若EMP表上的Salary没有索引,则必须按照Salary的属性值降序排序。
    ②数据预处理
    对于并、交、差、分组聚集、连接、取消重复值、属于、不属于等关系运算,当参与运算的关系无法全部放入内存时,先对其进行排序处理,再有有序表上执行相应操作,这样可以提高效率。
    ③支持动态建立索引结构
    在B+树建立索引结构的时候需要对元组标识符(TID)进行排序。
    ④减少数据块的存取次数
    利用B+树索引存取元组时,首先对TID排序,使用相同的或邻的聚集在一起,然后按数据块号顺序存取物理数据块,避免无序状态下重复读块的情况,减少数据块的存取次数。
  5. 存取路径维护子系统
    对数据执行插入、删除、修改操作的同时对相应的存取路径进行维护。
    例:用B+树索引作为存取路径,则对元组进行插入、删除、修改操作时要在该表上已建立的所有B+树索引进行动态维护。
  6. 封锁子系统
    完成并发控制功能。
    (1)数据库系统的封锁与操作系统的封锁对比如下表。
操作系统数据库管理系统
封锁对象单一,系统资源(包括CPU、设备、表格等)多样,数据库中各种数据对象(包括用户数据、索引(存取路径、数据字典等))
封锁对象的状态静态、确定、各种封锁对象表中占有一项。封锁对象是不变的动态,不确定。封锁对象动态改变着、常常在执行前不能确定。一个封锁对象只有当封锁时才在封锁表中占据一项
封锁的粒度不变,由于对象单一、固定,封锁粒度不会改变可变,封锁对象可加到或大或小的数据单位上,封锁粒度可以是整个数据库、记录或字段
封锁的类型单一,排他锁多样,一般有共享锁(SLock)、排他锁(XLock)或其他类型的封锁,随系统而异

(2)数据库系统中封锁系统设计的难点不仅在于技术复杂还在于实现手段依赖操作系统提供的环境。

12.5缓冲区管理

数据存取层下面是数据存储层。该层的主要功能时存储管理,包括缓冲区管理、内外存交换、外存管理等。数据存储层向数据存取层提供的接口由定长页面组成的系统缓冲区。

  1. 系统缓冲区设立的原因
    (1)DBMS的设备独立性:外存设备变更更不会对它们造成影响。
    (2)提高存取效率:预先读,延迟写。
  2. 系统缓冲区的组成
    由内存或虚存组成,缓冲区的大小、缓冲区内存和虚存部分的比例要精心设计,并动态调整,否则会出现“抖动”。缓冲区与上下接口的示意图如下:
    在这里插入图片描述
  3. 缓冲区内部管理操作
    主要有查找页、申请页、淘汰页。调用操作系统的操作有读和写。以读为例,缓冲区的管理过程大致如下图所示:
    在这里插入图片描述
    说明:
    ①缓冲区管理主要算法是淘汰算法和查找算法。
    ②常见的缓冲区淘汰算法有先进先出算法(FIFO)、最近最少使用的淘汰算法(LRU)等。
    ③缓冲区查找算法:顺序查找算法、折半查找算法、Hash查找算法。

12.6数据库物理组织

如何将庞大的数据集合以最优的形式组织起来存放到外存上是一个非常重要的问题。
最优是指:存储效率高,节省存储空间;存取效率高,速度快,代价小。
数据库通过问卷的方式存储数据库以下4类数据:
(1)数据外模式、模式、内模式。
(2)数据本身。
(3)数据之间的联系。
(4)存取路径。

  1. 数据字典的组织
    有关数据的描述存储在数据库的数据字典中。其特点是数据量比较小,使用频繁。
    数据字典的存储方式:
    方式一:数据字典可以有多个表,在物理上可以将一个数据字典表对应一个物理文件,由操作系统负责存储管理。
    方式二:在物理上可以将若干数据字典表对应一个物理文件,由RDBMS系统负责存储管理。
  2. 数据及数据联系的组织
    数据库管理系统可根据数据和处理的要求自己设计文件结构,也可以从操作系统提供的文件结构中选择合适的加以实现。
    操作系统提供的文件格式有顺序文件、索引文件、索引顺序文件、Hash文件、B+树类文件等。
    数据库物理组织中主要考虑和设计的是数据的组织和存储中必须直接和间接、显示或隐含体现数据之间的联系。
    在关系数据库中因为数据和数据之间的联系用“表”表示,所以物理组织中可以用前面提到的数据字典的两种物理存储方法。
    在网状数据库中实现的方式是指引元,即增加数据库管理系统控制和维护的系统数据项----指引元,并与数据项在一个记录中。
  3. 存取路径的组织
    网状、层次数据库存取路径是用数据之间的联系表示的,已与数据结合并固定下来。
    在关系数据库中存取路径和数据是分离的,对用户时隐蔽的,并动态建立和删除。通常采用B树类文件结构和Hash文件结构。

12.7小结

  1. 主要介绍了数据库管理系统的基本功能、系统结构及主要的实现技术。
  2. 按照关系数据库管理系统的层次结构依次介绍了语言处理、数据存取、缓冲区管理、数据物理组织等各个层次的主要任务和功能。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值