第7章 系统实现技术_第1页
第7章 系统实现技术_第2页
第7章 系统实现技术_第3页
第7章 系统实现技术_第4页
第7章 系统实现技术_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 系统实现技术 1 本章重要概念(一) (1)系统目录及其和dbms各子系统的联系。 (2)事务的定义,commit和rollback的语义, 事务的acid性质,事务的状态变迁图。 (3)存储器类型,稳定存储器的实现,数据传 送过程。 (4)恢复的定义、基本原则和实现方法,故障 的类型,检查点技术,redo和undo操作,运 行记录优先原则。 2 本章重要概念(二) (5)并发操作带来的三个问题,x锁、px协议、 pxc协议,s锁、ps协议、psc协议,活锁、 饿死和死锁,并发调度,串行调度,并发调度 的可串行化,两段封锁法,sql中事务的存取 模式和隔离级别。 (6)完整性的定义,完

2、整性子系统的功能,完 整性规则的组成。sql中的三大类完整性约束, sql3中的触发器技术。 (7)安全性的定义、级别,权限,sql中的安 全性机制,几种常用的安全性措施,自然环境 的安全性。 3 主要内容和学习要求 n7.1 系统目录 (理解) n7.2 事务 (综合应用) n7.3 数据库的恢复 (理解) n7.4 数据库的并发控制 (了解) n7.5 并发事务的可串行化和可恢复性(了解) n7.6 数据库的完整性(理解) n7.7 数据库的安全性(理解) n小结 4 系统实现技术 n本章主要涉及实现dbms时的具体技术。在 dbs运行时,系统有一个“系统目录”,用于 存放数据库结构的描述

3、。dbs运行的最小逻辑 工作单位是“事务”,所有对数据库的操作, 都要以事务作为一个整体单位来执行或撤销。 ndbms对db的监控,称为数据库的管理,有时 也称为数据库的保护。对数据库的管理主要通 过四个方面实现:数据库的恢复、并发控制、 完整性控制和安全性控制。 5 系统目录 n什么是系统目录 n系统目录的重要性 n系统目录的内容 n元数据 6 rdbms系统目录的存储内容 n关系名,属性名,属性域(数据类型) n各种约束,主键,辅助键,外键,空值/非空 值 n视图的外部级描述,存储结构和索引的内部级 描述 n安全性和授权规则 n数据完整性规则 注意:这些数据都以表格的形式存在 7 某些rd

4、bms的系统目录内容 rel_and_attr_catalog rel_nameattr_nameattr_typemember_of_pkmember_of_fkfk_relation 关系 名 属性 名 属性 类型 主 键 外键 外键关系 relation_keys rel_namekey_numbermember_attr (a)存储键信息的目录关系 relation_indexes rel_nameindex_namemember_attrindex_typeattr_noasc_desc (b)存储索引信息的目录关系 view_querier view_attributes view

5、_namequery view_nameattr_nameattr_num (c)存储视图信息的目录关系 8 系统目录的扩充er图 属性 键 视图属性 视图关系 关系 基本关系 索引 属性名 键类型 d 数据类型 键编号 关系名 查询 索引类型属性序号索引名 属性名 k_a r_i r_f i_a k_i r_a r_k v_a 外键 9 系统目录和dbms各子系 统的联系 ddl编译程序 dml优化程序 dml命令的外 部级到概念级 映象 dml编译程序 dml分析校 验程序 dbms 处理和检查三级 模式两级映象 检查查询涉及的 关系名属性名等 将查询涉及的概念 模式转换成内模式, 产生访

6、问计划 根据物理结构优 化查询执行方案 将查询中的视图由外 部级导到概念级映象 处理和检查权限 授权和安全程序 10 主要内容 n7.1 系统目录 n7.27.2 事务事务 n7.3 数据库的恢复 n7.4 数据库的并发控制 n7.5 并发事务的可串行化和可恢复性 n7.6 数据库的完整性 n7.7 数据库的安全性 n小结 11 事务 n定义 事务(transaction)是构成单一逻辑工作单元的操作集合 n性质 n原子性(atomicity):事务是一个不可分割的工作单元 n一致性(consistency) :即数据不会应事务的执行而遭受破 坏 n隔离性(isolation) :在多个事务并

7、发执行时,系统应保证 与这些事务先后单独执行时的结果一样 n持久性(durability) :一个事务一旦完成全部操作后,它 对数据库的所有更新应永久地反映在数据库中 12 例子:事务及其性质 问题:设银行数据库中有一转账事 务t,从账号a转一笔款子($50) 到账号b。 相应的事务: t:read(a); a:=a50; write(a); read(b); b:=b + 50; write(b). n原子性(a,b同时被修 改或同时保持原值) n一致性(a+b的值不变) n隔离性 n持久性 13 事务提交和事务撤销 n事务的所有操作都完成了,则事务提交 (commit),否则事务撤销(ro

8、llback) nbegin transaction标志事务开始执行 nbegin transaction和commit或 rollback一起保证了事务的四个性质 n对数据库访问的两个基本操作:读和写, 但完成写操作后,数据可能暂时放在内 存中,而非直接写进数据库。 14 主要内容 n7.1 系统目录 n7.2 事务 n7.3 7.3 数据库的恢复数据库的恢复 n7.4 数据库的并发控制 n7.5 并发事务的可串行化和可恢复性 n7.6 数据库的完整性 n7.7 数据库的安全性 n小结 15 存储器类型 n易失性存储器(volatile storage) 内存、cache存储器 n非易失性存

9、储器(nonvolatile storage) 磁盘和磁带 n稳定存储器(stable storage) 这是一个理论上的概念。存储在稳定存储器中的信息是决不会 丢失的。 n稳定存储器的实现 n数据备份 n数据银行 16 块和块的操作 n块、物理块和缓冲块 n块的操作 ninput(a):把物理 块a的内容传送到内 存的缓冲块中。 noutput(b):把缓 冲块b的内容传送到 磁盘中恰当的物理块 中 b 内存 a b 磁盘 input(a) output(b) 图7.5 块操作 17 数据访问 write(x) xi 包含x的块bx存 在, read(x) 事务 系统 开 始 请求read(

10、x) 事务工作区 分配 x 磁盘缓冲区 扫描内存 磁盘 包含x的块bx存 在,input(b) 18 恢复和原子性的联系 银行转账系统 a=2000 b=1000 事务 a=a-100 b=b+100 output(a) output(b) 断电或其 他故障 假设没有事务的 原子性,那么重 新启动事务时要 么a因为再执行 一遍而为1800, 要么b因从未执 行而保持原值 要达到原子性,必 须要把描述修改的 信息输出到稳定存 储器中,但此时不 修改磁盘中的数据。 这个过程直到事务 的commit操作为 止。有两种方式可 实现这个过程, “日志日志”和和“阴阴 影页影页”技术。 19 恢复的基本原

11、则和实现方法 n基本原则 :“冗余”,即数据库重复存储 n具体实现方法 n平时做好两件事:转储和建立日志 n周期地(比如一天一次)对整个数据库进行拷贝,转储到 另一个磁盘或磁带一类存储介质中。 n 建立日志数据库。记录事务的开始、结束及数据每一次 插入、删除和修改前后的值,并写到“日志”库中。 n 一旦发生数据库故障,分两种情况进行处理 n如果数据库已被破坏,则装入last数据库备份,再利用日 志库将这两个数据库状态之间的所有更新重新做一遍。 n如果数据库未被破坏,但某些数据不可靠,则撤消所有不 可靠的修改,把数据库恢复到正确的状态。 20 故障类型和恢复方法 n事务故障(恢复由系统自动进行)

12、 n可以预期的事务故障,如存款余额透支等(加入判 断和rollback语句) n非预期事务故障,如运算溢出、数据错误、死锁等 (由系统直接对该事务执行undo处理) n系统故障(软故障) (恢复由系统自动进行) 硬件故障、软件错误或掉电等等(需要重新启动来恢 复到正确的状态) u对未完成事务作undo处理 u对已提交事务但更新还留在缓冲区的事务进行 redo处理 n介质故障(硬故障) (恢复需要dba配合执行) 磁盘物理故障或遭受病毒破坏p261恢复过程 21 检查点方法 n什么是检查点方法 n检查点方法的恢复算 法 n根据日志文件建立事 务重做队列和事务撤 销队列 n对重做队列中的事务 进行

13、redo处理,对撤 消队列中的事务进行 undo处理 - 事务 检查点 故障点tf 时间 检查点tc t1 t3 t2 t5 t4 事务t1不必恢复;事务t2和事务t4必 须重做(redo);事务t3和事务t5必 须撤消(undo) 22 sql对事务的支持 n无begin transaction ncommit nrollback n游标 23 主要内容 n7.1 系统目录 n7.2 事务 n7.3 数据库的恢复 n7.4 7.4 数据库的并发控制数据库的并发控制 n7.5 并发事务的可串行化和可恢复性 n7.6 数据库的完整性 n7.7 数据库的安全性 n小结 24 数据库的并发控制 n这

14、里的“并发”是指在单处理机上,利 用分时方法实行多个事物同时做。 n数据库的并发操作通常会带来四个问题: 丢失更新问题、读脏数据问题、错误求 和问题和不可重复读问题 25 并发操作带来的问题1-丢失更新 时间更新事务t1数据库中a的值更新事务t2 t0 100 t1find a t2 find a t3a:=a-30 t4 a:=a*2 t5upd a t6 70upd a t7 200 图7.10 在时间t7丢失了事务t1的更新 (find表示从db中读值,upd表示把值写回到db) 26 并发操作带来的问题2-读脏数据 时间更新事务t1数据库中a的值读事务t2 t0 100 t1find

15、a t2a:=a-30 t3upd a t4 70find a t5*rollback* t6 100 图7.11 事务t2在时间t4读了未提交的a值(70) 时间更新事务t1数据库中a的值更新事务t2 t0 100 t1find a t2a:=a-30 t3upd a t4 70find a t5 a:=a*2 t6 upd a t7 140 t8*rollback* t9 100 图7.12 事务t2在时间t4读了未提交的a值,并在时间t8丢失了自己的更新 27 并发操作带来的问题3-错误求和 时间读事务t1 数据库中a、b、c的 值 更新事务t2 t0 40,50,30 t1find a

16、 t2sum:=a t3find b t4 sum:=sum +b t5 find c t6 c:=c-10 t7 upd c t8 40,50,20find a t9 a:=a+10 t10 upd a t11 50,50,20commit t12find c t13 sum:=sum +c 事务t1进行了不一致的分析 28 并发操作带来的问题4-不可重复读问题 时间读事务t1数据库中a的值更新事务t2 t0100 t1find a t2find a t3a:=a*2 t4upd a t5200commit t6find a 29 解决方法 以上问题都需要并发控制子系统来解决。对于图7.10

17、的 丢失更新问题可以采取下列三种措施之一加以解决: 在时间t2应避免事务t2执行find操作。因为此时事务 t1已读了a值,将要进行更新。 在时间t5应避免事务t1执行upd操作。因为事务t2已 在使用a值。 在时间t6应避免事务t2执行upd操作。因为事务t1已 写了新的a值,事务t2的写操作将把t1的写操作冲掉 实现“避免”的方法有两种: n封锁技术( 或 )(较实用) n时标( 或 ) 30 x锁和s锁 nx锁定义 n操作 nxfind r nxrelease r npx协议: 任何企图更新记录r的事务必须先 执行“xfind r”操作,以获得 对r的x锁,才能读或写记录r; 如果未获准

18、x锁,那么这个事务 进入等待队列,一直到获准x锁, 事务才能继续做下去。 npxc协议 x锁的解除操作应该合并到事务的 结束(commit或rollback)操作 中 ns锁定义 n操作 nsfind r nupdx r nsrelease r nps协议 任何要读记录r的事务必须先执行 “sfind r”操作,以获得对r的s 锁。当事务获准对r的s锁后,若 要更新记录r必须用“updx r”操 作,这个操作首先把s锁升级为x 锁,若成功则更新记录,否则这 个事务进入等待队列 npsc协议 s锁的解除操作应该合并到事务的结 束 31 例:使用x锁封锁解决数据丢失 时间更新事务t1数据库中a的值

19、更新事务t2 t0 100 t1xfind a t2 xfind a(失败) wait(等待) t3a:=a-30 wait t4 wait t5upd a wait t6 70wait t7commit(包括解锁) wait t8 xfind a(重做) t9 a:=a*2 t10 upd a t11 140 commit(包括解锁) 32 例:使用s锁封锁解决数据丢失 时间更新事务t1数据库中a的值更新事务t2 t0 100 t1sfind a t2 sfind a t3a:=a-30 t4 a:=a*2 t5updx a(失败) t6wait updx a(失 败) t7wait wai

20、t t8wait wait 33 封锁的相容矩阵 注: n = n o , 不 相 容 的 请 求 y=yes,相容的请求 x、s、:分别表示x锁, s锁,无锁 如果两个封锁是不相容的, 则后提出封锁的事务要等待。 x s x s n n y n y y y y y t2 t1 34 封锁的粒度 n 封锁对象的大小称为封锁的粒度 (granularity) n封锁的对象 n逻辑单元:属性值、属性值集合、元组、关系、索 引项、整个索引、整个数据库 n物理单元 :页(数据页或索引页)、块 n封锁粒度与系统并发度和并发控制开销密切相 关。粒度越大,系统中能被封锁的对象就越少, 并发度就越小,但同时系

21、统的开销也就越小; 相反,粒度越小,并发度越高,系统开销越大 35 封锁带来的问题1-(活锁) t1 xfind a t2 xfind a t3 xfind a a a已被封锁, 不成功,等待 a刚被释 放,成功 时间点 a刚被t2释 放,成功 t1永远等待 活锁! 解决方法:先来先服务 36 封锁带来的问题2-饿死 事务序列 a1 a2 a3 a4 a5 资源a t2 t2永远不 能封锁 解决方法,改变授权方式: 当事务t2申请对数据项q加s锁时,授权加锁的条件是: 不存在在数据项q上持有x锁的其他事务; 不存在等待对数据项q加锁且先于t2申请加锁的事务 每一个事务均请求 a的s锁,成功后一

22、 段时间释放 请求a 的x锁 37 封锁带来的问题3-死锁 时间事务t1事务t2 t0xfind a t1 xfind b t2xfind b t3waitxfind a t4waitwait 死锁 若事务依赖图 有环则可能死 锁 t1 t2 t3 t4 图7.20 事务的无环 依赖图 t1 t2 t3 t4 图7.21 事务的有环 依赖图 38 并发操作的调度 n事务的调度 :事务的执行次序称为“调度” n串行调度:如果多个事务依次执行,则称为事务的 串行调度(serial schedule) n并发调度:如果利用分时的方法,同时处理多个事 务,则称为事务的并发调度(concurrent s

23、chedule) n可串行化 :如果一个并发调度的执行结果与某一串 行调度的执行结果等价,那么这个并发调度称为 “可串行化的调度”,否则是不可串行化的调度 39 两段封锁协议 n 在对任何一个数据进行读写操作之前,事务必 须获得对该数据的封锁; n在释放一个封锁之后,事务不再获得任何其他 封锁 n遵守该协议的事务分为两个阶段:获得封锁阶 段,也称为“扩展”阶段;释放封锁阶段,也 称为“收缩”阶段 n如果所有的事务都遵守“两段封锁协议”,则 所有可能的并发调度都是可串行化的 40 sql中事务的存取模式 n read only(只读型):事务对数据库的操作只 能是读操作。定义这个模式后,表示随后

24、的事务均是 只读型。 nread write(读写型):事务对数据库的操作 可以是读操作,也可以是写操作。定义这个模式后, 表示随后的事务均是读写型。在程序开始时默认这种 模式 n这两种模式可用下列sql语句定义: set transaction read only set transaction read write 41 sql中事务的隔离级别 nserializable(可串行化):允许事务并发执行,但须保证并 发调度可串行化,是默认级别。 nrepeatable read(可重复读):只许事务读已提交的数据, 且两次读之间不许其他事务修改此数据。事务可以不可串行化。 nread com

25、mitted(读提交数据):允许事务读已提交的数据, 但不要求“可重复读”。 nread uncommitted(可以读未提交数据):允许事务读已 提交或未提交的数据。 n上述四种级别可以用下列sql语句定义: set transaction isolation level serializable set transaction isolation level repeatable read set transaction isolation level read committed set transaction isolation level read uncommitted 高 低 4

26、2 主要内容 n7.1 系统目录 n7.2 事务 n7.3 数据库的恢复 n7.4 数据库的并发控制 n7.5 并发事务的可串行化和可恢复性 n7.6 7.6 数据库的完整性数据库的完整性 n7.7 数据库的安全性 n小结 43 完整性子系统和完整性规则 n数据库的完整性 n指数据的正确性、有效性和相容性,防止错误的数据进入数据库。 n完整性子系统的主要功能 n监督事务的执行,并测试是否违反完整性规则 n若有违反现象,则采取恰当的操作,譬如拒绝操作、报告违反情况、 改正错误等方法来处理 n完整性规则 n什么时候使用规则进行检查(称为规则的“触发条件”) n要检查什么样的错误(称为“约束条件”或

27、“谓词”) n如果查出错误,应该怎么办(称为“else子句”,即违反时要做的 动作) 44 sql中的完整性约束1-域约束 和断言 n域约束 用“create domain”语句定义新的 域,并且还可出现check子句 n断言 n如果完整性约束牵涉面较广,与 多个关系有关,或者与聚合操作 有关,那么sql2提供“断言” (assertions)机制让用户书写 完整性约束 ncreate assertion check() ndrop assertion n定义一个新的域color,可用 下列语句实现: create domain color charcreate domain color ch

28、ar(6 6) default default ? constraintconstraint v_colors v_colors checkcheck(value in value in (red,yellow,red,yellow, blueblue,greengreen,?);); n每位教师开设的课程不能超 过10门。 create assertioncreate assertion asse1 check asse1 check(10 = all10 = all (select countselect count(c#c#)from c from c group by group by

29、 tnametname);); 45 sql中的完整性约束2-基本表 的约束 n候选键的定义 primary key(列名序列) n外键的定义 foreign key(列名序列)references () on delete on update n“检查约束”的定义 check(条件表达式) 46 关于外键约束完整性的补充 n删除参照表中元组时的考虑 nno action ncascade方式 nrestrict方式 nset null方式 nset default方式 n修改参照表中主键值时的考虑、 nno action ncascade方式 nrestrict方式 nset null方式

30、nset default方式 47 关于数据库完整性的例子 学生关系s(s#,sname,age,sex,sdept) 选课关系sc(s#,c#,grade) 课程关系c(c#,cname,cdept,tname) 在教学数据库中,要求s中的元 组满足条件:男生年龄在1535 岁之间,女生年龄在1530岁之 间 。对应的语句为: check(age = 15 and ((sex =男 and age = 35) or (sex =女 and age newtuple.grade) update sc set grade = oldtuple.grade where c# = newtuple.

31、c# 50 主要内容 n7.1 系统目录 n7.2 事务 n7.3 数据库的恢复 n7.4 数据库的并发控制 n7.5 并发事务的可串行化和可恢复性 n7.6 数据库的完整性 n7.7 7.7 数据库的安全性数据库的安全性 n小结 51 数据库安全性级别 n什么是数据库的安全性:保护数据库,防止不合法的 使用,以免数据的泄密、更改或破坏。 n安全性级别 n环境级:计算机系统的机房和设备应加以保护,防止有人进 行物理破坏。 n职员级:工作人员应清正廉洁,正确授予用户访问数据库的 权限。 nos级:应防止未经授权的用户从os处着手访问数据库。 n网络级:由于大多数dbs都允许用户通过网络进行远程访

32、问, 因此网络软件内部的安全性是很重要的。 ndbs级:dbs的职责是检查用户的身份是否合法及使用数据库 的权限是否正确。 低 高 52 (1)读权限:允许用户读数据, 但不能改数据。 插入权限:允许用户插入 新数据,但不能改数据。 修改权限:允许用户改数 据,但不能删除数据。 删除权限 :允许用户删除 数据 权限 n访问数据的权限 n修改数据库模式的权限 n索引(index)权限:允 许用户创建和删除索引。 n资源(resourse)权限: 允许用户创建新的关系。 n修改(alteration)权限: 允许用户在关系结构中 加入或删除属性。 n撤消(drop)权限:允 许用户撤消关系。 53 dba u1 u2 u3 权限的授予和回收 dba u1u4 u2u5 u3 权限转授图 一个用户拥有权限 的充分必要条件是 在权限图中从根结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论