第四章数据库管理系统与数据库保护PPT课件_第1页
第四章数据库管理系统与数据库保护PPT课件_第2页
第四章数据库管理系统与数据库保护PPT课件_第3页
第四章数据库管理系统与数据库保护PPT课件_第4页
第四章数据库管理系统与数据库保护PPT课件_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

1 第4章数据库管理系统与数据库保护 2 主要内容 4 1事务处理4 2数据库的故障与恢复4 3并发控制4 4数据库的完整性4 5数据库的安全性 3 4 1事务处理 保持数据的一致性与稳定性是正确使用数据库的关键 4 1 1事务4 1 2事务的性质4 1 3事务的状态4 1 4更新事务的执行与恢复 4 4 1 1事务 事务 Transaction 是数据库环境中的一个逻辑工作单元 事务由一系列的操作序列构成的程序执行单元 这些操作要么全部成功完成 要么全部失败 即不对数据库留下任何影响 事务是数据库系统工作的基本单位 既是保持数据库完整性约束或逻辑一致性的单位 又是数据库恢复的单位 事务的概念相当于操作系统中的进程 事务可以是一个包含有对数据库进行各种操作的一个完整的用户程序 长事务 也可以是只包含一个更新操作 插入 修改 删除 的短事务 5 4 1 1事务 SQL中事务的定义事务以Begintransaction开始 以Commitwork或Rollbackwork结束 Commitwork表示提交 事务正常结束 Rollbackwork表示事务非正常开始时状态 6 4 1 2事务的性质 事务具有以下4个重要特性 通常称为ACID性质 1 原子性 Atomicity 从终端用户 End User 的角度看 事务是不可再分的原子工作 从系统的角度看 事务是完成某件原子工作的程序的一次执行 它要么全部成功地完成 要么全部不完成 对数据库毫无影响 nothingorall 原则 事务必须以Commit Rollback结束 由DBMS的事务管理子系统完成 7 4 1 2事务的性质 2 一致性 Consistency 独立运行的事务 必须保证数据库的一致状态 即数据不会因为事务的执行而遭到破坏 数据库的一致性状态有编写事务的程序员来负责 也可以有系统测试完整性约束来自动完成 由DBMS的完整性子系统完成 8 4 1 2事务的性质 3 隔离性 Isolation 系统必须保证事务不受其它并发执行事务的影响 多个并发事务之间不能相互干扰并发不影响事务的执行 隔离性通过DBMS并发控制子系统实现 9 4 1 2事务的性质 4 持久性 Durability 事务的持久性是指一个事务的成功完成之后 其工作的结果就会永远保存在数据库中 是永久有效的 即使随后系统发生故障 也能保持或恢复 一旦事务成功完成 Commit 它对数据库的更新应该是持久的即使在写入磁盘之前 系统发生故障在下次启动之后 也应该保障数据更新的有效持久性通过DBMS恢复管理子系统实现 10 4 1 2事务的性质 对数据库的访问是建立在读和写两个操作的基础上 read X 从数据库传送数据项X到事务的工作区 write X 从事务的工作区中将数据项X写回数据库 11 4 1 2事务的性质 举例 银行转帐 事务Ti从帐户A过户100 到帐户B T read A A A 100 write A read B B B 100 write B read X 从数据库传送数据项X到事务的工作区 write X 从事务的工作区中将数据项X写回数据库 12 练习 1 DBMS的并发控制子系统 保证了事务 的实现 2 事务的独立执行不会破坏DB的完整性 称为 3 DBMS中实现事务持久性的子系统是 1 隔离性2 事务的一致性3 DBMS恢复管理子系统 13 4 1 3事务的状态 一个事务从开始到成功地完成或者因故中止 中间可能经历不同的状态 事务状态图 14 4 1 3事务的状态 1 活动状态 Active 2 局部提交状态 PartiallyCommitted 3 失败状态 Failed 4 中止状态 Aborted 5 提交状态 Committed 15 4 1 4更新事务的执行与恢复 涉及插入 删除和修改等操作的事务统称更新事务 数据库管理系统必须确保其原子性和一致性 1 更新事务的执行为了确保事务的原子性和一致性 更新事务在活动状态下对数据库的任何修改都不能直接在磁盘中进行 而只能在内存缓冲区中进行 16 4 1 4更新事务的执行与恢复 完整性检查可以分为以下几种 1 在事务的每个维护操作 插入 删除 修改 执行后检查完整性 如果这时查出完整性受到破坏 则将该事务转为失败状态 这样的完整性约束称为立即约束 ImmediateConstraint 2 在整个事务完成之后检查完整性 这种完整性约束称为延迟约束 DeferredConstraint 3 在事务的某些特定点检查完整性 这样的点称为检查点 4 在一个维护操作请求之后且执行之前检查完整性 5 在数据库管理员或审计员发出检查请求时检查完整性 17 4 1 4更新事务的执行与恢复 2 更新事务的恢复 1 从活动状态转入失败状态的恢复 2 从局部提交状态转入失败状态的恢复 这种对事务操作的撤销也称为回滚 ROLLBACK 18 4 2数据库的故障与恢复 4 2 1故障类型4 2 2恢复的基本原则和实现方法4 2 3SQL中的恢复操作 19 4 2 1故障类型 在运行数据库系统时 可能回出现各种各样的故障 发生故障时 可能丢失数据库中的数据 DBMS的恢复管理子系统采取一系列措施 保证在任何情况下保持事务的原子性和持久性 确保数据不被破坏 1 数据库系统中可能发生的故障 1 事务故障非预期的事务故障事务由于某些内部条件无法继续正常执行如 非法输入 找不到数据 出错等可预期的事务故障应用程序可以发现的事务故障该事务可在以后的某个时间重新执行 此时数据库中的数据处于非一致状态 20 4 2 1故障类型 2 系统故障由于特殊的原因导致事务无法正常执行 而系统必须重新启动如停电 CPU故障等一般只影响正在执行的事务 而不会破坏数据库本身以及DBMS环境系统重新启动时 数据库处于一种非一致性状态 21 4 2 1故障类型 3 介质故障外存发生故障 导致存储其中的数据 或数据库本身 或DBMS软件处于不正常状态这类故障的破坏性较大计算机病毒破坏DBMS软件环境破坏OS环境导致数据库系统无法正常工作 22 4 2 2恢复的基本原则和实现方法 1 定期对整个数据库进行复制和转储冗余技术是数据库恢复的保障建立数据的冗余与数据库分别存储利用冗余数据 重建数据 使其达到一致的状态建立整个数据库的冗余将整个数据库进行备份 冗余的数据库 需要时将备份数据库恢复 重载 至系统中解决数据库本身被破坏的场合只能恢复到数据库备份时的状态 23 4 2 2恢复的基本原则和实现方法 转储可以分为 静态转储 在存储期间不允许对数据库进行存取 修改 动态转储 在存储期间允许对数据库进行存取 修改 转储还可以分为 海量存储 每次存储全部数据库增量存储 每次只存储上次转储后更新过的数据 24 4 2 2恢复的基本原则和实现方法 2 建立日志文件以日志文件的形式 记录事务对数据库的更新操作日志文件记录了数据库更新的所有日志记录的序列常见的是以记录为单位的日志文件利用日志记录 可对数据库做相应的恢复日志内容各个事务的开始标志各个事务的数据更新操作各个事务的结束 Commit Rollback 25 4 2 2恢复的基本原则和实现方法 3 恢复数据库本身 或DBMS 被破坏重新安装DBMSReload数据库副本 先前被转储的数据库 用日志文件执行REDO操作 不丢失对数据库的更新需要DBA人工处理 26 4 2 2恢复的基本原则和实现方法 4 具体恢复数据库本身未被破坏 但有些数据不可靠系统重启 扫描日志文件 耗时 根据日志 做Undo 对更新的操作执行反向操作系统自动完成根据运行记录优先原则1 至少要等到相应运行记录已经写入 日志 文件后 才能允许事务向数据库写入记录2 直至事务的所有运行记录都已写入运行 日志 文件后 才能允许事务完成 ENDTRANSACTION 处理 27 练习 1 为了能在出故障时做好恢复 应在平时做好两件事情 和 2 后备副本的主要作用是 3 日志文件用于保存 备份和日志 故障恢复 对数据库的更新操作 28 4 3并发控制 4 3 1并发控制的概念4 3 2可串行化的判断4 3 3封锁机制4 3 4活锁与死锁4 3 5共享型封锁 S封锁 4 3 6两段封锁协法 29 4 3 1并发控制的概念 数据库是一个共享资源 允许多个用户程序并行地存取数据库 若对这种并发操作不加以控制就会破坏数据的一致性 这些用户程序可以一个一个的串行执行 每一时刻只有一个用户程序运行 执行对数据库的存取 其它程序必须等到这个用户程序结束后才能对数据库存取 在多个用户共享系统中 如果多个用户同时对同一数据进行操作称为并发操作 可能会互相干扰 破坏了事务的隔离性 30 4 3 1并发控制的概念 1 丢失更新问题A值100 错误 第8步丢失了T1对数据库的更新操作 31 4 3 1并发控制的概念 2 不一致问题在第6步时 由于T1已更新了A的值 此时T3使用的A值仍为50 因此造成了不一致 即读了过时的数据 32 4 3 1并发控制的概念 3 脏数据 的读出数据库中A的值恢复为50 事务T4读出的A的值为40 提交随后又被撤消的数据称为 脏数据 33 4 3 1并发控制的概念 并发控制需要靠数据库的并发控制子系统来解决 如1 在第3步避免T2执行read 因为T1已经读了A的值 将要进行更新 2 应避免T1执行write 因为T2已经在使用A值 3 应避免T2执行write 因为T1已写了新的A值 事务T2的写操作将把T1的写操作冲掉 34 4 3 1并发的概念 为了防止数据库数据的不一致性 必须采取封锁策略 即在事务要对数据库进行操作之前 首先对其操作的数据设置封锁 禁止其他事务再对该数据进行操作 当它对该数据操作完毕并解除对数据的封锁后 才允许其他事务对该数据进行操作 串行操作 并行操作 并行操作与串行操作的结果不一定相同 当且仅当几个事务并行运行的结果和这些事务按某一次序串行运行的结果相同时 这种并行操作才是正确的 把并发操作的若干事务的全部事务步按某一顺序排定的运行次序叫做调度 一个事务的运行次序在并行调度执行的结果等价于某一串行调度执行的结果 则称这种调度是可串行化的调度 35 4 3 1并发控制的概念 36 4 3 1并发控制的概念 三种调度策略 37 4 3 2可串行化的判断 构造前趋图 G V E V是所有参与调度的事务 E是通过分析事务间的冲突 操作对 来决定 加边原则 Ti Tj1 Ri x 在Wj x 之前2 Wi x 在Rj x 之前3 Wi x 在Wj x 之前分别为读写 写读 写写冲突画出前趋图后 如果没有回路 则必有入度为零的点 依次去掉这些顶点 就可获得一个等价串行调度 38 4 3 2可串行化的判断 给定事务集 T1 T2 T3 T4 并发调度S W3 y R1 x R2 y W3 x W2 x W3 z R4 z W4 X 是否可进行串行化 如是 其等价串行调度是什么 S串 R1 x W3 y W3 x W3 z R2 y W2 x R4 z W4 x 1 Ri x 在Wj x 之前2 Wi x 在Rj x 之前3 Wi x 在Wj x 之前 39 4 3 3封锁机制 封锁就是一个事务对某个数据对象加锁 取得对它一定的控制 限制其它事务对该数据对象使用并发控制的基本方法就是封锁 数据的互斥访问当某事务访问某数据项时 其它任何事务均不得修改该数据项对访问的数据项加锁不同的加锁方式 产生不同的隔离层次 导致不同的一致性结果 获得不同的并发度 40 4 3 3封锁机制 封锁的类型 共享性封锁 S锁 Sharelock RLOCK 事务T对数据对象R加上S锁 则其它事务对R的X锁请求不能成功 而对R的S锁请求可以成功 排它性封锁 X锁 eXclusivelock 事务T对数据对象R加X锁 则其它事务对R的任何封锁请求都不成功 直至T释放R上的X封锁 共享性封锁和排它性封锁分别用RLOCK UNRLOCK和WLOCK UNWLOCK开锁 以释放被封锁的数据 41 4 3 3封锁机制 1 X封锁和PX协议X封锁 事务T对数据对象R加X锁 则其它事务对R的任何封锁请求都不成功 直至T释放R上的X封锁 PX协议 任何企图更新记录R的事务必须先执行LOCKX R 以获得对它的寻址能力 并对它取得X封锁 42 4 3 3封锁机制 举例 利用PX协议 执行T1和T2 事务T1先对A封锁 写回新的A值后 T1执行解除封锁操作 并对A进行修改 这个过程能得到正确结果 43 4 3 3封锁机制 对于删除操作 PX协议同样适用 要删除一个记录 首先也要执行LOCK X 操作和read操作后才能删除 对于插入操作 就不需要读记录 因此 可以假定 INSERTT 包含了对新插入记录R的X封锁 44 4 3 3封锁机制 2 有事务的ROLLBACK引起的丢失更新问题 45 4 3 3封锁机制 上图中的情况不可原谅 因为此时数据库中A的值是错的 为了避免数据库恢复时丢失更新 就不应该允许事务去使用一个未提交的修改 PXC协议由PX协议和下面一条规则组成 X封锁必须保留到事务终点 COMMIT或ROLLBACK 46 4 3 4活锁与死锁 47 4 3 4活锁与死锁 当多个事务请求封锁同一数据对象R时 有可能出现锁的异常 活锁多个事务申请对数据R加锁 而系统随机地加锁 导致某些事务长时间等待 活锁策略设定系统按事务申请锁的时间顺序进行排队 48 4 3 4活锁与死锁 死锁两个 或多个 事务互相申请对方加锁对象的排它锁 造成循环等待 T1 T2 R2 R1 49 4 3 4活锁与死锁 预防一次加锁法事务一次性对需要的数据进行加锁可以降低了系统的并发性 数据的不可预见性顺序加锁法估算需要的锁 对系统中的锁设定一个加锁顺序 所有事务均按照该顺序进行加锁但这很难估算死锁几乎无法避免 允许死锁的发生 对其进行诊断和解除 50 4 3 4活锁与死锁 诊断超时法 设定时限 超过即为死锁等待图形 回路即为死锁解除杀死时间戳代价最小 51 4 3 5共享型封锁 S封锁 共享锁 S锁 Sharelock 事务T对数据对象R加上S锁 则其它事务对R的X锁请求不能成功 而对R的S锁请求可以成功 相容矩阵 T1 T2 52 53 54 4 3 5共享型封锁 S封锁 PS协议的主要内容如下 任何要更新记录R的操作必须先执行LOCK R 操作 以获得对该记录寻址的能力并对它取得S封锁 如果未获准S封锁 那么这个事务进入等待状态 一直到获准S封锁 事务才继续做下去 当事务获准对记录R的S封锁后 在记录R的修改前必须把S的封锁升级为X封锁 像PXC协议一样 也有一个PSC协议 PSC协议是在PS协议基础上再增加一条规则 S封锁要保持到事务终点 55 举例 在第9步发生死锁 此时系统挑一个事务牺牲 撤消并恢复到初始状态 56 4 3 5共享型封锁 S封锁 57 4 4数据库的完整性 4 4 1主键约束4 4 2外键约束4 4 3属性值上的约束4 4 4全局约束数据库中的完整性是指数据的正确性和相容性完整性约束保证了授权用户对数据库的修改不会导致数据一致性的破坏一致性是指满足所有已知的完整性约束 在SQL中 表达完整性约束的规则有主键约束 外键约束 属性值约束和全局约束等 58 4 4 1主键约束 主键约束若属性A是基本关系R的主属性 则属性A不能取空值 主码不能为NULL 1 主键子句PrimaryKey A1 A2 Ai 2 主键短语S CHAR 6 PrimaryKey 59 4 4 2外键约束 外键约束外键 ForeignKey 及参照关系 设F是基本关系R的一个或一组属性 但不一定是R的键 如果F与基本关系S的主键Ks相对应 则称F是R的外键 并称R为参照关系 从表 S为被参照关系 主表 R和S不一定是不同的关系 60 4 4 2外键约束 若属性F是R的外键 它与S的主键Ks相对应 则R中每个元组在F上的值必须为 或者取空值 或者等于S中某个元组的主键值 不能含有无匹配的外键 ForeignKey F1 F2 Fi References表名 A1 A2 61 sno sno cno cno 62 4 4 2外键约束 主键与外键从表的外键与主表的主键相匹配必须具有相同的数据类型char n 与varchar n 是不同的类型可以不同名主键必须是notnull外键可以为null 视在表中的角色而定 63 4 4 2外键约束 数据更新 可能引起参照完整性的违约依赖关系在依赖关系中插入外键值在依赖关系中修改外键值基本关系在基本关系中修改主键 已被参照 在基本关系中删除元组 已被参照 64 4 4 2外键约束 1 删除基本关系元组时的考虑参数RESCTICT 只有当依赖关系中没有一个外键值与要删除的基本关系中的主键值相同时 系统才能执行删除 参数CASCADE 将依赖关系中所有外键值与基本关系中要删除的主键值相对应的原则上一起删除 SETNULL 删除基本元组时 将依赖关系中所有与基本关系中被删除主键值相对应的外键值置为空 65 4 4 2外键约束 2 修改基本关系元组时的考虑参数RESCTICT方式 只有当依赖关系中没有一个外键值与要修改的基本关系中的主键值相同时 系统才能执行修改 参数CASCADE 将依赖关系中所有外键值与基本关系中要修改的主键值相对应的原则上一起修改 SETNULL 修改基本关系的主键值时 将依赖关系中所有与基本关系中要修改的主键值相对应的外键值置为空 66 4 4 2外键约束 完整性约束 DDLCreateDomainstu nameCreateTableCourse varchar 20 cnochar 10 CreateTableStudent cnamechar 30 snochar 10 creaditsmallint snamestu name PrimaryKey cno sagesmallint ssexchar 1 sdeptchar 2 PrimaryKey sno 67 4 4 2外键约束 CreateTableSC snochar 10 cnochar 10 gradesmallint PrimaryKey sno cno ForeignKey sno ReferenceStudentondeletecascadeonupdatecascade ForeignKey cno ReferencesCourseondeletecascadeonupdatecascade 68 4 4 3属性值上的约束 1 非空值约束如果我们要求某个属性的值不允许为空值时 那么可在属性定义属性后加上关键字 NOTNULL 2 针对属性的检查子句 CHECK子句 3 针对域作约束必须使CHECK表达式为真CreateDomainstu ageintegerCheck col 15and col 40 CreateTablestudent snochar 10 PrimaryKey agestu age ssexchar 1 Check ssexin M F 69 4 4 4全局约束 全局约束在关系定义时 还可以说明一些比较复杂的完整性约束 这些属性涉及到多个属性间的联系或多个不同关系间的联系 称为全局约束 全局约束有两种基于元组的检查子句 70 4 4 4全局约束 基于元组的检查子句读单个关系的元组值加以约束 方法是在关系定义的任何地方加上关键字CHECK和约束条件 例如 CHECK AGE 15AND SEX M ANDAGE 25 OR SEX F ANDAGE 24 71 4 4 4全局约束 问题 createtablesc s char 4 c char 4 gradesmallint primarykey s c check s in selects froms check c in selectc fromc 在关系S中删除一个元组 这个操作将与关系SC中的检查子句无关 如果关系SC中存在被删除学生的成绩元组时 关系SC将违反检查子句中条件 72 练习 DEPT DNO DNAME MGE NO T TNO TNAME AGE SEX SALARY DNO TC TNO CNO TEXTBOOK C CNO CNAME DNO 完成下面完整性约束 编号小于D8的教师年龄在20 40岁间 其它系的教师年龄在20 60岁间 CHECK DNO D8 ANDAGEBETWEEN20AND60 73 4 5数据库的安全性 安全性 是指保护数据库 以防止不合法的使用所造成的数据泄露 更改或破坏 数据库系统中大量数据集中存放 许多用户直接共享 系统安全保护措施是否有效是数据库系统的主要性能指标之一 从数据库角度自然环境安全性 防止自然环境的破坏系统安全性 是指控制用户不得作任何未授权的事 74 4 5数据库的安全性 4 5 1数据库的安全性级别4 5 2数据库的权限4 5 3权限的转授和回收4 5 4SQL中的安全性控制4 5 5数据加密法4 5 6自然环境的安全性 75 4 5 1数据库的安全性级别 为保护数据库 防止恶意的滥用 可以从下面几个方面设置各种安全措施 环境级 计算机系统的机房和设备应加以保护 防止有人进行物理破坏 职员级 工作人员应清正廉洁 正确授予用户访问数据库的权限 OS级 应防止未经授权的用户从OS处着手访问数据库 网络级 由于大多数DBS都允许用户通过网络进行远程访问 因此网络软件内部的安全性是很重要的 DBS级 DBS的职责是检查用户的身份是否合法及使用数据库的权限是否正确 76 4 5 2数据库的权限 除了访问数据库的权限 系统还提供给用户修改数据库模式的权限 1 索引权限 允许用户创建和删除数据库模式的权限 2 资源权限 允许用户创建新的关系 3 修改权限 允许用户在关系结构中加入或删除属性 4 撤消权限 允许用户撤消关系 77 4 5 3权限的转授和回收 数据库系统允许用户把已获得的权限再转授给其它用户 也允许把已经授给其它用户的权限再回收上来 要能够保证转授出去的权限能收得回来 用权限图来表示权限转让关系 表示DBA把某权限转授给用户U1 U2 U3 U1又把权限转授给用户U4和U5 U2把权限转授给U5 78 4 5 3权限的转授和回收 用权限图来表示权限转让关系 如果DBA决定收回用户U1的权限 则U4的权限也被回收 由于U5的权限是U1和U2两处得到 因此回收U1的权限时 还不能回收U5的权限 只有同时也回收U2的权限时 U5的权限才回收 79 4 5 4SQL中的安全性控制 SQL中的两个功能提供了安全性 一是视图机制 它可以用来对无权用户屏蔽数据 二是授权子系统 它允许有特定存储权的用户有选择地和动态地把这些权限授予其它用户 1 视图视图是从一个或几个基本表导出的表 某个用户可以定义若干视图 它是虚表

温馨提示

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

评论

0/150

提交评论