840 likes | 1.11k Views
数据库与知识库系统原理. 李红燕 Mail : lihy@cis.pku.edu.cn Tel : 62754911. 助教. 姓名:苗高杉 Email : miaogs@calis.edu.cn Tel : 62754911 实验室:理科 2 号楼 2214S. 电子讲义. 通过信息中心主页可以下载 登录 http://www.cis.pku.edu.cn 点击 “ 教学工作 ” 点击 “ 电子讲义 ” 点击 “ 数据库与知识库系统原理 (2008.9) ” ,即可以进行浏览和下载各章讲义的内容 用户名: dbkb. 目的.
E N D
数据库与知识库系统原理 李红燕 Mail:lihy@cis.pku.edu.cn Tel:62754911
助教 • 姓名:苗高杉 • Email:miaogs@calis.edu.cn • Tel:62754911 • 实验室:理科2号楼2214S
电子讲义 • 通过信息中心主页可以下载 • 登录http://www.cis.pku.edu.cn • 点击“教学工作” • 点击“电子讲义” • 点击“数据库与知识库系统原理(2008.9)”,即可以进行浏览和下载各章讲义的内容 • 用户名:dbkb
目的 • 介绍数据库和知识库系统的基本原理 • 要求学生 • 更加合理、有效地使用商用数据库管理系统 • 深入理解数据库管理系统的关键技术 • 应用原理来指导对数据库、知识库系统的设计与实现 • 对数据库与知识库技术的基础理论研究有一定认识 温故而知新
预备知识 • 数据库概论 • 面向对象思想 • 教学方式 • 讲授为主 • 辅以讨论 • 鼓励调研 • 考试方式 • 论文报告占30% • 课堂讨论占10% • 考试占60%
主要参考书 • Jeffrey D. Ullman.Principles of Database and Knowledge Base System.VolumeⅠ and II,Computer Science Press,1988 • Abraham Silberschatz, Henry F. Korth, S. Sudarshan.Database System Concepts, Fifth Edition.The McGraw-Hill Companies, Inc., 2006 • 杨冬青,马秀莉,唐世渭等译.数据库系统概念.机械工业出版社,2006年10月 • Hector Garcia-Molina, Jeffrey D. Ullman, etc..Database Systems: The Complete Book.Pearson Education, Inc.,2002 • 岳丽华,杨冬青等译.数据库系统全书.机械工业出版社,2003
主要内容 • 第一章 数据库,对象库与知识库 • 1.1 DBMS的功能 • 1.2 数据抽象 • 1.3 数据库语言 • 1.4 数据库系统体系结构 • 1.5 对象库系统 • 1.6 知识库系统 • 1.7 历史与展望
主要内容(续) • 第二章 数据库系统的数据模型 • 2.1 实体–联系模型 • 2.2 关系模型 • 2.3 网状模型 • 2.4 层次模型 • 2.5 对象模型 • 2.6 对象-关系模型 • 2.7 基于逻辑的模型
主要内容(续) • 第三章 逻辑作为数据模型 • 3.1 逻辑规则含义 • 3.2 Datalog数据模型 • 3.3 非递归规则求解 • 3.4 递归规则求解 • 3.5 最小不动点的增量求解 • 3.6 带否定的规则体 • 3.7 关系代数与逻辑 • 3.8 域关系演算 • 3.9 元组关系演算 • 3.10 封闭世界假设
主要内容(续) • 第四章 关系查询语言 • 4.1 查询语言概貌 • 4.2 几种主要的关系查询语言
主要内容(续) • 第五章 关系数据库设计理论 • 5.1 引论 • 5.2 依赖理论 • 5.3 规范化理论 • 5.4 模式设计方法学 • 5.5 多值依赖 • 5.6 一般依赖
主要内容(续) • 第六章 数据库的安全性与完整性 • 6.1 数据库系统的安全性 • 6.2 数据库系统的完整性
主要内容(续) • 第七章 事务管理与并发控制 • 7.1 基本概念 • 7.2 简单事务模型 • 7.3 两阶段封锁协议 • 7.4 读、写锁模型 • 7.5 封锁模式 • 7.6 只读、只写模型 • 7.7 基于层次结构数据项的并发控制 • 7.8 事务失效处理 • 7.9 积极协议与保守协议 • 7.10 崩溃恢复 • 7.11 基于时间戳的并发控制
调研论文 • 从数据库与知识库系统的主要内容中选定一个主题,进行深入调研 • 可以结合自己的实际科研工作完成论文 • 本学期期末前提交
第一章 数据库,对象库与知识库 • 1.1 DBMS的功能 • 1.2 数据抽象 • 1.3 数据库语言 • 1.4 数据库系统体系结构 • 1.5 对象库系统 • 1.6 知识库系统 • 1.7 历史与展望
数据库管理系统(DataBase Management System,DBMS) • DBMS是被当今各种类型的计算机所使用的一种通用软件系统 • 它管理着一个可共享的、相互关联的数据集合,这个数据集合通常被称做数据库(DataBase) • DBMS提供对数据库的存储、访问、组织、控制、维护等方面的工具,以构成一个可以方便而有效地存取数据库信息的环境
DBMS的基本功能 • 支持各种类型以及超大量数据的持久性管理 • 数据类型 • 简单数据:整数、字符串等 • 多媒体数据:图像、声频及视频等 • 数据量 • 1个小时的视频信息大约消耗1GB(GigaByte,即109B) • 卫星图像可以消耗PB(PetaByte,即1015B) • 存储各种数据的数据库是持久地存在的
DBMS的基本功能(续) • 提供有效存取大量数据的能力 • 这是DBMS与文件系统的本质区别之一 • 文件系统虽然也管理持久化数据,但它不提供对数据任意部分的快速存取 • 当数据量很大时,DBMS的存取能力就变得至关重要 • 利用DBMS的索引机制,可以在较短的时间内(基本上是与文件长度无关的常量)实现一条记录的插入或删除 • DBMS还可以实现文件之间的导航,也即将多个文件中的内容结合起来提供用户所需的信息
DBMS的基本功能(续) • 至少支持一种数据模型或数学抽象 • 使用户看到的是易于理解的信息,而不是未经加工的字节串 • 用户可以站在不同的抽象层次上来看待数据 • 提供特定的高级语言 • 定义数据的逻辑结构或模式(Schema) • 查询数据 • 操纵数据
DBMS的基本功能(续) • 支持事务管理,提供多用户环境下并发存取数据库的能力以及分布式环境下数据的维护 • DBMS中必须有防护措施来避免或克服因多个事务处理而引发的相互干扰 • 如果数据库分布在多个不同的计算机系统中,并且这些系统大都带有数据副本以实现快速的局部存取的话,DBMS应该保证在任何计算机系统发生崩溃的情况下,数据都不被破坏
DBMS的基本功能(续) • 支持存取控制,限制非授权用户对数据的存取访问 • 一般采用安全机制来控制数据的访问,能够定义允许特定用户执行什么样的操作(例如只读或可读可写) • 用户口令 • 身份标识 • 用户级别 • 存取权限 • 等等
DBMS的基本功能(续) • 保证数据库中数据的完整性 • 数据完整性就是数据的正确性、真实性、客观性 • 一旦数据失真,其完整性就受到了破坏 • DBMS通过给用户提供完整性约束、触发器/规则机制等设施来帮助检验数据的有效性及完整性
DBMS的基本功能(续) • 提供可恢复性,以使系统可以在不丢失数据的前提下从失效状态恢复到正常状态 • 由各种各样的系统失效而造成的数据库损坏或丢失是不可避免的 • 用户操作失误,硬件出错,不正确或不合法的数据,程序出错,异常掉电,以及自然灾害等 • 由于数据库在现代管理信息系统中有着举足轻重的地位,DBMS必须提供机制,在数据库发生数据丢失或损坏之后迅速而准确地恢复数据库
第一章 数据库,对象库与知识库 • 1.1 DBMS的功能 • 1.2 数据抽象 • 1.2.1 物理层/逻辑层/视图层 • 1.2.2 模式与实例 • 1.2.3 数据依赖 • 1.3 数据库语言 • 1.4 数据库系统体系结构 • 1.5 对象库系统 • 1.6 知识库系统 • 1.7 历史与展望
它主要描述数据库中存储什么样的数据以及数据之间的联系它主要描述数据库中存储什么样的数据以及数据之间的联系 • DBMS提供了DDL通过特定的数据模型来描述概念模式 • 为了建立概念模式,往往需要各数据源达成某些共识,这使得概念数据库成为数据集成的一个基础 • 程序设计人员和DBA往往在这个抽象层次上进行工作 数据库系统中的抽象层次 • 诸如文件、索引以及用于存取它们的其它存贮结构的集合 • 详细描述数据实际上是怎样存储的 • 早期的物理数据库 • 二级存储设备(Secondary Storage Device) • 多个不同的物理数据库能够由同一个DBMS来管理 • 现代的大型数据库系统:三级存储设备 • 可以存储太字节(TeraByte,即1000GB,或1012B)的数据 • 但比磁盘的存取速度要慢 • 视图层抽象使用户与数据库系统的交互更为简单 • 视图可以被看成是概念数据库的一部分,但它也往往可以是概念数据库一部分的抽象 • 视图所涉及到的数据可以来源于概念数据库,但在数据库中实际又并不存在 • 从这个意义上说,视图比概念数据库的抽象层次更高 • 视图还是一种增强数据库系统安全性的手段 • 可以基于同一个数据库为不同用户提供不同的视图 视图层 逻辑层 物理层 用户组1 视图1 物理 数据库 用户组2 概念 数据库 视图2 …… …… 用户组n 视图n
例:程序设计语言中的数组概念 • 逻辑层: integer array A[1..n; 1..m] (1) • 物理层: A[i, j] 存贮在a0+4(m(i-1)+j-1) 的位置 (a0为初始位置)(2) • 视图层: f(i)= (3) • 函数f(i)可以看成是有关数组A的视图 • 提供了一种以相关的并且是不同的方式来看待A • 隐藏了某些信息
模式与实例 • 数据库的“纵向”划分方式 • 数据库设计:用户往往对它的规划感兴趣 • 数据库使用:往往只关注于数据库中的实际数据 • 数据库实例(Instance):特定时刻存储在数据库中的当前内容,又称数据库外延或数据库状态 • 数据库规划:用于描述数据库中实体的类型,实体类型之间的联系,以及在一个抽象层次上的实体和联系在更为具体的抽象层次上的表示方式 • 数据库规划被称做模式(Scheme),根据抽象层次的不同,数据库系统可以有几种不同的模式 • 物理模式(Physical Scheme):用于在物理层描述数据库的设计 • 逻辑模式(Logic Scheme):用于在逻辑层描述数据库设计 • 子模式(Subscheme):用于在视图层描述数据库的不同视图 • 变化 • 数据库模式即使发生变化,也是不频繁的 • 随着时间的推移,数据被插入到数据库或从数据库中删除,数据库中的实例是频繁改变的
例:继续讨论数组A • 逻辑模式,说明A是一个n行m列的整型数组: integer array A[1..n; 1..m] (1) • 物理模式:说明存贮数组A的起始位置为a0,并且A[i, j]存贮在 a0+4(m(i-1)+j-1) 的位置上 A[i, j] 存贮在a0+4(m(i-1)+j-1) 的位置 (a0为初始位置)(2) • 子模式 : f(i)= (3) • 作为上述逻辑模式的一个实例,令n=m=3,并令A为魔方矩阵: 物理实例是起始于位置a0的9个字: 8,1,6,3,5,7,4,9,2 视图实例:f(1)= f(2)= f(3)=15 • 1 6 • 5 7 • 9 2
数据依赖 视图层 逻辑层 物理层 • 逻辑数据独立性 • 在数据库的使用过程中很可能需要修改概念模式 • 有的修改不会影响已经存在的子模式,如增加新类型的实体 • 有的修改将导致从子模式到概念模式影射的重定义,但不用修改应用程序,如在已存在实体上附加额外信息 • 有的修改必然导致对某些应用程序的重写或丢弃,比如概念模式中删除了出现在子模式中的信息 • 如果概念模式的改变不影响子模式和应用程序,就称具有逻辑数据独立性 用户组1 视图1 • 物理数据独立性 • 物理模式的改变不会影响概念模式,也不要求重新定义子模式 • 尽管物理数据库组织的修改可能影响应用程序的效率,却不会因为逻辑模式赖以实现的物理模式的改变而导致对应用程序的重写 • 意义:允许出于效率的考虑对物理数据库进行调整,但这种调整对应用程序却是透明的 数据的独立性是相对的,不是绝对的,在设计数据库时应该尽可能提高其中数据的独立性 物理 数据库 用户组2 概念 数据库 视图2 …… …… 用户组n 视图n
第一章 数据库,对象库与知识库 • 1.1 DBMS的功能 • 1.2 数据抽象 • 1.3 数据库语言 • 1.3.1 数据定义语言 (Data Definition Language,DDL) • 1.3.2 数据操纵语言 (Data Manipulation Language,DML) • 1.3.3 宿主语言(Host Language,HL) • 1.4 数据库系统体系结构 • 1.5 对象库系统 • 1.6 知识库系统 • 1.7 历史与展望
数据库语言 • 一般程序设计语言 • 由说明性语句和可执行语句组成 • 只有当程序运行时数据才存在 • 数据库领域 • 往往把说明和计算分离在两种不同的语言中 • 数据一旦被声明就持久存在着
数据定义语言(Data Definition Language,DDL) • 又被称做数据描述语言 (Data Description Language,DDL) • 用于定义数据库的逻辑模式 • 不是一种过程性语言 • 根据特定的数据模型来定义或修改实体的类型以及实体类型之间的联系 • 数据描述语言一方面要方便用户,同时还要与整个系统(尤其是DML)协调配合 • 不是简单地定义数据,更重要的是反映系统内部的处理风格 • 在DDL中要尽量使用户给出的信息最少
分类 • 模式DDL • 描述面向应用的对象的全局,要顾及所有的应用要求,因此要尽可能保持中立,不偏向任何具体应用,不是对某个应用最优,而是对整体最优 • 它的信息要完整,尽可能减少重复 • 关系数据库系统的DBA常用模式DDL来定义或修改数据库的整体逻辑结构,通常包括表,属性名、类型、长度,表间的联系,安全性,完整性约束,等等
分类(续) • 子模式DDL • 面向具体应用:按照用户意图来裁剪数据库,采用分割子集、归并、变换数据元素或关系来导出子模式 • 在子模式中,仅描述特定用户所感兴趣并且允许他进行操纵的数据,屏蔽了其它与该用户无关的数据,这使系统具有数据独立性和保密性 • 子模式可以在数据库生命周期内任何时候定义并动态生成,用户可用它定义所需要的局部逻辑数据结构 • 子模式包括的内容与模式基本相同,只是各项命名、数据项的个数和次序等可不同于模式 • 多个应用程序可以共享同一子模式 • 子模式使用的数据模型可以不同于模式定义语言所对应的数据模型
分类(续) • 物理DDL • 用于定义数据库模式的物理实现细节,这些细节对于用户来说是不可见的 • eg. 用来定义数据库系统所使用的存储结构和访问方式的数据存储定义语言
数据操纵语言(Data Manipulation Language,DML) • 实现对数据库中按照某种特定数据模式组织起来的数据的访问或修改 • 检索存储在数据库中的数据 • 向数据库中插入新的数据 • 从数据库中删除旧数据 • 修改数据库中存储的数据
分类 • 过程性DML • 要求用户指定需要什么数据以及如何获得这些数据 • 面向对象数据库系统提供的数据操纵语言 • 描述性DML • 只要求用户指定需要什么数据就可以了,不用指明如何获得这些数据 • 关系数据库系统提供的数据操纵语言 • 描述性DML比过程性DML更易学易用 • 这正是关系系统优越于面向对象系统的显著特征之一 • 用户不必指明如何获得所需数据,数据库系统会自动选取访问数据的高效途径 • 特别地,DML中仅用于数据检索的部分又被称做查询语言(Query Language,QL)
宿主语言(Host Language,HL) • 使用户在其高级语言的应用程序中表达对数据库中数据的各种操作 • 数据库语言可以嵌入宿主语言(如C,C++,Java等)使用 • 增强高级语言对数据的操纵能力 • 扩充数据语言的演算能力 • 被嵌入到宿主语言中的数据库语言被称做嵌入式数据库语言(Embeded DataBase Language,EDBL)
宿主语言编译 • 嵌入式数据库语句 宿主语言原有的编译程序不能完全编译应用程序。解决办法: • 预编译方式 • 将嵌入数据库语句的宿主语言程序经过预编译后变成“纯”宿主语言程序,使之可以通过宿主语言的编译、连接而生成可执行代码 • 被嵌入的数据库语句通常被转换成对DBMS所提供过程的调用 • eg. ORACLE • 函数调用方式 • 提供函数调用接口来作为宿主语言和数据库管理系统的接口界面。该函数负责将应用程序中对数据库数据的操作命令传递给DBMS,并将DBMS返回的操作结果回送给应用程序 • eg. SYBASE, Open DataBase Connectivity (ODBC), Java DataBase Connectivity (JDBC)
数据库与应用程序的交互 本地数据 数据库 引发 数据库 过程调用 应用程序
第一章 数据库,对象库与知识库 • 1.1 DBMS的功能 • 1.2 数据抽象 • 1.3 数据库语言 • 1.4 数据库系统体系结构 • 1.4.1 数据库管理系统 • 1.4.2 数据库应用系统 • 1.5 对象库系统 • 1.6 知识库系统 • 1.7 历史与展望
数据库管理系统体系结构 • 存储管理器 • 作为在数据库中存储的底层数据与应用程序和向系统提交的交互式查询请求之间的接口,负责数据库中数据的存储、检索与更新 • 查询处理器 • 将在逻辑层编写的数据库操作语句转变成物理层的高效操作序列,以查询和更新的快速处理为重要目标,使数据库系统达到简化和高效的数据访问能力
数据库管理系统组成 • 保证即使发生故障,数据库也能够保持在一致的(正确的)状态,并通过并发访问控制机制保证并发事务的执行不发生冲突 • 典型的事务管理器功能包括并发控制管理、日志与恢复管理这两个主要部分,前者用于保证事务的原子性和独立性,后者负责事务的持久性 初级用户 应用程序员 高级用户 系统管理员 使用 编写 使用 使用 应用界面 应用程序 查询工具 管理工具 负责将数据从外存取到内存,并决定哪些数据应该被缓存在内存中 负责外存空间的分配,管理用于表示数据库所存储信息的数据结构 • 检测试图访问数据库的用户是否拥有相应的权限 • 检查对数据库的操作是否满足完整性约束的限制 应用程序目标代码 DML处理器 查询处理器 编译器和连接器 DDL解释器 执行引擎 用于存储数据库本身的内容 存储关于数据库结构的元数据,特别是诸如数据库描述表、权限表、完整性约束表、并发控制表等各种数据库模式 缓冲区管理器 权限及完整性管理器 文件管理器 事务管理器 完成对DDL命令的语法分析,并通过执行引擎根据模式定义信息实现对数据库字典中模式信息的修改 • 提供对包含特定值的数据项的快速访问 实现对DML命令的语法分析和优化,通过查询编译器产生查询计划,交执行引擎执行 • 由DBMS收集和存储的关于数据特征的数据。例如数据库大小,数据库中的各种关系等 • 执行查询计划或DBMS操作序列 存储管理器 存储器 数据字典 数据 索引 统计数据
数据库应用系统体系结构 • 按照运行数据库的计算机系统体系结构,可将数据库应用系统相应地划分为三类 • 集中式系统 • 分布式系统 • 客户/服务器系统
集中式系统 • 运行在一台计算机上,不与其它计算机系统交互 • 所有的程序,包括DBMS、应用程序以及与用户终端进行通信的软件等都运行在一台宿主计算机上,所有的数据处理都是在宿主计算机中进行 • 应用程序和DBMS之间通过操作系统管理的共享内存或应用任务区来进行通信,DBMS利用操作系统提供的服务来将数据写入外存,或从外存读入数据
集中式系统示例 打印机 控制器 磁带 控制器 磁盘 控制器 ... CPU 系统总线 存储器控制器 存储器
分类 • 按照用户使用计算机的方式,可将集中式系统分为 • 单用户系统(Single-user System) • 个人使用的桌面系统,通常一次只有一个用户使用计算机 • 用于单用户环境下的数据库系统一般不支持并发控制,另外故障恢复功能也非常有限(比如只是在更新之前简单地做一个数据库备份),很多这样的系统甚至不支持结构化查询语言(Structured Query Language,SQL) • 多用户系统(Multi-user System) • 为多用户系统设计的数据库系统支持前面讨论的各种DBMS功能 • 它可以包括多个硬盘和存储器,以及多个CPU • 多用户系统建立在多用户操作系统的基础之上,并通过它支持大量终端与系统的连接
分布式系统 • 一个分布式数据库系统由一个逻辑数据库组成,整个逻辑数据库的数据存储在分布于网络中的多台计算机上的物理数据库中 • 结点(Node)或站点(Site):分布式系统中的计算机,它们之间通过诸如高速网络或电话线等各种通信媒介相互通信,但不共享主存储器或磁盘 • 分布式数据库中的数据分布在网络的多个结点上,与集中式数据库相比,存在一些特殊问题 • 应用程序的透明性 • 结点自治性 • 分布式查询 • 分布式更新处理 • 等等
分布式系统示例 站点B 网络 站点A 通过网络通信 站点C
客户/服务器(Client/Server,C/S)系统 • 是集中式系统转化到分布式系统的中间产物:是一种既分布又集中的结构 • 分布:适应网络上站点资源分布的不均衡性 • 集中:方便系统的管理与维护 • 与分布式系统的主要区别 • 分布式:把网络作为系统整体的一个组成部分,网络为整个系统的各个结点机服务(结点机的物理分布范围一般很小),其作用是提供通讯手段,而不是进行资源共享。各个结点机之间是完全平等、自治的 • C/S:为适应网络中各站点资源分布的不均衡性,以便更好地发挥计算机网络资源的共享功能,客户机与服务器机并不平等 • C/S结构的主要特点 • 合作密切:Client与Server之间是请求与服务的关系,这种关系具有很强的合作性 • 资源共享:构造网络的主要目的是共享各种软硬件资源,C/S结构很好地适应了网络中各站点资源分布的不均衡性,以使得能在Client机上运行需要Server机上数据资源的应用程序 • 用户透明:在C/S模型中,Client机上的应用程序开发人员不必关心其所需数据实际存在于何处,只要当它们都在本地Client机上就可以了 • 服务封闭:Server如何完成服务对Client是封闭的。这使得在保持服务接口外特征不变的情况下,可以容易地对服务的内部实现进行修改与升级 • 不对称协议:Client机请求服务是主动的,Server提供服务是被动的,Server从不主动与Client发生关系