Blog of Samperson

⛵️帆船书#19 | 分布式数据库

2020-02-09

分布式数据存储与分布式事务

[1] 并行系统: 处理器紧密耦合, 组成单个数据库系统
分布式数据库系统: 松散耦合的站点, 不共享物理部件
每个站点处理局部事务, 事务访问的数据仅位于单个站点; 站点可以参与全局事务的执行, 全局事务访问多个站点的数据, 需要站点之间进行通信

[2] 同构数据库: 所有站点拥有共同的模式和数据库系统代码
异构数据库: 模式和系统代码可能不同

[3] 复制: 可用性, 增加并行读, 增加更新开销
复制提高读性能, 增加了对只读事务的可用性, 但是更新开销会增大
系统应该决定读请求引用哪个副本, 写请求更新所有副本

[4] 分片: 垂直分片和水平分片
元组的物理地址或逻辑地址可以用作tuple-id, 因为每个元组有唯一的地址

[5] 数据透明性: 分片透明性, 复制透明性, 位置透明性
系统应尽量减小用户需要了解关系如何存储的程度

[6] 保证名字唯一的方法

  • 所有名字在中央名字服务器中注册——缺点: 使用名字定位时, 名字服务器会成为性能瓶颈; 名字服务器崩溃, 系统中所有站点不能继续运行
  • 站点自身标识符作为前缀, 但无法实现位置透明性——解决: 为数据项创建别名, 别名和真实名字的映射可以存储在每个站点上, 用户无需了解数据项的物理位置

[7] 系统结构——每个站点包括两个子系统

  • 事务管理器: 维护用于恢复的日志; 参与并发控制方案, 协调站点上执行的事务并发执行
  • 事务协调器: 启动事务执行; 将事务分成子事务, 分派给合适的站点执行; 协调事务的中止, 可能导致事务在所有站点都提交或者都中止

[8] 故障: 与集中式系统相同类型的故障, 站点故障, 链路故障, 消息丢失, 网络划分

提交协议