散列分表
- 对业务字段散列后取模并映射到对应的表
问题:
- 不利于新增扩展表,需要修改散列函数并对全量数据重新分配
改进,在数据和表之间引入虚拟桶概念
- 定义一个容量较大的散列表
- 根据自定义规则随机分配散列桶(虚拟桶)
- 定义一个虚拟桶——》数据库表的映射关系
- 数据根据散列函数被分配到不同的虚拟桶中,数据和散列桶的对应规则是 N:1
- 散列桶中的数据根据内存映射关系最终落到数据库表中,散列桶和数据库表的对应规则是 N:1
使用方式
- 数据存储增加一列,用来记录该条记录对应的虚拟桶槽位
- 增加节点时,无需更改散列算法,仅需更改虚拟桶与数据库表影射关系
-
- 例子: 0 - 9 映射表 A 改为 0-4 映射表 A 4-9 映射表 B
- 增加节点后,对原 A 表中槽位位 5-9 的数据迁移至表 B
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于