用于批量和实时数据处理的设备、系统和方法转让专利
申请号 : CN201480014776.7
文献号 : CN105531698B
文献日 : 2019-08-13
发明人 : A·拉娜 , C·戈 , B·西马诺夫斯基
申请人 : 美国结构数据有限公司
摘要 :
权利要求 :
1.一种用于生成一组数据的概要数据的计算系统,所述计算系统包括:一个或多个处理器,配置为运行存储在无形计算机可读介质中的一个或多个模块,其中所述一个或多个模块可操作执行:接收第一组数据和第二组数据,其中,所述第一组数据与所述第二组数据相比包括更大量的数据项;
处理所述第一组数据从而将所述第一组数据格式化为第一组结构化数据;
通过用于概括所述第一组结构化数据的操作规则,使用所述第一组结构化数据生成第一概要数据,并且将所述第一概要数据存储在数据存储库中;
处理所述第二组数据从而将所述第二组数据格式化为第二组结构化数据;
通过用于概括所述第一组结构化数据和所述第二组结构化数据的操作规则,基于所述第一组结构化数据和所述第二组结构化数据生成第二概要数据;
确定所述第一概要数据和所述第二概要数据之间的差异;以及
基于所述第一概要数据和所述第二概要数据之间的所述差异更新所述数据存储器。
2.根据权利要求1所述的计算系统,其中,所述第二组数据包括实时数据提交,以及所述一个或多个模块可操作以响应于接收到所述第二组数据来处理所述第二组数据从而将所述第二组数据格式化为所述第二组结构化数据。
3.根据权利要求1所述的计算系统,其中,所述一个或多个模块可操作以每隔第一时间间隔处理所述第一组数据从而将所述第一组数据格式化为所述第一组结构化数据,所述第一时间间隔基本上比第二时间间隔更长,每隔所述第二时间间隔所述第二组数据被格式化为所述第二组结构化数据。
4.根据权利要求1所述的计算系统,其中,所述第一概要数据和所述第二概要数据中的每一个都包括实体标识符和与所述实体标识符相关联的值,以及其中所述一个或多个模块可操作以通过以下操作来确定所述第一概要数据和所述第二概要数据之间的所述差异:确定所述第一概要数据和所述第二概要数据包括相同的实体标识符,以及比较在所述第一概要数据和所述第二概要数据中与所述相同的实体标识符相关联的值。
5.根据权利要求4所述的计算系统,其中,所述一个或多个模块进一步可操作以向其它被授权计算系统提供所述第一概要数据和所述第二概要数据之间的所述差异。
6.根据权利要求5所述的计算系统,其中,所述一个或多个模块进一步可操作以经由应用编程接口向其它被授权计算系统提供所述差异。
7.根据权利要求5所述的计算系统,其中,所述一个或多个模块进一步可操作以将所述差异作为文件提供给其它被授权计算系统。
8.根据权利要求1所述的计算系统,其中,所述一个或多个模块可操作执行:将至少所述第一组数据和所述第二组数据结合以生成第三组数据;
处理所述第三组数据从而基于用于格式化一组数据的新规则将所述第三组数据格式化为第三组结构化数据;以及使用所述第三组结构化数据生成第三概要数据。
9.根据权利要求8所述的计算系统,其中,所述第一组数据和所述第三组数据的每一个都包括第一数据元素,以及其中所述第一数据元素与所述第一概要数据中由第一实体标识符识别的第一实体相关联,其中,所述第一数据元素与所述第三概要数据中的第二实体相关联,以及其中所述一个或多个模块进一步可操作以将所述第一实体标识符与所述第三概要数据中的所述第二实体相关联从而使得在所述第三概要数据中所述第一数据元素维持所述第一数据元素的与所述第一实体标识符的关联。
10.根据权利要求1所述的计算系统,其中,所述第一组结构化数据包括数据项的分组,所述数据项的分组基于与所述数据项相关联的实体标识符。
11.根据权利要求1所述的计算系统,其中,所述计算系统包括在数据中心中的至少一个服务器。
12.根据权利要求1所述的计算系统,其中,所述数据存储器包括多个数据库系统,所述多个数据库系统中的每一个都与视图相关联,以及其中所述一个或多个模块可操作以响应于查询而基于与所述查询相关联的视图来选择所述多个数据库系统中的一个。
13.根据权利要求1所述的计算系统,其中,所述一个或多个模块可操作执行:识别在生成所述第二概要数据以后接收的第三组数据;
基于所述第三组数据、所述第一组结构化数据和所述第二组结构化数据,通过用于概括所述第一组结构化数据、所述第二组结构化数据和第三概要数据的操作规则生成所述第三概要数据;
确定所述第二概要数据和所述第三概要数据之间的差异;以及
基于所述第二概要数据和所述第三概要数据之间的所述差异更新所述数据存储器。
14.一种用于生成一组数据的概要数据的方法,所述方法包括:
在操作在计算系统的处理器上的输入模块处,接收第一组数据和第二组数据,其中,所述第一组数据与所述第二组数据相比包括更大量的数据项;
在所述计算系统的第一输入处理模块处,处理所述第一组数据从而将所述第一组数据格式化为第一组结构化数据;
在所述计算系统的第一概要生成模块处,通过用于概括所述第一组结构化数据的操作规则,使用所述第一组结构化数据生成第一概要数据;
将所述第一概要数据维护在所述计算系统的数据存储器中;
在所述计算系统的第二输入处理模块处,处理所述第二组数据从而将所述第二组数据格式化为第二组结构化数据;
在所述计算系统的第二概要生成模块处,通过用于概括所述第一组结构化数据和所述第二组结构化数据的操作规则,使用所述第一组结构化数据和所述第二组结构化数据生成第二概要数据;
在所述计算系统的差异生成模块处,确定所述第一概要数据和所述第二概要数据之间的差异;以及由所述计算系统基于所述第一概要数据和所述第二概要数据之间的所述差异更新所述数据存储器。
15.根据权利要求14所述的方法,其中,接收所述第二组数据包括:接收实时数据提交,以及其中,处理所述第二组数据从而将所述第二组数据格式化为所述第二组结构化数据包括:响应于接收到所述第二组数据来处理所述第二组数据。
16.根据权利要求14所述的方法,其中,所述第一概要数据和所述第二概要数据中的每一个都包括实体标识符和与所述实体标识符相关联的值,以及其中确定所述第一概要数据和所述第二概要数据之间的差异包括:确定所述第一概要数据和所述第二概要数据包括相同的实体标识符,以及比较在所述第一概要数据和所述第二概要数据中与所述相同的实体标识符相关联的值。
17.根据权利要求14所述的方法,进一步包括:
将至少所述第一组数据和所述第二组数据结合以生成第三组数据,
处理所述第三组数据从而基于用于格式化一组数据的新规则将所述第三组数据格式化为第三组结构化数据;以及使用所述第三组结构化数据生成第三概要数据。
18.根据权利要求17所述的方法,其中,第一数据元素是所述第一组数据和所述第三组数据的一部分,并且与所述第一概要数据中由第一实体标识符识别的第一实体相关联,其中,所述第一数据元素与所述第三概要数据中的第二实体相关联,以及其中所述方法进一步包括:将所述第一实体标识符与所述第三概要数据中的所述第二实体相关联从而使得在所述第三概要数据中所述第一数据元素维持所述第一数据元素的与所述第一实体标识符的关联。
19.根据权利要求14所述的方法,其中,所述计算系统包括在数据中心中的至少一个服务器。
20.一种非瞬时计算机可读存储介质,有形地包含计算机程序,所述计算机程序包括指令,所述指令被处理器执行时引起数据处理系统执行以下操作:接收第一组数据和第二组数据,其中,所述第一组数据与所述第二组数据相比包括更大量的数据项;
处理所述第一组数据从而将所述第一组数据格式化为第一组结构化数据;
通过用于概括所述第一组结构化数据的操作规则,使用所述第一组结构化数据生成第一概要数据,并且将所述第一概要数据存储在数据存储器中;
处理所述第二组数据从而将所述第二组数据格式化为第二组结构化数据;
通过用于概括所述第一组结构化数据和所述第二组结构化数据的操作规则,使用所述第一组结构化数据和所述第二组结构化数据生成第二概要数据;
确定所述第一概要数据和所述第二概要数据之间的差异;以及
基于所述第一概要数据和所述第二概要数据之间的所述差异更新所述数据存储器。
21.根据权利要求20所述的瞬时计算机可读存储介质,其中,所述第二组数据包括实时数据提交,以及其中所述指令引起所述数据处理系统响应于接收到所述第二组数据来处理所述第二组数据从而将所述第二组数据格式化为所述第二组结构化数据。
22.根据权利要求20所述的瞬时计算机可读存储介质,其中,所述第一概要数据和所述第二概要数据中的每一个都包括实体标识符和与所述实体标识符相关联的值,以及其中所述指令引起所述数据处理系统通过以下操作来确定所述第一概要数据和所述第二概要数据之间的所述差异:确定所述第一概要数据和所述第二概要数据包括相同的实体标识符,以及比较在所述第一概要数据和所述第二概要数据中与所述相同的实体标识符相关联的值。
23.根据权利要求20所述的瞬时计算机可读存储介质,其中,所述指令引起所述数据处理系统:将至少所述第一组数据和所述第二组数据结合以生成第三组数据;
处理所述第三组数据从而基于用于格式化一组数据的新规则将所述第三组数据格式化为第三组结构化数据;以及使用所述第三组结构化数据生成第三概要数据。
说明书 :
用于批量和实时数据处理的设备、系统和方法
技术领域
背景技术
应查询。作为示例,当用户向基于web的系统、移动电话或车载导航系统输入查询搜索“在格
林威治村中的有代客泊车服务的对儿童友好的(child friendly)中餐馆”时,系统可以非
常迅速地用匹配例如以下参数的餐馆列表来响应:{“kid_friendly”:true,”category”:”
Restaurant>Chinese”“, valet_parking”:true“,neighborhood”:”Greenwich Village”}。
移动电话于是可以提供呼叫每一个餐馆的按钮。描述每一个餐馆的此信息可以遍布许多网
站,来源于许多数据存储器(store),以及由系统用户直接提供。
量的信息可以很难。例如,描述美国商业的信息具有多于数十亿行的输入数据、数百亿的事
实以及数十万亿字节的web内容。
号码已经中断。
发明内容
中餐馆”的web搜索可以返回至具有词“中餐(Chinese)”、“餐馆”、“代客”和“泊车”的网页的链接。这一般来说将包括具有像“发现没有代客泊车服务”陈述的网页,因为词“代客”和“泊
车”出现在文本中并且因此被索引为针对网页的关键字。相反,所公开的系统具有例如餐馆
类别的参数和指示餐馆是否提供代客泊车服务的值,这有益地允许系统用更有意义的结果
来响应。此外,在所公开的系统中,用户可以作为纠正数据的贡献方来操作。而且,所公开的
系统可以解释跨许多网页的事实并且得到共识回答,该共识回答则是可查询的从而进一步
改进结果。
信息(例如关于对儿童友好的餐馆的博客)一起考虑,并且被概括到可以迅速响应查询的快
速演进数据存储器中。由此,所公开的系统的用户可以访问新纠正的电话号码和对其儿童
友好性的更准确的评价。
够从数据源提取更多信息。如果一个网页包括作为简单文本的事实而另一个有使用复杂散
文表述的观点,则所公开的系统使用上个月的方法可以已经能够处理例如“代客泊车服务:
是”的简单文本,但是还不能处理例如“没有地方可以停车,更别提代客泊车服务了”的散
文。然而,所公开的系统,使用今天的方法,可以已经扩展了能力并且能够处理更微妙的散
文数据。
读介质中的一个或多个模块。一个或多个模块可操作以接收第一组数据和第二组数据,其
中,所述第一组数据与所述第二组数据相比包括更大量的数据项;处理所述第一组数据从
而将所述第一组数据格式化为第一组结构化数据;通过用于概括所述第一组结构化数据的
操作规则使用所述第一组结构化数据生成第一概要数据,并且将所述第一概要数据存储在
数据存储器中;处理所述第二组数据从而将所述第二组数据格式化为第二组结构化数据;
通过用于概括所述第一组结构化数据和所述第二组结构化数据的操作规则,基于所述第一
组结构化数据和所述第二组结构化数据生成第二概要数据;确定所述第一概要数据和所述
第二概要数据之间的差异;以及基于所述第一概要数据和所述第二概要数据之间的所述差
异更新所述数据存储器。
和第二组数据,其中,所述第一组数据与所述第二组数据相比包括更大量的数据项;在所述
计算系统的第一输入处理模块处,处理所述第一组数据从而将所述第一组数据格式化为第
一组结构化数据;在所述计算系统的第一概要生成模块处,通过用于概括所述第一组结构
化数据的操作规则使用所述第一组结构化数据生成第一概要数据;将所述第一概要数据维
护在所述计算系统的数据存储器中;在所述计算系统的第二输入处理模块处,处理所述第
二组数据从而将所述第二组数据格式化为第二组结构化数据;在所述计算系统的第二概要
生成模块处,通过用于概括所述第一组结构化数据和所述第二组结构化数据的操作规则使
用所述第一组结构化数据和所述第二组结构化数据生成第二概要数据;在所述计算系统的
差异生成模块处,确定所述第一概要数据和所述第二概要数据之间的差异;以及由所述计
算系统基于所述第一概要数据和所述第二概要数据之间的所述差异更新所述数据存储器。
以下的指令:接收第一组数据和第二组数据,其中,所述第一组数据与所述第二组数据相比
包括更大量的数据项;处理所述第一组数据从而将所述第一组数据格式化为第一组结构化
数据;通过用于概括所述第一组结构化数据的操作规则使用所述第一组结构化数据生成第
一概要数据,并且将所述第一概要数据存储在数据存储器中;处理所述第二组数据从而将
所述第二组数据格式化为第二组结构化数据;通过用于概括所述第一组结构化数据和所述
第二组结构化数据的操作规则基于所述第一组结构化数据和所述第二组结构化数据生成
第二概要数据;确定所述第一概要数据和所述第二概要数据之间的差异;以及基于所述第
一概要数据和所述第二概要数据之间的所述差异更新所述数据存储器。
将所述第二组数据格式化为所述第二组结构化数据。
述第一组数据格式化为所述第一组结构化数据,所述第一时间间隔基本上比第二时间间隔
更长,每隔所述第二时间间隔所述第二组数据被格式化为所述第二组结构化数据。
计算机程序产品可以进一步包括用于以下的模块、步骤或可执行指令:通过以下来确定所
述第一概要数据和所述第二概要数据之间的差异:确定所述第一概要数据和所述第二概要
数据包括相同的实体标识符,以及比较在所述第一概要数据和所述第二概要数据中与所述
相同的实体标识符相关联的值。
所述第二概要数据之间的所述差异。
述差异。
生成第三组数据;处理所述第三组数据从而基于用于格式化一组数据的新规则将所述第三
组数据格式化为第三组结构化数据;以及使用所述第三组结构化数据生成第三概要数据。
概要数据中的第一实体相关联,其中,所述第一数据元素与所述第三概要数据中的第二实
体相关联,以及其中计算系统、方法或计算机程序产品可以进一步包括用于以下的模块、步
骤或可执行指令:将所述第一实体标识符与所述第三概要数据中的所述第二实体相关联从
而使得在所述第三概要数据中所述第一数据元素维持其与所述第一实体标识符的关联。
应于查询、基于与所述查询相关联的视图来选择所述多个数据存储系统中的一个。
基于所述第三组数据、所述第一组结构化数据和所述第二组结构化数据通过用于概括所述
第一组结构化数据、所述第二组结构化数据和第三概要数据的操作规则生成所述第三概要
数据;确定所述第二概要数据和所述第三概要数据之间的差异;以及基于所述第二概要数
据和所述第三概要数据之间的所述差异更新所述数据存储器。
附图说明
的主题,所公开的主题的范围在下文的权利要求中记载。
具体实施方式
间所接收的额外数据。另一方面,实时数据处理系统是有限制性的,因为实时系统不能扩
展。实时数据处理系统常常受处理基元数据类型和/或小量数据的限制。因此,希望通过将
批量数据处理系统和实时数据处理系统的益处结合到单个系统中来解决批量数据处理系
统和实时数据处理系统的限制。
成前都不能访问数据处理结果,然而在实时处理系统中,程序可以在数据处理期间访问处
理结果。
数据存储设备(storage)和/或一个或多个数据库中、或者一个或多个搜索服务器中,并且
可以被格式化以及可选地被索引从而能够使用一个或多个数据存储器或一个或多个搜索
服务器来查询,或者能够由第三方用户使用应用编程接口(API)来查询。
属性,例如布尔值(例如餐馆A有代客泊车服务究竟是“真”还是“假”)、整数、字符串、一组字符、二进制数据(例如表示图像的字节)或这些类型的阵列或集合、或者其任意其它结合。
在一些情况下,批量数据输入可以指所公开的系统在预确定时间期间中所接收的所有数
据,预确定时间期间可以很久。例如,批量数据输入可以包括在很长一段时间内从多个贡献
方或从网络爬虫接收的原始信息。在一些实施例中,可以在所公开的系统自身中维护批量
数据;在其它实施例中,可以经由通信接口从另一存储中心接收批量数据。间歇数据输入可
以包括被提供给所公开的系统的小量数据。间歇数据输入可以包括例如来自贡献方的实时
数据提交。
的小的增量贡献)并且基于那些被考虑的贡献和在概要数据中来自批量系统的数据来反映
变化的实时系统。通用处理框架还可以包括可以处理批量数据输入的批量系统。批量系统
可以配置为将批量数据格式化为可用于进一步处理,并且使用被格式化的批量数据来生成
概要数据。
进行分组并且生成用于每一组的代表性标识符,也称为实体。批量系统于是可以生成用于
每一实体的标识符并且计算描述每一实体的参数值。
素相关联的信息合并。例如,如果3个数据元素指示餐馆A有代客泊车服务并且2个数据元素
指示餐馆A没有代客泊车服务,于是批量系统可以合并这5个元素并且指示针对实体餐馆A
的参数“代客泊车服务”为“真”。此合并过程在某些方面与在发明名称为“用于数据的协同
操作的过程和系统”、申请日为2009年9月15日的美国专利申请公布No.2011/0066605中所
公开的过程相似,该专利申请通过全文引用被包含在本文中。
系统可以将每一物理餐馆考虑为单独的实体(即概要记录)。相似地,当来自特定品牌的牙
膏有3种规格并且每一种规则有4种口味时,系统可以维护针对该牙膏的12个不同实体。
外数据输入,这两个额外数据输入都指示餐馆A没有代客泊车服务,那么实时系统可以更新
概要数据来指示用于实体“餐馆A”的参数“代客泊车服务”为“假”。
系统生成的结构化批量数据合并。以此方式,可以减少实时系统所需的计算量。
算量相比要大得多。例如,可以操作批量系统以便按计划更新系统,例如每小时、每周或每
月。实时系统可以比批量处理系统操作得更加频繁。例如,实时系统可以配置为在实时系统
接收到间歇数据输入时或者在接收短时间范围内(例如5秒或5分钟)缓存的输入时操作。批
量系统可以随时间推移用新情报和规则来更新,并且可以处理超出实时系统能力范围的新
数据。
统执行的处理。
未处理(原始)输入350(参见图2B)、快速处理的输入150(参见图2B)、快速处理的概要190
(参见图2C)、完全处理的输入360(参见图2B)以及完全处理的概要760(参见图2C)。这些数
据可以存储在非瞬时性计算机可读介质中。非瞬时性计算机可读介质可以包括以下一个或
多个:硬盘、闪存存储装置、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或者
其任意结合。
公开的系统中,{“valet_parking”:true}输入可以例如来源于宣称“有代客泊车服务”的网
页。作为额外示例,系统可以包含餐馆的数据存储器,例如,具有关于餐馆的数据的数据存
储设备和/或具有关于餐馆的数据的数据库。未处理数据的示例可以包括:
的,因为可以在稍后被开发出来的新规则可以能够在原始数据被重新处理时提取额外的输
入。例如,网站可以具有宣称“泊车员在停车时刮花了我的车”的文本。即使较早的评估网站
上的内容的运行未能形成任何关于代客泊车服务的输入,随后的运行可以提取输入
“valet_parking”:true。因为所公开的系统可以存储原始数据100以用于重新处理,所公开
的系统的批量处理可以针对原始数据100重新运行,并且理解较复杂陈述的新规则可以例
如在随后的运行中提取输入“valet_parking”:true。
陈述“有代客泊车服务”,该“有代客泊车服务”的陈述是未处理输入。同样,关于服装店的网
站(原始数据)可以含有陈述“打5折促销”(原始输入)。作为另一示例,来自贡献方的更新商
业地址的贡献可以含有“1801ave of stars,los angeles”。最初,当数据首次被提供时的
可用规则可能引起此输入被忽略,因为地址不够充分。然而,使用改进规则的随后的构造可
以将其改善为{“address”:”1801Avenue of the Stars”,”city”:”Los Angeles”,”
state”:”CA”,”zipcode”:”90067”}。
取处理过的输入“valet_parking”:true。
关于该餐馆的事实。2个网站可能陈述其所供应的食物类型是“Chinese(中餐)”。一个网站
可能陈述是“Cantonese(粤菜)”。另2个网站可能说是“Italian(意大利菜)”。在此示例中,
完全处理的输入可以包含{“id”:”1”,“name”:”Joe's”,“cuisine”:”Chinese”,“source”:”website1”},{“id”:”1”,“name”:”Joe’s”,“cuisine”:”Chinese”,“source”:”website2”},{“id”:”1”,“name”:”Joe’s”,“cuisine”:”Cantonese”,“source”:”website3”},{“id”:”
1”,”name”:”Joe's”,“cuisine”:”Italian”,“source”:”website4”},{“id”:”1”,“name”:”Joe's”,“cuisine”:”Italian”,“source”:”website5”}.基于当前规则,完全处理的概要
760可以具有{“id”:”1”“, name”:”Joe’s”“,cuisine”:”Italian”},因为它同等地信任所有贡献并且“Italian”和“Chinese”是联系在一起的而“Cantonese”被当做独立的菜肴风味。
在此示例中,规则可以被改进为确定“Cantonese”是“Chinese”菜肴风味的一种类型,并且
还更特别地,当运行批量数据构造时产生如下完全处理的概要760:
(例如数据库)中分配快速处理的输入150和快速处理的概要190中每一个的空版本。例如,
移动装置用户可能注意到“Joe’s”餐馆被错误归类为“Italian”。充当贡献方的该用户可以
通过她的移动装置上的软件提交改正,她的移动装置向公有应用编程接口(API)发送数据
(图1,130)。该贡献方的输入可以看上去如此{“id”:”1”,”cuisine”:”Chinese”}。当该输入被处理时,可以被保存到快速处理的输入150并且用于“Joes”的条目可以被重新概括。在此
示例中,针对“Joes”的新概要将会是{“id”:”1”,“name”:”Joe’s”,”cuisine”:”Chinese”},并且由于它与先前的完全处理的概要760不同,新概要将会被保存到快速处理的概要190。
在所公开的系统中,当确定针对实体的最新概要时,系统可以偏重于在快速处理的概要190
中检查最新概要,而非在只有在批量数据构造中才改变的完全处理的概要760中检查。
一个将在下文描述。
名称。在此示例中,提取步骤包括使用事实匹配规则“name:[NAME]”在例如记录:{“name”:”Mc’Donalds”}中选择名称“Mc’Donalds”。此外,在提取步骤中,系统可以使用例如
“***-***-****”的模式匹配规则来从例如“Tel:123-456-7890”的文本中选择电话号码
“123-456-7890”,其中,*符号表示通配符字符。作为额外的示例,提取步骤可以解释例如
“这个地方没有适合我的孩子们的高椅子”的原始文本从而创建采用如下形式的事实:
{“kid_friendly”:false}。所公开的系统可以通过例如使用先进自然语言处理和解析来解
释原始文本从而创建规则。
不正确地提取了例如“Phone:callnow!”的不正确信息,或者提取了例如“Phone:123-456-
7890click here”的多余信息。清理可以丢弃不正确的数据或移除不希望的多余数据。例
如,如果提取了“Phone:call now!”,清理步骤可以丢弃该数据,因为“Phone:call now!”对于电话号码来说是不正确数据。此外,如果提取了“Phone:123-456-7890click here”,清理
步骤可以丢弃“click here”,因为“click here”是多余的数据,它不是所提取的电话号码
的一部分。在所公开的系统中,不正确数据或多余数据可以通过例如使用2个规则而被丢弃
或移除,这2个规则例如事实匹配规则和模式匹配规则。例如,使用事实匹配规则“Phone:
[PHONE_NUMBER]”,所公开的系统可以提取例如“Phone:123-456-7890click here”的信息,
并且使用模式匹配规则“***-***-****”,系统可以确定“click here”是多余的数据并且在
清理步骤中将其移除。
“(123)456-7890”。将数据转换成规范表示使其统一并且使得能够有更好的实体分辨度和
概括。所公开的系统可以通过例如使用多个模式匹配规则以及指定用于规范化表示的另一
模式来执行规范化。例如,使用模式匹配规则“***-***-****”和“(***)***-****”,前者指
定规范化表示,规范化步骤可以通过将输入“123-456-7890”和“(123)456-7890”两个都表
示为“123-456-7890”来使它们统一。
可能做这样的广告:它“位于银河系中的行星地球上”。尽管此陈述是准确的,所公开的系统
的实施例例如可能不具有针对餐馆所在的行星和银河系的类别,这样,此示例中的过滤步
骤将拒绝输入“位于银河系中的行星地球上”。当然,在代替实施例中,所公开的系统可以具
有此类类别。作为一个额外的示例,在一个实施例中,所公开的系统可以例如设置针对来自
网站的信息的阈值为具有100次访问则被认为是可靠。在此示例中,如果仅被访问了15次的
网站包含陈述“这是最佳商店”,系统可以拒绝此输入,因为它不满足置信度规则。在其它实
施例中,所公开的系统可以使用其它规则用于确定置信度。
则可能基于未能满足某些标准而拒绝该参数或整个输入。
批量处理系统生成的完全处理的输入360。
完全处理的输入360。在此示例中,完全处理的输入360可以包括具有值“valet_parking”:
false的输入,并且快速处理的输入150可以包括具有值“valet_parking”:true的输入。快
速概括过程模块160可以配置为聚合并过滤快速处理的输入150和完全处理的输入360从而
创建快速处理的概要190。例如,经过过滤和处理,针对实体的快速处理的概要190可以是
“valet_parking”:true。
贡献方标识符或提供数据的用户账号、用来提取数据的技术、数据的源或引证和/或时间戳
中的一个或多个来确定。为此目的,创建连接或迭代器,来从快速处理的输入和完全处理的
输入二者中自具有所希望的实体标识符的首个输入开始起同时读取数据。在每一情况下,
迭代器基于快速处理的输入或完全处理的输入中具有较早时间戳的任意一个而前进。无论
何时上文列举的参数中除了时间戳以外的任意一个参数改变,就将先前的输入加入被考虑
的池中而忽略其它,由此允许系统有效地仅考虑来自给定用户的输入的最新版本、提取技
术和引证。
的快速处理的概要190和具有值“valet_parking”:false的完全处理的概要760。基于该比
较,比较差异过程模块200于是可以广播结果。例如,它可以广播来自于先前批量构造的完
全处理的概要770指示没有代客泊车服务,然而来自于自从先前批量数据构造的开始以来
新计算的输入和概要的快速处理的概要190指示有代客泊车服务。
时提交。例如,系统可以接收例如整个网站或数据存储器的批量数据贡献、例如个体网页的
web文档以及例如网站上的评价的实时提交。
装置上向公有API模块130提交的软件被接收。用户写入110可以包括附加于其上的针对贡
献方、来源和开发者的标识符以用于被考虑进概括中。
味着输入是对现有实体的更新。如果输入不具有标识符,系统可以使用解决过程模块120来
确定并分配被称为快速处理的标识符的临时标识符。解决过程模块120可以配置为向输入
分配实体标识符或者将记录的一个表示与另一表示匹配。这使得有可能将相似输入群集在
一起并且给那些引用同一实体的输入分配公共实体标识符。在许多情况下,输入具有不同
参数但引用同一实体。解决过程可以被用来比较输入、确定输入引用同一实体并且向那些
输入分配公共实体标识符。
参数的一致性哈希(例如md5(名称+地址));或者d)如果充分相似的输入存在(例如新输入
的名称、值、电话与现有输入的名称、值、电话足够相似),则取现有输入的被分配的id,并且
当充分相似的输入不存在时生成新的代理键。
贝可以被保存到存储器以用于未处理输入350,从而使得稍后可以使用更新的软件或者经
过更昂贵的计算(包括执行实体标识符分配的软件)来批量重新处理它。
以配置为将匹配某标准的数据提交显示或提供给人类仲裁员或更昂贵的机器过程以用于
进一步评估。例如,新餐馆的所有者可能希望通过将生意从附近餐馆转移到他的餐馆来使
他的餐馆的生意兴旺。该餐馆所有者可能注册账号为所公开的系统的客户之一的贡献方,
并提交所有其它餐馆都已关闭的信息。系统于是可以确定从未与系统有过交互的新贡献方
在某一天报告若干本地商业已经关闭,引起系统中寻找这样模式的规则标识那些提交并将
其入队以用于由人类仲裁员审查。人类仲裁员于是可以确定商业实际上仍然营业并且拒绝
这些提交,并进一步将该贡献方加入黑名单从而使得额外的提交都将被忽略。
速处理的标识符。如果快速处理的输入通过验证,它可以被保存到存储器以用于快速处理
的输入150,并且它可以在过程中前进到快速概括过程模块160。
造过程以来新的实时输入。完全处理的输入360是从批量处理系统先前的批量过程生成的
输入。一起,它们包括针对每一实体的一组完整的输入。例如,实时快速概括过程模块160可
以接收关于代客泊车服务的快速处理的输入150和完全处理的输入360。在此示例中,完全
处理的输入150可以包括具有值“valet_parking”:false的输入,并且快速处理的输入360
可以包括具有“valet_parking”:true的输入。快速概括过程模块160于是可以聚合快速处
理的输入150和完全处理的输入360,并于是使用高置信度过滤器170和低置信度过滤器180
来过滤它们从而创建快速处理的概要190。例如,经过过滤和处理后,针对实体的快速处理
的概要190可以是“valet_parking”:true。
来分别群集。这可以允许当接收到新输入时快速进行重新概括,从而使得仅关于如下实体
的输入被处理:已经接收到用于该实体的新输入。快速处理的输入150和完全处理的输入
360可以按照排序顺序被存储,从而使得它促进流处理数据或促进跳过被确定为由如下输
入取代的输入:例如来自于同一提交方或引用相同引用的更新的提交。
以使用视图(“view”)(例如具体实现视图)来表示或显示输入的概括。视图是根据一个或多
个规则的对输入的一种可能概括及实体的表示。一个或多个规则可以确定包括哪些实体、
针对每一实体包括哪些参数、执行何种索引优化以及针对每一实体计算什么额外的参数和
参数变量。在一些实施例中,由view_id唯一地识别视图。数据存储器经常跟踪系统表格中
的视图并且这些系统表格包含关于视图的元数据。在我们的例子中,视图被分配了标识符
并且该标识符用来从数据存储器中查找关于视图的元数据,例如参数的名称、它们的数据
类型、排序偏好、索引规则等。
170、180的不同规则以及其它软件规则和变形。每一快速概括过程可以产生针对每一视图
的快速处理的概要。每一快速处理的概要与从快速处理的概要数据存储器190或完全处理
的概要数据存储器760取回的最近概要相比较。如果快速处理的概要与先前版本不同,则新
的快速处理的概要被保存到快速处理的概要数据存储器190中,并且产生比较差异记录。比
较差异记录可以包含包括例如以下的一行数据:(1)其参数已经改变的实体的实体标识符,
以及(2)改变的参数。比较差异记录可以包含与先前概要不同的新概要或参数的整体拷贝。
比较差异记录被保存到比较差异数据存储器中并且在网络上发布给监听比较差异记录并
更新概要数据的具体实现(maerialization)的过程。
Retail","Nurseries and Garden Centers"]],"search_tags":["Houston","Grass","
South"],"name":"Houston Grass","longitude":"-95.464476","fax":"(281)431-
8178","website":"http://houstonturfgrass.com","postcode":"77583","country":"
us","category_ids":[164],"category":"Shopping>Nurseries&Garden Centers","
address":"213McKeever Rd","locality":"Rosharon","latitude":"29.507771"},"
type":"update","factual_id":"399895e6-0879-4ed8-ba25-98fc3e0c983f","changed":
[“address",”tel”]}。在此示例中,比较差异记录指示Houston Grass的地址和电话已经改
变,这可以导致对具体实现的数据存储器的每一拷贝或用于该实体的索引行进行更新。
引服务器。在一些实施例中,具体实现的数据存储器或索引510、520可以与具体应用领域或
具体数据服务相关联。所公开的系统可以可互换地使用诸如PostgreSQL(关系)和Apache
Solr(非关系,搜索服务器)的数据存储系统,有时针对相同的数据,并且能够选择最佳地服
务于所请求的查询类型的一个。例如,所公开的系统可以接收针对与特定视图或数据类型
相关联的数据的查询。作为响应,所公开的系统可以确定查询类型、实体类型、发送查询的
应用或装置、与实体相关联的应用领域或与查询相关联的任何有关信息中的一个或多个,
从而确定用来响应查询的数据存储系统之一或这样的系统的结合。于是,所公开的系统可
以使用所确定的数据存储系统之一或系统的结合来响应查询。
记录时间,该时间可以在赶上(Catchup)阶段期间使用。
确保输入被完全重新处理。
数据存储器中,编织数据存储器用来协调开销相对很大的过程,例如适中。
配通过以下生成的唯一id:a)随机分配;b)将来自于一组输入的一个或多个输入值串联(例
如名称+地址);c)来自于一组输入的一个或多个值的哈希(例如md5(名称+地址));或者d)
如果充分相似的输入存在(例如新输入的名称、值、电话与现有输入的名称、值、电话足够相
似),则取现有一组输入的被分配的id。
过程重新处理(例如跨多个批量运行)输入数据时,例如埃菲尔铁塔的单个实体可以持有同
一实体标识符。这使得即使当与实体相关联的数据被多次重新处理时,实体能够与同一标
识符相关联。
献的每一组参数分配的唯一标识符。例如,从法国洗衣店的主页上抓取的所有参数,例如名
称、地址、电话号码,构成一个输入数据贡献。许多其它网站和贡献方还可以提供描述法国
洗衣店的输入数据贡献。这些输入数据贡献的每一个具有它自己的input_id,该input_id
将它从其它输入数据贡献中唯一地识别出来。input_id可以包括输入数据贡献的消息摘要
5(md5)哈希。反过来,entity_id是向所有输入数据贡献和法国洗衣店的概要记录分配的标
识符(目前是UUID)。
未处理输入的input_id以及由解决过程模块120确定的、表示与完全处理的输入和快速处
理的输入相关联的实体的entity_id。使用从input_id到entity_id的映射,input_id可以
用来将原本的entity_id分配给在同一组中的所有输入数据项。
的系统可以映射输入组中的所有输入到original_entity_id。这样,在该示例中,最终结果
将会是如下
entity_id。如上文所述,UUID保留模块725可以跨批量构造对同一实体保留相同的UUID。
更大数量输入的entity_id。在拆分情况下,可以将entity_id分配给具有更大数量输入的
输入组,并且生成用于形成新概要的输入群集的新id。可以取决于数据集和希望的结果来
定制此行为。
具有充分置信度、关于特定entity_id(例如贡献方编辑为特定entity_id)的输入或具有关
于特定输入的地理代码信息的输入。
加(或结合)到该组输入。作为另一示例,数据附件模块727可以配置为当源输入与该组输入
的父input_id相同的父input_id相关联时,附加(或结合)源输入,其中,父input id指输入
的唯一标识符,源输入应当被附加到该标识符。通过以下实施例来示出这些示例。
组可以不是核心参数组的一部分,但是可以包含关于特定视图的信息。例如,“vegan(素
食)”是关于餐馆视图的参数而不是关于医生视图的参数。
入中的所有输入可以被重新提取以用于关于餐馆的扩展参数。
入729的概要。每一数据集可以具有多个视图,包括副作用(side-effect)视图。每一组输入
可以生成多个视图概要。从同一组输入生成的概要中的每一个具有相同的entity_id。
相关联的实体输入产生概要。副作用视图允许概括模块730提供来自于单个数据输入的任
意数量的概要记录(例如任意数量的有关实体)。一个这样的示例是斑马线(“Crosswalk”),
其为将entity_id链接到特定输入源的视图。例如,副作用视图创建过程可以确定输入数据
是否匹配规则,例如“是我们在斑马线中跟踪的命名空间”(例如因为它具有类似
webname.com/[some_place_id]的url),并且当存在匹配时,副作用视图创建过程可以创建
例如具有{“namespace”:”webname”“, id”:”[some_place_id]”“,factual_id”:”[id_of_referenced_entity]”}的新实体。由此,即使输入数据已经与实体相关联,副作用视图创建
过程可以基于由副作用视图创建过程维护的规则来生成与输入数据相关联的额外实体。
在该方式中entity_id查找和概括是有效的。完全处理的概要760可以包含针对在给定数据
集中所有视图的所有概要记录,按照如下方式来组织完全处理的概要760:在该方式中
entity_id和view_id查找是有效的。这些文件可以在激活(“MakeLive”)步骤期间大批量加
载到数据存储器中。这些步骤的输出由图1的729、740和750表示。
API to Download Partners”)500,其允许被授权的伙伴从系统下载比较差异记录。每个这
样的记录可以被称为“比较差异”(“diff”)。在上文中描述了特定的比较差异类型。可以通
过比较每一个针对视图的概要和针对该视图的概要的先前版本来生成比较差异。可以针对
用于每一个概要的每一视图来生成比较差异。当前概要可以与先前完全处理的概要760和
先前快速处理的概要190表格相比较。同一比较差异生成机制可以用来生成针对索引510、
520的比较差异,并且经由比较差异API 500提供用于第三方的比较差异。
(例如数据存储器)。在一些实施例中,具体实现构造模块780可以配置为基于每视图来构造
具体实现。在其它实施例中,具体实现构造模块780可以配置为构造包括多个视图的具体实
现。
求的数据相关联的特定应用领域、特定服务和/或特定视图来确定具体实现的数据存储器
中的一个或多个来服务于该查询。
版本号来创建数据存储器中的新表格。数据存储格式文件(完全处理的输入360、完全处理
的概要760)可以被加载到它们各自的新表格中。比较差异200/700可以被增补到现有的比
较差异表中。
和完全处理的概要760的表的指针来实现,从而使得更新的表对于实时处理是可见的,并且
更早的引用对于实时处理不再可见。
指任何已经实时接收到的并且已经生成快速处理的输入的写入。当批量构造步骤完成时,
由此创建新的批量构造的数据集,赶上阶段可以基于这些新的实时写入来更新维护在加了
索引的数据存储器510、520或比较差异API下载伙伴500中的新的批量构造的数据集,从而
使得新的批量构造的数据集与额外的实时写入保持同步。
些输入的时间戳是否晚于批量运行发起时的时间戳。特别地,快速处理的输入810中的每一
输入可以被增加到新的快速处理的输入表的、具有相同entity_id(如果存在)的新的快速
处理的输入820中。如果在新的快速处理的输入表中不存在相同entity_id,那么可以创建
针对该entity_id的全新的输入组。针对每一个具有额外输入的entity_id,可以针对所有
视图执行重新概括830。如果所生成的概要与来自于完全处理的概要的输入不同,则向比较
差异表840写入比较差异。接下来,使用任何新的比较差异840来更新具体实现880。
程。可以清除标志并且可以更新概要具体实现版本将其指向新构造的版本。此过程可以使
用通过最新批量构造而构造的最新版本具体实现来改变来自于先前版本的510和520的指
针。
项来防止重复条目。
体服务、大众消费品、视频游戏、支持团体或者任何其它应用领域,从这些应用领域中生成
和维护大量数据。
系统中,逻辑或模块可以是位于一个或多个装置中的多个可执行代码。例如,响应输入用于
访问和取回存储在数据存储器的一个或多个单元中的数据的访问逻辑可以是在应用服务
器上的一个可执行代码。在代替实施例中,在一个或多个应用服务器上存在这样的访问逻
辑。在另一些实施例中,在一个或多个应用服务器和系统中的其它装置上存在这样的访问
逻辑,其它装置包括但不限于“网关”概要数据服务器和后台数据服务器。本文所公开的其
它逻辑还可以是位于协作数据系统以内的一个或多个装置上的一个或多个可执行代码。
在特定实施例中,一个或多个应用服务器存储执行本文所公开的任务所必须的逻辑。在其
它实施例中,概要服务器存储本文所公开的任务所必须的逻辑。在其它实施例中,后台服务
器存储本文所公开的任务所必须的逻辑。
器来请求来自于单元或表的概要或详细数据。当做出提交新数据输入的请求时,一个或多
个应用服务器也会呼叫一个或多个数据存储服务器。一个或多个应用服务器从一个或多个
概要服务器接收数据,并且一个或多个应用服务器生成HTML和JavaScript对象来传回给客
户端web浏览器。代替地,一个或多个应用服务器生成XML或JSON来通过API传递对象。
中,采用概要数据服务器阵列来从后台数据服务器请求那些经过概括的数据点的概要数据
和参数(置信度、计数等)。概要数据服务器阵列还缓存那些概要数据和概要参数从而使得
可以更快访问那些概要数据而无需向后台数据服务器发出额外请求。
随机存取存储器(“RAM”)以及光盘驱动器。通用存储装置在现有技术中是众所周知的(例如
美国专利No.7,552,368,其描述常规半导体存储装置并且通过引用被包含在本文中的那些
公开)。
描述的主题可以实现为一个或多个计算机程序产品,例如有形地包含在信息载体中(例如
在机器可读存储装置中)或包含在传播信号中的一个或多个计算机程序,以用于由数据处
理设备(例如可编程处理器、计算机或多个计算机)执行或者用来控制数据处理设备的操
作。计算机程序(也称为程序、软件、软件应用或代码)可以用任何形式的编程语言来编写,
包括汇编或解释语言,并且它可以采用任何形式来部署,包括独立程序或作为模块、组件、
子例程或其它适于在计算环境中使用的单元。计算机程序并不必然对应文件。程序可以存
储在载有其它程序或数据的文件的一部分中、存储在专用于所考虑的程序的单个文件中、
或者存储在多个协作文件中(例如存储一个或多个模块、子程序或部分代码的文件)。计算
机程序可以被部署成在一个计算机上执行或在位于一个场所的多个计算机上执行,或分布
跨多个场所并且通过通信网络互连。
数据和生成输出来执行功能或本文所描述的主题。过程和逻辑流也可以由专用逻辑电路来
执行,并且本文所描述的主题的设备可以实现为专用逻辑电路,专用逻辑电路例如FPGA(现
场可编程门阵列)或ASIC(专用集成电路)。
机存取存储器或这两者接收指令和数据。计算机的必要元件是用于执行指令的处理器和用
于存储指令和数据的一个或多个存储装置。一般来说,计算机还将包括用于存储数据的一
个或多个大容量存储装置、或者与用于存储数据的一个或多个大容量存储装置操作性耦
合,来从其接收数据或向其传送数据或两者,大容量存储装置例如磁盘、磁-光盘或光盘。适
于包含计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,包括例如半导
体存储装置(例如EPROM、EEPROM和闪存存储装置)、磁盘(例如内部硬盘或移动硬盘)、磁-光
盘以及光盘(例如CD和DVD盘)。处理器和存储器可以由专用逻辑电路来补充或包含在专用
逻辑电路中。
及指向装置(例如鼠标或轨迹球),用户通过这些可以向计算机提供输入。其它类型的装置
也可以用来提供与用户的交互。例如,提供给用户的反馈可以是任何形式的感官反馈(例如
视觉反馈、听觉反馈或触觉反馈),并且来自于用户的输入可以采用任何形式被接收,包括
声学、语音或触觉输入。
固件上的软件或不是记录在非瞬时处理器可读记录存储介质中。确实,“模块”是被解释为
包括至少一些物理的、非瞬时硬件,例如处理器或计算机的一部分。两个不同的模块可以共
享相同的物理硬件(例如两个不同模块可以使用同一处理器和网口)。本文所描述的模块可
以结合、集成、分离和/或复制从而支持多种应用。而且,本文所描述的在特定模块处执行的
功能可以在一个或多个其它模块处执行和/或由一个或多个其它装置执行,而非在该特定
模块处执行的功能,或者是增加在在该特定模块处执行的功能上。此外,模块可以跨多个装
置和/或其它本地组件或彼此远离的组件来实现。而且,模块可以从一个装置中移除并且增
加到另一装置上,和/或可以被包含在两个装置中。
以通过图形用户接口或web浏览器与本文所描述的主题交互)、或者这些后台、中间件和前
端组件的任意结合的计算系统中。系统的组件可以通过任意形式或介质的数字数据通信
(例如通信网络)互连。通信网络的示例包括本地网络(“LAN”)和例如互联网的广域网络
(“WAN”)。
“一”或“一个”引入另一元素将相对应的元素限制到仅为一个该元素。对于定冠词的使用也
是如此。
执行。而且,要理解的是,本文所采用的措辞和术语是出于描述目的并且不应当被视为限
制。
的。因此,重要的是,权利要求被视为包括这些等效含义,只要它们不偏离所公开的主题的
精神和范围。
主题的精神和范围。