祗疼妳一个 发表于 2025-3-28 01:21:15

【系统架构设计师】数据库系统 ② ( 分布式数据库 | 分布式数据库 特点 | 分布式数据库 分层模式 | 两阶段提交协议 - 2PC 协议 )

一、分布式数据库



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 的集中式数据库的 内模式 保持同等 ;

https://i-blog.csdnimg.cn/direct/d0a1096f9b5d46dd99c0a009bdbce2a0.png

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 后 , 标记事务制止 , 事务提交完毕 ;


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【系统架构设计师】数据库系统 ② ( 分布式数据库 | 分布式数据库 特点 | 分布式数据库 分层模式 | 两阶段提交协议 - 2PC 协议 )