第12-14讲分布式数据库.ppt_第1页
第12-14讲分布式数据库.ppt_第2页
第12-14讲分布式数据库.ppt_第3页
第12-14讲分布式数据库.ppt_第4页
第12-14讲分布式数据库.ppt_第5页
免费预览已结束,剩余103页可下载查看

下载本文档

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

文档简介

1 第七章分布式数据库 2 第七章分布式数据库 3 本章主要内容 7 1分布式数据库的特点7 2分布式数据库系统的体系结构7 3分布式数据库的查询优化7 4分布式数据库的事务管理7 5分布式目录7 6数据库的安全保护7 7数据库的完整性保护 4 7 1分布式数据库系统的特点 什么是分布式数据库系统 DDBMS 分布式数据库系统是地理上分布在网络的不同结点而逻辑上属于同一个系统的数据库系统 分布式数据库系统的特点1 数据是分布的2 数据是逻辑相关的3 结点自治性 5 同构 数据模型相同 系统 异构系统 分布式数据库管理系统的组成1 局部数据库管理系统 LDBMS 2 全局数据库管理系统 GDBMS 3 全局数据字典GDD4 网络通信管理CM 分布式数据库管理系统的组成 6 分布式数据库系统的优点 1 自治性好不同部门的数据可按需定制 局部控制 2 效率高 可用性好就近存放 多副本增加可用性 3 提高资源利用率可以将已有数据库联合成DDB 4 结构灵活 易于扩充新应用增加新结点 不用修改原数据库系统 7 分布式数据库的模式结构 8 全局外模式全局应用的用户视图全局概念模式全体数据的逻辑结构和特征的描述 分片模式描述每个片段及全局关系与片段间的映象 片段间不允许重复 分布模式描述片段到不同结点间的映象 片段的存放位置 如果规定一个片段仅能存放在一个结点 则是非冗余的 否则是冗余的 局部概念模式是对全局关系在这个结点上物理图象的逻辑结构及特征的描述 局部内模式描述局部概念模式涉及的数据在局部DBMS中的物理存储 9 7 2 2数据分片 分布式数据库中的所有数据时分布在不同节点上的 分片方式遵循规则 1 完整性 全局关系的所有数据都必须分配到各个片段 2 重构性 分裂后的各个片段可以重构原来的全局关系 3 不相交性 全局关系中的每个元组仅属于一个片段 分片方式 水平分片 按元组分垂直分片 按列分导出分片 由其它关系导出 10 例 商品供应数据库SUPPLIER SNO SNAME CITY SUPPLY SNO PNO QTY 将供应商按城市分片 水平分片 SUPPLIER1 CITY 北京 SUPPLIER SUPPLIER2 CITY 上海 SUPPLIER 11 7 2 3分布透明性分片透明性关系如何分片对用户是透明的 指用户不必关心数据是如何分片的 其应用程序的编写与集中式数据库相同 位置透明性 较常用 用户需知道数据在哪个片段 而不必知道所操作的数据放在哪个节点 数据在结点间的转移不会影响应用程序 局部映象透明性该透明性提供数据到局部数据库的映象 在编程时不但需要了解全局关系的分片模式 还需要了解各片段存放的站点 无透明性 12 例 在商品供应数据库中 供应上关系SUPPLIER SNO SNAME CITY 按城市分片 SUPPLIER1存放在节点1 site 1 和存放在节点2 site 2 SUPPLIER2存放在节点3 site 3 和存放在节点4 site 4 按照供应者号检索供应者的名字和所在城市 分片透明性scanf s sno EXECSQLSELECTSNAME CITYINTO sname cityFROMSUPPLIERWHERESNO sno printf s t s sname city 13 位置透明性scanf s sno EXECSQLSELECTSNAME CITYINTO sname cityFROMSUPPLIER1WHERESNO sno If found EXECSQLSELECTSNAME CITYINTO sname cityFROMSUPPLIER2WHERESNO sno printf s t s sname city 14 局部映象透明性scanf s sno EXECSQLSELECTSNAME CITYINTO sname cityFROMSUPPLIER1ATSITE 1WHERESNO sno If found EXECSQLSELECTSNAME CITYINTO sname cityFROMSUPPLIER2ATSITE 3WHERESNO sno printf s t s sname city 15 7 3分布式查询处理与优化 7 3 0预备知识 集中式数据库的查询和优化1 查询优化概述数据查询是关系数据库系统中最基本和最常用的操作 用户对关系数据库的查询一般都用SQL语言表达的 关系数据库的SQL语言是高度非过程化的语言 用户只要指出 做什么 至于 怎么做 则由RDBMS自动实现 这显然给用户带来了极大的方便 使对数据库的操作变得简便易行 但这却加重了系统的负担 系统需要自行选择存取路径 而存取路径选择的好坏是影响查询效率的关键所在 因此 关系查询优化是影响RDBMS性能的关键因素 关系系统的查询优化既是RDBMS实现的关键技术又是关系系统的优点所在 16 查询代价 在集中式数据库中 查询的执行代价为 总代价 I O代价 CPU代价在分布式环境下查询的执行代价为 查询代价 I O代价 CPU代价 通信代价2 查询优化器查询优化器是RDBMS服务器的一个组成部分 它的基本任务是 通过产生多个可供选择的执行计划 找到最低估算成本的执行计划来优化一条SQL语句 以提高RDBMS的查询效率 17 3 DBMS实现查询优化的一般步骤 将查询需求转换成某种内部表示 通常是语法树 根据一定的等价变换规则把语法树转换成标准 优化 形式 选择低层的操作算法 对于语法树中的每一个操作需要 根据存取路径 数据的存储分布 存储数据的聚簇等信息来选择具体的执行算法 生成查询计划 查询执行方案 查询计划由一系列有次序的内部操作构成的 DBMS生成多个执行方案 在计算每个执行方案的执行代价后 从中选择代价最小的一个执行 18 4 查询优化的一般策略 1 选择运算应尽早执行选择符合条件的元组可以使中间结果所含的元组数大大减少 从而减少运算量和输入输出次数 2 投影运算和选择运算同时进行如果投影运算和选择运算是对同一关系操作 则可以在对关系的一次扫描中同时完成 从而减少操作时间 3 把投影操作与它前面或后面的一个双目运算结合起来不必为投影 减少几个字段 而专门扫描一遍关系 4 在执行连接运算之前 可对需要连接的关系进行适当地预处理 如建索引或排序 当一个关系读入内存后 就可根据连接属性值在另一个关系中快速查找符合条件的元组 加速连接运算速度 19 5 把笛卡尔乘积和其后的选择运算合并成为连接运算 以避免扫描笛卡尔乘积的中间结果两个关系的连接运算 特别是等值连接运算比同样两个关系的笛卡尔乘积节约更多计算时间 6 存储公用子表达式对于重复出现的子表达式 简称公用子表达式 如果该表达式的结果不是很大的关系 则应将这个公用子表达式的结果关系存于外存 这样 从外存中读出这个关系比计算它的时间少得多 从而达到节省操作时间的目的 特别是当公用子表达式频繁出现时效果更加显著 20 例 查信息学院的学生选修了哪些课程 对如下查询进行优化 SELECTCnameFROMStudent Course SCWHEREStudent Sno SC snoANDSC Cno Course CnoANDStudent Sdept IS 21 Cname Sdept IS S sno SC sno SC Cno C Cno S SC C 22 Cname Sdept IS S sno SC sno SC Cno C Cno S SC C 23 2 连接运算的等价公式 24 3 投影运算串接的等价公式设E是一个关系代数表达式 B1 B2 Bm是E中的某些属性名 Ai B1 B2 Bm i 1 2 n 则以下等价公式成立 A1 A2 An B1 B2 Bn E A1 A2 An E 4 选择运算串接的等价公式设E是一个关系代数表达式 F1和F2是连接运算运算的条件 B1 B2 Bm是E中的某些属性名 Ai B1 B2 Bm i 1 2 n 则以下等价公式成立 25 5 选择运算与投影运算交换的等价公式设F是只涉及A1 A2 An属性 则以下等价公式成立 6 选择运算与笛卡尔积交换的接等价公式 设F中涉及的属性都是E1的属性 则有以下等价公式成立 如果F F1 F2 且F1只涉及E1的属性 F2只涉及E2的属性 则以下等价公式成立 如果F F1 F2 且F1只涉及E1的属性 F2涉及E1和E2两者的属性 则以下等价公式成立 尽早做选择运算的优化策略就是这3个等价公式的具体应用 26 7 3 1分布式查询处理全局查询处理步骤 将一个全局查询直接映射为对片段的查询 通过关系代数表达式的等价变换 2 将片段的查询映射为对相应结点的查询 选择查询结点 物理副本 通信代价 T C0 X C1C0 传输延迟 X 传输数据量 C1 单位数据的传送代价 3 由结点上的局部DBMS执行子查询 主要解决 减少查询代价 提高查询效率 7 3分布式查询处理与优化 27 28 SNO SNAMESP SNO SY SNO CITY 北京 P PNO SY PNOSR supplier DEP 科工委 SY supply P project 29 全局查询到片段查询的映射 30 7 3 2查询优化7 3 2 1查询优化全局优化 局部优化查询代价 CPU代价 I O代价 通信代价 嵌套循环法1 首先在表1中找到第一个元组 然后从头开始扫描表2 逐一查找满足连接件的元组 找到后就将表1中的第一个元组与该元组拼接起来 形成结果表中一个元组 2 表2全部查找完后 再找表1中第二个元组 然后再从头开始扫描表2 逐一查找满足连接条件的元组 找到后就将表1中的第二个元组与该元组拼接起来 形成结果表中一个元组 3 重复上述操作 直到表1中的全部元组都处理完毕 合并扫描法1 首先按连接属性对表1和表2排序2 对表1的第一个元组 从头开始扫描表2 顺序查找满足连接条件的元组 找到后就将表1中的第一个元组与该元组拼接起来 形成结果表中一个元组 当遇到表2中第一条大于表1连接字段值的元组时 对表2的查询不再继续 合并扫描法 续 3 找到表1的第二条元组 然后从刚才的中断点处继续顺序扫描表2 查找满足连接条件的元组 找到后就将表1中的第一个元组与该元组拼接起来 形成结果表中一个元组 直接遇到表2中大于表1连接字段值的元组时 对表2的查询不再继续4 重复上述操作 直到表1或表2中的全部元组都处理完为止 34 设R和S分属不同的结点 连接运算在S结点进行 连接 T1 C0 size R card R C1半连接 T2 2C0 size B card S C1 size R card R C1size 元组长度 card 元组数量 C1 单位数据传输时间S 属性投影的结果关系 R 执行半连接后的结果关系 35 求半连接练习 R ABC S BCD T DEI 235356669536359878168683856346596389535416268584求所有可执行的半连接 提示有公共属性才能做半连接 36 7 4分布式事务管理事务 Transaction 是用户定义的一个数据库操作序列 是数据恢复和并发控制的基本单位 数据库系统在执行事务时 要么执行事务中全部操作 要么一个操作都不执行 一般用Ti表示第i个事务 例如 在关系数据库中 一个事务可以是一条SQL语句 一组SQL语句或整个程序 分布式事务管理主要研究两方面的内容 并发控制和故障恢复 37 事务的性质或称ACID准则 原子性 Atomic 一个事务要么全执行 要么全不执行 一致性 Consistency 事务执行的结果必须是使数据库从一个一致状态变到另一个一致性状态 隔离性 Isolation 事务更新过的数据在事务结束前对其他事务不可见 持久性 Durability 已完成事务对数据的更新应持久 发生故障应恢复 38 分布式事务管理 分布事务管理和局部事务管理一个分布式事务由主事务 负责事务的开始 提交或异常中终止 和多个子事务 完成对数据的操作 组成 分布式事务管理程序 事务处理和协调程序二部分组成 分布式事务处理 分布式并发控制和事务恢复 39 在应用程序中定义事务方法 1 用户定义方法 在应用程序中 用户使用定义事务的语句显式地定义事务的开始与结束 在SQL中 有以下3条语句 BEGINTRANSACTION 该语句显示地定义一个事务的开始 COMMIT 该语句显示地提交一个事务 并表示该事务已正确执行并结束 ROLLBACK 该语句显示地回滚一个事务 且表示事务因执行失败而结束 2 系统缺省方法 如果用户在应用程序中没有用定义事务的语句显式地定义事务 则DBMS自动地按照缺省方式划分事务 40 7 4 1分布式事务的并发控制 7 4 1 0 补充 集中式数据库的并发控制1 串行访问 当多个事务对数据库进行操作时 各个事务按顺序执行 即一个事务执行完全结束后 另一个事务才开始 2 并发访问 当多个事务对数据库进行操作时 各事务的执行在时间上有重叠 3 交叉并发 在单CPU系统中 多个事务交叉使用CPU 4 同时并发 在多CPU系统中 多个事务同时占用CPU 41 5 DBMS对事务采用并发机制的主要目的 1 改善系统的资源利用率 对于一个事务来说 在不同阶段使用不同的资源 若并发执行可以交叉使用这些资源 有利于提高系统资源的利用率 2 改善短事务的响应时间 若长事务T1和短事务T2并发执行 则T1和T2可以重叠执行们可以较快地结束 明显地改善其相应时间 6 DBMS对事务采用并发机制的方法 基于封锁的方法 基于时戳的方法 版本更新方法 其中封锁方法在商业化数据库管理技术中使用最为普遍 42 7 死锁 如果事务T1封锁了数据对象A T2封锁了数据对象B之后 T1又申请封锁数据对象B 且T2又申请封锁数据对象A 因T2已封锁了B 于是T1等待T2释放加在B上的锁 因T1已封锁了A T2也只能等待T1释放加在A上的锁 这样就形成了T1在等待T2结束 而T2又在等待T1结束的局面 T1和T2这两个事务永远不能结束 从而形成死锁 死锁的另一情况是数据库系统有若干个长时间运行的事务在执行并行的操作 当查询分析器处理一种非常复杂的连接查询时 由于不能控制处理的顺序 有可能发生死锁现象 43 8 解决死锁问题的方法 预防法 常用的有一次封锁法和顺序封锁法两种 一次封锁法 规定每个事务必须一次性地将所要访问的数据对象全部加锁 并在操作结束后一次性释放加在所有对象上的锁 这样就能预防死锁的发生 顺序封锁法 预先对数据对象规定一个封锁顺序号 所有事务都按照这个顺序对数据对象实施封锁 这样也能预防死锁的发生 诊断解除法 应用诊断程序发现死锁产生后 通过解锁程序排除死锁 44 7 4 1 1分布式事务可串行化如果多个事务并行调度执行结果与他们按某一串行执行的结果相同 称这些事务的调度执行是可串行化的 例 事务T1 T2分别对数据A和B执行更新 T1 READAT2 READBA A 10B B 20WRITEAY BREADBWRITEBB B 50READAWRITEBC Y AWRITEC 初始值为A 50 B l00 T1先执行T2后执行结果为 A 40 B 130 C 170 T2先执行T1后执行结果为 A 40 B 130 C 130 执行结果为 执行结果为 A 40 B 150 C 120 A 40 B 130 C 170 46 调度 指事务处理执行操作的一个序列 事务的操作分为两类 Ri x Wi x 串行调度序列S1 Rj x Wj y Ri x Wi x Rk y 并行调度序列S2 Ri x Rj x Wi x Wj y Rk y 冲突操作 若二个事务同时对数据目标X操作 其中之一是写操作 则这二个操作是冲突的 冲突等价 同一个事务集的不同调度序列中 任一对冲突操作在调度S1中Oi优先Oj而在调度S2中也Oi优先Oj 则这两个调度冲突等价 S1和S2是冲突等价的 冲突操作和在S1和S2中的顺序一致 47 分布式事务 由一个主事务和多个子事务组成 分布式事务的可串行化 设分布事务集T1 T2 Tk 如果满足以下条件 则T1 T2 Tk的调度执行是可串行化的 1 对分布事务T1 T2 Tk的每个局部结点上的调度Sp都是可串行化的 2 存在一个对T1 T2 Tk的综合顺序使得在该顺序中事务Ti Tj 则对T1 T2 Tk每个局部结点上的可串行化调度Sp在等价的串行调度Sp 中有事务Ti Tj 48 例 设数据X在结点1 Y在结点2事务T1 R1 x W1 x R1 y W1 y T2 R2 x W2 x R2 y W2 y 存在综合调度 T1 T2或T2 T1在结点 的调度 R1 x W1 x R2 x W2 x 在结点 的调度 R y W1 y R2 y W2 y 在结点 的调度 R2 y W2 y R y W1 y 49 7 4 1 2基于封锁的并发控制并发操作不当带来的数据不一致性的表现丢失修改不可重复读读 脏 数据 T1T2 A 16A A 1A 16A A 1 T1T2 A 6B 5A B 11A 6B 10A B 16B B 5 T1T2 B 5B B 6ROLLBACKB 30 50 为了保证数据库的一致性 DBMS需要提供并发控制机制 以保证并发操作的正确性 封锁协议 LockingProtocol 封锁的类型 共享锁S 排它锁X 封锁的时间 封锁协议 使用锁的规则封锁协议的内容包括有 何时申请锁 锁的类型 持锁时间 何时释放锁 一种简单的封锁协议事务T在修改数据R之前必须先对R加X锁 在读取数据R之前必须先对其加S锁 直到事务结束才释放锁 51 第一阶段是获得封锁 也称为扩展阶段 在这阶段 事务可以申请获得任何数据项上的任何类型的锁 但是不能释放任何锁 第二阶段是释放封锁 也称为收缩阶段 在这阶段 事务可以释放任何数据项上的任何类型的锁 但是不能再申请任何锁 开始上锁释放锁结束 二段锁协议 Two PuaseLooking2PL协议 1 任何事务在对数据操作前必须先获得锁 2 事务在释放一个锁后不再获得任何锁 52 在集中式数据库中若所有事务都遵循2PL协议 则多个事务的交叉执行是可串行化的 在分布式数据库中 若所有事务都遵循2PL 则分布事务的调度执行是可串行化的 假定不存在可串行化的调度 即对T1 T2 Tk事务不存在分布式事务的综合顺序 则一定存在一个冲突回路 O1 x O2 x O2 y O3 y Ok z O1 z 但每个事务若遵循二段锁协议 以上调度序列是不会产生的 因为在冲突回路中事务T1已封锁x T2已封锁y Tk已封锁z 所有事务都遵循二段锁协议 则事务由于得不到其他锁而处于等待状态 系统发生了死锁 死锁的解除将会使一些事务回退二消除回路 因此 不会出现调度序列的冲突回路 53 例 结点A 数据X 结点B 数据y 并行调度的综合顺序 T1 T2结点A R1 x W1 x R2 x W2 x 结点B R1 y W1 y R2 y W2 y 54 死锁检测和消除 并行调度的顺序 T1 T2T1 R1 y W1 y R1 x W1 x T2 R2 x W2 x R2 y W2 y 执行2PL 55 分布式数据库中死锁的检测集中式死锁检测 分层控制 与层次选择有关 应反映网络拓扑结构和对结点的访问模式 INGRES中是集中死锁检测 56 分布式死锁检测需要每个结点都负起检测全局死锁的责任 1 局部死锁检测器需要确定把潜在的死循环发送到哪个结点 等待它的结点或它等待的结点 2 哪些结点发送 哪些结点不发送 如规定EX等待的事务标识大于等待EX的事务标识时发送 57 预防死锁给事务赋予全局唯一标识符 若TiTj 事务重新启动时保持事务标识不变 使分布事务是按照事务的全局顺序执行的 设置超时机构 58 多副本的封锁 1 写全锁写操作申请全部副本的排它锁 读操作仅申请一个副本的共享锁 2 封锁多数不管是读还是写操作都需要获得对一半以上数据副本的锁 3 封锁主副本活动主副本 4 集中封锁指定一个结点负责锁管理 获得锁后才能对数据副本进行操作 59 7 4 1 3基于时戳 TimeStamp 的并发控制以时戳的顺序处理冲突 基本时戳法遵循准则 1 每个事务T开始时 在发生结点赋予时戳TS 2 事务的读 写操作都带有该事务的时戳 3 每个数据X分别有最大时戳RTM X 和WTM X 4 若事务T读X TS WTM X 则拒绝并用新的时戳重新启动 否则执行读操作 RTM X 置为max RTM X TS 5 事务写X TS RTM X 或TS WTM X 拒绝写并用新的时戳重新启动 否则执行写并置WTM X 为TS 60 例 事务T1 T2结点A R1 x W1 x R2 x W2 x 结点B R y W1 y R2 y W2 y 执行2PL T1 T2 R1 x TS1000W1 x R y TS1TS1TS10R2 x W y TS2TS1TS1TS1W2 x R2 y TS2TS2TS2TS1W2 y TS2TS2TS2TS2 按照时戳法 设事务T1时戳为TS1 事务T2时戳为TS2 TS1 TS2结点A结点BRTM X WTM X RTM Y WTM Y 61 时戳和封锁技术之间的基本区别 封锁技术使一组事务的并发执行 即交叉执行 同步 使它等价于这些事务的某一种串行操作 时戳技术也使一组事务的交叉执行同步 但它等价于这些事务的一个特定的串行操作 即由时戳的时序所确定的一个串行操作执行 基于时戳的并发控制技术解决冲突的方法 当发现事务操作违反时戳协议规则时 就撤消并重新启动冲突事务 7 4 2分布式事务的恢复7 4 2 1集中式数据库系统中的恢复事务恢复的目的是当数据库出现故障时能恢复到一个正确一致的状态 集中式数据库系统中恢复的手段主要是利用转储和日志 转储 数据库管理员定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程 日志 保存每一次对数据库进行更新操作的有关信息的文件 由DBMS自动建立和记录 日志文件的主要内容 1 事务处理的标识符 开始 结束 2 操作的类型 插入 删除 修改 3 更新前的值 4 更新后的值 63 检查点机制 为了便于恢复 在日志中每隔一定时间 如10分钟 写一个检查点 以标识检查点前已经执行完的事务是正确的 检查点记录包括检查点时刻执行的所有事务的标识以及这些事务最近一个运行记录在日志中的地址 此外 写检查点所做的操作还有 1 将日志缓冲区中的内容强行写入日志文件 2 将数据库缓冲区中的内容强行写入外存储器 3 将检查点记录的地址写入重启动文件中 64 故障种类 事务故障 系统故障 介质故障 事务故障 由于某种原因导致事务尚未运行完成并提交就被中断所产生的故障 比如 算术运算的溢出 零作除法 违反完整性等 系统故障 系统在运行过程中 由于某种原因致使所有正在运行的事务都以非正常的方式终止而引起的故障 比如 硬件和软件故障 突然停电等 介质故障 系统在运行过程中 由于某种原因致使存储在外存储器中的数据部分丢失或全部丢失的故障 65 事务故障的恢复事务恢复的原则对事务内部的故障 不影响其它事务 将事务回退 UNDO 已提交的事务应该满足事务的持久性 发生故障后应该重做 REDO 它所做过的所有修改数据库的操作 对非事务内部的故障 如系统崩溃等引起事务夭折 所有正在执行的事务都需要撤消 UNDO 66 事务故障的恢复步骤 1 反向扫描文件日志 即从最后向前扫描日志文件 查找该事务的更新操作 2 对该事务的更新操作执行逆操作 3 反向扫描 直至读到此事务的开始标志 事务故障恢复就完成了 事务开始故障点事务故障的恢复是系统重启后由系统自动完成的 恢复 67 系统故障的恢复步骤 1 正向扫描日志文件 从头扫描日志文件 找出在故障发生前已经提交的事务 将其事务标识记入重做 REDO 队列 找出故障发生时尚未完成的事务 将其事务标识记入撤销 UNDO 队列 2 对撤销队列中的各个事务进行撤消处理 UNDO 3 对重做队列中的各个事务进行重做处理 REDO 68 介质故障的恢复 装入后备副本 重做已完成的事务 装入有关日志文件的副本 首先扫描日志文件 找出故障发生时已提交的事务的标识 将其记入重做队列 然后正向扫描日志文件 对重做队列中的所有事务进行重做处理 即将日志记录中 更新后的值 写入数据库 69 具有检查点记录的恢复步骤 1 从重启动文件中找出最近一个检查点记录地址 2 得到检查点时刻事务清单 3 从检查点以后 正向扫描日志文件 将已经完成的事务放入重做队列 对未完成的事务放入撤消队列 4 对重做队列中的事务执行REDO操作 5 对撤消队列中的事务执行UNDO操作 日志开始检查点 检查点故障点 70 7 4 2 2分布式数据库系统中的恢复分布式数据库中的故障 结点故障 通信故障 信息丢失和网络分割 恢复的单位是事务 故障发生前已完成的事务都在恢复之列 分布式事务的恢复分为三个层次 1 仅处理结点故障 2 仅处理结点和信息丢失二种故障 3 同时能够处理结点故障 信息丢失和网络分割三种故障 71 7 4 2 2分布式数据库系统中的恢复分布式事务的提交通过协调程序完成 子事务站点为参与者 执行协调程序的站点为协调者 二阶段提交协议 2PC 事务的提交分二个阶段 准备提交阶段 提交阶段所有子事务提交 全局事务才能提交 子事务的执行如果出了故障 局部事务管理器可以决定中止子事务的执行 72 二阶段提交协议 2PC 第一阶段为Prepare阶段 第二阶段为Commit或Abort阶段 73 站点故障参与者与协调者不同处理 参与者的处理 参与者将 Ready 信息写入日志前故障 协调者等待超时 其他子事务异常中止 该子事务重启后异常中止 参与者将 Ready 信息写入日志后故障 其他子事正确结束 Commit或Abort 该子事务重启后由协调者提供信息正确结束 74 站点故障协调者的处理 协调者将 Prepare 信息写入日志后故障 所有工作正常的参与者挂起 协调者恢复后重新发 Prepare 信息 参与者应能识别是否是协调者重新发来的信息 再次发 Ready 信息 协调者将决定信息写入日志后故障 Complete 信息写入日志前的故障 需协调者恢复后重新发决定信息 挂起的子事务继续提交 已提交子事务只发 ACK 信息 协调者将Complete信息写入日志前故障 这时事务已经正常结束 协调者恢复后部需要做任何操作 75 信息丢失第一阶段 协调者的 Prepare 信息丢失 没有收到 Prepare 信息的参与者等待 协调者等待超时 子事务异常中止 参与者的 Ready Abort 信息丢失 协调者等待超时 子事务异常中止 第二阶段 协调者的 Commit Abort 信息丢失 参与者处于等待状态 参与者的 ACK 信息丢失 协调者等待 76 网络分割协调者子网 协调者收不到其它参与者的信息 按参与者发生故障处理 在同一子网的参与者子事务可以正常结束 中止 参与者子网 参与者收不到协调者的信息 按协调者故障处理 2PC协议存在的问题 阻塞在参与者发出准备好信息后协调者发生故障或通信故障 子事务将挂起 它所占有的资源不能释放 降低了系统效率 77 三阶段提交协议 3PC 第一阶段 同2PC协议 第二阶段 协调者若收到一个 Abort 或在规定时间内没有收到 Ready 通知所有参与者 Abort 事务 否则向参与者发 Enter Prepare State 信息使其进入新的准备好提交状态 参与者收到该信息后将 Enter Prepare State 信息写入日志并给协调者发回一个 OK 信息 第三阶段 第二阶段协调者发出的不是 Abort 信息进入这一阶段 接收到参与者的 OK 信息后发 Commit 给参与者正式提交事务 78 协调者 事务撤消 79 协调者 参与者 PREPARE READY COMMIT ACK Enter Prepare State OK 事务正常提交 80 3PC协议对故障处理 参与者结点的故障处理与2PC协议相同 协调者故障参与者中选一个新的协调者 若新的协调者 1 处在 Abort 状态 所有接点异常中止事务 2 处于 Enter Prepare State 状态 向所有正常工作的参与者发 Enter Prepare State 信息提交事务 3 处于 Commit 状态 给参与者发 Commit 信息 81 7 4 2 3多副本的更新 1 更新主副本仅更新主副本 其它副本的更新在事务结束后由主副本负责更新 对非主副本的操作要等到更新结束后才能进行 活动主副本 2 结点保留一张表 记录每个不可更新的结点 3 快照数据在某一时刻的状态 存储在外存上 定期刷新 快照仅提供读操作 82 3 快照方法 快照 数据在某一时刻的状态 存储在外存上 定期刷新 快照仅提供读操作 DEFINESNAPSHOTHP BOOKASSELECT FROMBOOKWHEREPRICE 100REFRESHEVERYDAY REFRESHSNAPSHOTHP BOOK 83 7 5分布式目录 目录 Catalog 一个 微小DB 描述DB的元数据 metadata 分布式目录需要实现 目录的存储 存取 并发控制和恢复目录管理策略对提高数据库系统性能至关重要 84 目录的内容全局模式描述分片模式描述分布模式描述局部名映射建立物理映象与站点数据名的对应关系存取方式描述索引数据库统计信息关系的元组数 元组长度 存放空间一致性约束完整性约束和存取权限状态信息记录站点及事务的运行状态数据表示提供对异构数据库的支持系统描述站点软硬件配置和处理能力的信息 85 7 5 1目录的分布和管理 目录分布策略 集中式 系统目录集中存放在一个节点 其它节点都需要访问该节点上的目录数据 全复制式目录 每个节点都有一个目录的副本 部分复制式 部分站点 部分目录 86 SDD 1目录特点SDD 1的目录采用全局和局部混合的方式 其中 全局模式描述 分片和分布信息是全复制的 其余目录信息局部存储 SDD 1支持目录缓冲 允许局部结点缓冲远程目录信息但要求与最新版本一致 7 5 2不同分布式数据库系统中的目录分布和管理 87 SystemR 的目录特点 R 的目录具有局部自治性每个站点存放本站点上生成和在本站点上存储数据的目录如果在本结点生成的数据项没有存放在这个结点 则在相应目录项中需指出该数据存放在哪些结点上R 支持带有版本号的目录缓冲以验证数据的有效性 88 SystemR 的命名机制系统范围名 打印名系统范围名由4部分组成 创建对象的用户标识符 用户所在站点名 对象名 对象的源站点名User 1 shanghai EMP beijing打印名系统范围名的速记名 如EMP省略部分表示当前用户和当前站点 89 ORACLE的目录结构Oracle数据库中的目录包含用户目录和系统目录基础表目录中的信息保存在基础表中 只有DBMS能够读写基础表 基础表是加密的 用户视图有三类视图 前缀为USER的视图 给定用户拥有对象的视图前缀为ALL的视图 用户可存取的视图前缀为DBA的视图 DBA视图 90 ORACLE的目录特点具有站点自治性 数据目录是局部的命名机制对象的全局名 对象的模式名 对象名 数据库名数据库全局名 SCOTT EMP MYOracle CITYHUNTER COM 91 例 站点A上的用户要对站点B EMP 和C DEPT 上的数据进行访问SELECTENAME JOB DNAMEFROMEMP B DEPT CWHEREEMP DEPTNO DEPT DEPTNOANDLOC DALLAS ANDJOBIN CLERK ANALYST 结束 92 7 6数据库的安全保护 DBMS层所提供的数据库安全和保护功能 安全性 security 保护 即防止非法用户对数据库的非法使用 以避免数据的泄露 篡改或破坏 完整性 integrity 保护 即保证数据的正确性和一致性 并发控制 concurrentcontrol 即保证多用户能共享数据库 并维护数据的一致性 数据库恢复 databaserecovery 即在系统失效后的数据库恢复 配合定时备份数据库 使数据库不丢失数据 93 7 6数据库的安全性保护 7 6 1用户鉴别7 6 2存取权限控制7 6 3视图机制7 6 4跟踪审查7 6 5数据加密存储 94 DBMS鉴别一个用户是否为合法用户是DBMS提供的最外层安全性保护措施 DBMS提供了一定的工具和命令 让DBA创建和定义合法用户 并对每个合法用户赋予一定的角色 7 6 1用户鉴别 95 7 6 2存取权限控制 1 1 对每个用户 可以定义以下两种存取控制权限 数据对象权限 规定了用户使用数据库中数据对象的范围 操作类型权限 规定了用户在可使用数据对象上能执行的操作 2 授权 DBA定义一个用户存取权限的过程 即DBA通过DBMS提供的命令或工具规定一个用户可以使用哪些数据对象并可对其执行什么类型的操作 96 存取权限控制 2 3 存取控制权的管理方式 集中方式 由DBA定义每个用户的权限 分散方式 由用户将自己拥有的全部或部分权限授予其他用户 97 存取权限控制 3 4 关系系统中的存取权限 5 授权机制灵活性的一个指标 授权粒度 即存取权限可以定义的数据对象的范围 返回 98 7 6 3视图机制 通过视图 外模式 机制可限制用户使用数据的范围 从而自动地对数据提供一定程度的安全保护 99 7 6 4跟踪审查 1 跟踪审查 一种事后监视的安全性保护措施 它跟踪数据库的访问活动 以发现数据库的非法访问 达到安全防范的目的 2 跟踪审查记录 记录跟踪审查结果是一个特殊文件 一般包括下列内容 操作类型 例如修改 查询等 操作终端标识与操作者标识 操作日期和时间 所涉及的数据 数据的前像和后像 100 7 6 5数据加密存储 1 对数据进行加密存储和传输是DBMS提供的另一种数据安全性

温馨提示

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

评论

0/150

提交评论