文章目录一、前言信息孤岛分布式数据库系统特点二、分布式数据库分类按本地数据模型分类全局控制类型分类三、数据片数据片基本原则片时遵循的两个原则片分布式数据库模式结构四、 分布式查询处理及优化水平切片优化基于垂直切片半连接算法的查询优化五、设计原则设计所需的信息演练问题模式综合6、分布式并发控制1、分布式数据库基本块算法简单分布式块法主控站点块法(集中块法两阶段块协议) 2PL ) 2PL分类实现方法3、多粒度块4、意向锁定意向锁定的类型锁定的互换矩阵5、可序列化调度判断可序列化调度同时控制的技术有:时间戳同时控制方法7、分布式事务控制
一.前言
分布式数据库(Distributed Database )简称DDB,是物理上分布且逻辑集中的数据库系统。
它是数据库技术和计算机网络的结合,高度依赖于高速网络。
分布式数据库系统(Distributed Database System ),简称DDBS。 分布式数据库管理系统简称DDBMS。分布式数据库系统DDBS = DDB + DDBMS
用典型的话来说,分布式数据库应该看起来完全像非分布式数据库。
孤岛信息孤岛是指相互之间功能不协调、信息不共享交换、信息与业务流程和APP应用脱节的计算机APP系统。
如果这些独立的系统以前相互作用,就会产生复杂的相互作用网络。
分布式数据库系统的特点物理分布性:数据不是存放在一个站点的逻辑整体性,而是与分布式数据库系统相区别的站点的自律性。 是与多处理器系统的区别数据分布的透明度。 用户不需要知道操作的数据集中在哪里与自律结合。 各数据库相互独立自主,且整体集中存在适当的数据冗余。 在适当的数据冗余分布式情况下,往往是方便的事务管理的分布式。 分布式事务管理是一个挑战。 2、分布式数据库分类按本地数据模型分类同一配置DDBS同一配置同一异构异构。 (同一数据模型,不同的DBMS )异构DDBS按全局控制类型分类的全局控制集中式DDBS
分布式控制和数据字典集中在一个站点上全局控制分布式DDBS
分散控制和数据字典分散在各站点的全局控制可变型DDBS (主从型、主站从站)三、数据片在数据量过大、单机难以支持的情况下,会遇到扩展瓶颈,导致数据片数据丢失
数据切片是指将数据分割为全局相关的逻辑碎片,分为水平分割、垂直分割和混合分割三种。
水平切分:可简单理解为按照数据行。 这意味着一些行位于一个数据库中,另一些位于另一个数据库实例中。 例如,可以按照时间、地域划分,或者按照混列划分。垂直切分:垂直分割可简单理解为按照表,其基本目标是将表分布在不同的节点上,总结频繁使用的属性
混合切分水平分割和垂直拟合的组合。
数据片的基本原则完备性条件可重构性条件对于非交叉性条件片,所遵循的两个原则是完全的。 同一片的任意两个元组都可以以相同的概率访问最小的。 在分配与实际使用密切相关的片后,合并数据需要连接运算,比水平片后的数据合并要困难一些。
分布式数据库的模式结构全局外模式全局概念模式片模式分配模式本地概念模式本地内模式4、分布式查询处理以及分布式数据库的优化必须考虑查询问题,需要http://www .
在分布式数据库中,对于集中式数据库,还需要考虑以下附加问题:
选择最佳站点查询数据传输方法对于在站点之间交换数据的问题集中查询目标,分布式为一个分布式数据库上的高层次查询映射为本地数据库上的操作,最后通过网络通信,将操作结果汇聚起来。
尽量在“通信开销代价”处进行水平切片优化,比较切片的限定关系和选择条件,消除存在矛盾的片段。 如果最后还有水平切片,则在重建全局关系的操作中,把选择条件下移到分片的限定关系垂直切片优化将用于垂直切片的属性集与查询条件下的投影操作所涉及的属性进行比较最后,如果只剩下一个与查询相关的垂直片段,则基于就可去掉“并”操作.重建全局关系的**“连接”**操作(至少可以减少“连接”操作的次数)半连接算法在这个过程中,传输整个关系会导致网络传输过程中的数据量变大,网络本身会变得复杂多变,一次传输大数据量会带来很多问题,但在实际的连接操作中,并不是所有的数据都参与其中
与连接操作。因此为减少传输数据量,可以禁止那些不参与或者无用的数据在网络中传输,而半连接操作就是针对这一问题提出来的,它要实现的目标是减少进行连接操作关系的数据量,从而减少在网络上的传输的数据量,但同时在某种程度上会增加通信的次数以及本地处理的时间。
简单来说,就是在连接之前,先消除无用数据,减少网路通信中传输的数据量。
基于直接连接算法的查询优化 利用站点依赖信息分片与复制算法站点依赖和数据复制结合Hash划分算法 五、分配设计 冗余部分冗余不冗余 设计原则
在实际应用中,部分冗余应用是比较多的
异构多数据源在模式层面的集成
六、分布式并发控制 1.分布式数据库的基本封锁算法 简单分布式封锁法 封锁全部副本(各站点负责各自数据的封锁管理)过程消息(请求封锁、封锁确认、请求更新、更新确认、解除封锁)需要发送n次各站点间进行相当大的数据传输。 主站点封锁法(集中封锁法) 选定一个站点为“主站点”,负责系统全部封锁管理。容易造成“瓶颈”,制约可靠性和可用性 2.两阶段封锁协议(2PL) 所有的封锁操作必须在第一次解锁操作之前任何事务在操作数据之前必须获得锁第一阶段是封锁阶段,也称扩张阶段,第二阶段是解锁阶段,也称收缩阶段第一阶段和第二阶段间隔点称为封锁点若分布式数据库中,事务遵循2PL,则分布式数据库事务处理是可串行化的。
2PL分类 基本的2PL(在完成数据项的访问后立即释放锁,可能产生死锁,可能读到“脏数据”)保守的2PL(事务在执行操作前获得所有操作数据上的锁,不会产生死锁,但难以实现)严格的2PL(事务在提交或撤销前不能释放任何排他锁,可避免脏数据,不能避免死锁)严酷的2PL(事务在提交或撤销前不能释放任何锁,也不能避免死锁) 实现方法集中式2PL实现
分布式2PL实现
意向锁并不是真正锁数据,它是表明一种意思,即该结点的下层结点正在实际加锁
意向共享锁(IS)对一个数据对象加IS锁,表示某些后代将会请求S锁。
、例:若对元组加S锁,则对数据库和关系要加IS锁。意向排它锁(IX)
对一个数据对象加IX锁,表示可能对其下层结点加X锁。例:若对元组加X锁,则对数据库和关系要加IX锁。共享意向排它锁(SIX=S+IX)
对一个数据对象加SIX锁,表示当前结点处于S封锁中,但是下层某些结点将请求X锁。即事务要读下层结点中的对象,还可能要更新一些对象,因此要对当前结点加IX锁。 锁的相容矩阵
需要注意的是两个事务对某个结点T的SIX和IX是不相容的,因为对于SIX=S+IX,那么根据多粒度锁树的概念,T结点的子结点是加S锁和X锁的,那么这就会出现读写锁冲突。
串行调度:
一个事务的第一个动作是在另一个事务的最后一个动作完成后开始。即调度中事务的各个操作不会交叉,每个事务相继执行。串行调度总是可以正确执行,但是串行调度效率很低。如果一个调度等价于串行调度,那么称该调度为可串行化调度。
判断可串行化调度
p < S q:(指在S调度序列中,p排在q的前面)
例如:
有:
所以通过优先图算法可以看出来S3 是有回路的,不是可串行化的。
七、分布式事务控制 事务是访问或更新各种数据项的最小逻辑工作单位一个分布式事务由主事务(负责事务的开始、提交或异常终止)和多个子事务(局部事务,完成对数据的操作)组成。分布式事务与一般事务的不同表现在,全局事务的主事务和子事务都完成才能提交,任何一个子事务失败,都要Rollback 分布式事务抽象模型
可分为本地事务管理器和分布式事务管理器。
对分布式数据库的最终目标,是“让一个分布式数据库看起来不像是一个分布式数据库”。