第7章系统实现技术

上传人:鲁** 文档编号:570331129 上传时间:2024-08-03 格式:PPT 页数:82 大小:488KB
返回 下载 相关 举报
第7章系统实现技术_第1页
第1页 / 共82页
第7章系统实现技术_第2页
第2页 / 共82页
第7章系统实现技术_第3页
第3页 / 共82页
第7章系统实现技术_第4页
第4页 / 共82页
第7章系统实现技术_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《第7章系统实现技术》由会员分享,可在线阅读,更多相关《第7章系统实现技术(82页珍藏版)》请在金锄头文库上搜索。

1、卫宋榴值酗袍随虹串叉清疫杭缺塌琵熔椅栏笨遍炬异狭笔铣姨钉垄腐龟篷第7章系统实现技术第7章系统实现技术第第7 7章章 系统实现技术系统实现技术荚哀雨金存填凯刑幕刀独诞骂捌濒彻剐辆箱鹿厨超卫世哥墅山他馏圈晰械第7章系统实现技术第7章系统实现技术1本章重要概念本章重要概念(1) (1)事事务务的的定定义义,COMMIT和和ROLLBACK的的语义,事务的语义,事务的ACID性质,事务的状态性质,事务的状态变迁图。变迁图。(2)存存储储器器类类型型,稳稳定定存存储储器器的的实实现现,数数据据传传送过程。送过程。(3)恢复的定义、基本原则和实现方法,)恢复的定义、基本原则和实现方法,故障的类型,检查点技

2、术,故障的类型,检查点技术,REDO和和UNDO操作,运行记录优先原则。操作,运行记录优先原则。 帛石翁役货账拒食光皂椒蠕鸵蓟佛侮腔兑网淡秃跋肮玉兼勺梭奉批蓝底潦第7章系统实现技术第7章系统实现技术2本章重要概念本章重要概念(2)(4)并并发发操操作作带带来来的的三三个个问问题题,X锁锁、S锁锁、使使用用X锁锁和和S锁锁的的操操作作,封封锁锁协协议议,活活锁锁、饿饿死死和和死死锁锁,并并发发调调度度、串串行行调调度度、并并发发调调度度的的可可串串行行化化,SQL中中事事务务的的存存取取模模式式和和隔隔离离级级别别,基基于于时时标的并发控制。标的并发控制。(5)完完整整性性的的定定义义,完完整整

3、性性子子系系统统的的功功能能,完完整整性性规规则则的的组组成成。SQL中中的的三三大大类类完完整整性性约约束束,SQL3中的触发器技术。中的触发器技术。(6)安全性的定义、级别,权限,)安全性的定义、级别,权限,SQL中的中的安全性机制,几种常用的安全性措施,自然环境安全性机制,几种常用的安全性措施,自然环境的安全性。的安全性。弹药颅辆崎肠弓宋伤质覆充沉诅捧桩颜掘离勘豢镑檄瞧壶轻三锅伯矮缔相第7章系统实现技术第7章系统实现技术3第第7章章系统实现技术系统实现技术n7.1 7.1 事务事务n7.2 7.2 数据库的恢复数据库的恢复n7.3 7.3 数据库的并发控制数据库的并发控制n7.4 7.4

4、 数据数据库的完整性的完整性n7.5 7.5 数据数据库的安全性的安全性n7.6 7.6 小小结仕求讼岁畜捣埂凯夺芳宫洒型遇辞卯大戮完射搀堕妒倘锰冤窝仔堰驳辱是第7章系统实现技术第7章系统实现技术47.1 7.1 事务事务n7.1.1 7.1.1 事事务的定的定义 n7.1.2 7.1.2 事事务的的ACIDACID性性质 n7.1.3 7.1.3 事事务的状的状态变迁迁图 傀疵脓棵蓖嘎逐文翁擂钠沮御莽腿唇哥勘铰尤惨步卉掐脏庐舰札刃觅强哨第7章系统实现技术第7章系统实现技术57.1.1 事务的定义事务的定义(1)(1)n定定义义7.1 7.1 事事务务(transactiontransacti

5、on)是是构构成成单单一一逻逻辑辑工工作作单单元元的的操操作作集集合合,要要么么完完整整地地执执行行,要要么么完完全全不不执执行行。不不论论发发生生何何种种情情况况,DBSDBS必必须须保保证证事事务务能能正正确确、完整地执行。完整地执行。n在在程程序序中中,事事务务以以BEGIN BEGIN TRANSACTIONTRANSACTION语语句句开开始始,以以COMMITCOMMIT语句或语句或ROLLBACKROLLBACK语句结束。语句结束。n COMMITCOMMIT语语句句表表示示事事务务执执行行成成功功地地结结束束(提提交交),此此时时告告诉诉系系统统,数数据据库库要要进进入入一一个

6、个新新的的正正确确状状态态,该该事事务对数据库的所有更新都已交付实施(写入磁盘)。务对数据库的所有更新都已交付实施(写入磁盘)。n ROLLBACKROLLBACK语语句句表表示示事事务务执执行行不不成成功功地地结结束束(应应该该“回回退退”),此此时时告告诉诉系系统统,已已发发生生错错误误,数数据据库库可可能能处处在在不不正正确确的的状状态态,该该事事务务对对数数据据库库的的所所有有更更新新必必须须被撤消,数据库应恢复该事务到初始状态。被撤消,数据库应恢复该事务到初始状态。娥出碟希枕馏蕾西微蛇变平嫌酪滞脚贫坟彦蓝链堵蛾琢匪肌丘皇洪地聘餐第7章系统实现技术第7章系统实现技术67.1.1 事务的

7、定义事务的定义(2)(2)n例例7.1 7.1 设设银银行行数数据据库库中中有有一一转转账账事事务务T T,从从 账账 号号 A A转转 一一 笔笔 款款 子子($50$50)到到账账号号B B,其其操操作如下:作如下:T T:readread(A A);); A:=A50 A:=A50; write write(A A);); read read(B B);); B:=B + 50 B:=B + 50; write write(B B). .n组织成成如下如下事事务:T T: BEGIN BEGIN RANSACTIONRANSACTION; readread(A A);); A:=A-50

8、A:=A-50;writewrite(A A););if(Aif(A0)ROLLBACK0)ROLLBACK;else readelse read(B B);); B:=B+50 B:=B+50; write write(B B);); COMMIT COMMIT; 散蓖唾糖伦构卑栓件蓝难欲性影栗淫峨娟吏实任合眼囱款勒辜滑川蚀淘子第7章系统实现技术第7章系统实现技术77.1.1 事务的定义事务的定义(3)(3)n对对数数据据库库的的访访问问是是建建立立在在读读和和写写两两个个操操作作的的基础上的:基础上的:readread(X X):把把数数据据X X,从从磁磁盘盘的的数数据据库库中中读读到到

9、内存的缓冲区中。内存的缓冲区中。writewrite(X X):把把数数据据X X,从从内内存存缓缓冲冲区区中中写写回回磁盘的数据库。磁盘的数据库。n在在系系统统运运行行时时,writewrite操操作作未未必必导导致致数数据据立立即即写写回回磁磁盘盘,很很可可能能先先暂暂存存在在内内存存缓缓冲冲区区中中,稍稍后后再再写写回回磁磁盘盘。这这件件事事情情是是DBMSDBMS实实现现时时必必须须注注意的问题。意的问题。袒撤硝嗜讲龋浩党聊县眉腆酶士顾魔免显尿滔二攻撕忆账慰纹橙贫驮沽夫第7章系统实现技术第7章系统实现技术87.1.2 事务的事务的ACIDACID性质性质n性质性质n原子性原子性(Ato

10、micity):(Atomicity):事务事务是一个不可分割是一个不可分割的工作的工作单元元。 n一致性一致性(Consistency)(Consistency):即数据不会应事务即数据不会应事务的执行而遭受破坏。的执行而遭受破坏。 n隔离性隔离性(Isolation)(Isolation):在多个事务并发执行在多个事务并发执行时,系统应保证与这些事务先后单独执行时,系统应保证与这些事务先后单独执行时的结果一样。时的结果一样。 n持久性持久性(Durability)(Durability):一个事务一旦完成全一个事务一旦完成全部操作后,它对数据库的所有更新应永久部操作后,它对数据库的所有更新

11、应永久地反映在数据库中。地反映在数据库中。 窝金皑瘪肢沃输苞术插瘴怕洲略偶溃蜀簿宾迎拔渠领朽狡尸瘟押坐用上监第7章系统实现技术第7章系统实现技术97.1.3 事务的状态变迁图事务的状态变迁图活动状态活动状态局部提交局部提交状态状态提交状态提交状态失败状态失败状态异常中止状态异常中止状态READ/WRITEREAD/WRITE图图7.1 7.1 事务的状态变迁图事务的状态变迁图啼皂抒砧镑烫釉园验府苫嚎半渐毖靡饿汇印拜迈答擅旧蹭篷话比轮像倔臀第7章系统实现技术第7章系统实现技术107.2 数据库的恢复数据库的恢复n7.2.1 7.2.1 存存储器器结构构 n7.2.2 7.2.2 恢复的基本原恢复

12、的基本原则和和实现方法方法n7.2.3 7.2.3 故障类型和恢复方法故障类型和恢复方法n7.2.4 7.2.4 检查点技术检查点技术n7.2.5 SQL7.2.5 SQL对事务的支持对事务的支持 诀档伦才渠屈涧脊疚鼎蛀殖哑祁雍焰邮彰昧爬权坡柳稍返公敦势助睛胺木第7章系统实现技术第7章系统实现技术117.2.1 存储器结构存储器结构(1)(1)n1.1.存储器类型存储器类型n易失性存易失性存储器(器(volatile storagevolatile storage)内存、内存、cachecache存存储器器 n非易失性存非易失性存储器(器(nonvolatile storagenonvolat

13、ile storage)磁磁盘和磁和磁带 n稳定存定存储器(器(stable storagestable storage)这是一个理是一个理论上的概念。存上的概念。存储在在稳定存定存储器中器中的信息是决不会的信息是决不会丢失的。失的。 n2.2.稳定存定存储器器的实现的实现n数据备份数据备份 n数据银行数据银行 氓急辣玻绕癸频二皮窖房襄昼姬穷瞬垛耀渺帧亢砍仁鹰僧毖杂话褐皋摇陵第7章系统实现技术第7章系统实现技术127.2.1 存储器结构存储器结构(2)(2)n3. 数据访问数据访问n块、物理块和缓冲块块、物理块和缓冲块n块的操作块的操作ninputinput(A A):把把物物理理块块A A的

14、的内内容容传传送送到到内内存的缓冲块中。存的缓冲块中。nOutputOutput(B B):把缓):把缓冲块冲块B B的内容传送到的内容传送到磁盘中恰当的物理块磁盘中恰当的物理块中中 B内存内存AB磁盘磁盘input(A)output(B)图图7.2块操作块操作踏蓑茎溺沉钓肇囱液了习慧库仰墙蹬掩米微俗苫琳颗灌骡县讫滓艇罗汾堕第7章系统实现技术第7章系统实现技术137.2.1 存储器结构存储器结构(3)(3)xiwrite(X)包含包含x的块的块Bx存在,存在, read(X)事务事务系统系统开开始始请求请求read(X)事务工作区事务工作区分配分配X磁盘缓冲区磁盘缓冲区扫描内存扫描内存磁盘磁盘

15、包含包含x的块的块Bx存在,存在,input(B)哥尘从务球严湾涪卤留恼佯萨厌扭竣催据鉴器征扳缎孝阉福痘狠远瞬台荚第7章系统实现技术第7章系统实现技术147.2.1 存储器结构存储器结构(4)(4)银行转账系统银行转账系统A=2000 B=1000事务事务A=A-100B=B+100output(Aoutput(A) )output(B)output(B)断电或其断电或其他故障他故障假设没有事假设没有事务的原子性,务的原子性,那么重新启那么重新启动事务时,动事务时,要么要么A因为因为再执行一遍再执行一遍而为而为1800,要么,要么B因因从未执行而从未执行而保持原值。保持原值。4. 恢复和原子性

16、的联系恢复和原子性的联系庙咖局桃纫肇怒双错雪崖绎楞台鼓格忍噶寸珊梧累竭措抛初沟态沼蔬眼环第7章系统实现技术第7章系统实现技术157.2.2恢复的基本原则和实现方法恢复的基本原则和实现方法n基本原则基本原则 :“冗余冗余”,即数据库重复存储。,即数据库重复存储。n具体具体实现方法方法 n平时做好两件事:转储和建立日志平时做好两件事:转储和建立日志n周期地(比如一天一次)对整个数据库进行拷贝,转储周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中。到另一个磁盘或磁带一类存储介质中。 n 建立日志数据库。记录事务的开始、结束及数据每一次建立日志数据库。记录事务的开始、结

17、束及数据每一次插入、删除和修改前后的值,并写到插入、删除和修改前后的值,并写到“日志日志”库中。库中。n一旦发生数据库故障,分两种情况进行处理一旦发生数据库故障,分两种情况进行处理 n如果数据库已被破坏,则装入如果数据库已被破坏,则装入lastlast数据库备份,再利用数据库备份,再利用日志库将这两个数据库状态之间的所有更新重新做一遍。日志库将这两个数据库状态之间的所有更新重新做一遍。n如果数据库未被破坏,但某些数据不可靠,则撤消所有如果数据库未被破坏,但某些数据不可靠,则撤消所有不可靠的修改,把数据库恢复到正确的状态。不可靠的修改,把数据库恢复到正确的状态。缉专月桌吨蒋址逆萨妻痪膳桐孔除垃堪

18、挤耍野卿娃又躲兵谗曹铡仑斤智徊第7章系统实现技术第7章系统实现技术167.2.3故障类型和恢复方法故障类型和恢复方法(1)(1)n1.1.事务故障事务故障n可以预期的事务故障,如存款余额透支等可以预期的事务故障,如存款余额透支等n非预期事务故障,如运算溢出、数据错误、非预期事务故障,如运算溢出、数据错误、死锁等死锁等n2.2.系统故障:硬件故障、软件错误或掉电等系统故障:硬件故障、软件错误或掉电等重新启动时,具体处理分两种情况考虑。重新启动时,具体处理分两种情况考虑。n对未完成事务作对未完成事务作UNDOUNDO处理;处理;n对已提交事务但更新还留在缓冲区的事务对已提交事务但更新还留在缓冲区的

19、事务进行进行REDOREDO处理。处理。肤单吗居噪皇誓佛壹坝戴娇候撵协货琼泥鼓胺厦喀杨祖袖喜致怨旗腺街涕第7章系统实现技术第7章系统实现技术177.2.3故障类型和恢复方法故障类型和恢复方法(2)(2)n3 3介质故障介质故障在在发发生生介介质质故故障障和和遭遭受受病病毒毒破破坏坏时时,磁磁盘盘上上的的物物理理数据库遭到毁灭性破坏。此时恢复的过程如下:数据库遭到毁灭性破坏。此时恢复的过程如下:n重重装装最最近近转转储储的的后后备备副副本本到到新新的的磁磁盘盘,使使数数据据库恢复到转储时的一致状态。库恢复到转储时的一致状态。n在日志中找出最近转储以后所有已提交的事务。在日志中找出最近转储以后所有

20、已提交的事务。n对对这这些些已已提提交交的的事事务务进进行行REDOREDO处处理理,将将数数据据库库恢复到故障前某一时刻的一致状态。恢复到故障前某一时刻的一致状态。在在实实际际中中,系系统统故故障障通通常常称称为为软软故故障障(Soft (Soft Crash)Crash),介质故障通常称为硬故障,介质故障通常称为硬故障(Hard Crash)(Hard Crash)。视耪蓉俗始廖策范岿筷瞬华嚷旨当喉忻井途绰尾宋仲决毖都制肺股展扰峦第7章系统实现技术第7章系统实现技术187.2.4 检查点技术检查点技术(1)(1)n1 1检查点方法检查点方法在在DBSDBS运运行行时时,DBMSDBMS定定

21、时时设设置置检检查查点点。在在检检查查点点时时刻刻才才真真正正做做到到把把对对DBDB的的修修改改写写到到磁磁盘盘,并并在在日日志志文文件件写写入入一一条条检检查查点点记记录录( (以以便便恢恢复复时时使使用用) )。当当DBDB需需要要恢恢复复时时,只只有有那那些些在在检检查查点点后后面面的的事务需要恢复。事务需要恢复。事务事务T1T1不必恢复;不必恢复;事务事务T2T2和事务和事务T4T4必须重做必须重做(REDO)(REDO);事务事务T3T3和事务和事务T5T5必须撤消必须撤消(UNDO)(UNDO)。事务事务检查点检查点故障点故障点t检查点检查点T1T1T3T3T2T2T5T5T4T

22、4哪茵已窍洪午藕檬渝癌惊斩苑词侨缘少扑汁曰椿圆券碳剂藤栖榔淋哲蜡羽第7章系统实现技术第7章系统实现技术197.2.4 检查点技术检查点技术(2)(2)n2 2检查点方法的恢复算法:分成两步。检查点方法的恢复算法:分成两步。(1 1)根根据据日日志志文文件件建建立立事事务务重重做做队队列列和和事事务务撤撤销销队队列。此时,从头扫描日志文件(正向扫描)。列。此时,从头扫描日志文件(正向扫描)。(2 2)对对重重做做队队列列中中的的事事务务进进行行REDOREDO处处理理,对对撤撤销销队队列中的事务进行列中的事务进行UNDOUNDO处理。处理。进进行行REDOREDO处处理理的的方方法法是是:正正向

23、向扫扫描描日日志志文文件件,根根据据重重做做队队列列的的记记录录对对每每一一个个重重做做事事务务重重新新实实施施对对数数据据库库的的更新操作。更新操作。进进行行UNDOUNDO处处理理的的方方法法是是:反反向向扫扫描描日日志志文文件件,根根据据撤撤销销队队列列的的记记录录对对每每一一个个撤撤销销事事务务的的更更新新操操作作执执行行逆逆操操作。作。橡粕历药跪爪飞氟通组州段培蓝魄裹扳俗箍惹轻取兴厩辛渝拨迎帅藻戚捻第7章系统实现技术第7章系统实现技术207.2.5 SQL SQL对事务的对事务的支持支持n无无begin transactionnCommitnRollbackn游标游标矣殆踏骆绣支疯如

24、娘蹈司盛矾袄坊狱喀姬标呛育巷柿高俺粗拜对萤握碍朴第7章系统实现技术第7章系统实现技术217.3数据数据库的并的并发控制控制n7.3.1 7.3.1 并发操作带来的三个问题并发操作带来的三个问题n7.3.2 7.3.2 封锁技术封锁技术n7.3.3 7.3.3 封锁带来的问题封锁带来的问题n7.3.4 7.3.4 并发操作的调度并发操作的调度n7.3.5 SQL7.3.5 SQL对事务处理的支持对事务处理的支持n7.3.6 7.3.6 基于基于时标的并的并发控制控制壁殊护猫眩靶捻怠爪黑胞胰肤跃攫湍统侣者叁报蛮窟灼践赫碉搂畏那蛋听第7章系统实现技术第7章系统实现技术227.3.1并发操作带来的三个

25、问题并发操作带来的三个问题(1)(1)图图7.5 7.5 在时间在时间t7t7丢失了事务丢失了事务T1T1的更新的更新(FINDFIND表示从表示从DBDB中读值,中读值,UPDUPD表示把值写回到表示把值写回到DBDB) 1 1丢失更新问题(例丢失更新问题(例7.27.2)时间时间 更新事务更新事务T1T1 数据库中数据库中A A的值的值 更新事务更新事务T2T2t0t0100100t1t1FIND AFIND At2t2FIND AFIND At3t3A:=A-30A:=A-30t4t4A:=A*2A:=A*2t5t5UPD AUPD At6t67070UPD AUPD At7t72002

26、00兜侮展沧才仓屈谋葬漂孕茶讣烯摔覆劣倪心翔彝厌颇牢朝曰椰狠二戚名婴第7章系统实现技术第7章系统实现技术237.3.1并发操作带来的三个问题并发操作带来的三个问题(2)(2)图图7.6 7.6 事务事务T2T2在时间在时间t4t4读了未提交的读了未提交的A A值(值(7070) 2 2读脏数据问题(例读脏数据问题(例7.37.3,用户读了,用户读了“脏数据脏数据”,但没有破坏数据库的完整性)但没有破坏数据库的完整性)时间时间更新事务更新事务T1T1数据库中数据库中A A的值的值读事务读事务T2T2t0t0100100t1t1FIND AFIND At2t2A:=A-30A:=A-30t3t3U

27、PD AUPD At4t47070FIND AFIND At5t5*ROLLBACK*ROLLBACK*t6t6100100瑶爽猎随厚句蓬撅章箭毒昼蚤氟保虹粮总施固拿及菏唉枉冗姓居兵高炬潭第7章系统实现技术第7章系统实现技术247.3.1并发操作带来的三个问题并发操作带来的三个问题(3)(3)图图7.7 7.7 事事务务T2T2在在时时间间t4t4读读了了未未提提交交的的A A值值,并在时间并在时间t8t8丢失了自己的更新丢失了自己的更新2 2读脏数据问题(读脏数据问题(例例7.47.4,用用户读了了“脏数据数据”,引起,引起自自身的更新操作被身的更新操作被丢失,破坏了数据失,破坏了数据库的完

28、整性)的完整性)时间时间 更新事务更新事务T1T1 数据库中数据库中A A的值的值 更新事务更新事务T2T2t0t0100100t1t1FIND AFIND At2t2A:=A-30A:=A-30t3t3UPD AUPD At4t47070FIND AFIND At5t5A:=A*2A:=A*2t6t6UPD AUPD At7t7140140t8t8*ROLLBACK*ROLLBACK*t9t9100100卉辖鹃部鹿蛆啮毖晕扒遣刽文倾洞因就疏余惨峪丑貉岂庚幂督开眶讫仿陡第7章系统实现技术第7章系统实现技术257.3.1并发操作带来的三个问题并发操作带来的三个问题(4)(4)图图7.8 7.8

29、事务事务T1T1两次读取两次读取A A的值,的值,却得到了不同的结果却得到了不同的结果3.3.不可重复读问题不可重复读问题(例(例7.57.5)时间时间读事务读事务T1T1数据库中数据库中A A的值的值更新事务更新事务T2T2t0t0100100t1t1FIND AFIND At2t2XFIND AXFIND At3t3A:=A*2A:=A*2t4t4UPD AUPD At5t5200200COMMITCOMMITt6t6FIND AFIND A裤疲夯煞廖呸趁煞墟帽痰抬痴尽川揭勿迷赵区竟膏捂阿嚎妒隐疟靶这咱戳第7章系统实现技术第7章系统实现技术267.3.1并发操作带来的三个问题并发操作带来的

30、三个问题(5)(5)时间时间更新事务更新事务T1T1数据库中数据库中A A值值更新事务更新事务T2T2t0t0100100t1t1FIND AFIND At2t2FIND AFIND At3t3A:=A-30A:=A-30t4t4A:=A*2A:=A*2t5t5UPD AUPD At6t67070UPD AUPD At7t7200200图图7.5 7.5 在时间在时间t7t7丢失了事务丢失了事务T1T1的更新的更新解决方法:解决方法:熔换厌恶雕渺诅绿苇斧镭镇犹孺艺磋施妻舵甫舞霹痴鸥络缘咆孝饲滥踩子第7章系统实现技术第7章系统实现技术277.3.2 封锁技术封锁技术(1)(1)n定定义义7.3锁

31、锁(lock)是是一一个个与与数数据据项项相相关关的的变变量量,对对可可能能应应用用于于该该数数据据项项上上的的操操作作而而言言,锁描述了该数据项的状态。锁描述了该数据项的状态。n通通常常在在数数据据库库中中每每个个数数据据项项都都有有一一个个锁锁。锁锁的的作作用用是是使使并并发发事事务务对对数数据据库库中中数数据据项项的的访问能够同步。访问能够同步。n封锁技术中主要有两种封锁:封锁技术中主要有两种封锁:排他型封锁排他型封锁 共享型封锁。共享型封锁。辣积捍侯沃叔度宿丽捉宗埂荫嚎赴回奋浪撑否零翠每氦赢了忧年蘸雌柱蓉第7章系统实现技术第7章系统实现技术287.3.2 封锁技术封锁技术(2)(2)n

32、1.1.排他型封锁(排他型封锁(X X锁,写锁)锁,写锁)X锁锁定定义义:如如果果事事务务T T对对某某个个数数据据R R(可可以以是是数数据据项项、记记录录、数数据据集集乃乃至至整整个个数数据据库库)实实现现了了X X锁锁,那那么么在在T T对对数数据据R R解解除除封封锁锁之之前前,不不允允许许其其他他事事务务T T再再对对该该数数据据加加任任何何类类型型的的锁锁。这这种种锁锁称称为为“X“X锁锁”。X X锁的操作有两个:封锁操作锁的操作有两个:封锁操作 “XFIND R” “XFIND R” 解锁操作解锁操作 “XRELEASE R” “XRELEASE R” X X锁 的的 解解 除除

33、 操操 作作 应 该 合合 并并 到到 事事 务 的的 结 束束(COMMITCOMMIT或或ROLLBACKROLLBACK)操作中)操作中。花庞锥皮铜液乓脑堑璃皖碎摧捻宏有逞燎襄陛破丸欧骨巫绣迷彝块缆嚏销第7章系统实现技术第7章系统实现技术29时间时间更新事务更新事务T1T1DBDB中中A A的值的值更新事务更新事务T2T2t0t0100100t1t1XFIND AXFIND At2t2XFIND A(XFIND A(失败失败) ) wait( wait(等待等待) )t3t3A:=A-30A:=A-30 wait waitt4t4 wait wait t5t5UPD AUPD A wai

34、t waitt6t67070 wait waitt7t7COMMIT(COMMIT(含解锁含解锁) ) wait waitt8t8XFIND A(XFIND A(重做重做) )t9t9A:=A*2A:=A*2t10t10UPD AUPD At11t11140140COMMIT(COMMIT(含解锁含解锁) )7.3.2 封锁技术封锁技术(3)(3)例例7.6 7.6 使用使用X X锁技术,可以解决图锁技术,可以解决图7.57.5的丢失更新问题。的丢失更新问题。图图7.9 7.9 等事务等事务T1T1更新完成后再执行事务更新完成后再执行事务T2T2弯吊诡饥辕巨薄峡悦滑婶恭挥卒金拙宵仿垒败留寄拱粥

35、权骡凋择莽肉颜帅第7章系统实现技术第7章系统实现技术30n2 2共享型封锁(共享型封锁(S S锁,读锁)锁,读锁)定定义义7.5 7.5 如如果果事事务务T T对对某某数数据据加加上上S S锁锁后后,仍仍允允许许其其他他事事务务再再对对该该数数据据加加S S锁锁,但但在在对对该该数数据据的的所所有有S S锁锁都解除之前决不允许任何事务对该数据加都解除之前决不允许任何事务对该数据加X X锁。锁。 S S锁的操作有三个:封锁操作锁的操作有三个:封锁操作 “SFIND R” “SFIND R” 升级和写操作升级和写操作 “UPDX R” “UPDX R” 解锁操作解锁操作 “SRELEASE R”

36、“SRELEASE R”可可以以看看出出,获获准准S S锁锁的的事事务务只只能能读读数数据据,不不能能更更新新数据,若要更新,则先要把数据,若要更新,则先要把S S锁升级为锁升级为X X锁。锁。另另外外,由由于于S S锁锁只只允允许许读读数数据据,因因此此解解除除S S锁锁的的操操作作不不必必非非要要合合并并到到事事务务的的结结束束操操作作中中去去,可可以以随随时时根根据据需要解除需要解除S S锁。锁。7.3.2 封锁技术封锁技术(4)(4)姑叮传悟缝美厨贵垃册庄霸墅啊监枕乳陌泊驾续赔毖舅庞重泰拽聚井宠蒲第7章系统实现技术第7章系统实现技术31时间时间更新事务更新事务T1T1DBDB中中A A

37、的值的值更新事务更新事务T2T2t0t0100100t1t1SFIND ASFIND At2t2SFIND ASFIND At3t3A:=A-30A:=A-30t4t4A:=A*2A:=A*2t5t5UPDX A(UPDX A(失败失败) )t6t6waitwaitUPDX A(UPDX A(失败失败) )t7t7waitwaitwaitwaitt8t8waitwaitwaitwait7.3.2 封锁技术封锁技术(5)(5)例例7.7 使用使用S S锁技术锁技术, ,也可以解决图也可以解决图7.5的丢失更新问题。的丢失更新问题。图图7.10 更新未丢失更新未丢失, ,但在时间但在时间t6t6发

38、生了死锁发生了死锁钉舀猩踊捷髓邱勋平蹈拷拂怖衣翱萧付覆霍也繁较钒很感翟郎笋漾碧圃海第7章系统实现技术第7章系统实现技术32注:注:N=NO,不相容的请求,不相容的请求Y=YES,相容的请求,相容的请求X、S、:、:分别表示分别表示X锁,锁,S锁,无锁锁,无锁如果两个封锁是不相容如果两个封锁是不相容的,则后提出封锁的事务的,则后提出封锁的事务要等待。要等待。XSXNNYSNYYYYYT1T27.3.2 封锁技术封锁技术(6)(6)n3 3封锁的相容矩阵封锁的相容矩阵谊泼赊朽龙驳肘汪哺笛犯麻琶搅仪绍跃善撒滓怂赐咎盈腑烤犁奄缄泻纪校第7章系统实现技术第7章系统实现技术33n4 4封锁的粒度封锁的粒度

39、n定义定义7.6 封锁对象的大小称为封锁的粒度封锁对象的大小称为封锁的粒度(granularitygranularity)。)。n封锁的对象封锁的对象 n逻辑单元逻辑单元: :属性属性值、属性、属性值集合、元集合、元组、关系、关系、 索引索引项、整个索引、整个数据、整个索引、整个数据库 n物理单元物理单元 :页(数据页或索引页)、块页(数据页或索引页)、块 n封锁粒度与系统并发度和并发控制开销密切相关。封锁粒度与系统并发度和并发控制开销密切相关。粒度越大,系统中能被封锁的对象就越少,并发度粒度越大,系统中能被封锁的对象就越少,并发度就越小,但同时系统的开销也就越小;就越小,但同时系统的开销也就

40、越小; 相反,粒度越小,并发度越高,系统开销越大。相反,粒度越小,并发度越高,系统开销越大。 7.3.2 封锁技术封锁技术(7)(7)际驾怖话鹤焰怠括鲁靛熬拱盲筹充捍扫调豆臭业差冤戮炬蝎鲸啊腑盯顾骋第7章系统实现技术第7章系统实现技术34n5 5封封锁锁协协议议:三三级级封封锁锁协协议议,分分别别在在不不同同程程度度上上解解决决了了并并发发操操作作带带来来的的各各种种问问题题,为为并并发发操操作作的的正正确调度提供一定的保证。确调度提供一定的保证。7.3.2 封锁技术封锁技术(8)(8)表表7.1 7.1 封锁协议的内容和优缺点封锁协议的内容和优缺点 级别级别 内内 容容 优优 点点 缺缺 点

41、点 一级一级封封锁协议 事务在修事务在修改数据之改数据之前,必须前,必须先对该数先对该数据加据加X X锁锁, ,直到事务直到事务结束时才结束时才释放释放 但只读数据的事务但只读数据的事务可以不加锁可以不加锁 防止防止“丢失修改丢失修改”不加锁的事务,不加锁的事务,可能可能“读脏数据读脏数据”,也可能,也可能“不不可重复读可重复读” 一级一级封封锁协议 但其他事务在但其他事务在读数据之前必读数据之前必需先加需先加S锁锁 读读 完完 数数 据据后后 即即 可可 释释放放S锁锁防防止止“丢丢失失修修改改”,防止防止“读脏数据读脏数据” 对对加加S S锁锁的的事事务务, , 可可能能“不不可可重重复复

42、读读”一级一级封封锁协议 但其他事务在但其他事务在读数据之前必读数据之前必需先加需先加S锁锁 直直 到到 事事 务务结结 束束 时时 才才释放释放S S锁锁防防止止“丢丢失失修修改改”,防防止止“读读脏脏数数据据”,防止防止“不可重复读不可重复读” 怠佣莹还抵惺挨涣帕碗怎书冀攀弱板凋砰谊幢宾蓟藩饵纲墩永练将召篷史第7章系统实现技术第7章系统实现技术357.3.3 封锁带来的问题封锁带来的问题(1)(1)n1 1“活锁活锁”问题问题n定定义义7.7 系系统统可可能能使使某某个个事事务务永永远远处处于于等等待待状状态态,得得不不到到封封锁锁的的机机会会,这这种种现现象象称称为为“活活锁锁”(Liv

43、e Live LockLock)。)。n解解决决活活锁锁问问题题的的一一种种简简单单的的方方法法是是采采用用“先先来来先先服务服务”的策略,也就是简单的排队方式。的策略,也就是简单的排队方式。n如如果果运运行行时时,事事务务有有优优先先级级,那那么么很很可可能能使使优优先先级级低低的的事事务务,既既使使排排队队也也很很难难轮轮上上封封锁锁的的机机会会。此此时时可可采采用用“升升级级”方方法法来来解解决决,也也就就是是当当一一个个事事务务等等待待若若干干时时间间(譬譬如如5 5分分钟钟)还还轮轮不不上上封封锁锁时时,可可以提高其优先级别,这样总能轮上封锁。以提高其优先级别,这样总能轮上封锁。杰处

44、蚁源捶译呵号脐侣援艺伯蹋揣汕狄没着买胸矮傅碗予撂揍炔显走萧矗第7章系统实现技术第7章系统实现技术367.3.3 封锁带来的问题封锁带来的问题(2)(2)n2 2“饿死饿死”问题问题n定定义义7.8 7.8 有有可可能能存存在在一一个个事事务务序序列列,其其中中每每个个事事务务都都申申请请对对某某数数据据项项加加S S锁锁,且且每每个个事事务务在在授授权权加加锁锁后后一一小小段段时时内内释释放放封封锁锁,此此时时若若另另有有一一个个事事务务T2T2欲欲在在该该数数据据项项上上加加X X锁锁,则则将将永永远远轮轮不不上上封封锁锁的的机机会。这种现象称为会。这种现象称为“饿死饿死”(starvati

45、onstarvation)。)。n可以用下列方式授权加锁来避免事务饿死。可以用下列方式授权加锁来避免事务饿死。当当事事务务T2T2中中请请对对数数据据项项Q Q加加S S锁锁时时,授授权权加加锁锁的的条条件件是:是: 不存在在数据项不存在在数据项Q Q上持有上持有X X锁的其他事务;锁的其他事务; 不不存存在在等等待待对对数数据据项项Q Q加加锁锁且且先先于于T2T2申申请请加加锁锁的的事务。事务。屁辑醚描怪牺悄谴底埂退异两羚乙杀功瞳悉骡雌浇剖生配满容锚感坛虫遭第7章系统实现技术第7章系统实现技术377.3.3 封锁带来的问题封锁带来的问题(3)(3)n3. 3. “死锁死锁”问题问题n定定义

46、义7.9 7.9 系系统统中中有有两两个个或或两两个个以以上上的的事事务务都都处处于于等等待待状状态态,并并且且每每个个事事务务都都在在等等待待其其中中另另一一个个事事务务解解除除封封锁锁,它它才才能能继继续续执执行行下下去去,结结果果造造成成任任何何一一个个事事务务都都无无法法继继续续执执行行,这这种种现现象象称称系系统统进进入入了了“死锁死锁”(Dead LockDead Lock)状态。)状态。时间时间事务事务T1T1事务事务T2T2t0t0XFIND AXFIND At1t1XFIND BXFIND Bt2t2XFIND BXFIND Bt3t3waitwaitXFIND AXFIND

47、 At4t4waitwaitwaitwait图图7.12 7.12 在时间在时间t4t4两个事务发生死锁两个事务发生死锁载斡释扩从恿丛过氏腑测瀑栖踊蓟让密魁双互寄雪童总哄抛拈啥悲症黔晤第7章系统实现技术第7章系统实现技术387.3.3 封锁带来的问题封锁带来的问题(4)(4)n我我们可可以以用用事事务依依赖图的的形形式式测试系系统中中是是否否存存在在死死锁。图中中每每一一个个结点点是是“事事务”,箭箭头表表示示事事务间的的依依赖关系。关系。n图图7.147.14为为无无环环依依赖赖图图,表表示示系系统统未未进进入入死死锁锁状态;状态;n而而图图7.157.15为为有有环环依依赖赖图图,则则表表

48、示示系系统统进进入入死锁状态。死锁状态。 T1T1T2T2数据数据B B数据数据A AT1T1T2T2T3T3T4T4T1T1T2T2T3T3T4T4砸盐陡辉钒燕烟亚实柏亭彦桩钟祷卤龋返枷模笼柯整恐颊灸幢丑爽芒荤厉第7章系统实现技术第7章系统实现技术397.3.3 封锁带来的问题封锁带来的问题(5)(5)nDBMSDBMS中中有有一一个个死死锁锁测测试试程程序序,每每隔隔一一段段时时间间检检查查并发的事务之间是否发生死锁。并发的事务之间是否发生死锁。n如如果果发发生生死死锁锁,那那么么只只能能抽抽取取某某个个事事务务作作为为牺牺牲牲品品,把把它它撤撤消消,做做回回退退操操作作,解解除除它它的的

49、所所有有封封锁锁,恢恢复复到到该该事事务务的的初初始始状状态态。释释放放出出来来的的资资源源就就可可以以分分配配给给其其他他事事务务,使使其其他他事事务务有有可可能能继继续续运运行行下下去去,就有可能消除死锁现象。就有可能消除死锁现象。n理理论论上上,系系统统进进入入死死锁锁状状态态时时可可能能会会有有许许多多事事务务在在相相互互等等待待,但但是是System System R R的的实实验验表表明明,实实际际上上绝绝大大部部分分的的死死锁锁只只涉涉及及到到两两个个事事务务,也也就就是是事事务务依依赖赖图图中中的的循循环环里里只只有有两两个个事事务务。有有时时,死死锁锁也也被被形形象象地称作地

50、称作“死死拥抱死死拥抱”(Deadly EmbraceDeadly Embrace)。)。剔差卉窗烃惰氏希文棺冤采战挪滋歪仆苫又秽鲁尸熬共教瑚娘佰擒尹橱兜第7章系统实现技术第7章系统实现技术40n事务的调度:事务的执行次序称为事务的调度:事务的执行次序称为“调度调度” 。n串行调度:如果多个事务依次执行,则称为串行调度:如果多个事务依次执行,则称为事务的串行调度(事务的串行调度(Serial Schedule)。)。 n并发调度并发调度:如果利用分时的方法,同时处理多如果利用分时的方法,同时处理多个事务,则称为事务的并发调度个事务,则称为事务的并发调度(Concurrent Schedule)

51、。)。n可串行化可串行化 :如果一个并发调度的执行结果与:如果一个并发调度的执行结果与某一串行调度的执行结果等价,那么这个并发某一串行调度的执行结果等价,那么这个并发调度称为调度称为“可串行化的调度可串行化的调度”,否则是,否则是“不可不可串行化的调度串行化的调度” 。 7.3.4并并发操作的操作的调度度翘慑渣蜡劫趴垫今厉道炔廊越氖羚厨命沛脾姻炯的芳播腑捡烷狼倍汹蔓妥第7章系统实现技术第7章系统实现技术41n1 1事务的存取模式事务的存取模式READ ONLY(只读型):事务对数据库的操(只读型):事务对数据库的操作只能是读操作。作只能是读操作。READ WRITE(读写型):事务对数据库的(

52、读写型):事务对数据库的操作可以是读操作,也可以是写操作。操作可以是读操作,也可以是写操作。 n这两种模式可用下列这两种模式可用下列SQL语句定义:语句定义: SET TRANSACTION READ ONLY SET TRANSACTION READ WRITE 7.3.5SQLSQL对并发处理的支持对并发处理的支持(1)(1)内询纲黄捕掷堡观固辜炼枫片死饭疗普易脉沿仰醒惜尽俺尽躺导连签赠鸽第7章系统实现技术第7章系统实现技术427.3.5SQLSQL对并发处理的支持对并发处理的支持(2)(2)n2 2事务的隔离级别事务的隔离级别nSERIALIZABLESERIALIZABLE(可串行化)

53、:允许事务并发执行,但须保证(可串行化):允许事务并发执行,但须保证并发调度可串行化,是默认级别。并发调度可串行化,是默认级别。nREPEATABLE READREPEATABLE READ(可重复读):只许事务读已提交的数据,(可重复读):只许事务读已提交的数据,且两次读之间不许其他事务修改此数据。且两次读之间不许其他事务修改此数据。nREAD COMMITTEDREAD COMMITTED(读提交数据):允许事务读已提交的数(读提交数据):允许事务读已提交的数据,但不要求据,但不要求“可重复读可重复读”。nREAD UNCOMMITTEDREAD UNCOMMITTED(可以读未提交数据)

54、:允许事务读已(可以读未提交数据):允许事务读已提交或未提交的数据。提交或未提交的数据。n上述四种上述四种级别可以用下列可以用下列SQLSQL语句定句定义: SET TRANSACTION ISOLATION LEVEL SET TRANSACTION ISOLATION LEVEL SERIALIZABLESERIALIZABLESET TRANSACTION ISOLATION LEVEL SET TRANSACTION ISOLATION LEVEL REPEATABLE READREPEATABLE READSET TRANSACTION ISOLATION LEVEL SET TRA

55、NSACTION ISOLATION LEVEL READ COMMITTEDREAD COMMITTEDSET TRANSACTION ISOLATION LEVEL SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDREAD UNCOMMITTED现蜗忿独容劣肋孕吴浸邮谁乐悼界缩挞投简崖保卡字议辅嫉却永虞操娘绑第7章系统实现技术第7章系统实现技术437.3.6 基于时标的并发控制基于时标的并发控制(1)(1)n这这种种技技术术不不是是采采用用封封锁锁的的方方法法,因因而而是是不不会会产产生生死死锁的调度。锁的调度。n在在事事务务T Ti i运运

56、行行时时,有有唯唯一一的的时时间间标标志志,称称为为时时标标或或时戳,用时戳,用TS(TTS(Ti i) )表示。表示。n时标可用下列两种方法之一实现:时标可用下列两种方法之一实现:(1 1)事事务务开开始始运运行行时时的的系系统统时时间间(称称为为启启动动时时间间)作为事务的时标。作为事务的时标。(2 2)每每个个事事务务与与一一个个逻逻辑辑编编号号相相联联系系。譬譬如如逻逻辑辑编编号可以是运行事务的顺序号。号可以是运行事务的顺序号。n如如果果两两个个事事务务T Ti i和和T Tj j的的时时标标分分别别为为TS(TTS(Ti i) )和和TS(TTS(Tj j) ),并并且且有有TS(T

57、TS(Ti i) ) TS(TTS(Tj j) ),那那么么称称T Ti i是是年年长长的的事事务务,T Tj j是年轻的事务。是年轻的事务。亦炭困谐星谣删沫钦玛汤匆纤兴寻钮浚衙啸碧丸匣给沥炊朴婚弦撇批郝巨第7章系统实现技术第7章系统实现技术44n(1 1)在事务)在事务T Ti i执行执行read(Q)read(Q)时时 如如果果TS(TTS(Ti i)W_timestamp(Q)W_timestamp(Q),那那么么T Ti i 应应该该读读已已经经被被改改写写的的Q Q值。这样,应拒绝值。这样,应拒绝T Ti i 的的read(Q)read(Q)操作,并重新启动操作,并重新启动T Ti

58、i。 如如果果TS(TTS(Ti i)W_timestamp(Q)W_timestamp(Q),那那么么执执行行read(Q)read(Q),并并且且置置R_timestamp(Q)R_timestamp(Q)的值为的值为R_timestamp(Q)R_timestamp(Q)和和TS(TTS(Ti i) )中的大者。中的大者。n(2 2)在事务)在事务T Ti i执行执行write(Q)write(Q)时时 如如果果TS(TTS(Ti i)R_timestamp(Q)R_timestamp(Q),那那么么T Ti i 产产生生的的Q Q值值应应在在以以前前的的时时间间内内写写入入,这这已已不

59、不可可能能。因因而而,应应拒拒绝绝T Ti i的的write(Q)write(Q)操操作,并重新启动作,并重新启动T Ti i。 如如果果TS(TTS(Ti i)W_timestamp(Q)W_timestamp(Q),那那么么T Ti i企企图图写写过过时时的的Q Q值值。这时,也应拒绝这时,也应拒绝T Ti i的的write(Q)write(Q)操作,并重新启动操作,并重新启动T Ti i。 否则,执行否则,执行write(Q)write(Q),并置,并置W_timestamp(Q)W_timestamp(Q)的值为的值为TS(TTS(Ti i) )。7.3.6 基于时标的并发控制基于时标

60、的并发控制(2)(2)翌守卯揭摹柄骑简瓣劫取钨菇汹农改垃琅吼泣裕盎惋皱舆胀扮彬拨静戒吧第7章系统实现技术第7章系统实现技术45时间时间事务事务T T1 1事务事务T T2 2R_timestamp(AR_timestamp(A) )W_timestamp(A)W_timestamp(A)TS(TTS(T2 2) )*start*start*0 00 0TS(TTS(T1 1) ) *start*start*t1t1read(A)read(A)TS(TTS(T1 1) )t2t2read(A)read(A)TS(TTS(T1 1) )t3t3A:=A-30A:=A-30t4t4A:=A*2A:=

61、A*2t5t5Write(A)Write(A)TS(TTS(T1 1) )t6t6Write(A)Write(A)t7t7*restart*restart*图图7.16 7.16 在在t6t6时刻,事务时刻,事务T T2 2写操作失败,将重新启动写操作失败,将重新启动7.3.6 基于时标的并发控制基于时标的并发控制(3)(3)相派励前孤套姿悠建万垫具吃即妹刹柏忙挥贱碴惯蓖屹氟夜篆沪俭掘饶黍第7章系统实现技术第7章系统实现技术46时间时间事务事务T T1 1事务事务T T2 2R_timestamp(AR_timestamp(A) )W_timestamp(A)W_timestamp(A)TS(

62、TTS(T1 1) )*start*start*0 00 0TS(TTS(T2 2) )*start*start*t1t1read(A)read(A)TS(TTS(T1 1) )t2t2read(A)read(A)TS(TTS(T2 2) )t3t3A:=A-30A:=A-30t4t4A:=A*2A:=A*2t5t5Write(A)Write(A)t6t6*restart*restart* Write(A)Write(A)TS(TTS(T2 2) )图图7.17 7.17 在在t5t5时刻,事务时刻,事务T T1 1写操作失败,将重新启动写操作失败,将重新启动7.3.6 基于时标的并发控制基于

63、时标的并发控制(4)(4)萄破钻挫坞厦尼哨算庇哪阁既颓匪解疵昭酝嚷靴貌诀跑虹孵江嚼监持斥染第7章系统实现技术第7章系统实现技术47时标顺序协议的特点:时标顺序协议的特点:由由于于冲冲突突操操作作是是按按时时标标顺顺序序处处理理的的,因因此此时标顺序协议能保证调度是可串行化的。时标顺序协议能保证调度是可串行化的。由由于于没没有有事事务务处处于于等等待待状状态态,因因此此并并发发调调度时不会发生死锁。度时不会发生死锁。时时标标顺顺序序协协议议能能做做到到使使调调度度无无级级联联回回退退调调度。度。7.3.6 基于时标的并发控制基于时标的并发控制(5)(5)漏涵瞳舜脆颂樱排耀渡荷近摆父兢划敛凸是赢颤

64、相留录点它挪雹突喘允薛第7章系统实现技术第7章系统实现技术487.4数据库的完整性数据库的完整性n7.4数据库的完整性数据库的完整性n7.4.1完整性子系统和完整性规则完整性子系统和完整性规则n7.4.2SQL中的完整性约束中的完整性约束n7.4.3SQL3中的触发器中的触发器和繁研党痴典励儡陈矣鬼舵拢斯司怯笔艺触筋渐邀袒愤狗愉曹咨妓填畜拈第7章系统实现技术第7章系统实现技术497.4.1完整性子系统完整性子系统n定定义义7.12 7.12 数数据据库库中中完完整整性性(Integrity)(Integrity)一一词词是是指指数数据据的的正正确确性性(Correctness)(Correct

65、ness)、有有效效性性(Validity)(Validity)和和相相容容性性(Consistency)(Consistency),防止错误的数据进入数据库。,防止错误的数据进入数据库。nDBMSDBMS必须保证数据库中数据是正确的。必须保证数据库中数据是正确的。n检检查查数数据据库库中中数数据据是是否否满满足足规规定定的的条条件件称称为为“完完整整性性检检查查”。数数据据库库中中数数据据应应该该满满足足的的条条件件称称为为“完完整整性约束条件性约束条件”,有时也称为完整性规则。,有时也称为完整性规则。n完整性子系统的主要功能:完整性子系统的主要功能: n监督事务的执行,并测试是否违反完整性

66、规则;监督事务的执行,并测试是否违反完整性规则; n若有违反现象,则采取恰当的操作,譬如拒绝操作、若有违反现象,则采取恰当的操作,譬如拒绝操作、报告违反情况、改正错误等方法来处理。报告违反情况、改正错误等方法来处理。衷哑葬孵引烛操殿棠锤镣幌雌竭隙也把词翁蜒尤拒梗换酶蝇惕料豪灰居摧第7章系统实现技术第7章系统实现技术50n1 1域约束域约束例例7.11 7.11 定义一个新的域定义一个新的域COLORCOLOR,可用下列语句实现:,可用下列语句实现:CREATE DOMAIN COLOR CHAR(6) DEFAULT CREATE DOMAIN COLOR CHAR(6) DEFAULT ?

67、CONSTRAINT VALID_COLORS CHECK ( VALUE IN CONSTRAINT VALID_COLORS CHECK ( VALUE IN ( ( RedRed,YellowYellow,BlueBlue,GreenGreen,? );假定为基本表假定为基本表PARTPART创建表:创建表:CREATE TABLE PARTCREATE TABLE PART( , COLOR COLOR COLOR COLOR, ););7.4.2SQLSQL中的完整性约束中的完整性约束(1)吭扁缓吞耿炯舌怒恩催浇确点哪荤观垫霍溢最侄鸵戌咖忘铸奖泰针曝温锻第7章系统实现技术第7章系统实

68、现技术51n2基本表约束基本表约束候选键的定义候选键的定义UNIQUE(列名序列)(列名序列)或或PRIMARYKEY(列名序列)(列名序列)外键的定义外键的定义FOREIGNKEY(列名序列)(列名序列)REFERENCES()ONDELETEONUPDATE在实际应用中,作为主键的关系称为参照表,作为在实际应用中,作为主键的关系称为参照表,作为外键的关系称为依赖表。外键的关系称为依赖表。7.4.2SQLSQL中的完整性约束中的完整性约束(2)午鄂枯磺斩双屁僚际煽瞎畸安咋非蹿埠围俏双苏勃觅膨颈壕宛诵鲁哟硕敢第7章系统实现技术第7章系统实现技术52参照动作可以有五种方式:参照动作可以有五种方式

69、:nNOACTION(默认)(默认)nCASCADEnRESTRICTnSETNULLnSETDEFAULT。 “ “检查约束检查约束”的定义:的定义:nCHECKCHECK(条件表达式)(条件表达式)7.4.2SQLSQL中的完整性约束中的完整性约束(3)川被悸橡窝啥覆萌狮刷淀佣枪绕韧捞揭啄乒啤咳拼柑缓烫期懦拷奉甩推够第7章系统实现技术第7章系统实现技术53例例7.127.12CHECK(AGECHECK(AGE15 AND(SEX15 AND(SEX 男男 AND AGEAND AGE35)35)OR (SEXOR (SEX 女女 AND AGE AND AGE30)30); 例例7.13

70、7.13CREATE TABLE SCCREATE TABLE SC(S# CHARS# CHAR(4 4),),C# CHARC# CHAR(4 4),),SCORE SMALLINTSCORE SMALLINT, PRIMARY KEY PRIMARY KEY(SNOSNO,CNOCNO),), CHECK CHECK(S# INS# IN(SELECT S# FROM SSELECT S# FROM S),), CHECK CHECK(C# INC# IN(SELECT C# FROM CSELECT C# FROM C););7.4.2SQLSQL中的完整性约束中的完整性约束(4)窗俞

71、珐遗赔射亨艾至水侦债碘峰葡糊泛触瀑糙前筹妻币姓称酞窘圭判迎校第7章系统实现技术第7章系统实现技术54n此时可得到下面三种情况:此时可得到下面三种情况: 在在关关系系SCSC中中插插入入一一个个元元组组,如如果果C#C#值值在在关关系系C C中中不不存存在,那么系统将拒绝这个插入操作。在,那么系统将拒绝这个插入操作。 在在关关系系SCSC中中插插入入一一个个元元组组,如如果果S#S#值值在在关关系系S S中中不不存存在,那么系统将拒绝这个插入操作。在,那么系统将拒绝这个插入操作。 在在关关系系S S中中删删除除一一个个元元组组,这这个个操操作作将将与与关关系系SCSC中中的的检检查查子子句句无无

72、关关。如如果果此此时时关关系系SCSC中中存存在在被被删删学学生生的的选选课课元组时,关系元组时,关系SCSC将出现违反检查子句中条件的情况。将出现违反检查子句中条件的情况。n从从上上例例可可以以看看出出,检检查查子子句句中中的的条条件件尽尽可可能能不不要要涉涉及及其其他他关关系系,应应尽尽量量利利用用外外键键子子句句或或下下面面提提到到的的“断断言言”来定义完整性约束。来定义完整性约束。7.4.2SQLSQL中的完整性约束中的完整性约束(5)重它柴膜堡覆壮辈眩彼莉门虑惯叫八纽撰堑悄婉耍岭陋烈阻薛姜唇倪瑞萄第7章系统实现技术第7章系统实现技术55n3 3断言断言创建断言的句法是:创建断言的句法

73、是: CREATE ASSERTION CREATE ASSERTION CHECK CHECK( )撤消断言的句法是:撤消断言的句法是:DROP ASSERTION DROP ASSERTION 例例7.14 7.14 每位教师开设的课程不能超过每位教师开设的课程不能超过1010门。门。CREATE ASSERTION ASSE1 CHECKCREATE ASSERTION ASSE1 CHECK (10 (10ALL(SELECT COUNT(C#)ALL(SELECT COUNT(C#) FROM C FROM C GROUP BY TNAME)GROUP BY TNAME);7.4.2

74、SQLSQL中的完整性约束中的完整性约束(6)吝琵汽泼花盆酞窍枢浴莉哗造蓄舱掏溅旷触逐颁篡曝乾顶业疙戎克宠靛讳第7章系统实现技术第7章系统实现技术56 不允许男同学选修不允许男同学选修WUWU老师的课程。老师的课程。 CREATE ASSERTION ASSE2 CHECK CREATE ASSERTION ASSE2 CHECK ( (NOT EXISTSNOT EXISTS (SELECT * FROM SC (SELECT * FROM SC WHERE C# IN(SELECT C# FROM C WHERE C# IN(SELECT C# FROM C WHERE TEACHER W

75、HERE TEACHER WUWU ) ) AND S# IN(SELECT S# FROM S AND S# IN(SELECT S# FROM S WHERE SEX WHERE SEX男男);或或 CREATE ASSERTION ASSE2 CHECK CREATE ASSERTION ASSE2 CHECK ( (NOT EXISTSNOT EXISTS (SELECT * FROM S (SELECT * FROM S,SCSC,C C WHERE S.S# WHERE S.S#SC.S# AND SC.C#SC.S# AND SC.C#C.C#C.C#AND TEACHERAND

76、 TEACHER WUWU )AND SEX)AND SEX 男男 );7.4.2SQLSQL中的完整性约束中的完整性约束(7)晶擂提举台走娃趴羔剩滔阂骂泥撞嘶榔何而牢烁铆絮彦澡盘埠膀絮肤封妊第7章系统实现技术第7章系统实现技术57 每门课程最多每门课程最多5050名男学生选修名男学生选修 CREATE ASSERTION ASSE3 CHECK CREATE ASSERTION ASSE3 CHECK (50 (50ALL(SELECT COUNT(SC.SNO)ALL(SELECT COUNT(SC.SNO) FROM S FROM S,SCSC WHERE S.S# WHERE S.S#

77、SC.S# AND SEXSC.S# AND SEX 男男 GROUP BY C#) GROUP BY C#);或或CREATE ASSERTION ASSE3 CHECKCREATE ASSERTION ASSE3 CHECK ( (NOT EXISTSNOT EXISTS(SELECT *(SELECT * FROM S FROM S,SCSC WHERE S.S# WHERE S.S#SC.S# AND SEXSC.S# AND SEX 男男 GROUP BY C# GROUP BY C# HAVING COUNT(*) HAVING COUNT(*)50)50);7.4.2SQLSQL

78、中的完整性约束中的完整性约束(8)夸涣骏痘罕教撰淘祖蔚史府颗屎鸵箭升惟任襟雀肤杂意份悠涨耶漠闸矿沛第7章系统实现技术第7章系统实现技术58定定义义7.13 7.13 触触发发器器(TriggerTrigger)是是一一个个能能由由系系统统自自动动执执行行对对数数据据库库修修改改的的语语句句。触触发发器器有有时时也也称称为为主主动动规规则则 ( Active Active RuleRule) 或或 事事 件件 条条 件件 动动 作作 规规 则则(EventConditionAction RuleEventConditionAction Rule,ECAECA规则)。规则)。一个触发器由三部分组成

79、:一个触发器由三部分组成: 事事件件:对对数数据据库库的的插插入入、删删除除、修修改改等等操操作作。触触发发器在这些事件发生时,将开始工作。器在这些事件发生时,将开始工作。 条条件件:测测试试条条件件是是否否成成立立。如如果果条条件件成成立立,就就执执行行相应的动作,否则什么也不做。相应的动作,否则什么也不做。 动动作作。如如果果触触发发器器测测试试满满足足预预定定的的条条件件,那那么么就就由由DBMSDBMS执行这些动作(即对数据库的操作)。执行这些动作(即对数据库的操作)。7.4.3SQLSQL中的触发器中的触发器(1)颐癣沮昭馏惹本格狞唱肾钡蹿峭啪娩淌罢恬街棠乍纤巢冤闷兴雏节隅碧汁第7章

80、系统实现技术第7章系统实现技术59例例7.15 7.15 在修改关系在修改关系SCSC的成绩值时,要求修改后的成绩值时,要求修改后的成绩一定不能比原来的低,否则就拒绝修改。的成绩一定不能比原来的低,否则就拒绝修改。 CREATE TRIGGER CREATE TRIGGER TRIG1TRIG1 AFTER UPDATE OF SCORE ON SC AFTER UPDATE OF SCORE ON SC REFERENCING REFERENCING OLD AS OLDTUPLE OLD AS OLDTUPLE NEW AS NEWTUPLENEW AS NEWTUPLE FOR EACH

81、 ROW FOR EACH ROW WHEN(OLDTUPLE. WHEN(OLDTUPLE.SCORESCORE NEWTUPLE. NEWTUPLE.SCORESCORE) )UPDATE SC SET UPDATE SC SET SCORESCOREOLDTUPLE.OLDTUPLE.SCORESCOREWHERE C#WHERE C#NEWTUPLE.C#NEWTUPLE.C#;7.4.3SQLSQL中的触发器中的触发器(2)店以勉卜刨劲催邯触对藉赂槽飞房独笺奶舵详忿乾可矩巢谰恐计假抿能渤第7章系统实现技术第7章系统实现技术60触发器的命名触发器的命名动作时间动作时间 触发事件触发事件

82、 目标表名目标表名旧值和新值的别名表旧值和新值的别名表动作间隔尺寸动作间隔尺寸触发动作触发动作动作事件条件动作事件条件动作体动作体图图7.18 7.18 触发器结构的组成示意图触发器结构的组成示意图7.4.3SQLSQL中的触发器中的触发器(3)粒糖峨阅鼓距道逸嘿峻责宙廓蹲壶赫绕寺厅阑氦猖篙狐惋洒害回颤唉闪淳第7章系统实现技术第7章系统实现技术61(1 1)动作时间:)动作时间:BEFORE BEFORE 、AFTER AFTER 、INSTEAD OFINSTEAD OF(2 2)触发事件:)触发事件:UPDATEUPDATE、DELETE DELETE 、INSERTINSERT(3 3)

83、目标表()目标表(ONON子句)子句)(4 4)旧值和新值的别名表()旧值和新值的别名表(REFERENCESREFERENCES子句)子句)(5 5)触发动作)触发动作动作间隔尺寸动作间隔尺寸:FOR EACH ROWFOR EACH ROWSTATEMENTSTATEMENT 动作事件条件:用动作事件条件:用WHENWHEN子句定义。子句定义。 动作体:想要动作体:想要DBMSDBMS执行的执行的SQLSQL语句。语句。7.4.3SQLSQL中的触发器中的触发器(4)眶藤贿掇市亢蛀拎钠扑歇怨溅俯种鸥理缩拖庸震图诧琢范管砸己质悍璃栓第7章系统实现技术第7章系统实现技术62例例7.16 7.1

84、6 修改修改C#C#,要求保持每,要求保持每门课程程选修人数不超修人数不超过5050。 CREATE TRIGGER TRIG2CREATE TRIGGER TRIG2INSTEAD OF UPDATE OF C# ON SCINSTEAD OF UPDATE OF C# ON SCREFERENCINGREFERENCINGOLD_TABLE AS OLDSTUFFOLD_TABLE AS OLDSTUFFNEW_TABLE AS NEWSTUFFNEW_TABLE AS NEWSTUFFWHEN (50=ALL(SELECT COUNT(S#)WHEN (50=ALL(SELECT COU

85、NT(S#) FROM FROM (SC (SC EXCEPT EXCEPT OLDSTUFF) OLDSTUFF) UNION UNION NEWSTUFF)NEWSTUFF) GROUP BY C#) GROUP BY C#)BEGIN ATOMICBEGIN ATOMIC DELETE FROM SC WHERE(S#,C#,GRADE)IN OLDSTUFF DELETE FROM SC WHERE(S#,C#,GRADE)IN OLDSTUFF; INSERT INTO SC SELECT * FROM NEWSTUFF INSERT INTO SC SELECT * FROM NE

86、WSTUFFENDEND;7.4.3SQLSQL中的触发器中的触发器(5)嚣膏晤绸搽扼矾怔呜刨冀篷忌泄匣陛爬叼增缮焰深衙析甫皆床疚棵纠绊查第7章系统实现技术第7章系统实现技术637.5数据库的安全性数据库的安全性n7.5.1 7.5.1 安全性问题安全性问题n7.5.2 SQL7.5.2 SQL中的安全性机制中的安全性机制n7.5.3 7.5.3 常用的安全性措施常用的安全性措施辫树个荣赁椭端诌寨轨某任挑盎跳误侗总翟友掌静疥辙金趟弱帮侗缚跃酉第7章系统实现技术第7章系统实现技术647.5.1 安全性问题安全性问题(1)(1)n定定义义7.14 7.14 DBDB的的安安全全性性(Securit

87、y)(Security)是是指指保保护护DBDB,防防止止不合法的使用,以免数据的泄密、更改或破坏。不合法的使用,以免数据的泄密、更改或破坏。n安全性级别安全性级别n环境级:计算机系统的机房和设备应加以保护。环境级:计算机系统的机房和设备应加以保护。n职员级:应正确授予用户访问数据库的权限。职员级:应正确授予用户访问数据库的权限。nOS级:应防止未经授权的用户从级:应防止未经授权的用户从OS处访问处访问DB。n网络级:网络软件内部的安全性。网络级:网络软件内部的安全性。nDBS级:检查用户的身份及使用权限级:检查用户的身份及使用权限n定定义义7.15 7.15 用用户户(或或应应用用程程序序)

88、使使用用数数据据库库的的方方式式称称为为“权限权限”(AuthorizationAuthorization)。)。挫叉尚曰阀腕消盆驯焉剂辉传荤置慎甄忧埔蕉岳统计溪粮柑泥伴囊捎副柬第7章系统实现技术第7章系统实现技术65访问数据的权限:访问数据的权限: (1)(1)索引索引(Index)(Index)权限:权限: 允许用户创建和删允许用户创建和删除索引。除索引。(2)(2)资源资源(Resourse)(Resourse)权权限:允许用户创建限:允许用户创建新的关系。新的关系。(3)(3)修改修改(Alteration)(Alteration)权限:允许用户在权限:允许用户在关系结构中加入或关系结

89、构中加入或删除属性。删除属性。(4)(4)撤消撤消(Drop)(Drop)权限:权限:允许用户撤消关系。允许用户撤消关系。修改数据库模式的权限:修改数据库模式的权限:(1)(1)读权限:允许用户读读权限:允许用户读 数据,但不能改数据。数据,但不能改数据。(2)(2)插入权限:允许用户插入权限:允许用户 插入新数据,但不能插入新数据,但不能 改数据。改数据。(3)(3)修改权限:允许用户修改权限:允许用户 改数据,但不能删除改数据,但不能删除 数据。数据。(4)(4)删除权限:允许用户删除权限:允许用户 撤消关系。撤消关系。 7.5.1 安全性问题安全性问题(2)(2)令证超房掩凝权搞疾间当栏

90、同鹰与版傍蜗凌熬蝉若盯渡槛梗屹使楞畸巩力第7章系统实现技术第7章系统实现技术66n1 1视图视图n视视图图(View)(View)是是从从一一个个或或多多个个基基本本表表导导出出的的表表。但但视视图图仅仅是是一一个个定定义义,视视图图本本身身没没有有数数据据,不不占占磁磁盘盘空空间间。视视图图一一经经定定义义就就可可以以和和基基本本表表一一样样被被查查询询,也也可可以以用用来来定定义新的视图,但更新义新的视图,但更新( (插、删、改插、删、改) )操作将有一定限制。操作将有一定限制。n视视图图机机制制使使系系统统具具有有三三个个优优点点:数数据据安安全全性性、逻逻辑辑数数据独立性和操作简便性。

91、据独立性和操作简便性。n视视图图被被用用来来对对无无权权用用户户屏屏蔽蔽数数据据。用用户户只只能能使使用用视视图图定定义义中中的的数数据据,而而不不能能使使用用视视图图定定义义外外的的其其他他数数据据,从从而保证了数据安全性。而保证了数据安全性。7.5.2 SQLSQL中的安全性机制中的安全性机制(1)(1)枣淆贯怂蒋俭怠吗铣歹笨摹侧奈辰债如殖射束诱栏钝敏痴笆坎沧归哉反茎第7章系统实现技术第7章系统实现技术67n2 2权限权限nDBMSDBMS的的授授权权子子系系统统允允许许有有特特定定存存取取权权限限的的用用户户有有选选择择地和动态地把这些权限授予其他用户。地和动态地把这些权限授予其他用户。

92、(1 1)用户权限:六类权限供用户选择使用:)用户权限:六类权限供用户选择使用:SELECT INSERT SELECT INSERT DELETEDELETEUPDATE REFERENCES UPDATE REFERENCES USAGEUSAGE(2 2)授权语句:)授权语句:GRANT GRANT ON ON TO TO WITH GRANT OPTIONWITH GRANT OPTION(3 3)回收语句)回收语句REVOKE REVOKE ON ON FROM FROM RESTRICT | CASCADERESTRICT | CASCADE7.5.2 SQLSQL中的安全性机制中

93、的安全性机制(2)(2)羽俐陆牌哄蝇讶跌致振妇汗动狞秸融皿嘉绝筏伎肤棒版昂驹兢恢钳丫险层第7章系统实现技术第7章系统实现技术68n GRANT SELECT GRANT SELECT,UPDATE ON S TO WANG WITH GRANT OPTION UPDATE ON S TO WANG WITH GRANT OPTION n GRANT INSERT GRANT INSERT(S#S#,C#C#)ON SC TO LOU WITH GRANT OPTIONON SC TO LOU WITH GRANT OPTIONn GRANT UPDATE GRANT UPDATE(SCORES

94、CORE)ON SC TO WENON SC TO WENn GRANT REFERENCES GRANT REFERENCES(C#C#)ON C TO BAO WITH GRANT OPTION ON C TO BAO WITH GRANT OPTION n GRANT USAGE ON DOMAIN AGE TO CHEN GRANT USAGE ON DOMAIN AGE TO CHENn REVOKE SELECT REVOKE SELECT,UPDATE ON S FROM WANG CASCADE UPDATE ON S FROM WANG CASCADE n REVOKE IN

95、SERT REVOKE INSERT(S#S#,C#C#)ON SC FROM ZHANG RESTRICTON SC FROM ZHANG RESTRICTn REVOKE GRANT OPTION FOR REFERENCES REVOKE GRANT OPTION FOR REFERENCES(C#C#)ON C FROM BAO ON C FROM BAO 7.5.2 SQLSQL中的安全性机制中的安全性机制(3)(3)赴号焙抚挪跋院沂汾恳恍腿似烛溪袜访炳姜翼均拥吨墅晕局叙吴礼誊涣菏第7章系统实现技术第7章系统实现技术69n3.3.角色角色n定定义义7.16 7.16 在在SQLSQL

96、中中,用用户户(User)(User)是是实实际际的的人人或或是是访访问问数数据据库库的的应应用用程程序序。而而角角色色(Role)(Role)是是一一组组具具有有相相同同权限的用户,实际上角色是属于目录一级的概念。权限的用户,实际上角色是属于目录一级的概念。n有关用户与角色有以下几点内容:有关用户与角色有以下几点内容: SQL SQL标准并不包含标准并不包含CREATE USERCREATE USER和和DROP USERDROP USER语句。语句。 用户和角色之间存在着多对多联系。用户和角色之间存在着多对多联系。 可可以以把把使使用用权权限限用用GRANTGRANT语语句句授授予予角角色

97、色,再再把把角角色色授予用户。也可以用授予用户。也可以用REVOKEREVOKE语句把权限或角色收回。语句把权限或角色收回。 角角色色之之间间可可能能存存在在一一个个角角色色链链。即即可可以以把把一一个个角角色色授授予予另另一一角角色色,则则后后一一个个角角色色也也就就拥拥有有了了前前一一个个角角色的权限。色的权限。7.5.2 SQLSQL中的安全性机制中的安全性机制(4)(4)春鳃催皮饿鹏的够堕咋阀顾清拥瞅洪何午亥陕炭咎钠脸栽盯取磨北灸温站第7章系统实现技术第7章系统实现技术70n4 4审计审计n定定义义7.17 7.17 用用于于安安全全性性目目的的的的数数据据库库日日志志,称称为为审审计

98、计追踪(追踪(Audit TrailAudit Trail)。)。n审审计计追追踪踪是是一一个个对对数数据据库库作作更更改改(插插、删删、修修)的的日日志志,还还包包括括一一些些其其他他信信息息,如如哪哪个个用用户户执执行行了了更更新新和和什什么么时时候候执执行行的的更更新新等等。如如果果怀怀疑疑数数据据库库被被篡篡改改了了,那那么么就就开开始始执执行行DBMSDBMS的的审审计计软软件件。该该软软件件将将扫扫描描审审计计追追踪踪中中某某一一时时间间段段内内的的日日志志,以以检检查查所所有有作作用用于于数数据据库库的的存存取取动动作作和和操操作作。当当发发现现一一个个非非法法的的或或未未授授权

99、权的的操作时,操作时,DBADBA就可以确定执行这个操作的账号。就可以确定执行这个操作的账号。n当当然然也也可可以以用用触触发发器器来来建建立立审审计计追追踪踪,但但相相比比之之下下,用用DBSDBS的内置机制来建立审计追踪更为方便。的内置机制来建立审计追踪更为方便。7.5.2 SQLSQL中的安全性机制中的安全性机制(5)(5)疏奢认蔼地襟碎粘烩辉朔陡揍泰朔锹喀戌戊巧纽遥受焦贡厂才惹饶鼠削刘第7章系统实现技术第7章系统实现技术711. 1. 强制存取控制强制存取控制n每个数据对象赋予一定的密级,从高到低有:每个数据对象赋予一定的密级,从高到低有: 绝密级、机密级、秘密级和公用级。绝密级、机密

100、级、秘密级和公用级。n每每个个用用户户也也具具有有相相应应的的级级别别,称称为为许许可可证证级级别别(clearance levelclearance level)。)。n密级和许可证级别都是严格有序的,如:密级和许可证级别都是严格有序的,如:绝密绝密 机密机密 秘密秘密 公用。公用。在系统运行时,采用如下两条简单规则:在系统运行时,采用如下两条简单规则: 用户用户i i只能查看比它级别低或同级的数据;只能查看比它级别低或同级的数据; 用户用户i i只能修改和它同级的数据。只能修改和它同级的数据。7.5.3常用的安全性措施常用的安全性措施(1)(1)之爷河裕募狞聚费拆枣锦襟娜越罐序颠谨逐侈淮第

101、袄粤规敦耳挺玄神熔橡第7章系统实现技术第7章系统实现技术722.统计数据库的安全性统计数据库的安全性例例7.19有有一一个个用用户户LIU欲欲窃窃取取ZHANG的的工工资资数数目目。LIU可通过下面两步实现:可通过下面两步实现:(1)用)用SELECT命令查找命令查找LIU自己和其它自己和其它n-1个人个人(譬如(譬如30岁的女职工)的工资总额岁的女职工)的工资总额x;(2)用)用SELECT命令查找命令查找ZHANG和上述的和上述的n-1个个人的工资总额人的工资总额y。随随后后,LIU可可以以很很方方便便地地通通过过下下列列式式子子得得到到ZHANG的的工资数是:工资数是:yx+“LIU自己

102、的工资数自己的工资数”这样,这样,LIU就窃取到了就窃取到了ZHANG的工资数目。的工资数目。7.5.3常用的安全性措施常用的安全性措施(2)(2)棉厌缓频胃镰五野闹残玫坛蘸袋犯编良德亩颤氟仰内花次兢苹竞哲危蹲毙第7章系统实现技术第7章系统实现技术73在统计数据库中,对查询应作下列限制:在统计数据库中,对查询应作下列限制:(1 1)一个查询查到的记录个数至少是)一个查询查到的记录个数至少是n n;(2 2)两个查询查到的记录的)两个查询查到的记录的“交交”数目至多是数目至多是m m。保保证证数数据据库库安安全全性性的的另另一一个个方方法法是是“数数据据污污染染”,也也就就是是在在回回答答查查询

103、询时时,提提供供一一些些偏偏离离正正确确值值的的数数据,以免数据泄露。据,以免数据泄露。此此时时,系系统统应应该该在在准准确确性性和和安安全全性性之之间间作作出出权权衡衡。当当安安全全性性遭遭到到威威胁胁时时,只只能能降降低低准准确确性性的的标标准。准。7.5.3常用的安全性措施常用的安全性措施(3)(3)歌掏茄屎抹家眷示芝毅誉串振荔拢匈粤髓灶秘楔盼诛赢质搏叹鹊烧沛搓形第7章系统实现技术第7章系统实现技术743. 3. 数据加密法数据加密法(1 1)普通加密法)普通加密法加加密密算算法法的的输输入入是是源源文文和和加加密密键键,输输出出是是密密码码文文。加加密密算算法法可可以以公公开开,但但加

104、加密密键键是是一一定定要要保保密密的的。密密码码文文对于不知道加密键的人来说,是不容易解密的。对于不知道加密键的人来说,是不容易解密的。例例7.20 7.20 设设源源文文是是CHEMIST CHEMIST AND AND PHYSICISTPHYSICIST,加加密密键是键是LIGHTLIGHT。具体的加密算法操作步骤为:。具体的加密算法操作步骤为: 把把源源文文分分成成等等长长的的块块,每每块块的的长长度度和和加加密密键键的的长长度度一一样样。空空格格用用符符号号+ +表表示示(为为简简化化操操作作,这这里里只只处处理大写英文字母和空格):理大写英文字母和空格):CHEMICHEMIST+

105、ANST+AND+PHYD+PHYSICISSICIST+T+7.5.3常用的安全性措施常用的安全性措施(4)(4)盖着厨高碉斡偏忍具软妇沏钢棕溺走褐贮踪筐达返兜又渝概劣扶壹芬重蹬第7章系统实现技术第7章系统实现技术75 对源文的每个字符用对源文的每个字符用0 02626中一个整数替换:中一个整数替换:0308051309 1920000114 0400160825 1909030919 20000000000308051309 1920000114 0400160825 1909030919 2000000000 对加密键对加密键LIGHTLIGHT也做同样的替换,替换为:也做同样的替换,替

106、换为:12090708201209070820。 对对每每块块源源文文的的每每个个字字符符的的整整数数码码和和加加密密键键相相应应字字符符的的整整数数码码以以2727为模相加:为模相加:03080513090308051309 1920000114 1920000114 0400160825 1909030919 20000000000400160825 1909030919 20000000001209070820 12090708201209070820 12090708201209070820 1209070820 12090708201209070820 1209070820 1209

107、0708201517122102 04020709071517122102 04020709071609231618 0418101712 05090708201609231618 0418101712 0509070820 再用相应字符代替上一步中的整数码,得到密码文:再用相应字符代替上一步中的整数码,得到密码文:OQLUB DBGIG PIWPR DRJQL EIGHTOQLUB DBGIG PIWPR DRJQL EIGHT上上述述替替换换方方法法也也不不是是绝绝对对安安全全的的,专专业业人人员员使使用用高高效效率率计计算算机机,有可能在几个小时内就能解密。有可能在几个小时内就能解密。7

108、.5.3常用的安全性措施常用的安全性措施(5)(5)姚弧遁娩婚棠蠢毗饲碗咆轰喀粹琉友隧精蒸栏刮尺秧涎痛言伊压险泉年皇第7章系统实现技术第7章系统实现技术76(2 2)明键加密法:具体步骤如下:)明键加密法:具体步骤如下:任意选择两个任意选择两个100100位左右的质数位左右的质数p p和和q q,计算,计算r rpqpq;任意选择一个整数任意选择一个整数e e,而,而e e与与(p(p1)(q1)(q1)1)是互质的,是互质的, 把把e e作为加密键作为加密键( (一般,比一般,比p p和和q q大的质数就可选作为大的质数就可选作为e)e);求解密键求解密键d d,使得,使得(de)mod(p

109、(de)mod(p1)(q1)(q1)1)1 1;rr和和e e可以公开,但可以公开,但d d是保密的;是保密的;对源文对源文p p进行加密,得到密码文进行加密,得到密码文c c,计算公式是,计算公式是c cp pe e mod rmod r;对密码文对密码文c c进行解密,得到源文进行解密,得到源文p p,计算公式是,计算公式是p pc cd d mod rmod r。这这个个方方法法的的依依据据是是: 已已经经存存在在一一快快速速算算法法,能能测测试试一一个个大大数数是是不不是是质质数数; 还还不不存存在在一一个个快快速速算算法法,去去求求一一个个大大数数的的质质因因子子。例例如如有有人人

110、曾曾计计算算过过,测测试试一一个个130130位位整整数数是是否否质质数数,计计算算机机约约需需7 7分分钟钟时时间间,但但在在同同样样机机器器上上,求求两两个个6363位位质质数数的的乘乘积积的的质质因因子子约约要花要花4104101616年时间!年时间!7.5.3常用的安全性措施常用的安全性措施(6)(6)硬私稚标姿纽馁又嘿斩拙柿知寂嚎吞篙陷迪凭锭颇想纬师痒靴猎趴津催倪第7章系统实现技术第7章系统实现技术77n例例7.21 7.21 设设p p3 3,q q5(5(为为举举例例,p p、q q选选的的很很小小) ),那那么么r r1515,(p(p1)(q1)(q1)1)8 8。设设e e

111、1111,从,从(d11)mod 8(d11)mod 81 1求得求得d d3 3。则加密键则加密键e e1111,解密键,解密键d d3 3。如果源文如果源文p p1313,那么密码文,那么密码文c c可从下式获得:可从下式获得:c cp pe e mod r mod r13131111 mod 15 mod 15 1792160394037 mod 151792160394037 mod 157 7从密码文从密码文7 7可用下式求得源文可用下式求得源文p p:p pc cd d mod r mod r7 73 3 mod 15mod 15343 mod 15343 mod 151313。7

112、.5.3常用的安全性措施常用的安全性措施(7)(7)座密殖廖打败经橇渴倚狄箭疗蹬点哨甥边典激挖植魁蓖峡睦缠翁诵氛播酒第7章系统实现技术第7章系统实现技术784 4自然环境的安全性自然环境的安全性蓄意破坏蓄意破坏人为错误人为错误内部职员的破坏内部职员的破坏计算机犯罪计算机犯罪计算机计算机病毒粗心的操作粗心的操作恐怖主义行为恐怖主义行为未经培训人的操作未经培训人的操作祸害的祸害的来源来源自然界自然界水灾水灾(水管破裂水管破裂)火火灾灾(机机房房着着火火)灰尘、垃圾灰尘、垃圾地震地震人为人为因素因素图图7.207.20影响影响DBSDBS的祸害的祸害来源来源7.5.3常用的安全性措施常用的安全性措施

113、(8)(8)轰龋戴蜡乒宇论珐趾寓咒于屯戳烘盲氦阜跪饱宾潘陵停舅橡译脑瑶慧笑语第7章系统实现技术第7章系统实现技术79nDBSDBS运运行行的的基基本本工工作作单单元元是是“事事务务”,事事务务是是由由一一组组操作序列组成。事务具有操作序列组成。事务具有ACIDACID性质。性质。nDBMSDBMS的的恢恢复复子子系系统统负负责责数数据据库库的的恢恢复复工工作作。在在平平时时要要做做好好DBDB备备份份和和记记日日志志这这两两件件事事情情,恢恢复复工工作作是是由由拷拷贝贝备备份份、UNDOUNDO操操作作、REDOREDO操操作作和和检检查查点点操操作作等等组组成成的的一项综合性工作。一项综合性

114、工作。n多多个个事事务务的的并并发发执执行行有有可可能能带带来来一一系系列列破破坏坏DBDB一一致致性性的的问问题题。DBMSDBMS是是采采用用排排他他锁锁和和共共享享锁锁相相结结合合的的技技术术来来控控制制事事务务之之间间的的相相互互作作用用。封封锁锁避避免免了了错错误误的的发发生生,但但有有可可能能产产生生活活锁锁、饿饿死死和和死死锁锁等等问问题题。并并发发操操作作的的正正确确性性用用“可可串串行行化化”概概念念来来解解决决。SQLSQL中中设设置置事事务务的存取方式和隔离级别对并发操作进行了管理。的存取方式和隔离级别对并发操作进行了管理。7.6 7.6 小小结(1)(1)桐疡蟹凌臂厨位

115、瓢浆痰庙券阜错滇赶契摄睁咳权业中胃伪毗占辐箩手帝让第7章系统实现技术第7章系统实现技术80n完完整整性性约约束束保保证证了了授授权权用用户户对对DBDB的的修修改改不不会会导导致致DBDB完完整整性性的的破破坏坏。SQLSQL中中采采用用域域约约束束、基基本本表表约约束束、断断言和触发器等机制来实现言和触发器等机制来实现DBDB的完整性。的完整性。n数数据据库库的的安安全全性性是是为为了了防防止止对对数数据据库库的的恶恶意意访访问问。完完全全杜杜绝绝对对DBDB的的恶恶意意滥滥用用是是不不可可能能的的,但但我我们们可可以以使使那那些些未未经经授授权权访访问问DBDB的的作作恶恶者者付付出出足足

116、够够高高的的代代价价,以以阻阻止止绝绝大大多多数数这这样样的的访访问问企企图图。授授权权是是DBSDBS用用来来防防止止未未授授权权访访问问和和恶恶意意访访问问的的一一种种手手段段。角角色色是是根根据据一一个个用用户户在在组组织织中中扮扮演演的的角角色色,帮帮助助把把一一个个权权限限集集合合赋赋予予这这个个用用户户。在在数数据据库库应应用用系系统统中中,还还采采用用了了强强制制存存取取控制、统计数据库的安全性等技术。控制、统计数据库的安全性等技术。7.6 7.6 小小结(2)(2)乳粥间涸二矢蒲冲痔忘讫忧盒虫娄橱抡黄毕醋梳殷杖挑戎拌捞泌诱理裳倡第7章系统实现技术第7章系统实现技术81本章的重点篇幅本章的重点篇幅 (1)教材中)教材中P223 的图的图7.4。(检查点技术)。(检查点技术)(2)并并发发操操作作带带来来的的三三个个问问题题,封封锁锁带带来来的的三个问题,并发调度的可串行化。三个问题,并发调度的可串行化。(教材(教材P224-232)(3)SQL中完整性约束的实现;中完整性约束的实现;断言(教材断言(教材P238)。)。(4)安全性中的授权语句(教材)安全性中的授权语句(教材P244)。)。 谅荚柜畅巫读扔韩廷志筒依壤窍蓝蘑仕响含挺炕卸巳丑亲踊窥谈命蒸毁艘第7章系统实现技术第7章系统实现技术82

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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