分布式数据库
服务于写多读少、低延时、海量并发 OLTP 场景的,具备海量数据存储能力和高可靠性的关系型数据库
一致性
观察数据一致性的两个视角:
- 状态一致性是指,数据所处的客观、实际状态所体现的一致性
- 操作一致性是指,外部用户通过协议约定的操作,能够读取到的数据一致性
同构和异构数据库
分布式数据存储
- 复制
- 分片
数据复制
提供了只读事务的性能,但更新事务的开销会变大
架构风格
PostgreSQL-XC
- 分片、分布式事务、跨节点查询和全局时钟
NewSQL
- 基于分布式KV存储系统,存储与计算分离,拥有更高的伸缩性
很多产品为了获得更好的计算性能,会尽量将更多计算下压到存储节点执行,更偏向于PostgreSQL-XC风格
全局时钟
- 时间源
- 时钟类型
- 授时点
TrueTime
时间源是 GPS 和原子钟,所以属于多时间源和物理时钟,同时它也采用了多点授时机制,依赖于特定硬件设备
HLC
每个节点会使用本地时钟作为参照,但不受到时钟回拨的影响,可以保证单调递增。本质上,HLC 还是 Lamport 逻辑时钟的变体,所以对于不同节点上没有调用关系的两个事件,是无法精确判断先后关系的
TSO
STP
分片
- 分片的策略:hash、range
- 分片的调度:动态、静态
PGXC
普通哈希可以均衡数据分布,缺点就是扩展性不好
一致性哈希扩展性好,但是仍无法处理业务热点
range分片也只支持静态分片,虽然可以预估业务热点,但无法根据业务灵活调整
NewSQL
- 动态分片
分片可以自动完成分裂与合并,也可以根据访问压力调度分片
只有动态了,才能自适应各种业务场景下的数据变化,平衡存储、访问压力、分布式事务和访问链路延时等多方面的诉求
高可靠
对于 NewSQL 来说,分片是高可靠的最小单元;而对于 PGXC,分片的高可靠要依附于节点的高可靠
NewSQL 架构下,分片采用 Paxos 或 Raft 算法可以构成复制组,这种复制机制相比 PGXC 的主备节点复制,提供了更高的可靠性
透明性
- 分片透明性
- 复制透明性
- 位置透明性
分布式事务
- 局部事务
- 全局事务
系统结构
- 事务管理器
- 事务协调器
系统故障模式
- 站点故障
- 消息丢失
- 通信链路故障
- 网络划分
提交协议
- 两阶段提交
- 三阶段提交
事务处理的可选择性模型
- 发送站点协议
- 接收站点协议
分布式数据库中的并发控制
封锁协议
- 单一锁管理器方式
- 分布式锁管理器
数据项复制
- 主副本
- 多数协议
- 有偏协议
- 法定人数同意协议
时间戳
全局唯一标识符 = 局部唯一时间戳+站点标识符
弱一致性级别的复制
延迟传播
死锁处理
局部等待图;全局等待图
可用性
基于多数的方法
读一个、写所有可用的方法
站点重建
分布式查询处理
查询转换
连接处理
半连接策略
异构分布式数据库
数据统一视图
查询处理
多数据库中的事务管理
基于云的数据库
目录系统
目录访问协议
- LDAP