用于快速数据分析的系统和方法与流程

文档序号:12287930阅读:471来源:国知局
用于快速数据分析的系统和方法与流程

本申请要求于2014年3月10日提交的序列号为61/950,827的美国临时申请的权益,其以引用的方式全部并入本文中。

技术领域

本发明通常涉及数据分析领域,且更具体地涉及用于数据分析领域中的快速数据分析的新的和实用的系统和方法。

背景

如今的商业收集涉及销售、市场和其他关键业务的大量的数据。查询这样的数据往往是困难且资源密集的过程,特别是对于复杂的查询来说。在一定程度上,查询性能可通过预计算数据聚合和数据索引得以改善,但是在跨越大的数据集中的所有维度上完成这样的预计算是不可行的。由于这样的原因,查询性能问题往往使数据分析缓慢。因此,在数据分析领域有创建用于快速数据分析的系统和方法的需要。本发明提供了这样的新的和实用的系统和方法。

附图简述

图1是优选的实施例的系统的图示视图;

图2是优选的实施例的系统的事件流的示例性表格视图;

图3是优选的实施例的系统的示例实施的图示视图;以及

图4是优选的实施例的方法的图表视图。

优选的实施例的描述

本发明的优选实施例的以下描述不旨在将本发明限制到这些优选实施例,而是使本领域中的任何技术人员能够执行并使用本发明。

1.用于快速数据分析的系统

如图1所示,用于快速数据分析的系统100包括事件数据库110、字符串查找数据库120、字符串译码器130以及查询引擎140。系统100可附加地或可替代地包括接口模块150、配置数据库160和/或数据管理器170。

系统100用于通过利用分布式计算来实现快速数据分析,以激励专门设计用于提高大量数据的查询速度的架构。系统100优选用于事件数据;事件数据库110中的每个条目优选包括时间戳且首先按该时间戳的顺序被存储。附加或可选地,每个条目可能包括序列号,或指示事件如何排序的一些其它字段。作为另一选择,事件顺序可由数据存储的顺序确定。按时间戳的顺序存储数据优选地允许存储大量的实时数据,而不花费宝贵的处理时间来组织和/或重写数据。优选地,系统100还使用字符串译码器130和字符串查找数据库120将事件数据字符串译为整数,这允许事件数据库110中的智能数据压缩。事件数据库110优选地分布在整个分布式计算系统的数据碎片中。当系统100被查询时,查询引擎140优选采用来自整个分布式计算系统的数据碎片的样本,这允许快速并行读取。随后,查询引擎140可部分地基于所选择的样本优选地确定查询答案,实现比所有数据都被查询的快得多的响应。查询引擎140可优选地调整查询引擎的采样方法,以达到准确度与速度的期望的比率,以使查询引擎140适用于各种查询类型。至少部分地利用上述的特征,系统100优选实现大量数据的快速分析,同时最小化或消除广泛的预处理或开销。

事件数据库110用作系统100的主要信息存储器。事件数据库110优选存储事件数据,例如包括时间元素或事件顺序的其他指示的数据。事件数据优选具有至少相关联的时间字段和会话字段,但可包含任何合适的字段集。事件数据库110可以任何合适的组织方案附加地或可选地存储任何合适的数据。事件数据库110优选包括多个数据集来以不同的方式存储数据。例如,如图2中所示,一个数据集可包括按用户id(UID)分组的(例如,分片的)并按时间组织的事件的列表;而另一数据集可包括事件的相同列表,但事件是按IP地址分组的并按时间组织的。数据分片优选用于分区和/或分组数据,但数据可附加地或可选地以任何合适的方式分组。如在以上示例中的,不同的数据集可存储相同的数据,但不同的数据集也可存储相同数据的不同子集,或完全不同的数据。例如,一个数据集可包括按UID分组的并按时间组织的事件的列表,其中该事件还包括IP地址和位置字段。第二数据集可包括按IP地址分组的并按时间组织的相同事件的列表,但事件信息不包括位置或UID。事件数据库110优选组织所有的数据集为分列数据集;可替代地,数据集可以任何合适的方式组织。以分列格式存储的数据集优选使用分列压缩,以减小存储的数据的大小。分列压缩优选包括利用存储在列中的数据的序列本质来节省空间的任何技术。

事件数据库110优选允许显式数据和隐式数据两者的存储。隐式数据优选包括隐式附加的对象数据源并可在查询中被引用。例如,在毛衣销售数据的事件流中,每个事件能够携带显式数据字段,该显式数据字段识别商家(“e.merchant_id”)、终端(“e.terminal_id”)、美元交易量(“e.dollar_amount”)以及出售的毛衣类型(“e.sweater_id”)。每个事件也可具有对象数据源或与这些显式数据字段相关联的其他类型的隐式数据;例如,可能有与涉及毛衣类型(如大小(“sweater_size”)和颜色(“sweater_color”))的每个“e.sweater_id”特征相关联的对象数据。事件数据库110优选使这些相关联的数据特性自动地对查询可用;例如,毛衣颜色可通过字段“e.sweater_id.sweater_color”来访问。事件数据库110可包括对属性字段的直接访问,这可用于删除对表连接的需要。对属性字段的访问可通过导入声明的表作为连接表来促进。声明连接表优选使连接表与涉及的事件数据表的维度链接。连接表优选被存储为属性名称值对。

事件数据库110优选跨整个分布式计算系统中的计算机分布。分布式计算系统的每个节点优选存储由事件数据库110包含的数据的部分。该数据优选存储在持久性存储器(例如硬盘驱动器、闪存)中,但是一些数据或全部数据可附加或可替换地存储在临时存储器(例如RAM)中。事件数据库110中的数据优选地进一步分区成在每个节点上的数据碎片。碎片优选为水平表分区和竖直表分区两者;数据碎片优选由数据表的所有行的子集和所有列的子集的交集形成。每个碎片优选包含至少时间信息,但可附加或可替代地包含其他信息。碎片可按时间分区;例如,每个数据碎片可包含发生超过特定的24小时周期的事件集。碎片可附加或可替代地按任何其他合适的信息(例如UID、IP地址、会话ID等)分区。碎片分区优选按以下规则完成:竖直分区优选包括固定数量的字段,以及对于每个竖直分区有固定数量的水平分区。例如,如果数据集包括时间字段、UID字段、IP地址字段以及位置字段,则数据集可竖直地分区成三个。第一竖直分区将包括时间字段和UID字段;第二竖直分区将包括时间字段和IP地址字段,以及第三竖直分区将包括时间字段和位置字段。随后,数据集将按天水平地分区;如果有一周的数据,则将有七个水平的分区。因此,数据将分区成21个碎片。碎片分区可附加或可替代地按任何其他规则集或算法自动完成,或可手动完成。

每个碎片优选具有碎片号(或其他标识符),并且每个碎片号优选连同其上存在该碎片的节点存储在配置数据库160中。该联结的数据可附加或可替代地存储在任何合适的位置中。保持碎片和节点链接的中心列表优选使查询引擎140能够确定正确节点以查询特定数据。碎片/节点链接的列表可附加地包括其他信息,如被包括在碎片中的数据的概略。

字符串查找数据库120用于存储将字符串链接到唯一识别该字符串的整数的信息。字符串查找数据库120由字符串译码器130使用,以将字符串译为其相应的整数标识符,反之亦然。字符串查找数据库120中的字符串到整数的映射优选以实现前缀匹配的方式(例如,通过使用trie数据结构)存储,但是可附加或可替代地以任何合适的方式存储。字符串查找数据库120优选分布在整个分布式计算系统中的计算机。分布式计算系统的每个节点优选存储由字符串查找数据库120包含的数据的部分。该数据优选存储在持久性存储器(例如硬盘驱动器、闪存)中,但是一些数据或全部数据可附加或可替换地存储在临时存储器(例如RAM)中。字符串查找数据库120中的数据优选进一步分区成在每个节点上的数据碎片。字符串查找数据库120的数据碎片优选对应于事件数据库110的数据碎片,但可替代地独立于事件数据库110的分区而被分区。

事件数据库110的每个字段优选对应于字符串查找数据库120的独立的字符串查找数据碎片。这样使相同的整数标识符能够用于不同字段中的不同字符串。字符串查找数据碎片和对应的事件数据库110字段之间的关系优选存储在配置数据库160中,但可替代地存储在任何合适的位置中。如果字符串查找数据碎片对应于事件数据碎片,则关系可以是简单地两个碎片共享一个碎片识别号。字符串查找碎片和事件数据库110字段之间的关系优选为一对一,但可替代地可以为任何合适的关系;例如,如果两个字段包含类似的字符串数据,(例如中间名和名字),则该两个字段可共享字符串查找碎片。

字符串译码器130用于将输入的事件数据中的字符串转换成整数标识符。将字符串转换成整数标识符可大大地节省存储事件数据所需的空间的量,并且也可优化某些操作(优选包括由查询引擎140使用的操作)。字符串译码器130优选在事件数据被写入事件数据库110之前将所接收的事件数据中的字符串译为字符串标识符,但可附加或可替代地在任何合适的时间将字符串译为字符串标识符。字符串译码器130优选译码所接收的事件数据中的所有字符串,但可替代地仅译码所接收的事件数据中的所有字符串的子集。字符串译码器130优选通过查找与字符串查找数据库120中的字符串对应的标识符来译码字符串。对应的标识符优选为链接至特定字符串的标识符,但该对应的标识符可附加或可替代地被链接至其他数据。例如,如果字符串具有特定值且该字符串为事件数据的特定字段或特定类型的部分,则标识符可能仅对应于该字符串。这样使标识符能够重复用于不同的数据类型;例如,整数标识符“42”可对应于“Country”字段中的数据的字符串“Canada”,并可对应于“Month”字段中的数据的字符串“January”。该“其他数据”可显式存在于字符串查找数据库120中或可隐式存在;例如,如果字符串查找数据对应于不同的事件数据字段,则字符串查找数据可存储在不同的位置(如在字符串查找数据库上的部分所述)。

如果字符串在字符串查找数据库120中具有对应的标识符,则字符串在被写入事件数据库110中之前被译为该标识符。如果字符串不具有对应的标识符,则对应的标识符优选为该字符串创建。对应的标识符优选为在字符串查找数据库120中的下个可用的标识符;但可根据字符串值可替代地被选择。例如,以字母a、b或c开始的所有字符串值可具有以“1”开始的整数标识符。如果根据字符串值选择标识符,则标识符查找数据优选以使能前缀匹配的格式存储。

字符串译码器130也用于处理用来查询的字符串译码。当查询引擎140接收查询时,处于查询中的字符串优选传至字符串译码器130,以将其译为标识符。随后,优选使用标识符处理查询。在查询已经被处理之后,查询结果中的标识符优选通过字符串译码器130被处理回成字符串,允许在没有来自字符串译码器130的进一步干预的情况下查看或处理查询结果。

查询引擎140用于处理关于事件数据的传入查询和返回该查询的结果。查询引擎140优选采用包括事件数据源、时间范围、过滤器、分区功能以及度量功能的查询。事件数据源优选参考事件数据库110中的事件数据字段;例如,“e.sweater_id”可能涉及对应于出售毛衣的类型的事件数据字段。时间范围是在查询能够被搜索的期间的时间的范围;查询优选忽略“e.time”值在特定时间范围之外的事件数据。过滤器优选允许数据基于过滤条件被包括在查询中或从查询中排除;过滤器优选应用于满足时间范围的任何事件数据,但可附加或可替代地应用于任何其他事件数据。不满足过滤器的任何事件数据优选从查询结果中排除。在这种方式中,时间范围优选类似于其他过滤器,除了时间范围优选具有比其他过滤器更高的优先级之外。例如,如果一组过滤器包括声明“e.sweater_id>10”的过滤器,则“Filter(e)”对于“e.sweater_id≤10”的任何事件“e”将返回“False”。分区函数优选对满足时间范围和过滤器两者的任何事件数据进行评估,但可附加或可替代地应用于任何其他事件数据。分区函数优选按一个或多个关系的满足将事件分组在一起。分区函数优选返回满足分区函数的所有事件;例如,“partition(e.sweater_id,23)”将返回包含满足“e.sweater_id=23”的所有事件。度量函数优选从分区函数产生统计数据。度量函数优选包括产生满足给定条件的事件数据的总和、百分位、比例和/或百分比的函数。如果分区函数的结果被解释为来自更广泛总体的代表性的样本,则度量可被视为对应的更广泛总体度量的基于样本的估计。在这些情况下,查询引擎140优选提供针对估计的置信带,相当于例如可通过统计自举所获取到的。置信带优选通过观察到的统计分布的分析被计算,但可附加或可替代地以任何合适的方式提供。用户可被提供以置信带作为置信的指示符;例如,如果置信低时,可通报用户疑似的样本偏离(sample bias)。

除了返回事件和度量之外,查询引擎140可附加或可替代地返回对象和/或对象组(称为队列)。例如,查询可请求关于满足分区函数“partition(e.sweater_id,23)”的事件的“terminal_id”值的集。队列可包括行为队列;例如,满足特定序列的事件的用户组。例如,在一周时间内超过十小时在特定网站上活跃的用户组。

查询可附加或可替代地包括排序函数和/或分组函数。排序函数优选允许对查询结果的排序。排序函数优选应用于最终结果,但可附加或可替代地应用于中间结果(例如,如果经排序的结果在查询步骤中对于计算是必要的)。分组函数优选允许查询结果的分组。类似于排序函数,分组函数优选应用于最终结果,但可附加或可替代地应用于中间结果。排序函数和分组函数优选在第一遍运行中被指定或选择(例如,在第一中间结果的产生期间),但可附加或可替代地在任何合适的时间被指定。分组函数可附加地包括队列函数。队列函数是分组函数的特定情况,其将对象的总体分成队列集,每个对象确切出现在一个队列中。

查询引擎140优选通过第一预处理查询来处理查询;这包括解析查询和使用字符串译码器130将查询中的字符串译为整数。预处理可附加或可替代地包括执行用户认证、用户友好地字符串解析(例如将“now”解析成当前时间戳),以及将类似SQL的查询字符串解析成查询树。预处理优选还包括解析与查询相关的数据驻留在哪里(经由计算或查找配置数据库160)、执行误差处理、缩放、表连接和/或对于评估查询必要的任何数学方法。

在预处理查询之后,优选使用多遍运行方法评估查询。在第一遍运行中,查询引擎140优选同时从事件数据库110中的大量数据碎片中取用小样本。随后,查询引擎140优选在样本上执行中间计算,以识别或精细化可能的查询结果。随后,该可能的查询结果集用作下一遍运行的输入。下一遍运行可以是另一识别/精细化运行(类似于第一遍运行,但具有不同的输入),或下一遍运行可以是最终一遍运行。该最终一遍运行优选包括含有查询的疑似相关信息的数据碎片的全扫描,但可附加或可替代地仅包括数据碎片的部分扫描。查询结果优选计算自最终一遍运行的结果。

例如,查询引擎140接收查询,以识别在过去的一个月中对于特定的网站的前100个最活跃的用户。在第一遍运行中,查询引擎140查询包含用户id和活动数据的事件数据库110的数据碎片(其分布在整个分布式计算系统的许多节点),并且在每个节点上试图从数据的小样本中识别前面的用户。随后,查询引擎140将第一遍运行的结果进行比较,并得出从数据样本中估计出的前10000个用户的列表。随后,查询引擎140对包含关于这些10000个用户的数据的所有数据碎片进行全扫描,并根据该列表确定前100个用户。

运行的次数优选为手动分配的并默认为两遍运行,但可附加或可替代地自动设置。采样方法(包括在每遍运行中采样多少数据和在每遍运行中如何选择样本)优选根据所需的置信区间和水平自动确定。例如,对于期望在特定置信水平的特定置信区间内的总体评估所选择的样本将优选地被随机选择;样本的数量对应于对于这样的置信区间和水平所需的最少数量。采样方法可附加或可替代地对已知不是正态分布和/或不包括独立和随机变量的数据包括不同于非随机采样的采样。例如,如果数据集通常已知为遵循特定的分布(按照过去的查询或其他数据源),可根据该特定的分布对数据集进行采样。

在本发明的一个实施例中,查询引擎140可采用速度/准确度变量作为查询的一部分或作为应用于查询的通用设置(优选存储在配置数据库160中)。该速度/准确度变量将优选地调整运行的次数和/或采用的样本的数量,以产生结果。例如,具有被设置为接近“最大速度”值的速度/准确度变量的查询可能采用非常少量的样本,但也可能潜在地返回不准确的答案。当速度/准确度变量向着“最大准确度”侧被调整时,查询消耗更多时间和/或处理功率,但返回更准确的结果。该实现的查询引擎140可附加或可替代地包括查询估计器。查询估计器优选产生特定查询和速度/准确度变量、查询将进行多久和查询的结果将有多准确的估计。查询估计器能够优选直接地(例如,通过查询引擎用户设置所需的时间和/或准确度并接收特定速度/准确度变量设置)或间接地(例如,查询引擎用户可对不同的速度/准确度变量设置评估查询的时间/准确度,以选择正确的速度/准确度变量设置)被使用。

接口模块150用于向系统100提供图形用户接口。接口模块150优选向查询引擎的用户提供方法以查看和编辑数据、建立查询和/或可视化查询结果。接口模块150还优选地实现连接表的无缝引入;来自连接表的数据优选自动示出为事件数据的列,但可附加或可替代地以任何合适的方式表示。接口模块150优选包括度量选项卡、衍生的字段选项卡、探查选项卡和/或队列选项卡。

度量选项卡优选允许查询引擎用户定义、命名以及编辑度量。度量选项卡可包括消费者可对数据运行的标准度量的工具箱;附加或可替代地,度量选项卡可包括基于事件数据字段和/或存在于事件数据库110中的内容自动生成的度量。例如,如果事件数据包括“page”字段和“user”字段,则自动生成的度量可存在于度量选项卡中,该自动生成的度量计算“page”字段的值是“photo_view”的事件的数量除以来自“user”字段的用户的唯一计数。

衍生的字段选项卡优选允许查询引擎用户创建关于事件数据的衍生的字段。衍生的字段选项卡优选示出现有的事件数据库110,除此之外还提供从现有的字段中创建新的(衍生的)字段的选项。衍生的字段优选为根据其他字段中的数据计算的字段。例如,“Profit”可以是根据“Revenue”减去“Expenses”衍生的字段。衍生的字段可仅存在于接口模块150内,或可作为事件数据库110中的关系存在(这样查询将在运行时间计算衍生的字段),或可作为在事件数据库110内存储的数据存在(即衍生的字段的值被提前计算)。

探查选项卡优选允许查询引擎用户与事件数据库110中的事件数据交互。探查选项卡优选允许查询引擎用户应用基本函数(如计数、唯一计数、求和等)、度量以及对事件数据的过滤程序的组合。例如,查询引擎用户能够通过不同的缩放比例(例如,“2*Metric1(Filter(event_data))+Metric2(Filter(event_data))”)计算过滤的数据的两个度量的和。探查选项卡可附加或可替代地包括区域,其中基于那里的事件数据和计算可以在事件数据库110中的示例数据上或实际数据上进行可视化或显示。

队列选项卡优选允许查询引擎用户将事件数据对象按类别分组;例如,基于站点活动将网站的成员划分成队列。队列选项卡优选允许查询引擎用户指定在其中划分对象的类别。附加或可替代地,队列选项卡可自动创建在其中划分对象的类别。例如,队列选项卡可基于成员每周登录网站的天数自动创建队列;网站成员将被划分成八类中的一个(0、1、2、3、4、5、6、7天登录)。队列选项卡优选包括常用的队列函数集(像按时间分组),以帮助查询引擎用户生成队列。队列选项卡优选地另外允许查询引擎用户定义对象特性。对象特性优选地基于事件数据的序列被定义,并且优选地从聚合函数、聚合参数以及过滤器的组合中形成。例如,“hours_active”对象特性可通过“count_unique(align_time(event.time,3600))”来计算。队列选项卡可附加或可替代地允许查询引擎用户查看或修改预定义的对象特性(例如,注册时间戳)。

配置数据库160用于存储关于系统100的操作的设置。配置数据库160优选存储事件数据库110中的事件数据碎片和分布式计算机系统中的节点之间的映射。配置数据库160可附加或可替代地存储关于事件数据碎片的其他信息(例如,事件数据碎片的内容或事件数据碎片和事件数据字段之间的映射)。配置数据库160还优选存储字符串查找数据库120中的字符串数据碎片和分布式计算机系统中的节点之间的映射。配置数据库160可附加或可替代地存储关于字符串数据碎片的其他信息(例如,字符串数据碎片和事件数据碎片之间的映射或字符串数据碎片和事件数据字段之间的映射)。配置数据库160还优选存储关于系统100的操作的通用设置,例如,配置数据库160可存储涉及查询的全局设置(像速度/准确度权衡变量)。配置数据库160还可存储涉及存储或解析数据的全局设置。

在优选实施例的变型中,元数据(例如数据碎片和节点之间的映射等)可存储在分开的元数据存储器,而配置数据库160仅可存储其他设置(例如,涉及查询的全局设置)。

数据管理器170用于维护或修改事件数据库110中的数据,以最大化系统100的性能。数据管理器170优选确定数据集如何被组织和新的数据集是否应从现有的数据生成。数据管理器170可基于来自查询引擎用户的手动输入、基于响应于存储的数据的规则集或其他算法和/或基于响应于查询的规则集或其他算法完成上述操作。例如,数据管理器170可创建数据集,该数据集包括按IP地址分组的并按响应于查询引擎用户命令的时间存储的事件的列表。随后,数据管理器170可自动创建数据集,该数据集包括相同的事件,但现在基于配置数据库160中的规则,按位置来分组,该规则声明如果存在数据按IP地址分组的数据集,则另一数据集应创建为按位置将数据分组。如果查询引擎用户重复查询特定网页的用户,则数据管理器170可认为使该数据按UID存储可能是有利的,且随后将生成包括相同事件但按UID分组的数据集。同样地,如果数据管理器170注意到特定数据集很少被使用,则数据管理器170可删除该数据集或不同地组织该数据集。

数据管理器170还优选控制碎片如何被编码到事件数据库100中。数据管理器170优选如在涵盖事件数据库110的部分中所描述的来分区碎片。数据管理器170优选分区或重新分区碎片,以便优化系统100的性能。数据管理器170可基于来自查询引擎用户的手动输入、基于响应于存储的数据的规则集或其他算法和/或基于响应于查询的规则集或其他算法完成上述操作。

数据管理器170还优选生成数据聚合,以便优化系统100的性能。数据聚合优选通过在事件数据上执行求和、平均或其他数学操作来形成。数据聚合优选预先考虑通过常见查询执行的操作,以便当这些查询被调用时节省时间或处理功率。数据管理器170可基于来自查询引擎用户的手动输入、基于响应于存储的数据的规则集或其他算法、和/或基于响应于查询的规则集或其他算法创建数据聚合。

如图3中所示,在系统100的示例实施中,查询由接口模块150启动。随后,查询由SSL终端的Nginx网络服务器接收,经过传统服务器中的传统PHP代码,随后经过用于用户认证、用户友好地字符串解析、以及查询解析(例如将类似SQL的字符串解析成查询树)的查询API服务器。随后,查询由查询引擎140(数据服务器)处理。查询引擎使用来自字符串译码器130(字符串聚合器)和合并服务器的数据来处理查询,该字符串译码器和合并服务器各自访问字符串查找数据库120(字符串片/散列(string leaves/hashes))和事件数据库110(数据查询片/局部数据碎片)。随后,查询结果通过相同的服务器路径返回接口模块150。

2.用于快速数据分析的方法

如图4中所示,用于快速数据分析的方法200包括解释查询S210;基于查询执行第一数据采样S220;计算来自数据样本的中间结果S230;基于中间查询结果执行第二数据采样S240;以及基于第二数据样本计算最终查询结果S250。方法200优选通过以上所描述的系统100实施,但可附加或可替代地通过任何合适的系统实施。

方法200优选通过利用分布式计算来实现快速数据分析,以同时对许多数据集进行采样并返回这些数据集的结果,而不必搜索它们全部。方法200的多遍查询过程优选允许潜在相关的数据被快速识别(经由S220和S230)并随后作为进一步分析的目标(S240和S250),防止时间被浪费在不相关的数据上。每个步骤的范围优选是可调整的,这允许查询被优化、增强或以其他方式改进以用于速度对准确度的理想比率。通过这些步骤,方法200优选实现大量数据的快速分析,而不需要广泛的预处理或开销。

解释查询S210用于识别数据应如何被查询。通过S210解释的查询优选大体上类似于在系统100的描述中所描述的这些内容。解释查询S210优选包括第一预处理查询,该第一预处理查询可包括解析查询并将查询中的字符串译为整数。将查询中的字符串译为整数优选包括将字符串(和潜在地将其他数据,如参考的数据字段)传递到数据库,该数据库包含字符串到标识符的映射(例如字符串查找数据库130)。预处理可附加或可替代地包括执行用户认证、用户友好地字符串解析(例如将“now”解析成当前时间戳),以及将类似SQL的查询字符串解析成查询树。预处理优选还包括解析与查询相关的数据驻留在哪里(经由计算或查找配置数据库)、执行误差处理、缩放、表连接和/或对于评估查询必要的任何数学方法。

步骤S210可附加地包括指定或选择分组和/或排序函数。排序函数优选允许查询结果的排序。排序函数优选应用于最终结果,但可附加或可替代地应用于中间结果(例如,如果经排序的结果在查询步骤中对于计算是必要的)。分组函数优选允许查询结果的分组。类似于排序函数,分组函数优选应用于最终结果,但可附加或可替代地应用于中间结果。分组函数可附加地包括队列函数。队列函数是分组函数的特定情况,其将对象的总体分成队列集,每个对象确切出现在一个队列中。

基于查询执行第一数据采样S220用于识别并采样待由S230使用的数据。执行第一数据采样S220优选包括识别待采样的数据。识别待采样的数据优选包括识别基于所期望的置信区间和水平被采样的数据,例如,对于期望在特定置信水平的特定置信区间内的总体估计所选的待采样的数据将优选被随机选择;样本的数量对应于这样的置信区间和水平所需的最小数量。识别待采样的数据可附加或可替代地包括对已知不是正态分布和/或不包括独立和随机变量的数据进行不同于随机采样的采样。例如,如果数据集通常已知为遵循特定的分布(按照过去的查询或其他数据源),可根据该特定的分布对数据集进行采样。执行第一数据采样S220还优选包括收集待由S230分析的第一数据样本。收集第一数据样本优选包括采用来自大量数据碎片中的小样本,该大量数据碎片被包含在分布式计算系统的许多节点上。这样优选地使大量并行读取同时发生,节省了时间。

根据第一数据样本计算中间查询结果S230用于提供查询结果的第一估计,随后,该查询结果的第一估计可用于引导第二数据采样。通过S210处理的查询优选在第一数据样本上运行,以确定中间查询结果的集。随后,中间查询结果优选用于确定第二数据样本。例如,如果查询试图识别在过去一个月中特定网站的前100个最活跃的用户;执行第一数据采样S220可包括在包含用户id和活动数据的许多分布式计算系统节点上采样数据碎片。计算中间查询结果S230可包括试图在来自这些数据碎片的小样本中的每个节点上识别前面的用户、对这些前面的用户进行比较、以及得出从这些数据样本中估计的前10000个用户的列表。

基于中间查询结果执行第二数据采样S240用于基于S230的结果识别并收集数据。执行第二数据采样S240优选包括识别关于中间查询结果的数据源,并随后收集来自这些源的所有可用的数据。附加或可替代地,S240可仅包括收集所有可用的数据源的子集。参考先前章节的示例,识别数据源并收集所有可用的数据将包括定位涉及预测的前10000个用户(数据源)的所有活动数据(在查询时间帧内),并收集该活动数据用于在S250中的计算。

步骤S230和步骤S240可在连续的数据集上重复;例如,中间查询结果可根据第二数据样本被计算,以便生成第三数据样本等。同样地,步骤S250可在任何合适的数据样本上被执行。

基于第二数据样本计算最终查询结果S250用于基于在S240中识别的第二数据样本来确定查询结果。计算最终查询结果S250优选包括在第二数据样本上运行通过S210处理的查询并返回结果。计算最终查询结果S250可附加或可替代地包括返回置信区间、置信水平、或最终查询结果的准确度的其他估计。

优选实施例的方法及其变型可实施和/或至少部分地实施为机器,该机器配置成接收存储了计算机可读指令的计算机可读介质。指令优选通过计算机可执行的组件来执行,该计算机可执行组件优选与计算机系统集成。计算机可读介质可存储在任何合适的计算机可读媒介上,如RAM、ROM、闪存、EEPROM、光学设备(CD或DVD)、硬盘驱动器、软盘驱动器或任何合适的设备。计算机可执行部件优选为通用处理器或专用处理器,但可替代地或附加地,任何合适的专用硬件或硬件/固件的组合设备都可以执行这些指令。

本领域技术人员将从先前详细描述以及从附图和权利要求理解,可对本发明的优选实施方案作出修改和改变而不脱离在以下权利要求中界定的本发明的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1