分布式数据存储与分布式事务
[1] 并行系统: 处理器紧密耦合, 组成单个数据库系统
分布式数据库系统: 松散耦合的站点, 不共享物理部件
每个站点处理局部事务, 事务访问的数据仅位于单个站点; 站点可以参与全局事务的执行, 全局事务访问多个站点的数据, 需要站点之间进行通信
[2] 同构数据库: 所有站点拥有共同的模式和数据库系统代码
异构数据库: 模式和系统代码可能不同
[3] 复制: 可用性, 增加并行读, 增加更新开销
复制提高读性能, 增加了对只读事务的可用性, 但是更新开销会增大
系统应该决定读请求引用哪个副本, 写请求更新所有副本
[4] 分片: 垂直分片和水平分片
元组的物理地址或逻辑地址可以用作tuple-id, 因为每个元组有唯一的地址
[5] 数据透明性: 分片透明性, 复制透明性, 位置透明性
系统应尽量减小用户需要了解关系如何存储的程度
[6] 保证名字唯一的方法
- 所有名字在中央名字服务器中注册——缺点: 使用名字定位时, 名字服务器会成为性能瓶颈; 名字服务器崩溃, 系统中所有站点不能继续运行
- 站点自身标识符作为前缀, 但无法实现位置透明性——解决: 为数据项创建别名, 别名和真实名字的映射可以存储在每个站点上, 用户无需了解数据项的物理位置
[7] 系统结构——每个站点包括两个子系统
- 事务管理器: 维护用于恢复的日志; 参与并发控制方案, 协调站点上执行的事务并发执行
- 事务协调器: 启动事务执行; 将事务分成子事务, 分派给合适的站点执行; 协调事务的中止, 可能导致事务在所有站点都提交或者都中止
[8] 故障: 与集中式系统相同类型的故障, 站点故障, 链路故障, 消息丢失, 网络划分