处理相关数据集的制作方法

文档序号:6361451阅读:530来源:国知局
专利名称:处理相关数据集的制作方法
技术领域
本发明涉及处理相关数据集。
背景技术
数据集是例如在任何数量的物理存储介质上容纳的数据存储系统中存储(例如,在一个或多个服务器上容纳的数据库中存储)的数据的集合。可以例如通过诸如文件或其他形式的对象(例如,在面向对象的数据库中存储的对象)的实体来描述数据集的诸如其结构和存储位置的属性。在一些情况下,用于描述特定数据集的实体(例如,文件)也存储在那个数据集中的数据。在一些情况下,用于描述特定数据集的实体(例如,指向数据库表格的对象)不必然存储在那个数据集中的所有数据,而是可以用于定位在数据存储系统中的一个或多个位置中存储的数据。可以使用多种结构的任何一种来组织在数据集中的数据,该多种结构包括向单独的记录提供用于相应字段的值(也称为“属性”或“列”)的记录结构,该值可能包括空值(例如,指示字段是空的)。例如,该记录可以对应于在数据库系统的数据库表格中的行或在电子表格或其他平面文件中的行。为了访问以给定格式存储的记录,数据处理系统通常以某种初始格式信息馈送,该某种初始格式信息描述特性,诸如字段的名称、在记录中的字段的顺序、表示字段值的比特的数量、字段之后的类型(例如,字符串、带符号/不带符号的整数)。在一些情况下,可能初始不知道或可以在数据的分析后确定数据集的记录格式或其他结构信息。数据集可以以多种方式的任何一种彼此相关。例如,与在数据库中的第一表格对应的第一数据集可以包括与在数据库中的第二表格的字段具有主密钥(key)/外密钥关系的字段。在第一表格中的主密钥字段可以包括唯一地识别在第一表格中的行的值(例如,用于唯一地识别与不同的客户对应的行的客户ID值),并且包含与在第一表格中的主密钥字段对应的外密钥字段的在第二表格中的行(例如,与由给定客户进行的交易对应的行)可以使用那些唯一值之一来识别表示由给定客户进行的交易的在第二表格中的一个或多个行的每一个。在多个数据集之间保留引用完整性可以包括保留在不同的字段之间的关系,包括外密钥/主密钥关系或在一个数据集中的字段中的值取决于另一个数据集的字段中的值的其他关系。

发明内容
在一个方面,通常,一种用于处理相关数据集的方法包括通过输入装置或端口接收来自多个数据集的给定数据集的记录,所述给定数据集的记录具有用于一个或多个相应字段的一个或多个值;并且,在数据处理系统中处理来自所述多个数据集的每一个的记录。所述处理包括分析在数据存储系统中存储的至少一个约束规范,以确定对于所述多个数据集的处理顺序,所述约束规范指定用于保留在包括所述多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束;以所述确定的处理顺序向来自所述多个数据集的每一个的记录应用一个或多个变换,其中,在向来自所述多个数据集的第二数据集的记录应用所述变换之前,向来自所述多个数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及,存储或输出对于来自所述多个数据集的每一个的所述记录的所述变换的结果。方面可以包括下面的特征的一个或多个。用于保留由所述约束规范指定的引用完整性的至少一个约束基于用于所述第二数据集的字段的值对于用于所述第一数据集的字段的值的依赖。所述第一数据集的所述字段是主密钥,并且所述第二数据集的所述字段是引用所述主密钥的外密钥。所述约束规范包括在所述第二数据集的所述字段和所述第一数据集的所述字段之间的外密钥与主密钥关系的表示。确定用于所述多个数据集的所述处理顺序包括确定所述第一数据集以基于用于所述第二数据集的字段的值对于用于所述第一数据集的字段的值的依赖的处理顺序来在所述第二数据集之前出现。在所述变换被应用到来自所述第二数据集的记录之前,并且在所述变换被应用到来自所述第一数据集的记录之后,向来自第三数据集的记录应用所述变换。用于保留由所述约束规范指定的统计一致性的至少一个约束基于在所述第二数据集的字段和所述第一数据集的字段之间的等同。所述第一数据集的所述字段和所述第二数据集的所述字段是在结合操作中的密钥。所述约束规范包括所述结合操作的表示。所述方法进一步包括剖析在所述一组相关数据集中的所述数据集以确定与多个字段相关联的统计,所述多个字段包括所述第一数据集的至少一个字段和由所述约束规范指示为相等于所述第一数据集的所述字段的所述第二数据集的至少一个字段。根据所述确定的统计和向来自所述第一数据集的所述记录应用所述变换的所述结果,至少部分地基于保留在所述第一数据集的所述字段中的值的分布和在所述第二数据集的所述字段中的值的分布之间的统计一致性来应用向来自所述第二数据集的所述记录应用的所述一个或多个变换。通过至少一个数据流图形来应用所述一个或多个变换,所述至少一个数据流图形包括用于节点,所述节点表示通过用于表示在数据处理部件之间的记录的流的链路连接的数据处理部件,被应用所述变换的每一个数据集向所述数据流图形提供记录的输入流。使用所述多个数据集的相应的一个来以多个迭代连续地执行所述数据流图形,以便以用于所述多个数据集的所述确定的处理顺序来提供记录的输入流。
被应用到给定数据集的记录的所述一个或多个变换包括子集变换,所述子集变换基于在所述给定数据集的至少一个字段中的值来减少在所述给定数据集中的记录的数量。向关系数据集的记录应用的所述一个或多个变换包括修改变换,所述修改变换修改在所述数据集的至少一个字段中的值。向给定数据集的记录应用的所述一个或多个变换包括扩展信息,所述扩展信息基于在所述给定数据集的至少一个字段中的值的复制来增大在所述给定数据集中的记录的数量。所述方法进一步包括分析在所述数据存储系统中存储的至少一个约束规范,以确定对于源自向来自所述多个数据集的每一个的所述记录应用所述变换的结果数据集的处理顺序,所述约束规范指定用于保留在包括所述结果数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束;以所述确定的处理顺序向来自所述结果数据集的每一个的记录应用一个或多个变换,其中,在向来自所述结果数据集的第二数据集的记录应用所述变换之前,向来自所述结果数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及,存储或输出向来自所述结果记录的每一个的所述记录的所述变换的结果。在另一个方面,通常,一种计算机可读介质,用于存储用于处理相关数据集的计算机程序,所述计算机程序包括用于使得计算机进行下述行为的指令通过输入装置或端口接收来自多个数据集的给定数据集的记录,所述给定数据集的记录具有用于一个或多个相应字段的一个或多个值;并且,在数据处理系统中处理来自所述多个数据集的每一个的记录。所述处理包括分析在数据存储系统中存储的至少一个约束规范,以确定对于所述多个数据集的处理顺序,所述约束规范指定用于保留在包括所述多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束;以所述确定的处理顺序向来自所述多个数据集的每一个的记录应用一个或多个变换,其中,在向来自所述多个数据集的第二数据集的记录应用所述变换之前,向来自所述多个数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及,存储或输出对于来自所述多个数据集的每一个的所述记录的所述变换的结果。在另一个方面,通常,一种用于处理相关数据集的数据处理系统包括数据存储系统;输入装置或端口,其被配置来接收来自多个数据集的给定数据集的记录,所述给定数据集的记录具有用于一个或多个相应字段的一个或多个值;以及,至少一个处理器,其与所述输入装置或端口和所述数据存储系统进行通信,并且被配置来处理来自所述多个数据集的每一个的记录。所述处理包括分析在数据存储系统中存储的至少一个约束规范,以确定对于所述多个数据集的处理顺序,所述约束规范指定用于保留在包括所述多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束;以所述确定的处理顺序向来自所述多个数据集的每一个的记录应用一个或多个变换,其中,在向来自所述多个数据集的第二数据集的记录应用所述变换之前,向来自所述多个数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及,存储或输出对于来自所述多个数据集的每一个的所述记录的所述变换的结果。在另一个方面,通常,一种用于处理相关数据集的数据处理系统包括用于接收来自多个数据集的给定数据集的记录的部件,所述给定数据集的记录具有用于一个或多个相应字段的一个或多个值;以及,用于处理来自所述多个数据集的每一个的记录的部件。所述处理包括分析在数据存储系统中存储的至少一个约束规范,以确定对于所述多个数据集的处理顺序,所述约束规范指定用于保留在包括所述多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束;以所述确定的处理顺序向来自所述多个数据集的每一个的记录应用一个或多个变换,其中,在向来自所述多个数据集的第二数据集的记录应用所述变换之前,向来自所述多个数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及,存储或输出对于来自所述多个数据集的每一个的所述记录的所述变换的结果。方面可以包括下面的优点的一个或多个。所述系统能够在保持诸如引用完整性、相等字段的统计一致性(例如,通过结合属性相关的字段)和其他约束的同时处理相互相关的数据集的集合。在一些实现方式中,所述系统使得使用数据流图形来建立数据处理应用的开发者能够建立处理相关数据集而不需要单独地连接部件以产生在从单独数据集发源的记录流上运行的流的应用。如果多个相互相关的数据集需要处理,则所述开发者可以提供用于一组数据集和要向所述数据集应用的数据处理变换的约束规范,以使得所述系统能够识别约束,诸如在不同数据集的所述字段之间的所述主密钥和外密钥关系,并且以下述方式来执行所述变换保证基本上保持诸如基于那些约束的引用完整性和统计一致性的属性(例如,在预定的容限内)。所述系统提供了开发者在由被称为“conspec”的数据结构表示的约束规范中声明在数据集的集合之间的所述约束并且将在被conspec引用的所述数据集上运行的一系列处理任务配置和布置为一组。这促进了将处理任务的多级链接在一起(例如,通过“连线”表示每一个级的处理模块),所述处理任务的每一个可以作用于向相关数据集的整个集合应用的处理任务的前一级的结果。给定数据集的特定状态被称为“数据集实例”。conspec识别约束,诸如在不同数据集的元素(例如,字段或字段的组合)之间的依赖关系或相等关系。可以识别其字段可以被conspec引用的所述特定数据集实例以保证引用的字段对应于现有的数据集示例的字段,然而,不必然需要识别所述特定数据集实例,因为被引用的字段可以在以后被映射到现有数据集实例的字段。可以例如使用数据集描述符并且使用链接数据结构来实现conspec,数据集描述符使用逻辑地表示数据集的字段的至少一些的字段标识符来引用字段,所述链接数据结构以多种不同的方式来关联字段标识符,以表示在被引用的字段之间的不同约束。不必然要求所述数据集描述符对应于当前存在的数据集实例。因此,给定的conspec可以适用于任何数量的数据集实例,只要被约束引用的字段存在于那些数据集实例中。可以与在组中的其他数据集一起变换用于表示在第一状态中的给定数据集的输入数据集实例以产生用于表示在第二状态中的给定数据集的对应的输出数据集实例。如果变换作用于原始数据集,则输出数据集实例可以替换输入数据集实例,并且如果变换作用于原始数据集的靠背,则输出数据集实例可以与输入数据集实例一起存在。通常的使用情况的一个示例涉及测试数据的产生,测试哈数据的产生包含来自一组多个数据集的给定数据集的记录的过滤,随后是记录的扩展或复制以产生新的记录,并且在这些行为的同时保持在不同数据集之间的引用完整性。conspec提供关于在数据集之间的关系的信息,该信息足以使得所述系统能够执行作为向数据集的组应用的过滤操作的这个任务,随后是向数据集的组应用的扩展操作。流出第一操作的该多个输出数据集实例流入第二操作,并且导致第二集输出数据集示例。术语“数据集”当在conspec的上下文中使用时指的是包括记录格式和在元素(诸如主密钥和外密钥元素)之间的其他结构关系的数据集的特定特性的定义,并且术语“数据集实例”指的是表示在给定状态中的数据集的记录(以由conspec规定的格式)的字节的物理集合。在一个示例中,假定存在被conspec引用的两个数据集,即,“客户”数据集和“交易”数据集。而且,假定交易数据集具有CUStid字段,该字段是对于在客户数据集中的字段的外密钥引用。过滤任务可以包含过滤客户,其后过滤交易,使得因为在conspec中限定的密钥关系,系统过滤交易使得仅包括引用已经包括的客户的交易。该系统能够保持在数据集之间的关系,同时仍然对于每一个数据集执行定制的过滤操作。对于扩展记录的第二操作,该任务可以包含交易记录的复制以建立具有“扇形展开的值”的新的记录,但是以下述方式来如此进行“弯曲”新的交易使得它们在可能时引用新的客户。换句话说,因为conspec限定了在客户和交易之间的父/子关系,所以可以期望新的交易在可能时引用新的客户。该系统能够在执行特定记录复制和字段修改操作的同时保持这些关系。通过下面的说明书和权利要求,本发明的其他特征和优点将变得清楚。


图1是用于处理相关数据集的系统的框图。图2是示例性数据处理过程的流程图。图3A和3B是示出在由数据处理系统使用的不同实体之间的关系的示意图。图4A和4B是conspec数据结构的示意图。图5是图示向数据集应用的变换的图。图6是图示产生处理器的操作的框图。图7是用于调度任务以执行数据处理的计划的示意图。图8是数据流图形的示意图。图9A是图示数据集处理数许努的选择的框图。图9B是conspec数据结构的示意图。图10是数据流图形的示意图。图11是图示直方图的绘图。图12A-12F是数据流图形的示意图。图13是图示频率分布的绘图。
图14是图示扩展操作的示意图。图15是图示索引值的范围的图。图16和17A-17I示出了包文件的列表。图18A-18D示出逻辑示例。
具体实施例方式图1示出其中可以使用数据集处理技术的示例性数据处理系统100。系统100包括数据源102,数据源102可以包括的一个或多个数据源,诸如存储装置或到在线数据流的连接,数据源的每一个可以以多种存储格式(例如,数据库表格、电子表格文件、平面文本文件或由大型计算机使用的本机格式)的任何一种来存储数据集。执行环境104包括预处理模块106和处理模块112。执行环境104可以驻留于在诸如UNIX操作系统的适当操作系统的控制下的一个或多个通用计算机上。例如,执行环境104可以包括多节点并行计算环境,该环境包括使用多个中央处理单元(CPU)的计算机系统的配置,该多个CPU或者是本地的(例如,多处理器系统,诸如SMP计算机)或者是本地分布的(例如,作为簇或MPP耦合的多个处理器),或者是远程的或远程分布的(例如,经由局域网(LAN)和/或广域网(WAN)耦合的多个处理器)或其任何组合。预处理模块106读取在执行环境104可访问的数据存储系统116中存储的由数据结构conspeclH表示的约束规范;以及,用于向由数据结构表示的一组数据集的记录应用变换的规则,即在数据存储系统116中存储的规则115。预处理模块106输出由处理模块112使用的信息以便以适当的方式(例如,以指定顺序)向记录应用变换,并且存储或输出结果。数据源102供应被处理模块112处理的记录。提供数据源102的存储装置可以是执行环境104本地的,例如,被存储在连接到运行执行环境104的计算机的存储介质(例如,硬盘驱动器108)上,或者可以是执行环境104远处的,例如,被驻留在与运行执行环境104的计算机通过远程连接进行通信的远程系统(例如,大型计算机110)上。数据存储系统116也可访问开发环境118,其中,开发者120能够产生conspecl 14和规则115。开发环境118和执行环境104在一些实现方式中被配置来用于开发和执行作为数据流图形的应用。可以将各种类型的计算通过定向图(称为“数据流图形”)表达为数据流,计算的部件与该图形的顶点和在与该图形的链路(弧、边)对应的部件之间的作业元素(例如,记录)的数据流相关联。顶点表示数据处理部件或数据集。数据处理部件在一个或多个输入端口接收数据,处理数据,并且从一个或多个输出端口提供数据,并且数据集作为作业元件的源或宿。在通过引用包含的、题目为“EXECUTINGCOMPUTATIONS EXPRESSED ASGRAPHS”的美国专利5,966,072中描述了实现这样的基于图形的计算的系统。在通过引用包含的、题目为 “ManagingParameters for Graph-Based Applications” 的美国公布第2007/0011668号中更详细地描述了用于开发基于图形的应用的开发环境的不例。图2示出用于示例性数据集处理过程200的流程图。例如通过预处理模块106和处理模块112来执行过程200。预处理模块106接收(200)(通过系统的输入装置或端口)来自多个数据集的给定数据集的记录,并且预处理模块106接收(204)在数据存储系统116中存储的约束规范(conspecll4)和一个或多个变换(规则115)。预处理模块106分析(206)约束规范以确定多个数据集的处理顺序。基于来自预处理模块106的输入,处理模块112以所确定的处理顺序对于来自多个数据集的每一个的记录应用在规则115中限定的一个或多个变换。该变换继而以相应的迭代被应用(208)到来自多个数据集的每个数据集的记录。至少部分地基于向来自先前处理的数据集的记录应用变换的结果和在先前处理的数据集和由约束规范指定的给定数据集之间的至少一个约束来应用向来自给定数据集的记录应用的变换。过程200确定(210)(例如,基于另外的规则集)是否要应用更多集的变换,并且如果如此,则该过程使用从先前的集的变换产生的输出数据集实例作为用于下一集变换的输入数据集实例来循环。在完成变换后,系统存储或输出变换的结果(212)。在数据处理过程的其他示例中,可以例如修改步骤以包括其他步骤(例如,剖析数据集,如在下面更详细所述)或以不同的顺序出现(例如,可以基于在接收到数据集之前的约束规范来确定多个数据集的处理顺序)。在一个方面,该系统提供了计算模块,该计算模块作用于来自数据集的集合的记录。可以基于规则115和由conspecll4指定的约束,使用数据流图形来实现该计算模块,使用输入参数配置该数据流图形,该输入参数限定涉及在conspeclH中引用的多个数据集的变换。数据流图形的一些用于预处理模块106的预处理,被称为“预处理图形”,并且数据流图形的一些通过根据由预处理图形提供的参数被配置而用于处理模块112的处理。例如可以使用任务调度环境来控制数据流图形,该任务调度环境控制数据流图形的执行,并且能够迭代地执行数据流图形以处理在由输入参数识别的一系列数据集实例中的记录,如下面更详细所述。在另一个方面,该系统提供了一种conspec的标准表示,该conspec能够被串行化和读取为“在存储器内”表示(例如,存储在执行环境104可访问的本地存储器中),该“在存储器内”表示使得预处理图形能够穿过关系,并且在conspec内写入变换逻辑和其他信息,诸如单独数据集的处理顺序。例如,使用数据操纵语言(DML)的表示允许在预处理图形中的变换查看在conspec中限定的所有数据集,并且基于主和外密钥关系以及多数据集结合操作来确定数据集的父至子处理顺序以及用于在子记录的父记录的上下文中处理子记录所需的结合密钥元素(在结合操作中被用作密钥的元素),其中,数据操纵语言(DML)使得能够定义用于以可以在数据流图形内执行的形式来操纵数据的操作。在另一个方面,该系统提供了变换规则的标准表示,该标准表示可以被应用到由conspec引用的数据集的记录。该变换规则的表示被称为“产生”。产生也将可以与特定变换相关联的规则与在conspec中限定的约束去稱。例如,人们可以在conspec中定义主密钥和外密钥的集合与关密钥元素成员,并且然后定义加扰或要向在产生中的主密钥字段应用的掩蔽规则。规则与conspec的分离使得人们能够限定许多不同的产生规则。该产生规则全部独立于conspec,并且,当应用任何特定产生时,系统将因为在conspec中限定的约束而保证不仅加扰主密钥字段,而且,加扰在其他数据集中的外密钥引用。可以例如以多种方式的一种将产生规则实现为产生变换。图3A示出在conspec302、产生304和“产生处理器” 306 (例如,使用数据流图形实现,该“产生处理器”306读取这两个,并且向输入数据集实例的记录应用处理步骤。产生负责识别每个输入数据集实例308的位置以及每个输出数据集实例310的目标身份和位置。图3B示出极好的链接的产生的序列,其中,一个产生314的输出数据集示例作为向下一个产生316的输入。虽然所涉及的数据集实例315、320、324在产生之间相同(因为馈送每一个产生的同一 c0nspec312),但是在每一个步骤的产生处理器318、322可以根据产生规则的特性来应用与前一个产生不同的处理顺序。conspec提供了比用于单个数据集(表示特定的数据集合)的抽象层级“高”的用于由conspec引用的数据集的集合的抽象层级,并且简化了数据流应用的开发,该数据流涉及诸如过滤、掩蔽和数据扩展的多个conspec层级的操作(根据指定约束对于数据集的集合执行的操作)的链接。该系统可以包括预先建立的类型的产生规则的集合,但是也可以提供扩展点以允许开发者限定另外的类型的变换。例如,人们可能期望建立产生用于单独数据集的图表和表格的产生的数据报告类型,同时在conspec中在多个数据集上提供上滚的结果。这种新的类型的产生可以利用在基本处理器中提供的基本有序遍历机构来用于所有的产生规则,但是可以增加用于被处理的数据集的每一个的数据聚合和图表产生功能。图4A不出被称为ab_conspec的conspec400,该ab_conspec是在用于通常产生操作的相关数据集的集合中的约束的示例,该通常产生操作可以被应用到与conspec相关联的对应的数据集实例(例如,具有与由conspec引用的数据集相同的字段的数据集实例)的记录。conspec400示出两个客户数据集(a_customers和b_customers),它们的子交易数据集(a_transactions 和 b_transactions)和 consumer_info 数据集,以提供家庭信息。3路结合关联限定了在来自客户的密钥和consumerjnfo数据集之间的“相等”属性,并且两个关系描述了在客户和交易之间的父-子“依赖”属性。图4B图示限定在由conspec引用的多个数据集之间的关系的conspec450的实例。这可以被解释为用于多个conspec的conspec。适合于产生的一个典型操作是减小数据集实例的集合的大小,同时不破坏固有属性,诸如在每一个数据集的元素之间的依赖(例如,外密钥/主密钥关系)和相等(例如,在表示同一实体的字段之间的关联)。例如,参考在图4A中的ab_c0nspec,人们可能要将在特定实例中的a_customers的数量分为两半,并且也将在另一个实例中的a_transactions的数量分为两半。然而,如果人们要通过任意地去除记录的前50%而分割每一个数据集实例,则人们将可能以引用在被处理的客户数据集实例中不存在的客户的交易结束。图5图示任意地分割数据集而不考虑保持引用完整性的效果。为了以保留在图4A中所示的conspec中限定的属性(例如,在数据集元素之间的依赖和在数据集元素之间的等同)的方式来处理数据集实例,人们可以利用产生处理器,以便在处理每一个数据集示例的同时保留这些属性,该产生处理器包括依序作用于多个数据集实例的一般的处理图形集。在这个示例中,减少a_customers和a_transactions的期望方式可以是确定首先应当处理客户,因为交易引用它们。而且,一旦已经将客户减少50%,则交易应当与已经处理的客户内结合,以便仅选择与剩余的客户匹配的交易。一旦已经为了保持引用完整性的目的而过滤了交易,则人们可以进一步过滤交易使得保持在产生规则中限定并且可能的或者原始数量的50%或者已经减少的数量的50%。引用完整性过滤可以使得去除所有的交易,因此使得不可能进一步过滤得低到原始数量的50%。图5图示如在conspec ab_conspec中限定的、在保持在数据集示例之间的引用完整性的同时减少a_customers和a_transactions的效果。在这个示例中,用户可以指定诸如“将记录减少50%”的规则,并且预期产生处理器保持在被引用的conspec中声明的各种属性。这是处理向多个相关数据集实例应用的变换(50%减少)的两种不同方式的比较,其中,顶部的方法未能保持引用完整性,并且其中,第二种方法保持引用完整性。向原始数据集实例502、504应用的一个结果510表示在将每一个数据集实例任意分割50%后的结果。粗体交易加亮了对于不存在的客户的错误引用。另一个结果520表示在将客户分割50%、然后过滤交易以保持引用完整性并且然后过滤该集以便保留原始的50%后的结果图6图示产生处理器600如何可以读入识别COnspeC602的产生,然后在所识别的conspec中读取,然后根据唯一识别的名称的集(在此,产生仅提供唯一的名称后缀)在数据集实例604、606的集合中读取,其后根据在产生608中限定的规则来处理数据集实例,其后根据也在产生中限定的目标名称来写入新的一组数据集实例610、612。通常,图6表示产生处理器的操作,该产生处理器读取具有给定的名称后缀的数据集实例,根据产生规则来减少记录,保持conspec属性(即,引用完整性),并且使用给定的名称后缀向目标数据集实例写入结果。产生处理器的角色是将在产生中指定的规则插入一个或多个一般和可配置的图形中,该图形包含足够的“父结合”和“过滤”变换,使得与产生规则一起处理数据集,而用户不必编码专用图形以便保持在conspec中的引用完整性和其他属性。一般产生运行图形(B卩,procLrun)的基本原理使得被处理的每一个数据集实例能够访问已经在产生处理器的运行中处理的所有先前的数据集实例。procLrun图形可以包含一般的结合,该一般的结合将数据集实例与先前处理的其他数据集实例链接。产生处理器整体的作业因此是确定所涉及的数据集实例的处理顺序,并且写入构成procLrun图形的用于每一个数据集的参数。在这个示例中,产生处理器可以首先确定需要处理a_customers并且它们没有父,然后确定需要处理a_transactions,并且确定父或前一个数据集是a_customers。注意,在一些情况下,前任可能从外主密钥的角度看不是父,而是可以仅是首先被处理的数据集,并且因此可以是可以与前任的那些具有与一个或多个其字段相关的相等属性的随后的数据集的某种使用。在基本情况下,产生处理器可以因此确定处理顺序是形式[向量a_CuSt0merS、a_transactions]的数据集名称的向量,并且用于处理a_customer数据集实例的参数是:数据集名称:a_customers、父:[向量],并且用于处理a_transactions通过区域的参数是:数据集名称:a_transactions、父:[向量 a_customers]。下面的示例描述了得出由产生运行图形使用的处理顺序和各种参数的任务以及由prod_run图形执行来处理每一个数据集实例的多个任务。conspec数据结构是用于描述一集数据集和基于在它们的字段之间的各种类型的关系的它们的约束的元数据的单独表示。在一些实现方式中,conspec使得预处理图形能够使用一集公共DML函数以标准方式在一集数据集之间读取和导航约束。预处理图形能够产生配置参数,该配置参数驱动下游数据流图形的操作。如此一来,预处理图形通常在指令信息而不是记录集中读取,并且产生进入下游图形和计划内的、被称为“参数集”(或“pset”)的多集参数。在参数集中的参数用于向在数据流图形中的部件提供元数据,并且配置该部件的功能。
为了获得如何可以与预处理图形相结合地使用conspec的思想,我们在保持在主和外密钥之间的引用完整性的同时获得过滤数据集的集合的示例。在这个示例中,假定存在用于表示客户和交易的两个数据集。在交易数据集中,考虑字段之一是引用作为在客户数据集中的主密钥的客户id的外密钥。过滤操作的目标是从客户和交易数据集去除记录,但是保持在该两者之间的引用完整性,使得没有引用已经被滤出的客户记录的引用客户标识符(ID)的结果交易记录。为了正确地执行这个过滤操作,该系统能够确定处理顺序,并且保持基于那个顺序的约束规范。例如,处理器可以确定首先处理客户,然后过滤交易,使得不包括引用已经去除的客户的交易。替代地,处理器可以确定首先过滤交易,但是然后处理客户使得不去除被所选择的交易引用的客户。在这个示例中的预处理图形的作业是确定数据集的处理顺序,并且写入控制每一个数据集的图形处理的行为的规则。conspec向预处理图形提供它执行这些生产任务所需的信息。conspec的内容超出描述在单个数据集内的所包含字段的DML记录格式的内容。在此,我们在讨论在相关的但是不同的数据集中的字段的集合之间的关系和关联。这包括字段(即,密钥)的有序组的定义以及诸如主外密钥关系的密钥与密钥的关系和涉及在N个数据集之间的分类密钥的结合。可以将conspec实现为一集基于记录的文件。以这种形式,图形可以读取这些文件,并且实例化在DML函数中使用的conspec的存储器内基于向量的表不。在另一种表不中,conspec可以采用带注释的DML封装文件的形式。该文件包含用于数据集的每一个的DML记录格式以及用于限定密钥、密钥元素成员、关系和关联的一集评述。这种表示是人可读的和可编辑的。该系统包括DML函数库,该函数库当前串行的conspec,并且实例化向量的集合。该库包括用于遍历在conspec中的关系以及向conspec写入的函数集。来自预处理图形的下面的DML变换代码示出了用于从文件安装conspec调用和将conspec和数据集名称作为自变量的函数,并且产生用于查找主密钥元素的Max (最大)和Min (最小)密钥值的SQL选择语句。conspec DML库提供了用于获得与指定的数据集的主密钥相关联的元素的函数。在图16和17A-17I中示出示例性DML函数。返回参见图4A,示出了描述conspec的图,该conspec包括5个数据集、两个主外密钥关系和在一集多字段分类密钥之间的一个3路结合关系。通过一集DML函数来产生该图,该一集DML函数读取conspec的在存储器内表示,并且写出适合于呈现为svg”文件的“graphviz”点文件。箭头用于双重目的它们指示在外和主密钥之间的从-至关系,并且它们指示在结合关联之间的密钥成员资格。对于其中将conspec实现为一集基于记录的数据集的情况,人们可以产生描述在这些数据集之间的关系的conspec。这实质上是用于表示多个conspec的conspec。返回参考图4B,示出了与5个数据集的集合相关的conspec。在左面的名称为“dml_dataset”的数据集用于限定一集数据集。在顶部中心的“dml_dataelement”数据集用于限定在这些数据集的每一个中的元素。“dml_datakey”数据集限定在每一个数据集中的密钥。“dmldatakeyelement”数据集限定密钥与元素的关系。剩余的数据集限定在密钥之间的关系和关联。可以以人可读的方式来表示conspec。图16和17A-17I示出描述在图4A中所示的conspec的带注释的DML包文件的列表(可执行代码的部分),该conspec由a-customer、b-customer、它们的交易和相关客户信息构成。图16示出DML函数的列表1600,该DML函数建立可以用于conspec的数据库查询(例如,用于支持SQL的数据库的SQL查询)。在图17A中所示的列表1702中,向在DML类型定义中的字段的右面注释密钥和字段与密钥的成员资格。在顶部的评述的块表面在密钥之间的关系和关联。在图17B中所示的列表1704示出用于多个conspec的conspec的示例。可以以多种方式来表示conspec。下面的示例使用特定术语来描述conspec的表示。conspec在一集数据集之间的结构和关系的说明。conspec实例是在conspec中引用的数据集的数据集实例的集合。数据集实例是特定数据集(诸如通常在文件或数据库表格中供应的记录的集合)。conspec可以被存储为带注释的包文件或按照多个不同记录格式的记录的集合。在一些实现方式中,将conspec存储为查找文件的集合。可以使用conspec来描述在这些查找文件之间的结构和关系,如用于图4B的多个conspec的conspec所示。在给出conspec的这两个可串行化的表示(例如,带注释的包文件或查找文件的集合(即,conspec实例))的情况下,可以实现conspec的在存储器内的DML表示,可以通过DML函数的集合来导航和修改该conspec。该在存储器内表示可以采用在图17C中所示的列表1706的形式。这允许开发DML函数库,该函数馈使得有可能语法分析conspec的DMDL包文件表示,通过名称找到数据集,并且然后检索用于那个数据集的外密钥,如在图17D中所示的列表1708所示。子集化、掩蔽和扩展的操作全部是人们可以向数据集的集合和它们相关联的conspec应用的处理。人们可以将这些操作看作conspec产生。产生是与conspec相关联的规则的集合,该规则包括源数据集实例的位置和身份与目标数据集实例的期望位置和身份。在此,数据集实例指的是在conspec中描述的数据集的实际数据。不像限定在一集数据集之间的结构和关系的conspec那样,产生限定用于处理其字段遵循由某个conspec限定的约束的数据集实例(例如,文件、db表格等)的集合的一集规则。因为conspec限定诸如在数据集中的记录之间的诸如依赖的约束,所以处理在数据集实例的集合中的数据的任何种类的产生通过使用conspec以遵守依赖的顺序来如此进行。例如,调用滤出客户的产生首先进行该操作,全部然后从依赖的数据集实例(诸如交易)滤出记录。替代地,如果存在建立新的客户和交易的产生,则系统将首先在客户数据集实例中建立新的记录,并且然后连线在交易数据集实例中的新的记录以引用新的客户。如果客户已经存在,则系统可以假定地将新的交易连线到现有的客户,而不建立新的客户。在任何一种情况下,在conspec中的依赖根据产生规则的特性暗示可以遵守的父至子的处理顺序,以基本上保持引用完整性。为了支持将产生连线在一起,一般的处理器通过使用对于产生唯一的签名来向新的记录分配ID。这保证由一个产生分配的ID不与在下一个产生中分配的ID冲突。下面在关于主密钥分配的部分中有其更详细的说明。图7示出能够执行产生处理器的任务的计划700。计划是其节点表示要执行的任务并且其链接表示调用任务的顺序的定向图。计划700通过调用pix)d_setUp图形来运行,并且然后以处理顺序依次通过prod_profile和用于在每一个数据集中的prod_run pset的执行以及用于在conspec中限定的每一个依赖和相等属性的prod_analyze pset。该计划通过下述方式来开始与用于根据产生的规则剖析、分析和处理在处理顺序中命名的每一个数据集实例所需的参数集一起执行负责产生在conspec中的数据集实例的处理顺序的、被称为prod_setup的图形702。prod_setup图形702产生处理顺序、prod_prof ile> prod_analysis 和 prod_runpsets,并且在图 8 中被更详细地不出。由在图7中所示的计划700表示的产生处理器的第二步骤704依次通过用于以处理顺序剖析数据集的每一个的数据流图形(由pset构成)的执行。多种技术的任何一种可以用于使用数据流图形(例如,如在通过引用包含的美国公布No. 2005/0114369中所述)来剖析数据集。在下述情况下可能需要剖析其中,产生可能调用从和向数据集上载和更新记录,并且其中,重要的是,在进行任何上载之前已知在数据库中的主密钥的开始和结束索引值。在其中产生可能调用扩展或复制记录的情况下,这是相关的。当复制记录时,它需要被分配用于每一个主密钥成员的新的主密钥值,并且因此,产生处理器可以利用由数据库使用的现有密钥值的了解来保证选择不干扰在数据库中已经存在的值的新值。处理的剖析阶段可以产生用于在处理顺序中命名的每一个数据集的主密钥索引的每一个的Min和Max值。剖析图形可以向文件写入用于每一个数据集实例的Min和Max值以由随后的图形用于处理单独的数据集。在简单的情况下,prod_run图形可以复制记录以记录N个新的记录,并且在跨越在Max和Min值之间的查的范围块中分配新的主密钥值,因此保证被上载到数据库的新的记录不与已经在数据库中存在的值冲突。由在图7中所示的计划700表示的产生处理器的第三步骤706用于分析在conspec中限定的依赖和相等属性的每一个。在图4A中所示的ab_conspec的实例中,结合关联限定了在3个数据集a_customers、b_customers和consumer_info之间的相等属性。在这个步骤中,产生处理器通过下述方式来分析该属性读取数据集实例的每一个,并且执行外结合。外结合的重叠结果被聚合和写入分布分析文件以由prod_run图形使用来执行过滤。在图10和11的讨论中覆盖了这个步骤的细节。由在图7中所示的计划700表示的产生处理器的第四步骤708是依次通过用于处理每一个数据集实例的数据流图形(由pset构成)的执行。该步骤涉及调用具有在随后的图12B-12F中所示的子步骤的图12A中所示的图形prod_run。图18A和18B图示在给定要考虑的数据集的初始种子集和要从遍历和包括中排除的数据集的集的情况下可以被产生处理器使用来产生从父至子的处理顺序的逻辑1802、1804的示例。注意,可以将该种子和排除数据集传递为作为产生的一部分的规则。conspec可以限定要在处理顺序的包括中考虑的所有数据集的超集。参考包含 a_customers、b_customers> a_transactions 等的 ab_conspec,人们可以选择排除a_transactions。在该情况下,处理顺序以a_customers开始,但是不包括a_transactions。同样,如果用户选择在源的列表中不包括a_customers,则在处理顺序中将不包括 a_customers 或 a_transactions0
图18A和18B以看起来象编程函数的伪代码的形式呈现了逻辑1802、1804。逻辑1802的主函数通过下述方式开始初始化空processing_order (处理顺序)向量,并且然后调用用于填充processing_order的函数。该函数写入processing_order向量,直到任务完成。主函数使用gen_processing_order函数来依次通过在所命名的源中的每一个数据集,并且对于每一个,递归地得出数据集的向量和所有其子。它然后向all_resUlts向量加上结果,以保证没有重复的值。顺序在这一点不重要,仅递归地包括所有的子。一旦gen_processing_order已经得出所有参与数据集的列表,贝U它进行来确定最高层级父(即,其中没有也在all_results的集中包括的父的那个)。确定其的函数是update_processing_order。该函数通过走上父直到已经在all_result的集中到达了最高层级父来递归地运行,并且然后将这个最高父数据集转储到processing_order向量内。然后,处理剩余的数据集,再一次递归地走以找到最高层级的剩余父,直到可以将其转储到在序列中的下一个processing_order向量内。函数get_dataset_and_its_children_recursively (递归地获得数据集和其子)用作领头开始函数,该函数调用递归函数以直接地作用于字,并且然后调用其本身。顶级函数在此递归地使用将变为所有子的列表的初始空的向量来调用get_dataset_and_its_children (获得数据集和其子)。该函数get_dataset_and_its_children直接作用于源数据集的子,并且调用其本身,传送在其递归调用中累积数据集的向量。整体处理包含首先递归地获得子,以获得所有allresults的集。然而,处理通过从all_sources的这个集递归地获得父而结束。图9和9B示出使用这个逻辑的处理顺序的示例和用于得出该顺序的伴随conspec。图9A是在处理子之前保证处理所有父的处理顺序902的示例。所示的处理顺序是A、C、F、E、D、B。图9B不出复合conspec904,该复合conspec904图不保证在处理子之前处理所有的父的处理顺序。所示的处理顺序是OpJobDef inition、JobDefinitionPropertyValue> OpTimeConstraint> OpDay> OpJobDefinitionDependency>OpFiIeAndEventConstraint>OpJobDefinitionAction、OpJobDefinitionActionArgument。用于产生处理顺序的逻辑的其他实施例可以包含确定子至父顺序。来自图7的prod_analyze步骤706是其中可以相对于在产生中识别的数据集实例的集分析在conspec中的每一个依赖和相等属性。与conspec相关联的数据集实例的每一个集合可以显不用于每一个属性的不同的重叠的分布。例如,对于诸如在a_customers和a_transactions之间的那个的依赖属性,可能有与用于特定的实例集的较少数量的客户相关联的大量的交易。然而,在另一个实例集中,可能有用于每一个客户的较少数量的交易,但是在所有客户上的更均匀的分布。已知这样的依赖属性的特性可以有益于当将源数据集实例与已经过滤的前任数据集实例作比较时,确定要在源数据集实例中保留那些记录。类似于依赖属性,相等属性限定在数据集之间的密钥至密钥相等。然而,与依赖属性不同,与从-至相反,可以将相等属性考虑为多对多。例如,在ab_conspec (图4A)中,joinl相等被定义来包括3个数据集。这些数据集的每一个具有可以被看作与在其他数据集中的密钥相等的密钥。相等不暗示在一个数据集中的记录的存在必须命令在另一个数据集中的记录的存在,就像依赖属性那样,而是,如果来自参与的数据集的两个记录共享同一密钥值,则它们具有相同的含义并且相等。图10和11示出用于分析相等属性(例如,作为由在图7中所示的计划700表示的产生处理器的第三步骤706的一部分执行)的处理步骤和结果。图10示出“多达3路”结合分析器的配置。具体地说,这是用于分析在conspec中限定的结合依赖和相等属性的prod_analyze图形1000。结果是用于参与数据集实例的外结合数据和分布直方图。在另一个实施例中,该机制可以支持多达N个同时结合,并且能够被配置来支持不同数量的数据集实例,如对于在conspec中的相等属性限定。在该处理中的外结合1002可以被配置来分类在其相关的密钥元素成员上的每一个输入数据集。而且,prod_setup图形可能已经向提供prod_analyze图形的pset内写入参数,该prod_analyZe图形指示用于数据集实例的每一个的分类密钥的每一个。在ab_conspec 的不例中,a_customers、b_customers 和 consumer_info 全部具有其成员是{place ;building_num}的密钥,然而,该密钥成员可以对于每一个数据集实例不同。外结合1002用于链接来自每一个数据集实例的记录击中,并且然后计算用于可以唯一地识别具有参与数据集实例的击中状态的密钥值组合的出现的密钥值的散列值。例如,如果一个密钥值组合是place=”foo”和building_num=”bar”,则这将产生例如“ 12345”的aggregate_value散列值,并且输出记录将包括每一个数据集的击中状态;换句话说,didsource_dataset_l 具有那个值等。图17E所示的列表1710是可用于对于参与数据集实例结算合计哈希值和击中(hit)状态的函数的例子。prod_setup图形702可以产生这个变换,并且将其作为参数值在以prod_analyze图形为目标的pset内传递(例如,在图7中所示的步骤706)。该参数值可以伴随用于参与数据集的每一个的所产生的密钥参数值的集。产生分析直方图步骤1004获得外结合1002的输出,并且执行击中结果的聚合。输出记录的流指示来自外结合的唯一 aggregate_values (即,来自外结合的密钥值的唯一组合)。这个记录流可以然后被击中字段source_l_hit…source_N_hit分类,被供应到扫描和上滚(roll up)部件。在这一点,除了每一个数据集源是否参与具有那个密钥值组合的击中状态之外,每一个记录还指示用于在外结合中的密钥的唯一聚合值。通过经由击中字段来分类记录,并且将它们传送到扫描和上滚,系统能够确定在每一个记录中找到的击中状态的组合的运行计数和总的计数。因此,例如,如果第一记录具有place=”foo”和building_num=”bar”的聚合值,则扫描/上滚将观看用于指示数据集I和2都参与具有密钥值的那个组合的组合击中(1,0,1)。该部件也查看这是该击中的组合的第一出现,并且向这个记录分配运行计数I和总的计数I。如果第二聚合值记录与击中的不同组合一起,则它也被分配运行计数I和总的计数I。如果如果第三聚合值记录与和第一记录相同的击中组合一起,则它也被分配运行计数2和总的计数2。这个处理的结果是表示用于外结合1002的唯一密钥值组合的记录(称为结合分析记录)的集。对于每一个记录,系统也可以了解哪个源数据集实例参与结合和具有这个击中组合的每一个记录表示什么运行计数以及对于该击中组合出现记录的什么总的计数。该信息可以有益于在prod_run图形中执行的下游操作。 例如,prod_run图形可以被配置来将与这个结合分析是相关联的数据集实例之一与结合结果结合。可以通过使用与使用在源数据集实例中的参与密钥元素值的对应的计算值结合的、来自分析结果的聚合值密钥来执行该结合。该结合对于源数据集的每一个记录指示是否在参与在conspec中限定的等同属性(例如,关联)的其他数据集实例的任何一个中出现了具有类似密钥值的记录。图11示出用于在与ab_COnspeC相关联的产生中限定的数据集实例的集合的绘制直方图结果1100。这是prod_analyze分布直方图,用于示出来自在重叠的依赖或相等结合中限定的参与数据集实例的记录的数量。“I”指示一个数据集实例在那个组中具有记录。组是具有关于结合密钥的匹配值的记录的集合。这个示例示出来自在来自图4A的ab_conspec 中限定的 a_customers、b_customers、consumer_info 结合的结果。这些结果1100是产生分析处理(例如,来自图7的prod_analyze步骤706)被应用到在ab_f中限定的joinl关联的结果。人们可以看到该三个数据集具有不与来自其他数据集的任何对应的记录匹配的大量记录。仅密钥值组合的几个具有来自该数据集实例的两个或全部三个的记录。因此,从这些结果,如果人们要从a_customers数据集实例过滤记录并且期望保持和与产生/conspec相关联的其他两个数据集实例的击中组合的分布,人们将必须小心以包括其密钥值落在1-0-1和1-1-0组中的记录。换句话说,如果人们粗心地Ua_customers选择记录而不使用这些结果,则容易丢弃在b_customers和consumer_info中具有匹配记录的大多数或全部记录。这样的从的记录的粗心选择将破坏由在conspec中限定的结合属性向是的外结合分布特性和由在产生中限定的数据集实例显示的特定值。一旦prod_analyze图形(例如,来自图7的prod_analyze步骤706)已经产生了用于在conspec中限定的等同属性(例如,在其值具有相等含义的字段之间的关联)的每一个的分析结果,则在图7中所示的产生处理器计划700可能调用用于与在处理顺序中识别的每一个数据集实例相关联的每一个pset的prod_run图形(例如,步骤708)。图12A示出在使用由pset供应的输入值的集合来处理数据集实例中涉及的步骤。该步骤被表示为以处理顺序对于每一个数据集实例执行的prod_run图形1200的部件。在图12A中的示例的第一步骤1202是根据对于在产生中的每一个数据集实例供应的命名约定来安装输入“源”数据集实例。可以将数据集实例的名称和始发地供应到pix)d_rUn图形以作为其pset参数之一。数据集实例不必在文件中始发。替代地,可以使用作为在产生中的输入供应的SQL语句来从数据库表格上载数据集实例。数据的任何可能来源可以作为数据集实例,诸如万维网服务、来自连续流的数据的快照、数据库、平面文件或另一种数据源。产生向产生处理器提供了足以用于经由从产生读取并且被写入prod_runpset的参数来定位和安装不同类型的数据集实例的每一个的信息。prod_setup图形从产生提取用于每一个数据集实例的定位的信息,并且向供应procLrun图形的pset写入作为输入参数的这个数据。图12B示出prod_run图形1200的读取数据步骤1202的细节。该示例是包括数据库表格或平面文件的安装流。更具体的安装部件可以允许从其他类型的来源安装数据集实例。而且,在conspec中识别的每一个数据集实例可以具有与其他不同的表示和位置。换句话说,产生可以指令产生处理器安装来自平面文件的第一数据集实例和来自数据库表格的第二数据集实例。另外,与conspec A相关联的第一产生可以调用安装来自文件的数据集I的实例,而与同一所述conspec相关联的第二产生可以调用安装来自诸如数据库表格的不同来源的数据集I的不同实例。返回参见图12A,一旦已经通过prod_run图形1200安装了数据集实例,则第二处理步骤1204相对于由prod_analyze图形产生的依赖和相等结合结果的每一个执行一个或多个结合操作(例如,图7的步骤706)。在a_customers (例如,如图4中所示)的情况下,可能存在相对于在此所述的joinl分析结果执行的结合,因此使得prod_run图形1200能够识别来自共享在b_customers和consumer_info中的等同记录的a_customers的记录。prod_run图形1200可以因此包括并且排除来自a_customers数据集实例的记录的期望的百分比,以便保持与来自先前处理的b_customers或consumer_info数据集实例的记录的相同的重叠。作为对于将源数据集实例与来自prod_analyze处理的一个或多个结合分析结果集集合的替代,prod_run图形1200可以直接地与已经处理的父数据集实例结合。prod_run图形1200可以然后执行内结合,并且仅清楚没有对应的匹配的源数据集记录(例如,基于在conspec中限定的依赖属性)。产生处理器(例如,在图6中所示的产生处理器600)的功能之一是以处理顺序写出用于每一个数据集的处理的数据集实例,并且“连线”这些处理的实例,使得当处理它们时它们可以与随后的数据集实例结合。另外,产生处理器的第二功能是分析在conspec中识别的依赖和相等属性,并且写入用于描述主数据集实例的内和外结合特性的这些直方图结果。而且,产生处理器的第三功能是“连线”在这些直方图结果和每一个源数据集实例之间的结合,以便使得procLrun图形1200能够识别可以共享在已经处理的数据集实例中的等同或依赖记录的记录。术语“连线”指的是procLsetup图形(例如,在图7中所示的图形702)以处理顺序向用于每一个数据集的procLrun pset写出特定参数值的实践。这些特定值识别所处理的数据集实例的名称,并且包括由conspec的依赖和相等属性限定的主密钥值。这些值允许诸如procLrun的一般图形被动态地配置来相对于已经处理的数据集实例安装和结合。在执行依赖结合的步骤(例如,步骤1204)期间,prod_run图形1200安装来自prod_run图形的先前执行的输出数据集实例的零或更多个。prod_setup图形702(图7)可能已经确定需要对于特定源数据集安装N个先前的数据集实例(即,在一个实施例中的父)。prod_setup图形702能够在用于prod_run图形1200的源数据集的输入pset中写入作为参数的与输出数据集实例对应的位置。另外,procLsetup图形702能够写入用于指示可能需要安装多少先前的数据集实例的参数。被称为依赖和相等结合的在图12A中的第二步骤1204示出可以用于安装可变数量的前任数据集实例的结合机制的实施例。在图12C中示出这个步骤1204的细节。根据在输入pset中供应的参数,该机制可以启动用于每一个前任数据集实例的一个结合源。该处理可以允许如果它成功地“内结合”或匹配来自对应的前任数据集实例的一个或多个的记录,则选择源记录。为了对于每一个前任执行该结合,prod_run图形被给出在源数据集中的外密钥分类元素和在每一个前任数据集中的对应的主密钥源元素的情况。该信息prod_setup通过图形被计算,并且,作为另外的pset参数被传递到prod_run图形。该结合步骤作用于源数据集实例以用于保持与在conspec中限定的共享依赖(即,关系)和相等(即,关联)属性的其他数据集实例匹配或不匹配的记录的分布的目的。在该示例中,当将a_transactions看作源数据集时,该结合机制可以保证去除与已经在prod_run图形的先前操作中被滤出的a_customers数据集实例的记录不匹配的来自a_transactions数据集实例的记录。这被称为保持“内结合”属性。在这个示例中,这意味着重要的是,如果已经去除了来自a_customers的特定引用记录,则从可能无效的a_transactions除了用于依赖属性的滤出之外,该结合机制也可以对于相等属性过滤。在图4A的 ab_conspec400 中的等同属性的不例是在 a_customers、b_customers 和 consumer_info之间限定的joinl相等。产生在图11中所示的直方图结果1100的分布分析可以被这个集合步骤用于保持用于诸如consumer_info的源的记录相对于诸如a_customers和b_customers的已经处理的数据集实例的分布。换句话说,该结合机制可以保证保持在一集对等相关的数据集实例之间的“外结合”特性。因此,如果在来自原始的a_Cust0mers和consumer_info记录之间存在高的重叠程度,但是在来自原始的a_customers和b_customers的记录之间存在低的重叠程度,则该结合可以评估两个已经处理的集合b_customers和consumer_info,并且过滤一集a_customers,使得结果保持与原始类似的分布。通常,这当处理的数据集需要具有与原始相同种类的在它们之间的重叠时是重要的。产生处理器的任务之一是在如在产生中像素的规则的集合所规定的那样对于在各种数据集实例中的记录执行变换的同时保持由在conspec描述的等同和依赖属性显示的分布图案。参考来自在图4A 中所不的 ab_conspec400 的 a_customers 和 a_transactions 的示例,我们可以考虑其中源数据集是a_transactions并且其中prod_setup图形702已经先前确定存在相对于a_transactions的一个前任、即a_customers的情况。prod_setup图形可能已经以分类密钥{custid}的形式写入了用于a_tranSactionS的外密钥元素——引用a_customers的那些。而且,prod_setup图形可能已经以分类密钥{custid}的形式写入了用于a_CuStomerS数据集的主密钥元素。这些不同的分类密钥可以具有不同的值,因为它们可以引用来自它们的对应的数据集的不同地命名的元素。注意,可以在conspec中找到可以作为产生处理器的设置处理的一部分读取的、由procLsetup图形确定用于特定前任数据集的外密钥元素和对应的主密钥元素所需的信息。为了相对于一个或多个前任数据集实例执行源数据集实例的结合和过滤操作,prod_run图形1200可能对于每一个需要分类密钥。图18C和18D示出用于产生分类密钥以用作在源数据集和其N个前任数据集之间的结合链接的逻辑1806、1808的示例,该N个前任数据集共享外至主密钥依赖一如在conspec中所概述。可以在产生处理器(例如,由在图7中所示的计划700表示的产生处理器)的prod_setup图形702中实现这些功能,并且这些功能可以被称为产生用于源数据集的prod_run图形1200的pset值的处理的一部分。在这些示例中的逻辑可以使用供应的索引数来识别在源数据集和其前任数据集之一之间的第N依赖关系。在我们的a_customers和a_transactions示例中,仅存在从a_transactions至a_customers的一个依赖关系,并且因此,该索引仅具有一个值O。被称为get_fkey_sort_elements的第一功能通过下述方式开始找到已经在通过procLsetup得出的处理顺序向量中包括的父数据集。接下来,该功能使用这些数据集来找到在引用这些父的源数据集中的外密钥。从该集密钥,该功能获得第N密钥,并且调整在源数据集中的密钥元素。这些密钥的序号可以被读取并且用于写出多部分分类密钥。类似地,get_pkey_sort_elements可以被称为在父数据集之一中产生主密钥分类元素。在图18D中所示的逻辑1808是使用源数据集来查找在处理顺序中同时出现的父数据集(这些父数据集可能已经被处理)的示例。在给出父的情况下,该功能可能查找在源数据集中的外密钥,并且选择指向源父的外密钥。在给出该集外密钥的情况下,该功能可以选择第N密钥,并且然后在源父中找到对应的主密钥。从这个主密钥,该功能可以找到密钥元素成员的序列,并且写出多部分分类密钥。这两个功能允许procLrun图形1200循环通过源数据集的外密钥,并且产生用于每一个源和父数据集对的分量密钥的组。procLsetup图形可以然后向用于每一个源数据集的prod_run pset写出作为参数的这些密钥值。prod_run图形1200的第三、第四和第五处理步骤1206、1208、1210用于应用由产
生供应的定制变换规则。实质上存在可以被应用到数据集实例的三种变换。一个步骤1206子集化包含确定是否应当消除来自源数据集实例的记录。另一个步骤1208修改包含确定是否应当改变来自同一所述实例的记录。改变可以包含增加或去除元素并且/或者修改元素的值。另一个步骤1210扩展包含确定来自同一所述实例的记录是否应当被复制到N个新的记录,并且对于每一个新的记录,新值应当是什么。单个产生可以调用这些类型的变换的任何一种。这些变换可以被产生处理器连续地应用。例如,产生可以调用第一子集化一集a_transactions,以便保持由诸如在prodid上的频率分布和价格元素的属性表征的统计一致,并且然后扩展子集化的结果以便复制剩余的记录,并且“以扇形散开”新值以具有不同的交易日期。术语“以扇形散开”指的是使用在某个范围上分布新值的公式来修改在N个新复制的记录中的元素的值的实践。因此,在以扇形散开诸如交易日期的日期的情况下,产生可以规定通过向日期加上M日来以扇形散开日期,其中,M是N个复制的新记录的索引。产生处理器的一个功能是提供用于应用由产生规定的子集、修改和扩展变换的任何组合的一般机制。虽然这些变换的每一个可能包含由产生供应的逻辑,但是每一个也可以包含利用先前处理的数据集实例的结果。产生处理器可以包含使用产生规则先前处理的数据集实例的结果。例如,产生可以调用ajransactions的复制和以扇形散开交易日期字段。在该示例中,产生可以与在图4A中所不的ab_conspec400相关联。a_transactions的扩展可以取决于多个因素的任何一种。例如,产生可以调用变换a_customers以及a_transactions。在一个不例中,可以首先扩展a_customers,使得对于每一个客户,存在N个新的客户,该N个新的客户具有用于它们的主密钥的对应的新的和唯一的custid值。当扩展a_transactions时,用于处理新的a_transaction记录的至少两种方式可以是可能的。一种方式包含修改每一个新的a_transaction custid值以引用新的a_customer记录之一,而另一种方式包含将每一个新的a_transaction记录指向原始a_transaction记录指向的同一 a_customer记录。替代地,如果还没有扩展而是已经减小了 a_customers,则进行扩展的a_transaction记录需要被首先子集化以便仅引用所包括的a_CUStomer记录,并且然后它们可以被扩展,使得cusid值不变,使得它们仅引用所包括的 a_customer 记录。产生处理器根据在conspec中限定的依赖和相等属性来处理引用完整性的保持。在一些示例中,子集化产生可以递归地过滤通过子的记录。例如,简单产生可以包括要向在conspec中的数据集之一应用的单个过滤规则。另外,可以有暗示的规则产生也从其他数据集实例去除记录,仅留下保持引用完整性的、在所有数据集实例中的最小集的记录。作为示例,参见在图4A中所示的conspec400,用户可能意欲仅保持其中客户布置字段具有“Atlantic”值的客户和交易。用户将限定新的产生,将其与ab_demo conspec相关联,并且然后表达两个过滤规则关于a-customers数据集的一个和关于b_customers数据集的另一个。该规则是字段级约束,用于指示place== “Atlantic”。除了提供过滤规则之外,用户也可以指定“全局规则”,用于请求保持在所有数据集实例上的最大集的记录,以便把词引用完整性。最后,用户指定用于在conspec中限定的数据集的每一个的数据集实例文件、数据库表格或其他数据源的身份和位置。在给定该产生的情况下,一般的产生处理器将解释conspec和产生规则,并且首先确定用于数据集实例的处理顺序。因为过滤规则被应用到具有依赖于它们的子数据集的数据集,所以处理器首先得出以客户数据集实例开始的处理顺序。一般处理器需要执行的作业的第一部分是整体数据集的产生以及由每一个数据集处理任务所需的任何变换、结合或其他元数据。在这个示例中,处理器需要首先作用于客户,其中,客户没有要与之结合的父。然而,客户处理的输出需要被存储并且使得可用于交易处理步骤,因为交易记录的每一个需要与对应的选择的客户内结合,以便产生与所选择的客户精确地匹配的最大集的交易。一旦处理的第一部分已经产生了数据集从顺序和全部的结合逻辑、变换等,则处理器可以在循环子计划中通过图形来切换每一个数据集实例的处理。图12D图示应用由prod_setup图形702作为参数供应的变换函数的子集化变换步骤1206的一个实施例。过滤器可以是多种类型的,包括但是不限于单记录和频率分布的。对于单记录过滤器,仅在每一个记录中的值可以用于选择或消除记录。在作为产生的一部分供应的、在图17F中所示的列表1712中示出的变换函数中示出该类型的记录的示例。在这个示例中,全部选择来自a_customers数据集的记录,而仅在“place”元素以字母“M”开始时选择来自b_customers数据集的记录。prod_setup图形702可以从产生读取这个函数,并且然后调用用于每一个数据集的函数以获得用于每一个数据集的子集化过滤器的值。第二种类型的过滤器频率分布是基于用于保留统计一致性的约束并且包含分析在数据集实例中的某个数量的命名元素上的值的频率分布的变换的示例。基于频率的过滤的目标是从源数据集实例去除记录,同时仍然保持在一集元素值组合上的之后的分布。例如,人们可能感兴趣于过滤a_transactions,但是以保持与在原始数据集实例中的值的频率分布相同的在价格、prodid和transtype上的频率分布的方式来如此进行。作为产生的一部分供应的在图17G中所示的列表1714中所示的变换函数可以被procLsetup图形使用来获得来自应当被考虑来用于频率分布过滤的数据集的元素的名称。另外,该变换可以供应将连续的元素“桶装”为值的列举的表达式(表示数据集实例可以具有无限数量的值)。这允许prod_run图形子集化变换步骤1206通过用于所命名的频率分布元素的一个或多个的离散的集的值来将记录分组。一旦已经以这种方式桶装了子,则系统可以基于落在每一个桶组内的记录的计数来执行子集化。在这个示例中,产生提供将关于a_transactions和b_transactions的价格桶装并且将consumer_info的est_income元素桶装的表达式。在其中表达式仅返回元素的值的情况下,这意味着该集值已经被考虑为合理大小的列举。在图12D中所示的步骤执行下述任务:评估和上滚具有用于在产生中命名的频率分布过滤元素的值的唯一组合的记录的计数。一旦已经执行了扫描和上滚,则根据单记录和频率分布规则来过滤记录。然后,对于结果产生的记录执行另一种频率分析,以示出子集化的记录与原始记录的匹配。该数据可以被写入直方图(例如,在图13中所示)。在一些示例中,产生处理器的功能是写出从处理步骤的每一个得出的报告信息,而是写出用于在产生中命名的数据集实例的每一个的新的处理的数据集实例。图13示出来自在保持由在place和est_income元素上的频率分布表征的统计一致性的同时使用要求用于减小因子5的产生规则已经应用子集化变换的结果的所产生的直方图1300。直方图1300示出来自向consumerjnfo数据集应用的子集化操作的频率分布结果。图12E示出可以在在源数据集实例中的N个复制的记录的每一个应用定制的以扇形散开规则的扩展变换处理步骤1210的实施例。扩展是在一个或多个数据集实例中建立新的记录的处理。可以从头开始或通过复制现有的记录来建立记录。如果被复制的记录具有对于在其他数据集(在conspec中限定)中的记录的依赖,则产生确定是否将在子数据集实例中的新的记录与在父数据集实例中的那些“连线”。替代地,产生也可能复制父记录,并且连线新的子以指向新的父。以这种方式,可以在保持引用完整性的同时复制相关记录的集合。图12F示出prod_run图形1200的最后步骤1212写入数据功能。图14图示扩展1400,其中,要扩展在conspec (在这个示例中,与使得能够监控由数据流图形执行的作业的运行时间执行的应用相关联的conspec)内的多个数据集中的记录。在该情况下,产生首先复制作业定义和应用,然后复制作业。每一个新的作业被连线以便引用每一个新的作业定义和应用。在处理扩展在每一个数据集实例中的记录的作业之前,产生首先确定数据集的整体处理顺序。在该情况下,在已经处理所有的依赖父之前不应当处理任何子,其中,子是具有对于在父数据集中的主密钥的外密钥引用的数据集。在最基本的扩展中,产生处理器可以使用每一个原始记录作为模板来复制N个新的记录。每一个新的记录的每一个字段被处理以保证当它包括主、外和/或唯一密钥时它获得新的值。在主密钥的情况下,选择新值以不与现有的密钥值冲突。在外密钥的情况下,改变值以便指向新的扩展父记录的对应的新的主密钥值。在唯一密钥的情况下,将值从原始值改变以保证在那种类型的所有记录的空间内的唯一性。例如,可以使得GUID字段唯
O
除了执行这些字段扩展规则之外,扩展产生处理器也支持在逐个类型的基础上的用户限定的字段扩展规则的输入。在此的目标是使得处理器能够在多个维度上扩展和同时“展开”字段值。例如,用户可能要扩展一集作业定义。然而,每一个新的作业定义可能要求其计划的开始时间从原始计划的开始时间递增某个数量。用于指定字段扩展规则的一种方式是通过在产生中嵌入DML函数。在图17H中所示的列表1716中所示的示例性DML函数图示定制扩展规则产生器,该产生器输出用于除了在作业上的计划开始时间和在作业定义依赖上的GUI字段之外的所有情况的默认规贝U。在第一种情况下,该函数构造规则,该规则向新的记录的计划开始时间加上与当前的扩展索引值对应的数量的秒。利用该规则,新的作业递增在与扩展的大小对应的多个秒上均匀分布的开始时间。在GUID的情况下,该函数调用产生处理器的密钥产生函数,因为假定GUID象它是外密钥引用那样作为。作为调用这个函数的结果,规则将向GUID值分配系统的扩展的密钥值,该GUID值在此被分配到在扩展来源表格中的GUID。函数^getExpandedKeyRule O ”是由扩展产生处理器支持的系统函数之一。可以明确地防止将特定的子数据集类型包括为来源。一些扩展要求用户能够指定要防止扩展处理的子。例如,相对于与作业角度应用相关联的conspec,用户可能要扩展已经具有在先前的日志运行的作业的集合的作业定义。用户可能要扩展作业定义,但是不要扩展作业。为了支持子对象的选用排除,该工具可以接受用于声明要排除的子的列表的输入参数。可以明确地防止扩展来 源,但是来源仍然用于递归地遍历子。一些扩展可能要求将表格选择为来源,并且,过滤来自这个表格的对象。另外,扩展可能要求过滤的选择用于将子对象的选择变窄。同时,用户可能不要扩展源父对象,并且取而代之,仅要扩展选择的子对象的集。在该情况下,用户将来源指定为将子的选择变窄的手段,但是然后防止扩展来源(即,选择的对象的复制)。例如,相对于与作业角度应用相关联的conspec,用户可能要扩展与其名称以字符串“Canada”开始的作业定义相关联的作业。用户将作业定义指定为来源,并且将明确地从来源选择(除了作业之外)排除所有其子。用户将指定用于作业定义的选择过滤器。最后,用户将指定防止扩展作业定义。该手段可以允许作为用于过滤和子检测的来源参与的类型,但是也从扩展处理排除。修改(也称为“掩蔽”)是替换在记录的一个或多个字段中的值的处理。在一些情况下,一致地作用于字段的组,以便保持在记录内的一致性约束(诸如与城市和邮政编码的一致性约束),而在其他情况下,一致地作用于在数据集上的字段值以便保持引用完整性。下面的部分提供了可以被一般的掩蔽产生处理器支持的不同种类的产生规则的概述。置乱算法使用来自在数据集中的其他记录的值来交换在一个或多个字段内的值。可以通过基于密钥或查找的映射函数(参见下面)来驱动新值的选择。该算法也可以保持在原始数据中的值的频率分布或产生掩蔽值的平坦分布。掩蔽产生处理器也支持多字段置乱,由此,在来自另一个记录的对应值之间置乱来自一个记录的字段值的块。这特别有益于保证男性和女性姓名与逻辑标题和性别相关联,并且邮政编码与有效的城市或州相关联。替代算法从虚构值的外部供应选择之后。不像置乱那样,不使用原始值,使得有可能隐藏是否在原始数据中存在特定值(而与哪个记录无关)。
产生算法使用对于特定类型的字段设计的域特定公式。对于下述类型的字段存在标准公式信用卡、社会保险、电话、日期、电子邮件。另外,可以使用公式来在对于值的一部分使用随机化的情况下得出校验和。加密提供了具有解密回原始值的能力的掩蔽的直接手段。加密之后可以通过应用,但是通常不作为用于特定类型的字段的有效数据通过。随机算法产生字母和/或数字的任何字符串。可以以可重复或不可重复方式来如此进行,即,人们可以选择将同一源字符串总是映射到同一掩蔽字符串或否。偏置算法变换在可接受输出的范围内的输入值。该手段可以用于将诸如日期、数量、货币等的字段改变保持期望的全局特性的小数量。例如,人们可以保持在客户之间的大对小交易值的模式,但是将该值改变小数量。在另一个示例中,人们可以在保持整个年龄分布的同时改变年龄。擦洗算法除去具有公共或空值的字段或其内容的一部分。定制函数可以与特定字段相关联,并且这些函数可以访问来自进行掩蔽的记录的一个或多个字段。掩蔽产生处理器可以使用以密码保证安全的散列算法或伪随机置换函数以得出查找索引。不必保护将索引映射到掩蔽值的查找表,因为取而代之保护用于得出索引的密钥。密码散列也适用于无限域数据或具有不等分布的数据,诸如名称和地址。伪随机置换也适用于有限域数据或具有相等分布的数据,诸如ID。掩蔽产生处理器可以使用散列或置换函数来得出用于每一个输入值的掩蔽值,并且然后在安全的查找表中存储原始向掩蔽值的映射。该表格明显地保持在掩蔽和未掩蔽的值之间的映射,并且因此需要被保持在安全环境中。其他产生处理器函数可以包括处理的方向,诸如父至子或子至父。因为conspec包括许多相互依赖的数据集,所以产生的一个或多个核心函数是确定处理数据集实例的顺序。根据在产生中指定的规则,产生处理器可能需要递归地首先处理父并且然后处理字,或者替代地,递归地首先处理字然后处理父。在前一个部分中,产生首先要求选择客户,并且然后选择字以便仅以依赖于所选择的父的子来结束。在替代的情况下,用户可能已经指定仅选择比值X大的高美元数量交易,并且仅以备份这些交易所需的客户结束。在该情况下,处理器需要首先处理子,随后处理父。处理器具有检测正确的处理顺序并且根据需要应用它的能力。有时,用户要通过将数据集的子集指定为来源而将处理的范围变窄。另外,用户可能要明确地排除用于作为父或子包括的特定数据集。用于确定处理顺序的一般函数应当将这些参数接受为自变量。主密钥分配是用于避免在产生上的标识符(ID)冲突的技术。产生可以或从头开始或通过复制来在数据集实例中产生新的记录。这些新的记录经常需要新的ID,并且因此,产生保证新的ID值不与现有的ID值冲突。另外,产生保证它在一个运行中产生的ID值不与它可以在随后的运行中产生的ID值冲突。存在用于保证ID落在对于产生的每一个运行唯一的名称空间内的多种方式。下面是用于在运行内以及在运行上产生非冲突数值ID的手段的示例。
对于数字主密钥,产生可以通过下述方式开始:计算在数据集实例内的主密钥字段的当前Min和Max值。在图15中,当前范围1502被示出为阴影的。例如,如果产生具有用于N此复制现有记录的每一个的规则,则在复制任何记录之前,产生需要首先逻辑地组织或留出未使用的ID的一集N个新的范围以存储新的记录。然后,用于现有记录的每一个的N个新的记录的每一个可以被分配来自该N个范围之一的ID值。因此,例如,如果用于密钥的现有索引值是321,则产生将产生用于321的N个新的记录,并且这些将被给出ID值1205、2089、…、321+884*N。换句话说,每一个新的记录被转储到下面所示的蓝色范围桶之一内。类似地,对于具有ID322的第二记录,产生将建立具有值1206、2090、...、322+884*N的N个新的对象。对于诸如⑶ID的非数字的密钥字段,产生可以首先在运行的开始处产生唯一RANDOM_RUN_SEED,并且将这个密钥和扩展索引数附接到每一个⑶ID。如果再一次运行产生,则它将使用不同的随机种子,该不同的随机种子将保证密钥在产生的多层运行上是唯一的。在图171中所示的列表1718是用于向相对于与作业角度应用相关联的conspec的扩展的作业记录分配新的⑶ID的所产生的变换规则的示例。“pN”是RANDOM_RUN_SEED的值。用于扩展的密钥产生的这些手段保证在产生的运行上的唯一性。这使得用户有可能多次运行产生或将不同类型的产生链接在一起。可以使用用于在计算机上执行的软件来实现如上所述的数据集处理技术。例如,软件在一个或多个编程或可编程计算机系统(其可以具有各种架构,诸如分布、客户/服务器或网格)上执行的一个或多个计算机程序中形成过程,每一个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置或端口和至少一个输出装置或端口。软件可以形成例如较大程序的一个或多个模块,该较大程序提供与数据流图形的设计和配置相关的其他服务。可以将图形的节点和元素实现为在计算机可读介质 从存储的数据结构或符合在数据储存库中存储的数据模型的其他被组织的数据。软件可以被设置在诸如⑶-ROM的存储介质上,被通用或专用可编程计算机可读或通过网络的通信介质被传递(在传播信号中被编码)到计算机,在计算机执行该软件。可以在专用计算机上或使用诸如协处理器的专用硬件来执行所有的函数。可以以分布的方式来实现该软件,其中,通过不同的计算机来执行由软件指定的计算的不同部分。每一个这样的计算机程序优选地被存储于或被下载到被通用或专用可编程计算机可读的存储介质或装置(例如,固态存储器或介质或磁或光学介质),用于当该存储介质或装置被计算机系统读取来执行在此所述的过程时配置和操作计算机。本发明的系统也可以被认为被实现为被配置计算机程序的计算机可读存储介质,其中,如此配置的存储介质使得计算机系统以特定和预定义的方式运行以执行在此所述的函数。已经描述了本发明的多个实施例。尽管如此,可以明白,可以在不偏离本发明的精神和范围的情况下进行各种修改。例如,如上所述的步骤的一些可以是独立于顺序的,并且因此可以以与所述的顺序不同的顺序被执行。应当明白,上述的说明意欲说明而不是限制由所附的权利要求的范围限定的本发明的范围。例如,可以以不同的顺序来执行如上所述的多个函数步骤,而不实质上影响整个处理。其他实施例在所附的权利要求的范围内。
权利要求
1.一种用于处理相关数据集的方法,所述方法包括: 通过输入装置或端口接收来自多个数据集的给定数据集的记录,所述给定数据集的记录具有用于一个或多个相应字段的一个或多个值;并且, 在数据处理系统中处理来自所述多个数据集的每一个的记录,所述处理包括: 分析在数据存储系统中存储的至少一个约束规范,以确定对于所述多个数据集的处理顺序,所述约束规范指定用于保留在包括所述多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束; 以所述确定的处理顺序向来自所述多个数据集的每一个的记录应用一个或多个变换,其中,在向来自所述多个数据集的第二数据集的记录应用所述变换之前,向来自所述多个数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及, 存储或输出对于来自所述多个数据集的每一个的所述记录的所述变换的结果。
2.根据权利要求1所述的方法,其中,用于保留由所述约束规范指定的引用完整性的至少一个约束基于用于所述第二数据集的字段的值对于用于所述第一数据集的字段的值的依赖。
3.根据权利要求2所述的方法,其中,所述第一数据集的所述字段是主密钥,并且所述第二数据集的所述字段是引用所述主密钥的外密钥。
4.根据权利要求3所述的方法,其中,所述约束规范包括在所述第二数据集的所述字段和所述第一数据集的所述字段之间的外密钥与主密钥关系的表示。
5.根据权利要求2所述的方法,其中,确定用于所述多个数据集的所述处理顺序包括:确定基于用于所述第二数据集的字段的值对于用于所述第一数据集的字段的值的依赖、按照处理顺序,在所述第二数据集之前出现所述第一数据集。
6.根据权利要求1所述的方法,其中,在所述变换被应用到来自所述第二数据集的记录之前,并且在所述变换被应用到来自所述第一数据集的记录之后,向来自多个数据集的第三数据集的记录应用所述变换。
7.根据权利要求1所述的方法,其中,用于保留由所述约束规范指定的统计一致性的至少一个约束基于在所述第二数据集的字段和所述第一数据集的字段之间的等同。
8.根据权利要求7所述的方法,其中,所述第一数据集的所述字段和所述第二数据集的所述字段是在结合操作中的密钥。
9.根据权利要求8所述的方法,其中,所述约束规范包括所述结合操作的表示。
10.根据权利要求1所述的方法,进一步包括:剖析在所述一组相关数据集中的所述数据集以确定与多个字段相关联的统计,所述多个字段包括所述第一数据集的至少一个字段和由所述约束规范指示为相等于所述第一数据集的所述字段的所述第二数据集的至少一个字段。
11.根据权利要求10所述的方法,其中,根据所述确定的统计和向来自所述第一数据集的所述记录应用所述变换的所述结果,至少部分地基于保留在所述第一数据集的所述字段中的值的分布和在所述第二数据集的所述字段中的值的分布之间的统计一致性来应用向来自所述第二数据集的所述记录应用的所述一个或多个变换。
12.根据权利要求1所述的方法,其中,通过至少一个数据流图形来应用所述一个或多个变换,所述至少一个数据流图形包括节点,所述节点表示通过用于表示在数据处理部件之间的记录的流的链路连接的数据处理部件,被应用所述变换的每一个数据集向所述数据流图形提供记录的输入流。
13.根据权利要求12所述的方法,其中,使用所述多个数据集的相应的一个来以多个迭代连续地执行所述数据流图形,以便以用于所述多个数据集的所述确定的处理顺序来提供记录的输入流。
14.根据权利要求1所述的方法,其中,被应用到给定数据集的记录的所述一个或多个变换包括子集变换,所述子集变换基于在所述给定数据集的至少一个字段中的值来减少在所述给定数据集中的记录的数量。
15.根据权利要求1所述的方法,其中,向给定数据集的记录应用的所述一个或多个变换包括修改变换,所述修改变换修改在所述数据集的至少一个字段中的值。
16.根据权利要求1所述的方法,其中,向给定数据集的记录应用的所述一个或多个变换包括扩展信息,所述扩展信息基于在所述给定数据集的至少一个字段中的值的复制来增大在所述给定数据集中的记录的数量。
17.根据权利要求1所述的方法,进一步包括: 分析在所述数据存储系统中存储的至少一个约束规范,以确定对于源自向来自所述多个数据集的每一个的所述记录应用所述变换的结果数据集的处理顺序,所述约束规范指定用于保留在包括所述结果数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束; 以所述确定的处理顺序 向来自所述结果数据集的每一个的记录应用一个或多个变换,其中,在向来自所述结果数据集的第二数据集的记录应用所述变换之前,向来自所述结果数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及, 存储或输出向来自所述结果记录的每一个的所述记录的所述变换的结果。
18.一种计算机可读介质,用于存储用于处理相关数据集的计算机程序,所述计算机程序包括用于使得计算机进行下述行为的指令: 通过输入装置或端口接收来自多个数据集的给定数据集的记录,所述给定数据集的记录具有用于一个或多个相应字段的一个或多个值;并且, 在数据处理系统中处理来自所述多个数据集的每一个的记录,所述处理包括: 分析在数据存储系统中存储的至少一个约束规范,以确定对于所述多个数据集的处理顺序,所述约束规范指定用于保留在包括所述多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束; 以所述确定的处理顺序向来自所述多个数据集的每一个的记录应用一个或多个变换,其中,在向来自所述多个数据集的第二数据集的记录应用所述变换之前,向来自所述多个数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及, 存储或输出对于来自所述多个数据集的每一个的所述记录的所述变换的结果。
19.一种用于处理相关数据集的数据处理系统,所述系统包括: 数据存储系统; 输入装置或端口,其被配置来接收来自多个数据集的给定数据集的记录,所述给定数据集的记录具有用于一个或多个相应字段的一个或多个值;以及, 至少一个处理器,其与所述输入装置或端口和所述数据存储系统进行通信,并且被配置来处理来自所述多个数据集的每一个的记录,所述处理包括: 分析在数据存储系统中存储的至少一个约束规范,以确定对于所述多个数据集的处理顺序,所述约束规范指定用于保留在包括所述多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束; 以所述确定的处理顺序向来自所述多个数据集的每一个的记录应用一个或多个变换,其中,在向来自所述多个数据集的第二数据集的记录应用所述变换之前,向来自所述多个数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用向来自所述第二数据集的所述记录应用的所述变换;以及, 存储或输出对于来自所述多个数据集的每一个的所述记录的所述变换的结果。
20.一种用于处理相关数据集的数据处理系统,所述系统包括: 用于接收来自多个数据集的给定数据集的记录的部件,所述给定数据集的记录具有用于一个或多个相应字段的一个或多个值;以及, 用于处理来自所述多个数据集的每一个的记录的部件,所述处理包括: 分析在数据存储系统中存储的至少一个约束规范,以确定对于所述多个数据集的处理顺序,所述约束规范指定用于保留在包括所述多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束; 以所述确定的处理顺序向来自所述多个数据集的每一个的记录应用一个或多个变换,其中,在向来自所述多个数据集的第二数据集的记录应用所述变换之前,向来自所述多个数据集的第一数据集的记录应用所述变换,并且至少部分地基于向来自所述第一数据集的所述记录应用所述变换的结果和由所述约束规范指定的在所述第一数据集和所述第二数据集之间的至少一个约束来应用 向来自所述第二数据集的所述记录应用的所述变换;以及, 存储或输出对于来自所述多个数据集的每一个的所述记录的所述变换的结果。
全文摘要
处理相关数据集包括接收(202)来自多个数据集(308,314,320)的记录;并且,在数据处理系统(100)中处理来自多个数据集的每一个的记录。该处理包括分析(206)在数据存储系统(116)中存储的至少一个约束规范(302,312)以确定用于多个数据集的处理顺序,该约束规范指定用于保留在包括多个数据集的一组相关数据集之间的引用完整性或统计一致性的一个或多个约束;以所确定的处理顺序在来自多个数据集的每一个的记录应用(208)一个或多个变换,并且存储(212)或输出对于来自多个数据集的每一个的记录的变换的结果。
文档编号G06F17/30GK103080932SQ201180040706
公开日2013年5月1日 申请日期2011年6月22日 优先权日2010年6月22日
发明者A.F.罗伯茨 申请人:起元技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1