[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN116209991A - 用于在目标数据库系统中加载数据的方法 - Google Patents

用于在目标数据库系统中加载数据的方法 Download PDF

Info

Publication number
CN116209991A
CN116209991A CN202180056423.3A CN202180056423A CN116209991A CN 116209991 A CN116209991 A CN 116209991A CN 202180056423 A CN202180056423 A CN 202180056423A CN 116209991 A CN116209991 A CN 116209991A
Authority
CN
China
Prior art keywords
target
loading
source
data
database system
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
CN202180056423.3A
Other languages
English (en)
Inventor
K·斯托尔泽
R·戈雷斯哈特
F·贝尔
L·E·奥利维拉利扎多
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN116209991A publication Critical patent/CN116209991A/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/211Schema design and management
    • 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
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation

Landscapes

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

Abstract

提供了一种用于在目标数据库系统中加载数据的计算机实现的方法。该方法包括:确定预期在所述目标数据库系统中发生源表的加载。可以根据定义的表模式来预先提供未来目标表,并且之后可以接收用于加载所述源表的加载请求。所述源表的数据可以被加载到所述未来目标表中。

Description

用于在目标数据库系统中加载数据的方法
背景技术
本发明涉及数字计算机系统领域,更具体地涉及一种用于在目标数据库系统中加载数据的方法。
数据加载是在数据库系统中执行的最频繁的操作之一。因此,改进数据加载可改进数据库系统的整体性能。然而,控制执行这样的数据加载所需的时间可能是具有挑战性的任务。
发明内容
各个实施例提供了一种如独立权利要求的主题所描述的用于在目标数据库系统中加载数据的方法、计算机系统和计算机程序产品。在从属权利要求中描述了有利的实施例。如果本发明的实施例不互斥,则它们可以彼此自由组合。
在一个方面,本发明涉及一种用于在目标数据库系统中加载数据的计算机实施的方法。该方法包括:确定预期在所述目标数据库系统中发生源表的加载;根据定义的表模式预先提供未来目标表;以及之后,接收用于加载所述源表的加载请求;将所述源表的数据加载到所述未来目标表中。
在另一方面,本发明涉及一种包括计算机可读存储介质的计算机程序产品,该计算机可读存储介质具有随其一起实施的计算机可读程序代码,该计算机可读程序代码被配置成实现根据前述实施例的方法的所有步骤。
在另一方面,本发明涉及一种用于在目标数据库系统中加载数据的计算机实现的方法,所述方法包括:由一个或多个计算机处理器确定预期在所述目标数据库系统中发生源表的加载;由一个或多个计算机处理器根据定义的表模式提前提供未来目标表;由一个或多个计算机处理器接收用于加载所述源表的加载请求;以及由一个或多个计算机处理器将所述源表的数据加载到所述未来目标表中。
在另一方面,本发明涉及一种用于在目标数据库系统中加载数据的计算机程序产品,该计算机程序产品包括:一个或多个计算机可读存储介质;以及存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括:用于确定预期在所述目标数据库系统中发生源表的加载的程序指令;用于根据定义的表模式来预先提供未来目标表的程序指令;用于接收用于加载所述源表的加载请求的程序指令;以及用于将所述源表的数据加载到所述未来目标表中的程序指令。
在另一方面,本发明涉及一种用于在目标数据库系统中加载数据的计算机。该计算机系统被配置成用于:确定预期在所述目标数据库系统中发生源表的加载;根据定义的表模式预先提供未来目标表;以及之后,接收用于加载所述源表的加载请求;将所述源表的数据加载到所述未来目标表中。
在另一方面,本发明涉及一种用于在目标数据库系统中加载数据的计算机系统,该计算机系统包括:一个或多个计算机处理器;一个或多个计算机可读存储介质;以及存储在所述一个或多个计算机可读存储介质上供所述一个或多个计算机处理器中的至少一个执行的程序指令,所述程序指令包括:用于确定预期在所述目标数据库系统中发生源表的加载的程序指令;用于根据定义的表模式来预先提供未来目标表的程序指令;用于接收用于加载所述源表的加载请求的程序指令;以及用于将所述源表的数据加载到所述未来目标表中的程序指令。
附图说明
以下参考附图仅通过举例更详细地解释本发明的实施例,在附图中:
图1描绘根据本主题的示例的数据处理系统。
图2是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。
图3是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。
图4是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。
图5是根据本主题的示例的用于确定在目标数据库系统中是否会发生数据加载的方法的流程图。
图6是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。
图7是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。
图8是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。
图9是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。
图10是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。
图11是根据本主题的用于提供目标表的方法的流程图。
具体实施方式
本发明的不同实施例的描述将出于说明的目的而呈现,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
到目标数据库系统中的数据加载可以包括从表(命名为“源表”)中提取数据并且将数据复制到目标数据库系统的目标表中。源表可以例如是源数据库系统中的源表或目标数据库系统中的现有表。源表可以具有命名为源表模式的表模式,并且目标表可以具有目标表模式。目标表模式可以使用与源表相关联的定义的唯一模式映射从源表模式中获得。在一个示例中,唯一模式映射可以是1:1映射。即,源表和目标表可以具有相同的表模式。表T的表模式可以指示表T中的列的数量。该定义可以足以创建目标表并执行数据的可靠加载。在另一示例中,表模式可以进一步指示表T的属性的类型。这可以实现针对目标表的资源的精确创建或分配,因为存储资源可以取决于数据的类型(例如,是浮点类型还是整数类型)而被不同地分配。在另一示例中,表模式可以进一步指示表的名称。这可以防止目标数据库系统中的数据覆写,因为多个表可以具有相同的列定义但具有不同的表名。
数据加载可以涉及不同类型的数据加载方法,例如取决于使用目标数据库系统的上下文。例如,数据加载方法包括数据加载的步骤和取决于数据加载方法的类型的附加步骤。数据加载方法的一个示例可以是数据重组方法。数据重组方法可以按不同方式组织源表中的数据。数据重组可以根据分布标准跨目标数据库系统的逻辑节点不同地分布数据,和/或通过不同的排序标准(例如,按名称排序而不是按社会保险号排序)改变源表中的行的物理排序次序。例如,数据重组方法可以包括:在接收到数据重组请求时,可以在目标数据库系统中新创建目标表,并且可以将所有行从源表复制到目标表,并且在该复制过程中应用新的分布/排序标准。在这种情况下,源表和目标表可以属于目标数据库系统。数据加载方法的另一示例可以是源数据库系统与目标数据库系统之间的数据同步方法。数据同步可以是建立从源数据库系统的源表到目标数据库系统的目标表的数据之间的一致性的过程,反之亦然。为此,数据同步方法可以检测源表中的改变,并随即触发创建新的目标表,以便将源表的全部内容(包括该改变)移动到新创建的表中。即,源表中的若干改变可以导致分别创建若干目标表。这可实现数据随时间推移的连续协调。该数据同步方法可以包括初始加载方法或全表重载方法。初始加载方法是指将源表的数据第一次加载到目标数据库系统中。全表重载方法是指响应于源表的改变而将源表后续加载到目标数据库系统中。
所以,无论采用哪种数据加载方法,数据加载可以包括如下操作或步骤的序列:s1)创建目标表,s2)从源表中提取所有行并将它们插入到目标表中。在另一示例中,数据加载还可包括(s3)的操作:使在目标数据库系统处访问的应用(例如,视图)适配初始表的内容,使得它引用目标表。完成数据加载所需的时间(加载时间)可包括执行这三个步骤s1至s3中的每一个的时间。然而,也就是说,理想地,加载时间应尽可能短,例如用以防止即使在短时间内对数据的不一致访问。例如,如果源表中仅存在非常少的行,则在步骤s1)中用于创建目标表的开销可能不仅变得明显,而且变得显著。它可能主导整个过程。即使表创建仅花费30毫秒也是如此。本主题可以减少加载时间并且因此加速数据加载方法的执行。为此,可以在目标数据库系统中提前地创建目标表以供后续使用。这样,当需要时可以使用现有的目标表,而不必按需创建它。例如,本主题可以基于合适的目标表的存在来配置现有的数据加载方法,使得它们不执行步骤s1)或者它们有条件地执行步骤s1)。这是因为数据加载的步骤s1)可以独立于数据加载方法的执行而被执行。
例如,可以响应于确定在目标数据库系统中预期发生源表的加载而预先提供目标表。在一个示例中,可以使用唯一模式映射从源表的源表模式获得目标表的目标表模式,然后可以使用目标表模式来创建目标表。在另一示例中,可提供现有表作为目标表,因此,目标表的目标表模式可以是有表的表模式。在另一示例中,目标表的目标表模式可以是用户定义的表模式,例如用户可以被提示来提供目标表模式。因此,创建的目标表被命名为“未来目标表”。确定会在未来时间点发生加载的方式可取决于用于在目标数据库系统中加载数据的数据加载方法。例如,可以分析或处理数据加载方法,以便导出如何触发数据加载(步骤s1至s3)和/或确定执行数据加载以及表模式的频率。分析结果可用于定义确定加载可发生在未来时间点的方式。例如,知道源表Ts每天(例如在上午12点)被加载,本方法可在例如上午9点的时间点确定预期在目标数据库系统中(例如,在具有源表Ts的表模式的表中)发生数据的加载。在另一示例中,并且在数据同步方法的情况下,在源数据库系统中创建新的源表可以指示预期在目标数据库系统中(例如,在具有源表的表模式的表中)发生数据的加载。这是因为,所创建的源表不可避免地会存储需要在初始加载中传播到目标数据库系统的新数据。在初始加载后,还预期源表将再次改变,且因此可能需要新表来传播该改变。因此,每当如“添加表”或“初始加载”或“全表重载”的操作完成时,可以异步地创建新的目标表用于数据加载方法的下一次潜在执行。
由此,根据一个实施例,响应于在源数据库系统中创建源表来执行确定期望发生源表的加载,其中源数据库系统和目标数据库系统被配置成在它们之间同步数据,其中源表具有根据唯一模式映射而映射到未来目标表的定义的表模式的源表模式。该实施例可例如实现混合事务和分析处理环境,该环境使得能够近实时地使用源数据库系统的数据。
根据一个实施例,响应于将源表从源数据库系统加载到目标数据库系统的当前目标表中,执行确定预期发生加载,其中当前目标表具有定义的表模式。
例如,假设源数据库系统包括源表Ts。响应于创建源表Ts,本主题可以预先创建具有目标表模式的目标表
Figure BDA0004113343610000051
目标表模式可以例如使用唯一模式映射从源表Ts的源表模式获得。目标表
Figure BDA0004113343610000052
可以是与源表Ts相关联的当前目标表。源表可以在时间t0接收初始内容,并且源表Ts的初始内容可以被加载到当前目标表
Figure BDA0004113343610000053
中。这可以被称为第一或初始加载。响应于第一加载,本主题可预先创建具有目标表
Figure BDA0004113343610000054
的表模式的另一目标表
Figure BDA0004113343610000055
对于源表Ts的第二加载,目标表
Figure BDA0004113343610000056
可以变成与源表Ts相关联的当前目标表。在源表Ts的内容在时间t1改变的情况下,表Ts的当前内容可被加载到当前创建的目标表
Figure BDA0004113343610000057
中。响应于第二加载,本主题可以预先创建具有目标表
Figure BDA0004113343610000058
的表模式的另一未来目标表
Figure BDA0004113343610000059
对于源表Ts的第三加载,未来目标表
Figure BDA00041133436100000510
可以变成与源表Ts相关联的当前目标表。在源表Ts的内容在时间t2改变的情况下,则可以将表Ts的当前内容加载到当前创建的目标表
Figure BDA00041133436100000511
中,以此类推。
根据一个实施例,该方法还包括:重复执行该方法,其中当前迭代的未来目标表变为下一次迭代的当前目标表。
遵循源表Ts的以上示例,并且在初始加载中,目标表
Figure BDA00041133436100000512
是当前目标表。在初始加载之后,创建的未来目标表
Figure BDA00041133436100000513
变成用于源表Ts的第二加载(第一次迭代)的当前目标表。在(在初始加载之后)源表的第二加载之后,创建的未来目标表
Figure BDA00041133436100000514
变成用于源表Ts的下一次加载的当前目标表,以此类推。这可以例如产生与源表被加载到目标数据库系统中的次数相对应的多个目标表
Figure BDA00041133436100000515
这可能是有利的,因为它可以跟踪目标数据库系统处的源表的不同版本。例如,这些版本可用于时间相关分析等。然而,这可能要求目标数据库系统处的存储资源。本主题可以通过使用下面的实施例节省目标表使用的存储资源。根据一个实施例,当前迭代的当前目标表变成下一迭代的未来目标表。遵循以上示例,每个加载(初始或后续加载)与两个表(当前目标表和创建的未来目标表)相关联。例如,第一加载与当前目标表
Figure BDA00041133436100000516
和未来目标表
Figure BDA00041133436100000517
相关联。第二加载与当前目标表
Figure BDA00041133436100000518
和未来目标表
Figure BDA00041133436100000519
相关联。第三加载与当前目标表
Figure BDA00041133436100000520
和未来目标表
Figure BDA00041133436100000521
相关联,以此类推。通过该实施例,与第二加载相关联的未来目标表
Figure BDA00041133436100000522
可被提供为第一加载的当前目标表
Figure BDA00041133436100000523
与第三加载相关联的未来目标表
Figure BDA00041133436100000524
可被提供为第二加载的当前目标表
Figure BDA00041133436100000525
以此类推。在这种情况下,只有两个表
Figure BDA00041133436100000526
Figure BDA00041133436100000527
可以用于将源表加载到目标数据库系统中。换言之,在加载结束时,表
Figure BDA0004113343610000061
Figure BDA0004113343610000062
交换角色:
Figure BDA0004113343610000063
变成
Figure BDA0004113343610000064
Figure BDA0004113343610000065
变成
Figure BDA0004113343610000066
由此,可以仅创建两个表,并且随后仅发生交换。
根据一个实施例,下一迭代的加载包括考虑当前迭代的当前目标表的内容是不可见的。遵循上面的示例并且如上所述,与第二加载相关联的未来目标表
Figure BDA0004113343610000067
可被提供作为当前目标表
Figure BDA0004113343610000068
然而,
Figure BDA0004113343610000069
仍然可以具有一些数据。通过本实施例,在将数据加载到目标表
Figure BDA00041133436100000610
(其是
Figure BDA00041133436100000611
)时,表
Figure BDA00041133436100000612
的内容可被视为不可见。这可以例如通过针对源表的每次加载来定义目标表的相应不同行范围来执行。由此,存储所述内容的行与执行加载的行不同(且因此对加载不可见)。或者,根据一个实施例,下一迭代的加载包括清除当前迭代的当前目标表的内容。根据上述示例,在将数据加载到目标表
Figure BDA00041133436100000613
(其是
Figure BDA00041133436100000614
)中之前,可以清除表
Figure BDA00041133436100000615
的内容。例如,可以使用像TRUNCATE的SQL语句来清除表
Figure BDA00041133436100000616
的表内容。这可能是有利的,因为TRUNCATE操作可以是非常快速的操作,因为目标数据库系统简单地解除分配与该表相关联的所有页并且不删除单独的行。所述操作的另一优点可以是,可以不必修改目标数据库系统的目录中的元数据。这可以改进对该元数据目录的并发操作。
根据一个实施例,提供未来目标表包括使用异步作业创建空表。该作业相对于正在使用的数据加载方法的执行时间是异步的。
根据一个实施例,确定预期发生加载包括:处理指示到目标数据库系统中的数据加载的历史的历史数据集。历史数据集包括指示加载的源表和执行所述加载的时间的条目,并且基于确定预期发生加载的处理。换言之,历史数据集可跟踪需要具有特定模式的表的频率。查阅该历史并将其投射到未来以确定何时将可能需要下一个表。由此,它可以被预先创建。根据上述示例,历史数据集的条目可包括元组(Ts,t0),另一条目可包括元组(Ts,t1),另一条目可包括元组(Ts,t2),等等。基于时间t0、t1和t2,可以导出源表Ts的加载频率。该频率可用于确定预期会发生源表TS的加载。
根据一个实施例,所述处理包括:按照表模式对条目进行分组,以及使用所述组中的每个组的加载的时间行为来确定针对所定义的表模式将发生加载。定义的表模式可以是其时间行为指示预期发生加载的组中的一个组的模式。预期被加载的源表可以是所述一个组中的源表。
例如,假设源数据库系统的多个源表
Figure BDA00041133436100000617
已经被加载到目标数据库系统中。因此,历史数据集包括与每个源表相关联的条目,诸如
Figure BDA00041133436100000618
Figure BDA00041133436100000619
等。源表
Figure BDA00041133436100000620
可以分别具有表模式S1,S2,S3…Sk。每个表模式可以指示存储在其中的列的数量和属性的类型。散列可以例如应用于表模式S1,S2,S3…Sk的模式定义,以便在对条目进行分组时实现快速查找。该实施例可使得能够将具有相同表模式的条目分组在同一组中。并且每个组的条目可被一致地处理,因为它们将表示相同的源数据集。换言之,如果存在具有相同模式(例如,相同的列定义但是不同的表名)的多个源表,它们的历史可以被合并并且一起考虑。这可以进一步减少开销,例如,在每星期一-星期五加载那些表之一并且每星期六和星期天需要另一表的情况下。
根据一个实施例,使用唯一映射从源表的现有表模式获得未来目标表的定义的表模式。例如,计算机系统可获得以不同方式组织源表中的数据的请求。这可以是跨目标数据库系统的逻辑节点不同地分布数据,或者它还可以是按照不同的标准(例如,按名称排序相对于按社会保险号排序)改变源表中的行的物理排序次序。因此在目标数据库系统中创建未来目标表,并且将所有行从源表复制到未来目标表,并且在该过程中应用新的分布/排序标准。由此,重组过程需要新的表,并且在目标数据库系统中创建该表将花费一些时间。该实施例可以通过例如在对数据重组的请求到来之前预先准备目标表来加速该过程。
图1是适于实现本公开中所涉及的方法步骤的数据处理系统100的框图。数据处理系统100可以例如包括用于z/OS(IDAA)的IBM Db2分析加速器。数据处理系统100包括连接至目标数据库系统121的源数据库系统101。源数据库系统101可以例如包括用于z/OS的IBMDb2。目标数据库系统121可以例如包括IBM Db2仓库(Db2 LUW)。
源数据库系统101包括通过总线106耦合在一起的处理器102、存储器103、I/O电路104和网络接口105。
处理器102可表示一个或多个处理器(例如,微处理器)。存储器103可以包括易失性存储器元件(例如,随机存取存储器(RAM,诸如DRAM、SRAM、SDRAM等))和非易失性存储器元件(例如,ROM、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、可编程只读存储器(PROM))中的任何一个或组合。注意,存储器103可以具有分布式架构,其中不同部件彼此远离地定位,但是可以由处理器102访问。
存储器103结合持久存储设备107可以用于本地数据和指令存储。存储设备107包括由I/O电路104控制的一个或多个持久存储设备和介质。存储设备107可以包括用于数字数据存储的磁、光、磁光或固态装置,例如具有固定或可移动介质。样本设备包括硬盘驱动器、光盘驱动器和软盘驱动器。样本介质包括硬盘盘片、CD-ROM、DVD-ROM、BD-ROM、软盘等。
存储器103可以包括一个或多个单独的程序,例如,数据库管理系统DBMS1109,每个程序包括用于实现逻辑功能(尤其是在本发明的实施例中涉及的功能)的可执行指令的有序列表。存储器103中的软件通常还应包括合适的操作系统(OS)108。OS 108实质上控制用于实现如本文所描述的方法的至少一部分的其他计算机程序的执行。DBMS1 109包括DB应用111和查询优化器110。DB应用111可以被配置用于处理存储在存储设备107中的数据。查询优化器110可以被配置为用于生成或定义用于例如在源数据库112上执行查询的查询计划。源数据库112例如可以包括源表190。
目标数据库系统121包括通过总线126耦合在一起的处理器122、存储器123、I/O电路124和网络接口125。
处理器122可以表示一个或多个处理器(例如,微处理器)。存储器123可以包括易失性存储器元件(例如,随机存取存储器(RAM,诸如DRAM、SRAM、SDRAM等))和非易失性存储器元件(例如,ROM、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、可编程只读存储器(PROM))中的任何一个或组合。注意,存储器123可以具有分布式架构,其中不同部件彼此远离地定位,但是可以被处理器122访问。
存储器123结合持久存储设备127可以用于本地数据和指令存储。存储设备127包括由I/O电路104控制的一个或多个持久存储设备和介质。存储设备127可以包括用于数字数据存储的磁、光、磁光或固态装置,例如具有固定或可移动介质。样本设备包括硬盘驱动器、光盘驱动器和软盘驱动器。样本介质包括硬盘盘片、CD-ROM、DVD-ROM、BD-ROM、软盘等。
存储器123可以包括一个或多个单独的程序,例如,数据库管理系统DBMS2129,每个程序包括用于实现逻辑功能(尤其是在本发明的实施例中涉及的功能)的可执行指令的有序列表。存储器123中的软件通常还应包括合适的OS 128。OS 128实质上控制用于实现如本文所描述的方法的至少一部分的其他计算机程序的执行。DBMS2 129包括DB应用131和查询优化器130。DB应用131可被配置为处理存储在存储设备127中的数据。查询优化器130可以被配置为用于生成或定义用于例如在目标数据库132上执行查询的查询计划。
源数据库系统101和目标数据库系统121可以是经由网络接口105、125通过高速连接142或网络141进行通信的独立计算机硬件平台。例如,网络141可包括局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,互联网)。源数据库系统101和目标数据库系统121中的每一个可以负责管理其自己的数据副本。
虽然在图1中示出为单独的系统,但是源和目标数据库系统可以属于例如共享相同的存储器和处理器硬件的单个系统,而源和目标数据库系统中的每个与相应的DBMS和数据集相关联,例如,两个DBMS可以存储在共享存储器中。在另一示例中,两个数据库管理系统DBMS1和DBMS2可以形成单个DBMS的一部分,该单个DBMS实现了如在此所描述的DBMS1和DBMS2执行的通信和方法。第一和第二数据集可被存储在同一存储设备上或存储在分开的存储设备上。
数据库引擎155可以被配置成在源数据库系统101与目标数据库系统121之间同步数据。数据库引擎155可以被配置为根据本主题执行数据迁移或数据传送。在另一个示例中,数据库引擎155可以被配置为独立于另一个数据库系统来管理两个数据库系统101和121之一的数据。在这种情况下,数据处理系统100可以仅包括这两个数据库系统中的所述一个。因此,数据库引擎155可以例如是源数据库系统101和/或目标数据库系统121的一部分,数据库引擎155可以例如包括DBMS1 109和/或DBMS2 119的至少一部分。在另一示例中,数据库引擎155可以是或者可以包括被配置为连接到数据处理系统100的单独的计算机系统,其中数据库引擎155可以被配置为控制数据处理系统100以执行本方法的至少一部分。
图2是用于在目标数据库系统(例如,121)中加载数据的方法的流程图。出于解释的目的,图2中描述的方法可在图1中说明的系统中实施,但不限于这个实施方式。图2的方法可以例如由数据库引擎155执行。
在步骤201中可以确定是否预期在目标数据库系统121中发生至少一个源表的加载。步骤201可以确定目标数据库系统121中的源表的加载是否会在未来时间点发生。该确定可以以不同的方式执行,例如,如图5中所示。在一个示例中,步骤201可以确定是否接收到用户输入,其中该用户输入指示是否要在目标数据库系统中加载数据。
可以对预定义源表执行步骤201。步骤201可以在现有系统上或者在新创建的系统上执行(从头开始)。步骤201可以确定是否预期将一个或多个源表的数据加载到目标数据库系统121中。预定义源表可以是在执行步骤201的时间ts201已经存在的源表,例如,预定义源表的创建日期早于时间ts201,并且步骤201可以确定是否预期在比时间ts201晚的时间点加载数据。预定义源表可以包括尚未加载到目标数据库系统中的表和/或已被加载到目标数据库系统中至少一次的表。
在不预期在目标数据库系统121中发生源表的加载的情况下,该方法可以结束或者可以重复步骤201,直到可以预期发生源表的加载或者直到步骤201的所述重复的次数超过阈值。在预期在目标数据库系统121中发生至少一个源表的加载的情况下,可以执行步骤203。例如,在步骤201中可以确定预期源表
Figure BDA0004113343610000091
Figure BDA0004113343610000092
被加载到目标数据库系统121中进入相应的目标表中,其中n0≥1。索引0指的是步骤201到207的初始/第一次执行。源表
Figure BDA0004113343610000093
分别具有表模式
Figure BDA0004113343610000094
由此,对于n0个源表中的每个源表,可以在步骤203中根据相应定义的表模式
Figure BDA0004113343610000095
在目标数据库系统121中(例如,在时间ts203)预先提供未来目标表。例如,可以在步骤203中根据表模式
Figure BDA0004113343610000096
分别提供未来目标表
Figure BDA0004113343610000097
对于在步骤201中识别的每个源表,可以在步骤203中通过创建新的空表或通过使用目标数据库系统的现有表作为目标表来提供目标表。在使用现有表的情况下,步骤203可以进一步检查现有表的表模式是否是源表的表模式;如果不是,则可以创建新表。
在执行步骤203之后,在步骤205中(例如,在时间ts205)可接收用于加载数据的加载请求。加载请求可要求加载源表
Figure BDA0004113343610000101
的至少一部分(例如,全部)。例如,加载请求可以请求加载源表
Figure BDA0004113343610000102
其中m0≤n0。响应于接收到加载请求,可以在步骤207中(例如,在时间ts207)将数据分别加载到与所请求的源表相关联的未来目标表
Figure BDA0004113343610000103
中。可以在目标数据库系统中提供视图。该视图可以用于处理/分析未来目标表
Figure BDA0004113343610000104
即,视图包括对目标表
Figure BDA0004113343610000105
的引用。
然而,可能发生在步骤207中开始初始加载时在步骤203中的表创建尚未完成。在一个示例中,步骤207的初始加载可以与步骤203中的异步表创建同步。在另一示例中,异步过程可创建未来目标表。如果在初始加载开始时还没有完成表创建,则初始加载可以创建其自己的独立的未来目标表并使用它。由此,在初始加载之后,新的未来目标表(异步创建的目标表)将已经存在并且可以被使用。
在一个示例中,图2的方法可以在具有源和目标数据库系统的系统中执行,其中源表是源数据库系统的一部分。图2的方法可以在应用中或者在所述系统的数据库内核中实现。后一种情况可以有益于与数据库一起工作的所有应用。在另一示例中,图2的方法可以在仅包括目标数据库系统的系统中执行,其中源表可以是目标数据库系统的一部分。图2的方法因此可用作数据同步方法或数据重组方法。
图3是用于将数据加载到目标数据库系统(例如,121)中的方法的流程图。出于说明的目的,图3中所描述的方法可在图1中所说明的系统中实施,但不限于此实施方式。图3的方法可以例如由数据库引擎155执行。
步骤301至305是图2的方法的步骤201至205。可以在步骤307中将所请求的源表
Figure BDA0004113343610000106
的数据加载到相应的(当前的)目标表
Figure BDA0004113343610000107
中并且可以提供未来目标表
Figure BDA0004113343610000108
用于实现相应源表的后续加载。例如,在加载数据之后,可以立即提供未来目标表
Figure BDA0004113343610000109
未来目标表
Figure BDA00041133436100001010
Figure BDA00041133436100001011
可以分别具有当前目标表
Figure BDA00041133436100001012
的表模式。在另一个示例中,可以在步骤307中与源表
Figure BDA00041133436100001013
的加载并发地提供未来目标表
Figure BDA00041133436100001014
Figure BDA00041133436100001015
因此,对于步骤301至307的第一次执行,目标表
Figure BDA00041133436100001016
分别是源表
Figure BDA00041133436100001017
的当前目标表,并且
Figure BDA00041133436100001018
分别是源表
Figure BDA00041133436100001019
Figure BDA00041133436100001020
的未来目标表。
此外,可重复方法步骤305至307。重复可以响应于接收到加载请求而自动执行。
在一个示例中,如果在后续迭代中在步骤305中再次请求加载相同的源表
Figure BDA0004113343610000111
则可以在步骤307中将它们分别加载到对应的未来目标表
Figure BDA0004113343610000112
Figure BDA0004113343610000113
中,并且可以在步骤307中提供用于后续迭代的未来目标表
Figure BDA0004113343610000114
Figure BDA0004113343610000115
以此类推。即,在第一次重复步骤305至307时,目标表
Figure BDA0004113343610000116
Figure BDA0004113343610000117
分别是源表
Figure BDA0004113343610000118
的当前目标表,并且
Figure BDA0004113343610000119
分别是源表
Figure BDA00041133436100001110
的未来目标表。
在一个示例中,如果在第一次重复的步骤305中所请求的(要加载的)源表
Figure BDA00041133436100001111
不同于先前请求的源表(例如,它们额外包括源表
Figure BDA00041133436100001112
),则目标表
Figure BDA00041133436100001113
Figure BDA00041133436100001114
分别是源表
Figure BDA00041133436100001115
Figure BDA00041133436100001116
的当前目标表(即,
Figure BDA00041133436100001117
是在步骤303中提供的目标表而其他目标表是在步骤307中提供的),并且
Figure BDA00041133436100001118
Figure BDA00041133436100001119
分别是源表
Figure BDA00041133436100001120
Figure BDA00041133436100001121
的未来目标表。换言之,在步骤307中针对给定源表的加载是在针对所述源表的最后提供的目标表中执行的。
例如,可以执行步骤305至307的重复,直到满足停止标准。停止标准可以例如要求迭代次数小于预定义的重载阈值次数。在步骤305的每次迭代中接收的加载请求可以或可以不要求加载相同的源表。在步骤305的每次执行中,请求源表
Figure BDA00041133436100001122
其中j在0与步骤305至307的迭代次数之间变化。所请求的源表是在步骤301中识别的源表的一部分。
在第一加载示例中,可以在步骤307中通过分别创建新的空表来提供未来目标表
Figure BDA00041133436100001123
在第二加载示例中,可以使用现有表在步骤307中提供目标表
Figure BDA00041133436100001124
为此,可以使用图10的方法步骤1001至1007来处理每个被请求的源表,以便使用现有表或创建新的表。
对于在步骤305中每个被请求的源表,可以提供两种类型的目标表。即,在步骤307中源表被加载到的当前目标表和在步骤307中提供的未来目标表,用于将源表随后加载到未来目标表中。在第三加载示例中,无论所述源表的重载的次数如何,只有这两个表可以与源表相关联。为此,可以使用交换方法。例如,在步骤305中首次请求加载源表
Figure BDA00041133436100001125
的情况下,可以在步骤307中将源表
Figure BDA00041133436100001126
加载到对应的(例如,在步骤303)创建的当前目标表
Figure BDA00041133436100001127
中并且可以另外提供未来目标表
Figure BDA00041133436100001128
在第二次在步骤305中请求加载源表
Figure BDA00041133436100001129
的情况下,可以在步骤307中将源表
Figure BDA00041133436100001130
加载到目标表
Figure BDA00041133436100001131
中,并且可以提供现有目标表
Figure BDA00041133436100001132
作为未来目标表。在第三次在步骤305中请求加载源表
Figure BDA00041133436100001133
的情况下,可以在步骤307中将源表
Figure BDA00041133436100001134
加载到目标表
Figure BDA00041133436100001135
中,并且可以提供现有目标表
Figure BDA00041133436100001136
作为未来目标表,以此类推。
在每次重复步骤305至307后并且对于每个源表,参见图2描述的视图可以被更新,以使得在源表被重新加载到新的目标表中的情况下,对与源表相关联的目标表的引用被更新到该新的目标表。
图4是用于在目标数据库系统(例如121)中加载数据的方法的流程图。出于解释的目的,图4中描述的方法可以在图1中示出的系统中实现,但不限于这种实现方式。图4的方法可以例如由数据库引擎155执行。
图4的方法的步骤401至407分别是图2的方法的步骤201至207。此外,可重复方法步骤401至407。例如,可以周期性地(例如,每小时)执行重复。可以执行重复直到满足停止标准。停止标准例如可以要求迭代次数小于预定义的阈值。
在步骤401的第i次重复中,预期加载源表
Figure BDA0004113343610000121
其中ni≥1并且ni可以或可以不等于n0(参考图2)并且第i次重复的源表可以与步骤401的初始执行的源表
Figure BDA0004113343610000122
相同或不同。可以在步骤403的第i次重复中分别为源表
Figure BDA0004113343610000123
提供目标表
Figure BDA0004113343610000124
从而使得可以在步骤407中根据请求将源表分别加载到所述提供的目标表中。
对于在步骤401中识别的每个源表,可以如参见图2所描述的那样执行在步骤403中提供相应的未来目标表。或者,可以使用交换方法来提供目标表。即,对于要加载的每个源表,可以仅提供两个目标表。可在步骤403的前两次执行中为源表提供这两个目标表。所述源表的步骤403的任何后续执行可以使用这两个目标表中的一个。例如,在首次在步骤405中请求加载源表
Figure BDA0004113343610000125
的情况下,可以将源表
Figure BDA0004113343610000126
加载到对应的创建的当前目标表
Figure BDA0004113343610000127
中。在第二次在步骤405中请求加载源表
Figure BDA0004113343610000128
的情况下,可以将源表
Figure BDA0004113343610000129
加载到目标表
Figure BDA00041133436100001210
中。在第三次在步骤405中请求加载源表
Figure BDA00041133436100001211
的情况下,可以将源表
Figure BDA00041133436100001212
加载到目标表
Figure BDA00041133436100001213
中,以此类推。该交换可以是有利的,因为当前迭代的加载步骤407可以与下一迭代的步骤403中的目标表的提供并发地执行。
图5是用于实现图2的步骤201的示例方法的流程图。出于解释的目的,图5中描述的方法可在图1中所说明的系统中实施,但不限于此实施方式。图5的方法可以例如由数据库引擎155执行。
可以在步骤501中提供指示到目标数据库系统121中的数据加载的历史的历史数据集。历史数据集包括指示被加载的源表和执行所述加载的时间的条目。例如,历史数据集的条目可包括元组(Ts,t0),其中Ts是在时间t0加载的源表,另一条目可包括元组(Ts,t1),另一条目可包括元组(Ts,t2),等等。
在步骤503中可以处理或分析历史数据集。例如,可以确定源表Ts的加载的时间行为。时间行为可以例如指示源表Ts的加载频率。
使用处理的结果,可以在步骤505中确定预期在目标数据库系统中在具有源表
Figure BDA0004113343610000131
的相应表模式的目标表中发生至少一个源表的加载。
图6为在例如121的目标数据库系统中加载数据的方法的流程图。出于解释的目的,图6中描述的方法可在图1中所说明的系统中实施,但不限于此实施方式。图6的方法可以例如由数据库引擎155执行。
步骤601至605分别是图5的步骤501至505。对于n0个源表
Figure BDA0004113343610000132
中的每个源表,在步骤607中,可以根据源表
Figure BDA0004113343610000133
的相应定义的表模式
Figure BDA0004113343610000134
在目标数据库系统121中预先提供未来目标表。
在步骤609中可接收数据重组请求。数据重组请求可以要求重组源表
Figure BDA0004113343610000135
Figure BDA0004113343610000136
的至少一部分。例如,该重组可以根据分布标准跨目标数据库系统的逻辑节点不同地分布数据和/或通过不同的排序标准(例如,按名称排序而不是按社会保险号排序)改变源表中的行的物理排序次序。
在步骤611中,可以根据重组方案将源表
Figure BDA0004113343610000137
的至少一部分加载到相应的目标表中。
图7是用于在源数据库系统101与目标数据库系统121之间同步数据的方法的流程图。出于解释的目的,图7中描述的方法可以在图1中示出的系统中实现,但不限于这种实现方式。图7的方法可以例如由数据库引擎155执行。
在步骤701中,可以确定是否在源数据库系统中创建了源表。源表可以通过“添加表”操作来创建。如果是,可以在步骤703中在目标数据库系统中创建初始目标表。在源数据库系统中没有创建源表的情况下,该方法可以结束,或者可以重复步骤701,直到创建源表或者直到步骤701的所述重复的次数超过阈值。在步骤705中可以接收用于加载源表的加载请求。在步骤707中,源表的内容可以被加载到初始目标表中。因此,这里的想法是在添加源表之后创建空表。异步作业可负责该工作,该异步作业可基于某个定时器或通过“添加表”操作而启动。步骤703的目标表现在可用于步骤707中的“初始加载”,这意味着可以跳过初始加载的步骤s1)。在当在步骤707中开始初始加载时在步骤703中的表创建尚未完成的情况下,在一个示例中,初始加载需要使其自身与异步表创建同步。这可能已经是加载时间的改进,因为表创建可以在“添加表”与“初始加载”的开始之间的时间窗口中运行(至少开始)。在另一示例中,异步过程可创建未来目标表。如果在初始加载开始时还没有完成表创建,则初始加载可以创建其自己的独立的未来目标表并使用它。由此,在初始加载之后,新的未来目标表(异步创建的目标表)将已经存在并且可以被使用。
图8是用于在源数据库系统101与目标数据库系统121之间同步数据的方法的流程图。出于解释的目的,图8中描述的方法可在图1中所说明的系统中实施,但不限于此实施方式。图8的方法可以例如由数据库引擎155执行。
步骤801到805是图7的步骤701到705。图8的步骤807是图7的步骤707,其被修改以进一步包括提供未来目标表。例如,可以在步骤807中与数据加载并发地提供未来目标表。在另一示例中,可以在步骤807中加载数据之后立即提供未来目标表。此外,可重复方法步骤805到807。重复可以在接收到加载请求时自动执行。例如,可以执行重复直到满足停止标准。停止标准可以例如要求迭代次数小于预定义的重新加载阈值次数。在步骤807中在当前迭代中对源表的重新加载可以例如在先前迭代中在步骤807中为所述源表提供的最后未来目标表中执行。
图8的方法可以是有利的,因为它可以根据本主题使得能够连续地监视在步骤801中已经识别的源表,以便连续地加载其内容。
图9是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。出于解释的目的,在图9中描述的方法可以在图1中示出的系统中实现,但不限于该实现方式。图9的方法可以例如由数据库引擎155执行。
图9的方法包括重复图8的用于检测新源表。例如,可以周期性地(例如,每小时)执行重复。可以执行重复直到满足停止标准。停止标准例如可以要求迭代次数小于预定义的阈值。在这种情况下,在步骤805中接收的加载请求可以是在步骤801中已经确定的一个或多个源表的加载请求,加载可以在相应的目标表中执行,并且未来目标表的创建可以分别针对所请求的源表执行。在步骤807中在当前迭代中对每个源表的重新加载可以例如在先前迭代中在步骤807中为所述每个源表提供的最后未来目标表中执行。
图10是根据本主题的示例的用于在目标数据库系统中加载数据的方法的流程图。出于解释的目的,图10中描述的方法可以在图1中示出的系统中实现,但不限于该实现方式。图10的方法可以例如由数据库引擎155执行。
例如,在接收到用于将源表加载到目标数据库系统121中的数据加载请求时,可执行图10的方法。可以确定(步骤1001)与源表相关联的目标表是否存在。在存在与源表相关联的目标表的情况下,可以确定(步骤1003)目标表是否具有与源表的表模式相同的表模式。在目标表具有与源表的表模式相同的表模式的情况下,可以在步骤1009中使用所述目标表。在目标表不具有与源表的表模式相同的表模式或者目标表不存在的情况下,可以在步骤1005中创建新的目标表,并且可以在步骤1009中使用新创建的目标表。在步骤1009中,源表的数据可以被插入到现有的目标表或新创建的目标表中。可以在步骤1010中提交插入。并且可以在步骤1011中修改视图,其中视图被修改为引用在步骤1009中使用的目标表。所述视图被配置为处理目标数据库系统中的源表的内容。
图11是根据本主题的用于预先提供目标表的方法的流程图。出于解释的目的,图11中描述的方法可在图1中说明的系统中实施,但不限于此实施方式。图11的方法可以例如由数据库引擎155执行。图11的方法提供了步骤307的示例实现方式。
图11的方法可例如响应于接收到用于加载源表的数据加载请求而执行。在步骤1101中,可以确定是否存在具有映射到源表的表模式的表模式的目标表,例如,可以确定目标表的模式是否与源表的表模式相同。如果是,则现有目标表可以在步骤1103中被清除并且作为未来目标表被提供,使得源表可以被加载到该目标表中。否则,在步骤1105中可以创建新的目标表。清除可以例如有利地使用TRUNCATE操作来执行。
本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储媒体可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储媒体不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个方框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者方框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。

Claims (14)

1.一种用于在目标数据库系统中加载数据的计算机实现的方法,该方法包括:
确定预期在所述目标数据库系统中发生源表的加载;
根据定义的表模式预先提供未来目标表;并且之后
接收加载所述源表的加载请求;
将所述源表的数据加载到所述未来目标表中。
2.根据权利要求1所述的方法,其中,响应于以下操作来执行确定预期发生所述加载:
在源数据库系统中创建所述源表,其中所述源数据库系统和目标数据库系统被配置成在彼此之间同步数据,其中所述源表具有所述定义的表模式;或
将所述源表的数据从所述源数据库系统加载到所述目标数据库系统的当前目标表中,其中所述当前目标表具有所述定义的表模式。
3.根据前述权利要求中任一项所述的方法,其中确定预期发生所述加载包括:处理指示到所述目标数据库系统的数据加载的历史的历史数据集,所述历史数据集包括指示源表和执行所述加载的时间的条目,并且基于所述处理确定预期发生所述加载。
4.根据权利要求3所述的方法,其中所述处理包括:按照表模式对所述条目进行分组,以及使用所述组中的每个组的数据加载的时间行为来确定预期发生所述加载,其中所述定义的表模式是所述组中的一个组的所述表模式。
5.根据前述权利要求中任一项所述的方法,其中所述未来目标表的所述定义的表模式是使用唯一映射从所述源表的表模式获得的。
6.根据权利要求2至5中任一项所述的方法,进一步包括:重复地执行所述方法,其中当前重复的所述未来目标表变为用于下一次重复的当前目标表。
7.根据权利要求6所述的方法,其中当前重复的当前目标表变为下一次重复的未来目标表。
8.根据权利要求7所述的方法,其中所述下一次重复的加载步骤包括将当前重复的当前目标表的内容视为不可见的。
9.根据权利要求7所述的方法,其中所述下一次重复的加载步骤包括清除当前重复的当前目标表的内容。
10.根据前述权利要求中任一项所述的方法,其中提供所述未来目标表包括使用异步作业创建空表。
11.根据权利要求10所述的方法,其中所述异步作业是基于预定义的定时器开始的或者在确定步骤之后立即开始。
12.根据前述权利要求中任一项所述的方法,其中将所述源表的数据加载到所述未来目标表中包括:从所述源表中提取数据,将所提取的数据插入所述目标表中,执行提交操作,以及修改所述目标数据库中的视图,使得所述视图引用所述未来目标表,所述视图被配置为在所述目标数据库系统中处理所述源表的内容。
13.一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质具有随其一起实施的计算机可读程序代码,所述计算机可读程序代码被配置为执行根据前述权利要求中任一项所述的方法。
14.一种用于在目标数据库系统中加载数据的计算机系统,该计算机系统被配置用于:
确定预期在所述目标数据库系统中发生源表的加载;
根据定义的表模式预先提供未来目标表;并且之后
接收用于加载所述源表的加载请求;
将所述源表的数据加载到所述未来目标表中。
CN202180056423.3A 2020-08-12 2021-08-10 用于在目标数据库系统中加载数据的方法 Pending CN116209991A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP20190625 2020-08-12
EP20190625.2 2020-08-12
US17/021,072 2020-09-15
US17/021,072 US11573936B2 (en) 2020-08-12 2020-09-15 Method for loading data in a target database system
PCT/IB2021/057375 WO2022034502A1 (en) 2020-08-12 2021-08-10 Method for loading data in target database system

Publications (1)

Publication Number Publication Date
CN116209991A true CN116209991A (zh) 2023-06-02

Family

ID=72087875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180056423.3A Pending CN116209991A (zh) 2020-08-12 2021-08-10 用于在目标数据库系统中加载数据的方法

Country Status (6)

Country Link
US (1) US11573936B2 (zh)
JP (1) JP2023539811A (zh)
CN (1) CN116209991A (zh)
DE (1) DE112021003521T5 (zh)
GB (1) GB2612757A (zh)
WO (1) WO2022034502A1 (zh)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7478112B2 (en) 2004-12-16 2009-01-13 International Business Machines Corporation Method and apparatus for initializing data propagation execution for large database replication
US20060212799A1 (en) * 2005-02-11 2006-09-21 Fujitsu Limited Method and system for compiling schema
US8788457B2 (en) * 2007-09-21 2014-07-22 International Business Machines Corporation Ensuring that the archival data deleted in relational source table is already stored in relational target table
US7895174B2 (en) * 2008-03-27 2011-02-22 Microsoft Corporation Database part table junctioning
US8688622B2 (en) * 2008-06-02 2014-04-01 The Boeing Company Methods and systems for loading data into a temporal data warehouse
JP4939568B2 (ja) 2009-04-28 2012-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
US20120124081A1 (en) 2010-11-17 2012-05-17 Verizon Patent And Licensing Inc. Method and system for providing data migration
US8666956B1 (en) * 2010-12-16 2014-03-04 Teradata Us, Inc. Sequenced modifications of multiple rows in a temporal table
US8676772B2 (en) * 2011-12-09 2014-03-18 Telduráðgevin Sp/f Systems and methods for improving database performance
US9756108B2 (en) 2012-05-29 2017-09-05 Google Inc. Preloading resources of a web page
US20140006342A1 (en) * 2012-06-27 2014-01-02 Thomas Love Systems for the integrated design, operation and modification of databases and associated web applications
GB2507094A (en) * 2012-10-19 2014-04-23 Ibm Selecting and loading a subset of data from a database backup
US10628393B2 (en) * 2015-06-24 2020-04-21 International Business Machines Corporation Generating data tables
US10552453B2 (en) 2015-11-25 2020-02-04 International Business Machines Corporation Determining data replication cost for cloud based application
US10671642B2 (en) * 2016-11-11 2020-06-02 International Business Machines Corporation Copying data changes to a target database
CN108376171B (zh) 2018-02-27 2020-04-03 平安科技(深圳)有限公司 大数据快速导入的方法、装置、终端设备及存储介质
CN111427853A (zh) 2020-03-23 2020-07-17 腾讯科技(深圳)有限公司 一种数据加载方法和相关装置

Also Published As

Publication number Publication date
GB2612757A (en) 2023-05-10
DE112021003521T5 (de) 2023-05-17
US20220050812A1 (en) 2022-02-17
US11573936B2 (en) 2023-02-07
WO2022034502A1 (en) 2022-02-17
GB202303151D0 (en) 2023-04-19
JP2023539811A (ja) 2023-09-20

Similar Documents

Publication Publication Date Title
US11429641B2 (en) Copying data changes to a target database
US11182356B2 (en) Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems
US10180946B2 (en) Consistent execution of partial queries in hybrid DBMS
US11138227B2 (en) Consistent query execution in hybrid DBMS
US10552372B2 (en) Systems, methods, and computer-readable media for a fast snapshot of application data in storage
US10262013B2 (en) Efficient full delete operations
US9734223B2 (en) Difference determination in a database environment
EP3519986B1 (en) Direct table association in in-memory databases
US11176123B2 (en) Offloading constraint enforcement in a hybrid DBMS
US20130031051A1 (en) Adding a kew column to a table to be replicated
US9390111B2 (en) Database insert with deferred materialization
US20180276267A1 (en) Methods and system for efficiently performing eventual and transactional edits on distributed metadata in an object storage system
US10901854B2 (en) Temporal logical transactions
US11573936B2 (en) Method for loading data in a target database system
US11669535B1 (en) Maintaining at a target database system a copy of a source table of a source database system
US20230094789A1 (en) Data distribution in target database systems

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