数据库系统概述:
1、记录:计算机中表示和存储数据的一种格式或方法。
2、数据库(DataBase, DB):数据库是长期储存在计算机内、有组织、可共享的大量数据集合。可为各种用户共享。
3、数据库管理系统(DataBase Management System, DBMS):了解数据库后,下一个问题则是如何科学地组织和存储数据、获取和维护数据。完成这一任务的则是一个系统软件—数据库管理系统。
(1)数据库管理系统是位于用户和操作系统之间的一层数据管理软件,和操作系统一样是计算机的基础软件。
(2)主要功能包括数据定义、数据组织,存储和管理、数据操纵功能、数据库的事务管理和运行管理、数据库的建立和维护功能、其他功能。
4、数据库系统(DataBase System, DBS):由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
5、数据管理技术经历了人工管理、文件系统、数据库系统三个阶段
(1)人工管理阶段:由用户(程序员)自己管理数据,程序中要定义自己数据,工作量大,一次性,数据修改时,应用程序也要修改。(在大规模数据时更是几乎不可能实现)
(2)文件系统阶段:由文件系统管理数据,数据存放在硬件中,长期保存,但一个文件只对应一个应用程序,数据冗余度大,共享性差,文件数据结构变化时,应用程序中对文件的定义和数据的使用也要修改。
(3)数据库阶段:由专门的数据管理软件,数据库管理系统管理数据。联机、分布式处理、多用户、多应用共享数据。
6、数据库底层是基于文件系统实现的,在其之上构建了一层抽象,依赖于文件系统管理底层存储。
7、数据库作用:
(1)简化了应用程序,提高效率,程序员无需自己编写复杂的数据操作在应用程序中,只需一条SQL语句。
(2)统一优化了数据存储和提高数据查询效率,一般程序员很难在应用程序中自行实现达到这么高效。
8、为什么定长记录和边长记录要分在两个文件?
(1)和查找效率、存储效率、可行性等有关,定长可以直接(N-1)*100确定位置,偏移量计算简单,变长的每条记录长度不同。
(2)定长、变长也可以放在一起,但需要额外记录每条记录的边界,且可能存储碎片,浪费空间,文件结构也会变复杂,要额外机制区分定长和变长记录。
9、文件系统中存取的单位是记录。文件系统容易导致数据不一致性,由于数据重复存储,可能有多个副本(因为没有一个统一的软件管理,每个应用可能都要在文件系统中存放数据?)。
10、数据模型是对现实世界数据的抽象,将具体事务抽象为计算机能处理的数据,用以描述数据、组织数据和对数据进行操作。
(1)将现实世界中的具体事务抽象、组织为数据模型,通常会先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。
(2)概念模型是现实世界到机器世界的一个中间层次。用于信息世界的建模。信息世界中的基本概念:
实体:客观存在并可相互区别的事务
属性:实体所具有的某一特性
码:唯一标识实体的属性集
实体型:用实体名及其属性名集合来抽象和刻画同类实体。
实体集:同一类型实体的集合
联系:事物内部及事物间是有联系的,在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
11、关系模型
(1)最重要的一种数据模型。
(2)关系:一个关系通常对应一张表
(3)属性:表中的一列。
(4)码:也可称码键,表中的某个属性组,可唯一确定一个元组,如图中的学号可以唯一确定一个学生。
(5)域:具有相同数据类型的值的集合。属性的取值来自某个域。如大学生年龄属性的域是(15~45岁),性别的域是(男、女)
(6)分量:元组中的一个属性值
(7)关系模型:对关系的描述,一般表示为:
关系名(属性1,属性2,…,属性n)
例如,图中关系可表示为:
学生(学号,姓名,年龄,性别,系名,年级)
关系模型的数据结构:
12、数据库系统的三级模式
数据库都采用三级模式
(1)模式:只是逻辑上的视图
(2)外模式:数据库用户所能看到的数据视图。每个用户只能看到和访问所对应外模式中的数据,数据库中的其余数据是不可见的。是保证数据库安全性的一个有力措施。
(3)内模式:也称为存储模型,是数据库中数据的物理结构和存储方式。
(4)使数据变化时,应用程序不用修改。减少了应用程序的编码和复杂度,同时提高了数据存储、读取的效率。
13、数据库系统对硬件的要求:
(1)内存大:足以存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序。
(2)磁盘等存储设备大:存放数据库,有足够大的磁带作数据备份。
(3)数据通讯速度够快:系统有较高的通道能力,以提高数据传送率。
14、数据库系统的主要软件:
(1)数据库管理系统:为数据库建立、使用和维护配置。
(2)操作系统:支持数据库管理系统运行
(3)开发语言、编译系统(器):便于开发应用程序
(4)以数据库管理系统为核心的应用开发工具:为数据库系统开发和应用提供了良好环境。
(5)为特定应用环境开发的数据库应用系统。
15、普通用户可以用程序员实现设计好的简单交互界面,替代数据库操作指令(语言)。
关系数据库
16、关系数据模型三要素:关系数据结构、操作集合、完整性约束
17、关系数据库结构定义:
(1)元组:表中的一行关系
(2)候选码:一个属性能唯一标识一个元组
(3)主码:多个候选码时,选的一个关系模型属性的集合结构,一般不变
(4)关系:不同属性间的联系,值,会由于关系操作不断变化
18、关系数据库系统只有“表”这一种数据结构,而非关系数据库系统还有其他数据结构。
19、SQL是介于关系代数和关系演算之间的一种结构化查询语言。
关系数据库标准语言SQL
20、结构化查询语言(Structured Query Language, SQL):是关系数据库的标准语言,其功能包括查询、数据库模式创建、数据插入与修改、数据库安全性完整性定义与控制等一系列功能。
21、SQL可在运行后随时修改数据库运行模式
22、模式:定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式该函的数据库对象,例如基本表、视图、索引等。
23、索引相当于加了一个标签,将每个数据的标签按某种规则放入一个存储空间中,加快检索。
24、数据字典:(1)关系数据库管理系统内部的一组系统表,记录了数据库中所有的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据的操作权限、统计信息等。
(2)关系数据库在执行SQL的数据定义语句时,就是在更新数据字典表中的相应信息。
26、视图:(1)是从基本表中导出的表(虚表),实际不存在,类似一个窗口,从数据库中看到自己感兴趣的数据。基本表中数据的变化会令其也随之变化。
(2)对视图的更新,最终要转为对基本表的更新
(3)视图可以让数据库逻辑结构改变时,应用程序不必去修改(但也只能一定程度上,应用程序仍可能会因基本表结构的改变而需要做相应修改)。
27、数据库完整性:数据的正确性和相容性。
(1)正确性:数据是符合现实世界语义、反应当前实际状况的
(2)相容性:数据库同一对象在不同关系表中数据是符合逻辑的。
(3)数据的完整性:防止数据库中存在不符合语义的数据
(4)数据的安全性:保护数据库防止恶意破坏和非法存取。
28、每次插入记录或对主码列更新时,都要进行检查。检查都要扫描,而全表扫描时,一般通过索引,如B+树来查找。
29、嵌入式SQL:是将SQL语句嵌入程序设计语言(C、C++、Java等)中,被嵌入的语言称为宿主语言(主语言)。
数据库恢复技术
30、事务:用户定义的一个数据库操作序列,要么全做,要么全不做,是不可分割的工作单位。(关系数据库中,事务是一条SQL语句、一组SQL语句或整个程序)
31、数据恢复的关键是建立冗余数据,最常用的技术是数据转储和登记日志文件,通常这两个方法会一起配合使用。
32、数据转储:定期将整个数据库复制到磁带、磁盘或其他存储介质保存(即后备副本)。
(1)静态转储:系统中无运行事务时的转储操作,转储期间不允许任何对数据库的操作。
(2)动态转储:转储和用户事务可以并发执行,但无法保证数据的正确有效,如刚将A=100转储到磁带上,下一时刻其他事务又将A改为200,转储结束时A已是过时的数据。为此需建立日志文件,将转储期间各事务对数据库的修改活动登记下来。
31、日志文件:记录事务对数据库的更新操作。
利用日志文件恢复:
32、登记日志文件的原则:
(1)登记的次序严格按并发事务执行的时间次序。
(2)必须先写日志文件,后写数据库。
33、检查点记录:增加了一个重新开始文件,用以记录各个检查点记录在日志文件中的地址。使用检查点可以避免检查点之前已经修改数据库的事务重做操作
检查点记录内容:(1)建立检查点时刻所有正在执行的事务清单(2)这些事务最近一个日志记录的地址。
作用(1)避免数据库恢复时要搜索所有日志记录(2)避免更新操作已经完成的事务在恢复子系统中再次执行。
重新开始文件和具有检查点的日志文件。
34、数据库镜像:
自动将整个数据库或其中的关键数据复制到另一个磁盘上,数据库更新时,自动将更新后的数据复制过去。
(1)介质故障时,可由镜像数据库继续提供使用
(2)未出现故障时,数据库镜像还可用于并发操作,即一个用户对数据加排他锁时,其他用户可以继续读镜像数据库上的数据,不必等待该用户释放锁。
数据库镜像:
并发控制
35、事务是并发控制的基本单位
36、并发操作会导致数据的不一致性,包括:
(1)丢失修改:两个事务T1和T2读入同一数据(同时)并修改,T2的提交破坏了T1提交的结果,使其丢失。如A=16,T1中A=16-1=15;T2中A=16-3=13。
(2)不可重复读:T1读取后,T2对其修改,使T1无法再次读取到与前次相同的值。如:T1中,A=50,B=100,第一次求和=150,接着T2中B=200,T1再次求和=250,验算不对。
(3)读“脏”数据:T1修改数据并写回磁盘,T2读取相同数据,随后T1被撤销,此时T2读取的数据就为“脏”,即不正确的数据。
如:A=100,T1中A=A*2=200,T2中读A=200,T1撤销,数据库中A实际值变回100。
37、并发控制:使用调度方式,使用户事务的执行不受其他事务影响。主要技术有封锁(locking)、时间戳(timestamp)、乐观控制法(optimistic)和多版本并发控制(multi-version concurrency control, MVCC)。
38、封锁:排他锁(X锁)又称为写锁。共享锁(S锁)又称为读锁。
(1)一级封锁协议:事务T在修改数据R前须先加X锁,事务结束时才释放。可解决丢失修改问题。
(2)二级封锁协议:在一级的基础上增加T在读数据R前须先加S锁,读完后即可释放。防止了丢失修改,并进一步解决读“脏”数据问题。
(3)三级封锁协议,在一级的基础上增加T在读数据R前须先加S锁,事务结束时才释放。可解决不可重复读在内的三种数据不一致情况。
39、活锁:T1封锁数据R,期间T2请求封锁R,T3又请求封锁R,然而系统首先批准了T3的请求,此时T4又请求封锁R,T3解除后又批准了T4的请求,以此类推,T2可能永远等待。
40、死锁:T1锁R1又请求R2,T2锁R2又请求R1,互相一直等待。
41、若多个事务的并发执行是正确的,当且仅当其结果与按某一次串行执行事务时的结果相同,该调度策略称为可串行化。
42、两段锁协议可实现并发调度的可串行性(可串行化)。
(1)所有事务在对任何数据读、写操作前,要先申请并获取该数据的封锁(可以申请任何锁,但不能释放)。
(2)释放一个封锁之后,事务不再申请和获得任务其他封锁(可以释放任何锁,但不能申请)。
43、时间戳:给每个事务盖上一个时标,若发生冲突,则回滚较早时间戳的事务。
44、乐观控制法:认为事务执行时很少发生冲突,事务提交前才进行检查。若发现事务中出现冲突,则拒绝提交并回滚该事务。
45、多版本并发控制:
(1)版本:数据库中数据对象的一个快照,记录了数据对象某个时刻的状态。
(2)数据对象A有T1写和T2读两个事务。执行时,T2无需等待T1,而是在新生成版本的A‘上执行,提交时再检查T1是否已完成。
数据库管理系统
46、关系数据库管理系统的层次结构:
(1)应用层(2)语言处理层,如SQL(3)数据存取层(4)数据存储层(5)操作系统,保证数据库管理系统对数据的读写真实映射到物理文件上。(6)数据库
47、关系数据库管理系统运行过程:
(1)用户通过应用程序发出命令,如SELECT。
(2)RDBMS对命令进行语法检查、语义检查,用户权限检查。
(3)RDBMS进行查询优化。优化器根据数据字典中的信息进行优化,将命令转换为一串单记录的存储操作序列。
(4)RDBMS执行存取操作序列。
(5)RDBMS首先在缓冲区查找,若找到则转(10),否则转(6)
(6)RDBMS查看存储模式,选择从哪个文件、方式读取哪个物理记录。
(7)根据(6)的结果向操作系统发出读取记录的命令
(8)操作系统执行读操作
(9)操作系统将数据从数据库的存储区送至系统缓冲区。
(10)RDBMS根据查询命令和数据字典导出用户所要读取的记录格式。
(11)RDBMS将数据记录从系统缓冲区送至应用程序的用户工作区。
(12)RDBMS返回执行状态信息,如成功读取或不超过的错误提示、例外状态信息等。
动作(1)属于应用层。动作(2)、(3)属于语言处理层。动作(4)、(10)、(11)、(12)属于数据存取层。动作(5)、(6)、(7)属于数据存储层。动作(8)、(9)由操作系统执行。
48、语言处理层:将数据库语言转为可执行的基本存取模块的调用序列。数据库语言包括数据定义语言、数据操纵语言和数据控制语言三部分。
49、关系数据库管理系统中数据字典采用和普通数据同样的关系表(table)来表示。
50、预编译方法:基本思想是指在用户提交数据操纵语句后,在运行前对它进行翻译处理,保存产生好的可执行代码。当需要运行时,去除保存的可执行代码加以执行。
51、数据存取层:主要数据结构为逻辑数据记录、逻辑块、逻辑存取路径(不涉及物理存储形式,只在逻辑结构上操作)。主要任务包括:
(1)提供查找、插入、删除、修改等基本操纵。
(2)提供存取路径及对存取路径的维护,如索引记录的查找、插入、删除、修改,若索引是B+树,则提供B+树的建立、查找、插入、删除、修改等功能。
(3)对记录和存取路径的封锁、解锁操作。
(4)日志文件的登记和读取操作。
(5)其他辅助操作,如扫描、合并/排序,其操作对象由关系、有序表、索引等。
操作系统和数据库管理系统封锁技术比较:
52、数据存储层:主要功能是存储管理,包括缓冲区(buffer)管理、内外存交换、外存管理等。
(1)系统缓冲区可由内存和虚存组成。
(2)缓冲区管理调用的操作系统的操作有读(READ)、写(WRITE)。缓冲区管理会用到淘汰算法和查找算法,可借鉴操作系统中的淘汰算法,如FIFO(先进先出算法)、LRU(最近最少使用的先淘汰算法)。查找算法用以确定请求的页是否在内存,有折半查找、hash查找算法等。
53、数据库实现基础是文件,对数据库的任何操作最终都会转化为对文件的操作。
54、数据库系统是文件系统的发展。文件系统中的文件存储的是同质实体数据,各文件间孤立,没有体现实体间的联系。数据库系统中数据的物理组织必须体现实体之间的联系,支持数据库的逻辑结构—各种数据模型,则数据库中要存储下列4方面数:
(1)数据描述,即数据的外模式、模式、内模式
(2)数据本身
(3)数据之间的联系
(4)存取路径
55、分布式数据库:由一组数据组成,这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理的能力,可以执行局部应用。同时,每个节点也能通过网络通信系统执行全局应用。(即每个场地是独立的数据库系统,有自己的数据库、用户、服务器、DBMS,执行局部应用,具有高度自治性,同时各个场地的数据库系统又相互协作组成一个整体。)
57、内存数据库:即将内存作为主存储设备的数据库系统。
(1)内存数据库的数据组织、存储访问模型和查询处理模型都针对内存特性进行了优化设计,内存数据被处理器直接访问。
(2)与内存访问延迟密切相关的硬件是TLB(Translation Lookaside Buffer, 旁路缓冲,也称为页表缓冲)。TLB是硬件级缓存,类似CPU的cache,主要存放内存页表。内存的页表区中,记录虚拟页面和物理页框对应关系的记录称为一个页表条目(entry)。
(3)TLB中存放着一些页表条目,CPU收到应用程序发来的虚拟地址后,会先到TLB中查找对应的页表数据,若TLB中存放着所需的页表,则称为TLB命中(TLB hit)。接下来CPU会去查看TLB中页表对应的物理内存地址中的数据是否已在一、二级缓存中,若不存在则为TLB miss,若不在则需去页表区中寻址,将其映射关系更新到TLB中以备下次使用。由于TLB大小有限,一旦TLB miss查询代价会很高,所以现代CPU架构都采用一些优化方法,如一开始同时在TLB和内存页表去进行查询,而不是在TLB miss后才启动内存页表查询;使用多级TLB以及软TLB,在CPU内容切换(context switch)时不清空(flush)TLB。
56、计算机系统中存在着两类不同的数据处理工作:操作型处理和分析型处理,也称作联机事务处理(OLTP)和联机分析处理(OLAP)。
(1)操作型处理:也称作事务处理,通常是对一个或一组记录的查询和修改的数据库日常操作,如火车售票系统、银行系统、税务征收管理系统。要求快速响应、安全性、完整性和事务吞吐量高。
(2)分析型处理:指对数据的查询和分析操作,通常是对海量的历史数据查询和分析,如金融风险预测预警系统、证券故事违规分析系统等,访问的数据量通常非常大,查询和分析操作十分复杂。