『database-9』distributed database
分布式数据库
一、分布式数据库系统
- 分布式数据库:由一组分布在计算机网络中的不同节点上的数据组成,支持局部应用(场地自治)+
全局应用(网络通信)
- 局部应用:只操作一个节点上的数据库的应用
- 全局应用:操作两个或多个的节点的数据库的应用
- 场地自治与协作性:
- 场地自治:每个场地有自己的数据库,一组终端、是独立的 DBS
- 协作性:从用户角度看,分布式数据库逻辑上如同一个集中式数据库
- 分布式数据库特点:
- 数据独立性:逻辑 + 物理独立性;分布独立性:数据的逻辑切片、物理位置分布、重复副本一致性 对用户透明
- 集中与自治:
- 自治功能:各局部的DBMS可以独立管理局部数据库,具有自治功能
- 集中控制:协调各局部 DBMS 工作,执行全局应用
- 数据冗余:在不同节点存储同一数据的多个副本
- 提高系统可靠性 + 可用性:当某一个节点出现故障时,可对另一节点进行相同操作
- 提高系统性能:选择与用户最近的数据副本进行操作,减少通信代价
- 全局一致性,可串行性,可恢复性
二、分布式数据库系统的体系结构
- 模式结构:
- 全局外模式:全局应用的用户视图,全局概念模式的子集
- 全局概念模式:定义分布式数据库中数据的整体逻辑结构,使数据如同没有分布一样
- 分片模式:每个全局关系可被分为若干个互不相交的片段
- 分布模式:定义片段的存放节点,该部分的映像类型决定了分布式数据库是冗余的还是非冗余的
- 分片结构:
- 水平分片:将关系按行分为互不相交的若干子集,每个子集称为一个水平分段
- 垂直分片:将关系按列分为若干属性子集,,每个子集称为垂直片段,垂直分片的诸多片段往往包含码
- 导出(水平)分片:水平分片的条件来自其它关系的属性条件
- 混合分片:按上述三种方式得到的片段,继续按另一种方式分片
- 分片的性质:
- 完全性:一个全局关系中的数据必须完全划分为若干个片段,不允许某些数据不属于任何片段
- 不相交性:不允许一个全局关系的某些数据同时属于多个片段(垂直分片的码属性除外)
- 可重构性:可由片段重构全局关系(垂直分片用连接,水平分片用并集)
- 分布透明性:
- 分片透明性:用户只需对全局关系进行操作,无需考虑关系分片
- 位置透明性:用户无需了解片段的存储场地,以及数据副本的一致性
- 局部数据模型透明性:用户无需了解局部场地上使用的是哪种数据模型,模型转换等由分布模式-局部概念模式映像实现
三、分布式数据库系统的主要技术
分布式查询类型:
- 局部查询 & 远程查询:只涉及单个节点的数据,可直接采用集中式数据库的处理技术
- 全局查询:涉及多个节点数据
分布式查询过程:
- 查询分解:把全局查询分解为若干个子查询,每个子查询只涉及一个节点的数据,可由局部DBMS处理
- 选择操作执行的次序:确定不同节点上关系的连接 or 并操作的的次序
- 选择执行操作的方法:选择存取路径、选择某种操作的算法、连接的执行方法
查询优化的目标:使查询执行时的通信代价最省
半连接:提高传输效率
分布事务处理:具有原子性 + 可串行性:
- 原子性:组成事务的所有子事务(分布在不同节点)要么全部提交,要么全部回滚
- 可串行性:各事务的某一次调度得到的执行结果与串行执行得到的结果一致
两段提交协议:对各局部事务管理器进行协调,保证分布事务原子性
协调者:负责作出事务是提交还是撤销的最终决定
参与者:负责管理相应子事务的执行,以及在各局部数据库上执行写操作
第一阶段:
- 协调者向所有参与者发送“准备提交”的信息,并记入日志,参与者回复“就绪”or“撤销”
- 若在规定时间内协调者收到所有参与者的“就绪”消息,则做出“提交”决定,否则做出“撤销”决定
第二阶段:
- 协调者将决定写入日志,并将该决定发送给所有参与者
- 各参与者收到命令后,在日志中写入“收到提交/撤销决定”,向协调者发送应答信息,执行相应决定
- 协调者收到所有应答者的应答消息后,事务执行结束
注意:当系统发生故障时,各场地使用各自有关的日志进行事务恢复
『database-9』distributed database
http://larry0454.github.io/2023/11/23/database/distributed-database/