Skip to content

Latest commit

 

History

History
16 lines (9 loc) · 906 Bytes

3_数据分布.md

File metadata and controls

16 lines (9 loc) · 906 Bytes

数据分布

哈希分布

哈希分布就是将数据计算哈希值之后,按照哈希值分配到不同的节点上。例如有 N 个节点,数据的主键为 key,则将该数据分配的节点序号为:hash(key)%N。

传统的哈希分布算法存在一个问题:当节点数量变化时,也就是 N 值变化,那么几乎所有的数据都需要重新分布,将导致大量的数据迁移。

顺序分布

将数据划分为多个连续的部分,按数据的 ID 或者时间分布到不同节点上。例如 User 表的 ID 范围为 1 ~ 7000,使用顺序分布可以将其划分成多个子表,对应的主键范围为 1 ~ 1000,1001 ~ 2000,...,6001 ~ 7000。

顺序分布相比于哈希分布的主要优点如下:

  • 能保持数据原有的顺序;
  • 并且能够准确控制每台服务器存储的数据量,从而使得存储空间的利用率最大。