『database-9』distributed database

分布式数据库

一、分布式数据库系统

  • 分布式数据库:由一组分布在计算机网络中的不同节点上的数据组成,支持局部应用(场地自治)+ 全局应用(网络通信)
    • 局部应用:只操作一个节点上的数据库的应用
    • 全局应用:操作两个或多个的节点的数据库的应用
  • 场地自治与协作性:
    • 场地自治:每个场地有自己的数据库,一组终端、是独立的 DBS
    • 协作性:从用户角度看,分布式数据库逻辑上如同一个集中式数据库
  • 分布式数据库特点:
    • 数据独立性:逻辑 + 物理独立性;分布独立性:数据的逻辑切片、物理位置分布、重复副本一致性 对用户透明
    • 集中与自治:
      • 自治功能:各局部的DBMS可以独立管理局部数据库,具有自治功能
      • 集中控制:协调各局部 DBMS 工作,执行全局应用
    • 数据冗余:在不同节点存储同一数据的多个副本
      • 提高系统可靠性 + 可用性:当某一个节点出现故障时,可对另一节点进行相同操作
      • 提高系统性能:选择与用户最近的数据副本进行操作,减少通信代价
    • 全局一致性,可串行性,可恢复性

二、分布式数据库系统的体系结构

  • 模式结构:
    • 全局外模式:全局应用的用户视图,全局概念模式的子集
    • 全局概念模式:定义分布式数据库中数据的整体逻辑结构,使数据如同没有分布一样
    • 分片模式:每个全局关系可被分为若干个互不相交的片段
    • 分布模式:定义片段的存放节点,该部分的映像类型决定了分布式数据库是冗余的还是非冗余的
  • 分片结构:
    • 水平分片:将关系按行分为互不相交的若干子集,每个子集称为一个水平分段
    • 垂直分片:将关系按列分为若干属性子集,,每个子集称为垂直片段,垂直分片的诸多片段往往包含码
    • 导出(水平)分片:水平分片的条件来自其它关系的属性条件
    • 混合分片:按上述三种方式得到的片段,继续按另一种方式分片
  • 分片的性质:
    • 完全性:一个全局关系中的数据必须完全划分为若干个片段,不允许某些数据不属于任何片段
    • 不相交性:不允许一个全局关系的某些数据同时属于多个片段(垂直分片的码属性除外)
    • 可重构性:可由片段重构全局关系(垂直分片用连接,水平分片用并集)
  • 分布透明性:
    • 分片透明性:用户只需对全局关系进行操作,无需考虑关系分片
    • 位置透明性:用户无需了解片段的存储场地,以及数据副本的一致性
    • 局部数据模型透明性:用户无需了解局部场地上使用的是哪种数据模型,模型转换等由分布模式-局部概念模式映像实现

三、分布式数据库系统的主要技术

  • 分布式查询类型:

    • 局部查询 & 远程查询:只涉及单个节点的数据,可直接采用集中式数据库的处理技术
    • 全局查询:涉及多个节点数据
  • 分布式查询过程:

    1. 查询分解:把全局查询分解为若干个子查询,每个子查询只涉及一个节点的数据,可由局部DBMS处理
    2. 选择操作执行的次序:确定不同节点上关系的连接 or 并操作的的次序
    3. 选择执行操作的方法:选择存取路径、选择某种操作的算法、连接的执行方法
  • 查询优化的目标:使查询执行时的通信代价最省

  • 半连接:提高传输效率


  • 分布事务处理:具有原子性 + 可串行性:

    • 原子性:组成事务的所有子事务(分布在不同节点)要么全部提交,要么全部回滚
    • 可串行性:各事务的某一次调度得到的执行结果与串行执行得到的结果一致
  • 两段提交协议:对各局部事务管理器进行协调,保证分布事务原子性

    • 协调者:负责作出事务是提交还是撤销的最终决定

    • 参与者:负责管理相应子事务的执行,以及在各局部数据库上执行写操作


    • 第一阶段:

      1. 协调者向所有参与者发送“准备提交”的信息,并记入日志,参与者回复“就绪”or“撤销”
      2. 若在规定时间内协调者收到所有参与者的“就绪”消息,则做出“提交”决定,否则做出“撤销”决定
    • 第二阶段:

      1. 协调者将决定写入日志,并将该决定发送给所有参与者
      2. 各参与者收到命令后,在日志中写入“收到提交/撤销决定”,向协调者发送应答信息,执行相应决定
      3. 协调者收到所有应答者的应答消息后,事务执行结束

      注意:当系统发生故障时,各场地使用各自有关的日志进行事务恢复


『database-9』distributed database
http://larry0454.github.io/2023/11/23/database/distributed-database/
Author
WangLe
Posted on
November 23, 2023
Licensed under