分布式数据库-1

资料: 链接

分片

水平分片

垂直分片

分片算法

01

PreciseShardingAlgorithm配合哈希函数使用, 实现哈希分片
RangeShardingAlogrithm可以实现范围分片

02

ComplexShardingStrategy可以使用多个分片键实现融合分片

03

数据表分片模式有时不是完全一致, 对于一些特别的分片模式, 可以使用HintShardingStrategy在运行态制定特殊的路由规则

04

自定义分片策略(java代码等)

水平&垂直融合

TiKV

同步

复制+一致性的综合

主从复制

同步模式

同步复制

如果从库故障, 那么主库也无法写入数据, 相当于主库和从库的写入是原子的

半同步复制

部分(一个)从库同步, 其他的从库异步. 一个从库确认了就推给所有从库

异步复制

如果主库失效, 未同步的部分的数据会丢失

复制方式

类似Redis的那两种同步方式

基于语句的复制
日志同步

WAL同步. WAL是一组字节序列, 其中包含对数据库所有的写操作

行复制

由一系列记录组成, 这些记录描述了以行粒度对数据库表进行的写操作, mysql的binlog就是

ETL工具

最灵活, 性能一般较低, 适合处理子数据集的场景

主主复制

多个主节点都可以同时接受写入, 每个主节点同时充当主节点的从节点

优点

  • 更好的写入性能
    每个主节点都可以写入, 客户端可以就近写入
  • 数据中心级别的高可用
    每个数据中心可以独立于其他数据中心继续运行
  • 更好的数据访问性能
    用户可以访问到距离最近的数据中心

缺点

  • 最大的缺点是可能不同的主节点同时修改相同的数据
  • 处理客户端离线操作的一致性问题

一致性模型

严格一致性

理论模型, 现实无法满足

线性一致性

代价高昂, CPU都不会使用线性一致性

顺序一致性

因果一致性