
【系统架构设计师】数据库系统 ② ( 分布式数据库 | 分布式数据库 特点 | 分布式数据库 分层模式 | 两阶段提交协议 - 2PC 协议 )
一、分布式数据库1、集中式数据库 与 分布式数据库2、分布式数据库 特点① 数据独立性② 集中 与 自治 共享结合 的 控制结构③ 数据冗余④ 全局一致性、可串行性、可恢复性3、分布式 数据库管理系统 组成4、分布式数据库 的 透明性二、分布式数据库 分层模式1、集中式数据库 分层模式2、分布式数据库 分层模式 简介3、分布式数据库 分层模式 作用三、分布式数据库 事务管理1、两阶段提交协议 -
文章目录
一、分布式数据库
1、集中式数据库 与 分布式数据库
在上一篇博客 【系统架构设计师】数据库系统 ① ( 数据库系统 软考 知识点概述 | 数据库模式 | 三级模式 | 两层映射关系 | 关系表 的 三种类型 - 基本表、查询表、视图表 ) 讲解了 数据库模式 , 重点是 三级模式 和 两层映射 , 这些都是描述 " 集中式数据库 " 的 特点的 ;
常见的 MySQL 、Oracle 、 SQLServer 数据库 都是 集中式数据库 , 与 " 集中式数据库 “ 相对应的概念是 ” 分布式数据库 " ;
- 集中式数据库 将 数据 集中 放置在 一台 服务器中 ;
- 分布式数据库 将 数据 分布 放置在 不同 物理节点中 ;
在 " 分布式数据库 " 中 , 访问数据时 , 会到邻近的 服务器节点 中查找数据 , 效率要高于 " 集中式数据库 " ;
将 数据 根据需求 进行 分布式 放置 ,
- 负载均衡 : 不同数据 就近存放 , 提高访问性能 , 可满足 负载均衡 的设计需求 ;
- 数据备份 : 相同的数据 备份存放 , 为数据 存储多个副本备份 , 提高了数据的 安全性 ;
2、分布式数据库 特点
① 数据独立性
数据独立性 :
集中式数据库 具有 逻辑独立性 和 物理独立性 ;
- 逻辑独立性 : 外部应用程序 与 数据库的逻辑基本表 是 相互独立的 , 数据库表 逻辑结构 发生变化时 , 应用程序不需要随时发生改变 , 只需要修改 二者之间的 映射关系即可 ;
- 物理独立性 : 概念模式 与 内模式 之间的 对应关系 是 相互独立的 , 数据库迁移后 , 不需要修改 数据库表的结构 , 自然更不需要修改程序结构 ;
分布式数据库 在 上述 逻辑独立性 和 物理独立性 基础上 , 还 具备 数据 " 分布独立性 " 的 特点 , 又称为 " 分布透明性 " ;
- 分布独立性 : 无论数据 如何分布在 物理节点上 , 开发者不需要根据 数据的分布 修改 程序代码 ;
② 集中 与 自治 共享结合 的 控制结构
集中 与 自治 共享结合 的 控制结构 :
- 局部自治功能 : 每个 局部的 节点服务器 中 , 都有 独立的 DBMS ( 数据库管理系统 ) 独立管理 该节点服务器 中的 局部数据库 ;
- 集中管理功能 : 整个 分布式数据库系统 还具有 " 集中控制机制 " , 全局 DBMS 协调管理 每个 节点服务器 中的 局部 DBMS , 在全局范围中控制数据相关操作 ;
③ 数据冗余
数据冗余 :
- 提高可靠性 : 在 不同的 地点 的 不同 节点服务器 中 , 存储相同的 副本数据 , 某个节点发生故障 , 可以 从非故障的节点中读取 副本数据 , 提高 数据库系统 的 可靠性 ;
- 提高访问性能 : 副本数据 还能提高 访问性能 , 如 : 不同的访问者 , 可以就近访问最近的节点 , 可提高访问速度 ;
④ 全局一致性、可串行性、可恢复性
全局一致性、可串行性、可恢复性 : 这是 集中式数据库 的 基本特性 , 分布式数据库 也必须满足该 特性需求 ;
- 全局一致性 : 分布式数据库系统 所有 数据副本 在 任何时间点 保持 完全一致 的状态 , 涵盖 准确性、完整性、及时性 和 逻辑一致性 ;
- 可串行性 : 并发事务 的 执行结果 与 某种串行执行顺序 等价 , 避免脏读、不可重复读 和 幻读 ;
- 可恢复性 : 系统在故障( 如断电、磁盘损坏 )后 , 能恢复到最近 的 一致状态 , 确保数据持久性和系统可用性 , 避免数据丢失 ;
3、分布式 数据库管理系统 组成
分布式数据库管理系统 组成 : DDBMS , Distributed Database Management System ;
- 全局数据库管理系统 : GDBMS, Global Database Management System , 负责 协调和管理 整个 分布式数据库系统 , 提供 全局事务管理、数据分片、跨节点查询优化 等功能 , 确保 不同节点间 的 数据一致性和完整性 ;
- 局部数据库管理系统 : LDBMS , Local Database Management System , 管理单个节点 ( 站点 ) 的本地数据库 , 执行本地事务处理、数据存储和检索 , 每个节点的LDBMS具有自治性 , 可独立运行 ;
- 通信管理 : CM , Communication Management , 负责 节点间的数据传输、消息同步 和 网络通信协议管理 , 确保 分布式环境下 节点的 高效协作 与 低延迟通信 ;
- 全局数据字典 : GDD , Global Data Dictionary , 存储 分布式数据库 的 元数据 ( Metadata ) , 包括 数据分片规则、节点位置、用户权限、数据模式 等 , 是系统实现数据透明性的核心组件 ;
4、分布式数据库 的 透明性
分布式数据库 的 透明性 :
- 分片 透明性 ( 用户不知道分片方式细节 ) : 数据库 的 垂直、水平、混合 分片 的 透明性 , 数据库的 分片 操作 对 用户透明 , 用户不需要关心如何进行分片 , 只需要在 全局关系 上操作数据库即可 ;
- 垂直分片 : 按列切割 , 将一个表拆分成 多个 结构 不同 的表 ;
- 水平分片 : 按行切割 , 将一个表拆分成 多个 结构 相同 的表 ;
- 混合分片 : 组合水平和垂直分片 , 先进行垂直分片 ( 按列切割 ) , 再进行水平分片 ( 按行切割 ) ;
- 复制 透明性 ( 用户不知道数据备份细节 ) : 数据 的 备份操作 由 DBMS 自动完成 , 并存储到特定的 若干物理节点 中 , 该操作对用户透明 , 用户不需要了解 数据库 在 各个物理节点上 存储 副本数据 的细节 ;
- 位置 透明性 ( 用户不知道分片存放位置 ) : 数据库 分片 的 位置 透明性 , 数据库分片 的 存储位置 对 用户透明 , 用户不需要了解 被切割的分片具体存储在 哪些 物理节点中 ;
- 逻辑 透明性 ( 用户不知道局部节点细节 ) : 又称为 局部数据模型透明性 , 用户不需要关心 局部 DBMS 的细节 , 使用的是 什么数据模型 和 使用的是什么 SQL 语句 , 全局 DBMS 操作 下发到 局部 DBMS , 会自动转为 局部 DBMS 的操作 , 不需要用户知道其中的操作细节 ;
二、分布式数据库 分层模式
1、集中式数据库 分层模式
集中式数据库 有 三级模式 ( 外模式、概念模式、内模式 ) 和 两层映射 ( 外模式 - 概念模式 映射 、 概念模式 - 内模式 映射 ) ;
2、分布式数据库 分层模式 简介
分布式数据库 模式 层级 :
- 外模式 : 只有 全局 DBMS ( 数据库管理系统 ) 对外开放的 全局外模式 交互接口 , 用户 只能 通过 全局外模式 访问 分布式数据库 ;
- 全局 外模式 : 是 用户 与 数据库 交互的唯一接口 , 提供统一的数据视图 ; 该模式 隐藏了数据分布和分片的细节 , 用户 无需感知 数据 存储位置 或 分片方式 ;
- 全局 DBMS : 协调者 , 负责查询分解、跨节点事务协调、结果聚合 , 维护全局外模式、全局概念模式、分片与分布模式 ;
- 局部 DBMS : 执行者 , 管理本节点数据 , 响应全局DBMS的指令 , 独立处理本地查询 , 维护 局部概念模式 与 局部内模式 ;
- 概念模式 : 有 全局概念模式 和 局部概念模式 两种层级的概念模式
- 全局概念模式 : 是 全局 DBMS ( 数据库管理系统 ) 的 概念模式 , 是 整个 分布式数据库 的 逻辑组织结构 , 如 : 表、字段、关系 ;
- 局部概念模式 : 是 局部 DBMS 的 概念模式 , 单个 节点服务器 上数据的逻辑结构 , 是全局模式的一个子集或映射 , 一般与 全局概念模式 相同 ;
- 分片模式 ( 切割 ) : 将一个数据库进行分片 , 这就形成了 分片模式 , 分片模式 有 垂直分片、水平分片、混合分片 ; 分片切割 可以实现 提升查询效率 , 降低跨节点数据传输 ;
- 垂直分片 : 按列切割 , 将一个表拆分成 多个 结构 不同的表 ;
- 水平分片 : 按行切割 , 将一个表拆分成 多个 结构 想通的表 ;
- 混合分片 : 组合水平和垂直分片 , 先进行垂直分片 ( 按列切割 ) , 再进行水平分片 ( 按行切割 ) ;
- 分布模式 ( 放置 ) : 将数据库 分片 后 , 不同的分片放在 哪个 或 哪几个 物理节点 中 , 就形成了 放置策略 ;
- 局部 DBMS : 将 数据库分片 放入 节点服务器 之后 , 每个节点服务器需要 运行一个独立的 局部的 DBMS ( 数据库管理系统 ) , <每个 局部 DBMS 都有自己的 概念模式 和 内模式 ;
- 局部 概念模式 : 与 全局 DBMS 的集中式数据库的 概念模式 保持一致 ;
- 局部 内模式 : 与 全局 DBMS 的集中式数据库的 内模式 保持一致 ;
3、分布式数据库 分层模式 作用
分布式数据库 通过 分层模式 实现 逻辑统一 与 物理分布 的分离 ,
全局外模式 简化用户访问 ,
分片模式 与 分布模式 控制 数据切割与存储位置 ,
全局 DBMS 与 局部 DBMS 协同工作 ,
最终在保证一致性的同时提升扩展性与性能 ;
用户接口层
└── 全局外模式(统一视图)
│
逻辑层
├── 全局概念模式(整体逻辑结构)
│ └── 分片模式(数据切割规则)
│ └── 分布模式(分片位置映射)
│
物理层
├── 节点1:局部概念模式 + 局部内模式(局部DBMS管理)
├── 节点2:局部概念模式 + 局部内模式
└── ...
三、分布式数据库 事务管理
1、两阶段提交协议 - 2PC 协议
分布式数据库 的 事务管理 , 进行的是 两阶段提交 , 使用的是 " 两阶段提交协议 ( 2PC , Two-Phase Commit ) " ;
2PC 协议 是 一种经典的 分布式系统协议 , 用于 确保跨多个节点的事务的 原子性 , 其 核心目标是 确保 在分布式事务中 , 所有参与节点 要么 全部 提交事务 , 要么 全部回滚 , 避免 部分成功 导致的 数据不一致 ;
2、2PC 协议 参与者
2PC 协议参与者 :
- 协调者 : 负责全局事务的决策 , 通常是事务发起者 ;
- 参与者 : 执行事务的具体节点 , 如 : 数据库、服务等 ;
3、2PC 协议 参与者
2PC 协议 分为两个阶段 : 准备阶段 和 提交阶段 ;
① 阶段一 : 准备阶段
阶段一 - 准备阶段 , 按照步骤执行如下 三个步骤的操作 :
- 协调者 向所有 参与者 发送 Prepare 请求 , 询问 各个 参与者 是否可以 提交事务 ;
- 参与者 执行 事务操作 , 但不提交 , 锁定事务相关资源 , 并记录日志信息 , 该日志信息用于故障恢复 ;
- 参与者 回复 有 2 种情况 :
- 同意 ( Yes ) : 事务执行成功且 可提交 ;
- 中止 ( No ) : 事务执行失败 或 无法提交 ;
② 阶段二 : 提交阶段
阶段二 - 提交阶段 , 根据 准备阶段 参与者 的 回复信息 , 分为两种情况 ,
- 情况 1 : 所有 参与者 回复 " Yes " ;
- 协调者 发送 Commit 命令 ;
- 参与者 正式提交事务 , 释放资源 , 回复 ACK 确认命令 ;
- 协调者 收到所有 参与者 发送的 ACK 后 , 标记事务完成 ;
- 情况 2 : 任意一个 参与者 回复 " No " 或者 超时 未回复 ;
- 协调者 发送 Rollback 回滚命令 ;
- 参与者 回滚事务 , 释放资源 , 回复 ACK 确认命令 ;
- 协调者 收到所有 参与者 发送的 ACK 后 , 标记事务中止 , 事务提交完毕 ;
更多推荐
所有评论(0)