1、数据库系统设计与原理数据库系统设计与原理讲义讲义冯建华冯建华清华大学计算机科学与技术系清华大学计算机科学与技术系2005.04.302005.04.302022-10-4数据库系统设计与原理数据库系统设计与原理冯建华,副教授,计算机系软件研究冯建华,副教授,计算机系软件研究所数据库研究组教师。所数据库研究组教师。19861986年进入清年进入清华大学计算机系学习,华大学计算机系学习,19931993年获得清年获得清华大学计算机系工学硕士学位之后留华大学计算机系工学硕士学位之后留校工作至今。校工作至今。办公室电话:办公室电话:6278915062789150(东主楼(东主楼1010区区20420
2、4)E-MAILE-MAIL地址:地址:2022-10-4数据库系统设计与原理数据库系统设计与原理为什么要学习数据库?应用:广泛,无处不在系统:打开黑匣子select t1.f1,t2.f2 from t1,t2 where t1.f2=t2.f3你对数据库系统了解多少?2022-10-4数据库系统设计与原理数据库系统设计与原理什么是数据库?所谓数据库就是指一组相互有关联的数据集合,英文称Database,简称DB。什么是数据库管理系统?而数据库管理系统是由数据库和一组用于访问这些数据的程序组成,英文称Database Management System,简称DBMS。什么是关联?结构化数据:
3、层次、网状、关系、对象;半结构化数据:OEM、XML;非结构化数据。2022-10-4数据库系统设计与原理数据库系统设计与原理什么是数据库系统?口语中常说的“数据库系统”在大多数时候都是指DBMS;但是严格地来说,数据库系统(Database System,DBS)是指在计算机系统中引入数据库之后的系统:一般由数据库、数据库管理系统及其开发工具、应 用 系 统、数 据 库 管 理 员(D a t a b a s e Administrator,DBA)和最终用户构成。即:DBS=DB+DBMS+Application+DBA+End User2022-10-4数据库系统设计与原理数据库系统设计
4、与原理DBMS涉及到的问题数据库管理系统是为了管理大量、复杂的数据。对数据的管理既涉及到 存:数据存储结构的定义 取:数据操作机制的提供如果数据被多用户共享,那么DBMS还必须设法避免可能产生的异常结果,即并发控制;如果系统发生故障,那么DBMS必须保证将数据恢复到故障发生前的状态,即故障恢复;DBMS还必须保证所存储数据的安全性,不被非法访问和操作,即访问控制2022-10-4数据库系统设计与原理数据库系统设计与原理讲课内容:引言索引和散列ER模型查询处理关系模型10事务11并发控制完整性约束12数据库系统体系结构数据库的物理设计13新的应用及扩展存储结构和文件结构考试(开卷)2022-10
5、-4数据库系统设计与原理数据库系统设计与原理部部分分内内 容容相相 关关章章 节节与与 D DB BM MS S 的的关关 系系教教 学学 目目 标标数数 据据 库库 设设 计计:概 念 设 计 E-R 模 型;逻 辑 设 计 关 系 模 型;物 理 设 计 存 储 与 索 引1-6DBMS 的 应 用能 够 在 商 用DBMS之 上 完 成 实 际 应 用的 数 据 库 设 计数数 据据 存存 储储:存 储 结 构;文 件 组 织;索 引 结 构7-8DBMS 的 基 础了 解 数 据 库 底 层 的数 据 存 储 及 索 引 的细 节D DB BM MS S 的的 内内 核核:查 询 处
6、理 器;存 储 管 理 器9-11DBMS 的 核 心掌 握DBMS 的 核 心技 术:查 询 处 理、事 务 管 理、并 发 控制、故 障 恢 复 等结结 构构 扩扩 展展 及及 前前 沿沿 研研 究究:集 中 式、C/S、分 布 式、并 行 系 统;数 据 仓 库、OLAP、数 据挖 掘 等12-13DBMS 的 扩 展宏 观 上 把 握DBMS的 体 系 结 构;了 解国 际 上 数 据 库 技 术的 前 沿 研 究 课 题2022-10-4数据库系统设计与原理数据库系统设计与原理教学安排:5月13日-7月8日周五晚上正常上课,每周课内4个学时;7月9日补课一天;7月15日周五晚上的最后
7、一节课考试:开卷考试,时间2小时,占期末总成绩的80;实验作业,5分,考试时同试卷一起交在SQL Server 2000或其他数据库系统中利用具体的实例测试与触发器有关的数据库选项和参数的设置情况;大作业,15分,考试时同试卷一起交具体内容后面介绍;2022-10-4数据库系统设计与原理数据库系统设计与原理1.1.应用系统的目的应用系统的目的2.2.应用系统的数据需求应用系统的数据需求3.3.应用系统的功能需求应用系统的功能需求4.4.应用系统的性能要求应用系统的性能要求5.5.应用系统的数据库设计应用系统的数据库设计E-RE-R图图主要的表结构、视图和索引主要的表结构、视图和索引有关的存储过
8、程和触发器有关的存储过程和触发器数据的放置与划分数据的放置与划分6.6.对该系统数据库设计的评价对该系统数据库设计的评价是否满足各种需求(数据、功能、性能)是否满足各种需求(数据、功能、性能)有哪些优缺点有哪些优缺点2022-10-4数据库系统设计与原理数据库系统设计与原理授课教材数据库系统设计与原理,第1版 冯建华、周立柱 清华大学出版社 本书的内容根据授课教师历年的讲义修改而成;主要参考教材SQL Server数据库原理-设计与实现 周立柱、冯建华、孟小峰、陈立军、杨冬青、王珊等 清华大学出版社 深而精,是难得的一本介绍DBMS实现技术的书。2022-10-4数据库系统设计与原理数据库系统
9、设计与原理主要参考教材 DATABASE SYSTEM CONCEPTS,Third Edition,数据库系统概念Abraham Silberschatz,Henry F.Korth&S.Sudarshan;杨冬青等翻译;机械工业出版社本书的缺点是太贵,英文影印版RMB65元,翻译过来的中文版RMB49元。但内容较新颖,基础性的内容非常全面,难度不大,容易理解。第4版也已经出版!2022-10-4数据库系统设计与原理数据库系统设计与原理其他参考教材 数据库管理系统,第3版Raghu Ramakrishnan&Johannes Gehrke,周立柱等翻译;清华大学出版社这两位作者分别来自威斯康
10、星和康奈尔大学。本书的内容非常新颖、全面、深入,且有一定的难度,适合咱们清华的学生学习。2022-10-4数据库系统设计与原理数据库系统设计与原理其他参考教材 数据库系统全书Hector Garcia-Molina,Jeffrey D.Ullman,Jennifer Widom著,岳丽华、杨冬青等翻译;机械工业出版社本书是美国斯坦福大学计算机系CS145和CS245两门课的教材,内容新颖、全面,而且有深度。中文版价格为65元RMB。2022-10-4数据库系统设计与原理数据库系统设计与原理其他参考教材数据库系统概论,第3版萨师煊、王珊高等教育出版社该书的内容与第二版相比有了很大的改动,价格适中
11、,每本28元RMB。2022-10-4数据库系统设计与原理数据库系统设计与原理课程概况(请参阅教材的附录):q课程信息q教师信息q课程简介q学习目标q学生要求q学习要求q重点与难点q学习安排q教材、参考书及其他参考资料q知识结构图2022-10-4数据库系统设计与原理数据库系统设计与原理与Stanford大学数据库课程比较2022-10-4数据库系统设计与原理数据库系统设计与原理与Stanford大学数据库课程比较 CS145,数据库简介:对数据库设计与数据库管理系统的使用进行基本的介绍。内容包括关系模型和XML(包括XML的查询语言Xpath和XQuery)以及SQL(创建、查询以及更新关系
12、数据库或对象-关系数据库的标准语言);关系代数、基于函数依赖与范式的关系设计原则以及数据库设计的实体-联系方法和面向对象方法;其他问题包括索引、视图、事务、权限和完整性约束以及触发器;由数据仓储、数据挖掘、OQL(Object Query Language,它是SQL的基于对象的版本)、Datalog(一种类似Prolog的语言,可用作数据库的查询语言)、时态数据库、中间件以及peer-to-peer(对等网络)系统引出的几个高级专题。2022-10-4数据库系统设计与原理数据库系统设计与原理与Stanford大学数据库课程比较CS245,数据库系统原理:主要内容包括文件组织和访问、缓冲区管理
13、、性能分析和存储管理;数据库系统体系结构、查询优化、事务管理、故障恢复和并发控制;可靠性、保护及完整性;设计与管理问题。CS345,数据库系统高级专题:数据库系统和信息系统领域里的高级专题,每次讲课的内容都会有所不同,如数据仓库、联机分析处理和数据挖掘等。2022-10-4数据库系统设计与原理数据库系统设计与原理与Stanford大学数据库课程比较CS346,数据库系统实现:一个主要的数据库系统实现项目,实现前面课程所覆盖的基本原理和技术。利用文件结构,通过查询处理(要有学生个人的设计特征和扩展),学生要独立构建一个完整的数据库管理系统。讲课主要集中于项目的细节和数据库管理系统实现中的高级技术
14、,核心内容集中在查询处理和优化。来自工业界的客坐教师都是商用数据库管理系统实现技术方面的专家。2022-10-4数据库系统设计与原理数据库系统设计与原理与Stanford大学数据库课程比较CS347,事务处理和分布式数据库:主要介绍分布式数据库的原理和系统组织。内容包括数据划分和分布、分布式数据设计、查询处理和优化、分布式并发控制、可靠性和提交协议以及重复数据管理;数据管理的分布式算法:时钟、死锁检测、互斥;异构和联邦分布式数据库系统;商用系统和研究原型概论。2022-10-4数据库系统设计与原理数据库系统设计与原理与Stanford大学数据库课程比较CS395,数据库独立项目:专门为计算机系
15、的研究生开设的课程。利用数据库管理系统开发实际的应用,或者是利用文件系统实现数据库管理系统的某一部分。最后要完成必要的分析和性能评价报告。CS545,数据库研究研讨班:展示数据库系统和信息系统领域的当前研究以及工业界的动向。2022-10-4数据库系统设计与原理数据库系统设计与原理与Stanford大学数据库课程比较,清华计算机系的现状如下:将CS145和CS245合二为一:30240262;Stanford将这两门课的教材合并为“数据库系统全书”!CS345这类课程没有,只是在本课程的最后,在有时间的情况下介绍一点,李绢子Data Mining CS346这类课程已经设置,即课程B34:专业
16、专题训练(不得少于4学分),包括计算机网络(必选1)、操作系统(选2)、编译原理(选2)和数据库(选2)专题训练;CS347和CS395合并为分布式数据库周立柱;CS545这类课程没有,但是2022-10-4数据库系统设计与原理数据库系统设计与原理2022-10-4第章引言第章引言DBMSDBMS的目的数据库语言的目的数据库语言数据视图查询处理器数据视图查询处理器数据模型存储管理器数据模型存储管理器DBMSDBMS总体结构磁盘存储器总体结构磁盘存储器数据库用户商业数据库系统数据库用户商业数据库系统2022-10-41.1DBMS1.1DBMS的目的的目的数据管理的进展数据管理随着计算机软硬件技
17、术的发展而不断发展,40多年来经历了以下三个阶段:人工管理阶段:50年代中期以前;文件系统阶段:50年代后期到60年代中期之间;数据库系统阶段:60年代后期开始2022-10-41.1DBMS1.1DBMS的目的的目的文件处理系统在DBMS出现以前,把需要管理的数据存放在永久性的操作系统文件中,同时为了能够操作这些文件里的数据,系统里还有针对这些文件编写的应用程序:文件+程序文件处理系统是由源源不断的数据文件和程序混合而成,由此产生了很多问题!2022-10-41.1DBMS1.1DBMS的目的的目的在文件处理系统中存储数据的弊端 数据冗余和不一致 数据访问困难:文件格式不同、复杂 数据孤立
18、完整性问题 原子性问题 并发访问问题 安全性问题要解决这些问题,就必须 开发通用的数据检索系统 表达和实现约束 对数据的访问进行逻辑管理:事务 对数据进行访问控制,对事务进行并发控制2022-10-41.1DBMS1.1DBMS的目的的目的数据库管理系统的提出数据库管理系统就是为了解决上面提到的和未提到的在文件处理系统中存在的问题;由于这些问题的存在,使得数据库管理系统提出了很多新的概念和算法,加速了数据库管理系统的发展;数据库管理系统是一个平台软件,在用户数据未知和不断发生变化的情况下,平台软件中的数据管理程序不发生任何变化,这大大地提高了数据的独立性,使得应用程序的开发也简单、独立、快速!
19、2022-10-41.21.2数据视图数据视图数据库管理系统的一个主要作用就是隐藏关于数据存储和维护的某些细节,再者用户也没有必要了解数据库中用来表示数据的复杂的数据结构。但可以为用户提供数据在不同层次上的抽象,即不同的使用者从不同的角度去观察数据库中的数据所得到的结果。数据抽象 实例和模式 数据独立性2022-10-41.21.2数据视图数据视图数据抽象数据库管理系统通过如下几个层次的抽象来向用户屏蔽复杂性,简化系统的用户界面:物理层:最低层次的抽象,描述数据是如何存储的。它描述复杂的底层数据结构,是学者和开发DBMS的供应商研究的事情;(Oracle)逻辑层:比物理层稍高层次的抽象,描述数
20、据库中存储什么数据以及这些数据间存在什么关系。数据库管理员和数据库应用开发人员必须确定数据库中应该保存哪些信息;(计算中心)视图层:也叫概念层,是最高层次的抽象,但它只描述整个数据库的一小部分,系统可以为同一数据库提供多个视图。(教师学生职员)2022-10-41.21.2数据视图数据视图数据抽象的三个层次视图视图1 1视图视图2 2视图视图3 3视图视图n n.逻辑层逻辑层物理层物理层2022-10-4与程序设计语言中数据类型概念类比用一种类Pascal语言定义如下记录类型:type course=recordcourse_number:string;course_name:string;c
21、ourse_location:string;course_capacity:string;end;student:student_number、student_name;teacher:有teacher_number、teacher_name和teacher_age三个字段。1.21.2数据视图数据视图2022-10-41.21.2数据视图数据视图与程序设计语言中数据类型概念类比物理层 course、student和teacher等记录都被描述为由连续的存储位置,如字节,组成的存储块。程序设计语言的编译器为编程人员屏蔽了这一层的细节。与此类似,数据库管理系统为数据库程序设计人员屏蔽了许多底层的
22、存储细节。2022-10-41.21.2数据视图数据视图与程序设计语言中数据类型概念类比逻辑层 正如前面的代码所示,在程序设计语言中,每个这样的记录通过类型定义进行描述。程序设计人员正是在这个抽象层次上使用某种高级语言进行工作。与此类似,数据库管理员和数据库程序员也在这个抽象层次上工作。如:create table course(course_namevarchar(30),course_numberchar(18),course_locationvarchar(50),course_capacityint)2022-10-41.21.2数据视图数据视图与程序设计语言中数据类型概念类比视图层
23、计算机用户最终看见的是为其屏蔽了数据类型细节的一组应用程序(界面)。与此类似,视图层上数据库管理系统也定义了数据库的多个视图,数据库用户看到的是这些视图-部分实际数据。除了屏蔽数据库的逻辑层细节外,视图还提供了防止用户访问数据库某些部分的安全机制。例如,能看到课程信息的学生用户就不能够访问教师的个人信息。数据库系统概论,CS001,四教4402,180varchar,302022-10-41.21.2数据视图数据视图实例和模式 数据库中的数据会随时发生变化,特定时刻存储在数据库中的信息集合称作数据库的一个实例。而数据库的总体设计,即数据库的样子,称作数据库模式,数据库模式不会频繁地发生变化;前
24、面只定义了course类型而没有定义任何变量:var course1:course;/定义一个变量 变量course1对应于一块包含course类型记录的存储区域。与此类似,数据库模式与程序设计语言中的数据类型相对应;程序设计语言中,给定类型的一个变量在特定的时刻有具体的值。因此,程序设计语言中变量的值对应于数据库模式的一个实例。2022-10-41.21.2数据视图数据视图实例和模式 根据前面讨论的数据抽象层次的不同,数据库模式又可分为:物理模式:即数据库在物理层的总体设计,又称内模式;逻辑模式:即数据库在逻辑层的总体设计,通常简称为“模式”;视图模式:即数据库在视图层或概念层的总体设计,又
25、称子模式或外模式;通常,数据库管理系统支持一个物理模式、一个逻辑模式和多个视图模式。(TS Info)2022-10-41.21.2数据视图数据视图数据独立性 在某个层次上修改数据库的模式定义而不影响位于其上层模式的能力叫做数据独立性。有两个层次的数据独立性:物理数据独立性:是指修改数据库的物理模式而不必重写应用程序的能力;逻辑数据独立性:是指修改数据库的逻辑模式而不必重写应用程序的能力;为什么要修改数据库的模式呢?为了提高性能,偶尔在物理层做一些修改;只要数据库的逻辑结构发生了变化,逻辑层就必须要做一些修改,这种修改是经常的。2022-10-41.21.2数据视图数据视图数据独立性 逻辑数据
26、独立性比物理数据独立性更难作到,这是因为应用程序对于它们所要访问的数据的逻辑结构依赖性很大,应用程序与逻辑层靠得更近一些;如应用程序是基于数据库的视图层模式开发的,则逻辑数据独立性就容易做到,只需要修改逻辑层到视图层的映射关系;数据独立性的概念同现代程序设计语言中的抽象数据类型的概念类似,两者都为用户屏蔽了数据内部的具体实现细节。2022-10-41.31.3数据模型数据模型概述 数据库结构的基础就是数据模型,它是描述数据(数据结构)、数据之间的联系、数据语义即数据操作,以及一致性(完整性)约束的概念工具的集合。基于基于对象对象的逻辑模型的逻辑模型数据模型数据模型基于基于记录记录的逻辑模型的逻
27、辑模型网状模型网状模型层次模型层次模型关系模型关系模型面向对象模型面向对象模型实体联系模型实体联系模型(逻辑层和概念层)(逻辑层和概念层)逻辑数据模型逻辑数据模型物理数据模型(物理层)物理数据模型(物理层)2022-10-41.31.3数据模型数据模型实体联系模型(E-R模型)该模型是这样认识现实世界的:现实世界是由一组称作实体的基本对象以及这些对象间的联系构成;实体是现实世界中可区别于其他对象的一个“事件”或一个“物体”。例如每个学生是一个实体,每门课程也是一个实体。实体通过相关的属性集合来描述。例如,学生的学号student_number和姓名student_name属性描述了大学里某个特
28、定的学生;联系是实体间的相互关联。例如selecting这个选课联系将一个学生和他她所选的课程关联起来;同一类型的所有实体的集合称作实体集,同一类型所有联系的集合称作联系集;E-R模型主要用于在概念层上描述数据。2022-10-41.31.3数据模型数据模型实体联系模型(E-R模型)E-R模型还可以表示出数据库必须遵循的特定约束-映射基数,它表示一个实体集中的实体通过某联系集能与另一实体集中的实体进行关联的实体数目;数据库的总体概念结构可以用E-R图来表示。E-R图由以下元素构成:矩形:代表实体集 椭圆:代表属性 菱形:代表实体间的联系集 线段:将属性与实体集相连或将实体集与联系集相连图中的每
29、个成分都标上它所代表的实体集或联系集的名称,具体的E-R图示例如下。2022-10-4实体联系模型(E-R模型)E-R图示例1.31.3数据模型数据模型2022-10-41.31.3数据模型数据模型基于记录的数据模型 该类模型主要在逻辑层上描述数据,用来定义数据库的全局逻辑结构。而基于对象的数据模型主要用来描述数据库的概念结构;该类数据模型名称的由来是由于它用一些固定格式的记录来描述数据库的逻辑结构。每个记录类型定义了固定数目的字段,通常每个字段的长度也是固定的。基于记录的数据模型主要有:关系模型 2022-10-41.31.3数据模型数据模型关系模型 关系模型用表的集合来表示数据和数据间的联
30、系。每个表有多个列,每列有唯一的列名2022-10-41.31.3数据模型数据模型网状模型 网状模型中的数据用记录(与Pascal语言中的记录含义相同)的集合来表示,数据间的联系用链接(可看作指针)来表示。数据库中的记录可被组织成任意图的集合。2022-10-41.31.3数据模型数据模型层次模型 与网状模型类似,层次模型也用记录和链接来表示数据和数据间的联系;与网状模型不同的是:层次模型中的记录只能组织成树的集合而不能是任意图的集合。2022-10-41.31.3数据模型数据模型基于记录的三种模型的差别 关系模型与网状模型及层次模型的不同的地方在于关系模型不使用指针或链接,而通过记录所包含的
31、值把数据联系起来。2022-10-41.31.3数据模型数据模型物理数据模型 物理数据模型用于在最底层,即物理层上描述数据。与逻辑数据模型不同,实际使用中的物理数据模型较少。常用的两种物理数据模型是:一致化模型 框架存储模型 物理数据模型同数据库管理系统的具体实现密切相关,这是开发DBMS的数据库厂商最为关心的事情。本课程对这部分内容不进行深入讨论。2022-10-41.31.3数据模型数据模型数据模型的可理解性 人对现实世界的认知与计算机对现实世界的认知:人的认知模型?概念模型逻辑模型物理模型人能理解的模型?计算机可以理解的模型?模型的可理解性与现实世界及计算机的距离?人和计算机都可以理解的
32、模型?建筑与土木数学与计算机2022-10-41.4DBMS1.4DBMS总体结构总体结构DBMS在计算机中的位置 DBMS划分为不同的模块,每个模块完成一定功能;DBMS的部分功能由计算机的操作系统提供。通常,计算机操作系统提供最基本的服务:即文件服务;设计DBMS时必须考虑到DBMS与操作系统接口的灵活性和可移植性。2022-10-41.4DBMS1.4DBMS总体结构总体结构DBMS、文件系统和磁盘记录记录或页或页2022-10-41.4DBMS1.4DBMS总体结构总体结构数据库管理系统磁盘存储器用户应用界面索引统计数据数据文件数据字典应用程序交互查询数据库模式应用程序目标码嵌入式DM
33、L预编译器DML编译器DDL解释器查询计算引擎事务管理器缓冲区管理器文件管理器查询处理器存储管理器权限及完整性管理器日志2022-10-41.4DBMS1.4DBMS总体结构总体结构DBMS的主要部件 查询处理器:关系引擎 存储管理器:存储引擎其次就是DBMS的物质基础 磁盘存储器:必要的数据结构当然处于最顶层的就是DBMS用户 DBA:一个特殊的用户,负责对DBMS进行集中的管理与控制,它就是数据库管理员-DBA-Database Administrator;普通用户:除DBA之外的其他用户还可以通过应用程序和交互式的查询语言,即数据库语言等手段访问数据库中的数据。2022-10-41.51
34、.5数据库语言数据库语言概述数据库管理系统提供两种不同类型的语言,一种用于定义数据库的逻辑模式、访问方式和存储结构;另一种用于表达数据库的查询和更新:数据定义语言(DDL-Data Definition Language)数据操纵语言(DML-Data Manipulation Language)2022-10-41.51.5数据库语言数据库语言数据定义语言 数据库模式通过一系列定义来说明,这些定义由称作DDL的一种特殊语言来表达,如create table;DDL语句编译执行的结果是填写一系列存储在一个特殊文件中的系统表,该特殊文件称作数据字典;数据字典是一个包含元数据的文件,元数据是关于数
35、据的数据。在DBMS中,实际读取和修改数据前总要先查询该文件;DBMS所使用的存储结构和访问方式也是通过一系列特殊的DDL语句,如:create cluster、create index来定义的,这种特殊的DDL语句称作数据存储定义语言。编译的结果是一系列用来描述数据库模式实现细节的指令,对用户来说是不可见的。2022-10-41.51.5数据库语言数据库语言数据操纵语言 数据操纵是指:S:对存储在数据库中的信息进行检索 I:向数据库中插入新的信息 D:从数据库中删除信息 U:修改存储在数据库中的信息 数据抽象的层次不仅适用于定义数据和组织数据,还适用于对数据的操纵:在物理层,数据操纵必须定义
36、可以高效访问数据的算法;在较高的抽象层次上,强调数据的易用性,目的是要提供人与系统间的有效交互。2022-10-41.51.5数据库语言数据库语言数据操纵语言数据操纵语言通常有两类:过程化的DML:要求用户指定需要什么数据以及如何获得这些数据;非过程化的DML:只要求用户指定需要什么数据,而不必指明如何获得这些数据;通常非过程化的DML比过程化的DML要简单,且易学易用,但效率可能要差一些;从数据库中选择和综合数据的过程就是查询。DML中涉及查询的部分称作查询语言。但实际上在数据操纵语言中不把查询语言严格区分出来,而笼统地称为数据查询语言。2022-10-41.51.5数据库语言数据库语言数据
37、库语言小结 DDL:数据模式定义语言 数据存储定义语言 DML:操纵过程:过程化的DML非过程化的DML 操纵方式:数据查询语言数据更新语言2022-10-41.61.6查询处理器查询处理器概述 查询处理器部件主要由四部分组成,它们分别是:DML编译器(包括查询优化)嵌入式DML预编译器 DDL解释器 查询计算引擎2022-10-41.61.6查询处理器查询处理器DML编译器 负责将查询语言中的DML语句翻译成查询计算引擎能理解的低级指令,并力图将用户的请求转换成一个等价的但效率更高的表达式形式,以找到执行查询的更好策略,这就是DBMS的主要功能-查询优化;DDL解释器 负责解释DDL语句并将
38、其记录到包含元数据的一系列系统表中;查询计算引擎 负责执行由DML编译器产生的低级指令。2022-10-41.61.6查询处理器查询处理器嵌入式DML预编译器 DML调用嵌套在高级程序设计语言(在这里也叫宿主语言)里,如C、Pascal和Cobol等等;为了区分宿主语言中的DML调用,常常以一个特殊的字符串作为DML调用的前导,如EXEC SQL;嵌入式DML预编译器,如Oracle数据库中的Pro*C:PCC、Sybase数据库中的sqlpp等,将嵌入在宿主语言中的DML语句转化成宿主语言中普通的过程调用和函数调用;嵌入式DML预编译器必须同DML编译器共同发挥作用,才能保证产生正确的程序代
39、码;预编译所产生的程序再通过宿主语言的编译器产生正确的目标代码来运行。2022-10-41.61.6查询处理器查询处理器数据库编程接口当然数据库管理系统也支持在宿主语言中像调用宿主语言的普通函数和过程一样直接调用那些访问数据库的函数和过程。例如dblogin、dbopen、dbexec、dbclose和dblogout等。而且这是实际中最常用的数据库应用系统的开发方法之一;例如,Sybase数据库中的DB-Library/C;Oracle中的Oracle调用接口OCI(Oracle Call Interface)等等,这就是我们常说的数据库API。2022-10-41.71.7存储管理器存储管
40、理器概述 存储管理器是为存储在数据库底层的数据与应用程序及向系统提交的查询之间提供接口的程序模块;原始数据通过文件系统存储在磁盘上,文件系统通常由操作系统提供;存储管理器将经过查询处理器编译的不同的DML语句的代码再次翻译成底层的文件系统命令;总之,存储管理器负责数据库管理系统中数据的存储、检索和更新。2022-10-41.71.7存储管理器存储管理器存储管理器部件 权限及完整性管理器:检查是否满足完整性约束,检查试图访问数据的用户的权限;事务管理器:保证即使发生了故障,数据库也是一致的(正确的)(故障恢复);保证并发事务的执行不发生冲突(并发控制);文件管理器:管理磁盘空间的分配,管理用于表
41、示数据库所存储信息的数据结构;缓冲区管理器:负责将数据从磁盘取到内存中来,并决定哪些数据应被缓冲存储在内存里,即缓冲区的替换策略。2022-10-41.71.7存储管理器存储管理器事务的概念 数据库应用中完成单一逻辑功能的操作集合,是一个既具原子性又具一致性的逻辑执行单元;事务的特征(ACID)关于事务的原子性问题在前面的资金转账例子中已经提到:几个操作要么都完成要么根本不发生;资金转账还必须保持数据库的一致性,也就是说钱的总数应该保持不变(银行转帐的手续费例子),这种对数据库值的正确性要求称作一致性;当资金转账成功结束后,不管发生什么事情,包括系统故障,账户A和账户B的钱数也应该保持不变,这
42、种对数据库的值保持不变的要求称作持久性。2022-10-41.71.7存储管理器存储管理器事务的一致性 IF 事务执行前数据库是一致的在事务执行的过程中允许暂时的不一致,但此时发生故障或并发执行将产生问题:故障恢复和并发控制来保证一致性!THEN 事务成功执行后数据库也应是一致的 事务本身的定义应使数据库保持一致性,这是由程序员在定义事务时保证的;事务的原子性和持久性则是由DBMS自己保证的,具体地说是事务管理器和故障恢复管理器的责任。2022-10-41.71.7存储管理器存储管理器事务的隔离性当多个事务同时执行时,即使每个单独的事务都正确执行完毕,数据的一致性也可能遭到破坏,怎么办?DBM
43、S的并发控制管理器就是用来控制并发事务间的相互影响,把它们隔离开,使得每个事务都感觉到系统中好像只有自己一个事务在执行一样,以便确保数据库的一致性。2022-10-41.81.8磁盘存储器磁盘存储器应用界面应用界面索引索引统计数据统计数据数据文件数据文件数据字典数据字典应用程序应用程序交互查询交互查询数据库模式数据库模式嵌入式嵌入式DMLDML预编译器预编译器DMLDML编译器编译器DDLDDL解释器解释器查询计算引擎查询计算引擎事务管理器事务管理器缓冲区管理器缓冲区管理器文件管理器文件管理器日志日志2022-10-41.81.8磁盘存储器磁盘存储器必要的数据结构 数据文件:存储数据库中的数据
44、;表 数据字典:存储关于数据库结构的元数据。由于频繁使用数据字典,因此字典的良好设计和高效实现是非常重要的;表 索引:提供对数据项的快速访问;树 统计数据:存储关于数据库中数据的统计信息,这些信息被查询处理器用来选择高效的执行查询的方法;表 日志:存储故障恢复所需要的各种信息。?2022-10-4recordsFileread/write blocks2022-10-41.91.9商业数据库系统商业数据库系统常用的大型商业数据库系统Oracle:目前的版本是Oracle 9i;在中国的销量处于第一位;我国的主要用户是公安系统、金融系统和大的企业;系统本身非常复杂,可以按照用户的要求进行组装。支
45、持XML数据处理,支持Web功能,支持在数据库中存储大对象数据,如图像和图形、视频和音频数据等等;支持各种操作系统。2022-10-41.91.9商业数据库系统商业数据库系统常用的大型商业数据库系统 Sybase:主打产品有两种:Sybase Adaptive Server EnterpriseSybase Adaptive Server Anywhere 在世界和中国的销量逐渐下降;其主要用户有铁道部、金融系统和大型企业;成功的案例有“98世界杯网站系统”,“全国铁路售票系统”(与民航售票系统完全不同)。这些系统主要采用Sybase公司的数据复制技术和主键冲突解决方案;支持各种操作系统。20
46、22-10-41.91.9商业数据库系统商业数据库系统常用的大型商业数据库系统 Microsoft SQL Server:它最早是从Sybase公司买的核心技术,目前的版本是2000,下一个版本SQL Server 2005即将发布(代码名称Yukon);在全球的销量处于第一位;全球销量处于第二位的是IBM的DB2,DB2主要专用于IBM的大型机用于并行存储与计算;Microsoft公司的SQL Server在我国的主要用户是中小型企业和教育机构;技术上没有什么特别之处,是大众化的产品,仅支持Windows操作系统。2022-10-4小结:小结:GUI+QP+SM+DSGUI+QP+SM+DS应用界面应用界面索引索引统计数据统计数据数据文件数据文件数据字典数据字典应用程序应用程序交互查询交互查询数据库模式数据库模式嵌入式嵌入式DMLDML预编译器预编译器DMLDML编译器编译器DDLDDL解释器解释器查询计算引擎查询计算引擎事务管理器事务管理器缓冲区管理器缓冲区管理器文件管理器文件管理器日志日志2022-10-4