分布式数据库之数据分区

分布式数据库之数据分区

  • 顺序分布
    比如:1-100个数字,要保存到3个节点上,每个节点平均存储,1-33存储在第1个节点,34-66存储到2节点,剩余存储到3节点。
    顺序存储常用在关系型存储上
  • hash分布
    • 节点取余分区
      比如100个数据,对每个数据进行hash运算之后,再于节点数进行取余运算,根据余数保存在不同节点上。
      缺点:当节点扩容或缩容时需要迁移的数据量较大
    • 一致性hash分区
      将所有0-2的32次方的所有数据进行hash运算,结果组成一个hash环,对数据进行hash找到在环上的位置,顺时针方向找到距离最近的节点进行存储。
      有点:适用于节点个数较多的场景,当节点扩容或缩容时需要迁移的数据量较小,
    • 虚拟槽分区(16384)
      redis cluster采用的就是虚拟槽分区,槽的范围是0-16383,将16384个槽平均分配给节点,由节点进行管理。
      每次将key进行hash运算,对16383进行取余,然后去redis对应的槽进行查找。

你可能感兴趣的:(数据库)