CN104572802B - 用于加载具有复杂关系的数据的方法和系统 - Google Patents

用于加载具有复杂关系的数据的方法和系统 Download PDF

Info

Publication number
CN104572802B
CN104572802B CN201410526574.2A CN201410526574A CN104572802B CN 104572802 B CN104572802 B CN 104572802B CN 201410526574 A CN201410526574 A CN 201410526574A CN 104572802 B CN104572802 B CN 104572802B
Authority
CN
China
Prior art keywords
entity
circulation
foreign key
group set
leaf group
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.)
Expired - Fee Related
Application number
CN201410526574.2A
Other languages
English (en)
Other versions
CN104572802A (zh
Inventor
T·施瓦茨
O·祖雷
M·格拉塞尔特
P·格斯特尔
A·迈尔
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 CN104572802A publication Critical patent/CN104572802A/zh
Application granted granted Critical
Publication of CN104572802B publication Critical patent/CN104572802B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)

Abstract

本发明涉及一种用于加载具有复杂关系的数据的方法和系统。所述方法包括:通过执行包括执行连续迭代的迭代过程,将实体分成插入叶组,其中每次迭代的执行包括生成相应插入叶组集合,其包含所有这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的实体的主数据值没有外键关系或仅具有一个或多个外键关系,执行迭代过程直到没有剩下这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的一个或多个实体的主数据值没有外键关系或仅具有一个或多个外键关系,记录插入叶组集合的生成序列;以及根据所述序列,将实体的插入叶组集合以及链接实体的辅助数据值与对应主数据值的外键关系连续加载到目标系统中。

Description

用于加载具有复杂关系的数据的方法和系统
技术领域
本发明涉及计算机数据处理,更具体地,涉及加载具有复杂关系的数据的方法和系统。
背景技术
有效处理具有复杂关系的数据是计算机科学的一项持久任务。例如,该领域中的一项典型任务是例如在整合或协调项目的上下文中,将对象从一个或多个计算机应用或数据库迁移到单个目标计算机应用或数据库,其中以新系统替换多个现有系统。这还包括将包含对象的其它源系统结合到已经存在的目标中。当对象包括通过关系链接的实例时,该问题变得更加复杂。因此,将对象从一个计算机应用迁移到另一个不仅需要传输实例,而且还需要传输和更新实例的关系。
发明内容
本发明涉及一种用于将具有复杂关系的数据或对象加载到目标系统中的计算机系统、一种用于将具有复杂关系的数据或对象迁移到目标系统的方法、一种用于将具有复杂关系的数据或对象加载到目标系统中的计算机程序产品和计算机系统,其中将数据实体或对象转换为有向图。
本发明用于提供数据或对象到目标计算机应用或目标系统的改进/有效迁移的实施例。所述数据或对象包括通过外键关系链接的实例。应该理解,本发明可以以多种方式实现,包括实现为一种用于将数据加载到目标系统中的方法、一种用于将数据加载到目标系统中的计算机系统,或者一种承载由控制装置的处理器执行的计算机可执行代码的计算机程序产品。下面描述数个发明实施例。
一个实施例提供一种用于将数据加载到目标系统中的计算机实现的方法。所述数据包括实体。每个实体具有对应的唯一主数据值和一个或多个对应的辅助数据值。所述辅助数据值的至少一部分具有关联的外键关系。每个外键关系将所述对应的辅助数据值链接到另一个实体的对应主数据值。所述方法包括以下步骤。
通过执行包括执行连续迭代的迭代过程,将所述实体分成插入叶组。每次迭代的执行包括生成相应的插入叶组集合。所述相应的插入叶组集合包含所有这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的实体的主数据值没有外键关系或者仅具有一个或多个外键关系。执行所述迭代过程直到没有剩下这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的一个或多个实体的主数据值没有外键关系或者仅具有一个或多个外键关系。记录所述插入叶组集合的生成序列。
根据所述序列,将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续上传到所述目标系统中。
该方法可以具有以下优点:在单个步骤中,将每个插入叶组以及链接所述插入叶组的辅助数据值与所述对应的主数据值的所述外键关系加载到所述目标系统中。在上传所有插入叶组之后,不需要用于更新外键关系的其它步骤。
根据本发明的另一个实施例,所述外键关系的至少一部分可以是循环外键关系。所述循环外键关系将包括通过所述循环外键关系链接的对应主数据值和辅助数据值的实体链接成一个或多个循环。链接成所述一个或多个循环的所述实体包括一个或多个循环实体。当所有循环实体以及链接所有循环实体的所述主数据值与所述对应的辅助数据值的所述外键关系被视为从所述数据中删除时,所述数据不再包括所述实体的任何循环。有关循环外键关系的描述和标识的进一步信息在“Handbook of combinatorial optimization(组合优化手册)”一书(增刊卷A,Kluwer Academic Publishers,第209-259页)中发布。
上述方法包括其它步骤。
生成插入循环组集合。所述插入循环组集合包括所有循环实体。在将所述实体分成插入叶组期间,所有循环实体以及链接所述所有循环实体的主数据值与所述对应的辅助数据值的所述外键关系被视为从所述数据中删除。
在将所述实体的所述叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续插入到所述目标系统中之前,将所述插入循环组集合的所述实体插入到所述目标系统中。
在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续插入到所述目标系统中之后,将链接所述插入循环组集合的所述实体的所述辅助数据值与所述对应的主数据值的所述外键关系插入到所述目标系统中。
该实施例的方法可以具有以下优点:自动和直接处理所述插入循环组。这种数据处理方式不需要任何区分大小写的调优和/或优化。
根据本发明的另一个实施例,在将所述实体分成所述插入叶组之前,执行生成所述插入循环叶组集合。
与先前实施例相比,这种数据处理方式可以实现减少所述插入叶组的数量,其中首先启动将所述实体分成所述插入叶组。
根据另一个实施例,在将所述实体分成所述插入叶组之后并且在将所述插入循环组集合的所述实体加载到所述目标系统中之前,执行使用尚未分成所述插入叶组的实体生成所述插入循环组集合,其中在生成所述插入循环组集合之后并且在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之前,还执行将所述实体分成所述插入叶组和记录所述插入叶组集合的所述生成序列。
当没有有关数据中存在或缺少循环实体的已知现有知识时,这种数据处理方式可以具有优点。在数据中没有循环实体的情况下,在单个无中断迭代过程中将所述实体分成所述插入叶组。
根据本发明的另一个实施例,在将所述实体分成所述插入叶组之后并且在将所述插入循环组集合的所述实体加载到所述目标系统中之前,执行使用尚未分成所述插入叶组的实体生成所述插入循环组集合,其中在生成所述插入循环组集合之后并且在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之前,执行以下操作:删除所述序列,在删除所述序列之后,通过执行包括执行所述连续迭代的所述迭代过程,重新开始将所述实体分成所述插入叶组。
当在生成所述插入循环组之前将所述实体的一部分分成一个或多个插入叶组时,与所述过程相比,这种数据处理方式可以具有以下优点:减少所述插入叶组的数量。
根据本发明的另一个实施例,将所述插入叶组的所述实体集合连续加载到所述目标系统中包括:将所述插入叶组集合的所述实体分成至少两个叶组部分;以及通过并发执行将所述至少两个叶组部分中的每个部分的实体以及链接实体的辅助数据值与所述对应的主数据值的所述外键关系加载到所述目标系统中,将所述至少两个叶组部分中的所述每个部分加载到目标数据库中。
在启用并行数据处理的情况下,这种数据处理方式可以能够加速数据上传。
根据本发明的另一个实施例,将所述插入循环组集合的所述实体加载到所述目标系统中包括:将所述插入循环组集合的所述实体分成至少两个循环组部分;以及通过并发执行将所述至少两个循环组部分中的每个部分的实体加载到所述目标系统中,将所述至少两个循环组部分中的每个所述部分加载到目标数据库中。
在启用并行数据处理的情况下,这种数据处理方式可以能够加速数据上传。
根据本发明的另一个实施例,将链接所述插入循环组集合的所述实体的所述辅助数据值与所述对应的主数据值的所述外键关系加载到所述目标系统中包括:将链接所述插入循环组集合的所述实体的所述辅助数据值与所述对应的主数据值的所述外键关系分成至少两个关系组部分;以及通过并发执行将所述至少两个关系组部分中的每个部分的所述外键关系加载到所述目标系统中,将所述至少两个关系组部分中的所述每个部分加载到所述目标系统中。
在启用并行数据处理的情况下,这种数据处理方式可以能够加速数据上传。
根据本发明的另一个实施例,所述计算机实现的方法包括以下操作。
生成有向图。每个实体对应于所述图的唯一节点。每个外键关系对应于所述图的唯一边。对于链接相应的辅助数据值与相应的主数据值的给定外键关系,图边在与包括所述相应的辅助数据值的实体对应的节点处开始,并且在与包括所述相应的主数据值的实体对应的节点处结束。
使用有向图可以能够使用先前开发的各种软件库以便进行图处理。此外,它用于更好地展示、理解和应用所述计算机实现的方法。
另一个实施例提供一种计算机程序产品,具体地说一种计算机可读介质。所述计算机程序产品承载由控制装置的处理器执行的计算机可执行代码。所述指令的执行导致所述处理器执行上述用于将数据加载到目标系统中的计算机实现的方法的部分或全部步骤。
另一个实施例提供一种用于将数据加载到目标系统中的计算机系统。所述计算机系统可操作以执行上述用于将数据加载到目标系统中的计算机实现的方法的部分或全部步骤。
附图说明
通过以下结合附图的详细描述,将很容易地理解本发明,这些附图是:
图1是用于加载到目标系统中的示例数据;
图2是示例目标数据库;
图3是可操作以便将源数据库的数据加载到目标数据库中的系统;
图4是用于将数据加载到目标系统中的过程块的流程图;
图5是加载第一插入组和循环组之后的示例数据库;
图6是加载第一插入组、循环组和第二插入组之后的示例数据库;
图7是加载所有插入组之后的示例数据库;
图8是用于将数据加载到目标系统中的过程块的另一流程图;
图9是用于将数据加载到目标系统中的过程块的另一流程图;
图10是用于使用要加载到目标系统中的数据生成有向图的过程块的流程图;
图11是使用要加载到目标系统中的数据生成的有向图;
图12是用于使用有向图生成插入组的过程块的流程图;
图13是示出将有向图的节点分成插入组以及用于生成插入组的流程图过程块的对应执行序列的表;
图14是用于将对应于插入组的节点的实体加载到目标系统中的过程块的流程图;
图15是用于使用要加载到目标系统中的数据生成有向图的伪代码程序;
图16是用于使用有向图生成插入组的伪代码程序;
图17是用于将对应于插入组的节点的实体加载到目标系统中的伪代码程序。
具体实施方式
如通常那样,对象实例包括存储在一个或多个表中的数据。表和对象实例可以通过关系链接。存储在多个表中的相同对象实例的数据之间的关系很简单,以便在必须将它们加载到目标系统中时处理。目标系统如通常那样提供能力以便在单个步骤中上传对象实例的所有相关数据的内容,并且目标系统自动在存储在多个表中的相同对象实例的数据之间建立所有关系。这种接口的示例是Systems Applications and Products in DataProcessing(SAP)应用系统中的中间文档(IDoc)接口。
当对象实例的表包括属于通过外键关系链接的不同对象实例的实体(或记录)时,上传对象实例更加复杂。外键关系可以链接一个表中的实体和/或不同表中的实体。SAP企业资源规划(ERP)之类的应用系统可以处理这些情况。该应用系统采用数个步骤执行上传。首先上传具有空外键关系的所有实例。然后从目标系统中提取所有新分配的标识符(或主键,或主值)。根据实体之间的原始外键关系,在目标系统中更新提取的标识符。
这种方法具有以下缺点。每个实例必须处理两次,从而导致更长的上传所用时间。根据项目类型,这可能不仅导致延迟问题,而且例如还导致更长的业务中断周期。此外,必须实现两个不同接口,即,用于数据上传的第一接口和用于外键关系更新的第二接口。在SAP中,IDOC接口用作第一接口,业务应用编程接口(BAPI)用作第二接口。这需要大量人为工作以便实现和测试两个不同接口的逻辑馈送。此外,当对象实例具有将它们链接成一个或多个循环的外键关系时,需要第二接口的特殊优化。在尚未更新上传的实例的外键关系之前,不能使用这些实例。因此,必须阻止目标系统以便避免不一致性和不正确的使用。
如将从以下描述清晰看到的那样,本发明没有上述缺点并且具有以下优点。可以采用一系列步骤执行上传,这不需要在将数据加载到目标系统中之后更新外键关系。可以采用直接自动的方式处理将实体链接成一个或多个循环的外键关系。在上传期间,每个实体仅被处理一次。可以使用并行处理执行上传和/或可以并发上传实体的各个部分。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
也要注意的是,框图和/或流程图中的每个过程块、以及框图和/或流程图中的过程块的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
图1示出要加载到目标系统中的示例数据。在四个表中提供数据,这些表汇总了某个公司的业务关系和联合项目。表100表示合作公司列表。表101表示联合项目列表。表102表示主要联系人列表。表103表示项目类型列表。每个第一表列表示包括辅助数据值的记录(也称为表中的行、元组或实体)的主键(也称为标识号(ID)、主数据值或标识符)。例如,表合作公司列表中的第一记录包括作为主数据值的“1”和作为辅助数据值的“A”、“John”、“23”。为了展示,在表级别示出项目ID的外键关系(113、115、116、117)之外的所有外键关系(110、111、112、113、115、116、117)。在实体级别示出项目ID的外键关系(113、115、116、117)。
图2示出示例目标数据库。目标数据库用于加载图1中示出的数据。目标数据库包括四个表,这些表汇总了另一个公司的业务关系和联合项目。表700表示合作公司列表。表701表示联合项目列表。表702表示主要联系人列表。表703表示项目类型列表。每个第一表列表示包括辅助数据值的记录的主键。例如,表合作公司列表中的第一记录包括作为主数据值的“1”和作为辅助数据值的“D”、“Kate”、“48”。在实体级别示出所有外键关系(710、711、712、713、714)。
图3示出可操作以将源数据库801的数据加载到目标数据库821中的系统810。包括源数据库的第一服务器800经由计算机网络830连接到系统810。包括目标数据库的第二服务器820经由计算机网络830连接到系统810。所述系统包括源适配器811、元组重新排序单元812和插入单元813。尽管所述系统被示出为独立单元,但它可以集成在服务器800和820之一中。备选地,系统810的各种组件可以集成在服务器800和820两者中。源数据库801可以包括图1中示出的示例数据,目标数据库821可以包括图2中示出的示例目标数据库。
图4示出用于将数据加载到目标系统中的过程块的流程图。所述数据包括实体。每个实体包括对应的唯一主数据值和一个或多个对应的辅助数据值。所述辅助数据值的至少一部分具有关联的外键关系。每个外键关系将对应的辅助数据值链接到另一个实体的对应的主数据值。所述外键关系的至少一部分是循环外键关系。所述循环外键关系将包括通过循环外键关系链接的对应的主数据值和辅助数据值的实体链接成一个或多个循环。链接成一个或多个循环的实体包括一个或多个循环实体。当所有循环实体以及链接所有循环实体的主数据值与对应辅助数据值的外键关系被视为从所述数据中删除时,所述数据不再包括实体的任何循环。
在下面,将通过使用图4的流程图、图1中示出的示例数据、图2中示出的示例目标数据库和图3中示出的系统,讨论用于将数据加载到目标系统中的过程。
当接收有关将第一数据库801的表100、101、102、103中的数据加载到第二数据库821的请求时,数据迁移计算机810导致源适配器811将数据从第一数据库下载到数据迁移计算机810。然后元组重新排序单元812执行图4中示出的流程图的过程块20、22、10和21。
在过程块20中,通过执行包括执行连续迭代的迭代过程,将所述实体分成插入叶组。每次迭代的执行包括生成相应的插入叶组集合。所述相应的插入叶组集合包含所有这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的实体的主数据值没有外键关系或者仅具有一个或多个外键关系。执行所述迭代过程直到没有剩下这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的一个或多个实体的主数据值没有外键关系或者仅具有一个或多个外键关系。记录所述插入叶组集合的生成序列。集合中的插入叶组数量可以是任意的,备选地,可以根据用于执行将数据加载到目标系统中的过程的计算机的规范选择该数量。
根据过程块20处理图1中示出的示例数据将导致生成第一插入叶组集合。所述第一插入叶组集合包括表103的所有实体,因为这些实体的辅助值没有任何外键关系。不可能进一步生成插入叶组集合,因为表100-102中的实体通过外键关系链接成循环。
在决策过程块22中,将分成插入叶组的实体数量与实体总数相比较。在将所有实体分成插入叶组的情况下,执行过程块40,否则执行过程块10、21、30、40和50。
在处理图1中示出的示例数据的情况下,在决策过程块22中检测到未将所有实体分成插入叶组。因此,在过程块10、21、30、40和50中执行示例数据的进一步处理。
在过程块10中,生成插入循环组集合。插入循环组集合包括所有循环实体。尚未分成一个或多个插入叶组的实体可以用于生成循环插入组集合。在将实体分成插入叶组期间,所有循环实体以及链接所有循环实体的主数据值与对应辅助数据值的外键关系被视为从数据中删除。插入循环组集合中的插入循环组数量可以是任意的,备选地,可以根据用于执行将数据加载到目标系统中的过程的计算机的规范选择该数量。
根据过程块10处理图1中示出的示例数据将导致生成插入循环组集合。该集合包括表100的所有实体,因为表100的每个实体在两个对应的实体循环中。例如,包含在表100中具有ID=“1”的循环实体的第一循环包括在表100中具有ID=“1”的实体和在表102中具有ID=“John”的实体,其中在表100中具有ID=1的实体包括通过外键关系与在表102中具有ID=“John”的实体的主数据值链接的辅助数据值“John”,在表102中具有ID=“John”的实体包括通过外键关系与在表100中具有ID=“1”的实体的主数据值链接的辅助值“1”。包含在表100中具有ID=“1”的循环实体的第二循环包括在表100中具有ID=“1”的实体、在表101中具有ID=“23”的实体,以及在表102中具有通过对应外键关系链接的ID=“John”的实体,其中在表100中具有ID=“1”的实体包括通过外键关系与在表101中具有ID=“23”的实体的主数据值链接的辅助数据值“23”,在表中具有ID=“23”的实体包括通过外键关系与在表102中具有ID=“John”的实体的主数据值链接的辅助数据值“John”,以及在表102中具有ID=“John”的实体包括通过外键关系与在表100中具有ID=“1”的实体的主数据值链接的辅助值“1”。
根据过程块21处理图1中示出的示例数据将导致生成第二、第三和第四插入叶组插入集合。因为先前生成的插入叶组和循环组的所有实体不会被进一步处理,所以过程块21的执行将导致生成另外三个插入叶组集合。每个插入叶组集合包括实体的唯一部分。第二集合包括表102的所有实体。第三集合包括在表101中具有ID=“23”和ID=“56”的实体。第四集合包括在表101中具有ID=“98”的实体。
在过程块30中,将插入循环组集合的实体加载到目标系统中。可以相互并发地加载每个循环组的实体。备选地,可以将插入循环组集合的实体分成数个插入循环子组,并且可以与其它插入循环子组并发地加载每个插入循环子组。
在过程块40中,根据所述序列,将所述实体的插入叶组集合以及链接所述实体的辅助数据值与对应主数据值的外键关系连续加载到目标系统中。可以相互并发地加载每个集合的插入叶组。备选地,可以将每个插入叶组集合的实体以及链接实体的辅助数据值与对应主数据值的外键关系分成数个插入叶子组,并可与其它插入叶子组并发地加载每个插入叶子组。
在过程块50中,将链接插入循环组集合的实体的辅助数据值与对应主数据值的外键关系加载到目标系统中。可以相互并发地上传链接每个插入循环组的实体的辅助数据值的外键关系。备选地,可以将链接插入循环组集合的实体的辅助数据值的外键关系分成外键关系子组,并且可以与其它外键关系子组并发地上传每个外键关系子组。
所属技术领域的技术人员应该明确理解,过程块21和30可以相互并发地执行或者以相反的顺序执行。
图3中示出的数据迁移系统810的插入单元813执行过程块30、40和50。
图5-7示出在执行图4中示出的过程块30、40和50期间,示例目标数据库中的更改。图5示出上传插入循环组集合和第一插入叶组集合的实体之后的目标数据库。因为标识符“1”已经用于目标数据库中,所以插入循环组的实体的标识符相应地重新编号。在这种情况下,插入循环组的实体的标识符递增1。不上传列“contact person(联系人)”和“jointproject(联合项目)”中的循环插入组的实体的辅助值,因为它们将在过程块50中作为链接实体的辅助数据值与对应主数据值的外键关系上传。采用与插入循环组实体的标识符类似的方式,对第一插入叶组的实体的标识符进行重新编号。图6示出上传插入循环组集合、第一插入叶组集合和第二插入叶组集合的实体之后的目标数据库。表702被完全填充,其中使用来自表700的公司ID的已更新标识符。图7示出上传插入循环组集合、第一插入叶组集合、第二插入叶组集合和第三插入叶组集合的实体之后的目标数据库。表701被完全填充。
图8示出用于将数据加载到目标系统中的过程块的另一个流程图。该流程图开始于过程块10。按照上面所述执行过程块10。
使用图1中示出的示例数据执行图8中示出的流程图的过程块10导致生成插入循环组集合。所述插入循环组集合包括表100的所有实体。
在过程块10之后执行过程块20。按照上面所述执行过程块20。
使用图1中示出的示例数据执行图8中示出的流程图的过程块20导致生成第一、第二和第三插入叶组集合。第一插入叶组集合包括表103和102的所有实体。第二插入叶组集合包括在表101中具有ID=“23”和ID=“56”的实体。第三插入叶组集合包括在表101中具有ID=“98”的实体。因此,与图4中示出的过程块的流程图相比,执行图8中示出的过程块的流程图导致生成更少数量的插入叶组集合。
采用与图4中示出的过程块30、40和50相同的方式,执行图8中示出的过程块30、40和50。
所属技术领域的技术人员应该明确理解,过程块20和30可以相互并发地执行或者以相反的顺序执行。
在未将实体链接成一个或多个循环的情况下,可以通过仅执行过程块20和40,将数据加载到目标系统中。
图9示出用于将数据加载到目标系统中的过程块的另一个流程图。流程图首先按照上面所述相同的方式执行过程块20。在决策过程块22中,将分成插入叶组的实体数量与实体总数相比较。在将所有实体分成插入叶组(即,数据不包括链接成一个或多个循环的实体)的情况下,按照上面所述执行过程块40。备选地,如果未将所有实体分成插入叶组,则在过程块23中删除所述序列。此外,按照上面所述执行过程块10。未在先前执行的过程块20中分成一个或多个插入组的实体可以用于在过程块10中生成插入循环组集合。在过程块24中,采用与过程块20的描述中相同的方式,重新开始和执行将实体分成插入叶组。此外,采用与上面所述相同的方式执行过程块30、40和50。所属技术领域的技术人员应该明确理解,过程块24和30可以相互并发地执行或者以相反的顺序执行。
图4、8和9中示出的每个流程图都具有它自己的优点。可以由要加载到目标系统中的数据的结构来确定对每个流程图的选择。例如,如果事先知道数据包括循环实体,则使用图8中示出的流程图可以是最佳选择,因为图8中示出的流程图首先生成插入循环组。此外,与图4的流程图相比,在将实体分成插入叶组之前生成插入循环组可以导致更少数量的已生成插入叶组。
如果缺少有关数据结构的现有知识,则使用图4中示出的流程图可以是最佳选择。在数据不包括任何循环实体的情况下,将不会在数据库中搜索循环实体方面浪费计算时间和/或计算机资源,并且将处理算法减少到执行过程块20和40。
因为标识插入循环组集合可以比将实体分成插入叶组需要多得多的计算时间和/或计算机资源,所以减少其中标识循环组的数据量可以是有利的。该概念体现在图9的流程图中。首先,在过程块20中,生成所有可能的插入叶组。然后使用尚未分成插入叶组的实体,生成插入循环组。
图10示出用于使用要加载到目标系统中的数据生成有向图的过程块的流程图。在过程块200中,执行包括过程块201的循环直到处理所有数据实体。在过程块200的迭代期间,逐个处理所有实体。在处理框201中,生成对应于当前实体的图节点。当完全执行过程块200和201时,生成完整的图节点集合,其中每个实体具有唯一的图节点。然后执行由过程块202和203控制的另外两个循环。将决策过程块203控制的循环嵌入到决策过程块202控制的循环中。在过程块202控制的循环中,逐个处理实体,在过程块203控制的嵌入式循环中,执行过程块204。在过程块203和204中,逐个处理在决策过程块202中选择的当前实体的所有外键关系。在过程块204中,将当前实体的辅助数据值的所有外键关系转换为有向图的链接当前实体的节点与其它实体的其它节点的边。当完全执行过程块202、203和204时,完成生成有向边,其中对于链接相应辅助数据值与相应主数据值的给定外键关系,图边在与包括相应辅助数据值的实体对应的节点处开始,并且在与包括相应主数据值的实体对应的节点处结束。
图11示出使用图10中提供的算法和图1中提供的输入数据100、101、102、103生成的有向图299。表100、101、102、103中的每个记录由有向图299中的唯一节点300、301、302、330、331、332、333、310、311、312、320、321和322表示。例如,表合作公司列表100中的记录“1”、“2”和“3”相应地由节点300、301和302表示。外键关系110、111、112、113、114、115、116和117由图边350-367表示。节点300、301和302属于反馈节点集合。反馈节点集合可以定义如下:反馈节点集合是通过循环中的图边链接的节点的一部分,其中当从有向图中删除所述反馈节点时,有向图不包括通过循环中的图边连接的节点。例如,节点300是两个节点循环的一部分。第一循环包括通过图边353、351和350链接的节点300、330和310。第二循环包括通过图边352和353链接的节点300和330。如果删除节点300以及链接该节点与其它节点的图边352、353和351,则也从图中删除上述两个循环。
图12示出用于使用有向图生成插入组的过程块的流程图。在过程块500中,将迭代计数器i设置为1。在过程块501中,将选择集合S初始化为空。在过程块502中,将反馈节点集合F初始化为空。在过程块503中,将图的所有叶节点(没有外出边的节点)选择到选择集合S中。在决策过程块504中,控制选择集合S是否为空。在选择集合S为空的情况下,执行过程块505、506和507,并且算法进一步继续到过程块503。在过程块505中,标识反馈节点集合F。在过程块506中,将反馈节点集合F选择到循环插入组C中。在过程块507中,从图中删除插入组C的所有节点及其相邻边。在决策过程块504中确定选择集合S不为空的情况下,执行包括过程块508、509、510、511和512的循环,并且过程进一步继续到过程块503。在过程块508中,将选择集合S的节点选择到当前迭代的当前插入组I_i中。在过程块509中,从图中删除当前插入组I_i的节点及其相邻边。在决策过程块510中,检查是否从图中删除所有节点。在从图中删除所有节点的情况下,停止算法的执行,否则执行过程块511。在过程块511中,迭代计数器i递增1。在过程块512中,清空选择集合S。
备选地,标记而不是删除选择到插入组中的节点及其相邻边。在过程块509和507中执行标记。在决策过程块510中,当标记了所有节点时,停止算法的执行。在过程块503中,将没有外出未标记边的未标记节点选择到选择集合S中。
图13表示示出将图11中所示的有向图的节点选择到插入组中以及用于生成图12中所示的插入组的流程图过程块的对应执行序列的表。在第一迭代中,执行过程块500、501、502、503、504、508、509、510、511和512,并且将节点320、321和322选择到第一选择组中。在第二迭代中,执行决策过程块504的两个循环。首先,执行过程块503、504、505、506和507,并且将节点300、301和302选择到循环插入组中。然后执行过程块503、504、508、509、510、511和512,并且将节点330、331、332和333选择到第二插入组中。在第三迭代中,执行过程块503、504、508、509、510、511和512,并且将节点310和311选择到第三插入组中。在第四迭代中,执行过程块503、504、508、509和510,并且将节点312选择到第四插入组中。
图14示出用于将对应于插入组的节点的实体加载到目标系统中的过程块的流程图。在过程块600中,执行循环直到将对应于循环插入组的节点的所有数据实体插入到目标系统中。在过程块601中,逐个将对应于循环插入组的节点的数据实体加载到目标系统中而没有数据实体的外键关系。当完全执行过程块600和601时,将对应于插入循环组的节点的所有实体加载到目标系统中。在过程块603中,将迭代计数器j的值设置为1。然后执行由过程块604和605控制的另外两个循环。决策过程块605控制的循环被嵌入到过程块604控制的循环中。在过程块604控制的循环中,执行循环直到迭代计数器超过插入叶组数量。在过程块604控制的循环中,根据所有插入叶组的编号处理这些组。在过程块604控制的循环的每次迭代中,执行一次过程块605控制的嵌入式循环,并且在过程块602中使迭代计数器递增1。执行决策过程块605控制的循环,直到处理由迭代计数器的值确定的当前插入叶组的所有节点。在过程块605控制的循环的每次迭代中,执行一次过程块606。在过程块605控制的循环中,逐个处理对应于当前插入叶组的节点的实体。在过程块606中,将对应于当前插入叶组的当前节点的实体以及链接该实体的辅助数据值与对应主数据值的外键关系加载到目标系统中。在完全执行过程块604、602、605和606之后,将所有实体以及链接所述实体的辅助数据值与对应主数据值的外键关系加载到目标系统中。然后执行由过程块607控制的另一个循环,直到处理对应于插入循环组的节点的所有实体。在决策过程块607控制的循环的每次迭代中,执行过程块608。在过程块608中,将链接当前实体的辅助数据值与对应主数据值的外键关系加载到目标系统中,其中通过过程块607确定当前实体。当完全执行过程块607和608时,将链接所述实体的辅助数据值与对应主数据值的所有外键关系加载到目标系统中。
图15示出图10中表示的流程图的伪代码实现。使用给定表模式S的元组集合T作为输入(行1),并且在执行算法之后产生有向图G=(N,E)(行3和22)。在伪代码的行9-13中,形成有向图的节点的创建过程。这部分伪代码对应于图5中的过程块200和201。在伪代码的行15-20中,形成有向图的边的创建过程。这部分伪代码对应于图5中的过程块202、203和204。所属技术领域的技术人员将了解所述伪代码的每个细节。
图16示出用于生成插入组的算法的伪代码实现。该算法是图12中提供的流程图的一部分的详细实现。使用有向图G=(N,E)作为输入,并且由于执行算法而生成插入组。C是初始化为空的循环插入集合(行6),Q是先进先出缓冲器(FIFO)(行9),V[n]是线性数组,其中线性数组的每个元素对应于唯一节点并且等于对应节点的外出边数量(行10和17),变量m等于图中的节点数量(行11)。将没有外出边的节点推入FIFO缓冲器Q(行20)。将所有边c[e]涂成黑色(行24-26)。将节点选择到插入组中(行29-57)。在未将所有节点选择到插入组中的情况下,将循环节点选择到插入循环组中并且将循环节点及其相邻边从图中删除(行59-64),然后重复将节点选择到插入组中的过程。所属技术领域的技术人员将了解所述伪代码的每个细节。
图17表示图14中示出的流程图的伪代码实现。伪代码的一部分(行3-6)对应于过程块600和601。伪代码的另一部分(行9-14)对应于过程块603、604、602、605和606。伪代码的另一部分(行17-20)对应于过程块607和608。所属技术领域的技术人员将了解所述伪代码的每个细节。

Claims (14)

1.一种用于将数据(100、101、102、103)加载到目标系统(820)中的计算机实现的方法,其中所述数据包括实体,每个所述实体具有对应的唯一主数据值和一个或多个对应的辅助数据值,所述辅助数据值的至少一部分具有关联的外键关系(115、116、117、114),每个外键关系将所述对应的辅助数据值链接到另一个实体的对应主数据值,所述方法包括:
通过执行包括执行连续迭代的迭代过程,将所述实体分成插入叶组,其中每次迭代的执行包括生成相应的插入叶组集合,所述相应的插入叶组集合包含所有这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的实体的主数据值没有外键关系或者仅具有一个或多个外键关系,其中执行所述迭代过程直到没有剩下这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的一个或多个实体的主数据值没有外键关系或者仅具有一个或多个外键关系,其中记录所述插入叶组集合的生成序列;以及
根据所述序列,将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中(40)。
2.根据权利要求1的方法,其中所述外键关系的至少一部分是循环外键关系,其中所述循环外键关系将包括通过所述循环外键关系链接的对应主数据值和辅助数据值的实体链接成一个或多个循环,其中链接成所述一个或多个循环的所述实体包括一个或多个循环实体,其中当所有循环实体以及链接所有循环实体的所述主数据值与所述对应的辅助数据值的所述外键关系被视为从所述数据中删除时,所述数据不再包括所述实体的任何循环,其中所述方法还包括:
生成插入循环组集合,所述插入循环组集合包括所有循环实体,其中在将所述实体分成插入叶组期间,所有循环实体以及链接所述所有循环实体的主数据值与所述对应的辅助数据值的所述外键关系被视为从所述数据中删除;
在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之前,将所述插入循环组集合的所述实体加载到所述目标系统中(30);以及
在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之后,将链接所述插入循环组集合的所述实体的所述辅助数据值与所述对应的主数据值的所述外键关系加载到所述目标系统中(50)。
3.根据权利要求2的方法,其中在将所述实体分成所述插入叶组之前,执行生成包括所有循环实体的所述插入循环组集合。
4.根据权利要求2的方法,其中在将所述实体分成所述插入叶组之后并且在将所述插入循环组集合的所述实体加载到所述目标系统中之前,执行使用尚未分成所述插入叶组的实体生成所述插入循环组集合,其中在生成所述插入循环组集合之后并且在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之前,还执行将所述实体分成所述插入叶组以及记录所述插入叶组集合的所述生成序列。
5.根据权利要求2的方法,其中在将所述实体分成所述插入叶组之后并且在将所述插入循环组集合的所述实体加载到所述目标系统中之前,执行使用尚未分成所述插入叶组的实体生成所述插入循环组集合,其中在生成所述插入循环组集合之后并且在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之前,执行以下操作:
删除所述序列(23);
在删除所述序列之后,通过执行包括执行所述连续迭代的所述迭代过程,重新开始将所述实体分成所述插入叶组。
6.根据权利要求1的方法,其中根据所述序列,将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中包括:
将所述插入叶组集合之一的所述实体分成至少两个叶组部分;以及
通过并发执行将所述至少两个叶组部分中的每个部分的实体以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系插入到所述目标系统中,将所述至少两个叶组部分中的所述每个部分加载到所述目标系统中。
7.根据权利要求2的方法,其中将所述插入循环组集合的所述实体加载到所述目标系统中包括:
将所述插入循环组集合的所述实体分成至少两个循环组部分;以及
通过并发执行将所述至少两个循环组部分中的每个部分的实体插入到所述目标系统中,将所述至少两个循环组部分中的所述每个部分加载到目标数据库中。
8.根据权利要求2的方法,其中将链接所述插入循环组集合的所述实体的所述辅助数据值与所述对应的主数据值的所述外键关系加载到所述目标系统中包括:
将链接所述插入循环组集合的所述实体的所述辅助数据值与所述对应的主数据值的所述外键关系分成至少两个关系组部分;以及
通过并发执行将所述至少两个关系组部分中的每个部分的所述外键关系插入到所述目标系统中,将所述至少两个关系组部分中的所述每个部分加载到所述目标系统中。
9.根据权利要求1的方法,还包括:
生成有向图(299),其中每个实体对应于所述图的唯一节点,每个外键关系对应于所述图的唯一边,其中对于链接相应的辅助数据值与相应的主数据值的给定外键关系,图边在与包括所述相应的辅助数据值的实体对应的节点处开始,并且在与包括所述相应的主数据值的实体对应的节点处结束。
10.一种用于将数据(100、101、102、103)加载到目标系统(820)中的计算机系统(810),其中所述数据包括实体,每个所述实体具有对应的唯一主数据值和一个或多个对应的辅助数据值,所述辅助数据值的至少一部分具有关联的外键关系(115、116、117、114),每个外键关系将所述对应的辅助数据值链接到另一个实体的对应主数据值,所述计算机系统包括:处理器;
耦接到所述处理器的存储器;
存储在所述存储器中的计算机程序指令,所述处理器执行所述计算机程序指令以实现:通过执行包括执行连续迭代的迭代过程,将所述实体分成插入叶组,其中每次迭代的执行包括生成相应的插入叶组集合,所述相应的插入叶组集合包含所有这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的实体的主数据值没有外键关系或者仅具有一个或多个外键关系,其中执行所述迭代过程直到没有剩下这样的实体:这些实体的辅助数据值与在执行任何先前迭代期间生成的插入叶组的一个或多个实体的主数据值没有外键关系或者仅具有一个或多个外键关系,其中记录所述插入叶组集合的生成序列;以及
根据所述序列,将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中。
11.根据权利要求10的系统,其中所述外键关系的至少一部分是循环外键关系,其中所述循环外键关系将包括通过所述循环外键关系链接的对应主数据值和辅助数据值的实体链接成一个或多个循环,其中链接成所述一个或多个循环的所述实体包括一个或多个循环实体,其中当所有循环实体以及链接所有循环实体的所述主数据值与所述对应的辅助数据值的所述外键关系被视为从所述数据中删除时,所述数据不再包括所述实体的任何循环,所述处理器进一步执行所述计算机程序指令以实现:
生成插入循环组集合,所述插入循环组集合包括所有循环实体,其中在将所述实体分成插入叶组期间,所有循环实体以及链接所述所有循环实体的主数据值与所述对应的辅助数据值的所述外键关系被视为从所述数据中删除;
在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之前,将所述插入循环组集合的所述实体加载到所述目标系统中;以及
在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之后,将链接所述插入循环组集合的所述实体的所述辅助数据值与所述对应的主数据值的所述外键关系加载到所述目标系统中。
12.根据权利要求11的系统,其中所述处理器进一步执行所述计算机程序指令以实现在将所述实体分成所述插入叶组之前,执行生成包括所有循环实体的所述插入循环组集合。
13.根据权利要求11的系统,其中所述处理器进一步执行所述计算机程序指令以实现:
在将所述实体分成所述插入叶组之后并且在将所述插入循环组集合的所述实体加载到所述目标系统中之前,执行使用尚未分成所述插入叶组的实体生成所述插入循环组集合;以及
在生成所述插入循环组集合之后并且在将所述实体的所述插入叶组集合以及链接所述实体的辅助数据值与所述对应的主数据值的所述外键关系连续加载到所述目标系统中之前,还执行将所述实体分成所述插入叶组集合以及记录所述插入叶组集合的所述生成序列。
14.根据权利要求10的系统,其中所述处理器进一步执行所述计算机程序指令以实现:
生成有向图(299),其中每个实体对应于所述图的唯一节点,每个外键关系对应于所述图的唯一边,其中对于链接相应的辅助数据值与相应的主数据值的给定外键关系,图边在与包括所述相应的辅助数据值的实体对应的节点处开始,并且在与包括所述相应的主数据值的实体对应的节点处结束。
CN201410526574.2A 2013-10-10 2014-10-09 用于加载具有复杂关系的数据的方法和系统 Expired - Fee Related CN104572802B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1317899.1 2013-10-10
GB1317899.1A GB2522832A (en) 2013-10-10 2013-10-10 A method and a system for loading data with complex relationships

Publications (2)

Publication Number Publication Date
CN104572802A CN104572802A (zh) 2015-04-29
CN104572802B true CN104572802B (zh) 2018-01-12

Family

ID=49679829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410526574.2A Expired - Fee Related CN104572802B (zh) 2013-10-10 2014-10-09 用于加载具有复杂关系的数据的方法和系统

Country Status (4)

Country Link
US (1) US9607021B2 (zh)
CN (1) CN104572802B (zh)
DE (1) DE102014113693A1 (zh)
GB (1) GB2522832A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747731B2 (en) * 2017-07-20 2020-08-18 Vmware, Inc. Transferring data using unique identifiers of a table of a relational database
EP3605353B1 (en) * 2018-08-03 2021-09-29 Sap Se Method and system for data transfer between databases
CN109753537A (zh) * 2019-01-25 2019-05-14 中国人民大学 一种从关系数据到图数据的交互式数据迁移方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101048732A (zh) * 2004-08-31 2007-10-03 国际商业机器公司 面向对象的数据集成服务体系结构
CN101147187A (zh) * 2005-04-19 2008-03-19 国际商业机器公司 用于管理分布式异质数据源之间的复杂关系的系统和方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6456995B1 (en) 1998-12-31 2002-09-24 International Business Machines Corporation System, method and computer program products for ordering objects corresponding to database operations that are performed on a relational database upon completion of a transaction by an object-oriented transaction system
US6339777B1 (en) 1999-07-30 2002-01-15 International Business Machines Corporation Method and system for handling foreign key update in an object-oriented database environment
US6542883B1 (en) 2000-03-09 2003-04-01 International Business Machines Corporation Ordering relational database operations according to referential integrity constraints
EP1211610A1 (en) * 2000-11-29 2002-06-05 Lafayette Software Inc. Methods of organising data and processing queries in a database system
US7548898B1 (en) 2001-02-28 2009-06-16 Teradata Us, Inc. Parallel migration of data between systems
US20050165866A1 (en) * 2004-01-28 2005-07-28 Bohannon Philip L. Method and apparatus for updating XML views of relational data
US7536401B2 (en) 2006-08-07 2009-05-19 International Business Machines Corporation Methods, systems, and computer program products for using graphs to solve circular dependency in object persistence
US20080133493A1 (en) 2006-12-04 2008-06-05 Michael Bender Method for maintaining database clustering when replacing tables with inserts
US8010521B2 (en) 2009-03-23 2011-08-30 Sap Ag Systems and methods for managing foreign key constraints
US20110060719A1 (en) 2009-09-05 2011-03-10 Vivek Kapoor Method for Transforming Setup Data in Business Applications
US9020830B2 (en) 2011-03-08 2015-04-28 Apptio, Inc. Hierarchy based dependent object relationships
US20120265734A1 (en) * 2011-04-14 2012-10-18 Microsoft Corporation Incremental compilation of object-to-relational mappings
US9288104B2 (en) * 2011-10-25 2016-03-15 Nicira, Inc. Chassis controllers for converting universal flows
US8832068B2 (en) * 2012-05-22 2014-09-09 Eye Street Research Llc Indirect data searching on the internet

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101048732A (zh) * 2004-08-31 2007-10-03 国际商业机器公司 面向对象的数据集成服务体系结构
CN101147187A (zh) * 2005-04-19 2008-03-19 国际商业机器公司 用于管理分布式异质数据源之间的复杂关系的系统和方法

Also Published As

Publication number Publication date
CN104572802A (zh) 2015-04-29
GB201317899D0 (en) 2013-11-27
GB2522832A (en) 2015-08-12
DE102014113693A1 (de) 2015-05-21
US20150106381A1 (en) 2015-04-16
US9607021B2 (en) 2017-03-28

Similar Documents

Publication Publication Date Title
CN109274754B (zh) 用于在区块链网络中同步数据的方法、设备和存储介质
CN102693302B (zh) 快速文件比对方法、系统及客户端
US9892185B2 (en) Method and system for syncing data structures
EP4089548B1 (en) Attribute-based dependency identification for operation ordering
CN110933953A (zh) 通过使用相关子区块链来扩展区块链效用的系统和方法
US8984392B2 (en) Document synchronization over stateless protocols
JP5826260B2 (ja) 関連データセットの処理
US20200201911A1 (en) Managing a distributed knowledge graph
CN107918612A (zh) 键值存储系统数据结构的实现方法和装置
CN104572802B (zh) 用于加载具有复杂关系的数据的方法和系统
CN104915717A (zh) 数据处理方法、知识库推理方法及相关装置
WO2023093486A1 (zh) 生成项目流的方法、装置、电子设备及存储介质
CN106528071A (zh) 目标代码的选取方法及装置
CN110597821A (zh) 数据仓库表结构变更方法及装置
CN107085613A (zh) 入库文件的过滤方法和装置
CN105843809A (zh) 数据处理方法和装置
CN104794179A (zh) 一种基于知识树的视频快速标引方法及装置
Harhalakis et al. Development of a factory level CIM model
KR102232003B1 (ko) 추적 식별자를 이용한 객체 관리 방법, 장치, 컴퓨터 프로그램 및 그 기록 매체
KR20180077830A (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
CN107818113A (zh) 文件访问位置的确定方法及装置
US11283893B2 (en) Method and system for tracking chain of custody on unstructured data
KR101680945B1 (ko) 조인 연산을 위한 매핑 방법 및 리듀싱 방법,및 그 방법들을 이용한 장치들
US11232121B2 (en) Method, apparatus, and computer-readable medium for data transformation pipeline optimization
JP2009245196A (ja) コンテンツ管理装置及び方法及びプログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180112