CN114328470A - 针对单个源表的数据迁移方法及装置 - Google Patents
针对单个源表的数据迁移方法及装置 Download PDFInfo
- Publication number
- CN114328470A CN114328470A CN202210244694.8A CN202210244694A CN114328470A CN 114328470 A CN114328470 A CN 114328470A CN 202210244694 A CN202210244694 A CN 202210244694A CN 114328470 A CN114328470 A CN 114328470A
- Authority
- CN
- China
- Prior art keywords
- primary key
- task
- single source
- source table
- data migration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了针对单个源表的数据迁移方法及装置。该方法可以应用于数据迁移平台中的任务拆分线程,数据迁移平台还包括任务管道和多个执行线程,任务拆分线程用于对单个源表进行多次任务拆分,其中,在对单个源表进行某次任务拆分时,该方法包括:从单个源表的主键列中确定出当前的第一主键范围,第一主键范围在单个源表中关联的数据的条数等于目标步长;生成包括第一主键范围和表标识信息的数据迁移任务,表标识信息包括单个源表和目标表各自的表标识,目标表是有待迁入单个源表中的数据的表;将所生成的数据迁移任务传输到任务管道,以使得该多个执行线程从任务管道获取并执行与单个源表有关的数据迁移任务。
Description
技术领域
本说明书实施例涉及计算机技术领域,具体地,涉及针对单个源表的数据迁移方法及装置。
背景技术
目前,用户想要将源数据库的数据迁移到目标数据库上时,需要利用数据迁移工具进行数据迁移。在数据迁移过程中,源数据库中单张表(可称为单个源表)的数据量通常比较大,而且需要对单个源表进行全量数据迁移。
因此,迫切需要一种合理、可靠的方案,可以在对单个源表进行全量数据迁移时,提高数据迁移效率。
发明内容
本说明书实施例提供了针对单个源表的数据迁移方法及装置,可以在对单个源表进行全量数据迁移时,提高数据迁移效率。
第一方面,本说明书实施例提供了一种针对单个源表的数据迁移方法,应用于数据迁移平台中的任务拆分线程,所述数据迁移平台还包括任务管道和多个执行线程,所述任务拆分线程用于对所述单个源表进行多次任务拆分,其中,在对所述单个源表进行某次任务拆分时,所述方法包括:从所述单个源表的主键列中确定出当前的第一主键范围,所述第一主键范围在所述单个源表中关联的数据的条数等于目标步长;生成包括所述第一主键范围和表标识信息的数据迁移任务,所述表标识信息包括所述单个源表和目标表各自的表标识,所述目标表是有待迁入所述单个源表中的数据的表;将所生成的数据迁移任务传输到所述任务管道,以使得所述多个执行线程从所述任务管道获取并执行与所述单个源表有关的数据迁移任务。
在一些实施例中,所述单个源表中的数据已根据所述主键列升序排列;以及所述从所述单个源表的主键列中确定出当前的第一主键范围,包括:在所述主键列中确定当前的下界;从所述下界开始,查找所述下界下方第目标步长个主键值;响应于查找到所述第目标步长个主键值,将其确定为当前的第一上界;确定所述第一上界是否为位于所述主键列尾部的主键值;响应于确定结果为否,生成当前的第一主键范围,其包括所述下界但不包括所述第一上界。
在一些实施例中,当所述某次任务拆分是第一次任务拆分时,所述在所述主键列中确定当前的下界,包括:将位于所述主键列首部的主键值确定为所述下界。
在一些实施例中,当所述某次任务拆分不是第一次任务拆分时,所述在所述主键列中确定当前的下界,包括:将所述第一主键范围的上一主键范围的上界确定为所述下界。
在一些实施例中,所述方法还包括:响应于所述确定结果为是,生成当前的第二主键范围,其包括所述下界和所述第一上界;生成包括所述第二主键范围和所述表标识信息的数据迁移任务。
在一些实施例中,所述方法还包括:响应于未查找到所述第目标步长个主键值,将位于所述主键列尾部的主键值确定为当前的第二上界;生成当前的第三主键范围,其包括所述下界和所述第二上界;生成包括所述第三主键范围和所述表标识信息的数据迁移任务。
在一些实施例中,所述单个源表所在的源数据库支持SQL查询语句;以及所述方法还包括:根据所述主键列的列名,所述单个源表的表名,所述下界,以及所述目标步长,生成用于查找所述第目标步长个主键值的目标SQL查询语句;所述从所述下界开始,查找所述下界下方第目标步长个主键值,包括:利用所述目标SQL查询语句,查找所述第目标步长个主键值。
在一些实施例中,所述目标SQL查询语句包括WHERE子句,所述WHERE子句用于根据所述主键列的列名和所述下界限定查询的起始位置。
在一些实施例中,所述主键列为多列,所述多列包括第一主键列和第二主键列,所述第一主键列的排序优先级高于所述第二主键列,所述下界包括位于所述第一主键列首部的第一主键值,以及位于所述第二主键列首部的第二主键值;所述WHERE子句示出,所述第一主键列的第一列名大于所述第一主键值,或者所述第一列名等于所述第一主键值且所述第二主键列的第二列名大于所述第二主键值。
在一些实施例中,所述单个源表所在的源数据库支持SQL查询语句;以及所述方法还包括: 根据所述下界,更新用于查找所述上一主键范围的上界的目标SQL查询语句;所述从所述下界开始,查找所述下界下方第目标步长个主键值,包括:利用更新后的所述目标SQL查询语句,查找所述第目标步长个主键值。
在一些实施例中,当所述某次任务拆分是第一次任务拆分时,在所述从所述单个源表的主键列中确定出当前的第一主键范围之前,还包括:根据所述单个源表的元数据,确定所述单个源表的主键列。
在一些实施例中,所述任务管道具有容量上界;以及在所述将所述数据迁移任务传输到所述任务管道之后,还包括:确定所述任务管道已使用的容量是否达到所述容量上界;若确定结果为是,则暂停对所述单个源表的任务拆分;若确定结果为否,则继续对所述单个源表进行下一次任务拆分。
在一些实施例中,所述任务管道是先进先出的阻塞队列。
第二方面,本说明书实施例提供了一种适用于数据迁移平台的针对单个源表的数据迁移方法,所述数据迁移平台包括任务拆分线程,任务管道,以及多个执行线程,所述任务拆分线程用于对所述单个源表进行多次任务拆分,所述方法包括:所述任务拆分线程在对所述单个源表进行某次任务拆分时,从所述单个源表的主键列中确定出当前的第一主键范围,所述第一主键范围在所述单个源表中关联的数据的条数等于目标步长;所述任务拆分线程生成包括所述第一主键范围和表标识信息的数据迁移任务,所述表标识信息包括所述单个源表和目标表各自的表标识,所述目标表是有待迁入所述单个源表中的数据的表;所述任务拆分线程将所生成的数据迁移任务传输到所述任务管道;所述多个执行线程从所述任务管道获取与所述单个源表有关的数据迁移任务,并执行所获取的数据迁移任务。
第三方面,本说明书实施例提供了一种针对单个源表的数据迁移装置,应用于数据迁移平台中的任务拆分线程,所述数据迁移平台还包括任务管道和多个执行线程,所述任务拆分线程用于对所述单个源表进行多次任务拆分,所述装置包括:主键范围确定单元,被配置成在对所述单个源表进行某次任务拆分时,从所述单个源表的主键列中确定出当前的第一主键范围,所述第一主键范围在所述单个源表中关联的数据的条数等于目标步长;任务生成单元,被配置成生成包括所述第一主键范围和表标识信息的数据迁移任务,所述表标识信息包括所述单个源表和目标表各自的表标识,所述目标表是有待迁入所述单个源表中的数据的表;发送单元,被配置成将所生成的数据迁移任务传输到所述任务管道,以使得所述多个执行线程从所述任务管道获取并执行与所述单个源表有关的数据迁移任务。
第四方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
第五方面,本说明书实施例提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现如第一方面中任一实现方式描述的方法。
第六方面,本说明书实施例提供了一种计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
在本说明书的上述实施例提供的方案中,数据迁移平台可以包括任务拆分线程,任务管道和多个执行线程。任务拆分线程可以对单个源表进行多次任务拆分。其中,在对单个源表进行某次任务拆分时,任务拆分线程可以从单个源表的主键列中确定出当前的第一主键范围,并生成包括该第一主键范围和表标识信息的数据迁移任务,以及将该数据迁移任务传输到任务管道。可以理解的是,通过对单个源表进行多次任务拆分而获得的多个主键范围中的至少部分主键范围,例如各个第一主键范围,在单个源表中关联的数据的条数均等于目标步长,基于此,该多个主键范围相对比较均匀,因而通过对单个源表进行多次任务拆分而生成的多个数据迁移任务也相对比较均衡。
在任务拆分线程将与单个源表有关的数据迁移任务传输到任务管道后,上述多个执行线程可以从任务管道获取与单个源表有关的数据迁移任务,并且可以通过执行所获取的数据迁移任务,对单个源表进行并行数据迁移。由于上述多个数据迁移任务相对比较均衡,因而在对单个源表进行全量数据迁移时,上述多个执行线程可以均衡的对单个源表进行并行数据迁移,能有效提高数据迁移效率。
附图说明
为了更清楚地说明本说明书披露的多个实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书披露的多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本说明书的一些实施例可以应用于其中的一个示例性系统架构图;
图2是针对单个源表的数据迁移方法的一个实施例的示意图;
图3是当前的第一主键范围的确定过程的一个示意图;
图4是当主键列为单列时的主键范围确定过程的一个示意图;
图5是当主键列为多列时的主键范围确定过程的一个示意图;
图6是任务拆分过程的一个示意图;
图7是针对单个源表的数据迁移装置的一个结构示意图。
具体实施方式
下面结合附图和实施例对本说明书作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本说明书中的实施例及实施例中的特征可以相互组合。
如前所述,在数据迁移过程中,单个源表的数据量通常比较大,而且需要对单个源表进行全量数据迁移。
基于此,本说明书的一些实施例提供了针对单个源表的数据迁移方法,可以在对单个源表进行全量数据迁移时,提高数据迁移效率。具体地,图1示出了适用于这些实施例的示例性系统架构图。
如图1所示,系统架构可以包括数据迁移平台中的任务拆分线程,任务管道,以及多个执行线程。
任务拆分线程主要负责对有待迁出数据的单个源表进行多次任务拆分。其中,通过任务拆分而生成的数据迁移任务可以被传输到任务管道。上述多个执行线程可以获取并执行任务管道中的数据迁移任务。
需要说明,针对单个源表生成的数据迁移任务可以称为子任务,用于存放子任务的任务管道可以称为子任务管道,用于执行子任务的上述多个执行线程中任意的执行线程可以称为子任务执行线程。
实践中,在对单个源表进行某次任务拆分时,任务拆分线程可以如图1中所示,根据目标步长,从单个源表的主键列中确定出当前的第一主键范围。其中,第一主键范围在单个源表中关联的数据的条数等于目标步长。而后,任务拆分线程可以生成第一主键范围对应的数据迁移任务。然后,任务拆分线程可以将数据迁移任务传输到任务管道。
在任务拆分线程将与单个源表有关的数据迁移任务传输到任务管道后,上述多个执行线程可以从任务管道获取与单个源表有关的数据迁移任务,并通过执行所获取的数据迁移任务,对单个源表进行并行数据迁移。
根据任务拆分线程执行的任务拆分过程可以获知,通过对单个源表进行多次任务拆分而获得的多个主键范围中的至少部分主键范围,例如各个第一主键范围,在单个源表中关联的数据的条数均等于目标步长,基于此,该多个主键范围相对比较均匀,因而通过对单个源表进行多次任务拆分而生成的多个数据迁移任务也相对比较均衡。由于该多个数据迁移任务相对比较均衡,因而在对单个源表进行全量数据迁移时,上述多个执行线程可以均衡的对单个源表进行并行数据迁移,能有效提高数据迁移效率。
下面,结合具体的实施例,描述上述方法的具体实施步骤。
参看图2,其为针对单个源表进行数据迁移的方法的一个实施例的示意图。该方法涉及数据迁移平台,该数据迁移平台包括任务拆分线程,任务管道,以及多个执行线程。其中,任务拆分线程用于对单个源表进行多次任务拆分。该方法包括以下步骤:
步骤202,任务拆分线程在对单个源表进行某次任务拆分时,从单个源表的主键列中确定出当前的第一主键范围,第一主键范围在单个源表中关联的数据的条数等于目标步长;
步骤204,任务拆分线程生成包括第一主键范围和表标识信息的数据迁移任务,表标识信息包括单个源表和目标表各自的表标识,目标表是有待迁入单个源表中的数据的表;
步骤206,任务拆分线程将所生成的数据迁移任务传输到任务管道;
步骤208,多个执行线程从任务管道获取与单个源表有关的数据迁移任务;
步骤210,多个执行线程执行所获取的数据迁移任务。
下面,对以上各步骤做进一步说明。
在步骤202中,在对单个源表进行某次任务拆分时,任务拆分线程可以具体根据目标步长,从单个源表的主键列中确定出当前的第一主键范围。其中,目标步长例如可以为1000、10000、100000或1000000等。应该理解,目标步长可以根据实际需求设定,在此不做具体限定。
实践中,单个源表的主键列,是单个源表中的主键值所在的列,该主键列可以根据单个源表的元数据而确定。
具体地,当上述某次任务拆分是第一次任务拆分时,在步骤202之前,任务拆分线程可以根据单个源表的元数据,确定单个源表的主键列。进一步地,任务拆分线程可以根据单个源表的元数据,确定单个源表的主键,进而根据该主键确定单个源表的主键列。其中,主键可以包括一个或多个字段,因而主键列可以为单列或多列。
通常,可以根据主键列,对单个源表中的数据进行升序排列或降序排列。以升序排列为例,当主键列为单列时,可以根据该单列对单个源表中的数据进行升序排列。当主键列为多列时,可以根据该多列对单个源表中的数据进行升序排列。
在一个例子中,该多列可以预先设置有排序优先级,可以按照排序优先级由高到低的顺序,依次根据该多列中的每列对单个源表中的数据进行升序排列。在另一个例子中,可以现场确定该多列的排序优先级,例如随机确定该多列的排序优先级等,而后可以按照所确定的排序优先级由高到低的顺序,依次根据该多列中的每列对单个源表中的数据进行升序排列。
在单个源表中的数据已根据主键列升序排列的情况下,在步骤202中,任务拆分线程可以直接根据目标步长,从主键列中确定出当前的第一主键范围。在单个源表中的数据未根据主键列升序排列的情况下,在步骤202中,任务拆分线程可以先根据主键列,对单个源表中的数据进行升序排列,而后再根据目标步长,从主键列中确定出当前的第一主键范围。
具体地,当前的第一主键范围的确定过程可以如图3所示,包括以下步骤:
步骤302,在主键列中确定当前的下界;
步骤304,从下界开始,查找下界下方第目标步长个主键值;
步骤306,响应于查找到第目标步长个主键值,将其确定为当前的第一上界;
步骤308,确定第一上界是否为位于主键列尾部的主键值;
步骤310,响应于确定结果为否,生成当前的第一主键范围,其包括下界但不包括第一上界。
实践中,上述某次任务拆分可能是第一次任务拆分,也可能不是第一次任务拆分。
当上述某次任务拆分是第一次任务拆分时,在步骤302中,可以将位于主键列首部的主键值确定为当前的下界。通常,位于主键列首部的主键值可以视为单个源表的主键的下界。基于此,将位于主键列首部的主键值确定为当前的下界可以理解为,将主键的下界确定为当前的下界。
在一个实施例中,当单个源表所在的源数据库支持SQL(Structured QueryLanguage,结构化查询语言)查询语句时,在将位于主键列首部的主键值确定为当前的下界之后,可以根据主键列的列名,单个源表的表名,当前的下界,以及目标步长,生成用于查找第目标步长个主键值的目标SQL查询语句。基于此,在步骤304中,可以利用目标SQL查询语句,查找当前的下界下方第目标步长个主键值。
需要说明,目标SQL查询语句包括WHERE子句,WHERE子句用于根据主键列的列名和当前的下界限定查询的起始位置。
进一步地,当主键列为多列,该多列包括第一主键列和第二主键列,第一主键列的排序优先级高于第二主键列,当前的下界包括位于第一主键列首部的第一主键值,以及位于第二主键列首部的第二主键值时,WHERE子句可以示出,第一主键列的第一列名大于第一主键值,或者第一列名等于第一主键值且第二主键列的第二列名大于第二主键值。
可选地,目标SQL查询语句还可以包括ORDER BY子句,ORDER BY子句可以示出主键列的列名,以及与该列名对应的升序排列方式。其中,通过执行ORDER BY子句,可以根据主键列对单个源表中的数据进行升序排列。
可选地,数据迁移平台可以设置有用于查找第目标步长个主键值的SQL查询语句模板,在生成目标SQL查询语句时,可以具体根据主键列的列名,单个源表的表名,以及当前的下界,更新SQL查询语句模板,并将更新后的SQL查询语句模板作为目标SQL查询语句。
当上述某次任务拆分不是第一次任务拆分时,在步骤302中,可以将当前的第一主键范围的上一主键范围的上界确定为当前的下界。
在一个实施例中,当单个源表所在的源数据库支持SQL查询语句时,在将当前的第一主键范围的上一主键范围的上界确定为当前的下界后,可以根据当前的下界,更新用于查找上一主键范围的上界的目标SQL查询语句。具体地,可以根据当前的下界,更新目标SQL查询语句的WHERE子句,以将查询的起始位置限定为当前的下界。基于此,在步骤304中,可以利用更新后的目标SQL查询语句,查找当前的下界下方第目标步长个主键值。
在通过执行步骤304查找到当前的下界下方第目标步长个主键值之后,可以通过执行步骤306,将该第目标步长个主键值确定为当前的第一上界。
接着,在步骤308中,可以确定当前的第一上界是否为位于主键列尾部的主键值。可以理解的是,位于主键列尾部的主键值可以视为单个源表的主键的上界。因而,确定当前的第一上界是否为位于主键列尾部的主键值可以理解为,确定当前的第一上界是否到达主键的上界。
在步骤308的确定结果为否时,可以接着执行步骤310,生成当前的第一主键范围,其包括下界但不包括第一上界。
根据前文中的描述可以获知,主键列可以为单列或多列。
下面,先以主键列为单列为例,对图3对应的实施例进行举例说明。这里,假设目标步长为3,该单列如图4所示,包括的各个主键值从首部到尾部(从上到下)依次为1、2、3、4、5、6、7、8、9、10。
具体地,在上述某次任务拆分是第一次任务拆分的情况下,结合图4的图示,可以先将位于上述单列首部的主键值1确定为当前的下界。而后,可以从下界1开始,查找下界1下方第3个主键值,也即主键值4。接着,可以响应于查找到主键值4,将主键值4确定为当前的第一上界。接着,可以确定第一上界4是否为位于上述单列尾部的主键值。由于位于上述单列尾部的主键值是10,并不是4,因而,可以响应于确定结果为否,生成当前的第一主键范围,也即[1,4)。
可以理解的是,[1,4)包括其下界1但不包括第一上界4。另外,根据 [1,4)可以获知,其在单个源表中关联的数据包括,主键值1、2、3分别所在的记录,因而 [1,4)在单个源表中关联的数据的条数为3。
另外,在查找下界1下方第3个主键值之前,可以根据上述单列的列名(例如pk1),单个源表的表名(例如table1),当前的下界1,以及目标步长3,生成用于查找下界1下方第3个主键值的目标SQL查询语句。其中,目标SQL查询语句中的WHERE子句可以示出上述单列的列名大于当前的下界。
作为一个示例,目标SQL查询语句可以如下所示:
SELECT pk1 FROM table1 WHERE pk1>1 LIMIT 3,1。
其中,LIMIT子句中的3是目标步长,1用于限定返回1条查询结果。通过执行这条目标SQL查询语句,可以返回上述单列中第3个大于下界1的主键值,也即返回当前的下界1下方第3个主键值。
作为另一个示例,目标SQL查询语句可以如下所示:
SELECT pk1 FROM table1 WHERE pk1>1 ORDER BY pk1 asc LIMIT 3,1。
与上一示例中的目标SQL查询语句相比,本示例中的目标SQL查询语句多出了ORDER BY子句。其中,ORDER BY子句中的“asc”代表升序排列。通过执行该ORDER BY子句,可以根据上述单列对单个源表中的数据进行升序排列。
在生成用于查找下界1下方第3个主键值的目标SQL查询语句后,可以通过执行该目标SQL查询语句,查找下界1下方第3个主键值。
在上述某次任务拆分不是第一次任务拆分的情况下,例如上述某次任务拆分是第二次任务拆分,可以将上一主键范围的上界确定为当前的下界,例如将如前所述的 [1,4)的上界4确定为当前的下界。而后,如图4所示,可以从下界4开始,查找下界4下方第3个主键值,也即主键值7。接着,可以响应于查找到主键值7,将主键值7确定为当前的第一上界。接着,可以确定第一上界7是否为位于上述单列尾部的主键值。由于位于上述单列尾部的主键值是10,并不是7,因而,可以响应于确定结果为否,生成当前的第一主键范围,也即[4,7)。
可以理解的是,[4,7)包括其下界4但不包括第一上界7。另外,根据 [4,7)可以获知,其在单个源表中关联的数据包括,主键值4、5、6分别所在的记录,因而 [4,7)在单个源表中关联的数据的条数为3。
另外,在查找下界4下方第3个主键值之前,可以根据下界4,更新用于查找上一主键范围[1,4)的上界4的目标SQL查询语句,例如前文中通过举例示出的两条目标SQL查询语句中的任意一条语句。
以第一个举例示出的目标SQL查询语句为例,在根据下界4对该目标SQL查询语句进行更新后,更新后的目标SQL查询语句可以如下所示:
SELECT pk1 FROM table1 WHERE pk1>4 LIMIT 3,1。
在得到更新后的目标SQL查询语句后,可以利用更新后的目标SQL查询语句,查找下界4下方第3个主键值。
下面,以主键列为多列为例,对图3对应的实施例进行举例说明。这里,假设目标步长为3,该多列包括图5中位于左侧的第一主键列,以及位于右侧的第二主键列,其中,第一主键列的排序优先级高于第二主键列。
在上述某次任务拆分是第一次任务拆分的情况下,结合图5的图示,可以先将位于第一主键列首部的主键值1和位于第二主键列首部的主键值1的集合<1,1>,确定为当前的下界。而后,可以从下界<1,1>开始,查找下界<1,1>下方第3个主键值,也即第一主键列中的主键值4和第二主键列中与该主键值4对应的主键值1的集合<4,1>。接着,可以响应于查找到主键值<4,1>,将主键值<4,1>确定为当前的第一上界。接着,可以确定第一上界<4,1>是否为位于上述多列尾部的主键值。由于位于上述多列尾部的主键值是10和1的集合,也即<10,1>,并不是<4,1>,因而,可以响应于确定结果为否,生成当前的第一主键范围,也即[<1,1>,<4,1>)。
可以理解的是,[<1,1>,<4,1>)包括其下界<1,1>但不包括第一上界<4,1>。另外,根据[<1,1>,<4,1>)可以获知,其在单个源表中关联的数据包括,主键值<1,1>、<2,1>、<3,1>分别所在的记录,因而[<1,1>,<4,1>)在单个源表中关联的数据的条数为3。
另外,在查找下界<1,1>下方第3个主键值之前,可以根据上述多列的列名(例如第一主键列的列名pk1,第二主键列的列名pk2),单个源表的表名(例如table1),当前的下界<1,1>,以及目标步长3,生成用于查找下界<1,1>下方第3个主键值的目标SQL查询语句。其中,目标SQL查询语句中的WHERE子句可以示出,pk1大于1,或者pk1等于1且pk2大于1。
作为一个示例,目标SQL查询语句可以如下所示:
SELECT pk1,pk2 FROM table1 WHERE (pk1,pk2) >(1,1) LIMIT 3,1。
需要指出,(pk1,pk2) >(1,1)等价于,pk1>1 or (pk1==1 and pk2>1)。其中,“or”表示“或”、“或者”,“==”表示“等于”,“and”表示“且”、“并且”。
作为另一个示例,目标SQL查询语句可以如下所示:
SELECT pk1,pk2 FROM table1 WHERE (pk1,pk2) >(1,1) ORDER BY pk1 asc,pk2 asc LIMIT 3,1。
在生成用于查找下界<1,1>下方第3个主键值的目标SQL查询语句后,可以通过执行该目标SQL查询语句,查找下界<1,1>下方第3个主键值。
在上述某次任务拆分不是第一次任务拆分的情况下,例如上述某次任务拆分是第二次任务拆分,可以将上一主键范围的上界确定为当前的下界,例如将如前所述的[<1,1>,<4,1>)的上界<4,1>确定为当前的下界。而后,如图5所示,可以从下界<4,1>开始,查找下界<4,1>下方第3个主键值,也即第一主键列中的主键值6和第二主键列中与该主键值6对应的主键值5的集合<6,5>。接着,可以响应于查找到主键值<6,5>,将主键值<6,5>确定为当前的第一上界。接着,可以确定第一上界<6,5>是否为位于上述多列尾部的主键值。由于位于上述多列尾部的主键值是<10,1>,并不是<6,5>,因而,可以响应于确定结果为否,生成当前的第一主键范围,也即[<4,1>,<6,5>)。
可以理解的是,[<4,1>,<6,5>)包括其下界<4,1>但不包括第一上界<6,5>。另外,根据[<4,1>,<6,5>)可以获知,其在单个源表中关联的数据包括,主键值<4,1>、<5,1>、<6,4>分别所在的记录,因而[<4,1>,<6,5>)在单个源表中关联的数据的条数为3。
另外,在查找下界<4,1>下方第3个主键值之前,可以根据下界<4,1>,更新用于查找上一主键范围[<1,1>,<4,1>)的上界<4,1>的目标SQL查询语句,例如前文中针对上述多列举例示出的两条目标SQL查询语句中的任意一条语句。
以针对上述多列第一个举例示出的目标SQL查询语句为例,在根据下界<4,1>对该目标SQL查询语句进行更新后,更新后的目标SQL查询语句可以如下所示:
SELECT pk1,pk2 FROM table1 WHERE (pk1,pk2) >(4,1) LIMIT 3,1。
在得到更新后的目标SQL查询语句后,可以利用更新后的目标SQL查询语句,查找下界<4,1>下方第3个主键值。
继续参看图2对应的实施例,在通过执行步骤202确定出当前的第一主键范围后,任务拆分线程可以通过执行步骤204,生成包括第一主键范围和表标识信息的数据迁移任务。其中,表标识信息可以包括单个源表和目标表各自的表标识。目标表是有待迁入单个源表中的数据的表。可选地,该数据迁移任务还可以包括,单个源表所在的源数据库的标识,以及目标表所在的目标数据库的标识,等等。
接着,在步骤206中,任务拆分线程可以将所生成的数据迁移任务传输到任务管道。其中,任务管道例如可以是先进先出的阻塞队列等,而且任务管道可以具有容量上界。
在一个实施例中,在任务管道具有容量上界的情况下,当任务拆分线程将所生成的包括第一主键范围的数据迁移任务传输到任务管道后,任务拆分线程可以确定任务管道已使用的容量是否达到容量上界。若确定结果为是,则任务拆分线程可以暂停对单个源表的任务拆分,直至任务管道已使用的容量小于容量上界。若确定结果为否,则任务拆分线程可以继续对单个源表进行下一次任务拆分。
当与单个源表有关的数据迁移任务被传输到任务管道后,上述多个执行线程可以通过执行步骤208,从任务管道获取与单个源表有关的数据迁移任务。应该理解,上述多个执行线程获取与单个源表有关的不同的数据迁移任务。
需要说明,当任务管道是先进先出的阻塞队列时,上述多个执行线程可以串行的从该阻塞队列获取数据迁移任务,例如一个执行线程从该阻塞队列取出一个数据迁移任务后,另一个执行线程再从该阻塞队列取出一个数据迁移任务。
接着,在步骤210中,上述多个执行线程可以并行执行所获取的数据迁移任务,以将单个源表中与该数据迁移任务中的主键范围有关的数据迁移到目标表。
在图2对应的实施例提供的方案中,任务拆分线程通过对单个源表进行多次任务拆分而获得的多个主键范围中的至少部分主键范围,例如各个第一主键范围,在单个源表中关联的数据的条数均等于目标步长,基于此,该多个主键范围相对比较均匀,因而通过对单个源表进行多次任务拆分而生成的多个数据迁移任务也相对比较均衡。由于该多个数据迁移任务相对比较均衡,因而在对单个源表进行全量数据迁移时,上述多个执行线程可以均衡的对单个源表进行并行数据迁移,能有效提高数据迁移效率。
另外,现有技术中,对单个源表进行数据迁移,通常需要用户指定拆分键(用于划分范围的字段)。而本说明书实施例提供的方案,能自动根据单个源表的主键列进行主键范围划分,无需用户指定拆分键,与现有技术相比,能节省用户的操作成本。
此外,通过根据目标步长对主键列进行范围划分,能使得所生成的数据迁移任务相对比较均衡,而且此种划分方式能适用于各种类型的主键,具有较高的通用性。
实践中,本说明书实施例提供的方案中的任务拆分线程,其执行的任务拆分过程除了包括前文中描述的步骤外,还可以包括其他步骤。
具体地,参看图6,其为任务拆分过程的一个示意图。该任务拆分过程包括以下步骤:
步骤602,在主键列中确定当前的下界;
步骤604,从下界开始,查找下界下方第目标步长个主键值;
步骤606,响应于查找到第目标步长个主键值,将其确定为当前的第一上界;
步骤608,确定第一上界是否为位于主键列尾部的主键值;
步骤610,响应于确定结果为否,生成当前的第一主键范围,其包括下界但不包括第一上界;
步骤612,响应于确定结果为是,生成当前的第二主键范围,其包括下界和第一上界;
步骤614,响应于未查找到第目标步长个主键值,将位于主键列尾部的主键值确定为当前的第二上界;
步骤616,生成当前的第三主键范围,其包括下界和第二上界;
步骤618,生成数据迁移任务;
步骤620,将所生成的数据迁移任务传输到任务管道。
关于步骤602-610的解释,可参看图3对应实施例的相关说明,在此不再赘述。
在步骤612中,可以响应于步骤608的确定结果为是,生成当前的第二主键范围,其包括下界和第一上界。
以主键列为如图4中示出的单列为例,假设当前的下界为7,当前的第一上界为位于该单列尾部的主键值10,可以生成当前的第二主键范围[7,10]。应该理解,[7,10]包括下界7和第一上界10。
再以主键列为如图5中示出的多列为例,假设当前的下界为<6,5>,当前的第一上界为位于该多列尾部的主键值<10,1>,可以生成当前的第二主键范围[<6,5>,<10,1>]。应该理解,[<6,5>,<10,1>]包括下界<6,5>和第一上界<10,1>。
需要说明,由于当前的第一上界已到达主键的上界,而且位于当前的下界和第一上界内的各个主键值(包括当前的下界和第一上界)所在的记录的条数与目标步长比较接近,例如比目标步长多1,因而可以根据当前的下界和第一上界生成一个主键范围,也即当前的第二主键范围。
在步骤614中,可以响应于步骤604未查找到第目标步长个主键值,将位于主键列尾部的主键值确定为当前的第二上界。接着,在步骤616中,可以生成当前的第三主键范围,其包括下界和第二上界。应该理解,当前的第三主键范围在单个源表中关联的数据的条数等于或小于目标步长。
在执行完步骤610、612、616中的任一步骤后,可以接着执行步骤618,生成数据迁移任务。
例如,若执行完步骤610,则可以接着执行步骤618,生成包括当前的第一主键范围和表标识信息的数据迁移任务。其中,表标识信息包括单个源表和目标表各自的表标识,目标表是有待迁入单个源表中的数据的表。若执行完步骤612,则可以接着执行步骤618,生成包括当前的第二主键范围和表标识信息的数据迁移任务。若执行完步骤616,则可以接着执行步骤618,生成包括当前的第三主键范围和表标识信息的数据迁移任务。
在执行完步骤618后,可以接着执行步骤620,将在步骤618中生成的数据迁移任务传输到任务管道。
应该理解,任务拆分线程对单个源表进行的多次任务拆分的任务拆分过程,均可以包括图6示出的各个步骤,其中的若干个步骤可能会因满足条件而被执行,另外若干个步骤可能会因不满足条件而不被执行。
另外,通过执行图6对应的实施例描述的任务拆分过程,对单个源表进行多次任务拆分,可以针对单个源表生成多个相对比较均衡的数据迁移任务,这样在对单个源表进行全量数据迁移时,如前所述的多个执行线程可以从任务管道获取到与单个源表有关的数据迁移任务,并且可以通过执行所获取的数据迁移任务,均衡的对单个源表进行并行数据迁移,能有效提高数据迁移效率。
进一步参考图7,本说明书提供了一种针对单个源表的数据迁移装置的一个实施例,该装置可以应用于如图1所示的任务拆分线程。其中,任务拆分线程用于对单个源表进行多次任务拆分。数据迁移平台还包括任务管道和多个执行线程。
如图7所示,本实施例的针对单个源表的数据迁移装置700包括:主键范围确定单元701、任务生成单元702和发送单元703。其中,主键范围确定单元701被配置成在对单个源表进行某次任务拆分时,从单个源表的主键列中确定出当前的第一主键范围,第一主键范围在单个源表中关联的数据的条数等于目标步长;任务生成单元702被配置成生成包括第一主键范围和表标识信息的数据迁移任务,表标识信息包括单个源表和目标表各自的表标识,目标表是有待迁入单个源表中的数据的表;发送单元703被配置成将所生成的数据迁移任务传输到任务管道,以使得上述多个执行线程从任务管道获取并执行与单个源表有关的数据迁移任务。
在一些实施例中,单个源表中的数据已根据主键列升序排列;以及主键范围确定单元701可以进一步被配置成:在主键列中确定当前的下界;从下界开始,查找下界下方第目标步长个主键值;响应于查找到第目标步长个主键值,将其确定为当前的第一上界;确定第一上界是否为位于主键列尾部的主键值;响应于确定结果为否,生成当前的第一主键范围,其包括下界但不包括第一上界。
在一些实施例中,当上述某次任务拆分是第一次任务拆分时,主键范围确定单元701可以进一步被配置成:将位于主键列首部的主键值确定为当前的下界。
在一些实施例中,当上述某次任务拆分不是第一次任务拆分时,主键范围确定单元701可以进一步被配置成:将当前的第一主键范围的上一主键范围的上界确定为当前的下界。
在一些实施例中,主键范围确定单元701还可以被配置成:响应于确定结果为是,生成当前的第二主键范围,其包括下界和第一上界;任务生成单元702还可以被配置成:生成包括第二主键范围和表标识信息的数据迁移任务。
在一些实施例中,主键范围确定单元701还可以被配置成:响应于未查找到第目标步长个主键值,将位于主键列尾部的主键值确定为当前的第二上界;生成当前的第三主键范围,其包括下界和第二上界;任务生成单元702还可以被配置成:生成包括第三主键范围和表标识信息的数据迁移任务。
在一些实施例中,单个源表所在的源数据库支持SQL查询语句;以及上述装置700还可以包括:查询语句生成单元(图中未示出),被配置成根据主键列的列名,单个源表的表名,当前的下界,以及目标步长,生成用于查找第目标步长个主键值的目标SQL查询语句;主键范围确定单元701可以进一步被配置成:利用目标SQL查询语句,查找当前的下界下方第目标步长个主键值。
在一些实施例中,目标SQL查询语句包括WHERE子句,WHERE子句用于根据主键列的列名和当前的下界限定查询的起始位置。
在一些实施例中,主键列为多列,该多列包括第一主键列和第二主键列,第一主键列的排序优先级高于第二主键列,当前的下界包括位于第一主键列首部的第一主键值,以及位于第二主键列首部的第二主键值;WHERE子句示出,第一主键列的第一列名大于第一主键值,或者第一列名等于第一主键值且第二主键列的第二列名大于第二主键值。
在一些实施例中,单个源表所在的源数据库支持SQL查询语句;以及上述装置700还可以包括:查询语句更新单元(图中未示出),被配置成根据当前的下界,更新用于查找上述上一主键范围的上界的目标SQL查询语句;主键范围确定单元701可以进一步被配置成:利用更新后的目标SQL查询语句,查找当前的下界下方第目标步长个主键值。
在一些实施例中,上述装置700还可以包括:主键列确定单元(图中未示出),被配置成当上述某次任务拆分是第一次任务拆分时,在主键范围确定单元701从单个源表的主键列中确定出当前的第一主键范围之前,根据单个源表的元数据,确定单个源表的主键列。
在一些实施例中,任务管道具有容量上界;以及上述装置700还可以包括:任务拆分控制单元(图中未示出),被配置成在发送单元703将包括当前的第一主键范围的数据迁移任务传输到任务管道之后,确定任务管道已使用的容量是否达到容量上界;若确定结果为是,则暂停对单个源表的任务拆分;若确定结果为否,则继续对单个源表进行下一次任务拆分。
在一些实施例中,任务管道可以是先进先出的阻塞队列。
在图7对应的装置实施例中,各单元的具体处理及其带来的技术效果可参考前文中方法实施例的相关说明,在此不再赘述。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令计算机执行以上各方法实施例分别描述的针对单个源表的数据迁移方法。
本说明书实施例还提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现以上各方法实施例分别描述的针对单个源表的数据迁移方法。
本说明书实施例还提供了一种计算机程序,其中,当该计算机程序在计算机中执行时,令计算机执行以上各方法实施例分别描述的针对单个源表的数据迁移方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书披露的多个实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本说明书披露的多个实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书披露的多个实施例的具体实施方式而已,并不用于限定本说明书披露的多个实施例的保护范围,凡在本说明书披露的多个实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书披露的多个实施例的保护范围之内。
Claims (18)
1.一种针对单个源表的数据迁移方法,应用于数据迁移平台中的任务拆分线程,所述数据迁移平台还包括任务管道和多个执行线程,所述任务拆分线程用于对所述单个源表进行多次任务拆分,其中,在对所述单个源表进行某次任务拆分时,所述方法包括:
从所述单个源表的主键列中确定出当前的第一主键范围,所述第一主键范围在所述单个源表中关联的数据的条数等于目标步长;
生成包括所述第一主键范围和表标识信息的数据迁移任务,所述表标识信息包括所述单个源表和目标表各自的表标识,所述目标表是有待迁入所述单个源表中的数据的表;
将所生成的数据迁移任务传输到所述任务管道,以使得所述多个执行线程从所述任务管道获取并执行与所述单个源表有关的数据迁移任务。
2.根据权利要求1所述的方法,其中,所述单个源表中的数据已根据所述主键列升序排列;以及
所述从所述单个源表的主键列中确定出当前的第一主键范围,包括:
在所述主键列中确定当前的下界;
从所述下界开始,查找所述下界下方第目标步长个主键值;
响应于查找到所述第目标步长个主键值,将其确定为当前的第一上界;
确定所述第一上界是否为位于所述主键列尾部的主键值;
响应于确定结果为否,生成当前的第一主键范围,其包括所述下界但不包括所述第一上界。
3.根据权利要求2所述的方法,其中,当所述某次任务拆分是第一次任务拆分时,所述在所述主键列中确定当前的下界,包括:
将位于所述主键列首部的主键值确定为所述下界。
4.根据权利要求2所述的方法,其中,当所述某次任务拆分不是第一次任务拆分时,所述在所述主键列中确定当前的下界,包括:
将所述第一主键范围的上一主键范围的上界确定为所述下界。
5.根据权利要求2所述的方法,还包括:
响应于所述确定结果为是,生成当前的第二主键范围,其包括所述下界和所述第一上界;
生成包括所述第二主键范围和所述表标识信息的数据迁移任务。
6.根据权利要求2-5之一所述的方法,还包括:
响应于未查找到所述第目标步长个主键值,将位于所述主键列尾部的主键值确定为当前的第二上界;
生成当前的第三主键范围,其包括所述下界和所述第二上界;
生成包括所述第三主键范围和所述表标识信息的数据迁移任务。
7.根据权利要求3所述的方法,其中,所述单个源表所在的源数据库支持SQL查询语句;以及
所述方法还包括:
根据所述主键列的列名,所述单个源表的表名,所述下界,以及所述目标步长,生成用于查找所述第目标步长个主键值的目标SQL查询语句;
所述从所述下界开始,查找所述下界下方第目标步长个主键值,包括:
利用所述目标SQL查询语句,查找所述第目标步长个主键值。
8.根据权利要求7所述的方法,其中,所述目标SQL查询语句包括WHERE子句,所述WHERE子句用于根据所述主键列的列名和所述下界限定查询的起始位置。
9.根据权利要求8所述的方法,其中,
所述主键列为多列,所述多列包括第一主键列和第二主键列,所述第一主键列的排序优先级高于所述第二主键列,所述下界包括位于所述第一主键列首部的第一主键值,以及位于所述第二主键列首部的第二主键值;
所述WHERE子句示出,所述第一主键列的第一列名大于所述第一主键值,或者所述第一列名等于所述第一主键值且所述第二主键列的第二列名大于所述第二主键值。
10.根据权利要求4所述的方法,其中,所述单个源表所在的源数据库支持SQL查询语句;以及
所述方法还包括:
根据所述下界,更新用于查找所述上一主键范围的上界的目标SQL查询语句;
所述从所述下界开始,查找所述下界下方第目标步长个主键值,包括:
利用更新后的所述目标SQL查询语句,查找所述第目标步长个主键值。
11.根据权利要求1所述的方法,其中,当所述某次任务拆分是第一次任务拆分时,在所述从所述单个源表的主键列中确定出当前的第一主键范围之前,还包括:
根据所述单个源表的元数据,确定所述单个源表的主键列。
12.根据权利要求1所述的方法,其中,所述任务管道具有容量上界;以及
在所述将所生成的数据迁移任务传输到所述任务管道之后,还包括:
确定所述任务管道已使用的容量是否达到所述容量上界;
若确定结果为是,则暂停对所述单个源表的任务拆分;
若确定结果为否,则继续对所述单个源表进行下一次任务拆分。
13.根据权利要求1-5、7-12之一所述的方法,其中,所述任务管道是先进先出的阻塞队列。
14.一种适用于数据迁移平台的针对单个源表的数据迁移方法,所述数据迁移平台包括任务拆分线程,任务管道,以及多个执行线程,所述任务拆分线程用于对所述单个源表进行多次任务拆分,所述方法包括:
所述任务拆分线程在对所述单个源表进行某次任务拆分时,从所述单个源表的主键列中确定出当前的第一主键范围,所述第一主键范围在所述单个源表中关联的数据的条数等于目标步长;
所述任务拆分线程生成包括所述第一主键范围和表标识信息的数据迁移任务,所述表标识信息包括所述单个源表和目标表各自的表标识,所述目标表是有待迁入所述单个源表中的数据的表;
所述任务拆分线程将所生成的数据迁移任务传输到所述任务管道;
所述多个执行线程从所述任务管道获取与所述单个源表有关的数据迁移任务,并执行所获取的数据迁移任务。
15.一种针对单个源表的数据迁移装置,应用于数据迁移平台中的任务拆分线程,所述数据迁移平台还包括任务管道和多个执行线程,所述任务拆分线程用于对所述单个源表进行多次任务拆分,所述装置包括:
主键范围确定单元,被配置成在对所述单个源表进行某次任务拆分时,从所述单个源表的主键列中确定出当前的第一主键范围,所述第一主键范围在所述单个源表中关联的数据的条数等于目标步长;
任务生成单元,被配置成生成包括所述第一主键范围和表标识信息的数据迁移任务,所述表标识信息包括所述单个源表和目标表各自的表标识,所述目标表是有待迁入所述单个源表中的数据的表;
发送单元,被配置成将所生成的数据迁移任务传输到所述任务管道,以使得所述多个执行线程从所述任务管道获取并执行与所述单个源表有关的数据迁移任务。
16.一种计算机可读存储介质,其上存储有计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-13中任一项所述的方法。
17.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-13中任一项所述的方法。
18.一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210244694.8A CN114328470B (zh) | 2022-03-14 | 2022-03-14 | 针对单个源表的数据迁移方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210244694.8A CN114328470B (zh) | 2022-03-14 | 2022-03-14 | 针对单个源表的数据迁移方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114328470A true CN114328470A (zh) | 2022-04-12 |
CN114328470B CN114328470B (zh) | 2023-06-09 |
Family
ID=81033921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210244694.8A Active CN114328470B (zh) | 2022-03-14 | 2022-03-14 | 针对单个源表的数据迁移方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328470B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185929A (zh) * | 2022-09-06 | 2022-10-14 | 北京奥星贝斯科技有限公司 | 数据关联迁移方法及装置 |
CN116150179A (zh) * | 2023-04-14 | 2023-05-23 | 天津南大通用数据技术股份有限公司 | 一种数据库间的数据一致性比对方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140279914A1 (en) * | 2013-03-15 | 2014-09-18 | International Business Machines Corporation | Data Migration in a Database Management System |
US20170024382A1 (en) * | 2015-07-20 | 2017-01-26 | International Business Machines Corporation | Data migration and table manipulation in a database management system |
CN110597618A (zh) * | 2019-07-26 | 2019-12-20 | 苏宁云计算有限公司 | 一种数据交换系统的任务拆分方法及装置 |
CN112583864A (zh) * | 2019-09-27 | 2021-03-30 | 中国移动通信集团广东有限公司 | 一种数据迁移方法及装置 |
CN113778982A (zh) * | 2021-03-09 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种数据迁移方法和装置 |
CN114153813A (zh) * | 2021-10-25 | 2022-03-08 | 中国农业银行股份有限公司福建省分行 | 数据库间大数据表批量迁移的方法、系统、设备和介质 |
-
2022
- 2022-03-14 CN CN202210244694.8A patent/CN114328470B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140279914A1 (en) * | 2013-03-15 | 2014-09-18 | International Business Machines Corporation | Data Migration in a Database Management System |
US20170024382A1 (en) * | 2015-07-20 | 2017-01-26 | International Business Machines Corporation | Data migration and table manipulation in a database management system |
CN110597618A (zh) * | 2019-07-26 | 2019-12-20 | 苏宁云计算有限公司 | 一种数据交换系统的任务拆分方法及装置 |
CN112583864A (zh) * | 2019-09-27 | 2021-03-30 | 中国移动通信集团广东有限公司 | 一种数据迁移方法及装置 |
CN113778982A (zh) * | 2021-03-09 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种数据迁移方法和装置 |
CN114153813A (zh) * | 2021-10-25 | 2022-03-08 | 中国农业银行股份有限公司福建省分行 | 数据库间大数据表批量迁移的方法、系统、设备和介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185929A (zh) * | 2022-09-06 | 2022-10-14 | 北京奥星贝斯科技有限公司 | 数据关联迁移方法及装置 |
CN116150179A (zh) * | 2023-04-14 | 2023-05-23 | 天津南大通用数据技术股份有限公司 | 一种数据库间的数据一致性比对方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114328470B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831758B2 (en) | Partitioning and repartitioning for data parallel operations | |
US8510316B2 (en) | Database processing system and method | |
CN114328470B (zh) | 针对单个源表的数据迁移方法及装置 | |
US5822747A (en) | System and method for optimizing database queries | |
US8631416B2 (en) | Parallelizing scheduler for database commands | |
US20060074858A1 (en) | Method and apparatus for querying relational databases | |
KR20170023022A (ko) | 코드 추천 기법 | |
US20130198231A1 (en) | Distributed query cache in a database system | |
US20180129661A1 (en) | Hash table structure for optimizing hash join operations in a relational database system | |
JP5730386B2 (ja) | 計算機システム及び並列分散処理方法 | |
US20100131517A1 (en) | System and method for ranking and grouping results of code searches | |
CN110675255B (zh) | 在区块链中并发执行交易的方法和装置 | |
WO2013032436A1 (en) | Parallel operation on b+ trees | |
EP1349082A1 (en) | Method and apparatus for querying relational databases | |
CN107818181A (zh) | 基于Plcient交互式引擎的索引方法及其系统 | |
JP2008165622A (ja) | マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム | |
US20220043821A1 (en) | Method for performing multi-caching on data sources of same type and different types by using cluster-based processing system and device using the same | |
CN113032450A (zh) | 一种数据存储与检索方法、系统、存储介质、处理终端 | |
Mrozek et al. | P3D-SQL: Extending Oracle PL/SQL capabilities towards 3D protein structure similarity searching | |
RU2656721C1 (ru) | Способ организации хранения частично совпадающих больших объектов | |
US10642876B1 (en) | Query processing pipeline for semi-structured and unstructured data | |
JP2000250921A (ja) | データベースの管理方法およびシステム | |
CN115185929A (zh) | 数据关联迁移方法及装置 | |
Zhou et al. | Toward a dynamic programming solution for the 4-peg Tower of Hanoi problem with configurations | |
CN117216800A (zh) | 面向大批量病历数据的去隐私处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |