过滤数据存储上的查询数据的制作方法

文档序号:6443607阅读:149来源:国知局
专利名称:过滤数据存储上的查询数据的制作方法
技术领域
本发明涉及过滤数据存储上的查询数据。
背景技术
在计算领域内,许多情形涉及要应用于一个或多个数据存储所存储的数据集的查询。例如,用户或数据驱动过程可通过从数据存储请求以查询语言(诸如结构化查询语言(SQL))指定的查询来请求数据的特定子集。数据存储可接收该查询,使用查询处理引擎来处理该查询(例如,软件流水线包括对该查询执行各种解析运算(诸如使该查询中的名称与数据库的命名对象相关联、以及标识各种运算符所指定的运算)的组件),将经解析的查询所指定的运算应用于所存储数据,并且返回该查询已指定的查询结果。查询结果可包括该查询所指定的一组记录、这些记录的一组属性、以及从数据计算的结果(例如,匹配特定查询准则的记录的计数)。该结果还可包括相对于所存储数据采取的动作的报告,诸如创建 或修改表格,或者插入、更新或删除表格中的记录。在许多此类情形中,数据库可分布在若干且可能是大量的数据存储上。例如,在分布式数据库中,所存储数据的不同部分可存储在服务器场中的一个或多个数据存储中。当接收到要应用于数据集的查询时,接收该查询的机器可标识哪些数据存储可能包含该查询作为目标的数据,并且可将该查询发送到那些数据存储中的一个或多个。每一此类数据存储可将该查询应用于存储于其中的数据,并且可将查询结果发送回去。如果该查询被两个或更多个数据存储应用,则可组合查询结果以生成聚合的查询结果。在一些情形中,一个机器可协调将该查询分发给所涉及的数据存储且聚合查询结果的过程。诸如MapReduce (映射化简)框架之类的技术已被设计成以有效的方式实现此类分发和聚合。此类数据存储所使用的数据引擎可能是相当复杂的,并且能够将许多复杂的计算过程应用于此类数据存储,诸如数据库事务、日志记录、执行所存储过程、以及接受和执行代理。查询语言本身可增加数据存储要处理的查询的复杂性,包括嵌套、串和其他数据类型的计算密集型相似性比较,以及对数据库的结构的修改。另外,数据存储的查询处理引擎所应用的逻辑过程能够以有效的方式回答复杂的查询,并且甚至可通过使用诸如查询优化之类的技术来改进该查询。作为这些以及其他过程的结果,数据存储对查询的评估可消耗大量的计算资源。

发明内容
提供本发明内容以便以简化的形式介绍在以下具体实施方式
中进一步描述的一些概念。本发明内容既不旨在标识出所要求保护的主题的关键因素或必要特征,也不旨在用于限定所要求保护的主题的范围。尽管使数据存储配备可能处理复杂事务的复杂查询处理引擎可能是有利的,但还可产生一些缺点。具体而言,将数据存储配置成对本地存储的数据执行复杂的查询可能是不利的或低效的。例如,数据存储恰好存储需求特别高的数据,但是查询处理引擎可被应用于所存储数据的复杂查询的应用加重负担(tax),而其他查询(一些查询可能是很简单的)保持待决。因此,复杂的查询可产生减少查询评估的容量和吞吐量的瓶颈。作为第二示例,其中数据存储还执行复杂查询的分布式数据库体系结构可损害一些安全性原则,因为还准许正在存储数据的机器对数据执行可能危险或恶意的操作。另外,查询处理引擎甚至可准许对所存储数据执行任意代码(例如,其中可执行模块接收自第三方且针对所存储数据执行的代理情形)。使存储数据(在第一组机器上)和对数据(分配到第二组机器)执行复杂计算(包括任意代码)分开的安全性原则可呈现若干安全性优点,诸如所存储数据之间的数据项分区和受损害的机器。这些以及其他优点可因去除对来自数据存储(例如,被配置成存储分布式数据库的数据的服务器场的机器)的数据的复杂处理而产生。然而,将不具有处理能力的数据存储配置为例如纯粹用作数据存储设备的数据存储同样可能是不利的,其只能够提供所请求数据对象(例如,整个表格))、或对其进行指定更改。例如,另一机器可从数据存储请求仅数据子集,诸如来自表格的满足特定过滤准则的记录子集。然而,如果该请求只指定包含许多记录的表格中的少量记录,则发送整个表格可能是过度低效的,特别是在给定联网环境 中机器和数据存储之间的带宽约束的情况下。在本文中呈现了用于配置数据存储以履行对存储其中的数据的请求的技术。根据这些技术,数据存储不利用查询处理引擎,该查询处理引擎可能造成显著的计算成本、降低履行请求时的性能、和/或准许对所存储数据执行任意代码。然而,数据存储还能够只提供存储其中的数据子集。数据存储通过接受指定一个或多个过滤准则的请求来实现该结果,这些准则各自以特定的方式减少数据的请求量。例如,该请求可包括指定特定过滤准则值的过滤准则,并且可请求只具有用于特定过滤准则的那个过滤准则值的记录(例如,在被配置成存储表示事件的数据的数据存储中,过滤准则可标识事件的类型或该事件发生时的时间)。因此,该请求只指定各种过滤准则,并且数据存储能够提供满足过滤准则的数据,但是不被配置成处理可指定复杂运算的查询。因此,该配置可促进将分布式数据库划分成被配置成存储并提供数据的数据节点集以及能够应用复杂的查询(包括任意代码)的计算节点集。为了实现以上及相关目的,以下描述和附图阐述了特定说明性方面和实现。这些方面和实现仅指示可使用一个或多个方面的各种方式中的一些。结合附图考虑以下详细描述,本发明的其他方面、优点、以及新颖特征将变得显而易见。


图I是表征将查询应用于分布在若干数据存储上的数据集的示例性情形的图示。图2是表征对来自数据存储所存储的数据集的数据施加请求的示例性情形的图
/Jn ο图3是根据此处所呈现的技术的表征对来自数据存储所存储的数据集的数据施加表征至少一个过滤准则的请求的示例性情形的图示。图4是示出履行以数据集中的一个数据集为目标的请求的示例性方法的流程图。图5是示出履行以数据集中的一个数据集为目标的请求的示例性方法的流程图。图6是包括被配置成实现本文中所阐述的措施中的一个或多个的处理器可执行指令的示例性计算机可读介质的图示。图7是表征索引数据集所存储的数据项的示例性情形的图示。图8是表征划分数据集所存储的数据项的示例性情形的图示。图9是表征包括被配置成响应于表征至少一个过滤准则的请求来过滤数据项的数据项处理器的数据项处理器集合的示例性情形的图示。图10示出其中可实现本文中所阐述的措施中的一个或多个的示例性计算环境。
具体实施例方式现在参考附图来描述所要求保护的主题,在所有附图中使用相同的附图标记来指代相同的元素。在以下描述中,为了解释起见,阐明了众多具体细节以提供对所要求保护的主题的全面理解。然而,很明显,所要求保护的主题可在没有这些具体细节的情况下实施。在其他情况下,以框图形式示出各种结构和设备以便于描述所要求保护的主题。 在计算领域中,许多情形涉及数据集,诸如数据存储所存储的数据库。数据存储可包括配备有在其上存储数据集的存储组件(例如,存储器电路、硬盘驱动器、固态储存设备、或者磁性或光学存储盘)的计算机,并且可被配置成执行满足访问可从各个用户和/或处理器接收的数据的请求的软件。在许多此类情形中,所存储的数据可以是庞大的,可能缩放成存储在一个表格和/或大量表格中的数百万或数十亿个记录,和/或可以是复杂的,诸如记录和表格之间的大量相互关系,以及用作对可存储其中的数据的类型的约束的复杂约束。在一些此类情形中,数据集可被存储在多个数据存储上。作为第一示例,两个或更多个数据存储可存储数据集的相同副本。该配置对促进可用性可能是有利的(例如,一个数据存储可在另一数据存储被占据或离线时对数据的请求作出响应)。作为第二示例,数据集可分布在数据存储上,以使每一数据存储存储数据集的一部分。该配置对提高效率可能是有利的(例如,满足对数据的特定集合(诸如特定记录)的请求的计算负担的分布可限于正在存储所请求数据的数据存储)。在许多此类示例中,可提供数打或数百个数据存储,诸如在包括一起存储和提供对非常大的数据集的访问的极大量的数据存储的服务器场中。图I呈现表征用于将用户12所提交的查询14应用于数据集20、包括各自存储具有特定属性24的一组记录26的一组数据表格22的第一体系结构的示例性情形10。在该示例性情形10中,数据集20已以各种方式跨许多数据存储18分布。作为第一示例,数据集20可垂直分布;例如,数据集20可包括存储不同类型的记录26的若干数据表格22,并且第一数据存储18可存储第一数据表格22的记录26,而第二数据存储18可存储第二数据表格22的记录26。作为第二示例,数据集20可水平分布;例如,针对特定数据表格22,第一数据存储18可存储第一组记录26,而第二组数据存储18可存储第二组记录26。该分布可以是任意的,或者可基于数据表格22的特定属性24 (例如,针对指定字母串的属性24,第一数据存储18可存储以字母“A”至“L”开头的记录26,而第二数据存储18可存储以字母“M”至“Z”开头的记录26)。还可设计分发数据表格22和数据记录26的其他方式;例如,针对特定数据表格22,第一数据存储18可存储用于记录26的第一组属性24,而第二数据存储18可存储用于记录26的第二组属性24,或者两个数据存储18可冗余地存储相同记录26以促进记录26的可用性和对涉及记录26的查询的快速评估。
在许多此类情形中,用户或过程可提交要应用于数据集20的查询。例如,结构化查询语言(SQL)查询可包括要应用于数据集20的一个或多个操作,诸如从具有用于特定属性24的特定值的一个或多个数据表格22中选择记录26、投影此类记录26的特定属性24、结合不同记录26的属性24以创建合成记录26、以及在呈现查询结果之前将各种其他操作应用于所选数据(例如,排序、分组、或对记录进行计数)。该查询还可指定对数据集20的各种更改,诸如插入新记录26、设置一个或多个记录26的各种属性24、删除记录26、建立或终止语义相关的记录26之间的关系、以及诸如通过插入、修改、或删除一个或多个数据表格22来更改数据集20的布局。还可将这些操作一起链接成此类操作的集合、序列、或条件分层结构。结构化查询语言的变量还支持更复杂的操作,诸如复杂的数据搜索(例如,对标识匹配正则表达式的记录的支持)、日志记录(例如,记录稍后可被反向的操作的应用)、以及事务(例如,成功地执行的其中任意一个都是操作的两个或更多个操作、或者不应用所有操作)。结构化查询语言的其他变量还可支持代码在数据存储上的执行;例如,查询 可指定或调用由数据存储对所存储数据执行的存储过程,或者可包括代理,诸如提供给数据存储以供本地执行的可解释脚本或可执行二进制码。为了评估和履行此类查询,数据存储18可包括查询处理引擎,诸如包括对该查询执行诸如使该查询中的名称与数据库的命名对象相关联以及标识各种运算符所指定的运算之类的各种解析操作的组件的软件流水线。通过词法解析查询的语言(例如,根据查询语言的句法规则来标识该查询的各个组分)、标识该查询的每一组分所指定的运算以及运算的逻辑结构和序列、以及调用能够履行运算的组件,数据存储18可实现对该查询的评估和履行。在这些以及其他情形中,将复杂查询应用于跨许多数据存储分布的数据集的任务可呈现出许多实现挑战。已提出了许多技术和体系结构框架来以有效且自动的方式实现此类应用。图I的示例性情形10还呈现通常用于将查询14应用于跨许多数据存储18分布的数据集20的一种技术。在该示例性情形10中,用户12可提交包括可针对数据集20应用的一组运算16的查询14。此外,运算16可用逻辑序列链接在一起,例如,使用布尔运算符来指定特定运算16的结果要一起使用。查询14可被递送到MapReduce服务器28,包括被配置成应用“MapReduce”技术来跨正在存储数据集20的各个部分的数据存储18分发查询14的计算机。例如,MapReduce服务器28可标识查询14内的各种操作16以由特定数据存储18分别存储的数据集20的各个部分为目标。例如,第一操作16可以第一数据存储18所存储的数据(例如,应用于第一数据存储18所存储的数据表格22和/或记录集26的Select (选择)操作)为目标,而第二操作16可以第二数据存储18所存储的数据为目标。因此,MapReduce服务器可将查询14分解成各个查询部分30,每一个查询部分包括要由特定数据存储18执行的一个或多个操作。数据存储18可接收查询部分30、应用其中所指定的操作16、并且生成可被递送到MapReduce服务器28 (或另一数据存储18以供进一步处理)的查询结果32。MapReduce服务器28然后可组成数据存储18所提供的查询结果32,以生成可响应于查询14提供给用户12的查询结果34。以此方式,数据存储18和MapReduce服务器28可互操作以实现查询14的履行。图I的示例性情形10可呈现一些优点(例如,将查询14自动地分成(parcel)多个数据存储18,这可实现对各个查询部分30的并发评估,该并发评估可加速对查询14的评估)。然而,示例性情形10还可呈现一些缺点。具体而言,设计用于诸如分布式数据库之类的分布式数据集的体系结构可能是合乎需要的,其中在第一组设备上执行对数据的存储和访问,而在第二组设备上执行复杂的计算过程。此类划分例如对于改进数据集20的安全性可能是有利的。例如,要应用于数据集20的查询14在计算上可能是昂贵的(例如,涉及大量的存储器)、矛盾的(例如,未结束或无法逻辑地评估的递归查询)、或恶意的(例如,过度地或隐密地涉及对数据集20的未经授权的公开和修改)。在一些情形中,计算可涉及执行代码(诸如调用已在数据存储18上实现的存储过程的查询14)、或移动代理情形,其中第三方可提供可应用于数据集20的“代理”(例如,可解释脚本、或者经部分或全部编译的可执行文件)。因此,可通过将复杂的计算限于可仔细地监控且如果此类计算机看起来正在以可能损坏数据集20的方式操作则可挂起、离线、或替换的一组特定计算机来改进数据集20的安全性。然而,图I的示例性情形410不涉及此类划分。相反,存储数据集20的各个部分的数据存储18还对此类数据执行查询部分30,并且因此不能将对数据集20的访问与对其所执行的计算分开。可能在图I的示例性情形10中产生的第二个缺点涉及数据集20的性能。例如, 特定数据存储18可被配置成存储临时地或长期地频繁访问的查询部分30,以使数据存储18在短时间段内接收并处理涉及数据集20的部分的许多查询14。然而,如果数据存储18还被配置成执行对所存储数据的复杂计算处理,则涉及复杂操作的查询14可消耗数据存储18的计算资源(例如,存储器、存储器容量、以及带宽),这些计算资源不可用于履行其他查询14。因此,单个复杂查询14可抢先评估和履行涉及数据存储18所存储的相同数据的其他查询14。相反,如果涉及该数据的复杂计算从存储此类数据中划分出来,则许多计算机可被配置成并行地处理查询14,并且占用一个计算机的资源的复杂查询14可能不影响对其他计算机所处理的其他查询14的评估或履行。鉴于图I的示例性情形10中所呈现的体系结构产生的这些以及其他缺点,将存储和访问数据集20中的数据与可应用于此类数据的复杂计算查询分开可能是合乎需要的。然而,其中数据存储18只提供低级访问且计算节点提供所有计算的刚性划分同样可能是低效的。图2呈现其中数据存储18被配置成存储包括大量记录26 (例如,50,000个记录)的数据集20的示例性情形40。用户12可提交查询14,查询14可由计算节点42接收和完全评估。计算节点42可包括例如查询处理引擎,该查询处理引擎可在词法上解析查询14、标识其中所指定的操作16、并且调用各个组件来执行包括从数据存储18取回数据的此类操作16。例如,代替将查询14或查询部分30发送到数据存储18,计算节点42可简单地发送对一组特定记录26 (诸如包括数据集20的数据表格22的记录26)的请求44。数据存储18可用包括所请求记录26的请求结果48作出响应,计算节点42可将一些复杂的计算(例如,查询14中所指定的运算16)应用于请求结果48并且可将查询结果34返回给用户12。然而,该示例性情形40示出对计算节点42和数据存储18之间的责任的该刚性划分的低效。例如,查询14可请求取回单个记录26 (例如,对与特定标识符相关联的雇员的记录26),但是数据存储18所存储的数据表格22可包括许多此类记录26。因此,数据存储18可将包括50,000个记录26的请求结果48提供给计算节点42,即使查询结果34中只包括一个此类记录26。此外,可能容易从查询14的范围内标识该记录26 (例如,如果查询14根据具有相应记录26的唯一标识符的索引字段来标识所请求记录26),但是由于数据存储18无法执行评估查询14中所涉及的计算,因此数据存储18未执行该相对简单的过滤。该低效可能变得特别明显,例如,如果请求结果48通过可能具有有限容量的网络46发送到计算节点42。通过网络46发送许多记录26可对完成查询14施加限速因素,由此在履行涉及小查询结果34的相对简单的查询14中施加显著延迟。这些以及其他缺点可因责任在数据存储18和包括数据集20的计算节点42之间的硬性划分而产生。此处呈现了用于配置数据集20来评估查询14的技术。例如,鉴于图I的示例性情形10和图2的示例性情形40中的优点和缺点,可设计这些技术。根据这些技术,数据存储18可被配置成存储数据集20的一个或多个数据项(例如,数据集20的各个表格22、属性24、和/或记录26),并且参与针对此类数据项对查询14的评估。与图I的示例性情形10相比,数据存储18未被配置成评估查询14 ;例如,数据存储18可不包括查询处理引擎,并且可拒绝接受或评估用查询语言(诸如结构化查询语言(SQL)查询)定制的查询14。相反,数据存储18不限于响应于请求44来提供数据存储20的一个或多个部分,这可造成因刚性划分而产生的低效,诸如图2的示例性情形40中所示的。相反,根据这些技术,数据存 储18被配置成接受包括定义经过滤的数据子集的一个或多个过滤准则的请求44。例如,数据存储18可存储包括各个记录26的一个或多个数据表格22,但是可索引记录26的少量属性24。过滤可涉及标识、取回、以及提供数据集20的数据子集,包括具有带索引(indexed)属性24之一的特定值的记录26。由于将过滤准则应用于数据集20可导致要在经过滤的数据子集58中发送的数据的显著减少、同时消耗在评估查询14中所涉及的计算资源的一小部分,因此数据存储18可被配置成响应于请求44来执行该过滤。然而,数据存储18可被配置成制止执行更复杂的计算过程;例如,数据存储18可完全省略查询处理引擎,可拒绝接受用查询语言指定的查询14,或者可拒绝指定不带索引的属性26的请求44。以此方式,此处所呈现的技术可实现比图I的示例性情形10中更高的效率和安全性,同时还避免图2的示例性情形40中所呈现的缺点。图3呈现表征应用此处所呈现的技术来将用户12所提交的查询14应用于存储各个数据项52的数据集20以生成和提供查询结果34的示例性情形50的图示。在该示例性情形50中,可通过数据存储18来实现对数据集20的访问,数据集20进而可通过计算节点42来访问。然而,如果用户12或计算节点42将查询14提交给数据存储18,则数据存储18可拒绝接受查询14,或者不能够评估查询14。(替换地,数据存储18可只在例如查询14由管理员提交的特定情况中接受并评估查询14。)相反,用户12(或自动过程)可将查询14提交给计算节点42,计算节点42可尽力与数据存储18交互以评估该查询并提供查询结果34。具体而言,计算节点42可检查查询14以标识包括可指定从数据存储18取回特定数据项52的一个或多个过滤准则54的请求44。(例如,标识查询14的一个或多个操作16,该一个或多个操作16可被表达为对满足一个或多个过滤准则54的数据项52的请求44。)数据存储18被配置成接收数据项52并将接收到的数据项52存储在存储组件(例如,存储器电路、硬盘驱动器、固态存储设备、或者磁盘或光盘)中作为数据集20的一部分。另外,数据存储18被配置成接收包括一个或多个过滤准则54的请求44。在接收到请求44之后,数据存储18可执行过滤56以标识满足过滤准则54的数据项52,并且生成要返回到计算节点42的经过滤的数据子集58。计算节点42可接收经过滤的数据子集58,并且可应用查询14的其余部分(例如,执行未在请求44中表达的查询14的操作16所指定的复杂计算)。在一些此类情形中,计算节点42可将第二或进一步请求44发送到指定其他过滤准则54的数据集20,并且可在计算中用第二个或其他经过滤的数据子集58。最终,计算节点42可生成查询结果34,查询结果34可响应于查询14来呈现给用户12 (或自动的过程)。以此方式,配置数据存储18以及任选的数据节点42可以比图I的示例性情形10和/或图2的示例性情形40中所呈现的更有效和更安全的方式实现查询14的履行。图4呈现这些技术的第一实施例,如履行以数据集20为目标的请求44的示例性方法60所示。示例性方法60可由例如被配置成存储或访问数据集20的部分或全部的数据存储18来执行。另外,示例性方法60可被实现为例如存储在数据存储18的存储器组件(例如,系统存储器电路、硬盘驱动器的盘、固态存储设备、或者磁盘或光盘)中的一组软件指令,当这些指令由数据存储18的处理器执行时使得该处理器执行此处所呈现的技术。示例性方法60在62开始,并且涉及在64在处理器上执行指令。更具体地,这些指令被配置成在接收到数据项52之后,将数据项52存储66在数据集20中。这些指令还被配置成在接收到68指定至少一个过滤准则54的请求44之后,取回70满足至少一个过滤准则的数据集20的数据项52以生成经过滤的数据子集58,并且响应于请求44来发送72经过滤的数 据子集58。以此方式,在不使数据存储18暴露于安全风险、低效、以及消耗在评估查询14中所涉及的计算资源的情况下,示例性方法60实现了对访问数据集20的请求44的履行,并且由此在74结束。图5呈现这些技术的第二实施例,如将查询14应用于数据存储18所存储的数据集20的示例性方法80所示。示例性方法80可在例如具有处理器的设备(诸如计算节点42)上执行。另外,示例性方法80可被实现为例如存储在计算节点42或其他设备的存储器组件(例如,系统存储器电路、硬盘驱动器的盘、固态存储设备、或者磁盘或光盘)中的一组软件指令,当这些指令由处理器执行时使得该处理器执行此处所呈现的技术。示例性方法80在82开始,并且涉及在处理器上执行84指令。更具体地,这些指令被配置成从查询14中生成86指定至少一个过滤准则54的请求44。这些指令还被配置成将请求44发送88到数据存储18,并且在响应于请求44从数据存储18接收到经过滤的数据子集58之后,将查询14应用90于经过滤的数据子集56。以此方式,在不使数据存储18暴露于安全风险、低效、以及消耗在评估查询14中所涉及的计算资源的情况下,示例性方法80实现对数据集20的查询14的履行,并且由此在92结束。又一实施例涉及包括被配置成应用此处所呈现的技术的处理器可执行指令的计算机可读介质。此类计算机可读介质可包括例如计算机可读存储介质,这些计算机可读存储介质包括有形设备,诸如存储器半导体(例如,使用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、和/或同步动态随机存取存储器(SDRAM)技术的半导体)、硬盘驱动器的盘、闪存设备、或磁盘或光盘(诸如CD-R、DVD-R、或软盘),编码有一组计算机可读指令,当这些指令由设备的处理器执行时使得该设备实现此处所呈现的技术。此类计算机可读介质还可包括(作为与计算机可读存储介质不同的一类技术)各种类型的通信介质,诸如可通过各种物理现象(例如,电磁信号、声波信号、或光学信号)以及在各种有线情形(例如,经由以太网或光纤缆)和/或无线情形(例如,诸如WiFi之类的无线局域网(WLAN)、诸如蓝牙之类的个域网(PAN)、或者蜂窝或无线电网络)中传播的信号,并且该通信介质编码有一组计算机可读指令,当这些指令由设备的处理器执行时使得该设备实现此处所呈现的技术。可以这些方式设计的一种示例性计算机可读介质在图6中示出,其中实现100包括其上编码有计算机可读数据104的计算机可读介质102 (例如,⑶-R、DVD-R、或硬盘驱动器的盘)。该计算机可读数据104进而包括被配置成根据此处所阐述的原理来操作的一组计算机指令106。在一个此类实施例中,处理器可执行指令106可被配置成执行一种履行以数据集中的一数据集为目标的请求的方法,诸如图4的示例性方法60。在另一此类实施例中,处理器可执行指令106可被配置成执行一种将查询应用于数据存储所存储的数据集的方法,诸如图5的示例性方法80。该计算机可读介质的一些实施例可包括非临时性计算机存储介质(例如,硬盘驱动器、光盘、或闪存设备),其被配置成存储以此方式配置的处理器可执行指令。本领域普通技术人员可设计被配置成根据此处所呈现的技术操作的许多此类计算机可读介质。此处所讨论的技术可被设计成在许多方面具有变型,并且一些变型可呈现出相对于这些以及其他技术的其他变型的附加优点和/或减少缺点。此外,一些变型可组合实现, 并且一些组合可表征通过相互协作而得到的附加优点和/或减少的缺点。各种变型可被合并到各个实施例中(例如,图4的示例性方法60和图5的示例性方法80)中,以向此类实施例赋予单独和/或相互促进的优点。可在这些技术的实施例之间改变的第一方面涉及其中可使用此类技术的情形。作为第一变型,可使用许多类型的数据存储18 (和/或计算节点42)来将查询14和请求44应用于数据集20。作为一个此类示例,数据存储18和/或计算节点42可包括不同的硬件设备(例如,不同的机器或计算机)、在特定硬件设备内操作的不同电路(例如,现场可编程门阵列(FPGA))、或在特定硬件设备的一个或多个处理器上的一个或多个计算环境内执行的软件过程(例如,单独的线程)。数据存储18和/或计算节点42还可包括虚拟过程,诸如可在设备集合的各个设备上增量式地执行的分布式过程。另外,相应数据存储18可将包括数据集20的数据项52存储在内部,或者可访问将数据项52存储在内部(例如,与数据存储层或设备通过接口连接的数据访问层或设备)的其他数据存储18。作为第二变型,可使用此处所呈现的技术来访问许多类型的数据集20,诸如数据库、文件系统、媒体库、电子邮件邮箱、对象系统中的对象集、或此类数据集20的组合。类似地,许多类型的数据项52可存储在数据集20中。作为第三变型,使用此处所呈现的技术来评估的查询14和/或请求44可用许多方式指定。例如,查询14可根据结构化查询语言(SQL)变量来指定,作为语言集成查询(例如,LINQ查询)、或者被配置成执行对数据集20内的数据项52的各种操纵的可解释脚本或可执行对象。请求44还可以各种方式指定,例如,简单地指定要包括在经过滤的数据子集58中的带索引的属性24以及此类属性24的一个或多个值。尽管请求44限于指定要包括在经过滤的数据子集58中的数据项52的一个或多个过滤准则54,但由此将查询14和请求44格式化的语言、句法、和/或协议不会显著地影响此处所呈现技术的应用或实现。可在这些技术的实施例之间改变的第二方面涉及数据存储18将数据项52存储在数据集20中。作为第一变型,数据存储18可包括可与一个或多个过滤准则54 (例如,特定属性24,以使包含属性24的一个或多个值的记录26要包括在经过滤的数据子集58中)相对应的至少ー个索引。数据存储18可被配置成在接收到数据项52之后,根据过滤准则54 (例如,根据可被过滤准则54作为目标的数据项52的ー个或多个属性24的值)索引在该索引中的数据项。数据存储18随后能够通过使用与过滤准则54相对应的索引来标识满足请求44的过滤准则54的数据项52,从而履行请求44。选择可能被请求44的过滤准则54作为目标的数据项52的属性24用于索引、以及制止索引数据项52的其他属性24可能是有利的(例如,当数据项52改变时必须维持索引,并且承担此类维持的计算负担以索引不可能作为过滤准则54被包括在内的属性24可能是不利的)。例如,在被配置成跟踪由各个用户在各个时间执行的事件的数据库中,将数据存储18配置成生成和維持用于索引集合的索引可能是合乎需要的,该索引集合包括指定各个数据项52所表示的事件索引;指定各个数据项52所表示的事件的时间的时间索引;以及指定与各个数据项52所表示的事件相关联的至少ー个用户的用户索引。然而,生成和維持用于该数据集20的其他属性24的索引可能是不合乎需要的,诸如在该请求中所涉及的数字资源的统ー资源标识符(URI)、在其上可由各个用户和管理员输入关于特定事件的文本评论的评论字段、或涉及在事件中所涉及的大数据集的“泡”(blob)字段(例如,描绘该事件的系统日志或所捕获图像)。

作为该第二方面的另ー变型,该索引可以各种方式标识与用于特定过滤准则54的ー个或多个特定过滤准则值相关联的数据项52。作为ー个此类示例,针对与索引相对应的过滤准则54的过滤准则值,该索引可指定标识具有用于过滤准则54的过滤准则值的数据项的数据项集合。例如,针对过滤准则54的每ー过滤准则值,该索引可存储对与过滤准则值相关联的数据项52的ー组引用。另外,存储在该索引中的数据项集合可以各种方式访问。例如,该索引可准许增量式地写入数据项集合(例如,通过将数据项52添加到具有过滤准则的过滤准则值的数据项的数据项集合来索引新数据项52),但是可准许只原子地读取数据项集合(例如,针对指定特定过滤准则54的特定过滤准则值的请求44,该索引可读取并呈现整个数据项集合,包括对此类数据项52的整组引用)。作为另ー变型,数据存储18可在接收到各个数据项52之后,将数据项52存储在数据项缓冲区中,从而在数据项缓冲区超过数据项缓冲区大小阈值(例如,数据项缓冲区的容量)时,数据存储18可将数据项添加到各个数据项集合,并且腾空数据项缓冲区。图7呈现表征索引根据索引112来索引的ー个或多个数据项集合118中的数据项52的示例性情形110的图示。在该示例性情形110中,数据存储18可接收各个数据项52 (例如,一组报告的事件),并且可将此类数据项52存储在数据集20中。具体而言,数据存储18可生成索引112,包括包含对ー个或多个数据项集合118的ー个或多个数据项52的引用116的ー组索引条目114,每ー索引条目与过滤准则54的不同过滤准则值(例如,事件发生时日期的月份和年度)相对应。在接收到数据项52之后,数据存储18可标识数据项52的一个或多个过滤准则值,并且可存储对存储在与过滤准则值相对应的索引112的索引条目114中的数据项52的引用。数据存储18随后可将数据项52存储在数据集20中(例如,通过将数据项52追加到记录26的列表)。当用户12将请求44提交给数据存储18 (直接地或间接地通过将查询14提交给被配置成从查询14生成指定ー个或多个过滤准则54的请求44的计算节点42)时,数据存储18可通过取回与过滤准则值相关联的数据项集合118来履行请求44,并且具体地可通过标识与过滤准则值相对应的数据项集合118的数据项52而标识索引112的索引条目114来这样做。数据存储18随后可使用存储在索引条目114中的引用116来取回数据项集合118的数据项52,并且可发送此类数据项52作为经过滤的数据子集58。以此方式,即使数据项52以任意方式存储在一起,数据存储18也可以有效的方式通过使用与请求44的过滤准则54相对应的索引112来履行请求44。例如,针对过滤准则54的第一过滤准则值,索引112的相应索引条目114可存储对与第二过滤准则54的相应第二过滤准则值相对应的数据项分区的引用。可使用此双层索引技术来存储和/或取回数据项52。例如,存储数据项52可涉及使用索引112来标识与用于数据项52的第一过滤准则54的第一过滤准则值相关联的索引条目114、检查被索引条目114引用的数据项分区以标识与用于数据项52的第二过滤准则54的第二过滤准则值相关联的数据项分区、以及将数据项52存储在该数据项分区中。相反,取回具有第一过滤准则54的特定第一过滤准则值和第二过滤准则54的特定第二过滤准则值的数据项52可涉及使用索引112来标识与第一过滤准则值相关联的索引条目114;检查被索引条目114引用的数据项分区以标识与第二过滤准则值相关联的数据项分区;以及响应于请求44来取回和发送数据项分区。作为该第二方面的另ー变型,数据存储18可将索引配置为ー组分区,每ー分区包括满足特定过滤准则54的数据项52(或其引用,例如,其中可访问数据项52的存储器引用 或URI、或诸如数据表格22的关键字段的关键值之类的数据项52的不同标识符)。例如,数据存储18可生成各个分区,诸如分配为存储具有特定过滤准则54的特定过滤准则值的数据项52的存储器的各个小部分。在接收到数据项52之后,数据存储18可将数据项52存储在相应分区中;并且在接收到指定特定过滤准则54的过滤准则值的请求44之后,数据存储18可使数据项分区存储具有过滤准则的过滤准则值的数据项52,并且发送数据项分区作为经过滤的数据子集58。作为又ー变型,可使用两个或更多个索引来根据两个或更多个过滤准则54对数据项进行分组。图8呈现表征将数据项52划分成相应数据项分区122的示例性情形120的图示。在该示例性情形120中,数据存储18可接收各个数据项52 (例如,一组报告的事件),并且可将此类数据项52存储在数据集20中。数据存储18可再次生成索引112 (未示出),包括包含对ー个或多个数据项集合118的ー个或多个数据项52的引用116的ー组索引条目114,每ー索引条目与过滤准则54的不同过滤准则值(例如,事件发生时的日期的月份和年度)相对应。然而,与图7的示例性情形110相比,在该示例性情形120中,数据项52以根据过滤准则值划分的方式存储。在接收到数据项52之后,数据存储18可标识数据项52的一个或多个过滤准则值,并且可标识与过滤准则值相关联的数据项分区122。数据存储18随后可将数据项52存储在与过滤准则值相对应的数据项分区122中。当用户12将请求44提交给数据存储18 (直接地或间接地通过将查询14提交给被配置成从查询14生成指定ー个或多个过滤准则54的请求44的计算节点42)时,数据存储18可通过取回与过滤准则值相关联的数据项集合118来履行请求44,并且具体地可通过标识与过滤准则值相对应的数据项分区122来这样做。数据存储18随后可取回整个数据项分区122,并且可将整个数据项分区122发送到用户12。可响应于其他过滤准则54来取回和发送附加数据项分区122(例如,用于特定过滤准则54的两个或更多个过滤准则值、或两个或更多个不同的过滤准则54中的每ー个的在替换方案中指定的过滤准则值)。以此方式,数据存储18可以有效的方式通过使用与请求44中所指定的ー个或多个过滤准则54相对应的数据项索引122来标识和提供满足过滤准则54的数据项52。本领域普通技术人员可根据此处所呈现的技术来设计存储数据集20的数据项52的许多方式。在这些技术的实施例之间改变的第三方面涉及将数据存储18和/或计算节点42配置成取回满足请求44的过滤准则54的数据项52。作为第一变型,请求44可包括许多类型的过滤准则54。具体而言,请求44可指定可与包括第二经过滤的数据子集58的数据项52相关的第一经过滤的数据子集58,并且数据存储18可在生成第二经过滤的数据子集58时使用第一经过滤的数据子集58。例如,查询14可涉及指定另ー经过滤的数据子集58的请求44(例如,在查询14中“从用户中选择用户名,其中user, id(用户的标识符)在(10、22、53、67)中”,根据呈现为经过滤的数据子集58的ー组数字用户ID来过滤请求44)。作为另ー变型,查询14可涉及指定第一经过滤的数据子集58的第一请求44,该第一经过滤的数据子集58在指定第二经过滤的数据子集58的第二请求44中引用。例如,在查询14中,“从用户中选择用户名,其中user, id在(根据事件选择用户,其中event, type (事件类型)=12中”,从事件数据表格生成第一经过滤的数据子集58 (使用第一请求44,例如,“SET_1 =event, type = 12”),并且第一经过滤的数据子集58被第二请求44引用(例如,在SET_1中的user, id),从而产生第二经过滤的数据子集58。以此方式,在评估相同查询14吋,请 求44可引用另ー请求44 (包括所提供和处理的早期请求44)所生成的经过滤的数据子集58。作为该第三方面的第二变型,当呈现有包括至少ー个过滤准则54的请求44时,数据存储18可被配置成从数据集20取回满足请求44的相应过滤准则54的内容项52 (例如,通过使用索引112来标识数据集118和/或数据项分区122,如在图7的示例性情形110和图8的示例性情形120中)。替换地,代替利用索引,数据存储18可取回数据集20的所有数据项52,并且可只发送满足至少ー个过滤准则的数据项52 (例如,发送到将请求44提交给数据存储18的计算节点42或用户12)。在先前示例中,在接收之后索引数据项52期间实现对数据项52的过滤;但是在后续示例中,在发送数据项52期间实现对数据项52的过滤。例如,为了履行请求44,可能难以实时地过滤所有数据项52。然而,替换地或与使用索弓I 112和/或分区122结合,可使用一些技术来加速对数据项52的实时过滤。图9呈现表征ー种用于实现对数据项52的实时过滤的技术的示例性情形130的图示。在该示例性情形130中,数据存储18从用户12接收指定至少ー个过滤准则54的请求44,并且通过提供只包括满足请求44的过滤准则54的数据项52的经过滤的数据子集58来尽力履行请求44。然而,在该示例性情形130中,数据存储18从数据集20取回所有数据项52,并且随后将数据项处理器集合132应用于整个数据项集合52以只标识和提供满足过滤准则54的数据项52。数据项处理器集合132可包括例如数据项处理器集合134,每ー数据项处理器具有状态136和至少ー个过滤条件(例如,逻辑评估任何特定数据项52以标识是否满足过滤准则54)。数据项处理器134各自可被配置成在接收到数据项52之后,更新数据项处理器134的状态136 ;以及当数据项处理器134的状态136满足至少ー个过滤条件时,数据项处理器134可授权发送数据项52 (例如,通过将数据项52包括在经过滤的数据子集58中、或通过将数据项52发送到不同数据项处理器134以供进一步处理)。因此,数据项处理器134可互连并且可作为使用状态机来评估数据项52的实时处理系统互操作因此,数据存储18可在从数据集20取回数据项52之后调用数据项处理器集合132,并且可只发送已被授权由数据项处理器集合132发送的数据项52。以此方式,数据存储18可实现对数据集20的所有数据项52的自组织实时评估以标识和递送满足请求44的过滤准则54的数据项52,而无需生成、維持、或使用索引112或分区122。作为该第三方面的第三变型,数据存储18可在响应于请求44提供经过滤的数据子集58之前(以及任选地在取回匹配请求44的过滤准则54的数据项18之前),估计经过滤的数据子集58的大小。例如,数据存储18接收到的请求44可涉及响应于请求44来取回和发送的、可占用大量计算资源的相对较大的经过滤的数据子集58。因此,针对从请求者(例如,特定用户12或自动的过程)接收到的请求44,一个实施例可首先估计经过滤的数据子集58的经过滤数据子集大小(例如,经过滤的数据子集58中所包括的记录26或数据项52的总估计量),并且可尽力验证取回该大小的经过滤的数据子集58对请求者是可接受的。因此,一个实施例可被配置成在响应于请求44发送经过滤的数据子集58之前,估计经过滤的数据子集58的经过滤的数据子集大小并将该经过滤的数据子集大小发送给请求者,并且可只在从请求者接收到经过滤的数据子集授权之后进行对经过滤的数据子集58的取回和发送。相反,计算节点42可被配置成在发送指定至少ー个过滤准则54的请求44之后且在响应于请求44来接收经过滤的数据子集58之前,从数据存储18接收对经过滤的 数据子集58的经过滤的数据子集大小的估计,并且可验证经过滤的数据子集大小(例如,通过将经过滤的数据子集大小呈现给用户12、或通过将经过滤的数据子集大小与可接受的经过滤的数据子集大小阈值进行比较、定义数据存储18和/或网络46的计算资源的可接受利用率)。如果所估计的经过滤的数据子集大小是可接受的,则计算节点42可生成经过滤的数据子集授权并将其发送到数据存储18,并且随后可接收经过滤的数据子集58。本领域普通技术人员可设计将数据存储18和/或数据节点42配置成根据此处所呈现的技术从数据集20取回数据项52的许多方式。虽然已用结构特征和/或方法动作专用的语言描述了本主題,但是应当理解,所附权利要求书中所定义的主题不必限于以上所描述的具体特征或动作。相反,以上所描述的具体特征和动作是作为实现权利要求书的示例形式公开的。如在本申请中所使用的,术语“组件”、“模块”、“系統”、“接ロ”等一般g在表示计算机相关的实体,该实体可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是,但不限于,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序、和/或计算机。作为说明,在控制器上运行的应用和控制器都可以是组件。ー个或多个组件可驻留在过程和/或执行的线程内,并且组件可位于ー个计算机上和/或分布在两个或更多个计算机之间。此外,所要求保护的主题可使用产生控制计算机以实现所公开的主题的软件、固件、硬件、或其任意组合的标准编程和/或工程技术来实现为方法、装置、或制品。如此处所使用的术语“制品” g在涵盖可从任何计算机可读设备、载体、或介质进行访问的计算机程序。当然,本领域技术人员应当认识到,在不背离所要求保护的主题的范围或精神的情况下可对该配置作出许多修改。图10和以下讨论提供了对实现此处所阐述的ー个或多个原理的实施例的合适计算环境的简要、概括描述。图10的操作环境只是合适的操作环境的ー个示例,而不g在对该操作环境的使用范围或功能提出任何限制。示例计算设备包括但不限于,个人计算机、月艮务器计算机、手持式或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括任何以上系统或设备中的任ー个的分布式计算环境等。虽然并非必需,但是实施例在由一个或多个计算设备执行的“计算机可读指令”的一般上下文中进行描述。计算机可读指令可经由计算机可读介质来分发(在下文中讨论)。计算机可读指令可被实现为执行特定任务或实现特定抽象数据类型的程序模块,诸如函数、对象、应用程序编程接ロ(API)、数据结构等。通常,计算机可读指令的功能可按需在各种环境中组合或分布。图10示出包括被配置成实现此处所提供的一个或多个实施例的计算设备142的系统140的示例。在ー种配置中,计算设备142包括至少ー个处理单元146和存储器148。取决于计算设备的确切配置和类型,存储器148可以是易失性的(例如诸如RAM)、非易失性的(例如诸如ROM、闪存等)、或两者的ー些组合。该配置在图10中由虚线144示出。

在其他实施例中,设备142可包括附加特征和/或功能。例如,设备142还可包括附加存储(例如,可移动和/或不可移动),包括但不限于磁存储、光存储等。此类附加存储在图10中由存储150示出。在一个实施例中,实现此处所提供的一个或多个实施例的计算机可读指令可位于存储150中。存储150还可储存实现操作系统、应用程序等其他计算机可读指令。可将计算机可读指令加载到存储器148中,以供例如处理单元146执行。如此处所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器148和存储150都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可用于存储所需信息且可由设备142访问的任何其他介质。任何此类计算机存储介质可以是设备142的一部分。设备142还可包括允许该设备142与其他设备进行通信的通信连接156。通信连接156可包括但不限于,调制解调器、网络接ロ卡(NIC)、集成网络接ロ、射频发射机/接收机、红外线端ロ、USB连接、或用于将计算设备142连接到其他计算设备的其他接ロ。通信连接156可包括有线连接或无线连接。通信连接156可发送和/或接收通信媒体。术语“计算机可读介质”可包括通信介质。通信介质通常以诸如载波或其他传输机制之类的“已调制数据信号”来体现计算机可读指令或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”可包括以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。设备142可包括输入设备154,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外照相机、视频输入设备、和/或任何其他输入设备。在设备142中还可包括输出设备152,诸如ー个或多个显不器、扬声器、打印机、和/或任何其他输出设备。输入设备154和输出设备152可经由有线连接、无线连接、或其任何组合连接到设备142。在一个实施例中,来自另ー计算设备的输入设备或输出设备可用作计算设备142的输入设备154或输出设备152。计算设备142的组件可通过诸如总线之类的各种互连来连接。此类互连可包括诸如PCI Express之类的外围部件互连(PCI)、通用串行总线(USB)、火线(IEEE 1394)、光学总线结构等。在另ー实施例中,计算设备142的组件可通过网络来互连。例如,存储器148可由位于通过网络互连的不同物理位置的多个物理存储器单元组成。本领域技术人员应当认识到,用于存储计算机可读指令的存储设备可分布在网络上。例如,可经由网络158访问的计算设备160可存储实现此处所提供的一个或多个实施例的计算机可读指令。计算设备142可访问计算设备160,并且下载部分或全部计算机可读指令以供执行。替换地,计算设备142可按需下载计算机可读指令的片断,或者ー些指令可在计算设备142处执行,而ー些指令则可在计算设备160处执行。在本文中提供了实施例的各种操作。在一个实施例中,所描述的操作中的ー个或多个可组成储存在一个或多个计算机可读介质上的计算机可读指令,这些指令如果由计算设备执行,则将使得计算设备执行所描述的操作。描述部分或全部操作的次序不应被解释为暗示了这些操作必须依赖的次序。从本说明书获益的本领域技术人员应当理解替换的排序。此外,应该理解,并非所有的操作都必须存在于本文中所提供的每ー实施例中。

此外,本文中所使用的词语“示例性”意指用作示例、实例或说明。在本文中描述为“示例性”的任何方面或设计并不一定被解释为比其他方面或设计有利。相反,使用词语“示例性” g在以具体的方式呈现各个概念。如本申请中所使用的,术语“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或从上下文中清晰可见,否则“X使用A或B”意指任何自然的包括性排列。即,如果X使用A ;X使用B ;或X使用A和B两者,则在任何以上情况下,都满足“X使用A或B”。另外,本申请中和所附权利要求书中所使用的冠词“一”和“一个” 一般可被解释为意指“ー个或多个”,除非另有指定或从上下文中清晰可见是指単数形式。同样,虽然已參考一个或多个实现示出并描述了本发明,但是本领域的其他技术人员基于对本说明书和附图的阅读和理解应当想到各种等效替换和修改。本发明包括所有此类修改和替换,并且只由所附权利要求书的范围来限定。具体来说,对于由上述组件(例如,元素、资源等)执行的各种功能,除非另外指明,否则用于描述此类组件的术语g在对应于执行所描述的执行此处在本发明的示例性实现中所示的功能的组件的指定功能(例如,功能上等效)的任何组件,即使这些组件在结构上不等效于所公开的结构。另外,尽管可相对于若干实现中的仅ー个实现来公开本发明的ー个特定特征,但此类特征可如对任何给定或特定应用所需且有利地与其他实现的ー个或多个其它特征相组合。此外,就在说明书或权利要求书中使用术语“包含”、“具有”、“含有”和“带有”及其变体而言,此类术语旨在以与术语“包括”相似的方式为包含性的。
权利要求
1.ー种履行以具有处理器(146)的数据存储(18)上的数据集(20)为目标的请求(44)的方法(60),所述方法¢0)包括 在所述处理器(146)上执行¢4)指令(106),所述指令被配置成 在接收到数据项(52)之后,将所述数据项(52)存储在所述数据集(20)中;以及 在接收到(68)指定至少ー个过滤准则(54)的请求(44)之后 取回(70)满足所述至少ー个过滤准则(54)的所述数据集(20)的数据项(52)以生成经过滤的数据子集(58),以及 响应于所述请求(44),发送(72)所述经过滤的数据子集(58)。
2.如权利要求I所述的方法,其特征在干, 所述数据存储包括用于至少一个过滤准则的至少ー个索引; 所述指令被配置成在接收到所述数据项之后,根据至少ー个过滤准则索引至少ー个索引中的所述数据项;以及 取回满足所述至少一个过滤准则的所述数据集的数据项包括针对相应过滤准则,通过使用与所述过滤准则相对应的索引,标识满足所述过滤准则的数据项。
3.如权利要求2所述的方法,其特征在于,针对与所述索引相对应的过滤准则的过滤准则值,所述索引指定标识具有所述过滤准则的过滤准则值的数据项的数据项集合。
4.如权利要求3所述的方法,其特征在干, 索引所述至少ー个索引中的数据项包括针对相应过滤准则,将所述数据项添加到具有所述过滤准则的过滤准则值的数据项的数据项集合;以及 标识满足具有过滤准则值的过滤准则的所述数据项包括取回具有所述过滤准则的过滤准则值的数据项的数据项集合。
5.如权利要求4所述的方法,其特征在干, 所述数据存储具有被配置成存储接收到的数据项的数据项缓冲区;以及存储所述数据项包括当存储在所述数据项缓冲区中的数据项超过数据项缓冲区大小阈值时 将所述数据项缓冲区的相应数据项添加到所述数据项集合中,以及 腾空所述数据项缓冲区。
6.如权利要求3所述的方法,其特征在干, 所述数据存储包括被配置成存储具有过滤准则的过滤准则值的数据项的至少ー个数据项分区;以及 取回满足所述至少一个过滤准则的所述数据集的数据项包括针对相应过滤准则的至少ー个过滤准则值,取回存储在所述数据项分区中的数据项,所述数据项分区存储具有所述过滤准则的过滤准则值的数据项。
7.如权利要求6所述的方法,其特征在于,所述指令被配置成在接收到数据项之后 标识与所述索引相对应的至少ー个过滤准则的至少ー个过滤准则值; 标识存储具有所述过滤准则的过滤准则值的数据项的数据项分区;以及 将所述数据项存储在所述数据项分区中。
8.如权利要求6所述的方法,其特征在干, 所述数据存储包括至少ー个数据项分区,被配置成存储具有第一过滤准则的第一过滤准则值和第二过滤准则的第二过滤准则值的数据项;以及 至少ー个索引,被配置成针对具有所述第一过滤准则的第一过滤准则值的数据项,标识存储同样具有所述第二过滤准则的相应第二过滤准则值的数据项的相应数据项分区。
9.如权利要求I所述的方法,其特征在干, 所述请求指定第一经过滤的数据子集,以用于生成所述经过滤的数据子集;以及取回所述数据集的数据项包括取回满足所述至少一个过滤准则的所述数据集的数据项且使用所述第一经过滤的数据子集来生成经过滤的数据子集。
10.如权利要求I所述的方法,取回所述数据项包括 取回所述数据集的所有数据项;以及 只发送满足所述至少一个过滤准则的数据项。
11.如权利要求10所述的方法,其特征在干, 所述数据存储包括数据项处理器集合,所述数据项处理器集合包括具有状态和至少ー个过滤条件的至少ー个数据项处理器,并且所述至少一个数据项处理器被配置成 在接收到数据项之后,更新所述数据项处理器的状态;以及 在所述数据项处理器的状态满足所述至少一个过滤条件之后,授权发送所述数据项;以及 只发送满足所述至少一个过滤准则的数据项包括 将相应数据项提供给所述数据项处理器集合,以及 发送由所述数据项处理器集合授权发送的数据项。
12.如权利要求I所述的方法,其特征在干, 从请求者接收所述请求;以及 所述指令被配置成,在发送所述经过滤的数据子集之前 估计所述经过滤的数据子集的经过滤的数据子集大小; 将所述经过滤的数据子集大小发送给所述请求者;以及 在从所述请求者接收到经过滤的数据子集授权之后,响应于所述请求发送所述经过滤的数据子集。
13.—种将查询(14)应用于由数据存储(18)存储的数据集(20)的方法(80),所述方法(80)由具有处理器(146)的设备(142)执行,并且包括 在所述处理器(146)上执行(84)指令(106),所述指令被配置成 从所述查询(14)生成(86)指定至少ー个过滤准则(54)的请求(44); 将所述请求(44)发送到(88)所述数据存储(18);以及 在响应于所述请求(44)从所述数据存储(18)接收到经过滤的数据子集(58)之后,将所述查询(14)应用于(90)所述经过滤的数据子集(58)。
14.如权利要求13所述的方法,其特征在干, 所述查询包括 第一过滤准则生成第一经过滤的数据子集,以及 第二过滤准则使用所述第一经过滤的数据子集来生成第二经过滤的数据子集; 生成所述请求包括生成指定根据所述第一过滤准则值过滤的所述第一数据子集的第ー请求; 将所述请求发送到所述数据存储包括将所述第一请求发送到所述数据存储;以及 应用所述查询包括 在响应于所述第一请求从所述数据存储接收所述第一经过滤的数据子集之后 生成指定根据所述第二过滤准则过滤的所述第二数据子集且使用所述第一经过滤的数据子集的第二请求;以及 将所述第二请求发送到所述数据存储;以及 在响应于所述第二请求从所述数据存储接收所述第二经过滤的数据子集之后,将所述查询应用于所述第二经过滤的数据子集。
15.如权利要求13所述的方法,所述指令被配置成在从所述数据存储接收所述经过滤的数据子集之前 从所述数据存储接收所述经过滤的数据子集的经过滤的数据子集大小; 验证所述经过滤的数据子集大小以生成经过滤的数据子集授权;以及 在生成经过滤的数据子集授权之后,将所述经过滤的数据子集授权发送到所述数据存储。
全文摘要
本发明涉及过滤数据存储上的查询数据。数据集可分布在许多数据存储上,并且查询可由若干数据存储用组合成形成查询结果的结果(例如,使用MapReduce框架)分布式地评估。然而,此类体系结构可通过执行复杂的处理来违反安全性原则,包括在存储数据的相同机器上执行任意代码。代替处理查询,数据存储可被配置成只接收指定一个或多个过滤准则的请求,并且提供满足该过滤准则的数据项。计算节点可通过生成包括一个或多个过滤准则的请求、将该请求提供给数据节点、以及将查询的其余部分(包括复杂的处理、以及可能执行任意代码)应用于数据节点所提供的数据项来应用查询,由此改进查询处理的安全性和效率。
文档编号G06F17/30GK102682052SQ20111044602
公开日2012年9月19日 申请日期2011年12月27日 优先权日2010年12月28日
发明者D·克雷默, D·西顿, M·费尔德曼, N·奈斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1