《数据库保护》PPT课件

上传人:枫** 文档编号:577867108 上传时间:2024-08-22 格式:PPT 页数:50 大小:511KB
返回 下载 相关 举报
《数据库保护》PPT课件_第1页
第1页 / 共50页
《数据库保护》PPT课件_第2页
第2页 / 共50页
《数据库保护》PPT课件_第3页
第3页 / 共50页
《数据库保护》PPT课件_第4页
第4页 / 共50页
《数据库保护》PPT课件_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《《数据库保护》PPT课件》由会员分享,可在线阅读,更多相关《《数据库保护》PPT课件(50页珍藏版)》请在金锄头文库上搜索。

1、第8章数据库保护 本章重要概念(1)完整性的定义,完整性子系统的功能,完整性规则的组成。SQL中的三大类完整性约束,SQL3中的触发器技术。 (2)安全性的定义、级别,权限,SQL中的安全性机制,几种常用的安全性措施,自然环境的安全性。 本章重要概念(3)事务的定义,COMMIT和ROLLBACK的语义,事务的ACID性质,事务的状态变迁图。(4)存储器类型,稳定存储器的实现,数据传送过程。(5)恢复的定义、基本原则和实现方法,故障的类型,检查点技术,REDO和UNDO操作,运行记录优先原则。 (6)并发操作带来的三个问题,X锁、PX协议、PXC协议,S锁、PS协议、PSC协议,活锁、饿死和死

2、锁,并发调度,串行调度,并发调度的可串行化,两段封锁法,SQL中事务的存取模式和隔离级别。数据库保护8.1 事务8.2 数据库完整性8.3 数据库安全性8.4 数据库恢复技术8.5 并发控制本章小结8.1 事务n定义事务(transaction)是构成单一逻辑工作单元的操作集合。 n性质n原子性(Atomicity):事务是一个不可分割的工作单元。 n一致性(Consistency) :即数据不会应事务的执行而遭受破坏。n隔离性(Isolation) :在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样。n持久性(Durability) :一个事务一旦完成全部操作后,它对数据库

3、的所有更新应永久地反映在数据库中。例子:事务及其性质相应的事务: T:read(A); A:=A50; write(A); read(B); B:=B + 50; write(B). n原子性(A,B同时被修改或同时保持原值)n一致性(A+B的值不变)n隔离性n持久性问题:设银行数据库中有一转账事务T,从账号A转一笔款子($50)到账号B。事务提交和事务撤销n事务的所有操作都完成了,则事务提交(COMMIT),否则事务撤销(ROLLBACK)nBEGIN TRANSACTION标志事务开始执行nBEGIN TRANSACTION和COMMIT或ROLLBACK一起保证了事务的四个性质n对数据库

4、访问的两个基本操作:读和写,但完成写操作后,数据可能暂时放在内存中,而非直接写进数据库。8.2 数据库完整性n数据库的完整性n完整性子系统的主要功能 n监督事务的执行,并测试是否违反完整性规则 n若有违反现象,则采取恰当的操作,譬如拒绝操作、报告违反情况、改正错误等方法来处理 n完整性规则 n什么时候使用规则进行检查(称为规则的“触发条件”) n要检查什么样的错误(称为“约束条件”或“谓词”) n如果查出错误,应该怎么办(称为“ELSE子句”,即违反时要做的动作) SQL中的完整性约束1-域约束n域约束域约束 用用“CREATE DOMAIN”CREATE DOMAIN”语句定义新的域,并且还

5、可出语句定义新的域,并且还可出现现CHECKCHECK子句子句 n定义一个新的域COLOR,可用下列语句实现:CREATE DOMAIN COLOR CHARCREATE DOMAIN COLOR CHAR(6 6) DEFAULT ?DEFAULT ?CONSTRAINTCONSTRAINT V_COLORS V_COLORS CHECKCHECK(VALUE IN (Red,Blue,YellowVALUE IN (Red,Blue,Yellow,GreenGreen,?)?);SQL中的完整性约束2-基本表约束n候选键的定义UNIQUE(列名序列)或 PRIMARY KEY(列名序列)n

6、外键的定义FOREIGN KEY(列名序列)REFERENCES () ON DELETE ON UPDATE n“检查约束”的定义CHECK(条件表达式) 关于外键约束完整性的补充n删除参照表中元组时的考虑nNO ACTIONnCASCADE方式 nRESTRICT方式 nSET NULL方式 nSET DEFAULT方式n修改参照表中主键值时的考虑nNO ACTIONnCASCADE方式 nRESTRICT方式 nSET NULL方式 nSET DEFAULT方式 关于数据库完整性的例子学生关系S(S#,SNAME,AGE,SEX,SDEPT)选课关系SC(S#,C#,GRADE)课程关系

7、C(C#,CNAME,CDEPT,TNAME) 在教学数据库中,要求S中的元组满足条件:男生年龄在1535岁之间,女生年龄在1530岁之间 。对应的语句为:CHECK(AGE = 15 AND((SEX =男 AND AGE = 35) OR (SEX =女 AND AGE = 30)); CREATETABLESC(S#CHAR(4),),C#CHAR(4),),GRADESMALLINT,PRIMARYKEY(S#,C#),),CHECK(S#IN(SELECTS#FROMS),CHECK(C#IN(SELECTC#FROMC); 在在SC中插入一个元组,若中插入一个元组,若C#值在值在C

8、中不存中不存在,则系统将拒绝这个插入操作。在,则系统将拒绝这个插入操作。 在在SC中插入一个元组,若中插入一个元组,若S#值在值在S中不存中不存在,则系统将拒绝这个插入操作。在,则系统将拒绝这个插入操作。 在在S中删除一个元组,这个操作将与关系中删除一个元组,这个操作将与关系SC中的检查子句无关。若此时中的检查子句无关。若此时SC中存在被删学生中存在被删学生的选课元组时,的选课元组时,SC将违反检查子句中条件。将违反检查子句中条件。SQL中的完整性约束3-断言n断言断言n如果完整性约束牵涉面较广,与多个关系有关,或者与如果完整性约束牵涉面较广,与多个关系有关,或者与聚合操作有关,那么聚合操作有

9、关,那么SQL2SQL2提供提供“断言断言”(AssertionsAssertions)机制让用户书写完整性约束机制让用户书写完整性约束 nCREATE ASSERTION CREATE ASSERTION CHECK CHECK( ) nDROP ASSERTION DROP ASSERTION n每位教师开设的课程不能超过10门。CREATE ASSERTIONCREATE ASSERTION ASSE1 ASSE1 CHECK CHECK(10 = ALL10 = ALL(SELECT COUNTSELECT COUNT(C#C#)FROM CFROM C GROUP BY TNAMEG

10、ROUP BY TNAME);); SQL3的触发器n什么是触发器n触发器的组成n事件:插入、删除、修改等操作,引发触发器的操作n条件:引发触发器的条件n动作:引发触发器后的操作触发器的命名动作时间触发事件目标表名旧值和新值的别名表动作间隔尺寸触发动作动作时间条件动作体SQL3的触发器实例n下面是应用于选课关系SC的一个触发器。这个触发器规定,在修改关系SC的成绩值时,要求修改后的成绩一定不能比原来的低,否则就拒绝修改 CREATE TRIGGER TRIG1 AFTER UPDATE OF GRADE ON SCREFERENCING OLD AS OLDTUPLE NEW AS NEWTU

11、PLEFOR EACH ROWWHEN (OLDTUPLE.GRADE NEWTUPLE.GRADE)UPDATE SC SET GRADE = OLDTUPLE.GRADEWHERE C# = NEWTUPLE.C# 8.3 数据库安全性n什么是数据库的安全性n安全性级别n环境级:计算机系统的机房和设备应加以保护,防止有人进行物理破坏。n职员级:工作人员应清正廉洁,正确授予用户访问数据库的权限。nOS级:应防止未经授权的用户从OS处着手访问数据库。n网络级:由于大多数DBS都允许用户通过网络进行远程访问,因此网络软件内部的安全性是很重要的。nDBS级:DBS的职责是检查用户的身份是否合法及使

12、用数据库的权限是否正确。(1)读权限:允许用户读数读权限:允许用户读数据,但不能改数据。据,但不能改数据。插入权限:允许用户插插入权限:允许用户插入新数据,但不能改数据。入新数据,但不能改数据。修改权限:允许用户改修改权限:允许用户改数据,但不能删除数据。数据,但不能删除数据。删除权限删除权限权限n访问数据的权限 n索引(Index)权限: 允许用户创建和删除索引。n资源(Resourse)权限: 允许用户创建新的关系。n修改(Alteration)权限:允许用户在关系结构中加入或删除属性。n撤消(Drop)权限:允许用户撤消关系。 权限的授予和回收DBADBAU U1 1U U4 4U U2

13、 2U U5 5U U3 3权限转授图 一个用户拥有权限一个用户拥有权限的充分必要条件是的充分必要条件是在权限图中从根结在权限图中从根结点到该用户结点存点到该用户结点存在一条路经在一条路经 DBADBAU U1 1U U2 2U U3 3DBADBAU U1 1U U2 2U U3 3DBADBAU U1 1U U2 2U U3 3SQL中的安全性机制n视图nSQL2中的用户权限及其操作n用户权限: SELECT INSERT DELETE UPDATE REFERENCES USAG n授权语句GRANT ON TO WITH GRANT OPTION n回收语句REVOKE ON FROM

14、 RESTRICT | CASCADE SQL中的权限操作实例nGRANT SELECT,UPDATE ON S TO WANG WITH GRANT OPTION nGRANT INSERT (S#,C#) ON SC TO LOU WITH GRANT OPTIONnGRANT REFERENCES (CNO) ON C TO BAO WITH GRANT OPTION nGRANT USAGE ON DOMAIN AGE TO CHEN nREVOKE SELECT,UPDATE ON S FROM WANG CASCADE nREVOKE GRANT OPTION FOR REFERE

15、NCES (C#) ON C FROM BAO常用的安全性措施n 强制存取控制 n 用户i只能查看比它级别低或同级的数据; n 用户i只能修改和它同级的数据 n统计数据库的安全性 n一个查询查到的记录个数至少是n;n两个查询查到的记录的“交”数目至多是mn数据加密法 n普通加密法 n密键加密法 n自然环境的安全性 nDBS的设备和硬件安全性(“数据银行”) 8.4 数据库恢复技术n易失性存储器(volatile storage)内存、cache存储器 n非易失性存储器(nonvolatile storage)磁盘和磁带 n稳定存储器(stable storage)这是一个理论上的概念。存储在稳

16、定存储器中的信息是决不会丢失的。 n稳定存储器的实现n数据备份 n数据银行 存储器类型块和块的操作n块、物理块和缓冲块n块的操作ninput(A):把物理块A的内容传送到内存的缓冲块中。nOutput(B):把缓冲块B的内容传送到磁盘中恰当的物理块中。 B内存AB磁盘input(A)output(B)图9.5 块操作数据访问write(X)xi包含包含x的块的块Bx存存在,在,read(X)事务事务系统系统开开始始请求请求read(X)事务工作区事务工作区分配分配X磁盘缓冲区磁盘缓冲区扫描内存扫描内存磁盘磁盘包含包含x的块的块Bx不存不存在,在,Input(B)恢复和原子性的联系银行转账系统银

17、行转账系统A=2000 B=1000事务事务A=A-100B=B+100Output(A)Output(B)断电或其断电或其他故障他故障假设没有事务的假设没有事务的原子性,那么重原子性,那么重新启动事务时要新启动事务时要么么A因为再执行因为再执行一遍而为一遍而为1800,要么,要么B因从未因从未执行而保持原值执行而保持原值恢复的基本原则和实现方法 n基本原则 :“冗余”,即数据库重复存储n具体实现方法 n平时做好两件事:转储和建立日志 n周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中。 n 建立日志数据库。记录事务的开始、结束及数据每一次插入、删除和修改前后的

18、值,并写到“日志”库中。n 一旦发生数据库故障,分两种情况进行处理 n如果数据库已被破坏,则装入last数据库备份,再利用日志库将这两个数据库状态之间的所有更新重新做一遍。n如果数据库未被破坏,但某些数据不可靠,则撤消所有不可靠的修改,把数据库恢复到正确的状态。 故障类型和恢复方法n事务故障n可以预期的事务故障,如存款余额透支等n非预期事务故障,如运算溢出、数据错误、死锁等n系统故障硬件故障、软件错误或掉电等等n介质故障(硬故障)磁盘物理故障或遭受病毒破坏检查点方法n什么是检查点方法n检查点方法的恢复算法n根据日志文件建立事务重做队列和事务撤销队列n对重做队列中的事务进行REDO处理,对撤消队

19、列中的事务进行UNDO处理 - 事务事务检查点检查点故障点故障点时间时间检查点检查点T1T3T2T5T4事务T1不必恢复;事务T2和事务T4必须重做(REDO);事务T3和事务T5必须撤消(UNDO) SQL对事务的支持n无begin transactionnCommitnRollbackn游标8.5 并发控制时间时间更新事务更新事务T1T1数据库中数据库中A A的值的值更新事务更新事务T2T2t0t0100100t1t1FIND AFIND At2t2FIND AFIND At3t3A:=A-30A:=A-30t4t4A:=A*2A:=A*2t5t5UPD AUPD At6t67070UPD

20、 AUPD At7t7200200图图9.10 9.10 在时间在时间t7t7丢失了事务丢失了事务T1T1的更新的更新(FINDFIND表示从表示从DBDB中读值,中读值,UPDUPD表示把值写回到表示把值写回到DBDB) 并发操作带来的问题1-丢失更新并发操作带来的问题2-读脏数据时间时间更新事务更新事务T1T1数据库中数据库中A A的值的值读事务读事务T2T2t0t0100100t1t1FIND AFIND At2t2A:=A-30A:=A-30t3t3UPD AUPD At4t47070FIND AFIND At5t5*ROLLBACK*ROLLBACK*t6t6100100图图9.11

21、 9.11 事务事务T2T2在时间在时间t4t4读了未提交的读了未提交的A A值(值(7070) 时间时间更新事务更新事务T1T1数据库中数据库中A A的值的值更新事务更新事务T2T2t0t0100100t1t1FIND AFIND At2t2A:=A-30A:=A-30t3t3UPD AUPD At4t47070FIND AFIND At5t5A:=A*2A:=A*2t6t6UPD AUPD At7t7140140t8t8*ROLLBACK*ROLLBACK*t9t9100100图图9.12 9.12 事务事务T2T2在时间在时间t4t4读了未提交的读了未提交的A A值,并在时间值,并在时间

22、t8t8丢失了自己的更新丢失了自己的更新 并发操作带来的问题3-错误求和时间时间读事务读事务T1数据库中数据库中A、B、C的值的值更新事务更新事务T2t040,50,30t1FINDAt2SUM:=At3FINDBt4SUM:=SUM+Bt5FINDCt6C:=C-10t7UPDCt840,50,20FINDAt9A:=A+10t10UPDAt1150,50,20COMMITt12FINDCt13SUM:=SUM+C 事务事务T1T1进行了不一致的分析进行了不一致的分析 解决方法n封锁技术n时标X锁和S锁nX锁定义n操作nXFIND RnXRELEASE RnPX协议: 任何企图更新记录R的事

23、务必须先执行“XFIND R”操作,以获得对R的X锁,才能读或写记录R;如果未获准X锁,那么这个事务进入等待队列,一直到获准X锁,事务才能继续做下去。 nPXC协议 X锁的解除操作应该合并到事务的结束(COMMIT或ROLLBACK)操作中。nS锁定义n操作nSFIND RnUPDX RnSRELEASE RnPS协议 任何要更新记录R的事务必须先执行“SFIND R”操作,以获得对R的S锁。当事务获准对R的S锁后,若要更新记录R必须用“UPDX R”操作,这个操作首先把S锁升级为X锁,若成功则更新记录,否则这个事务进入等待队列 。nPSC协议S锁的解除操作应该合并到事务的结束 。例:使用X锁

24、封锁解决数据丢失时间时间更新事务更新事务T1数据库中数据库中A的值的值更新事务更新事务T2t0100t1XFINDAt2XFINDA(失败)失败)wait(等待)等待)t3A:=A-30waitt4waitt5UPDAwaitt670waitt7COMMIT(包括解锁)包括解锁)waitt8XFINDA(重做)重做)t9A:=A*2t10UPDAt11140COMMIT(包括解锁)包括解锁)例:使用S锁封锁解决数据丢失时间时间更新事务更新事务T1数据库中数据库中A的值的值更新事务更新事务T2t0100t1SFINDAt2SFINDAt3A:=A-30t4A:=A*2t5UPDXA(失败)失败)

25、t6waitUPDXA(失败)失败)t7waitWaitt8waitWait封锁的相容矩阵注: N=NO, 不 相 容 的 请 求 Y=YES,相容的请求 X、S、:分别表示X锁,S锁,无锁 如果两个封锁是不相容的,则后提出封锁的事务要等待。X S X S X XS S N N YN N Y N Y Y N Y Y Y Y Y Y Y Y T2T1 封锁的粒度n封锁对象的大小称为封锁的粒度(granularity) n封锁的对象 n逻辑单元:属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库 n物理单元 :页(数据页或索引页)、块 n封锁粒度与系统并发度和并发控制开销密切相关。粒度越

26、大,系统中能被封锁的对象就越少,并发度就越小,但同时系统的开销也就越小;相反,粒度越小,并发度越高,系统开销越大 封锁带来的问题1-(活锁)T1XFIND AT2XFIND AT3XFIND AAA已被封锁,不成功,等待A刚被释放,成功时间点A刚被T2释放,成功T1永远等待活锁!解决方法:先来先服务封锁带来的问题2-饿死T2事务序列A1A2A3A4A5资源AT1T1永远不能封锁解决方法,改变授权方式:当事务T2中请对数据项Q加S锁时,授权加锁的条件是: 不存在在数据项Q上持有X锁的其他事务; 不存在等待对数据项Q加锁且先于T2申请加锁的事务 每一个事务均请求A的S锁,成功后一段时间释放请求A的

27、X锁封锁带来的问题3-死锁时间时间事务事务T1事务事务T2t0XFINDAt1XFINDBt2XFINDBt3waitXFINDAt4waitwait死锁若事务依赖图有环则可能死锁T1T2T3T4图9.20 事务的无环依赖图T1T2T3T4图9.21 事务的有环依赖图并发操作的调度n事务的调度 :事务的执行次序称为“调度” n串行调度:如果多个事务依次执行,则称为事务的串行调度(Serial Schedule) n并发调度:如果利用分时的方法,同时处理多个事务,则称为事务的并发调度(Concurrent Schedule)n可串行化 :如果一个并发调度的执行结果与某一串行调度的执行结果等价,那

28、么这个并发调度称为“可串行化的调度”,否则是不可串行化的调度 调度可串行化的测试前趋图前趋图有向图有向图G=V顶点的集合,包含所有参与调度的事务。顶点的集合,包含所有参与调度的事务。E边的集合,通过分析冲突操作来决定。如果下列边的集合,通过分析冲突操作来决定。如果下列条件之一成立,可在条件之一成立,可在E中加边中加边TiTj:n Ri(x)在在Wj(x)之前之前n Wi(x)在在Rj(x)之前之前n Wi(x)在在Wj(x)之前之前S= W3(y)R1(x)R2(y)W3(x)W2(x)W3(z)R4(z)W4(x)最后,看构造好的前趋图中是否有环路,如果有,则最后,看构造好的前趋图中是否有环

29、路,如果有,则该调度不可串行化;否则,可串行化。该调度不可串行化;否则,可串行化。T1T2T3T4前趋图可串行化时,决定等价串行调度序列的算法:可串行化时,决定等价串行调度序列的算法:1)由于无环路,必有入度为由于无环路,必有入度为0的顶点。将它们及的顶点。将它们及其有关的边从图中移去并将这些顶点存入一个其有关的边从图中移去并将这些顶点存入一个队列。队列。2)对剩下的图作同样处理,不过移出的顶点要队对剩下的图作同样处理,不过移出的顶点要队列中已有顶点之后。列中已有顶点之后。3)重复重复1,2直至所有顶点移入队列为止。直至所有顶点移入队列为止。例对例对T1,T2,T3,T4的一个调度的一个调度s

30、S= W3(y)R1(x)R2(y)W3(x)W2(x)W3(z)R4(z)W4(x)它是否可串行化?如可串行化找出其等价的串它是否可串行化?如可串行化找出其等价的串行执行序列。行执行序列。S= W3(y)R1(x)R2(y)W3(x)W2(x)W3(z)R4(z)W4(x)T1T2T3T4T2T3T4队列:T1T2T4队列:T1,T3T4队列:T1,T3,T2等价串行序列:T1T3T2T4空两段封锁协议n 在对任何一个数据进行读写操作之前,事务必须获得对该数据的封锁; n在释放一个封锁之后,事务不再获得任何其他封锁 n遵守该协议的事务分为两个阶段:获得封锁阶段,也称为“扩展”阶段;释放封锁阶

31、段,也称为“收缩”阶段 n如果所有的事务都遵守“两段封锁协议”,则所有可能的并发调度都是可串行化的 T1Lock ALock BLock CUnlock AUnlock BUnlock C T2Lock ALock BUnlock AUnlock BLock CUnlock C2PLnot 2PLGrowing phaseShrinking phase死锁的检测、处理与防止死锁:循环等待,谁也无法得到全部资源。活锁:虽然其它事务都在有限长的时间内释放了资源,但某事务就是无法得到想要的资源。X_lock R1 X_lock R2waitTAX_lock R2 X_lock R1waitTB RT

32、1: S-lockT2: S-lockT: x-lock活锁较简单,只需稍加修改调度策略,如FIFO死锁:(1)防(不允许发生);(2)治(允许,能消除)1)等待死亡策略 如果T1比T2“年老”(ts(T1)ts(T2)),则T1等待;不然, T2回滚(死亡),并在一定时间后以原来的时间标记重新运行。2)击伤等待策略 如果T1比T2“年轻”(ts(T1)ts(T2)),则T1等待;不然, T2回滚(死亡),并在一定时间后以原来的时间标记重新运行。上述方法中,都只有一个方向的等待,年老年轻或年轻年老,所以不会出现循环等待,从而避免了死锁的发生。死锁预防死锁检测1)超时法 简单。但死锁发生后,须等待一定的时间才能发现,且事务因其它原因的等待而超过时限时,就会误判为死锁。2)等待图法 G=V set of transactions E |Ti waits for Tj (i j)n若图中有环路则说明已经发生死锁。死锁处理:发现死锁时,由锁管理器作以下处理:在循环等待事务中,选择一个恓性代价最小的事务执行回滚,并释放它获得的锁及其他资源,使其他事务得以运行下去。本章小结n事务以及事务的四个性质n数据库的完整性nSQL中相应的权限授予语句n数据库数据的恢复原理、常用技术、故障类型和恢复方法n检查点技术n封锁操作以及封锁带来的问题n并发操作和可串行化

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号