CN104662535B - 数据模型中的实体映射 - Google Patents
数据模型中的实体映射 Download PDFInfo
- Publication number
- CN104662535B CN104662535B CN201380049560.XA CN201380049560A CN104662535B CN 104662535 B CN104662535 B CN 104662535B CN 201380049560 A CN201380049560 A CN 201380049560A CN 104662535 B CN104662535 B CN 104662535B
- Authority
- CN
- China
- Prior art keywords
- entity
- node
- data
- expression formula
- source
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
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)
Abstract
接收(402)依据源实体(304‑306)的属性来指定目标实体(308)的属性的映射信息。至少一些源实体对应于一个或多个数据存储系统(104,112)中的各记录集合。对该映射信息进行处理,以生成程序规范(120),用以计算与目标实体的属性对应的值。生成(404)节点集合(600),每一节点集合包括第一节点(602),该第一节点表示与一指定属性相关联的第一关系表达式。至少一些集合形成一有向非循环图,该有向非循环图包括连接到一个或多个其他节点(604‑608)的链接,这些链接表示与至少一个源实体的至少一种属性相关联的各关系表达式,该至少一个源实体被所述有向非循环图中一节点的关系表达式所引用。将所述集合中至少两个集合互相合并(406),以基于比较合并的节点的关系表达式来形成第三集合。
Description
相关申请的交叉引用
本申请要求享有2012年7月24日提交的美国申请号61/675,053的优先权,该申请通过引用合并于此。
背景技术
本申请涉及数据模型中的映射实体。
在信息系统中,数据模型用于描述数据要求、数据类型以及比如正在被处理或存储在数据库中的数据计算结果。数据模型包括实体以及由一个或多个模式所定义的这些实体之间的关系。通常,实体是信息域中的项的抽象,能够独立存在或唯一被识别。关系是指两个或多个实体之间是如何彼此关联的。比如,关系被看作是动词,而实体被看作是名词。模式表示的是一个特定的实体集合以及实体之间的关系。
涉及到与数据模型相关联的数据的复杂运算可通过利用各种数据库运算来执行,例如,联接运算或聚合(或“汇总”)运算。这些运算可表示为流经有向图的数据流,其中运算组件与该有向图的顶点相关联,并且这些组件之间的数据流对应于该有向图的链接(弧、边)。在申请号为5,966,072的美国专利“执行以图表示的运算”中描述了一种执行这类基于图的运算的系统。
发明内容
在一个方案中,通常,一种用于处理一个或多个数据存储系统中数据的方法包括:接收映射信息,该映射信息依据一个或多个源实体的一种或多种属性来指定一个或多个目标实体的一种或多种属性,所述一个或多个源实体的至少一些源实体对应于所述一个或多个数据存储系统中的各记录集合;以及处理所述映射信息以生成程序规范,该程序规范用于计算与一个或多个目标实体的一种或多种属性中的至少一些属性对应的值。所述处理包括:生成多个节点集合,每一集合包括第一节点,该第一节点表示与由所述映射信息指定的属性相关联的第一关系表达式,并且至少一些集合形成一有向非循环图,该有向非循环图包括连接到一个或多个其他节点的链接,这些节点表示与至少一个源实体的至少一种属性相关联的各关系表达式,该至少一个源实体被所述有向非循环图中一节点的关系表达式所引用。所述处理还包括:将所述集合中至少两个集合互相合并,以基于比较合并的节点的关系表达式来形成第三集合。
这些方案可包括一个或多个以下特征。
所述映射信息包括依据第一源实体的一种属性值以及第二源实体的一种属性值来定义目标实体的一种属性值的第一映射规则。
与所述第一映射规则相关联的节点的第一集合包括:表示一第一关系表达式的第一节点,该第一关系表达式包括引用所述第一源实体和所述第二源实体的关系代数运算;第二节点,其连接到所述第一节点,表示包括所述第一源实体的关系表达式;以及第三节点,其连接到所述第一节点,表示包括所述第二源实体的关系表达式。
所述映射信息包括依据所述第一源实体的一种属性值来定义目标实体的一种属性值的第二映射规则。
所述合并包括将与所述第二映射规则相关联的一个或多个节点的第二集合和所述第一集合合并,包括将所述第二节点与所述第二集合中表示包括所述第一源实体的关系表达式的节点进行合并。
所述关系代数运算是一种联接运算。
所述关系代数运算是一种聚合运算。
所述第一源实体和所述第二源实体根据一个模式所定义的关系而彼此相关联。
所述模式包括多个实体,这些实体之间的关系包括如下一种或多种:一对一关系、一对多关系、或多对多关系。
生成所述程序规范包括从所述第三集合生成数据流图,该数据流图包括这样的组件和链接,该组件用于在所述第三集合的各节点中执行对应于关系表达式的操作,该链接表示这些组件的输出端口和输入端口之间的记录流。
生成所述程序规范包括从所述第三集合生成查询语言规范,该查询语言规范包括用于在所述第三集合的各节点中执行对应于关系表达式的操作的查询表达式。
生成所述程序规范包括从所述第三集合生成计算机程序,该计算机程序包括用于在所述第三集合的各节点中执行对应于关系表达式的操作的函数或表达式。
所述计算机程序在由以下编程语言中的至少一种编程语言中指定:Java、C或C++。
该方法还包括根据所述程序规范来处理所述数据存储系统中的记录,以计算与一个或多个目标实体的一种或多种属性中至少一些属性对应的值。
在另一个方案中,通常,一种计算机可读存储介质,存储用于处理一个或多个数据存储系统中数据的计算机程序。所述计算机程序包括用于使计算机系统执行以下操作的指令:接收映射信息,该映射信息依据一个或多个源实体的一种或多种属性来指定一个或多个目标实体的一种或多种属性,所述一个或多个源实体的至少一些源实体对应于所述一个或多个数据存储系统中的各记录集合;以及处理所述映射信息以生成程序规范,用于计算与一个或多个目标实体的一种或多种属性中的至少一些属性对应的值。所述处理包括:生成多个节点集合,每一集合包括第一节点,该第一节点表示与由所述映射信息指定的属性相关联的第一关系表达式,并且至少一些集合形成一有向非循环图,该有向非循环图包括连接到一个或多个其他节点的链接,这些节点表示与至少一个源实体的至少一种属性相关联的各关系表达式,该至少一个源实体被所述有向非循环图中的一个节点的关系表达式所引用。所述处理还包括:将所述集合中至少两个集合互相合并,以基于比较合并的节点的关系表达式来形成第三集合。
在另一个方案中,通常,一种计算机系统包括:一个或多个数据存储系统;一个输入设备或端口,其用于接收依据一个或多个源实体的一种或多种属性来指定一个或多个目标实体的一种或多种属性的映射信息,所述一个或多个源实体的至少一些源实体对应于所述一个或多个数据存储系统中的各记录集合;以及至少一个处理器,配置为处理所述映射信息以生成程序规范,以便计算与一个或多个目标实体的一种或多种属性中的至少一些属性对应的值。所述处理包括:生成多个节点集合,每一集合包括第一节点,该第一节点表示与由所述映射信息指定的属性相关联的第一关系表达式,并且至少一些集合形成一有向非循环图,该有向非循环图包括连接到一个或多个其他节点的链接,这些节点表示与至少一个源实体的至少一种属性相关联的各关系表达式,该至少一个源实体被所述有向非循环图中的一个节点的关系表达式所引用。所述处理还包括:将所述集合中至少两个集合互相合并,以基于比较合并的节点的关系表达式来形成第三集合。
在另一个方案中,通常,一种计算机系统包括:一个或多个数据存储系统;映射信息接收装置,用于接收依据一个或多个源实体的一种或多种属性来指定一个或多个目标实体的一种或多种属性的映射信息,所述一个或多个源实体的至少一些源实体对应于所述一个或多个数据存储系统中的各记录集合;以及映射信息处理装置,用于处理所述映射信息以生成程序规范,以便计算与一个或多个目标实体的一种或多种属性中的至少一些属性对应的值。所述处理包括:生成多个节点集合,每一集合包括第一节点,该第一节点表示与由所述映射信息指定的属性相关联的第一关系表达式,并且至少一些集合形成一有向非循环图,该有向非循环图包括连接到一个或多个其他节点的链接,这些节点表示与至少一个源实体的至少一种属性相关联的各关系表达式,该至少一个源实体被所述有向非循环图中的一个节点的关系表达式所引用。所述处理还包括:将所述集合中至少两个集合互相合并,以基于比较合并的节点的关系表达式来形成第三集合。
这些方案可包括一个或多个以下优点。
用于生成程序规范的技术,能够例如以可执行模块(比如数据流图)的形式,根据源模式和目标模式之间的映射来表示与数据相关的问题。通过根据一现有源模式中的实体的属性来表示一期望目标模式中的实体的属性从而在较高的抽象级别上对用户输入进行指定。比如,用户能够基于数据集的数据来表示规则,该数据集也引用来自其他源的辅助信息,而无需手动创建数据流图以从这些源提取所述辅助信息。所述用户输入对所述目标模式进行定义,该目标模式经过处理以提供所述程序规范,以便从一个或多个源模式中的任意实体提取所有所需信息。
通过以下说明书和权利要求书,本发明的其它特征和优点将变得显而易见。
附图说明
图1A是用于控制基于图的运算的一例示性计算系统的框图。
图1B所示的是一数据流图的例子。
图2A和图2B是表示为实体-关系图的例示性模式。
图3所示的是从源模式到目标实体的一例示性映射。
图4所示的是将源模式和映射信息转化为图组件的示例过程。
图5所示的是从源模式到目标实体的一更加复杂的映射示例。
图6所示的是示例性表达式节点。
图7和图8所示的是从源模式到一个或多个目标实体的一例示性映射。
图9A和图9B所示的是模式示例。
图10A-10D所示的是从表达式节点生成数据流图的进程。
图11A-11C所示的是生成的数据流图的配置示例。
图12A和图12B是数据模型的示例。
具体实施方式
在信息系统中,可通过使用数据和数据运算以各种形式来接收待解决问题的陈述。所述数据及其运算可对应于实体以及实体之间的关系(比如ER(实体关系)图)。通常,所述问题陈述被用户分解或转化为所用数据和表达式的原始形式,例如,复杂的查询语言。在一些实施方式中,系统能够直接从所述最初问题陈述生成数据流图或查询语言表达式。就这一点而言,对系统和方法进行描述,以便自动将问题陈述分解为(比如)联接(join)集合、汇总(rollup)以及其他数据转换,这些数据转换是生成的图或表达式的一部分。此外,所述系统和方法可引用存储在(比如)外部数据库或外部文件中的辅助信息。
图1A是一计算系统100的部件相互关系的框图,该计算系统用于开发、执行以及控制基于图的运算。基于图的运算是通过以有向图为代表的“数据流图”而得以执行的,该有向图的顶点表示组件(例如,顶点表示具有源或Sink算子类型的组件,比如数据集,或者顶点表示根据指定的算子类型来执行数据运算的组件),并且,该有向图的有向链接或“边”表示组件之间的数据流。图形开发环境(graphic development environment,GDE)102提供用户界面以指定可执行的数据流图并为数据流图组件定义参数。所述GDE 102与存储库104以及并行操作环境106通信。耦合到所述存储库104以及所述并行操作环境106的还有用户界面模块108以及可执行程序(executive)210。所述可执行程序210控制着所述并行操作环境106中数据流图的执行。数据流图还可通过软件应用程序接口(API)得以生成,而无需与所述GDE 102交互。
所述存储库104是一可扩展的面向对象的数据库系统,被设计用于支持基于图的应用程序的开发和执行以及用于支持基于图的应用程序和其他系统(比如其他操作系统)之间的元数据交换。所述存储库104是一个各种元数据的存储系统,包括文档、记录格式(比如表格中记录的字段类型和数据类型)、转换函数、数据流图规范以及监控信息。所述存储库104还存储有数据对象以及实体,这些实体表示所述计算机系统100待处理的实际数据(包括存储在外部数据存储器112中的数据)。
所述并行操作环境106接受在所述GDE 102中生成的数据流图的规范,并执行对应于所述处理逻辑和由所述数据流图限定的资源的计算机指令。所述操作环境106可能被托管在受一合适的操作系统(比如UNIX操作系统)控制的一个或多个通用计算机。例如,所述操作环境106可运行在多节点并行计算机系统,该多节点并行计算机系统包括使用多个中央处理器(CPU)的计算机系统的配置,所述中央处理器可以是本地CPU(例如多处理器系统,如SMP计算机)、或本地分布式CPU(例如多个处理器耦合为集群或MPP处理器)、或远程CPU、或远程分布式CPU(例如通过局域网或广域网来耦合的多个处理器)、或其组合。
所述用户界面模块108针对所述存储库104中的内容提供基于网络浏览器的查看。通过所述用户界面模块108,除了别的之外,用户还可浏览对象、创建新对象以及更改已有对象。通过所述用户界面模块108,用户可浏览并可选地编辑已存数据对象中包含的和/或与之相关联的信息。
所述可执行程序110是通过所述用户界面模块108可随意访问的基于存储库的作业调度系统。所述可执行程序110将作业和作业队列保持为所述存储库104中的对象,且所述用户界面模块108提供作业和作业队列的浏览及其操作辅助。
用于生成并执行数据流图的所述系统100的一个示例具有以下特征。(少于所有这些特征的系统的其他示例也是可接受的。)
·数据流图中的每个顶点表示把指定算子应用于数据的一个组件,且这些顶点被表示组件之间数据的流(称为“数据流”)的有向链接连接。
·每一个组件至少具有一个具名连接点(称为“端口”),组件的算子对流入一个或多个“输入端口”的输入数据进行运算,及/或提供从一个或多个“输出端口”流出的输出数据。
·每个端口与定义流入或流出该端口的数据项的格式的数据格式相关联(例如,对于记录流而言,该数据格式包括将记录的格式定义为独立数据项的记录格式)。
·每个端口具有一许可基数(cardinality),该基数是对连接到该端口的数据流的数目的限制。例如,一个端口的一个许可基数可仅允许一个数据流连接到该端口,或者可允许多个数据流连接到该端口。
·图中每个数据流将一个组件的输出端口连接到另一组件的输入端口。这两个端口与相同的数据格式相关联。
·所述系统100能够防止数据流图的循环。如果能够通过遍历数据流而从数据流图中一个顶点开始沿着一个路径返回到该顶点,则表明该数据流图具有一个循环并且可禁止执行。
·一个组件的算子具有一个算子类型(其指定了该组件所应用的算子的类型,),例如,一个“输入文件”算子类型适用于读取输入文件的算子,而“汇总”算子类型适用于应用汇总算子的组件。
·算子还与用于配置该算子的参数相关联。例如,输入文件算子具有一个提供了待读取输入文件名称的参数。支持参数的集合取决于算子类型。
·由一个组件所支持的输入端口和输出端口的集合取决于该组件的算子类型。算子类型还可确定支持组件的许可基数。
·一个组件具有一个用来识别自身的可定制标签,并且出现在以数据流图的可视化表示形式来表示该组件的一个顶点上。标签不同于算子类型,能够惟一识别数据流图中的组件。
·一个端口具有一个用来识别自身的可定制标签,并且出现在其组件的可视化表示形式上的该端口的可视化表示形式之上。标签能够惟一识别组件中的端口。
参见图1B,数据流图120的可视化表示形式的一个示例,包括两个组件(具有一个“输入文件”算子类型),并且这两个组件分别标有“第一输入文件”和“第二输入文件”的标签。每个组件具有一个标有“读取”标签的输出端口。所述数据流图120包括两个组件(具有一个“重格式化(reformat)”算子类型)的实例,并且这两个组件分别标有“第一重格式化”和“第二重格式化”的标签。每个重格式化组件具有一个标有“in(入)”标签的输入端口和一个标有“out(出)”标签的输出端口。所述数据流图120包括一个组件(具有一个“联接”算子类型,以及一个标有“A联接”的标签)的实例。联接组件具有两个分别标有“in0”和“in1”标签的输入端口以及一个标有“out”标签的输出端口。所述数据流图120包括一个组件(具有一个“输出文件”算子类型,以及一个标有“输出文件”的标签)的实例。所述数据流图120包括5个连接各端口的数据流。组件(例如,基于算子类型)的不同视觉外观对开发人员或者用户而言是有利的。
执行数据流图时,所述系统100执行与数据流图的语义相关联的某些动作。例如,一个数据流表示数据项的一个有序集合,每个数据项符合与连接数据流的端口相关联的数据格式。一个组件(例如,由一进程或线程执行)从其(多个)输入端口(如果有的话)读取数据项,执行与应用其算子相关联的运算,并将数据写入到其(多个)输出端口(如果有的话)。在一些情况下,组件也可访问外部数据(比如,读取或写入文件,或者访问数据库中的数据)。与应用算子相关联的运算取决于从任意(多个)输入端口读取的数据项(如果有的话)、该算子相关联的参数、和/或被该组件访问的任意外部数据(例如,文件或数据库表)的状态。如果一个组件将数据项写入输出端口,这些数据项将会被传送到与该组件相连接的任意输入端口,作为下游组件的算子的输入。由数据流表示的数据项的关联顺序对应于这些数据项在输出端口和输入端口之间进行传送的顺序,也可能(但不一定)对应于这些数据项的计算顺序。
一个端口的数据格式的例子是一记录格式,其定义了一给定记录内个别值的数据类型,其中每一值是由标识符所标识的。记录格式的语法符合一种特定的语言。以下是数据操作语言(data manipulation language,DML)中记录格式的语法的实例。
记录(record)
<数据类型(data type)1><标识符(identifier)1>;
<数据类型2><标识符2>;
结束(end);
数据类型的一个例子是“int”,其定义了由标识符所标识的值,该标识符将该值作为本机二进制格式的整数。所述系统100可支持多种数据类型,不过,为了说明起见,本文的示例中采用的是“int”数据类型。采用该DML语法的记录格式的实例如下。
记录
int a1;
int a2;
int a3;
结束;
该记录格式对应于由三个连续分配的二进制整数(识别为a1、a2和a3)组成的记录。
所述系统100还可支持组件的多种算子类型。为了说明起见,对以下算子类型进行描述:输入文件、输出文件、输入表、输出表、重格式化、复制、联接和汇总。
“输入文件”组件具有一个标有(默认)“读取”标签的输出端口以及一个确定待读取文件的参数(即,“文件名”参数)。该读取端口可连接到一个或多个数据流。选定(比如由开发人员选定或自动确定)与该读取端口相关联的记录格式(即读取.格式(read.format))以对应于该被确定文件中记录的实际记录格式。由该“输入文件”组件所应用的算子读取该被确定文件(例如,具有与该读取端口相关联的所述记录格式的记录)的连续记录,并将其提供给所述读取端口(例如,通过将所述连续记录写入到一特定的缓冲区,或者通过其他一些传送机制)。
例如,“输入文件”组件可被配置为如下。
算子类型(operator type):输入文件(input file)
文件名(filename):A.dat
读取.格式(read.format):记录
int a1;
int a2;
int a3;
结束;
为了确保该“输入文件”组件能够顺利读取该被确定文件并将包含在该文件中的记录提供给所述读取端口,文件A.dat中记录实际所采用的物理记录格式应与所提供的记录格式read.format(读取.格式)相匹配。
“输出文件”组件具有一个标有(默认)“写入”标签的输入端口以及一个确定待写入文件的参数(即,“文件名”参数)。该写入端口可连接到不超过一个数据流。选定(比如由开发人员选定或自动确定)与该写入端口相关联的记录格式(即写入.格式(read.format))以对应于该被确定文件中记录的实际记录格式。由所述“输出文件”组件所应用的算子接收提供给所述写入端口(例如,通过从特定缓冲区读取的方式或者通过其他一些传送机制)的连续记录,并将这些连续记录写入到该被确定文件。
还有其他用于访问存储在媒介而非文件中的数据的算子类型,比如“输入表”算子类型和“输出表”算子类型,其可用于访问存储在(比如)关系数据库表中的数据。这些算子类型的配置以及算子功能与上述“输入文件”算子类型和“输出文件”算子类型的配置以及算子功能相似。
“重格式化”组件具有一个标有(默认)“in”标签的输入端口和一个标有(默认)“out”标签的输出端口以及一个参数,该参数将组件的算子确定为在所述输入端口(该输入端口产生一个提供给所述输出端口的输出记录)接收到的每个输入记录上待执行的变换函数。
所述变换函数可由采用如下语法的“重格式化”组件的参数所定义,该变换函数采用多个条目来为多个输出字段的每个定义表达式。
输出(out)::重格式化(in)=
开始(begin)
输出(out).<字段(fieled)1>::<表达式(expression)1>;
输出.<字段2>::<表达式2>;
结束;
每个字段是所述输出端口的记录格式中字段的名称。每个表达式由字面值(例如数值1、2和3)、输入字段(例如in.a1)和多种代数算子(例如加法算子(+)和乘法算子(*))中的任意一种组成。表达式仅允许引用存在于输入记录格式中的字段。变换函数通常为输出记录格式的每个字段提供一个表达式,然而,针对存在于所述输出记录格式的字段确定其默认值是有步骤的,这些步骤并未包括在该变换函数中。
例如,“重格式化”组件可被配置为如下。
“复制”组件能够为每个输入记录生成多个副本,并具有一个标有(默认)“in”标签的输入端口和一个标有(默认)“out”标签的输出端口。多个数据流可连接到该输出端口。
应用联接算子的联接组件具有两个分别标有(默认)“in0”和“in1”标签的输入端口和一个标有(默认)“out”标签的输出端口。联接组件具有两个参数:key(关键字)0和key1,这两个参数指定了用作所述联接算子关键字段的字段。所述联接算子与变换函数相关联,该变换函数将输入端口in0和in1的记录中的字段映射到所述输出端口的记录中的字段。“重格式化”组件的变换函数具有一个自变量,而联接组件的变换函数具有两个自变量。另外,联接组件的变换函数的语法与“重格式化”组件的变换函数的语法相似。
所述联接组件通过对所述两个输入记录进行关系内部联接而对所述联接算子进行应用。例如,对于每一对分别来自in0端口和in1端口(其中,关键字段R0.key0和R1.key1的值相等)的R0记录和R1记录,所述联接组件将对R0和R1调用所述变换函数,并将结果提供给所述输出端口。
例如,联接组件可被配置为如下。
该联接组件会分别从in0和in1找到每一对R0记录和R1记录,其中R0.a3=R1.b3,将该对记录传送进所述变换函数,并将所述变换函数的结果提供给所述输出端口。
汇总组件具有一个标有(默认)“in”标签的输入端口和一个标有(默认)“out”标签的输出端口。汇总组件具有一个关键字参数,该参数指定了所述汇总算子用来汇总记录的关键字段,并指定了所述汇总算子用来计算汇总记录的汇总结果的变换函数。所述汇总组件通过将所述输入记录分成子集合以便每个子集合具有相同的关键字段值、将所述变换函数应用到每个子集合、并将其结果提供给所述输出端口来应用所述汇总算子。因此,所述汇总组件将会针对出现在所述关键字段的每个特定值产生一个输出记录。
汇总组件的变换函数与“重格式化”组件的变换函数相似,只不过汇总组件的变换函数可能包括聚合函数(例如和函数、最小函数和最大函数),这些聚合函数用于表达式中以便针对来自聚合集合中输入记录的值计算其累积和、最小值等。例如,如果一个输入记录具有一个in.a1字段,则所述变换函数中的总和(in.a1)的表达式将使所述汇总组件针对该关键字段值相同的所有记录计算出现在in.a1中的值的总和。如果变换函数中的条目中的表达式不是聚合函数,则该条目中的该表达式将会根据关键字段值相同的每个聚合记录集合内的任意输入记录而加以评估。
例如,汇总组件可被配置为如下。
这会把所述汇总组件配置为:将来自输入端口的数据分成具有相同的关键字段值a3的聚合集合。在每个集合内,所述汇总组件将取a1的最小值、来自任意记录的a3值(在这种情况下,选用该值的大小是无所谓的,这是由于a3是所述关键字段的值,因此,该值与该集合内每个记录的值相同)、以及a2值的总和。针对每个不同的关键字段值将会产生一个输出记录。
所述GDE 102、所述API或二者之结合可用于生成对应于任一数据流图元素的数据结构,包括组件连同其端口、算子类型和参数,与所述端口和参数值相关联的数据格式,以及将输出端口连接到输入端口的数据流。所述API函数的重复调用可用于以编程方式生成数据流图,而无需使用该GDE 102进行用户交互。
所述数据对象以及对应于实体和存储在该存储库104中的所述实体之间的关系的元数据可通过实体-关系(ER)图来表示。图2所示的是实体关系图200的示例。该实体关系图200阐明了实体之间的相互关系。实体关系图中的实体可以表示一个域中的项目,比如,具有独立、独特特性的医保项目、贸易项目或者会计项目。这些实体包括来自所述域中的现实世界方案。例如,实体202表示一个人,并且包括与这个人相关的“属性”,例如,这个人的姓名(具有一个称为“人_姓名”的属性)及其年龄(具有一个称为“人_年龄”的属性)。同理,实体204表示一个城市,并且包括与这个城市相关的“属性”,例如,这个城市的名称(具有一个称为“城市_名称”的属性)及其人口(具有一个称为“城市_人口”的属性)。在一些例子中,实体表示一个实体对象,例如一幢建筑物或一辆车。在一些例子中,实体表示一个事件,例如抵押交易中的销售或者服务协议条款到期。在现实世界例子中,实体202和实体204都可能具有若干属性。
在一些实施方式中,对“实体”的引用可与实体-类型“种类”相关联。存储在存储库104中的数据对象可被看作是与一给定实体-类型“种类”相关联的实体的实例。例如,一个实体-类型种类可能是“人”的实体-类型种类以及一个特定实例,例如,与人的实体-类型种类相关的数据对象可能是一个名叫“Wade”、年龄为32的人。因此,模式200中的每个实体202和实体204可表示一类数据对象,每个对象具有与实体202和实体204的特定实例有关的细节。在模式200中,实体202和实体204通过“居住”关系206相关,即,实体类型为“人”的对象与实体类型为“城市”的对象之间具有一种“居住”关系。
以下对“关系”进行更详细的描述。参见图2A,在模式210中,实体212、实体214、实体216和实体218通过213a-e关系而彼此相关。在一些例子中,两个实体(例如,实体212和实体218)之间的关系是通过“主键/外键”关系213a而得以建立的。实体212的“主键”是一种属性,其值唯一地标识一种给定实体类型种类为实体212的每个实例。例如,“雇员ID”是“雇员”实体212的主键属性。当第二实体218具有引用第一实体212主键属性的属性时,该第一实体212和第二实体218之间具有所述“主键/外键”关系213a。该第二实体218的属性称为“外键”。例如,“项目”实体218中各项目的每个实例与充当外键属性的“雇员ID”相关联。
模式210可描述实体212、实体214、实体216和实体218之间的其他种类的关系213b-e。在一种实施方式中,关系213a-d可表示为连接这些实体的线。例如,实体212和实体214之间、实体212和实体218之间、实体212和实体216之间以及实体212自身的关系可表示为如模式210所示的那样,包括实体302、304、306和308之间的以下三种基本类型的“连接性”关系:一对一关系、一对多关系和多对多关系。
在一种实施方式中,当(例如)“雇员”实体212中的最多一种数据对象与(例如)“办公室”实体214中的一种数据对象有关时,存在的是一对一的连接性关系213b。该“雇员”实体212表示一家公司的雇员,即,所述实体212中每个数据对象表示一位雇员。该“办公室”实体214表示一幢建筑物内的办公室,即,所述实体214中每个数据对象表示一间办公室。如果每一位雇员分配有其自己的办公室,则相应的数据对象具有一对一的外键关系。在模式210中将一对一的连接性描述为一条直线。
在一种实施方式中,当针对(例如)“雇员”实体212中的一种数据对象在(例如)“部门”实体216中有零个、一个或多个相关的数据对象,并且针对一个数据对象(即“部门”实体216)在(例如)“雇员”实体212中有一个相关数据对象时,存在的是一对多的连接性关系213d。如上所述,所述“雇员”实体212表示一家公司的雇员。该“部门”实体216表示该公司的部门,即,所述实体216中每个数据对象表示一个部门。每个雇员与一个部门相关,而每个部门与多位雇员相关。因此,所述“雇员”实体212和“部门”实体216具有一对多的外键关系。在模式210中将一对多的连接性描述为以鱼尾纹结束的一条线。
在一种实施方式中,当针对(例如)“雇员”实体212中的一个数据对象在(例如)“项目”实体218中有零个、一个或多个相关的数据对象,并且针对(例如)“项目”实体218中的一个数据对象在(例如)“雇员”实体212中有零个、一个或多个相关数据对象时,存在的是多对多的连接性关系213e。对于这个示例,假定在同一时间雇员可被分配到任何数量的项目上,且一个项目(即“项目”实体218中的一个数据对象)具有分配到该项目上任何数量的雇员。因此,所述“雇员”实体212和“项目”实体218之间具有多对多的外键关系。在模式210中将多对多的连接性描述为以鱼尾纹开始并结束的一条线。
在一些示例中,同一实体212的数据对象之间具有一种关系213c。例如,“雇员”实体212中的数据对象和“雇员”实体212中的其他数据对象之间具有一对多关系。一位雇员和以一对多外键关系表示的另一位雇员之间具有一种“监督”关系。
在一些示例中,实体212、实体214、实体216和实体218可以以表格形式来表示。实体212、实体214、实体216和实体218的数据对象实例可以以表格中的记录来表示。在一些实施方式中,一个或多个表格可按预先确定的方式来进行结合或“加入”。例如,两个实体表格的内部联接要求这两个实体表格中的每一条记录具有一条匹配记录。所述内部联接基于一给定的连接谓词(即联接键)来结合来自所述两个表格中的记录。所述连接谓词(join-predicate)指定了联接条件。例如,联接键指定第一实体表格中一条记录的第一属性值等于第二实体表格中一条记录的第二属性值。而外部联接不要求两个联接实体表格中的每一条记录具有匹配记录。因此,即使这两个实体表格中不存在匹配记录,该联接表格中也保留有每一条记录。
实体212、实体214、实体216和实体218的属性的特征在于数据的粒度。例如,在一个较粗粒度级别上,表示一个人的账户的实体可包括表示与这个人的地址有关的信息的一个属性。所述数据粒度指的是对数据字段细分的程度。同样,在一些示例中,在一个较细粒度级别上,该实体可用多种属性(例如,门牌号、街道名称、城市或城镇名称以及国家名称)来表示相同的地址信息。
例如,一个实体中的一种较粗粒度属性可以是表示一个家庭内许多用户的家庭信息。而一种较细粒度属性可以是采购订单中的行项目(line item)。作为一种较粗粒度属性,产品标识符(或其他产品级别信息)可以具有多个相关的行项目。
在一些情况下,从所述较粗粒度实体获取更详细信息较为可取。同理,以总结的、较为简略的方式来表示包含在较细粒度实体中的信息较为可取。就这一点而言,源实体可定义为具有预定粒度级别。一个或多个源模式中的源实体可映射到一个或多个目标模式中的目标实体,其中预配置的表达式将预定粒度数据与目标实体中的结果属性联系起来。例如,对在一个较细粒度级别上的源数据进行聚合(例如,通过一种包括聚合算子的表达式)以在一个目标实体中产生一种属性。
在一些示例中,用户基于来自数据集或数据流图的数据而产生的规则需要引用包含在外部数据库或外部文件中的辅助信息。例如,此种辅助信息可以以较粗或较细的粒度级别而存在。如此,使用该预配置表达式对这种辅助信息进行处理以产生应用程序中所用的理想的属性形式。
在一个示例场景中,使用如下预配置表达式可将源实体映射到目标实体。参见图3,源模式300包括三个源实体302、304和306,即实体A、实体B和实体C,其中每个实体分别包括属性a1、属性ab、属性ac、属性b1、属性ba、属性c1和属性ca。对于本说明书,采用的惯例是:让属性的第一个字母与所属实体的名称相匹配。例如,实体A的每个属性以字母“a”开始。而且,实体中一种属性的第二个字母设置为“1”以表示该属性是一种主键属性。实体之间的关系表示为如下:从实体A到实体B为n∶1(多对一),从实体A到实体C为1∶n(一对多)。
与每一种关系相关联的联接键显示在该关系上,例如,实体A和实体B的联接显示在关系ba/ab上,实体A到实体C的联接显示在关系ca/ac上。在本说明书中采用的惯例是:让联接键所用属性的第二个字母与合作实体的名称相匹配。
如图所示,实体A(例如,中间/源实体)被1∶1(一对一)映射到实体308,即实体D(例如,目标实体)。所述映射以一个从实体A指向实体D的“箭头”来表示。
所述从实体A到实体D的映射的定义以涉及到所述实体属性的个别的预配置逻辑表达式来予以提供。例如,在第一部分中定义所述从实体A到实体D的映射时,将属性d1分配给属性a1的值。在一些示例中,属性a1的值可直接复制给属性d1。
在第二部分中定义所述从实体A到实体D的映射时,将属性d2分配给属性b1的值。然而,b1并不在源实体A中,而是在实体B中。因此,需要将实体A和实体B进行联接,计算出属性d2的值,从而得到属性b1。
在第三部分中定义所述从实体A到实体D的映射时,将属性d3分配给对属性c1执行聚合表达式“求和”的值。如此,在将实体C和实体A结合(以在计算属性d3的值时得到对属性c1执行聚合表达式“求和”的值)之前,首先需要对实体C进行属性c1的汇总。
在一种实施方式中,上述的联接和汇总定义了一种从源属性到目标属性的途径。因此,所述联接和汇总用于通过一个根实体或即时实体(例如,上述示例中的实体A)基于一种途径而将目标实体中的一种属性映射到存储源属性(例如,属性a1、b1和c1)的实体。在一些示例中,从所述根实体到包含源属性的实体的所述途径定义了一种树形结构形式的模式。
在一些示例中,一种从第一实体到第二实体的“简单”映射由一种“树”型源模式构成,该源模式具有唯一一个指定的根实体、任何数量的其他实体(与该根实体有关或者彼此相关)、以及一个或多个目标实体(非所述源模式的组成部分,但可形成目标模式)。例如,在图3中,源模式300包括实体302、实体304以及实体306。所述目标实体308并非所述源模式300的组成部分。
参见图4,其显示的是将所述源模式和映射信息转变为用于计算映射目标实体属性的一种程序规范(例如查询语言表达式、数据流图或计算机程序)的过程400。例如,所述源模式和映射信息包括从源模式中的一个或多个源实体到目标实体的映射(以表达式形式),该表达式通过各种算子或函数依据源实体的属性定义了该目标实体的属性,可能包括该表达式(对应于该程序规范中的程序)的一些要素。在一些示例中,初始信息包括具有一有向非循环图结构(如图4所示,被分类为具有一树形结构,由于图中的关系链接是不定向的,因此任一节点可被看作是该树的根)的源模式以及一套映射规则,该映射规则详细说明了目标模式的一个或多个目标实体的属性是如何生成的(步骤402)。所示映射规则和源模式可用于生成一表达式节点集合(步骤404)。所述表达式节点(详细描述如下)在中间数据结构中得以表示。目标实体中的每种属性可由一映射规则来定义,该映射规则定义了根据源模式中的实体属性连同一任意梯级算子(scalar operator)集合(例如,+、-和函数调用等)和聚合算子(例如求和算子、极小算子和极大算子等)构造而成的表达式。任何一种语言可用作所述映射规则的表达式。例如,表达式可由用户以数据操作语言(DML)来编写,并作为用户输入来予以提供。各种输入接口可用于接收映射规则,例如包括业务规则接口(比如在美国专利号8,069,129中所描述的接口,该专利通过引用合并于此)。所述初始信息还包括元数据,该元数据描述了对应于实体的数据的物理表示(例如,数据集文件名和记录格式)。
在一些实施方式中,映射模块(例如,执行于所述操作环境106)通过映射规则将从源模式到目标模式(具有与该源模式相关的属性)的模式对模式映射转变为一表达式集合(例如,依据关系代数组织为表达式节点的关系表达式)。在一些示例中,任何用于存储数据结构的已知方法可用来以一个或多个“查询计划”的形式来存储表达式节点,其中每个查询计划是一表达式节点集合,该表达式节点集合与有向链接相关,可用于产生一个查询的指定值,且具有一有向非循环图结构。所述查询计划中的有向链接表示依赖关系(例如,由另一表达式节点所引用的一个表达式节点的标识符),下面对其进行更详细地描述。由一查询计划的表达式节点所表示的关系表达式可依据抽象关系算子(例如“联接”或“汇总”)来定义,这些抽象关系算子具有各种依据具体算法的具体实施方式。为所述目标模式中的目标实体的每一输出属性都生成一单独的查询计划。由一映射表达式(不需要来自所述源模式中一个以上实体的数据)所定义的输出属性对应于一查询计划(仅具有一个表达式节点)。由一映射表达式(需要来自所述源模式中多个实体的数据)所定义的输出属性对应于一查询计划(具有一个树状拓朴,所述输出属性的值由树根表达式节点来表示)。根据所述查询计划,映射模块能够生成一数据流图或其他形式的程序规范,该程序规范指定了一些或全部将用于计算所述目标模式的属性值的程序。
在一些示例中,查询计划可合并以结合一个或多个表达式,从而产生一个具有新节点结构的新查询计划(步骤406)。所述合并查询计划可产生中间数据结构的一个较为复杂的组织。例如,合并后的表达式节点集合不再是以树的形式(例如,有多个树根,或者来自一个节点的链接在另一节点处再次合并,不过图仍然是非循环图)。所述合并后产生的表达式节点集合可按如下描述进行处理以生成一相应程序规范(步骤408)。用这种方式,可将所述初始源模式和映射目标模式转换为数据流图,见下面更详细的描述。在一些实施方式中,一些附加的技术可用于依据查询计划生成数据流图(如在美国公开号2011/0179014的申请中所述,该申请通过引用合并于此)。
参见图5,源模式500被表示为一实体关系图,该实体关系图包括实体A、实体B、实体C、实体D、实体F和实体G。在该示例中,所述目标模式包括一个实体Z作为目标实体。如上所述,在一个实施方式中,由所述源模式中实体和关系所形成的图是一具有一个根实体(实体A)的树。两个实体之间的每种关系与每个实体的联接键相关联,例如,联接键“ab”用于实体A的一边,而联接键“ba”则用于实体B的一边。
映射规则(定义了目标实体实体Z的属性)中的表达式可被转换为一分析树(parsetree),该分析树的叶即为属性,该分析树的内部节点即为表达式和聚合算子。在一些示例中,表达式可为“原始”表达式,具有一不包括任何聚合算子的分析树。
在一些示例中,映射规则中的表达式用关系代数来表示。所述关系代数包括一种关系,例如一表格和一转换。在一些示例中,关系可为一具有行和列(例如,实体、联接或汇总,每一种都以表格形式来表示)的表格。所述转换可在输出关系中指定列。
使用如上所述的惯例,在一种实施方式中,给出如下的转换符号:
<转换(transform)>::=<要素(element)>[,<要素>]*
<要素>::==<标识符>||<标识符(identifier)>=<表达式>
以下示例性转换表达式被翻译为如对应于所述转换表达式所示的语言:
在一种实施方式中,双向连接语法如下:
join(<rel1>/<k12>,<re12>/k21>)
其中,rel1和rel2是两个关系式,而k12和k21是联接键。对于多向连接而言,第一关系式是“中心”关系式。第二关系式以及随后的关系式和所述中心关系式结合。给出语法如下:
join(<rel1>/<k12>/<k22>…,<rel2>/<k21>,<rel3>/<k31>…)
作为一个例证,实体A、实体B和实体D的三向连接描述如下:
join(A/ab/ad,B/ba,D/da)
在一些实施方式中,上述表达式相当于以下两种双向连接级联的任一种:
join(A/ab,join(A/ad,D/da)/ba)
join(A/ad,join(A/ab,B/ba)/da)
给出的汇总语法符号如下:
rollup(<rel>/<key>)
作为一个例证,关于属性da的D的汇总描述如下:
rollup(d/da)
在一些示例中,映射规则中的表达式用表达式节点来表示。在一种实施方式中,表达式节点包括:(1)一标识符,该标识符允许所述表达式节点被其他表达式节点引用;(2)一表达式,该表达式可识别对应于所述节点的表达式;(3)一上下文实体,该上下文实体可识别上下文和联接/汇总,在该上下文中表达式被加以评估,并且在该联接/汇总中由评估所述表达式而产生的值可参与;(4)一转换,该转换指定了一输出关系中的列;(5)一关系表达式(也称为节点的关系属性),具有如上所述的关系和转换;以及(6)一对应于所述节点输入关系的子节点集合。
现提供一查询计划的示例,该查询计划包括对应于映射规则中一表达式的表达式节点。参见图6,查询计划600包括一根据一限定映射规则对应于一表达式“求和(d1)”的示例性表达式节点602、604、606和608的集合。可通过就键“da”对关系D(由#3节点(即节点608)指定)执行汇总(由#2节点(即节点604)指定)而对#1节点(即节点602)中指定的所述表达式“求和(d1)”进行评估。如在#1节点中所指定,在#2节点中指定的所述汇总的结果与具有联接键da和ad的关系式A(由#4节点(即节点606)指定)结合。
图6中的查询计划600的表达式节点可以以下面表1所示的表格形式来表示。“表达式”列中的表达式的缩进表示节点之间的父/子关系。以下对#2节点中的“上下文实体”字段中的“-”符号进行详述。
表1
在一个示例中,可通过构造如下表达式节点来对表达式sum(c1)*a1*b1进行评估。一聚合表达式可被编译为一表达式节点树(例如见图6,对应于表达式“sum(d1)”)。当创建聚合表达式的表达式节点时,直到随后对该节点进行处理方才知道计算该节点的计算上下文(evaluation context)。例如,除了所述“表达式”列,表1中的所有其他列尚未填充。如下所示的表2表示的是一初始表达式节点:
表2
在如下所示的表3中针对所述表达式“sum(c1)”为该表达式中每一聚合算子创建一分离式表达式节点。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#1 | sum(c1) |
表3
如表4所示,所述聚合表达式被分配给一子节点(包括正被聚合的该表达式的属性)。在一种实施方式中,举例说明如果聚合表达式为“sum(c1,c2!=0)”,则所述子节点包括(c1,c2)。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#2 | sum(c1) | |||
#3 | c1 |
表4
所述表达式的上下文实体是进行如下计算的。参见表4,#3子节点仅包括表达式c1,不包括聚合运算。因此,表达式c1是一原始表达式。一种将原始表达式编译为表达式节点树的算法适用于表达式c1。在一种实施方式中,所述算法开始于确定针对表达式c1中每个实体的“聚合集合”。通常,聚合集合测量需要聚合所述模式根实体的给定属性的汇总。为了确定所述聚合集合,所述映射模块针对每一实体e确定将e连接到模式根的关系r。所述关系的另一面表示为e’。如果r是多对一关系,则所述聚合集合A(e)被定义为{e}∪A(e′),否则,则被定义为A(e′)。所述根实体的聚合集合为{}。
参见图5,源模式500中实体的聚合集合示例如下:
实体A {}实体A是根实体。
实体B {}实体B和实体A的关系是一对多关系。
实体C {C}实体C和实体B的关系是多对一关系。
实体D {D}实体D和实体A的关系是多对一关系。
实体E {E}实体E和实体A的关系是多对一关系。
实体F {E}实体F和实体E的关系是一对多关系。
实体G {E,G}实体G和实体E的关系是多对一关系。
给定一表达式,最大聚合集合(MAS)是该表达式中提到的任何实体的最大的聚合集合。在一些示例中,该MAS是唯一的。例如,考虑到表达式b1+e1+g1。该表达式引用了实体B、实体E和实体G。相应的聚合集合分别是{}、{E}和{E,G}。因此,该表达式的MAS是{E,G}。
在一些示例中,不允许出现不唯一的MAS。例如,表达式c1*e1提到了实体C和实体E,其聚合集合分别是{C}和{E}。这种情况下,表达式c1*e1没有唯一的MAS。表达式e1*f1提到了实体E和实体F,其聚合集合分别是{E}和{E}。这种情况下,{E}的MAS是唯一的,即使有多个实体具有相同的聚合集合。
计算表达式的上下文是一具有MAS的实体,该实体最接近于所述模式的根实体。通常,计算顶级表达式的上下文是根实体。例如,考虑到表达式a1+b1。其MAS是{}。实体A和实体B的聚合集合是{}。然而,实体A最接近于所述根实体,故用作所述计算上下文。在另一个示例中,考虑到表达式e1+g1。其MAS是{E,G}。因此,该计算上下文是G。
选定表达式节点的计算上下文后,该表达式节点布满了关于该选定计算上下文的信息。再次参见表4,c1的计算上下文是C。因此,更新的表达式节点如下面表5所示。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#2 | sum(c1) | |||
#3 | c1 | C |
表5
在一种实施方式中,计算所述表达式节点的一种“聚合关系”。一聚合的聚合关系是将所述计算上下文连接到所述根实体的属性。在当前示例中,对于表达式c1,其计算上下文是C,其聚合关系是cb。在一个示例中,对于表达式e1*g1,其计算上下文是G,其聚合关系是ge。在一个示例中,对于表达式f1,其计算上下文是E,其聚合关系是ea。
为了将中间结果汇总到以上计算出的聚合关系,该聚合关系的键被加入到所述表达式节点。如上所述,C1的聚合关系是cb。因此,如下面表6所示,对所述表达式节点进行更新。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#2 | sum(c1) | |||
#3 | c1,cb | C |
表6
此时,可对子节点(即#3节点)进行编译。如果所述子节点包括嵌套集合,则如下所述,可递归地调用一种嵌套聚合编译算法。因此,如下面表7所示,对所述表达式节点进行更新。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#2 | sum(c1) | |||
#3 | c1,cb | C | c1,cb | C |
表7
基于如上所述的与表1-表8有关的计算结果,可按如下面表8所示来填写所述表达式节点。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#2 | sum(c1) | C- | t1=sum(c1),cb | rollup(#3/cb) |
#3 | c1,cb | C | c1,cb | C |
表8
所述上下文实体是所述表达式(后面紧跟“-”符号)的计算上下文。#2节点上的“-”符号表示失去了聚合等级。例如,C的聚合集合是{C},而C-的聚合集合是{}。如果不进行这样的调整,b1+sum(c1)的MAS是{C},并且所述表达式的计算上下文是C而不是B。
所述关系是所述汇总关系的传出键(cb)上的子节点汇总。所述转换将所述聚合值分配给临时变量t1(通过使用字符“t”而将临时变量引入到这些示例中,字符“t”后紧跟用数字区分的不同临时变量)并经汇总键(cb)而传递所述聚合值。
现在可以对原始节点(即表2中的#1节点)进行如下编译。变量t1被所述聚合节点取代。因此,原始表达式sum(c1)*a1*b1被看作是t1*a1*b1。这些术语分别与上下文实体C-、A和B相关联。针对这些实体中每一实体的聚合集合是{},因此,MAS是{},计算上下文是A。更新表如下面表9所示。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#1 | sum(c1)*a1*b1 | A |
表9
两种属性sum(c1)和b1的路径穿过关系ba。因此,为B创建一子节点,并按如下面表10所示插入联接。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#1 | sum(c1)*a1*b1 | A | t1*a1*b1 | join(#4/ab,#5/ba) |
#4 | a1 | A | a1,ab | A |
#5 | (sum(c1),b1) | B |
表10
所述子节点引用的表达式(sum(c1),b1)的计算上下文是B,其属性来自B和C。因此,为b1创建一节点。因此,如下面表11所示,对所述表达式节点进行更新。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#1 | sum(c1)*a1*b1 | A | t1*a1*b1 | join(#4/ab,#5/ba) |
#4 | a1 | A | a1,ab | A |
#5 | (sum(c1),b1) | B | t1,b1,ba | join(#6/bc,#2/cb) |
#6 | b1 | B | b1 | B |
#2 | sum(c1) | C- | t1=sum(c1) | rollup(#3/cb) |
#3 | c1 | C | c1 | cb |
表11
如上简述,可以显式或隐式地嵌套集合。通常,嵌套程度与正在聚合值的聚合集合的基数(cardinality)相匹配。例如,g1具有一聚合集合{E,G}。因此,涉及g1的聚合具有两个聚合层次,例如max(sum(g1))。
在一些示例中,嵌套聚合编译算法能在编译时将非嵌套聚合转换为嵌套聚合。例如,sum(g1)变为sum(sum(g1)),count(g1)变为sum(count(g1))。在这个方案中,在一种实施方式中,直接转换为嵌套聚合是违反规则的。
在一些示例中,转换为嵌套聚合需要授权执行。在这个方案中,可指定诸如max(sum(g1))和sum(sum(g1)*e1))的聚合。
在一些示例中,嵌套聚合编译算法能在编译时将非嵌套聚合转换为嵌套聚合,而让嵌套聚合只是穿过。例如,sum(g1)在编译时转换为sum(sum(g1)),而max(sum(g1))穿过嵌套聚合编译算法不发生改变。
考虑到嵌套聚合表达式max(sum(g1))的一个示例。使用上述表达式节点技术可构建以下表12-15。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#1 | max(sum(g1)) | A | t1 | join(#2/ae,#3/ea) |
表12
如前所述,创建分离节点:
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#3 | max(sum(g1)) | |||
#4 | sum(g1) |
表13
创建第二级分离节点:
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#6 | sum(g1) | |||
#7 | g1 |
表14
可以直接编译#7节点和#6节点。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#6 | sum(g1) | G- | t2sum(g1),ge | rollup(#7/ge) |
#7 | g1 | G | g1,ge | G |
表15
根据表12-15,可编译#3节点:
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#3 | max(sum(g1)) | E- | t1=max(t2),ea | rollup(#4/ea) |
#4 | sum(g1) | E | t2,ea | join(#5/eg,#6/ge) |
#5 | 空 | E | ea,eg | E |
#6 | sum(g1) | G- | t2=sum(g1),ge | rollup(#7/ge) |
#7 | g1 | G | g1,ge | G |
表16
最后,根据表15,可编译#1节点:
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#1 | max(sum(g1)) | A | t1 | join(#2/ae,#3/ea) |
#2 | 空 | A | ae | A |
#3 | max(sum(g1)) | E- | t1=max(t2),ea | rollup(#4/ea) |
#4 | sum(g1) | E | t2,ea | join(#5/eg,#6/ge) |
#5 | 空 | E | ea,eg | E |
#6 | sum(g1) | G- | t2=sum(g1),ge | rollup(#7/ge) |
#7 | g1 | G | g1,ge | G |
表17
在一些示例中,可同时映射一个以上实体。参见图7,提供一包括两个目标实体(X和Z)的目标模式。实体X映射规则中的表达式可用实体E解释为根实体。实体Z映射规则中的表达式可用实体A解释为根实体。在一些示例中,映射规则包括属性映射,例如,ae映射到zx,ea映射到x7。
在一些示例中,映射规则包括诸如选择和汇总的关系运算。参见图8,关于相同源模式和目标模式的映射规则如图7所示,该映射规则包括选择(例如,a1>0)和汇总(例如,rollup(e1))。在用汇总编制映射规则时,实体E和虚拟实体E’是多对一关系,虚拟实体E’可被看作是假设的根。
在一些示例中,源模式可能不是以树的形式存在。例如,源模式可能是循环模式(cyclic)。参见图9A,显示的是一循环模式。其中,“客户”实体和“商店”实体都采用的是来自同一实体“邮政编码”的输出。所述循环模式可被一走样(aliasing)算法打破。例如,如图9B所示,走样算法能使邮政编码和“客户”以及邮政编码和“商店”之间关系的两个别名副本分别得以生成。用这种方式,可除去所述循环模式。图9B中的模式使终端用户能够更加精确地指定“邮政编码”实体中的属性(例如,客户的状态或商店的状态)。
一旦表达式被转换为查询计划,树就可被转换为数据流图。在一种实施方式中,生成数据流图的步骤包括:1)合并表达式以避免对应于同一实体的数据的冗余联接、冗余聚合或冗余扫描;2)可选择地优化一关系算子集合;以及3)将合并结果或优化结果转录成数据流图。
在将系统中所有表达式全部编译到查询计划后,通过删除所有表达式节点的关系表达式字段上的公共子表达式,可合并累积的表达式。合并的一个示例如下所示。在表18中提供了两个节点:
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#1 | a1 | A | a1 | A |
#2 | a2 | A | a2 | A |
表18
表18中的这两个节点可合并为如以下表19中所示的#3节点。
标识符(ID) | 表达式 | 上下文实体 | 转换 | 关系表达式 |
#3 | * | A | a1,a2 | A |
表19
新的表达式节点具有相同的关系表达式,其转换字段是所述合并后节点的转换的一组合清单。合并后的查询计划通过运行在所述并行操作环境106中的映射模块可转换为一个或多个数据流图。例如,可插入合适的图组件,可根据表达式节点将转换加入到这些组件中,并且可为中间结果生成DML代码。特定类型的图组件用于针对特定类型的表达式节点执行操作。可以使用一个扫描对应于一特定实体的数据集(例如,数据库中的文件或表格)记录的组件来实现扫描该实体数据的表达式节点。所述组件通过(例如)读取存储有记录的文件或通过查询数据库中的表格来访问这些记录。由所述表达式节点指定的一实体的属性对应于该表格中记录的字段。可通过一个执行汇总操作的组件来实现表达式节点的聚合。可通过一个执行联接操作的组件来实现表达式节点的联接。
以下是针对不同映射规则生成查询计划、合并查询计划以及从合并后的查询计划生成数据流图的一个示例。在该示例中,收到两种映射规则,每种映射规则都包括引用了源模式中实体(a1、b1和e1)属性的单一输出属性(分别是x0和x1)的一个单一表达式。
x0=a1*b1
x1=sum(b1*e1)
这些表达式中的每个对应于表达式节点的一个表达式树。属性值x0的输入表达式的表达式树如下:
属性值x1的输入表达式的表达式树如下:
将来自两种树的表达式节点结合(如下所述),添加一附加的表达式节点(贴有“END”标签)来表示映射规则合并后的结果。所述附加的表达式节点对应于在A的主键(例如aa)上将两个顶级表达式(#1和#4)连接在一起。
就识别实体A的关系表达式有三个实例,所述映射模块将其合并并将引用更新到节点标识符。删除#2、#5和#10表达式节点,以一个新的合并后的具有之前标识符之一(在该示例中,是#2标识符)的节点来代替之。在每个节点合并时,该新节点具有相同的上下文和关系表达式,而该转换值是合并后节点的转换值的组合清单。
由于有两个关系表达式列出了实体B,故合并了#3和#11表达式节点。这种情况下,表达式节点是完全相同的(除其原始树的层次级别之外),故删除了#11节点,#3节点表示所述新的合并后的节点。
更新节点ID号的引用后,有两个节点列出了关系表达式join(#2/ab,#3/ba),故所述映射模块合并了如下#1节点和#9节点。
所述映射模块可根据如下合并后的表达式节点(合并后的查询计划)生成一数据流图。针对查询计划中的每个表达式节点,所述映射模块可生成配置为执行表达式节点指定运算的组件。这些组件的配置可包括以下任意:选择组件类型、生成变换函数、选择联接或汇总的关键字段、以及生成输出格式。例如,所述输出格式包括一记录结构,该记录结构具有所述节点产生的每一种属性的对应字段。
查询计划中表达式节点之间的依赖连接对应于所述数据流图中的数据流连接。就这一点而言,组件可收到作为所述对应表达式节点的子节点的输入和输出。例如,如果表达式节点E0的关系属性指定一表达式节点E1和输入,则所述映射模块生成从对应于E1的组件的输出端口到对应于E0的组件的适当输入端口的数据流。在多个表达式节点使用来自同一子节点的输出的情况下,可将一复制组件(或等效组件)插入所述数据流图内,来自所述子节点的数据的副本提供到多个输出上。随后,将所述复制节点的每一输出用作多个表达式节点其中之一的输入。上述示例中END表达式节点的输出将通过数据流连接到一个在可访问位置中(例如,存储库104或外部数据存储器112中存储的文件中)存储计算结果的组件。
生成对应于表达式节点查询计划的数据流图的步骤示例具有三个不同阶段:组件生成、数据流生成以及数据格式生成。然而,在其他示例中,涉及这三个阶段的各步骤可根据需要错杂在一起以产生等效的结果。所述程序使用工作存储器来存储正在构建的数据流图中端口之间的通信以及表达式节点的输入和输出,并存储与这些端口相关联的数据格式。存储在该工作存储器中的信息可通过多种方式中的任一种来组织。例如,可存储具有以下属性的记录集合。
·表达式节点ID:表达式节点的标识符。
·输出端口:对应于由被识别的表达式节点(如果有的话)产生的值的输出端口。可通过<组件-标签>.<端口-名称>形式的字符串来识别该输出端口。
·输入端口:对应于由所述被识别的表达式节点(如果有的话)引用的每个表达式节点的输入端口。在一些实施方式中,输入端口的数量(例如,下面示例中0、1或2个输入端口)取决于所述表达式节点的类型。
在所述组件生成阶段生成组件(具有与查询计划中每一表达式节点对应的相关联的算子)。该阶段涉及到所述映射模块遍历查询计划中表达式节点列表并将每一表达式节点的相关信息传输到生成的数据流图的对应组件(即,存储在实现这些组件的数据结构内)。
一些表达式节点包括一个由单一实体组成的关系表达式,该关系表达式被分类为“基元关系(primitive relation)”。如果该实体的数据存储于例如一输入文件中,所述映射模块根据一个源(例如元数据存储库)确定该文件的名称以及与该文件相关联的记录格式。针对具有一基元关系的表达式节点生成组件有两种不同情况。
在针对具有一基元关系的表达式节点生成组件的第一种情况中,所述表达式节点的转换并未定义任何临时变量。这种情况下,在所述数据流图中该表达式节点是由一输入文件组件(即,具有“输入文件”算子类型的组件)来表示的。文件名参数将元数据存储库中的输入文件名称指定为其值。所述组件的标签将<表达式节点ID>指定为其值。读取端口的记录格式被指定为所述元数据存储库中的记录格式。记录存储于所述工作存储器中(其表达式节点ID等于<表达式节点ID>),并将所述输入文件组件的读取端口确定为输出端口。
在针对具有一基元关系的表达式节点生成组件的第二种情况中,所述表达式节点的转换定义了一个或多个临时变量。这种情况下,在所述数据流图中该表达式节点是由一输入文件组件以及一重格式化组件来表示的。所述重格式化组件的标签是<表达式节点ID>.重格式化,且所述重格式化组件的变换函数是基于所述表达式节点的转换而生成的。数据流将所述输入文件组件的读取端口连接至所述重格式化组件的输入端口。记录存储于所述工作存储器中(其表达式节点ID等于<表达式节点ID>),并将所述重格式化组件的输出端口确定为所述输出端口。
上述示例中的查询计划具有以下最终合并后的表达式节点集合。
以第一种情况举个例子,该示例中#2表达式节点和单一实体A之间具有一种基元关系。对于实体A,所述元数据存储库提供以下文件名以及记录格式。
由所述映射模块为#2表达式节点生成的输入文件组件配置为如下。
存储于所述工作存储器中的记录包括以下信息。
表达式 输出 输入
节点 端口 端口
#2 #2.read
以第二种情况举个例子,以下是一替代表达式节点(非上述例子中的表达式节点)。
在该示例中假设实体A具有相同的文件名和记录格式。由所述映射模块为该表达式节点生成的输入文件组件以及重格式化组件配置为如下。
存储于所述工作存储器中的记录包括以下信息。
表达式 输出 输入
节点 端口 端口
#2 #2.重格式化.读取
所述重格式化组件输入与输出的记录格式将在所述数据格式生成阶段予以提供,描述如下。
一些表达式节点包括一个由联接运算和汇总运算组成的关系表达式。针对这些表达式节点,所述映射模块分别生成一联接组件以及一汇总组件。任一种类型的组件的标签是<表达式节点ID>。联接算子的关键字段或者汇总算子的关键字段是根据所述关系表达式中的运算参数来确定的。任一种类型的组件的变换函数是根据所述表达式节点的变换而生成的。对于联接组件,所述映射模块确定所述表达式节点的变换中的一给定术语来自于所述联接运算的哪种参数。一记录存储于所述工作存储器中(其表达式节点ID等于<表达式节点ID>),并将所述联接运算或汇总运算的输入和输出确定为该记录的输入端口和输出端口。
针对上述例子中#1表达式节点生成联接组件的一个例子显示如下,并且针对上述例子中#6表达式节点生成汇总组件的一个例子显示如下。
在所述联接例子中,#1表达式节点的最终合并后的转换需要a1、b1、aa和ae的值。这些值由#2表达式节点或#3表达式节点提供。#2表达式节点的合并后的转换提供a1、aa和ae的值,#3表达式节点的合并后的转换提供b1的值。基于#1表达式节点的关系属性中联接运算的参数位置,#2表达式节点对应于所述生成的联接组件的in0端口,#3表达式节点对应于所述生成的联接组件的in1端口。该端口分配对应于以下标识符,可用于配置所述联接组件的变换函数。
对于#1表达式节点,由所述映射模块生成的联接组件配置为如下。
存储于所述工作存储器中的记录包括以下信息。
表达式 输出 输入
节点 端口 端口
#1 #1.out#1.in0,#1.in1
在所述汇总例子中,#6表达式节点的最终合并后的转换需要t3和ea的值。这些值由#7表达式节点合并后的转换予以提供。有一个标有“in”标签的输入端口和一个标有“out”标签的输出端口。对于#6表达式节点,由所述映射模块生成的汇总组件配置为如下。
存储于所述工作存储器中的记录包括以下信息。
表达式 输出 输入
节点 端口 端口
#6 #6.out#6.in
除了#2表达式节点的输入文件组件、#1表达式节点的联接组件和#6表达式节点的汇总组件外,将用下面算子类型以类似于上述方式生成其他表达式节点的组件。
ID号算子类型:
#1 联接
#2 输入文件
#3 输入文件
#4 联接
#6 汇总
#7 联接
#8 输入文件
END 联接
生成每一个这些组件后,所述工作存储器包含以下记录。
在这些表达式节点由数据流彼此相连之前(即,具有以下标识符的节点:#1,#2,#3,#4,#6,#7,#8,END),对应于合并后的查询计划中每个剩余表达式节点的组件的可视化表示形式如图10A所示。
所述数据流生成阶段包括由所述映射模块执行的两个步骤。在第一步骤中,如果需要,所述映射模块在特定位置插入复制组件。如果不只一个表达式节点的关系属性中引用了一特定表达式节点的标识符,则所述映射模块将一复制组件连接到对应于该特定表达式节点的组件的输出端口,以提供流经该组件的数据的相应数量的副本。例如,如果不只一个其他表达式节点引用了表达式节点E,则添加一贴有“E.复制”标签的复制组件,并且从工作存储器记录中指定的E的输出端口将数据流连接至新复制组件的输入端口(贴有“E.复制.输入”标签)。所述映射模块还存储有所述新复制组件的输出端口(贴有“E.复制.输出”标签),作为所述工作存储器记录中表达式节点E的输出端口的新值。在上述例子中,不只一个其他表达式节点引用了两个表达式节点(#1和#2)。因此,所述映射模块将该步骤应用于这两个表达式节点。这导致的结果是,往所述数据流图增加了两个复制组件(#1复制组件和#2复制组件),这两个复制组件如图10B所示连接至相应的组件(#1组件和#2组件)。经此步骤之后,所述工作存储器包含以下记录。
在所述数据流生成阶段的第二步骤中,所述映射模块通过遍历所述表达式节点集合将端口连接至数据流。如果表达式节点E1的关系属性引用了另一表达式节点E2的标识符,则所述映射模块生成从E2的输出端口(记录在E2的工作存储器记录中)到E1的相应输入端口(记录在E1的工作存储器记录中)的数据流。例如,#4表达式节点的关系属性具有#2表达式节点和#6表达式节点的联接运算。因此,#4节点的第一输入端口(#4.in0)连接至#2节点的输出端口(#2.Replicate.out),#4节点的第二输入端口(#4.in1)连接至#6节点的输出(#6.out)。所述映射模块继续该步骤,产生了如图10C所示的数据流图。要注意的是,虽然可使用配置为使用户清楚的组件来提供数据流图的视觉表示,但该数据流图的功能取决于其连接性而非组件的视觉表现形式。
在所述数据流生成阶段的第二步骤之后,所述映射模块确定是否还有另外组件通过数据流连接至任何现有组件。例如,在一些实施方式中,所述映射模块添加一组件,以便向预期目标(例如,存储介质)提供由所述数据流图产生的最终输出。图10D所示的是数据流图,其中输出文件组件由一链接连接至END组件的输出端口(贴有“END.out”标签)。从用户或外源(例如元数据存储库)可获得由所述输出文件组件所写的文件的名称。
在所述记录格式生成阶段,所述映射模块为任何尚未提供所述记录格式的端口生成记录格式。在该示例中,已经从所述元数据存储库中获得了所述输入文件组件的记录格式(针对#2、#3和#8表达式节点),如下所示。
所述映射模块通过从源组件(即,无任何输入端口的组件)到目标组件(即,无任何输出端口的组件)遍历所述数据流图而为其他组件生成记录格式,并针对每一组件为该组件的输出端口生成一适当的记录格式,在下面进行更详细的描述。然后,每一组件的输出端口处的记录格式被传播(即,复制)到通过数据流连接至该输出端口的输入端口。例如,针对#1联接组件,其输入端口in0和in1的记录格式分别与从两个相连接的输入文件组件传播的记录格式相同:in0.format=#2.read以及in1.format=#3.read。
一复制组件的输出端口的记录格式与其输入端口的记录格式相同,也与和该复制组件相连的组件的输出端口的记录格式相同。因此,在该示例中,#2.复制组件的输出端口的记录格式如下:
联接组件、重格式化组件或汇总组件的输出端口的记录格式取决于该组件变换函数的检查。如果变换函数将一输入字段复制到一输出字段,则所述记录格式将包括该输出字段的类型(与该输入字段的类型相同)。如果所述变换函数基于一表达式确定了一输出字段,则所述记录格式将包括一适于保持由该表达式返回之值的输出字段。例如,对于上面所示的#1联接组件的变换函数,分别从输入字段in0.aa、in1.b2和in0.ae复制输出字段out.aa、out.b1和out.ae,这样,输出字段的类型与各输入字段的类型是相同的。剩余的一个输出字段out.t1被定义为表达式in0.a1*in1.b1。两个整数的乘积也是一整数,因此,输出字段out.t1的类型是一整数。针对输入端口和输出端口确定好的这些记录格式为#1联接组件产生以下完整配置信息。
从输入端口到输出端口一个组件一个组件地重复该过程,直至确定全部记录格式为止。在该示例中,所述记录格式生成阶段以确定出联接组件END的输出端口的记录格式结束。在一些实施方式中,所述记录格式生成阶段包括利用在美国专利号7,877,350中(该申请通过引用合并于此)更详细地描述的技术来为组件衍生记录格式或其他元数据。
所述生成的数据流图的具体特点取决于系统100的各种特征,包括用实体表示的数据的存储位置。例如,如果实体B和实体E表示的数据存储于一关系数据库中,且最终输出也将存储于该关系数据库中,则#3源组件和#8源组件的算子类型是输入表,且目标组件END的算子类型是输出表。产生的所述数据流图包括表示文件和如图11A所示表格的组件之混合。
在另一个示例中,一个从源到目标的映射可能作为一“子图”出现,该子图通过输入端口和输出端口连接至另一数据流图内的组件。当从查询计划而非文件或表格中生成这样一幅子图作为元组件或目标组件,提供所述元组件或目标组件作为该子图边界处的输入端口和输出端口(也称为“边界端口”),该子图通过数据流连接至其他组件。因此,在上述例子中,在所述组件生成阶段之前,具有一种基元关系的表达式节点(即#2、#3和#8)成为贴有“in_2”、“in_3”和“in_8”并连接至如图11B所示的其他组件的输入边界端口。像前面的实例一样,能从一外源获得这些输入边界端口的记录格式,不过,无需获得相应实体的数据存储位置。同样,所述映射模块生成一输出边界端口(在图11B中贴有“out”标签)而非添加所述输出文件组件或输出表格组件,该输出边界端口通过一链接连接至END组件的输出端口。所述生成对应于表达式节点查询计划的子图的步骤在其他方面与上述步骤是一样的。该映射子图可连接至特定数据源和目标组件以形成一完整的数据流图,如图11C所示。该子图方法的优点在于,开发人员能够手动配置数据源,更具灵活性。此外,在包含几种不同数据流图的情况下,该映射子图可重复利用。
在一些实施方式中,通过一种可选的优化步骤能够减少在一生成的数据流图或子图中所用的一些组件。例如,一些最优化方案包括合并一些组件,这些组件包括读取同一数据集中数据的操作(例如,同一文件中的记录的两个不同字段)。
图12A所示的是一部分数据模型1200的例子,其实体包括“账户”、“交易”、“产品”、“账单”、“行项目”以及“产品更新”,这些实体的关系将根据源模式、目标模式以及由开发人员提供的源模式和目标模式之间的映射规则来定义。根据定义的记录格式,针对所述数据模型1200中实体列出的属性对应于格式化记录的字段。针对“账户”、“交易”、“产品”、“账单”以及“行项目”等实体的记录格式的例子如下所示。在一些实施方式中,开发人员提供以下记录格式,系统100根据这些记录格式自动生成所述部分数据模型1200。
基于这些记录格式,“账单”实体和“行项目”实体之间具有一种主键/外键关系。所述“行项目”实体表示子记录的矢量,子记录包括作为账单记录中行项目出现的采购的细节,该账单记录是所述“账单”实体的一个实例。每一账单记录分配有一个唯一的称为“ParentBill”(总账单)的序列号,该序列号可用作行项目实例和相应账单实例之间的联接键。
图12B所示的是当开发人员定义好附加关系并提供源实体和目标实体之间的映射规则之后的数据模型1220的一个示例。特别地,所述开发人员通过“交易”实体中外键字段acctnum(帐号)已经定义好所述“交易”实体和所述“账户”实体之间的一种主键/外键关系1222,所述“交易”实体中的外键字段acctnum引用了所述“账户”实体的主键字段acctnum。所述开发员通过“交易”实体中外键字段SKU已经定义好所述“交易”实体和所述“产品”实体之间的一种主键/外键关系1224,所述“交易”实体中的外键字段SKU引用了所述“产品”实体的主键字段SKU。所述“账户”实体、“交易”实体和“产品”实体共同表示可用于定义目标模式中目标实体属性的源模式。所述映射模块将数据模型1220中目标实体的以下属性定义(即字段)解释为生成程序规范的映射规则,例如能够生成记录的数据流图,所述记录与存储有在所述映射规则中定义的信息的映射实体相关联。
账单-账户映射规则:
行项目-交易映射规则:
产品更新-产品映射规则:
SKU =SKU;
新库存 =库存-总数(数量);
账单-账户映射规则1226根据所述“账户”源实体的字段提供所述“账单”目标实体字段的表达式。所述“账单”实体的账户字段被指定为所述“账户”实体的帐号字段的值。默认情况下,所述表达式中字段的名称指的是所述源实体中字段的名称,因此,“名称”字段、“地址”字段和“余额”字段也指的是所述“账户”实体的字段。当所述表达式中字段的名称没有出现在所述源实体中时,该字段的名称指的是目标实体中字段的名称或与该目标实体相关的实体。因此,“旧余额”字段、“总费用”字段和“新余额”字段指的是所述“账单”实体的字段,“数量”字段和“价格”字段指的是所述“行项目”实体的字段。针对所述“账单”实体的一特定记录,聚合函数sum()计算出所有子记录的总和,这些子记录ParentBill(总账单)外键值与所述“账单”实体的所述特定记录的ParentBill外键值相匹配。
行项目-交易映射规则1228根据所述“交易”源实体的字段提供所述“行项目”目标实体字段的表达式。一特定行项目子记录的“日期”字段、“数量”字段和“价格”字段被指定为所述“交易”实体相应交易记录中相应字段的值。一特定行项目的“总额”字段被指定为相应交易中“数量”乘以“价格”后所得之值。
产品更新-产品映射规则1230根据所述“产品”源实体的字段提供所述“产品更新”目标实体字段的表达式。所述“产品更新”实体记录的(主键)SKU字段被指定为所述“产品”实体相应记录的(主键)SKU字段的值。“新库存”字段被指定为一表达式,该表达式取决于所述“产品”实体的“库存”字段以及所述“交易”实体的“数量”字段,该“交易”实体与所述“产品”实体相关。
基于这些映射规则,所述映射模块能够根据如上所述生成的合并后的查询计划生成一数据流图,该数据流图用于生成对应于确定的映射规则的记录。所述映射模块根据合并后的查询计划还能生成其他形式的程序规范。例如,所述查询计划的表达式节点中的关系表达式可用于生成查询表达式(例如,SQL查询表达式)。一表达式节点的关系表达式的结果对应于一视图定义,并且如果结果与多个表达式节点有关联,则会生成一对应于该结果的临时表。在一些实施方式中,可针对各个不同表达式节点生成查询表达式和数据流图组件的一个组合。
上述技术可以使用执行适当软件的计算机系统来实现。例如,软件包括在一个或多个已编程或可编程计算系统(可以具有各种架构,诸如分布式、客户端/服务器、或网格式)上执行的一个或多个计算机程序中的过程,每个计算系统包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)以及至少一个用户接口(用于使用至少一个输入设备或端口来接收输入,以及用于使用至少一个输出设备或端口来提供输出)。该软件可包括大型程序的一个或多个模块,例如,该大型程序提供与数据流图的设计、配置和执行相关的其它服务。该程序的模块(例如,数据流图的元件)可以被实施为数据结构或者符合在数据库中存储的数据模型的其它组织的数据。
该软件可以被提供在诸如CD-ROM或其他计算机可读介质之类的有形永久存储介质(例如可以被通用或专用计算机系统或装置读取的介质)上,或者通过网络的通信介质递送(例如编码成传播信号)到执行该软件的计算机系统的有形永久介质处。一些或全部处理可以在专用计算机上执行,或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用集成电路(ASIC)之类的专用硬件来执行。该处理可以以分布方式实施,在该分布方式中,由该软件指定的不同的计算部分由不同的计算元件执行。每个这样的计算机程序被优选地存储在或下载到可由通用或专用可编程计算机读取的存储设备的计算机可读存储介质(例如,固态存储器或介质、或者磁或光介质),用于在计算机读取该存储介质或设备时配置和操作该计算机,以执行此处所描述的处理。也可以考虑将本发明的系统实施为有形永久存储介质,其配置有计算机程序,其中,如此配置的存储介质使得计算机以特定和预定义的方式操作以执行此处所描述的一个或多个处理步骤。
已经对本发明的多个实施例进行了描述。然而,应当理解,前面的描述旨在说明而非限制本发明的范围,本发明的范围由以下权利要求书的范围来限定。因此,其它实施例也落在以下权利要求书的范围内。例如,在不脱离本发明的范围的情况下可进行各种修改。此外,上述的一些步骤可以是无顺序关联的,因此可以以不同于所述的顺序来执行。
Claims (17)
1.一种用于处理一个或多个数据存储系统中数据的方法,所述方法包括:
接收依据一个或多个源实体的一种或多种属性来指定一个或多个目标实体的一种或多种属性的映射信息,所述一个或多个源实体的至少一些源实体对应于所述一个或多个数据存储系统中的各记录集合;以及
处理所述映射信息以生成程序规范,用以计算与所述一个或多个目标实体的一种或多种属性中的至少一些属性对应的值,所述程序规范在执行时在由不同模式定义的数据库格式之间进行转换,所述处理包括:
生成多个节点集合,每一集合包括第一节点,该第一节点表示与由所述映射信息指定的属性相关联的第一关系表达式,并且这些集合中的一个或多个集合中的每个集合形成一对应的有向非循环图,该有向非循环图包括连接到一个或多个其他节点的链接,这些节点表示与至少一个源实体的至少一种属性相关联的各关系表达式,该至少一个源实体被所述有向非循环图中一节点的关系表达式所引用;以及
将所述集合中至少两个集合互相合并,以基于比较合并的节点的关系表达式来形成第三集合。
2.根据权利要求1所述的方法,其中所述映射信息包括依据第一源实体的一属性值以及第二源实体的一属性值来定义目标实体的一属性值的第一映射规则。
3.根据权利要求2所述的方法,其中与所述第一映射规则相关联的节点的第一集合包括:第一节点,表示包括引用所述第一源实体和所述第二源实体的关系代数运算的第一关系表达式;第二节点,链接到所述第一节点,表示包括所述第一源实体的关系表达式;以及第三节点,链接到所述第一节点,表示包括所述第二源实体的关系表达式。
4.根据权利要求3所述的方法,其中所述映射信息包括依据所述第一源实体的一属性值来定义目标实体的一种属性值的第二映射规则。
5.根据权利要求4所述的方法,其中所述合并包括将与所述第二映射规则相关联的一个或多个节点的第二集合和所述第一集合合并,包括将所述第二节点与所述第二集合中表示包括所述第一源实体的关系表达式的节点进行合并。
6.根据权利要求3所述的方法,其中所述关系代数运算是联合运算。
7.根据权利要求3所述的方法,其中所述关系代数运算是聚合运算。
8.根据权利要求2所述的方法,其中所述第一源实体和所述第二源实体根据一模式中所定义的关系而彼此相关联。
9.根据权利要求8所述的方法,其中所述模式包括多个实体,这些实体之间的关系包括如下一种或多种:一对一关系、一对多关系、或多对多关系。
10.根据权利要求1所述的方法,其中生成所述程序规范包括从所述第三集合生成数据流图,该数据流图包括用于执行与所述第三集合的各节点中的关系表达式对应的运算的组件,以及表示这些组件的输出端口和输入端口之间的记录流的链接。
11.根据权利要求1所述的方法,其中生成所述程序规范包括从所述第三集合生成查询语言规范,该查询语言规范包括用于执行与所述第三集合的各节点中的关系表达式对应的运算的查询表达式。
12.根据权利要求1所述的方法,其中生成所述程序规范包括从所述第三集合生成计算机程序,该计算机程序包括用于执行与所述第三集合的各节点中的关系表达式对应的运算的函数或表达式。
13.根据权利要求12所述的方法,其中所述计算机程序由以下编程语言中的至少一种编程语言中指定:Java、C、C++。
14.根据权利要求1所述的方法,还包括根据所述程序规范来处理所述数据存储系统中的所述记录,以计算与一个或多个目标实体的所述一种或多种属性中至少一些属性对应的值。
15.一种计算机可读存储介质,存储用于处理一个或多个数据存储系统中数据的计算机程序,该计算机程序包括指令,该指令用于使计算机系统执行如权利要求1到14中任一项所述的方法。
16.一种计算机系统包括:
一个或多个数据存储系统;
输入设备或端口,用于接收依据一个或多个源实体的一种或多种属性来指定一个或多个目标实体的一种或多种属性的映射信息,所述一个或多个源实体的至少一些源实体对应于所述一个或多个数据存储系统中的各记录集合;以及
至少一个处理器,配置为执行如权利要求1到14中任一项所述的方法。
17.一种计算机系统包括:
一个或多个数据存储系统;
映射信息接收装置,用于接收依据一个或多个源实体的一种或多种属性来指定一个或多个目标实体的一种或多种属性的映射信息,所述一个或多个源实体的至少一些源实体对应于所述一个或多个数据存储系统中的各记录集合;以及
映射信息处理装置,用于处理所述映射信息以生成程序规范,用以计算与所述一个或多个目标实体的一种或多种属性中的至少一些属性对应的值,所述程序规范在执行时在由不同模式定义的数据库格式之间进行转换,所述处理包括:
生成多个节点集合,每一集合包括第一节点,该第一节点表示与由所述映射信息指定的属性相关联的第一关系表达式,并且这些集合中的一个或多个集合中的每个集合形成一对应的有向非循环图,该有向非循环图包括连接到一个或多个其他节点的链接,这些节点表示与至少一个源实体的至少一种属性相关联的各关系表达式,该至少一个源实体被所述有向非循环图中一节点的关系表达式所引用;以及
将所述集合中至少两个集合互相合并,以基于比较合并的节点的关系表达式来形成第三集合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261675053P | 2012-07-24 | 2012-07-24 | |
US61/675,053 | 2012-07-24 | ||
PCT/US2013/051837 WO2014018641A2 (en) | 2012-07-24 | 2013-07-24 | Mapping entities in data models |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104662535A CN104662535A (zh) | 2015-05-27 |
CN104662535B true CN104662535B (zh) | 2018-05-18 |
Family
ID=48980273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380049560.XA Active CN104662535B (zh) | 2012-07-24 | 2013-07-24 | 数据模型中的实体映射 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9251225B2 (zh) |
EP (1) | EP2877943B1 (zh) |
JP (1) | JP6338579B2 (zh) |
KR (1) | KR102031402B1 (zh) |
CN (1) | CN104662535B (zh) |
AU (1) | AU2013295864B2 (zh) |
CA (1) | CA2879668C (zh) |
HK (1) | HK1210295A1 (zh) |
WO (1) | WO2014018641A2 (zh) |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9665620B2 (en) | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
US9195769B2 (en) * | 2011-07-20 | 2015-11-24 | Opentable, Inc. | Method and apparatus for quickly evaluating entities |
US8577671B1 (en) | 2012-07-20 | 2013-11-05 | Veveo, Inc. | Method of and system for using conversation state information in a conversational interaction system |
US9465833B2 (en) | 2012-07-31 | 2016-10-11 | Veveo, Inc. | Disambiguating user intent in conversational interaction system for large corpus information retrieval |
US20140059498A1 (en) * | 2012-08-27 | 2014-02-27 | Microsoft Corporation | User interface display of anchor tiles for related entities |
PT2994908T (pt) | 2013-05-07 | 2019-10-18 | Veveo Inc | Interface de entrada incremental de discurso com retorno em tempo real |
US9576071B2 (en) * | 2013-09-12 | 2017-02-21 | Dropbox, Inc. | Graph-based data models for partitioned data |
US9524331B2 (en) * | 2013-11-18 | 2016-12-20 | Nuwafin Holdings Ltd | Method and system for representing OLAP queries using directed acyclic graph structures in a datagrid to support real-time analytical operations |
CA2929716C (en) | 2013-12-06 | 2021-08-31 | Ab Initio Technology Llc | Source code translation |
US9665660B2 (en) * | 2014-03-14 | 2017-05-30 | Xplenty Ltd. | Logical data flow mapping rules for (sub) graph isomorphism in a cluster computing environment |
KR102371811B1 (ko) | 2014-03-14 | 2022-03-07 | 아브 이니티오 테크놀로지 엘엘시 | 키드 엔티티들의 속성 매핑 |
US9690546B2 (en) * | 2014-03-26 | 2017-06-27 | Software Ag | Method and system for transitive traversal service discovery |
US9607073B2 (en) * | 2014-04-17 | 2017-03-28 | Ab Initio Technology Llc | Processing data from multiple sources |
US10635645B1 (en) | 2014-05-04 | 2020-04-28 | Veritas Technologies Llc | Systems and methods for maintaining aggregate tables in databases |
US10290126B2 (en) | 2014-07-01 | 2019-05-14 | Oath Inc. | Computerized systems and methods for graph data modeling |
US9928310B2 (en) * | 2014-08-15 | 2018-03-27 | Oracle International Corporation | In-memory graph pattern matching |
SG11201701673TA (en) | 2014-09-03 | 2017-04-27 | Ab Initio Technology Llc | Managing computations for hierarchical entities |
US10437819B2 (en) | 2014-11-14 | 2019-10-08 | Ab Initio Technology Llc | Processing queries containing a union-type operation |
US9852136B2 (en) * | 2014-12-23 | 2017-12-26 | Rovi Guides, Inc. | Systems and methods for determining whether a negation statement applies to a current or past query |
CN104484478B (zh) * | 2014-12-31 | 2018-05-29 | 中国农业银行股份有限公司 | 一种关联聚类数据瘦身方法及系统 |
US9854049B2 (en) | 2015-01-30 | 2017-12-26 | Rovi Guides, Inc. | Systems and methods for resolving ambiguous terms in social chatter based on a user profile |
US10417281B2 (en) | 2015-02-18 | 2019-09-17 | Ab Initio Technology Llc | Querying a data source on a network |
IN2015CH01601A (zh) | 2015-03-28 | 2015-05-01 | Wipro Ltd | |
KR101636455B1 (ko) * | 2015-04-21 | 2016-07-06 | 주식회사 씨와줄기 | 데이터 기반 프로그래밍 모델을 이용하는 소프트웨어 개발 장치 및 방법 |
KR102281454B1 (ko) * | 2015-05-27 | 2021-07-23 | 삼성에스디에스 주식회사 | 리버스 데이터 모델링 관계선 설정 방법 및 그 장치 |
US9384203B1 (en) * | 2015-06-09 | 2016-07-05 | Palantir Technologies Inc. | Systems and methods for indexing and aggregating data records |
WO2017027652A1 (en) * | 2015-08-11 | 2017-02-16 | Ab Initio Technology Llc | Data processing graph compilation |
US10025846B2 (en) | 2015-09-14 | 2018-07-17 | International Business Machines Corporation | Identifying entity mappings across data assets |
US11157260B2 (en) * | 2015-09-18 | 2021-10-26 | ReactiveCore LLC | Efficient information storage and retrieval using subgraphs |
US10360236B2 (en) * | 2015-09-25 | 2019-07-23 | International Business Machines Corporation | Replicating structured query language (SQL) in a heterogeneous replication environment |
CN106909570B (zh) * | 2015-12-23 | 2020-12-15 | 创新先进技术有限公司 | 一种数据转换方法及装置 |
US10001976B2 (en) * | 2015-12-28 | 2018-06-19 | Microsoft Technology Licensing, Llc | Generation of a device application |
US10742667B1 (en) * | 2016-01-20 | 2020-08-11 | Cyarx Technologies Ltd. | System and method for dynamical modeling multi-dimensional security event data into a graph representation |
CN107239459B (zh) * | 2016-03-28 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 实体联系图展示方法及装置 |
US10698954B2 (en) * | 2016-06-30 | 2020-06-30 | Facebook, Inc. | Computation platform agnostic data classification workflows |
US10101995B2 (en) | 2016-07-15 | 2018-10-16 | Microsoft Technology Licensing, Llc | Transforming data manipulation code into data workflow |
US10692015B2 (en) | 2016-07-15 | 2020-06-23 | Io-Tahoe Llc | Primary key-foreign key relationship determination through machine learning |
US10331667B2 (en) * | 2016-07-29 | 2019-06-25 | Hart, Inc. | Systems and methods for bi-directional database application programming interface, extract transform and load system, and user computing device |
US10620923B2 (en) | 2016-08-22 | 2020-04-14 | Oracle International Corporation | System and method for dynamic, incremental recommendations within real-time visual simulation |
GB201615745D0 (en) * | 2016-09-15 | 2016-11-02 | Gb Gas Holdings Ltd | System for analysing data relationships to support query execution |
GB201615747D0 (en) * | 2016-09-15 | 2016-11-02 | Gb Gas Holdings Ltd | System for data management in a large scale data repository |
KR101961562B1 (ko) * | 2016-10-20 | 2019-03-22 | 영남대학교 산학협력단 | 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체 |
WO2018074906A1 (ko) * | 2016-10-20 | 2018-04-26 | 영남대학교 산학협력단 | 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체 |
US20180232458A1 (en) * | 2017-02-10 | 2018-08-16 | Microsoft Technology Licensing, Llc | Storing parseable entity combinations |
US10635789B1 (en) * | 2017-06-21 | 2020-04-28 | Amazon Technologies, Inc. | Request authorization using recipe-based service coordination |
US20200327116A1 (en) * | 2017-10-03 | 2020-10-15 | Lyconos, Inc. | Systems and methods for document automation |
US20190138920A1 (en) * | 2017-11-03 | 2019-05-09 | Paypal, Inc. | Self-adaptive system and method for large scale online machine learning computations |
CN109960570B (zh) * | 2017-12-14 | 2021-09-03 | 北京图森智途科技有限公司 | 一种多模块调度方法、装置及系统 |
CN109960571B (zh) | 2017-12-14 | 2022-03-25 | 北京图森智途科技有限公司 | 一种多模块调度方法、装置及系统 |
US11630690B2 (en) * | 2017-12-19 | 2023-04-18 | International Business Machines Corporation | Simplifying data mapping in complex flows by defining schemas at convergence points in a workflow |
CN108596824A (zh) * | 2018-03-21 | 2018-09-28 | 华中科技大学 | 一种基于gpu优化富元数据管理的方法和系统 |
WO2019192710A1 (de) * | 2018-04-05 | 2019-10-10 | Products Up GmbH | Verfahren zum darstellen und verändern von datenverknüpfungen mittels einer graphischen benutzeroberfläche |
US11003636B2 (en) | 2018-06-18 | 2021-05-11 | Tamr, Inc. | Generating and reusing transformations for evolving schema mapping |
CN109656947B (zh) * | 2018-11-09 | 2020-12-29 | 金蝶软件(中国)有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN109508412B (zh) * | 2018-11-20 | 2019-12-20 | 中科驭数(北京)科技有限公司 | 一种时间序列处理的计算流图构建方法和装置 |
CN109828972B (zh) * | 2019-01-18 | 2022-03-22 | 深圳易嘉恩科技有限公司 | 一种基于有向图结构的数据集成方法 |
US10684966B1 (en) | 2019-02-21 | 2020-06-16 | Amazon Technologies, Inc. | Orchestrating dataflows with inferred data store interactions |
CN110263224A (zh) * | 2019-05-07 | 2019-09-20 | 南京智慧图谱信息技术有限公司 | 一种基于elp模型的事件型链接数据压缩方法 |
CN112131288B (zh) * | 2019-06-25 | 2024-04-05 | 北京沃东天骏信息技术有限公司 | 数据源接入处理方法和装置 |
US11093223B2 (en) | 2019-07-18 | 2021-08-17 | Ab Initio Technology Llc | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
US10997173B2 (en) * | 2019-09-25 | 2021-05-04 | Snowflake Inc. | Placement of adaptive aggregation operators and properties in a query plan |
CN110688433B (zh) * | 2019-12-10 | 2020-04-21 | 银联数据服务有限公司 | 一种基于路径的特征生成方法及装置 |
KR102419993B1 (ko) * | 2020-01-13 | 2022-07-13 | 주식회사 그라운드컨트롤 | 부동산 통합 데이터베이스 구축 장치 및 방법 |
US11556508B1 (en) * | 2020-06-08 | 2023-01-17 | Cigna Intellectual Property, Inc. | Machine learning system for automated attribute name mapping between source data models and destination data models |
US11941413B2 (en) | 2020-06-29 | 2024-03-26 | Amazon Technologies, Inc. | Managed control plane service |
US11948005B2 (en) | 2020-06-29 | 2024-04-02 | Amazon Technologies, Inc. | Managed integration of constituent services of multi-service applications |
US11989178B2 (en) | 2020-10-26 | 2024-05-21 | Oracle International Corporation | Efficient compilation of graph queries including complex expressions on top of sql based relational engine |
US20220147568A1 (en) * | 2020-11-10 | 2022-05-12 | Sap Se | Mapping expression generator |
US11803865B2 (en) * | 2020-11-12 | 2023-10-31 | Capital One Services, Llc | Graph based processing of multidimensional hierarchical data |
CN113157978B (zh) * | 2021-01-15 | 2023-03-28 | 浪潮云信息技术股份公司 | 数据的标签建立方法和装置 |
KR102350941B1 (ko) * | 2021-05-25 | 2022-01-14 | 주식회사 바움디자인시스템즈 | 집적 회로 설계 방법 및 이를 수행하는 집적 회로 설계 시스템 |
CN113326031B (zh) * | 2021-05-28 | 2023-08-22 | 网易(杭州)网络有限公司 | 属性获取方法和装置 |
CN113723797A (zh) * | 2021-08-26 | 2021-11-30 | 上海飞机制造有限公司 | 一种工业操作中的管理系统及方法 |
CN113722345A (zh) * | 2021-09-14 | 2021-11-30 | 上海明略人工智能(集团)有限公司 | 映射关系的展示方法和装置、电子设备、存储介质 |
US12086141B1 (en) | 2021-12-10 | 2024-09-10 | Amazon Technologies, Inc. | Coordination of services using PartiQL queries |
US11921785B2 (en) | 2022-01-25 | 2024-03-05 | Oracle International Corporation | Inline graph algorithm execution with a relational SQL engine |
US11875446B2 (en) * | 2022-05-06 | 2024-01-16 | Adobe, Inc. | Procedural media generation |
WO2023249627A1 (en) * | 2022-06-23 | 2023-12-28 | Rakuten Mobile, Inc. | Dynamic application of schema framework for inventory management |
US20240086432A1 (en) * | 2022-09-09 | 2024-03-14 | Third Bridge (US) Inc. | Dynamic interactive graphing for attributes |
WO2024160258A1 (en) * | 2023-02-01 | 2024-08-08 | Lemon Inc. | Methods for improving latency and data consistency in large databases for bidirectional lookup |
CN116028653B (zh) * | 2023-03-29 | 2023-06-06 | 鹏城实验室 | 一种可视化配置多源异构数据构建图谱的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1299489A (zh) * | 1998-03-06 | 2001-06-13 | 张嘉运 | 利用相关数据库实现非循环定向图形结构的方法 |
CN1324464A (zh) * | 1998-08-26 | 2001-11-28 | 西姆泰克有限公司 | 映射数据文件的方法和设备 |
CN101438280A (zh) * | 2004-11-02 | 2009-05-20 | Ab开元软件公司 | 管理相关数据对象 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2696853B1 (fr) * | 1992-10-12 | 1994-12-23 | Bull Sa | Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant. |
US6035300A (en) | 1995-12-15 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for generating a user interface from the entity/attribute/relationship model of a database |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
JP3492246B2 (ja) * | 1999-07-16 | 2004-02-03 | 富士通株式会社 | Xmlデータ検索処理方法および検索処理システム |
US7149733B2 (en) * | 2002-07-20 | 2006-12-12 | Microsoft Corporation | Translation of object queries involving inheritence |
US7096216B2 (en) * | 2002-07-20 | 2006-08-22 | Microsoft Corporation | Performing operations on a set of objects in a database system |
US7146352B2 (en) * | 2003-06-23 | 2006-12-05 | Microsoft Corporation | Query optimizer system and method |
US7739223B2 (en) * | 2003-08-29 | 2010-06-15 | Microsoft Corporation | Mapping architecture for arbitrary data models |
US7877350B2 (en) | 2005-06-27 | 2011-01-25 | Ab Initio Technology Llc | Managing metadata for graph-based computations |
US8069129B2 (en) | 2007-04-10 | 2011-11-29 | Ab Initio Technology Llc | Editing and compiling business rules |
CA2593233A1 (en) | 2007-07-06 | 2009-01-06 | Cognos Incorporated | System and method for federated member-based data integration and reporting |
JP5453273B2 (ja) | 2007-09-20 | 2014-03-26 | アビニシオ テクノロジー エルエルシー | グラフベース計算におけるデータフロー管理 |
KR101661532B1 (ko) | 2008-12-02 | 2016-09-30 | 아브 이니티오 테크놀로지 엘엘시 | 데이터 관리 시스템 내의 데이터 집합의 맵핑 인스턴스 |
US9665620B2 (en) * | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
JP5098120B2 (ja) * | 2011-10-12 | 2012-12-12 | 株式会社日立製作所 | 計算機システム及びデータベース管理システムプログラム |
US8838579B2 (en) | 2012-04-26 | 2014-09-16 | Sap Ag | Data flow graph optimization using adaptive rule chaining |
US10241961B2 (en) | 2012-04-26 | 2019-03-26 | Sap Se | Augmented query optimization by data flow graph model optimizer |
-
2013
- 2013-07-24 JP JP2015524419A patent/JP6338579B2/ja active Active
- 2013-07-24 CA CA2879668A patent/CA2879668C/en active Active
- 2013-07-24 KR KR1020157004521A patent/KR102031402B1/ko active IP Right Grant
- 2013-07-24 AU AU2013295864A patent/AU2013295864B2/en active Active
- 2013-07-24 CN CN201380049560.XA patent/CN104662535B/zh active Active
- 2013-07-24 WO PCT/US2013/051837 patent/WO2014018641A2/en active Application Filing
- 2013-07-24 EP EP13748146.1A patent/EP2877943B1/en active Active
- 2013-07-24 US US13/949,761 patent/US9251225B2/en active Active
-
2015
- 2015-11-04 HK HK15110871.6A patent/HK1210295A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1299489A (zh) * | 1998-03-06 | 2001-06-13 | 张嘉运 | 利用相关数据库实现非循环定向图形结构的方法 |
CN1324464A (zh) * | 1998-08-26 | 2001-11-28 | 西姆泰克有限公司 | 映射数据文件的方法和设备 |
CN101438280A (zh) * | 2004-11-02 | 2009-05-20 | Ab开元软件公司 | 管理相关数据对象 |
Also Published As
Publication number | Publication date |
---|---|
WO2014018641A2 (en) | 2014-01-30 |
KR102031402B1 (ko) | 2019-10-11 |
CA2879668A1 (en) | 2014-01-30 |
US20140032617A1 (en) | 2014-01-30 |
JP6338579B2 (ja) | 2018-06-06 |
CA2879668C (en) | 2020-07-07 |
JP2015527655A (ja) | 2015-09-17 |
EP2877943A2 (en) | 2015-06-03 |
KR20150038220A (ko) | 2015-04-08 |
HK1210295A1 (zh) | 2016-04-15 |
US9251225B2 (en) | 2016-02-02 |
EP2877943B1 (en) | 2021-03-03 |
AU2013295864A1 (en) | 2015-02-05 |
CN104662535A (zh) | 2015-05-27 |
AU2013295864B2 (en) | 2017-09-14 |
WO2014018641A3 (en) | 2014-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104662535B (zh) | 数据模型中的实体映射 | |
US10776189B2 (en) | API query | |
CN101208695B (zh) | 基于图形计算的元数据管理 | |
JP5255000B2 (ja) | 要素型の型フローを可能にするためのクエリパターン | |
JP6609262B2 (ja) | キー指定される実体の属性のマッピング | |
CN103177068B (zh) | 按照生存规则合并源记录的系统和方法 | |
JP5826260B2 (ja) | 関連データセットの処理 | |
US9158859B2 (en) | Segment matching search system and method | |
Benke et al. | Universes for generic programs and proofs in dependent type theory | |
CN109947998A (zh) | 跨异构系统的网络的计算数据沿袭 | |
US9495475B2 (en) | Method of representing an XML schema definition and data within a relational database management system using a reusable custom-defined nestable compound data type | |
US7865533B2 (en) | Compositional query comprehensions | |
US20100131565A1 (en) | Method for creating a self-configuring database system using a reusable custom-defined nestable compound data type | |
US8515983B1 (en) | Segment matching search system and method | |
CN110209744A (zh) | 基于联盟链的关系型数据库及其操作方法和装置 | |
Veinhardt Latták | Schema Inference for NoSQL Databases | |
Kudelas et al. | Adapting service interfaces when business processes evolve | |
Malý | XML Document Adaptation and Integrity Constraints in XML | |
Rajkumar | Enhancing Coverage and Robustness of Database Generators | |
Shinnar et al. | A branding strategy for business types | |
Wen et al. | Language-Integrated Queries in Scala | |
De Francesco et al. | Extending the ASP System DLVDB to Support Complex Terms and Procedural Sub-tasks | |
Lu | A deductive and object-oriented approach for spatial databases | |
Firat et al. | Reconciling Equational Heterogeneity within a Data Federation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1210295 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |