适用于分库分表的在线扩容方法和装置制造方法及图纸

技术编号:28216959 阅读:26 留言:0更新日期:2021-04-28 09:30
本发明专利技术公开了适用于分库分表的在线扩容方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:从旧数据分片轮询拉取数据;判定所述数据是否要迁移到新数据分片;若是,则缓存所述数据的路由字段,并为所述数据添加第一状态的数据标识;根据缓存中各个第一状态数据的路由字段,从旧数据分片中取出各个第一状态数据写入到新数据分片中,并将缓存的各个第一状态数据的数据标识修改为第二状态。该实施方式能够在线对数据进行扩容,无需重新发布业务系统,且通用性好,能够保证数据一致性。性。性。

【技术实现步骤摘要】
适用于分库分表的在线扩容方法和装置


[0001]本专利技术涉及计算机
,尤其涉及一种适用于分库分表的在线扩容方法和装置。

技术介绍

[0002]当一个业务系统快速发展趋势下。单数据库已无法满足日益趋势的增长数据。这时需要对数据库进行拆分及分库分表。数据库在分库分表之后,随着数据量的增大,每个数据分片的数据量都是各自增长。当已有数据分片的数据量增长到了一个极限,需要增加新的数据分片。介于这种分库分表算法的离散性,必需要做数据迁移才能完成。
[0003]在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:
[0004]1)业务系统至少要两次发布;
[0005]2)要专门写工具来导数据。由于各业务系统之间的差别,很难做出统一的工具。目前几乎都是每个业务系统写一套工具;
[0006]3)要解决增量、全量、时间点,数据不一致等问题。

技术实现思路

[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]若存在、且数据标识为第一状态,则不获取所述请求数据;若存在、且数据标识为第二状态,则从新数据分片中获取所述请求数据。
[0032]根据本专利技术实施例的第三方面,提供一种适用于分库分表的在线扩容电子设备,包括:
[0033]一个或多个处理器;
[0034]存储装置,用于存储一个或多个程序,
[0035]当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本专利技术实施例第一方面提供的方法。
[0036]根据本专利技术实施例的第四方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本专利技术实施例第一方面提供的方法。
[0037]上述专利技术中的一个实施例具有如下优点或有益效果:通过封装分片路由逻辑对数据库进行水平缩放,从旧数据分片轮询拉取数据并迁移至新数据分片,能够在少量代码对接的情况下实现扩容,从而达到在线对数据进行扩容的效果,无需重新发布业务系统,通用性好,能够保证数据一致性。
[0038]上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
[0039]附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:
[0040]图1是本专利技术实施例分库分表下在线扩容的方法的主要流程的示意图;
[0041]图2是本专利技术可选实施例中适用于分库分表的在线扩容方法的应用场景示意图;
[0042]图3是根据本专利技术实施例的适用于分库分表的在线扩容装置的主要模块的示意图;
[0043]图4是本专利技术实施例可以应用于其中的示例性系统架构图;
[0044]图5是适于用来实现本专利技术实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
[0045]以下结合附图对本专利技术的示范性实施例做出说明,其中包括本专利技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0046]根据本专利技术实施例的一个方面,提供了一种适用于分库分表的在线扩容的方法。
[0047]图1是本专利技术实施例适用于分库分表的在线扩容方法的主要流程的示意图,如图1所示,适用于分库分表的在线扩容方法,包括:步骤S101、步骤S102和步骤S103。
[0048]步骤S101、从旧数据分片轮询拉取数据。
[0049]旧数据分片是指扩容前已经存在的数据分片。轮训拉取数据时,可以依次拉取旧数据分片中的所有数据,也可以根据预设的拉取规则拉取特定的数据,例如仅拉取部分旧数据分片的数据或者满足预设条件的数据。
[0050]可选地,按路由字段从旧数据分片轮询拉取数据,以提高数据拉取效率。实际应用过程中,可以采用多个并发进程进行拉取。
[0051]步骤S102、判定所述数据是否要迁移到新数据分片;若是,则缓存所述数据的路由字段,并为所述数据添加第一状态的数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种适用于分库分表的在线扩容方法,其特征在于,包括:从旧数据分片轮询拉取数据;判定所述数据是否要迁移到新数据分片;若是,则缓存所述数据的路由字段,并为所述数据添加第一状态的数据标识;根据缓存中各个第一状态数据的路由字段,从旧数据分片中取出各个第一状态数据写入到新数据分片中,并将缓存的各个第一状态数据的数据标识修改为第二状态;其中,第一状态用于标示数据被锁定,第二状态用于标示数据已写入新数据分配。2.如权利要求1所述的方法,其特征在于,按路由字段从旧数据分片轮询拉取数据。3.如权利要求1所述的方法,其特征在于,还包括:设置数据迁移路由表,所述数据迁移路由表中包括要迁移到新数据分片的数据在旧数据分片和新数据分片中的路由字段。4.如权利要求1所述的方法,其特征在于,还包括:响应于应用程序的数据请求,确定与所述数据请求对应的请求数据;查询缓存中是否存在所述请求数据的数据标识;若不存在,则从就数据分片中获取所述请求数据;若存在、且数据标识为第一状态,则不获取所述请求数据;若存在、且数据标识为第二状态,则从新数据分片中获取所述请求数据。5.一种适用于分库分表的在线扩容装置,其特征在于,包括:数据迁移模块、数据路由模块和缓存服务模块;其中,数据迁移模块从旧数据分片轮询拉取数据;数据路由模块判定所述数据是否要迁移到新数据分片;若是,则利用缓存服务模块缓存所述数据的路由字段并为所述数据添加第...

【专利技术属性】
技术研发人员:曹进保
申请(专利权)人:北京京东世纪贸易有限公司
类型:发明
国别省市:

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

1