一种数据库的分库分表方法、装置、设备及可读存储介质制造方法及图纸

技术编号:39152480 阅读:9 留言:0更新日期:2023-10-23 14:59
本发明专利技术公开了一种数据库的分库分表方法、装置、设备及可读存储介质,应用于数据处理技术领域,包括:获取待分库分表数据、待分库分表数据标识号、数据库分组权重分配规则和数据库分表路由规则;其中,数据库分组权重分配规则为数据库分组中的数据库个数,以及各个数据库组对应权重的规则;数据库分表路由规则为根据数据库分组中表的个数,以及库存数据标识号确定数据库分表的规则;根据待分库分表数据标识号利用数据库分组权重分配规则和数据库分表路由规则确定数据库组号和数据库表号。本发明专利技术提供的数据库的分库分表技术方案,只需增加新的数据库分组,为新的数据库分组配置新的权重百分比,新老数据便能各自正确的进行路由,无需进行数据迁移。需进行数据迁移。需进行数据迁移。

【技术实现步骤摘要】
一种数据库的分库分表方法、装置、设备及可读存储介质


[0001]本专利技术涉及数据处理
,特别涉及一种数据库的分库分表方法、装置、设备及可读存储介质。

技术介绍

[0002]随着商品品类的增多,库存数据会越来越多,对数据库查询和写入操作也会相应比较耗时,一般可以通过分库分表的方式将数据分摊到多张表、多个库上,以降低单个表和单个库的访问压力从而降低访问耗时。当前的分库分表算法一般采用hash(哈希)取模方案。hash是一种算法,该算法将任意长度的输入通过散列算法变换成固定输出。通过对关键字进行hash计算后,得到hash后的值,再和库表数量进行取模,从而确定应该放在哪个库里。但是如果数据库扩容的话,比如4台扩容成8台,这时候路由算法需要从对id(标识号)做hash计算后对4取模变成对id做hash计算后对8取模,会造成原来的数据按照新的路由算法,找不到对应数据,因此扩容后需要迁移部分老数据。
[0003]因此,当前数据库分库分表方法存在数据扩容时,需要对老数据进行迁移,从而导致数据库分库分表效率较低的技术问题。

技术实现思路

[0004]有鉴于此,本专利技术的目的在于提供一种数据库的分库分表方法、装置、设备及可读存储介质,解决了现有技术中数据库的分库分表效率较低的技术问题。
[0005]为解决上述技术问题,本专利技术提供了一种数据库的分库分表方法,包括:
[0006]获取待分库分表数据、待分库分表数据标识号、数据库分组权重分配规则和数据库分表路由规则;其中,所述数据库分组权重分配规则为数据库分组中的数据库个数,以及各个数据库组对应权重的规则;所述数据库分表路由规则为根据数据库分组中表的个数,以及库存数据标识号确定数据库分表的规则;
[0007]根据所述待分库分表数据标识号利用所述数据库分组权重分配规则确定所述待分库分表数据对应的数据库组号;
[0008]根据所述待分库分表数据标识号利用所述数据库分表路由规则确定所述待分库分表数据对应的数据库表号。
[0009]可选的,所述根据所述待分库分表数据标识号利用所述数据库分组权重分配规则确定所述待分库分表数据对应的数据库组号,包括:
[0010]根据所述数据库分组权重分配规则、所述待分库分表数据标识号利用范围分割方法确定所述数据库组号;其中,所述范围分割方法为利用各个数据库组权重比例对预设分割区间进行分割确定数据对应区间,从而根据标识号确定数据库分组的方法。
[0011]可选的,所述根据所述待分库分表数据标识号利用所述数据库分表路由规则确定所述待分库分表数据对应的数据库表号,包括:
[0012]获取所述数据库组号对应的目标表数量;
[0013]利用所述数据库分表路由规则,对所述待分库分表数据标识号进行哈希运算,并对所述目标表数量取余,确定所述数据库表号。
[0014]可选的,所述获取待分库分表数据、待分库分表数据标识号、数据库分组权重分配规则和数据库分表路由规则,包括:
[0015]当确定进行数据库扩容时,获取所述待分库分表数据和所述待分库分表数据标识号,以及根据历史数据库组数量配置的所述数据库分组权重分配规则;其中,所述历史数据库组数量少于所述数据库分组权重分配规则对应的数据库组数量。
[0016]可选的,在所述根据所述待分库分表数据标识号利用所述数据库分表路由规则确定所述待分库分表数据对应的数据库表号之后,还包括:
[0017]根据所述数据库组号、所述数据库表号和所述待分库分表数据标识号建立组关系映射表和/或表关系映射表。
[0018]可选的,所述根据所述数据库组号、所述数据库表号和所述待分库分表数据标识号建立组关系映射表和/或表关系映射表,包括:
[0019]根据所述待分库分表数据标识号对应的尾号,以及所述数据库组号和所述待分库分表数据标识号建立组关系映射表和/或表关系映射表。
[0020]可选的,所述根据所述待分库分表数据标识号对应的尾号,以及所述数据库组号和所述待分库分表数据标识号建立组关系映射表和/或表关系映射表,包括:
[0021]根据所述待分库分表数据标识号确定标识号上限;
[0022]根据所述标识号上限、所述待分库分表数据标识号对应的尾号,以及所述数据库组号和所述待分库分表数据标识号建立组关系映射表和/或表关系映射表。
[0023]本专利技术还提供了一种数据库的分库分表装置,包括:
[0024]目标内容获取模块,用于获取待分库分表数据、待分库分表数据标识号、数据库分组权重分配规则和数据库分表路由规则;其中,所述数据库分组权重分配规则为数据库分组中的数据库个数,以及各个数据库组对应权重的规则;所述数据库分表路由规则为根据数据库分组中表的个数,以及库存数据标识号确定数据库分表的规则;
[0025]组号确定模块,用于根据所述待分库分表数据标识号利用所述数据库分组权重分配规则确定所述待分库分表数据对应的数据库组号;
[0026]表号确定模块,用于根据所述待分库分表数据标识号利用所述数据库分表路由规则确定所述待分库分表数据对应的数据库表号。
[0027]本专利技术还提供了一种数据库的分库分表设备,包括:
[0028]存储器,用于存储计算机程序;
[0029]处理器,用于执行所述计算机程序时实现上述数据库的分库分表方法的步骤。
[0030]本专利技术还提供了一种计算机可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现上述数据库的分库分表方法的步骤。
[0031]可见,本专利技术通过获取待分库分表数据、待分库分表数据标识号、数据库分组权重分配规则和数据库分表路由规则;其中,数据库分组权重分配规则为数据库分组中的数据库个数,以及各个数据库组对应权重的规则;数据库分表路由规则为根据数据库分组中表的个数,以及库存数据标识号确定数据库分表的规则。根据待分库分表数据标识号利用数据库分组权重分配规则确定待分库分表数据对应的数据库组号。根据待分库分表数据标识
号利用数据库分表路由规则确定待分库分表数据对应的数据库表号。和当前数据库利用hash取模方案在数据库扩容时需要进行数据迁移相比,本专利技术提供的数据库的分库分表技术方案,只需增加新的数据库分组,为新的数据库分组配置新的权重百分比,新老数据便能各自正确的进行路由,无需进行数据迁移。
[0032]此外,本专利技术还提供了一种数据库的分库分表装置、设备及可读存储介质,同样具有上述有益效果。
附图说明
[0033]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0034]图1为本专利技术实施例提供的一种数据库的分库分表方法的流程图;
[0035]图2为本专利技术实施例提供的一种雪花算法原理图;
...

【技术保护点】

【技术特征摘要】
1.一种数据库的分库分表方法,其特征在于,包括:获取待分库分表数据、待分库分表数据标识号、数据库分组权重分配规则和数据库分表路由规则;其中,所述数据库分组权重分配规则为数据库分组中的数据库个数,以及各个数据库组对应权重的规则;所述数据库分表路由规则为根据数据库分组中表的个数,以及库存数据标识号确定数据库分表的规则;根据所述待分库分表数据标识号利用所述数据库分组权重分配规则确定所述待分库分表数据对应的数据库组号;根据所述待分库分表数据标识号利用所述数据库分表路由规则确定所述待分库分表数据对应的数据库表号。2.根据权利要求1所述的数据库的分库分表方法,其特征在于,所述根据所述待分库分表数据标识号利用所述数据库分组权重分配规则确定所述待分库分表数据对应的数据库组号,包括:根据所述数据库分组权重分配规则、所述待分库分表数据标识号利用范围分割方法确定所述数据库组号;其中,所述范围分割方法为利用各个数据库组权重比例对预设分割区间进行分割确定数据对应区间,从而根据标识号确定数据库分组的方法。3.根据权利要求1所述的数据库的分库分表方法,其特征在于,所述根据所述待分库分表数据标识号利用所述数据库分表路由规则确定所述待分库分表数据对应的数据库表号,包括:获取所述数据库组号对应的目标表数量;利用所述数据库分表路由规则,对所述待分库分表数据标识号进行哈希运算,并对所述目标表数量取余,确定所述数据库表号。4.根据权利要求1至3任一项所述的数据库的分库分表方法,其特征在于,所述获取待分库分表数据、待分库分表数据标识号、数据库分组权重分配规则和数据库分表路由规则,包括:当确定进行数据库扩容时,获取所述待分库分表数据和所述待分库分表数据标识号,以及根据历史数据库组数量配置的所述数据库分组权重分配规则;其中,所述历史数据库组数量少于所述数据库分组权重分配规则对应的数据库组数量。5.根据权利要求1所述的数据库的分库分表方法,其特征在于,在所述根据所述待分库分表数据标识号利用所述数据库分表路由规则确定所述待...

【专利技术属性】
技术研发人员:程天生
申请(专利权)人:上海微盟企业发展有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1