CN115185929A - 数据关联迁移方法及装置 - Google Patents

数据关联迁移方法及装置 Download PDF

Info

Publication number
CN115185929A
CN115185929A CN202211081489.0A CN202211081489A CN115185929A CN 115185929 A CN115185929 A CN 115185929A CN 202211081489 A CN202211081489 A CN 202211081489A CN 115185929 A CN115185929 A CN 115185929A
Authority
CN
China
Prior art keywords
data
target
source
source table
data rows
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.)
Pending
Application number
CN202211081489.0A
Other languages
English (en)
Inventor
蔡飞志
余晟隽
庄明强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202211081489.0A priority Critical patent/CN115185929A/zh
Publication of CN115185929A publication Critical patent/CN115185929A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供了数据关联迁移方法及装置,该方法的一具体实施方式包括:从源数据库内的第一源表中获取待迁移的若干第一数据行;第一源表具有目标外键,目标外键为源数据库内第二源表的主键;基于该若干第一数据行分别包括的目标外键的键值,从第二源表中获取若干第二数据行;将该若干第一数据行和该若干第二数据行插入同一数据迁移事务。

Description

数据关联迁移方法及装置
技术领域
本说明书实施例涉及数据库技术领域,具体地,涉及数据关联迁移方法及装置。
背景技术
现有的数据库通常存放有大量的数据,该数据可以包括隐私数据。数据库的数据量通常会随着时间的增长而不断增加,随着数据量的增加数据库的性能会受到一定的影响,并且数据库的容量也容易成为瓶颈。
因此,迫切需要一种合理、可靠的方案,能针对数据库进行有效的数据迁移,并且尽可能的降低数据迁移带来的业务风险。
发明内容
本说明书实施例提供了数据关联迁移方法及装置,能针对数据库进行有效的数据迁移,并且尽可能的降低数据迁移带来的业务风险。
第一方面,本说明书实施例提供了一种数据关联迁移方法,包括:从源数据库内的第一源表中获取待迁移的若干第一数据行;所述第一源表具有目标外键,所述目标外键为所述源数据库内第二源表的主键;基于所述若干第一数据行分别包括的所述目标外键的键值,从所述第二源表中获取若干第二数据行;将所述若干第一数据行和所述若干第二数据行插入同一数据迁移事务。
在一些实施例中,所述第一源表中的各数据行均包括数据状态;以及所述从源数据库内的第一源表中获取待迁移的若干第一数据行,包括:从所述第一源表中获取数据状态满足预设的迁移条件的若干第一数据行。
在一些实施例中,所述从源数据库内的第一源表中获取待迁移的若干第一数据行,包括:扫描所述第一源表中关联于目标主键范围的多个数据行,从而获取到所述若干第一数据行;所述目标主键范围基于目标步长在所述第一源表的主键列中确定出。
在一些实施例中,所述方法还包括:接收针对所述第一源表的扫描任务;基于所述目标步长,将所述主键列拆分为多个主键范围;生成多个扫描子任务,所述多个扫描子任务包括所述多个主键范围中不同的主键范围;所述扫描所述第一源表中关联于目标主键范围的多个数据行,包括:通过执行所述多个扫描子任务中任意的扫描子任务,扫描所述第一源表中关联于目标主键范围的多个数据行;所述目标主键范围为该扫描子任务包括的主键范围。
在一些实施例中,所述多个扫描子任务并行执行。
在一些实施例中,所述扫描任务和所述多个扫描子任务均包括所述目标外键。
在一些实施例中,在从所述第二源表中获取若干第二数据行之前,还包括:提取并缓存所述若干第一数据行中所述目标外键的键值。
在一些实施例中,所述第一源表为所述第二源表的父表,所述第二源表为所述第一源表的子表;以及所述方法还包括:将所述若干第一数据行归入父表行组;将所述若干第二数据行归入子表行组;所述将所述若干第一数据行和所述若干第二数据行插入同一数据迁移事务,包括:将所述父表行组和所述子表行组插入同一数据迁移事务。
在一些实施例中,所述目标外键包括多个外键,所述第二源表包括多个表。
在一些实施例中,所述方法还包括:执行所述数据迁移事务,以将所述若干第一数据行迁移到目标数据库中对应于所述第一源表的第一目标表,以及将所述若干第二数据行迁移到目标数据库中对应于所述第二源表的第二目标表。
在一些实施例中,所述源数据库为在线库,所述目标数据库为历史库。
第二方面,本说明书实施例提供了一种数据关联迁移装置,包括:第一获取单元,被配置成从源数据库内的第一源表中获取待迁移的若干第一数据行;所述第一源表具有目标外键,所述目标外键为所述源数据库内第二源表的主键;第二获取单元,被配置成基于所述若干第一数据行分别包括的所述目标外键的键值,从所述第二源表中获取若干第二数据行;处理单元,被配置成将所述若干第一数据行和所述若干第二数据行插入同一数据迁移事务。
第三方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
第四方面,本说明书实施例提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现如第一方面中任一实现方式描述的方法。
第五方面,本说明书实施例提供了一种计算机程序,其中,当该计算机程序在计算机中执行时,令该计算机执行如第一方面中任一实现方式描述的方法。
本说明书的上述实施例提供的方案涉及第一源表和第二源表,由于第二源表的主键作为第一源表的外键,因而第一源表可称为第二源表的父表,第二源表可称为第一源表的子表。在该方案中,通过将父表待迁移的若干第一数据行和子表中关联于该若干第一数据行的若干第二数据行插入同一数据迁移事务,能利用事务语义,保证父表和子表的迁移原子性,使得父表和子表同时迁移,这样可以避免因出现目标数据库(用于迁入源数据库的数据的数据库)有父表中的第一数据行但查不到该第一数据行在子表中对应的第二数据行,或者有子表中的第二数据行但查不到该第二数据行在父表中对应的第一数据行的问题,而导致业务逻辑混乱。由此,能针对源数据库进行有效的数据迁移,并且尽可能的降低数据迁移带来的业务风险。
附图说明
为了更清楚地说明本说明书披露的多个实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书披露的多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本说明书的一些实施例可以应用于其中的一个示例性系统架构图;
图2是数据关联迁移方法的一个实施例的流程图;
图3是数据关联迁移的处理过程的一个示意图;
图4是数据关联迁移方法的一个实施例的流程图;
图5是数据关联迁移装置的一个结构示意图。
具体实施方式
下面结合附图和实施例对本说明书作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本说明书中的实施例及实施例中的特征可以相互组合。
如前所述,数据库的数据量通常会随着时间的增长而不断增加,随着数据量的增加数据库的性能会受到一定的影响,并且数据库的容量也容易成为瓶颈。
基于此,本说明书的一些实施例提供了数据关联迁移方法,能针对数据库进行有效的数据迁移,并且尽可能的降低数据迁移带来的业务风险。
参看图1,其示出了适用于本说明书的一些实施例的示例性系统架构图。如图1所示,系统架构可以包括源数据库、目标数据库和数据迁移系统(也可称为数据迁移平台)。其中,源数据库是需要迁出数据的数据库,目标数据库是需要迁入数据的数据库。数据迁移系统可以用于将源数据库中的数据迁移到目标数据库。
在一个例子中,源数据库可以为在线库,目标数据库可以为历史库。在线库可以提供正常的读写服务。历史库通常存放不常访问的数据(如冷数据),只提供读服务。
实践中,源数据库可以包括多个数据表,该多个数据表均可以称为源表。源数据库中可以存在具有父子关系的多个源表。例如,该多个源表中的某个源表(可称为第一源表)具有若干外键,该若干外键是该多个源表中其他源表(可称为第二源表)的主键,第一源表可称为第二源表的父表,第二源表可称为第一源表的子表。需要指出,第二源表可以为一个或多个表。通常,一个父表可以拥有一个或多个子表。
如图1所示,源数据库包括交易表A和交易信息表B。交易表A的主键为交易号,交易表A中的交易号1、交易号2和交易号3,均为交易表A的主键的键值。交易信息表B的主键为信息号,交易信息表B中的信息号1、信息号2和信息号3,均为交易信息表B的主键的键值。其中,信息号为交易表A的外键,交易表A可称为交易信息表B的父表,交易信息表B可称为交易表A的子表。
交易表A的数据行除了包括主键值和外键值外,还可以包括其他字段的字段值,该其他字段包括但不限于数据状态。其中,数据状态可以细分为已完结、处理中、新建等。在交易表A中,数据状态为已完结的数据行,可以作为待迁移的数据行。
需要说明,为了便于描述,在图1中仅示出了源数据库包括交易表A和交易信息表B。应该理解,源数据库可以包括更多的源表。另外,交易表A和交易信息表B仅是示例性数据表,该数据表中的内容是示例性内容,不起任何限定作用。
目标数据库可以包括对应于交易表A的交易表A',以及对应于交易信息表B的交易信息表B'。交易表A'可以用于存放从交易表A迁出的数据行。交易信息表B'可以用于存放从交易信息表B迁出的数据行。
根据图1的图示,可以看出,交易表A中交易号1和交易号3分别所在的数据行的数据状态均为已完结,这两个数据行均可以作为待迁移的数据行。数据迁移系统可以如标号102所示,从交易表A中获取这两个数据行。在获取到这两个数据行后,可以如标号104所示,根据这两个数据行的外键值,也即信息号1和信息号3,从交易信息表B获取信息号1和信息号3分别所在的数据行。之后,数据迁移系统可以如标号106所示,将本次从交易表A和交易信息表B分别获取的数据行插入同一数据迁移事务C。
在数据迁移事务C生效后,数据迁移系统可以如标号108所示,执行数据迁移任务C,以将交易表A中交易号1和交易号3分别所在的数据行迁移到交易表A',以及将交易信息表B中信息号1和信息号3分别所在的数据行迁移到交易信息表B'。
以上描述的数据关联迁移过程,通过将交易表A中交易号1和交易号3分别所在的数据行,以及交易信息表B中信息号1和信息号3分别所在的数据行,插入同一数据迁移任务C,能利用事务语义,保证交易表A和交易信息表B的迁移原子性,使得交易表A和交易信息表B同时迁移。这样,可以避免因出现目标数据库有交易号但查不到交易信息,或者有交易信息但没有相对应的交易号的问题,而导致业务逻辑混乱。由此,能针对源数据库进行有效的数据迁移,并且尽可能的降低数据迁移带来的业务风险。
下面,结合具体的实施例,描述上述方法的具体实施步骤。
参看图2,其示出了数据关联迁移方法的一个实施例的流程200。该方法的执行主体可以为图1所示的数据迁移系统。该方法包括以下步骤:
步骤202,从源数据库内的第一源表中获取待迁移的若干第一数据行;第一源表具有目标外键,目标外键为源数据库内第二源表的主键;
步骤204,基于上述若干第一数据行分别包括的目标外键的键值,从第二源表中获取若干第二数据行;
步骤206,将上述若干第一数据行和上述若干第二数据行插入同一数据迁移事务。
在本实施例中,可以响应于接收到针对第一源表的扫描任务,而执行步骤202-206。其中,该扫描任务可以是人为触发的,也可以是自动触发的,在此不做具体限定。
第一源表可以是具有若干外键的数据表。如前所述的目标外键,可以是第一源表的全部外键或部分外键。在一个例子中,目标外键可以是针对第一源表指定的外键,例如目标外键可以包含在针对第一源表的扫描任务中。其中,当扫描任务由人为触发时,包含在扫描任务中的目标外键,可以理解为用户指定的外键。
源数据库中可以包括以目标外键为主键的源表。为了便于描述,可以将该源表称为第二源表。其中,第一源表和第二源表因目标外键而具有父子关系,第一源表可称为第二源表的父表,第二源表可称为第一源表的子表。目标外键可以包括一个或多个外键,相应的,第二源表可以包括一个或多个表。可以理解的是,一个父表可以拥有一个或多个子表。
在步骤202中,可以从第一源表中获取待迁移的若干数据行。作为示例,可以扫描第一源表的全部数据行,从而获取到待迁移的若干数据行。为了便于描述,可以将该若干数据行称为若干第一数据行。该若干第一数据行例如可以满足预设的迁移条件。
在一个例子中,预设的迁移条件可以与数据写入时间有关,例如迁移条件可以为数据写入时间早于预设时间。基于此,可以从第一源表中获取数据写入时间满足预设的迁移条件的若干第一数据行。
在另一个例子中,第一源表中的各数据行可以均包括数据状态。数据状态例如可以细分为已完结、处理中、新建等。预设的迁移条件可以与数据状态有关,例如迁移条件可以为数据状态为目标状态(如已完结)。基于此,可以从第一源表中获取数据状态满足预设的迁移条件的若干第一数据行。
需要说明,为了避免在迁移过程中对父表多次扫描,例如避免在扫描子表时再对父表进行扫描,从而提升执行的效率,在步骤202之后,步骤204之前,可以提取并缓存上述若干第一数据行中目标外键的键值。
接着,在步骤204中,可以基于上述若干第一数据行分别包括的目标外键的键值,从第二源表中获取若干数据行。为了便于描述,可以将该若干数据行称为若干第二数据行。
具体地,可以利用多点(多值)查询方式,基于上述若干第一数据行分别包括的目标外键的键值,从第二源表中获取若干第二数据行。在一个例子中,源数据库可以支持SQL(Structured Query Language,结构化查询语言)查询,其中,SQL具有WHERE和IN关键字,IN关键字可以在WHERE子句中规定多个值。基于此,该多点查询方式可以是基于IN关键字的多点查询方式。由于WHERE和IN关键字是本领域的公知技术,在此不再过多介绍。
根据前文中的描述,目标外键可以为一个或多个外键,第二源表可以为一个或多个表。当目标外键为多个外键,第二源表为多个表时,对于该多个外键中的每个外键,以及该多个表中以该外键为主键的表,可以基于上述若干第一数据行分别包括的该外键的键值,从该表中获取若干第二数据行。另外,为了提升执行效率,可以针对该多个表进行并行查询。
接着,在步骤206中,可以将在步骤202中获取到的各第一数据行和在步骤204中获取到的各第二数据行,插入同一数据迁移事务。作为示例,在执行步骤206之前,例如具体在执行步骤202之前,可以开启一个数据迁移事务,从而在步骤206中,可以将该各第一数据行和该各第二数据行插入该数据迁移事务。
根据前文中的描述,第一源表可称为第二源表的父表,第二源表可称为第一源表的子表。在具体的实现方式中,可以将在步骤202中获取到的各第一数据行归入父表行组,将在步骤204中获取到的各第二数据行归入子表行组,进而将该父表行组和该子表行组插入同一数据迁移事务。
需要说明,需要父表和子表相对应的行在同一事务中迁移的迁移方式,可称为关联迁移。父表行组和它需要关联迁移的子表行组,可称为关联行组。可以将同一关联行组插入同一数据迁移事务。
下面,以源数据库为前文中描述的在线库为例,介绍数据关联迁移的处理过程。参看图3,其为数据关联迁移的处理过程的一个示意图。在该处理过程中,可以扫描在线库中的父表,并将扫描到的待迁移的若干数据行归入父表行组。接着,可以基于父表行组中目标外键的键值,在在线库中以目标外键为主键的子表中获取若干数据行,并将该若干数据行归入子表行组。其中,目标外键可由用户指定。然后,可以将该父表行组和该子表行组作为关联行组,插入同一数据迁移事务。
在一个实施例中,当步骤206中的数据迁移事务生效后,例如当该数据迁移事务变为可执行事务时,可以执行该数据迁移事务,以将被插入到该数据迁移事务中的各第一数据行迁移到目标数据库中对应于第一源表的第一目标表,以及将被插入到该数据迁移事务中的各第二数据行迁移到目标数据库中对应于第二源表的第二目标表。在一个例子中,该数据迁移事务可以包括第一目标表和第二目标表各自的表信息,该表信息可以包括但不限于表标识。
在一个实施例中,源数据库可以为前文中描述的在线库,目标数据库可以为前文中描述的历史库。
图2对应的实施例提供的数据关联迁移方法涉及第一源表和第二源表,由于第二源表的主键作为第一源表的外键,因而第一源表可称为第二源表的父表,第二源表可称为第一源表的子表。通过将父表待迁移的若干第一数据行和子表中关联于该若干第一数据行的若干第二数据行插入同一数据迁移事务,能利用事务语义,保证父表和子表的迁移原子性,使得父表和子表同时迁移,这样可以避免因出现目标数据库有父表中的第一数据行但查不到该第一数据行在子表中对应的第二数据行,或者有子表中的第二数据行但查不到该第二数据行在父表中对应的第一数据行的问题,而导致业务逻辑混乱。由此,能针对源数据库进行有效的数据迁移,并且尽可能的降低数据迁移带来的业务风险。
实践中,前文中提及的扫描任务,一般是针对第一源表的全量数据的扫描任务。为了加快执行速度,可以按照一定的逻辑将该扫描任务拆分成多个子任务,由每个子任务负责第一源表中部分数据的扫描处理。
具体地,参看图4,其示出了数据关联迁移方法的一个实施例的流程400。该方法的执行主体可以为图1所示的数据迁移系统。该方法包括以下步骤:
步骤402,接收针对源数据库内第一源表的扫描任务;第一源表具有目标外键,目标外键为源数据库内第二源表的主键;
步骤404,基于目标步长,将第一源表的主键列拆分为多个主键范围;
步骤406,生成多个扫描子任务,该多个扫描子任务包括该多个主键范围中不同的主键范围;
步骤408,通过执行多个扫描子任务中任意的扫描子任务,扫描第一源表中关联于目标主键范围的多个数据行从而获取到待迁移的若干第一数据行,基于该若干第一数据行分别包括的目标外键的键值从第二源表中获取若干第二数据行,并将该若干第一数据行和该若干第二数据行插入同一数据迁移事务;目标主键范围为该扫描子任务包括的主键范围。
下面,对本实施例涉及的多个步骤做进一步说明。
在步骤402中,可以接收针对源数据库内第一源表的扫描任务。该扫描任务可以具体是,针对第一源表的全量数据的扫描任务。另外,该扫描任务可以是人为触发的,也可以是自动触发的,在此不做具体限定。
第一源表可以是具有若干外键的数据表。如前所述的目标外键,可以是第一源表的全部外键或部分外键。在一个例子中,目标外键可以是针对第一源表指定的外键,例如目标外键可以包含在针对第一源表的扫描任务中。其中,当扫描任务由人为触发时,包含在扫描任务中的目标外键,可以理解为用户指定的外键。
在步骤404中,可以基于目标步长,将第一源表的主键列拆分为多个主键范围。其中,目标步长可以是预先设定的步长。目标步长例如可以为200、500或1000等,可根据实际需求设定。需要说明,父表(如第一源表)每批查询的量不宜过大,如果父表每批查询的量过大,会导致子表查询量也随之变大,从而造成SQL运行延迟变长,整体事务提交的数据量也变大,会影响整体执行效率。
上述多个主键范围中的全部或部分主键范围均包括主键列中目标步长个主键值。为了尽可能的使得上述多个主键范围分别包括的主键值的个数相同或相近,从而使得拆分出的多个扫描子任务较为均衡,在步骤404中,可以针对主键列进行多次拆分,其中某次拆分的拆分过程可以包括:在主键列中确定当前的下界;从该下界开始,查找该下界下方第目标步长个主键值;响应于查找到第目标步长个主键值,将其确定为当前的第一上界;确定第一上界是否为位于主键列尾部的主键值;响应于确定结果为否,生成当前的第一主键范围,其包括该下界但不包括第一上界。
实践中,当上述某次拆分是第一次拆分时,可以将位于主键列首部的主键值确定为当前的下界。当上述某次拆分不是第一次拆分时,可以将第一主键范围的上一主键范围的上界确定为当前的下界。
可选地,上述拆分过程还可以包括,响应于确定第一上界为位于主键列尾部的主键值,生成当前的第二主键范围,其包括当前的下界和第一上界。
可选地,上述拆分过程还可以包括,响应于未查找到第目标步长个主键值,将位于主键列尾部的主键值确定为当前的第二上界,生成当前的第三主键范围,其包括当前的下界和第二上界。
接着,在步骤406中,可以生成多个扫描子任务,该多个扫描子任务包括上述多个主键范围中不同的主键范围。需要说明,单个扫描子任务一般包括单个主键范围。在所接收的扫描任务包括目标外键的情况下,该多个扫描子任务还可以包括目标外键。另外,该扫描任务和该多个扫描子任务还可以包括第一源表的表信息。可选地,该扫描任务和该多个扫描子任务还可以包括第二源表的表信息。
接着,在步骤408中,可以通过执行上述多个扫描子任务中任意的扫描子任务,扫描第一源表中关联于目标主键范围的多个数据行从而获取到待迁移的若干第一数据行,基于该若干第一数据行分别包括的目标外键的键值从第二源表中获取若干第二数据行,并将该若干第一数据行和该若干第二数据行插入同一数据迁移事务。其中,目标主键范围为该扫描子任务包括的主键范围。
需要说明,为了加快执行速度,在步骤408中,可以并行执行上述多个扫描子任务。关于上述若干第一数据行和上述若干第二数据行的具体获取方法和事务插入方法,可参考图2对应实施例中的相关说明,在此不再赘述。
另外,上述多个扫描子任务可以对应多个数据迁移事务,上述多个扫描子任务可以将各自获取的各第一数据行和各第二数据行,插入各自对应的数据迁移事务。由此,可以避免产生过大的事务。
作为示例,对于上述多个扫描子任务中任意的扫描子任务,在该扫描子任务执行前或执行过程中,可以针对该扫描子任务开启一个数据迁移任务,从而使得该扫描子任务将其获取的各第一数据行和各第二数据行,插入该数据迁移任务。
后续,在上述多个数据迁移事务生效后,可以并行执行上述多个数据迁移事务,以对第一源表和第二源表均进行并行数据迁移,这样能极大提升数据迁移效率。
进一步参考图5,本说明书提供了一种数据关联迁移装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置可以应用于如图1所示的数据迁移系统。
如图5所示,本实施例的数据关联迁移装置500包括:第一获取单元501、第二获取单元502和处理单元503。其中,第一获取单元501被配置成从源数据库内的第一源表中获取待迁移的若干第一数据行;第一源表具有目标外键,目标外键为源数据库内第二源表的主键;第二获取单元502被配置成基于该若干第一数据行分别包括的目标外键的键值,从第二源表中获取若干第二数据行;处理单元503被配置成将该若干第一数据行和该若干第二数据行插入同一数据迁移事务。
在一些实施例中,第一源表中的各数据行均包括数据状态;以及第一获取单元501可以进一步被配置成:从第一源表中获取数据状态满足预设的迁移条件的若干第一数据行。
在一些实施例中,第一获取单元501可以进一步被配置成:扫描第一源表中关联于目标主键范围的多个数据行,从而获取到待迁移的若干第一数据行;目标主键范围基于目标步长在第一源表的主键列中确定出。
在一些实施例中,上述装置500还可以包括:接收单元(图中未示出),被配置成接收针对第一源表的扫描任务;拆分单元(图中未示出),被配置成基于目标步长,将第一源表的主键列拆分为多个主键范围;子任务生成单元(图中未示出),被配置成生成多个扫描子任务,该多个扫描子任务包括该多个主键范围中不同的主键范围;第一获取单元501可以进一步被配置成:通过执行该多个扫描子任务中任意的扫描子任务,扫描第一源表中关联于目标主键范围的多个数据行;目标主键范围为该扫描子任务包括的主键范围。
在一些实施例中,上述多个扫描子任务并行执行。
在一些实施例中,上述扫描任务和上述多个扫描子任务均包括目标外键。
在一些实施例中,上述装置500还可以包括:缓存单元(图中未示出),被配置成在第二获取单元502从第二源表中获取若干第二数据行之前,提取并缓存上述若干第一数据行中目标外键的键值。
在一些实施例中,第一源表为第二源表的父表,第二源表为第一源表的子表;以及第一获取单元501还可以被配置成:将上述若干第一数据行归入父表行组;第二获取单元502还可以被配置成:将上述若干第二数据行归入子表行组;处理单元503可以进一步被配置成:将该父表行组和该子表行组插入同一数据迁移事务。
在一些实施例中,目标外键包括多个外键,第二源表包括多个表。
在一些实施例中,上述装置500还可以包括:事务执行单元(图中未示出),被配置成执行数据迁移事务,以将上述若干第一数据行迁移到目标数据库中对应于第一源表的第一目标表,以及将上述若干第二数据行迁移到目标数据库中对应于第二源表的第二目标表。
在一些实施例中,源数据库为在线库,目标数据库为历史库。
在图5对应的实施例中,各单元的具体处理及其带来的技术效果可参考前文中方法实施例的相关说明,在此不再赘述。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,当该计算机程序在计算机中执行时,令计算机执行以上各方法实施例分别描述的数据关联迁移方法。
本说明书实施例还提供了一种计算设备,包括存储器和处理器,其中,该存储器中存储有可执行代码,该处理器执行该可执行代码时,实现以上各方法实施例分别描述的数据关联迁移方法。
本说明书实施例还提供了一种计算机程序,其中,当该计算机程序在计算机中执行时,令计算机执行以上各方法实施例分别描述的数据关联迁移方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书披露的多个实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本说明书披露的多个实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书披露的多个实施例的具体实施方式而已,并不用于限定本说明书披露的多个实施例的保护范围,凡在本说明书披露的多个实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书披露的多个实施例的保护范围之内。

Claims (14)

1.一种数据关联迁移方法,包括:
从源数据库内的第一源表中获取待迁移的若干第一数据行;所述第一源表具有目标外键,所述目标外键为所述源数据库内第二源表的主键;
基于所述若干第一数据行分别包括的所述目标外键的键值,从所述第二源表中获取若干第二数据行;
将所述若干第一数据行和所述若干第二数据行插入同一数据迁移事务。
2.根据权利要求1所述的方法,其中,所述第一源表中的各数据行均包括数据状态;以及
所述从源数据库内的第一源表中获取待迁移的若干第一数据行,包括:
从所述第一源表中获取数据状态满足预设的迁移条件的若干第一数据行。
3.根据权利要求1或2所述的方法,其中,所述从源数据库内的第一源表中获取待迁移的若干第一数据行,包括:
扫描所述第一源表中关联于目标主键范围的多个数据行,从而获取到所述若干第一数据行;所述目标主键范围基于目标步长在所述第一源表的主键列中确定出。
4.根据权利要求3所述的方法,还包括:
接收针对所述第一源表的扫描任务;
基于所述目标步长,将所述主键列拆分为多个主键范围;
生成多个扫描子任务,所述多个扫描子任务包括所述多个主键范围中不同的主键范围;
所述扫描所述第一源表中关联于目标主键范围的多个数据行,包括:
通过执行所述多个扫描子任务中任意的扫描子任务,扫描所述第一源表中关联于目标主键范围的多个数据行;所述目标主键范围为该扫描子任务包括的主键范围。
5.根据权利要求4所述的方法,其中,所述多个扫描子任务并行执行。
6.根据权利要求4所述的方法,其中,所述扫描任务和所述多个扫描子任务均包括所述目标外键。
7.根据权利要求1所述的方法,其中,在从所述第二源表中获取若干第二数据行之前,还包括:
提取并缓存所述若干第一数据行中所述目标外键的键值。
8.根据权利要求1所述的方法,其中,所述第一源表为所述第二源表的父表,所述第二源表为所述第一源表的子表;以及
所述方法还包括:
将所述若干第一数据行归入父表行组;
将所述若干第二数据行归入子表行组;
所述将所述若干第一数据行和所述若干第二数据行插入同一数据迁移事务,包括:
将所述父表行组和所述子表行组插入同一数据迁移事务。
9.根据权利要求1所述的方法,其中,所述目标外键包括多个外键,所述第二源表包括多个表。
10.根据权利要求1所述的方法,还包括:
执行所述数据迁移事务,以将所述若干第一数据行迁移到目标数据库中对应于所述第一源表的第一目标表,以及将所述若干第二数据行迁移到目标数据库中对应于所述第二源表的第二目标表。
11.根据权利要求10所述的方法,其中,所述源数据库为在线库,所述目标数据库为历史库。
12.一种数据关联迁移装置,包括:
第一获取单元,被配置成从源数据库内的第一源表中获取待迁移的若干第一数据行;所述第一源表具有目标外键,所述目标外键为所述源数据库内第二源表的主键;
第二获取单元,被配置成基于所述若干第一数据行分别包括的所述目标外键的键值,从所述第二源表中获取若干第二数据行;
处理单元,被配置成将所述若干第一数据行和所述若干第二数据行插入同一数据迁移事务。
13.一种计算机可读存储介质,其上存储有计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项所述的方法。
14.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11中任一项所述的方法。
CN202211081489.0A 2022-09-06 2022-09-06 数据关联迁移方法及装置 Pending CN115185929A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211081489.0A CN115185929A (zh) 2022-09-06 2022-09-06 数据关联迁移方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211081489.0A CN115185929A (zh) 2022-09-06 2022-09-06 数据关联迁移方法及装置

Publications (1)

Publication Number Publication Date
CN115185929A true CN115185929A (zh) 2022-10-14

Family

ID=83523374

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211081489.0A Pending CN115185929A (zh) 2022-09-06 2022-09-06 数据关联迁移方法及装置

Country Status (1)

Country Link
CN (1) CN115185929A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808633A (zh) * 2016-01-08 2016-07-27 平安科技(深圳)有限公司 数据归档方法和系统
CN106933859A (zh) * 2015-12-30 2017-07-07 中国移动通信集团公司 一种医疗数据的迁移方法和装置
CN111581183A (zh) * 2020-04-24 2020-08-25 上海泛微网络科技股份有限公司 一种基于数据模型进行数据迁移方法及装置
CN111984621A (zh) * 2020-07-17 2020-11-24 新华三大数据技术有限公司 一种异构数据库迁移方法、装置及存储介质
CN114328470A (zh) * 2022-03-14 2022-04-12 北京奥星贝斯科技有限公司 针对单个源表的数据迁移方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106933859A (zh) * 2015-12-30 2017-07-07 中国移动通信集团公司 一种医疗数据的迁移方法和装置
CN105808633A (zh) * 2016-01-08 2016-07-27 平安科技(深圳)有限公司 数据归档方法和系统
CN111581183A (zh) * 2020-04-24 2020-08-25 上海泛微网络科技股份有限公司 一种基于数据模型进行数据迁移方法及装置
CN111984621A (zh) * 2020-07-17 2020-11-24 新华三大数据技术有限公司 一种异构数据库迁移方法、装置及存储介质
CN114328470A (zh) * 2022-03-14 2022-04-12 北京奥星贝斯科技有限公司 针对单个源表的数据迁移方法及装置

Similar Documents

Publication Publication Date Title
CN107247808B (zh) 一种分布式NewSQL数据库系统及图片数据查询方法
EP0877327B1 (en) Method and apparatus for performing a join query in a database system
US8510316B2 (en) Database processing system and method
US6105020A (en) System and method for identifying and constructing star joins for execution by bitmap ANDing
US6343286B1 (en) Efficient technique to defer large object access with intermediate results
CN111597243B (zh) 基于数据仓库抽象数据加载的方法及系统
US20070250517A1 (en) Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries
US20070239342A1 (en) Method and system for deferred maintenance of database indexes
CN112988782B (zh) Hive支持交互式查询的方法、装置及存储介质
US9734177B2 (en) Index merge ordering
US11714794B2 (en) Method and apparatus for reading data maintained in a tree data structure
US7774304B2 (en) Method, apparatus and program storage device for managing buffers during online reorganization
US9390131B1 (en) Executing queries subject to different consistency requirements
EP1850250A1 (en) Method and system for renewing an index
CN114328470A (zh) 针对单个源表的数据迁移方法及装置
US10740311B2 (en) Asynchronous index loading for database computing system startup latency managment
JP4109305B1 (ja) マルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
CN111460000A (zh) 一种基于关系型数据库的回溯数据查询方法及系统
US7392359B2 (en) Non-blocking distinct grouping of database entries with overflow
CN115185929A (zh) 数据关联迁移方法及装置
CN113672556A (zh) 一种批量文件的迁移方法及装置
CN113536058A (zh) 一种空间索引修改方法、装置、设备及存储介质
JP3538322B2 (ja) データベース管理システムおよび問合せの処理方法
US11544264B2 (en) Determining query join orders
CN115455010B (zh) 一种基于milvus数据库的数据处理方法、电子设备及存储介质

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