1、目录目录第一节第一节 安全与保护概述安全与保护概述 第二节第二节 数据库的完整性数据库的完整性第三节第三节 数据库的安全性数据库的安全性 第四节第四节 数据库的并发控制数据库的并发控制 第五节第五节 数据库的恢复数据库的恢复机械工业出版社机械工业出版社0 本章从完整性控制、安全性控制、并发控制、数据库恢复四个方面来介绍数据库的安全与保护功能,读者应掌握安全性(Security)、完整性(Integrity)、并发控制(Concurrent Control)和数据库恢复(Recovery)的含义,掌握这四个方面的分别实现 安全保护功能的方法。机械工业出版社机械工业出版社15.1安全与保护概述 D
2、BMS层所提供的如下数据库安全和保护功能:机械工业出版社机械工业出版社2安全性(安全性(security)保护:即防止非法用)保护:即防止非法用户对数据库的非法使用,以避免数据的户对数据库的非法使用,以避免数据的泄露、篡改或破坏。泄露、篡改或破坏。完整性完整性(integrity)保护:即保证数据的保护:即保证数据的正确性和一致性。正确性和一致性。并发控制(并发控制(concurrent control):即保):即保证多用户能共享数据库,并维护数据的证多用户能共享数据库,并维护数据的一致性。一致性。数据库恢复(数据库恢复(database recovery):即):即在系统失效后的数据库恢复
3、,配合定时在系统失效后的数据库恢复,配合定时备份数据库,使数据库不丢失数据。备份数据库,使数据库不丢失数据。机械工业出版社机械工业出版社35.2 数据库的完整性(Integrity)数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。比如年龄属于数值型数据,只能含0,1,9,不能含字母或特殊符号;月份只能用112之间的正整数表示;性别只能是男或者女等等。表示同一事实的两个数据应相同,否则就不相容,如一个人不能有两个学号。维护数据库的完整性非常重要,数据库中的数据是否具备完整性关系到数据能否真实地反映现实世界。因此维护数据的完整性是非常重要的。机械工
4、业出版社机械工业出版社45.2.1数据库的完整性分类 1.实体完整性 实体完整性也就是对主码的约束,在关系中,主码不能为空,也不允许重复出现。实体完整性的定义可在创建基本表时说明,也可在修改基本表时增加或删除。说明方式有两种:列级说明和表级说明。2.参照完整性 参照完整性也就是对外码进行约束,在关系中,外码的取值或者是空值,或者是参照被参照关系的相应属性列的取值。参照完整性简单地说就是表间主码外码的关系,其属于表间规则。3.用户定义完整性 用户定义完整性是指用户为了满足特定的要求而做的一些与数据完整性有关的一些定义,主要体现实际运用的业务规则,可在列 级和表级上定义。机械工业出版社机械工业出版
5、社55.2.2数据库的完整性约束 为维护数据库的完整性,DBMS必须提供一种机制来检查数据库中数据的完整性。保证数据库中数据的完整性的方法之一是设置 完整性检验,即DBMS检查数据是否满足完整性条件的机制。机械工业出版社机械工业出版社65.2.2.1完整性约束类型 1静态约束 静态约束是指数据库每个确定状态所应满足的约束条件,是反映数据库状态合理性的约束,这是重要的一类完整性约束。又可分为下面三种:1)固有约束:指数据模型固有的约束,例如关系的属性应当是原子 的,即满足1NF的约束。2)隐含约束:指隐含于数据模式中的约束,一般用DDL语句说明,并存于数据目录中,例如域完整性约束、实体完整性约束
6、以及引用 完整性约束,都用相应的DDL语句说明。3)显式约束:数据完整性是多种多样的,且依赖于数据的语义和应 用,这些约束只有显式地说明,故称显式约束。机械工业出版社机械工业出版社72动态约束 动态约束是指数据库从一种状态转变为另一种状态时,新旧值之间所有应满足的约束条件,动态约束反映的是数据库状态变迁的约束。例如:学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。机械工业出版社机械工业出版社8完整性约束条件的六种类型完整性约束条件的六种类型:完整性约束条件完整性约束条件根据作用对象的粒度和状态根据作用对象的粒度和状态 静态列级约束静态列级约束 静态元组约束静态元组约束 静态关系
7、约束静态关系约束 动态列级约束动态列级约束 动态元组约束动态元组约束 动态关系约束动态关系约束 机械工业出版社机械工业出版社95.2.2.2完整性约束说明 1.用过程说明约束 把约束的说明和检验推给应用程序。2.用断言说明约束 断言指数据库状态必须满足的逻辑条件。3.用触发器说明约束 触发器是建立在某个关系上的一系列SQL语句的集合,并经预先编译后存储在数据库中。机械工业出版社机械工业出版社105.3数据库的安全性 5.3.1用户的标识与鉴别 5.3.2 存取权限控制 对每个用户,可以定义以下两种存取控制权限:(1)数据对象权限:规定了用户使用数据库中数据对象的范围;(2)操作类型权限:规定了
8、用户在可使用数据对象上能执行的操作;机械工业出版社机械工业出版社11表表5-1:关系系统中的存取权限关系系统中的存取权限数据对象数据对象操作类型操作类型模式模式模式模式建立、修改、检索建立、修改、检索 外模式外模式建立、修改、检索建立、修改、检索 内模式内模式建立、修改、检索建立、修改、检索数据数据表表查找、插入、修改、删除查找、插入、修改、删除 属性列属性列查找、插入、修改、删除查找、插入、修改、删除 机械工业出版社机械工业出版社125.3.3 视图机制 在关系数据库系统中,视图是提供给用户以多种角度观察数据库中数据的重要机制,是从一个或几个基表(或视图)导出的表,它与基表不同,是一个虚表。
9、5.3.4 跟踪审查 跟踪审查是一种后监视措施,它跟踪数据库的访问活动,以发现数据库的非法访问,达到安全防范的目的。5.3.5 数据加密存储 数据加密就是将明文数据经过一定的变换变成密文数据。机械工业出版社机械工业出版社135.4数据库的并发控制 5.4.1 事务及特性 1事务 在SQL中,用户显式定义事务的语句有如下3条:u BEGIN TRANSACTION:该语句显式地定义一个事务的开始。在应用程序的某处嵌入此语句,就表示一个新的事务已经开始。u COMMIT:该语句显式地提交一个事务,并表示该事务已正常结束。所谓提交事务,就是将该事务对数据库的所有更新操作结果永久地保存到磁盘上的物理数
10、据库中去。因此,此语句用于事务的正常结束情况。u ROLLBACK:该语句显式地回滚一个事务,且表示事务因执行失败而结束。所谓回滚事务,就是撤消该事务对数据库的所有更新操作,使数据库恢复到该事务开始时的状态。因此,此语句用于事务执行失败的结束情况。机械工业出版社机械工业出版社142事务的特性原子性原子性一致性一致性隔离性隔离性持续性持续性一个事务是不一个事务是不可分割的数据可分割的数据库逻辑工作单库逻辑工作单位位,事务中包括事务中包括的所有操作要的所有操作要么都做,要么么都做,要么都不做,即不都不做,即不允许事务部分允许事务部分地完成。地完成。事务的执行结事务的执行结果必须使数据果必须使数据库
11、从一个一致库从一个一致性状态变到另性状态变到另一个一致性状一个一致性状态。数据库的态。数据库的一致性状态指一致性状态指数据库中的数数据库中的数据满足完整性据满足完整性约束。约束。一个事务的执一个事务的执行不能被其他行不能被其他事务干扰,即事务干扰,即一个事务内部一个事务内部的操作及其所的操作及其所使用的数据对使用的数据对并发执行的其并发执行的其他事务是隔离他事务是隔离的。的。一个事务一旦一个事务一旦提交,它对数提交,它对数据库中数据的据库中数据的改变应该是永改变应该是永久性的,其他久性的,其他操作或故障不操作或故障不对其产生任何对其产生任何影响影响。事务具有四个特性,即原子性、一致性、隔离性和
12、持续 性,又常简称为ACID特性。机械工业出版社机械工业出版社15例:例:BEGIN TRANRead A AA-S If A0 /*A款不足款不足*/Then Begin Display“A款不足款不足”ROLLBACK End Else Begin BB+S Display“拨款完成拨款完成”COMMIT End 这个事务有两个可能的出口:l 以ROLLBACK(撤消)命令结束,即撤消事务的影响,这相当于“nothing”;l 以COMMIT(提交)命令结束,这相当于“all”。机械工业出版社机械工业出版社165.4.2数据库的并发控制 DBMS的并发控制是以事务为单位进行的。5.4.3
13、并发的目的 改善系统的资源利用率。改善短事务的响应时间。机械工业出版社机械工业出版社175.4.4并发所引起的问题 并发操作所带来的数据不一致可以分为四种情况:1丢失修改(lost update):事务T1 时间 事务T2 读A=16 t1 t2 读A=16 A=A-1 t3写回A=15 t4 A=A-4 写回A=12(覆盖了T1对A的修改)机械工业出版社机械工业出版社182脏读(dirty read):事务T1 时间 事务T2 读B=100 t1 B=B*2=200 写回B=200 t2 读B=200(读入T1的脏数据)ROLLBACK t3 B恢复为100 机械工业出版社机械工业出版社19
14、3不可重复读(unrepeatable read):事务T1 时间 事务T2 读A=50 t1 读B=100 求和S=150 t2 读B=100 B=B*2,写回B=200 读A=50 t3读B=200 求和S=250 4.产生幽灵数据机械工业出版社机械工业出版社205.4.5并发控制方法 5.4.5.1 封锁技术 封锁是防止其他事务访问指定资源的一种手段。封锁(locking)是实现并发控制的一个非常重要的技术。所谓封锁就是在一段时间内禁止某些用户对数据对象作某些操作以避免产生数据的不一致性问题,即事务T在对某个数据对象如表、元组等进行操作之前,先向系统发出请求,封锁其所要使用的数据。加锁成
15、功后,事务T就对数据对象有了一定的控制权,在事务T释放它的锁之前,其他的事务就不能更新此数据对象。基本的封锁一般有排它锁和共享锁两种类型。机械工业出版社机械工业出版社21排它锁:排它锁:又称又称X锁锁或写锁,如果某事务或写锁,如果某事务对某数据建立了排它对某数据建立了排它锁,则该事务能对该锁,则该事务能对该数据对象进行读、修数据对象进行读、修改、插入和删除等操改、插入和删除等操作,而其他事务则不作,而其他事务则不能。能。封锁类型封锁类型共享锁:共享锁:又称又称S锁或读锁,锁或读锁,如果某事务对数据建立了共如果某事务对数据建立了共享锁,则此时该事务能对该享锁,则此时该事务能对该数据对象进行读操作
16、,但不数据对象进行读操作,但不能进行修改等更新操作,而能进行修改等更新操作,而其他事务只能对该数据对象其他事务只能对该数据对象加加S锁,而不能加锁,而不能加X锁,即其锁,即其他事务只能对该数据对象进他事务只能对该数据对象进行读操作。行读操作。机械工业出版社机械工业出版社22 表5-2 封锁类型的相容矩阵2.封锁粒度3.封锁协议XS无锁无锁XooYesSoYes Yes无锁无锁YesYesYesT1T2排它锁与共享锁的控制方式可以用如表5-2所示的相容矩阵来表示。机械工业出版社机械工业出版社23封锁协议封锁协议一级封一级封锁协议锁协议若某事务T要修改某个数据对象,则必须先对该数据对象加X锁,直到
17、事务结束后才释放。此种封锁协议可防止“丢失修改”所产生的数据不一致性问题。一级封锁协议加上某事务T若要读取某个数据对象之前,必须先对该数据对象加S锁,读完后即可释放S锁,这样可进一步防止“读脏数据”的问题。一级封锁协议加上某事务T若要读取某个数据对象之前,必须先对该数据对象加S锁,且直到该事务结束后才可释放S锁,这样可进一步防止数据“不可重复读”的问题。二级封二级封锁协议锁协议三级封三级封锁协议锁协议机械工业出版社机械工业出版社24事务T1 时间 事务T2 对A 加X锁获得 t1 读A=16 t2 t3 要对A加X锁 等待 修改A=A-1 t4 等待 写回A=15 释放对A的X锁 t5 等待
18、t6 获得对A的X锁 t7 读A=15 t8 修改A=A-4,写回A=11 释放对A的X锁图图5-4 没有丢失修改没有丢失修改机械工业出版社机械工业出版社25事务T1 时间 事务T2 对C加X锁获得 t1 读C=50 t2 求C=C*2 t3 写回C=100 t4 要对C加S锁 等待 回滚 t5 等待(C恢复为50)释放C的锁 t6 等待 t7 获得C的S锁 t8 读C=50 释放C的S锁 图图5-5 不读不读“脏脏”数据数据机械工业出版社机械工业出版社26事务T1 时间 事务T2 对A、B分别加S锁获得 t1 读A=50,B=100 t2 求和S=100 t3 要对B加X锁 等待 读A=50
19、,B=100 t4 等待 求和S=150 将和值写回到数据库中 t5 等待 释放A的锁 t6 等待 释放B的锁 t7 获得B的X锁 t8 读B=100 修改B=B*2,写回B=200 t9 释放C的S锁 图图5-6 可重复读可重复读 机械工业出版社机械工业出版社27X锁锁锁锁一致性保证一致性保证 操作结操作结束释放束释放 事务结事务结束释放束释放 操作结操作结束释放束释放事务结事务结束释放束释放不丢不丢失修失修改改不读不读脏数脏数据据 可重复可重复读读 一级一级封锁封锁协议协议 二级二级封锁封锁协议协议三级三级封锁封锁协议协议 表5-2封锁协议级别机械工业出版社机械工业出版社28活锁:活锁:如
20、果事务如果事务T1封锁了数据对象封锁了数据对象R后,事务后,事务T2也请求封锁也请求封锁R,于是,于是T2等待。接着等待。接着T3也请求封锁也请求封锁R。当。当T1释放了加在释放了加在R上的锁后,系统首先批上的锁后,系统首先批准了准了T3的请求,的请求,T2只得继续等待。只得继续等待。接着接着T4也请求封锁也请求封锁R,T3释放释放R上的上的锁后,系统又批准了锁后,系统又批准了T4的请求,依的请求,依次类推,因此,事务次类推,因此,事务T2就有可能这就有可能这样永远地等待下去。样永远地等待下去。封锁问题封锁问题死锁:死锁:如果事务如果事务T1封锁了数据对象封锁了数据对象A,T2封锁了数据对象封
21、锁了数据对象B之后,之后,T1又又申请封锁数据对象申请封锁数据对象B,且,且T2又申请封又申请封锁数据对象锁数据对象A。因。因T2已封锁了已封锁了B,于,于是是T1等待等待T2释放加在释放加在B上的锁。因上的锁。因T1已封锁了已封锁了A,T2也只能等待也只能等待T1释释放加在放加在A上的锁。上的锁。T1和和T2这两个事务这两个事务永远不能结束,这就是死锁问题。永远不能结束,这就是死锁问题。机械工业出版社机械工业出版社295.4.5.2 时标技术 所谓时标(timestamping),即时间标记,是由计算机系统生成的一个随时间增长的整数,可以用系统的时钟,也可以专门设计一个计数器,每进入一个事务
22、就加一。5.4.6 并发调节的可串行性 定义定义5.1 多个事务的并发执行是正确的,当且仅当其结果与按某一多个事务的并发执行是正确的,当且仅当其结果与按某一 次序串行执行它们时的结果相同,我们称这种调度策略为可串行化次序串行执行它们时的结果相同,我们称这种调度策略为可串行化(serializable)的调度。)的调度。机械工业出版社机械工业出版社305.4.7两段锁协议 两段锁协议(Two-Phase Locking,简称2PL),是指所有事务必须分两个阶段对数据项加锁和解锁。在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁,在释放一个封锁之后,事务不再申请和获得任何其他封锁。机械工业出版社机械工业出版社315.5数据库的恢复5.5.1故障种类(1)事务故障(2)系统故障(3)介质故障5.5.2恢复基本策略 1.事务故障的恢复 2.系统故障的恢复 3.介质故障的恢复 4.具有检查点的恢复机械工业出版社机械工业出版社325.5.3数据库备份 从数据库恢复基本策略中可知,影响数据库恢复的主要是日志文件和数据库备份。1.日志文件 2.数据库备份机械工业出版社机械工业出版社33