数据库系统概论第五版(王珊)-系统篇(十二)

本文详细介绍了数据库管理系统(DBMS)的基本功能,包括数据定义、存储、存取和事务管理。DBMS的系统结构分为层次,语言处理层负责语句处理,数据存取层处理数据存取,缓冲区管理优化性能。此外,还阐述了关系DBMS的运行过程,涉及语法和语义检查、查询优化、数据存取等步骤。预编译和解释方法在数据库语言处理中各有应用。最后,讨论了数据库的物理组织和数据存储策略。
摘要由CSDN通过智能技术生成

第12章 数据库管理系统

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

  1. 数据库定义和创建
    创建数据库主要是用数据定义语言定义和创建数据库模式、外模式、内模式等数据库对象。这些定义存储在数据字典(亦称为系统目录)中,是数据库管理系统运行的基本依据。
  2. 数据组织、存储和管理
    数据库管理系统要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等。
  3. 数据存取
    数据库管理系统提供用户对数据的操作功能,实现对数据库数据的检索、插入、修改和删除。
  4. 数据库事务管理和运行管理
    这是指数据库管理系统的运行控制和管理功能,包括多用户环境下的事务管理功能和安全性、完整性控制功能;数据库恢复、并发控制和死锁检测(或死锁防止)、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理等。这些功能保证了数据库系统的正常运行,保证了事务的ACID特性。
  5. 数据库的建立与维护
    此项功能包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及性能监测分析等。

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

###12.2.1 数据库管理系统的层次结构
和操作系统样, 可以将数据库管理系统划分成若干层次。清晰、合理的层次结构不仅可以使用户更清楚地认识数据库管理系统,更重要的是有助于数据库管理系统的设计和维护。
图12.1给出一个关系数据库管理系统的层次结构示例。这个层次结构是按照处理对象的不同,依最高级到最低级的次序来划分的,具有普遍性。
在这里插入图片描述

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

  1. 关系数据库管理系统是一个复杂而有序的整体,应该用动态的观点看待关系数据库管的各个功能模块。
  2. 下面展示一个应用程序/用户通过关系数据库管理系统读取数据的过程。
    在这里插入图片描述
    (1)用户A通过应用程序A向关系数据库管理系统发出调用数据库数据的命令,
    (2)关系数据库管理系统首先对命令进行语法检查,检查通过后进行语义检查和用户存取权限检查。
    (3)关系数据库管理系统执行查询优化。优化器要依据数据字典中的信息进行优化,并把该命令转换成一串单记录的存取操作序列。
    (4)关系数据库管理系统执行存取操作序列(反复执行以下各步,直至结束)。
    (5)关系数据库管理系统首先在系统缓冲区中查找记录,若找到满足条件的记录则转到(10),否则转到(6)。
    (6)关系数据库管理系统查看存储模式,决定从哪个文件、用什么方式读取哪个物理记录。
    (7)关系数据库管理系统根据(6) 的结果,向操作系统发出读取记录的命令。
    (8)操作系统执行读数据的有关操作。
    (9)操作系统将数据从数据库的存储区送至系统缓冲区。
    (10)关系数据库管理系统根据查询命令和数据字典的内容导出用户所要读取的记录格式。
    (11)关系数据库管理系统将数据记录从系统缓冲区传送到应用程序A的用户工作区。
    (12)关系数据库管理系统将执行状态信息,如成功读取或不成功的错误指示、例外状态信息等返回给应用程序A。
  3. 对照在12.2.1小节中给出的关系数据库管理系统层次结构,可以大致作如下的对应:
    (1)动作(1)属于第一层— —应用层。
    (2)动作(2)、(3)由第二层— —语言处理层来完成。
    (3)动作(4)、(10)、 (11)、(12)由第三层— —数据存取层来完成。
    (4)动作(5)、 (6)、(7)由第四层— —数据存储层来进行。
    (5)动作(8)、(9)由操作系统执行。

12.3 语言处理层

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

  1. 语言处理层的任务就是把用户在各种方式下提交给关系数据库管理系统的数据库语句转换成对关系数据库管理系统内层可执行的基本存取模块的调用序列。
  2. 数据库语言通常包括数据定义语言数据操纵语言数据控制语言三部分。
  3. 数据字典是数据操纵语句的处理、执行以及关系数据库管理系统运行管理的基本依据。
    在关系数据库管理系统中数据字典通常采用和普通数据同样的表示方式,即也用关系表(table)来表示。数据字典包括关系定义表、属性表、视图表、视图属性表、视图表达式表、用户表、用户存取权限表等。图12.3给出了一个关系数据库管理系统中数据字典的一部分示意图。
    在这里插入图片描述
  4. 对数据操纵语句,语言处理层要做的工作比较多,图12.4给出了关系数据库管理系统中数据操纵语句处理过程的示意。
    在这里插入图片描述
    数据操纵语言的处理过程如下:
    (1)对数据操纵语句进行词法分析和语法分析,并把外部关系名、属性名转换为内部名。外部名便于用户记忆和使用,内部名则整齐划一。在符号名转换过程中需存取数据字典。词法和语法分析通过后便生成语法分析树。
    (2)根据数据字典中的内容进行查询检查,包括审核用户的存取权限和完整性检查。
    (3)对查询进行优化。优化分为两类,一类为代数优化,另一类为存取路径优化。
  5. 综上所述,将数据库数据操纵语句转换成串可执行的存取动作这一过程称为一个逐步束缚(bind)过程。

12.3.2 解释方法

解释方法和预编译方法都是翻译方法。

  1. 解释方法的具体做法是指直到执行前,数据操纵语句都以原始字符串的形式保存,当执行到该语句时,才利用解释程序去完成图12.4中所示的全部过程,同时予以执行。这种方法通过尽量推迟束缚过程来赢得数据独立性。
  2. 随着数据库技术的发展,解释方法已逐步被预编译方式所取代,目前这种方法主要用于交互式SQL。

12.3.3 预编译方法

预编译方法的基本思想是指在用户提交数据操纵语句之后,在运行之前对它进行翻译处理,保存产生好的可执行代码。当需要运行时,取出保存的可执行代码加以执行。下面以DB2为例说明这种方法。图12.5描述了DB2处理嵌入SQL语句的应用程序的过程。
在这里插入图片描述
预编译会遇到这样的问题:在束缚过程中进行优化所依据的条件可能在运行前已不存在,或者数据库结构已经被修改,因而导致已作出的应用规划在执行时不在有效。
为了解决这类问题,采用了重编译方法,即当数据库中因某些成分的改变而使一些程序(语句)的编译结果无效时,再对它们执行一次编译。

12.4 数据存取层

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

12.4.1 数据存取层的系统结构

数据存取层包括许多功能,在实际的关系数据库管理系统中由多个功能子系统来完成。图12.7是数据存取层的系统结构,它包括下列子系统和模块。
在这里插入图片描述

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

  1. 记录存取、事务管理子系统
    数据存取层不涉及存储分配、存储结构及有关参数,只在数据的逻辑结构上操作,因而可以把各种物理实现形态隐蔽起来。
    记录存取子系统提供按某个属性值直接取一个元组和顺序取一个元组的存取原语。这种存取运算是按已选定的某个逻辑存取路径进行的,如某个数据文件或某个索引。
  2. 日志登录子系统
    与日志文件有关的操作主要有:
    (1)写日志记录(WRITELOG);
    (2)读日志记录(READLOG);
    (3)扫描日志文件(SCANLOG):
    (4)撤销尚未结束的事务(UNDO);
    (5)重做已经结束的事务(REDO)。
  3. 控制信息管理模块
    该模块提供对数据字典中说明信息的读取、增加、删除和修改操作。
  4. 排序/合并子系统
    (1)输出有序结果
    (2)数据预处理
    (3)支持动态建立索引结构
    (4)减少数据块的存取次数
  5. 存取路径维护子系统
    对数据执行插入、删除、修改操作的同时,要对相应的存取路径进行维护。
  6. 封锁子系统
    (1)在操作系统中也有并发控制问题,其实现并发控制的方法通常也采用封锁技术。
    在这里插入图片描述
    (2)数据库管理系统中封锁子系统设计的难点不仅在于技术复杂,而且在于其实现手段依赖于操作系统提供的环境。

12.5 缓冲区管理

  1. 数据存取层的下面是数据存储层。该层的主要功能是存储管理,包括缓冲区( buffer)管理、内外存交换、外存管理等,其中缓冲区管理是十分重要的。数据存储层向数据存取层提供的接口是由定长页面组成的系统缓冲区。
  2. 系统缓冲区的设立出于两方面的考虑:一是把数据存储层以上各系统成分和实际的外存设备隔离;二十提高存取效率。
  3. 缓冲区管理的大致过程如图12.9所示。可以看到缓冲区管理中主要算法是淘汰算法和查找算法
    在这里插入图片描述

12.6 数据库的物理组织

  1. 概论
    (1)数据库是大量数据的有结构的综合性集合。如何将这样:个庞 大的 数据集合以最优的形式组织起来存放在外存上是一个非常重要的问题。所谓“优”应包括两方面:一是存储效率高,节省存储空间;二十存取效率高,速度快,代价小。
    (2)数据库实现的基础是文件,对数据库的任何操作最终要转化为对文件的操作。所以在数据库的物理组织中,基本问题是如何设计文件组织或者利用操作系统提供的基本的文件组织方法。
    (3) 数据库要存储4方面的数据:数据描述(数据外模式、模式、内模式)、数据本身、数据之间的联系、存取路径。
  2. 数据字典的组织
    有关数据的描述存储在数据库的数据字典中。数据字典的特点是数据量比较小(与数据本身比)、使用频繁,。数据字典在网状、层次数据库中常常用一个特殊的文件来组织。
    关系数据库中数据字典的组织通常与数据本身的组织相同。数据字典按不同的内容在逻辑上组织为若干张表,在物理上可以将一个字典表对应一个物理文件,由操作系统负责存储管理,也可以将若干字典表对应一个物理文件,由关系数据库管理系统负责存储组织和管理。
  3. 数据及数据联系的组织
    (1)操作系统提供的常用文件结构有:顺序文件、索引文件、索引顺序文件、hash文件(杂凑文件)和B树类文件等。
    (2)数据库中数据组织与数据之间的联系是紧密结合的。在数据的组织和存储中必须直接或间接、显示或隐含地体现数据之间的联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东风难破

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值