数据库键识别的制作方法

文档序号:10557143阅读:250来源:国知局
数据库键识别的制作方法
【专利摘要】一种包括编码在计算机存储介质上的计算机程序的用于数据库键识别的方法、系统和设备。方法之一包括接收第一数据集中的第一字段的标识,该第一数据集包括记录。该方法包括识别值的集合,该值的集合针对各记录包括与字段相关联的值。该方法包括基于值的集合来生成过滤器掩码,其中过滤器掩码的应用能够确定给定值不处于值的集合中。该方法包括接收第二数据集,该第二数据集包括第二字段,该第二数据集包括多个记录。该方法包括确定第二数据集中具有通过了过滤器掩码的与第二字段相关联的值的记录的数量的计数。该方法还包括将该计数存储在配置文件中。
【专利说明】
数据库键识别
技术领域
[0001] 本说明涉及数据质量。
【背景技术】
[0002] 许多商业具有通过键链接在一起的数据集的大量集合。这些数据集可以是关系型 数据库中的表或者可以是盘存储系统中的平面文件(flat file)。这些集合可以利用数十 个或更多个键来归入数百或数千个数据集。结构可以是未设计的,即通过经过时间从多个 源累积数据而得到。过去可能曾经存在设计,但该设计已丢失、被遗忘或者已知是过时的。 该设计可能仅为专家所了解而没有被文件所记录。或者,该设计可能是已知的并且是当前 的,但并非是强制性的。

【发明内容】

[0003] 通常,本说明书中所述的主题的一个新颖方面可以实现为以下方法,所述方法包 括接收第一数据集中的第一字段的标识的动作,其中所述第一数据集包括多个记录。所述 方法包括识别值的集合的动作,其中所述值的集合针对各记录包括与所述字段相关联的各 记录的值。所述方法包括基于所述值的集合来生成过滤器掩码的动作,其中所述过滤器掩 码的应用能够确定给定值不处于所述值的集合中。所述方法包括接收第二数据集的动作, 其中所述第二数据集包括第二字段,所述第二数据集包括多个记录。所述方法包括如下动 作:确定所述第二数据集中具有通过了所述过滤器掩码的与所述第二字段相关联的值的记 录的数量的计数。所述方法还包括将所述计数存储在配置文件中的动作。
[0004] 该方面的其它实施例包括相应的计算机系统、设备和记录在一个或多个计算机存 储装置上的计算机程序,其中这些计算机系统、设备和计算机程序各自被配置为进行这些 方法的动作。一个或多个计算机的系统可被配置为通过将软件、固件、硬件或它们的组合安 装在该系统上来进行特定动作,其中该一个或多个计算机在工作时使该系统进行这些动 作。一个或多个计算机程序可被配置为通过包括如下指令来进行特定动作,其中这些指令 在由数据处理设备执行的情况下使设备进行这些动作。
[0005] 上述和其它实施例可以各自可选地以单独或组合方式包括以下特征中的一个或 多个。方法可以包括确定所述值的集合和所述第二数据集中具有与所述第二字段相关联的 值的记录的S0rensen-.Dice系数的动作。生成过滤器掩码可以包括对于所述值的集合中的 各值,生成针对相应值的过滤器键。生成针对相应值的过滤器键可以包括:生成针对相应值 的散列值;将所述散列值分割成预定数量的整数;以及通过基于所述整数设置位矢量中的 位来创建过滤器键。生成所述过滤器掩码可以包括:对所生成的过滤器键中的各过滤器键 进行二进制运算。确定所述第二数据集中具有通过了所述过滤器掩码的与所述第二字段相 关联的值的记录的数量的计数可以包括:针对与所述第二字段相关联的值计算第二过滤器 键;将所述第二过滤器键与所述过滤器掩码进行比较。
[0006] 方面可以包括以下一个或多个优点。可以在数据质量程序中建立置信度。可以揭 露未知或意外的关系。可以发现哪些字段保持共享值的信息。可以发现预期关系和所识别 出的关系之间的不一致。可以确定其它数据质量分析所要基于的精确数据结构。特别地,所 发现的键关系的结构可以用作对数据集的集合的参考完整性(referential integrity)进 行量化的起点。
[0007]根据以下说明,以及根据权利要求书,本发明的其它特征和优点将变得明显。
【附图说明】
[0008]图1示出可以使用数据库爬网(database crawling)技术的数据处理系统的示例。 [0009] 图2示出示例性过滤器掩码(filter mask)创建过程的流程图。
[0010]图3例示生成过滤器键(filter key)的示例。
[0011] 图4例示根据过滤器键生成过滤器掩码。
[0012] 图5示出基于过滤器掩码的示例性剖析过程的流程图。
【具体实施方式】
[0013] 机构收集大量的数据。数据是经过长时间段所收集到的。随着时间的经过,创建了 新数据集并改变了旧数据集。可能难以识别数据集之间的关系。
[0014]通常,数据集是数据的结构化集合。数据集分解为离散的数据。数据集的各记录共 用共通的记录格式。例如,关系型数据库表包括数据的行,其中数据的各记录(例如,行)遵 循该表的数据库模式(schema)定义。该模式可以包括表(或数据集)的定义。通常,该模式定 义存在于数据集中的一个或多个字段。可以通过将字段中的一个或多个字段用作键来识别 这些记录。通常,"主键"是一个或多个字段,其中该一个或多个字段的值唯一识别数据集中 的各记录。
[0015]在一些实现中,主键包括记录中的一个或多个字段。可以根据记录内所包含的商 业信息来得出该键,例如,名、姓和地址可以识别顾客(例如,"John"、"Smith"、"154Locke Lane")。
[0016] 一种主键是"代理键(surrogate key)"。代理键是并非根据商业信息得出的唯一 标识符或主键。例如,可以从数值序列中选择代理键。代理键可以对于各数据集而言是唯一 的,或者可以跨特定系统内的所有数据集(例如,对于特定公司的所有数据集)而言是唯一 的。例如,数字"10234"可以标识154 Locke Lane的John Smith的记录。由于商业信息可以 发生改变(例如,John Smith可以从154 Locke Lane搬迀到275 Greenwood Ave)或者可能 不是唯一的(例如,可以存在 154Locke Lane的John Smith和154 Lock Lane的John Smith Jr.),因此通常偏好代理键。如这里所使用的,对于特定域内的所有数据集而言为唯一的代 理键被称为"系统范围代理键"。数据集内唯一的代理键被称为"数据集代理键"。
[0017]数据集还可以与其它数据集相关,并且数据集内的记录可以与其它数据集中的记 录相关。通常,通过使用"外键(foreign key)"来描述数据集和记录之间的关系。外键是数 据集的数据格式中所定义的字段,其中外键的值参考其它字段的主键。
[0018]例如,可以组织商业以向顾客销售产品。顾客提交引用一个或多个产品的订单。为 了支持该商业模型,顾客记录可以存储在顾客数据集中。在顾客提交订单的情况下,可以在 订单数据集中创建订单记录。订单记录包括通常通过引用顾客记录的主键来引用提交该订 单的顾客的字段。更具体地,订单表(Order Table)可以包括John Smith提交的订单的记 录。该订单可以具有数值为987,321的主键并且包括(如上所述,引用154Locke Lane的John Smith的)具有数值10,234的"顾客标识符"字段。在本示例中,顾客数据集可以被称为主数 据集,(引用顾客数据集的)订单数据集可以被称为次数据集。
[0019]通常,主数据集和次数据集这样的表述定义两个数据集之间的关系的特性,并且 这样的表述可以不是绝对的。例如,订单可以包括多个行项目;各行项目引用不同的产品。 在本示例中,可以针对各产品创建行项目记录。行项目记录可以包括引用订单记录的外键。 在本示例中,根据订单相对于行项目的关系,订单是主数据集并且行项目是次数据集。数据 集还可以是多个关系的一部分;例如,行项目记录还可以引用产品数据集中所存储的产品 记录。在本示例中,产品数据集是主数据集并且行项目数据集是次数据集。
[0020]许多数据存储器具有可以用来强制执行这些关系的机制(称为参考完整性 (referential integrity))。然而,由于操作或性能原因,经常不使用这些机制。系统反而 依赖于编程逻辑来强制执行参考完整性。结果,随着时间的经过,系统的参考完整性可能劣 化。可能引入孤立记录(次数据集中的缺少指向主数据集的外键关系的记录);所预期的关 系可能缺失;等等。在一些情况下,(例如在企业等的合并工作期间)可能将新数据集引入现 有数据系统。可能无法准确知晓数据库之间的等价的主键和外键关系。
[0021]根据数据而不根据模式来确定键关系的结构可以是对数据集的集合的数据驱动 型数据质量分析中的第一个步骤。在一个组织启动数据质量程序时,能够看到存在于该组 织的数据中的实际的键关系,这给该组织带来信心。可以揭露数据集之间的未知或意外的 关系;可以发现哪些字段保持共享值的信息。可以发现所预期的关系和所识别出的关系之 间的不一致。可以确定其它数据质量分析要基于的精确结构。通常,所发现的主键-外键关 系的结构可以用作对系统中的数据集的参考完整性进行量化的起点。
[0022] 对主键和外键关系进行反向工程(reverse engineering)的传统方法涉及在不同 的数据集中识别潜在外键字段和潜在主键字段。这需要将潜在外键中的各个值与潜在主键 中的各个值进行比较。
[0023] 这里所述的可选方法包括利用允许误报(即,在值不是集合的成员的情况下过滤 器掩码表示该值是集合的成员)而消除漏报的可能性(即,在值是集合的成员的情况下过滤 器掩码将不会表示该值不是集合的成员)的过滤器掩码。通常,过滤器掩码是根据潜在主键 的字段(或多个字段)的记录中所存储的值而创建的。然后,将各记录的潜在外键字段的值 与过滤器掩码进行比较。
[0024]例如,一个处理利用布隆(Bloom)过滤器来表征来自字段和数据集的指定集合的 各数据集的各字段的值的分布。布隆过滤器是可以用来测试元素是否是集合的成员的节省 空间的概率数据结构。
[0025]图1示出可以使用键匹配和识别技术的数据处理系统100的示例。通常,键匹配和 识别是指收集与一个或多个数据集有关的信息以及用以识别数据集之间的潜在关系的信 息的处理。系统100包括数据源102,其中该数据源102可以包括诸如存储装置或指向在线数 据流的连接等的一个或多个数据的源,其中该一个或多个数据的源各自可以以各种格式 (例如,数据库表、电子表格文件、平面文本(flat text)文件或计算机所使用的本机格式) 中的任何格式来存储或提供数据。执行环境104包括过滤器掩码创建模块106和过滤器掩码 应用模块112。执行环境104例如可以在诸如某个版本的UNIX操作系统等的适当的操作系统 的控制下安装在一个或多个通用计算机上。例如,执行环境104可以包括多节点并行计算环 境。该多节点并行计算环境包含使用多个中央处理单元(CPU)或多个处理器核的计算机系 统的结构,可以是本地的(例如,诸如对称多处理(SMP)计算机等的多处理器系统)或本地分 布式的(例如,作为集群所连接的多个处理器或大规模并行处理(MPP)系统)、或者远程或远 程分布式的(例如,经由局域网(LAN)和/或广域网(WAN)连接的多个处理器)、或者它们的任 何组合。
[0026] 过滤器掩码创建模块106读取来自数据源102的数据并且针对数据源102中的数据 集的一个或多个字段存储过滤器掩码。该过滤器掩码例如可以是布隆过滤器。
[0027] 传统的布隆过滤器包括多个位以及一个或多个散列函数。使用各散列函数来将输 入值映射至过滤器键中的位的子集。对过滤器键进行组合以创建过滤器掩码。如下所述,可 以通过使用单个散列函数创建过滤器键,来创建布隆过滤器。
[0028] 可以针对被识别为潜在键的字段来创建过滤器掩码。可以使用下述的处理来生成 过滤器掩码。提供数据源102的存储装置相对于执行环境104可以是本地的,例如,数据可以 存储在连接至安装有执行环境104的计算机的存储介质(例如,硬盘驱动器108)上。这些存 储装置相对于执行环境104还可以是远程的,例如,安装在经由(例如,云计算基础设施所提 供的)远程连接与安装有执行环境104的计算机进行通信的远程系统(例如,大型机110)上。
[0029] 过滤器掩码应用模块112使用过滤器掩码创建模块106所生成的过滤器掩码来比 较数据集的记录的值。过滤器掩码应用模块可以针对数据集的特定字段确定以下内容 (等):如下所述的与过滤器掩码所指定的特性相匹配的值的数量的计数、与过滤器掩码相 匹配的值的数量的百分比和/或诸如S0rensen-Dice系数等的用于比较过滤器掩码和值的 相似度的统计数据。还可以确定能够用以判断数据集中的字段对于所识别出的键字段而言 是否为良好匹配的其它统计数据。
[0030] 过滤器掩码应用模块112可以与其它数据剖析模块相结合地进行工作。输出数据 114可以存储回数据源102中或者存储在执行环境104可访问的数据存储系统116中,或者以 其它方式被使用。数据存储系统116对于开发环境118来说也是可访问的,在该开发环境中, 开发者120能够识别出数据集中的作为潜在键的一个或多个字段。
[0031] 在一些实现中,开发环境118是用于开发作为数据流图的应用程序的系统,其中该 数据流图包括顶点(表示数据处理组件或数据集),其中这些顶点通过顶点之间的有向链接 (directed link)(表示工作元素(即数据)的流)相连接。例如,在通过引用包含于此的标题 为 "Managing Parameters for Graph-Based Applications" 的美国专利公开号2007/ 0011668中更详细地说明了这种环境。在全部内容通过引用包含于此的标题为"EXE⑶TING COMPUTATIONS EXPRESSED AS GRAPHS"的美国专利5,966,072中说明了用于执行这种基于 图的计算的系统。根据该系统所制作的数据流图提供用于使信息流入或流出图组件所表示 的个别处理、在这些处理之间移动信息、以及为这些处理定义运行顺序的方法。该系统包括 用于从任何可用方法中选取处理间通信方法的算法(例如,与图的链接相对应的通信路径 可以使用TCP/IP或UNIX域套接字,或者使用共享存储器在处理之间传递数据)。
[0032] 过滤器掩码创建模块106可以接收来自可以实现数据源102的各种系统的数据,其 中该系统包括不同形式的数据库系统。该数据可以被组织成具有各字段(还被称为"属性" 或"列")的值的可能包括空值的记录。在第一次从数据源读取数据的情况下,过滤器掩码创 建模块106通常从与该数据源中的记录有关的一些初始格式信息开始。在一些情形中,数据 源的记录结构最初可能是未知的并且作为替代,可以在对该数据源或数据进行了分析之后 才确定。与记录有关的初始信息例如可以包括表示独特值的位的数量、记录内的字段的顺 序以及位所表示的值的类型(例如,串、有符号/无符号整数)。
[0033]图2示出布隆过滤器中所使用的示例性过滤器掩码创建过程200的流程图200。该 过程例如可以通过图1的过滤器掩码创建模块106来执行。过程200包括接收数据(202)。数 据可以包括在诸如数据库表或平面文件等的数据集中。数据可以包括一个或多个字段以及 一个或多个记录,其中各记录包括至少部分字段的值。在一些状况下,记录可以包括空值或 表示特定字段不存在值的其它指示。
[0034] 过程200包括识别潜在键(206)。潜在键可以包括一个或多个字段。用户可以识别 潜在键或者可以基于数据或元数据(用于描述数据的数据)来确定潜在键。例如,可以利用 针对关系型数据库表的主键约束来识别潜在键。通常,约束针对诸如关系型数据库表等的 数据集中的数据指定规则。主键约束表示特定字段(或字段的组合)是主键以使得该特定字 段(或字段的组合)唯一识别数据集中的记录。
[0035] 针对各记录,过程200创建过滤器键(208)。通常,过滤器键是可以基于记录的字段 中所存储的值来创建的稀疏填充键。为了生成不允许漏报的过滤器掩码,应针对字段中的 各唯一值生成过滤器键。在一些实现中,可以在生成键之前识别唯一值并且可以针对各唯 一值生成键。
[0036]图3例示生成过滤器键350的示例。在传统的布隆过滤器中,对值进行执行一系列 的散列函数以识别过滤器键。各个散列函数将一些元素映射至位阵列中的一个或多个位。 在可选实现中,如下所述,可以使用多级散列函数。
[0037] 在本示例中,记录的字段包括值302,在本示例中为"John Smith"。针对值302应用 散列算法3 0 4以生成散列值3 0 6,在本示例中散列值具有1 6进制表示 6117323D2CABBC17D44C2B44587F682Chex。通常,散列算法可以是碰撞可能性足够低的任何 散列算法。在本示例中,使用MD5消息摘要算法。MD5散列生成128位(16字节)的散列值。还可 以使用诸如生成160位(20字节)的散列值的SHA-1以及生成224、256、384或512位的散列值 的SHA-2等的其它散列算法。通常,散列算法被选择为在维持期望性能特性的情况下使数据 内的碰撞可能性最小化。SHA-1返回20字节的串,其中该串可以被视为5个4字节的无符号整 数。SHA-256返回32字节的串,其中该串可以被视为8个4字节的无符号整数。通常,基于要分 析的数据的大小来选择键的大小并由此选择算法。增大键的大小以避免键空间中的碰撞。 例如,64MB的键和2500万行的候选键表在5个键(SHA-1)的情况下产生约为0.0004的误报率 并且在8个键(SHA-256)的情况下产生约为0.0001的误报率。
[0038]该过程将散列值306分割为数值(308),在本示例中为4字节的整数值310、320、328 和 330。例如,md5 散列值6117323D2CABBC17D44C2B44587F682Chex 分割成整数值6117323Dhex, 2CABBC17hex,D44C2B44 hex,587F682Chex。可以使用其它大小;例如,散列值可以分割成8字节 的整数值。
[0039]以说明为目的,图3示出整数值310(6177323Dhex)的十六进制表示还可以被表示为 十进制值(1,628,910,141-1)。
[0040]在过滤器键的长度小于整数的最大值(例如,对于4字节的无符号整数为4,294, 967,295)的状况下,可以使用模运算来减小整数的值。在本示例中,在过滤器键350的大小 为4096位的情况下。通过模4096来调整各整数值310、320、328和330以生成值316、324、332 和 334。
[0041] 过滤器键的大小可以根据系统而改变。例如,过滤器键的大小可以是8兆字节 (MB),或者67,108,864位。确切的大小是在良好理解布隆过滤器的统计数据的基础上针对 最佳性能和准确度来挑选的。通常,布隆过滤器的大小被选择为确保过滤器掩码是稀疏填 充的,即,相对于设置位("1")具有大量的未设置位("〇")。
[0042] 该过程将各整数值映射至过滤器键350中的位。在一些实现中,过滤器键350是位 的一维阵列。可以基于相对于阵列头部的数值偏移来确定阵列中的位置,并且将该位置称 为索引。根据编程语言,可以使用索引"〇"(基于〇的编号)或索引"1"来引用阵列中的第一 位。在本示例中,阵列是基于0的。各整数值使得在阵列内设置单个位。在索引值位置中,位 被设置成值"1"。在本示例中,索引位置573、2092、2884和3095处的位被设置为"1"并且其余 位被设置为(或者保持为)"〇"。
[0043] 再参考图2,该过程组合过滤器键以创建过滤器掩码(212)。图4例示根据过滤器键 来创建过滤器掩码。数据集包括记录,其中各记录在被识别为潜在键的字段402a~j中包括 值。该过程针对各值创建过滤器键404a~j(例如,使用值Jonas Demers 402a来生成过滤器 键Key A(键A)404a,使用值Sofia Votaw 402b来生成过滤器键Key B(键B)404b,等等)。该 过程组合过滤器键404a~j以创建过滤器掩码406。可以通过使用二进制0R(或)运算来组合 过滤器键404a~j。或运算接纳两个布尔(Boolean)值(布尔值包含真或假),并且在两个值 均为真的情况下返回真,在两个值均为假的情况下返回假。传统地,二进制的"1"表示真值 并且二进制的"〇"表示假值。二进制或运算取长度相等的二位模式,并且针对各对相应位进 行逻辑或运算。在第一位为1、第二位为1或者两位均为1的情况下,各位置的结果为1,否则 结果为〇。
[0044] 例如,数字10011B和数字00010B的二进制或得到:
[0045] 10011B
[0046] 0001QB
[0047] 10011B
[0048]得到的过滤器掩码406是针对数据集的潜在键的内容的"指纹"。
[0049] 参考图2,该过程可以将过滤器掩码存储在持久数据存储器中或者任何其它存储 介质中(214)。
[0050] 图5示出基于过滤器掩码的示例性剖析过程500的流程图。过程500接收过滤器掩 码(501)。可以使用上述的处理来生成过滤器掩码。在一些实现中,过程500可以接收一个或 多个过滤器掩码。例如,系统或用户可以识别待比较的两个数据集以尝试识别这两个数据 集之间的任何主键-外键关系。可选地,可以将数据集与多个不同的数据集进行比较以尝试 识别系统中的初始数据集和所有其它数据集之间的任何键关系。在一些实现中,可以针对 数据集中的各字段生成过滤器掩码。可以将各过滤器掩码与其它数据集中的字段进行比 较。
[0051] 过程500接收数据以进行剖析(502)。数据可以包括一个或多个数据集,其中各数 据集包含一个或多个字段以及一个或多个记录,该一个或多个记录各自包括该一个或多个 字段的值。在一些实现中,数据集的一个或多个字段是可选的。记录可以包括也可以不包括 可选字段的值。
[0052]过程500可以对数据集进行顺次或并行分析。各并行处理可以设置其自身的过滤 器掩码的副本。尽管过滤器掩码足够大以能够相对稀疏地被填充,但过滤器掩码与处理中 的数据相比仍保持相对小。对于各记录,该过程针对字段的值应用过滤器掩码。在一些实现 中,该过程可以处理单个字段,例如,数据库表中的预定行。在其它示例中,系统可以将记录 中的各值与一个或多个过滤器掩码进行比较。
[0053]在一些实现中,将值与过滤器掩码进行比较可以包括针对该值生成过滤器键 (504)。可以使用以上参考图2和3所述的处理来生成过滤器键。通常,可以使用用以生成进 行组合以创建过滤器掩码的键的相同的处理来生成各过滤器键。使用相同的处理,这确保 所有键与过滤器掩码的长度相同。
[0054] 可以通过进行二进制AND(与)运算来将所生成的过滤器键与过滤器掩码进行比较 (506)。通常,与运算接纳两个值,在两个值均为真的情况下生成肯定应答,否则生成否定应 答。传统地,二进制的"1"表示真值并且二进制的"0"表示假值。二进制与运算是接纳长度相 等的二位模式并且针对各对相应位进行与运算的功能。在第一位为1且第二位为1的情况 下,各位置的结果为1,否则结果为〇。
[0055] 例如,数字"10011B"和数字"00010B"的二进制与运算生成:
[0056] 10011B
[0057] 0001QB
[0058] 00010B
[0059] 可以将二进制与运算的结果与过滤器键进行比较(506)。如果二进制与运算的结 果与过滤器键相匹配,则值通过过滤器并且成为潜在匹配。如果二进制与运算的结果与过 滤器键不匹配,则值不通过过滤器并且不是匹配。
[0060] 例如,将过滤器掩码10011B与过滤器键00010B进行比较。如上所述,对这两个二进 制数进行二进制与运算,得到值00010B。由于结果值(00010B)与过滤器键(00010B)相同,因 此该过滤器键通过过滤器。
[0061] 作为反例,将过滤器掩码10011B与过滤器键01001B进行比较。对该掩码进行二进 制与运算并且以下示出键。
[0062] 10011B
[0063] 01QQ1B
[0064] 〇〇〇〇lB
[0065]由于该结果,00001B与过滤器键01001B不匹配,因此过滤器键没有通过过滤器。
[0066] 将过滤器键与过滤器掩码进行比较是相对快的运算。因此,与通过传统的键识别 方法相比可以更快且更高效地处理大量记录,其中传统的键识别方法通常包括将潜在主键 字段的各值与潜在外键字段的各值进行比较。
[0067] 如上所述,可以选择过滤器掩码算法,以最终确定元素不是用于生成过滤器掩码 的集合的成员。比较的结果可以存储在诸如关系型数据库或平面文件等的持久数据存储器 中。
[0068] 一旦该过程处理了所确定的针对数据集的记录的字段,则该过程可以判断是否存 在更多要处理的数据集(508)。如果存在更多要处理的数据集,则接收下一数据集(502)。
[0069] 在一些实现中,可以将根据主表中的潜在主键所生成的过滤器掩码与潜在次表中 的各字段进行比较。
[0070] 在一些实现中,可以在过程502的开头生成根据不同的数据集得到的许多过滤器 掩码。在处理候选数据集时,可以将所有键掩码加载在计算机存储器中。可以以最小的附加 开销来针对这些布隆过滤器中的各布隆过滤器测试该候选中的各字段的值。
[0071] 一旦处理了所有的值,则记录并分析统计数据(510)。可以针对包含与过滤器掩码 进行比较的值的各字段来记录统计数据。
[0072] 可以计算附加的统计数据;例如,该过程可以确定针对各列能够收集的统计数据, 其中这些统计数据包括记录的数量、在过滤器掩码中发现了字段的值的记录的数量、字段 中的独特值的数量以及S0rensen-Dice系数(用于比较两个样本的相似度的统计数据)。可 以确定用于比较潜在键字段和目标字段之间的相似度的其它统计数据,例如,主表的数值 键值的范围(高/低)、均值、几何均值和标准差。
[0073] 在一些实现中,计算比较计数、独特值的数量、百分比交叉(P e r c e n t Intersection) (即,在被测试的字段和被比较的字段这两者中均出现的值的百分比)和 Soren sen- Dice系数。对于数值键,可以计算标准差。
[0074] 在一些实现中,统计数据可以格式化为报告并且呈现给用户。
[0075] 在一些实现中,该报告可以识别对于外键主键关系而言成为匹配的一个或多个字 段。例如,将在过滤器掩码中发现了字段的值的记录的百分比与例如为60%的阈值进行比 较,将Sorensen-Dice系数与例如为8 0 %的阈值进行比较,并且将百分比交叉与例如为 95%的阈值进行比较。将与所有阈值匹配的字段作为潜在匹配呈现给用户。
[0076]在数据集使用系统范围代理键的状况下,可以自动确定潜在匹配。
[0077] 在一些实现中,可以向用户呈现报告以使得用户能够识别潜在的外键匹配。
[0078] 可以使用执行适当软件的计算系统来实现上述的数据库分析方式。例如,该软件 可以包括在一个或多个编程或可编程计算系统(可以具有诸如分布式、客户端/服务器或网 格等的各种架构)上执行的一个或多个计算机程序中的进程,其中该一个或多个编程或可 编程计算系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失 性存储器和/或存储元件)、(用于使用至少一个输入装置或端口接收输入、并且用于使用至 少一个输出装置或端口提供输出的)至少一个用户界面。该软件可以包括例如提供与数据 流图的设计、结构和执行相关的服务的更大程序的一个或多个模块。该程序的模块(例如, 数据流图的元素)可以实现为数据结构或符合数据仓库中所存储的数据模型的其它有组织 的数据。
[0079] 可以将软件设置在诸如CD-ROM或(例如,利用通用或专用计算系统或装置可读取 的)其它计算机可读介质等的有形非瞬态介质上、或者经由网络的通信介质(例如,以编码 在传送信号中的形式)传递至执行该软件的计算系统的有形非瞬态介质。可以在专用计算 机上、或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用集成电路(ASIC)等的专用 硬件来进行该处理的一部分或全部。可以以利用不同的计算元件来进行软件所指定的计算 的不同部分的分布式方式来实现该处理。优选将这种计算机程序各自存储在通用或专用可 编程计算机可访问的存储装置的计算机可读存储介质(例如,固态存储器或介质、或者磁性 或光学介质)上或者下载至该计算机可读存储介质,以在利用计算机读取存储装置介质以 进行这里所述的处理的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视 为作为配置有计算机程序的有形非瞬态介质来实现,其中如此配置成的介质使计算机以特 定的预定义方式进行工作,以进行这里所述的处理步骤中的一个或多个。
[0080]已经说明了多个实施例。然而,应当理解,上述说明意图例示而并非限制由所附权 利要求书的范围所定义的本发明的范围。因此,其它实施例也在所附权利要求书的范围内。 例如,可以在没有背离本发明的范围的情况下进行各种变形。另外,上述步骤中的一部分可 以是顺序独立的,因而可以以与所述顺序不同的顺序来进行。
【主权项】
1. 一种方法,包括: 接收第一数据集中的第一字段的标识,所述第一数据集包括多个记录; 识别值的集合,所述值的集合针对各记录包括该记录中的与所述第一字段相关联的 值; 基于所述值的集合来生成过滤器掩码,其中所述过滤器掩码的应用能够确定给定值不 处于所述值的集合中; 接收第二数据集,所述第二数据集包括第二字段,所述第二数据集包括多个记录; 确定所述第二数据集中具有通过了所述过滤器掩码的与所述第二字段相关联的值的 记录的数量的计数;W及 将所述计数存储在配置文件中。2. 根据权利要求1所述的方法,其中,还包括:确定所述值的集合和所述第二数据集中 具有与所述第二字段相关联的值的记录的Sorensen-Dice系数。3. 根据权利要求1所述的方法,其中,生成过滤器掩码包括对于所述值的集合中的各 值,生成针对相应值的过滤器键。4. 根据权利要求3所述的方法,其中,生成针对相应值的过滤器键包括: 生成针对相应值的散列值; 将所述散列值分割成预定数量的整数;W及 通过基于所述整数设置位矢量中的位来创建过滤器键。5. 根据权利要求3所述的方法,其中,生成所述过滤器掩码还包括:对所生成的过滤器 键中的各过滤器键进行二进制运算。6. 根据权利要求5所述的方法,其中,确定所述第二数据集中具有通过了所述过滤器掩 码的与所述第二字段相关联的值的记录的数量的计数包括: 针对与所述第二字段相关联的值计算第二过滤器键; 将所述第二过滤器键与所述过滤器掩码进行比较。7. -种利用计算机程序指令来编码的非瞬态计算机存储介质,所述计算机程序指令在 由一个或多个计算机执行的情况下使得所述一个或多个计算机进行W下操作: 接收第一数据集中的第一字段的标识,所述第一数据集包括多个记录; 识别值的集合,所述值的集合针对各记录包括该记录中的与所述第一字段相关联的 值; 基于所述值的集合来生成过滤器掩码,其中所述过滤器掩码的应用能够确定给定值不 处于所述值的集合中; 接收第二数据集,所述第二数据集包括第二字段,所述第二数据集包括多个记录; 确定所述第二数据集中具有通过了所述过滤器掩码的与所述第二字段相关联的值的 记录的数量的计数;W及 将所述计数存储在配置文件中。8. 根据权利要求7所述的非瞬态计算机存储介质,其中,还包括:确定所述值的集合和 所述第二数据集中具有与所述第二字段相关联的值的记录的8卵61化611-0山6系数。9. 根据权利要求7所述的非瞬态计算机存储介质,其中,生成过滤器掩码包括对于所述 值的集合中的各值,生成针对相应值的过滤器键。10. 根据权利要求9所述的非瞬态计算机存储介质,其中,生成针对相应值的过滤器键 包括: 生成针对相应值的散列值; 将所述散列值分割成预定数量的整数;W及 通过基于所述整数设置位矢量中的位来创建过滤器键。11. 根据权利要求9所述的非瞬态计算机存储介质,其中,生成所述过滤器掩码还包括: 对所生成的过滤器键中的各过滤器键进行二进制运算。12. 根据权利要求11所述的非瞬态计算机存储介质,其中,确定所述第二数据集中具有 通过了所述过滤器掩码的与所述第二字段相关联的值的记录的数量的计数包括: 针对与所述第二字段相关联的值计算第二过滤器键; 将所述第二过滤器键与所述过滤器掩码进行比较。13. -种系统,包括: 一个或多个计算机和用于存储指令的一个或多个存储装置,其中所述指令被配置为在 所述指令由所述一个或多个计算机执行的情况下能够使所述一个或多个计算机进行W下 操作: 接收第一数据集中的第一字段的标识,所述第一数据集包括多个记录; 识别值的集合,所述值的集合针对各记录包括该记录中的与所述第一字段相关联的 值; 基于所述值的集合来生成过滤器掩码,其中所述过滤器掩码的应用能够确定给定值不 处于所述值的集合中; 接收第二数据集,所述第二数据集包括第二字段,所述第二数据集包括多个记录; 确定所述第二数据集中具有通过了所述过滤器掩码的与所述第二字段相关联的值的 记录的数量的计数;W及 将所述计数存储在配置文件中。14. 根据权利要求13所述的系统,其中,还包括:确定所述值的集合和所述第二数据集 中具有与所述第二字段相关联的值的记录的Sorensen-Dice系数。15. 根据权利要求13所述的系统,其中,生成过滤器掩码包括对于所述值的集合中的各 值,生成针对相应值的过滤器键。16. 根据权利要求15所述的系统,其中,生成针对相应值的过滤器键包括: 生成针对相应值的散列值; 将所述散列值分割成预定数量的整数;W及 通过基于所述整数设置位矢量中的位来创建过滤器键。17. 根据权利要求15所述的系统,其中,生成所述过滤器掩码还包括:对所生成的过滤 器键中的各过滤器键进行二进制运算。18. 根据权利要求17所述的系统,其中,确定所述第二数据集中具有通过了所述过滤器 掩码的与所述第二字段相关联的值的记录的数量的计数包括: 针对与所述第二字段相关联的值计算第二过滤器键; 将所述第二过滤器键与所述过滤器掩码进行比较。19. 一种系统,包括: 用于接收第一数据集中的第一字段的标识的部件,所述第一数据集包括多个记录; 用于识别值的集合的部件,所述值的集合针对各记录包括该记录中的与所述第一字段 相关联的值; 用于基于所述值的集合来生成过滤器掩码的部件,其中所述过滤器掩码的应用能够确 定给定值不处于所述值的集合中; 用于接收第二数据集的部件,所述第二数据集包括第二字段,所述第二数据集包括多 个记录; 用于确定所述第二数据集中具有通过了所述过滤器掩码的与所述第二字段相关联的 值的记录的数量的计数的部件;W及 用于将所述计数存储在配置文件中的部件。
【文档编号】G06F17/30GK105917336SQ201580004845
【公开日】2016年8月31日
【申请日】2015年1月15日
【发明人】T·S·布什
【申请人】起元技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1