[发明专利]基于一致性哈希算法的分表方法及设备有效
申请号: | 201810481880.7 | 申请日: | 2018-05-18 |
公开(公告)号: | CN108763381B | 公开(公告)日: | 2022-05-17 |
发明(设计)人: | 何燕春;吴再聪 | 申请(专利权)人: | 土巴兔集团股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 广东普罗米修律师事务所 44615 | 代理人: | 齐则琳 |
地址: | 518000 广东省深圳市南山区西丽街道*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 一致性 算法 方法 设备 | ||
本发明公开了一种基于一致性哈希算法的分表方法及设备,其中该分表方法包括:获取记录有业务数据的数据总表;使用一致性哈希算法将数据总表中的业务数据存储于多个第一表格中;在业务数据发生变化,且用于存储变化后的业务数据的表格的目标数量与第一表格的数量不相同时,使用一致性哈希算法对多个第一表格中的部分第一表格中的业务数据进行迁移,能在业务数据变化需要调整表的数量时,减少业务数据的迁移量,快速完成数据迁移。
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于一致性哈希算法的分表方法及设备。
背景技术
随着互联网业务的快速发展,互联网业务数据越来越大,单张表的数据存储已经不能满足业务的发展需要。因为如果一张表的数据量超过一定量,那么查询、插入等速度会整体下降,所以需要对单表进行分表。具体可根据数据量估算表的数量,分成多张表,使每张表的数据量降下来,从而恢复单表性能。
目前在对数据库表的拆分上,使用的方法是对某个取模得到其所在的表号。例如现在计划把用户表分成100张子表,表序号为0~99,假设用户A的身份标识号(id)为1234,通过1234%100=34,得到用户A应该插入到序号为34的表里面。虽然根据id取模运算可以实现分表的目的,但是当业务数据变化需要调整表的数量时,几乎所有业务数据都需要迁移,造成数据迁移慢。
发明内容
本发明的主要目的在于提供一种基于一致性哈希算法的分表方法及设备,以解决当业务数据变化需要调整表的数量时,几乎所有业务数据都需要迁移,造成数据迁移慢的问题。
为实现上述目的,本发明提供了一种基于一致性哈希算法的分表方法,该分表方法包括:
获取记录有业务数据的数据总表;
使用一致性哈希算法将数据总表中的业务数据存储于多个第一表格中;
在业务数据发生变化,且用于存储变化后的业务数据的表格的目标数量与第一表格的数量不相同时,使用一致性哈希算法对多个第一表格中的部分第一表格中的业务数据进行迁移。
其中,使用一致性哈希算法将数据总表中的业务数据存储于多个第一表格中的步骤,包括:
根据设定的分表键和用于存储业务数据的第一表格的数量,使用一致性哈希算法得出数据总表中每个分表键值对应的第一表格序号;其中,分表键是指数据总表中的特定列,分表键值是指数据总表中的特定列的值;
根据数据总表中每个分表键值对应的第一表格序号,针对每个分表键值,分别将数据总表中分表键值对应的业务数据存储于该分表键值对应的第一表格中;其中,每个第一表格序号对应一个第一表格。
其中,使用一致性哈希算法对多个第一表格中的部分第一表格中的业务数据进行迁移的步骤,包括:
根据目标数量和多个第一表格,使用一致性哈希算法对部分第一表格中的业务数据进行迁移。
其中,根据目标数量和多个第一表格,使用一致性哈希算法对部分第一表格中的业务数据进行迁移的步骤,包括:
针对每个第一表格分别执行以下步骤:
根据分表键遍历第一表格,获取第一表格的分表键值;
根据目标数量和第一表格的分表键值,使用一致性哈希算法获得第一表格的分表键值对应的第二表格序号;
若第二表格序号与第一表格对应的第一表格序号相同,则不对第一表格中的业务数据进行迁移;
若第二表格序号与第一表格对应的第一表格序号不相同,则对第一表格中的业务数据进行迁移。
其中,对第一表格中的业务数据进行迁移的步骤,包括:
将第一表格中的业务数据插入第二表格序号对应的第二表格中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于土巴兔集团股份有限公司,未经土巴兔集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810481880.7/2.html,转载请声明来源钻瓜专利网。