首页 / 专利库 / 软件 / 物化视图 / 用于演进分析的系统

用于演进分析的系统

阅读:1008发布:2020-06-07

专利汇可以提供用于演进分析的系统专利检索,专利查询,专利分析的服务。并且一种用于演进分析的系统通过下述操作来支持三个维度(分析工作流、用户和数据):通过使用物化为系统中的先前工作流执行运行的一部分的答案,重写工作流以便更高效。,下面是用于演进分析的系统专利的具体信息内容。

1.一种用于支持演进查询的方法,包括:
保留来自先前查询或工作流执行运行的人工产物(物化视图);
提供用户定义函数(UDF)的灰盒模型以支持针对UDF的重写的搜索;
自动地产生使用人工产物减少工作流执行时间的重写;以及
递增地搜索要创建(激增)的重写的空间并搜索最小量的解空间以找到最优重写。
2.根据权利要求1所述的方法,包括:支持沿包括工作流、用户和数据演进的三个维度的同时演进。
3.根据权利要求1所述的方法,包括:将重写语言扩展成包括UDF。
4.根据权利要求1所述的方法,包括:确定乐观代价函数OptCost(Wi,v),其将候选视图v和目标Wi当作输入;以及提供使用v的Wi的重写ri的下限,其中ri是使用候选视图v的Wi的重写,并且其中下限的特性被确定为:
OptCost(Wi,v)≤Cost(ri)。
5.根据权利要求4所述的方法,包括:创建按OptCost排序的候选视图的搜索空间;提供下一候选视图的OptCost ;以及使用所述下一候选视图来确定目标的重写。
*
6.根据权利要求1所述的方法,包括通过下述操作来确定W 的最优重写r :
执行针对W 中的所有目标的重写的高效搜索,并输出针对Wn的全局最优重写;以及基于针对单个目标的一个或多个候选视图的产生所述目标的低代价重写的潜来枚举针对单个目标的一个或多个候选视图。
7.根据权利要求1所述的方法,包括:产生由在W中的多个目标处找到的重写构成的W* *
的重写r ,其中,所计算的r 具有在相同类别中的重写当中最小的代价。
8.根据权利要求1所述的方法,包括:
使用W 作为针对计划的重写;
在W 中的每个目标处引起n 个并发的搜索问题,并迭代地找到更好的重写,其中,每次迭代选择一个目标Wi并检查Wi处的候选视图;以及
把更好的重写结果用于精简W 中的其他目标的搜索空间。
9.根据权利要求1所述的方法,包括:优化UDF在非结构化数据集上的执行。
10.根据权利要求1所述的方法,包括:针对用户工作流的演进进行优化。
11.一种用于支持演进分析查询的系统,包括:
优化器,接收查询并将所述查询翻译成执行计划;
查询重写器,耦合至所述优化器以支持沿包括工作流、用户和数据演进的三个维度的同时演进;
物化视图元数据存储装置,耦合至所述查询重写器,所述存储装置包含与包括查询优化中使用的视图定义和标准数据统计的物化视图有关的信息;以及
查询执行引擎,耦合至所述查询重写器以执行所述查询。
12.根据权利要求11所述的系统,其中,针对包括大日志的基本数据来表达查询,并且查询包含UDF。
13.根据权利要求11所述的系统,其中,所述优化器提供针针对允许进入系统的UDF的代价估计。
14.根据权利要求11所述的系统,其中,所述优化器生成在每个计划节点上具有下述两种类型的注释的计划:(1)其计算的逻辑表达式;以及(2)所估计的执行代价。
15.根据权利要求11所述的系统,其中,所述重写器在搜索针对节点的输出的重写时在注释中使用逻辑表达式。
16.根据权利要求15所述的系统,其中,表达式由关系算子或UDF构成。
17.根据权利要求11所述的系统,针对在搜索期间找到的每个重写,所述重写器利用所述优化器来获得计划和所估计的代价。
18.根据权利要求11所述的系统,其中,在查询执行期间查询处理的副产品被保留为机会性物化视图且被存储为机会性物理设计配置。
19.根据权利要求11所述的系统,包括用于执行下述操作的计算机代码:确定乐观代价函数OptCost(Wi,v),其将候选视图v和目标Wi当作输入;以及提供使用v的Wi的重写ri的下限,其中ri是使用候选视图v的Wi的重写,并且其中下限的特性被确定为:
OptCost(Wi,v)≤Cost(ri)。
20.根据权利要求19所述的系统,包括用于执行下述操作的计算机代码:创建按OptCost 排序的候选视图的搜索空间;提供下一候选视图的OptCost;以及使用所述下一候选视图来确定目标的重写。
21.根据权利要求11所述的系统,包括用于执行下述操作的计算机代码:
使用W 作为针对计划的重写;
在W 中的每个目标处引起n 个并发的搜索问题,并迭代地找到更好的重写,其中,每次迭代选择一个目标Wi并检查Wi处的候选视图;以及
将更好的重写结果用于精简W 中的其他目标的搜索空间。

说明书全文

用于演进分析的系统

[0001] 本申请是于2012年6月27日提交的序列号为61664971的临时申请的非临时申请并要求该临时申请的优先权,该临时申请的内容通过引用而并入。

背景技术

[0002] 本发明涉及演进分析。
[0003] 知识驱动的企业采用了运用其业务的每个方面的进取型策略,并鼓励雇员在所收集的大量原始数据中找到价值。数据驱动的决策(DDD)没有给不受改变影响的知识驱动的企业留余地,只要在数据中存在足够的证据对其进行支持即可。组织收集数据作为可能具有未知价值的日志,因而,执行提取-变换-加载(ETL)由于ETL的高支出而不可行。ETL需要昂贵的正式过程,并需要数据看起来像什么以及价值驻留于何处的先验知识。典型地,日志是大的、平的且具有低结构,增加了典型数据库的ETL的复杂度,这是由于这需要一种数据库设计,其中其结构完全是预定义的。出于这些原因,许多数据从未被彻底地评估,并且需要数据分析者来分析现代组织所收集的不断增长的数据量并产生可付诸行动的见解。如所期望的那样,这种类型的分析本质上是高度探索性的并涉及下述迭代过程:数据分析者以对数据的初始查询开始,检查结果,然后重新制定查询,且甚至可以将附加数据源带进来,等等。典型地,这些查询涉及与数据的类型和分析的目的相联系的完善的、域专用的操作,例如,通过推特消息(tweets)来执行情感分析或者计算每个节点在大社交网络内的影响。
[0004] 大规模系统(诸如MapReduce(MR)和Hadoop)执行中间作业结果的进取型物化,以支持容错。当作业与由数据分析者提交的探索性查询相对应时,这些物化产生物化视图的大集合,其典型地捕获来自相同分析者的接续查询当中或者甚至跨越对类似假设进行测试的不同分析者的查询的公共计算。不出所料的是,如果MapReduce是原始框架,则其开源化身Hadoop或衍生系统(诸如供应说明性查询语言的Pig和Hive)已变成用于这种类型的分析的实际的工具。除了供应对大数据集的可扩缩性外,MR便于并入新数据源,这是由于不存在在最前面定义纲要和导入数据的需要,并且MR通过可在数据上应用的用户定义函数(UDF)的机制提供可扩展性。
[0005] UDF是处于在关系数据库和存储装置(诸如SQL)中可用的标准操作的范围外的那些UDF。典型UDF的示例是分类函数。这可能将user_id和某文本当作输入,然后从该文本提取一些实体(对象,专有名词)并将用户的周围文本分类为与那些实体有关的正面或负面情感。由于数据值是未知的,因此分析者最初通常缺乏对数据的完整理解,并将需要提出初始查询(工作流),然后随着当前答案通知查询的向着最终期望成果的下一演进,改善该初始查询。此外,诸如UDF之类的复杂函数通常需要通过反复试验(trial and error)而凭经验调谐,分析者通常将需要重复和改善分析任务多次,直到他们对关于数据的成果满意为止。
[0006] 由于单个MR作业的计算范围有限,因此科学家典型地把查询实现为将数据馈送至彼此的全体MR作业。相当频繁地,以说明性查询语言(例如,使用HiveQL和PigLatin)编写这种查询,并且然后将这种查询自动翻译成MR作业的集合。
[0007] 不管MR系统的普及度如何,查询性能仍是关键问题,其进而直接影响数据分析者可测试假设和汇集成结论的“速度”。可以通过减小MR的开销来实现一些增益,但是,性能的关键阻碍是吸收大数据集且跨越若干MR作业(实践中,公共类别)的查询的内在复杂度。先验调谐(例如,通过对数据重新组织或预处理)由于探索性分析的流动性和不确定性而相当富有挑战性。

发明内容

[0008] 在一个方面中,一种用于演进分析的系统通过下述操作来支持三个维度(分析工作流、用户和数据演进):通过使用物化为系统中的先前工作流执行运行的一部分的答案,重写工作流以便更高效。
[0009] 在另一方面中,一种用于演进分析的系统通过下述操作来支持该三个维度:通过使用物化为系统中的先前工作流执行运行的一部分的答案,重写工作流以便更高效。该系统将查询重写部件与由分析者使用的现有查询执行引擎进行集成。优化器采取以某说明性语言编写的查询并将其翻译成由MR作业构成的执行计划。通过将重写器14以及物化的视图元数据存储装置16进行集成来扩展目标执行引擎。
[0010] 上述系统的实现可以包括下面的一项或多项。针对作为大日志的基本数据来表达查询,并且查询包含UDF。每个MR作业对其向稳定存储装置(例如,Hadoop中的HDFS)的输出进行物化。在一个实施例中,优化器可以提供针对允许进入系统的UDF的代价估计。为了令重写器与目标引擎的优化器进行通信,将优化器进行扩展以生成在每个计划节点上具有下述两种类型的注释的计划:(1)其计算的逻辑表达式;以及(2)所估计的执行代价。重写器在搜索针对节点的输出的重写时在注释中使用逻辑表达式。该表达式由关系算子或UDF构成。对于在搜索期间找到的每个重写,重写器利用优化器来获得计划和所估计的代价。在查询执行期间,保留查询处理的所有副产品作为机会性物化视图,并将该所有副产品存储在系统中,变成其机会性物理设计配置的一部分。物化视图元数据存储装置包含与当前处于系统中的物化视图有关的信息(诸如视图定义)以及在查询优化中使用的标准数据统计。
[0011] 优选实施例的优势可以包括下面的一项或多项。系统较不复杂。从用户的度来看,重写是在没有用户的引导或暗示的情况下自动完成的。从系统的角度来看,物理设计是自动化的且在没有提供者的引导的情况下连续调谐的。系统在算法上以工作高效的方式找到最优重写。此外,实现了更快速的运算。从用户和系统的角度来看,该方法保证了系统使用系统中的现有人工产物提供分析者查询的可能的最便宜(最优)重写。从算法的角度来看,由于OPTCOST,该算法搜索最小量的解空间以找到最优重写,这是在不精简解空间的情况下完成的。工作流重写技术通过产生使用系统中的所有可用人工产物减少工作流执行时间的重写,以工作高效的方式找到演进工作流的最优重写。这导致从用户的观点来看更快的性能以及从系统提供者的观点来看回答查询所消耗的系统资源的量减少。乐观代价函数(optimistic cost function)OPTCOST的使用使工作流重写算法能够递增地搜索重写的空间,这使系统能够创建(激增)和搜索找到最优重写所必需的最小量的解空间。UDF的灰盒模型是具有表现的,但有利于重写。灰盒方法允许任何用户以少量的努力将UDF添加至系统。这允许系统搜索UDF的重写,并允许任何其他分析者使用该UDF。此外,系统操作者还可以选择将重写语言扩展成包括UDF,但利用更大量的努力。该模型比单独暗示更通用且更富有表现性。附图说明
[0012] 图1示出了可同时支持演进的三个维度的灵活系统。
[0013] 图2示出了示出控制流程的系统框架的示例性高级总览。
[0014] 图3示出了支持系统中的工作流的演进和新数据集的示例性过程。
[0015] 图4示出了系统中的新用户的演进的示例性过程。
[0016] 图5示出了重写的示例性过程。
[0017] 图6示出了内部处理和维持工作流以支持有效且高效的演进的示例性系统。
[0018] 图7示出了精简空间的示例性过程。

具体实施方式

[0019] 图1示出了可同时支持演进的三个维度的灵活系统,这三个维度是工作流、用户和数据。我们把该系统称为演进系统。演进查询工作流是由分析者随着他们迭代地探索数据而编写的工作流。演进工作流W的结果可能最初不产生期望的答案,这是由于用户缺乏对数据的足以能够将他/她的意图翻译成查询的理解。典型地,W将被重新制定为新工作流W’,并且该过程重复。工作流演进是通过下述操作来定义的:单个分析者对工作流进行调整、修改和重新目的化,以更好地对准工作流的结果,以便匹配分析者的意图。用户演进被定义为新分析者到达,该新分析者利用新工作流开始查询系统。数据演进被定义为下述过程:分析者将新数据源(例如,日志)添加至系统。
[0020] 在该系统中,工作流演进是通过下述操作来定义的:单个分析者对工作流进行调整、修改和重新目的化,以更好地对准工作流的结果,以便匹配分析者的意图。用户演进被定义为新分析者到达,该新分析者利用新工作流开始查询系统。数据演进被定义为下述过程:分析者将新数据源(例如,日志)添加至系统。
[0021] 系统通过下述操作来支持这三个维度:通过从系统中的先前查询/工作流执行运行无缝地保留和重用人工产物(中间和最终答案),重写工作流以便更高效,这减少了新查询的执行时间。这些人工产物可以被称作物化视图。
[0022] 典型地,在我们的使用情况中,分析者通过检查先前结果和修改原始工作流来修订工作流多次。这样,分析者具有下述自由度:随着他们向他们期望的答案移动,在任何方向上探索他们的直觉。工作流修改可以包括:添加新数据源;改变子目标;改变参数;或者利用UDF来替换工作流中的一些操作。一个实施例在我们的微基准中捕获这些类型的修改。分析者可以通过将新UDF添加至系统来扩展工作流的语言,然后,UDF变为对所有其他分析者来说可用。
[0023] 服务提供者是系统中的另一参与者,且作为平台管理者,想要确保良好的系统性能。提供者必须考虑最大化单个用户的性能相对于用户的社区的性能之间的折衷。提供者可以通过添加更多UDF来扩展重写的语言。利用UDF扩展重写语言可以通过找到更好的重写来使分析者受益,但使重写搜索空间更大,这增加了找到良好重写所耗费的时间。即使重写语言包括丰富且可扩展的变换集合,也将期望重写的语言没有工作流的语言昂贵。提供者还必须决定要保留哪些物化视图。由于存储空间不是无限的,因此需要垃圾收集器。
[0024] 在我们的场景中,查询很可能包括表达为UDF的复杂分析操作。为了在我们的系统中有效地重用先前的计算,我们需要一种用于在语义上对UDF进行建模的方式。
[0025] 对UDF进行建模的可能性可以包括对系统来说具有变化级别的开销和复杂度的白盒、灰盒或黑盒方法。白盒方法需要UDF的完整描述,使得系统理解UDF如何变换输入。当将新UDF添加至系统时,该方法具有针对分析者的高开销。黑盒方法具有针对分析者的非常低的开销,但产生对系统来说完全不透明的输出,因此可能不适于我们的重用结果的目标。由于UDF可以涉及对数据的相当复杂的操作,因此我们的系统采用灰盒方法,灰盒方法仅捕获由UDF执行的端对端变换。通过端对端变换,我们意指:我们的模型可以捕获输入和输出元组之间的细粒度依赖性,尽管我们的UDF模型不知道与计算有关的任何更多事情。这需要附加的工作来在添加新UDF时提供灰盒模型,但允许系统以有用的方式理解UDF的变换。另一方面,黑盒模型仅可以总体上跟踪输入和输出之间的粗粒度依赖性。
[0026] 在我们的灰盒模型中,UDF被编写为局部函数的合成(composition)。局部函数指代对单个元组或元组的单个组操作的函数。一个实施例将局部函数限制成执行下述操作:1. 丢弃或添加属性;
2. 通过应用过滤器来丢弃元组;
3. 执行元组的分组。
[0027] 灰盒模型不理解由局部函数执行的变换的性质,然而,其理解每个局部函数所供给的变换。可以通过合成由UDF中的每个局部函数执行的操作来获得UDF的端对端变换。
[0028] 遵循灰盒模型,通过下述三个属性来捕获计划中的每个节点的输入和输出:属性A、过滤器F和分组依据G。F是对输入数据应用的所有过滤器的联合,G是所应用的当前分组,并且A捕获纲要。可以使用局部函数的合成将UDF的端对端变换表达为输入到输出的变换。注意,该合成使用三个操作而不是实际计算且不是为了描述内部过程,来捕获端对端变换的语义。通过将这些与分组进行组合,模型可以表达丰富UDF以及关系算子,诸如选择、投影、联接、分组依据和聚合。在MapReduce中以标准方式对联接进行建模,其是关于公共关键字对多个关系进行分组。
[0029] 图2示出了示出控制流程的系统框架的示例性高级总览。系统通过下述操作来支持这三个维度:通过使用物化为系统中的先前工作流执行运行的一部分的答案,重写工作流以便更高效。系统把查询重写部件与由分析者10使用的现有查询执行引擎进行集成。优化器12采取以某说明性语言编写的查询并将其翻译成由MR作业构成的执行计划。针对作为大日志的基本数据来表达查询,并且查询包含UDF。每个MR作业把其向稳定存储装置(例如,Hadoop中的HDFS)的输出进行物化。在该实施例中,优化器可以提供针对许可进入系统的UDF的代价估计。通过将重写器14以及物化视图元数据存储装置16进行集成来扩展目标执行引擎。为了令重写器14与目标引擎的优化器进行通信,把优化器12扩展以生成在每个计划节点上具有下述两种类型的注释的计划:(1)其计算的逻辑表达式;以及(2)所估计的执行代价。重写器在搜索针对节点的输出的重写时在注释中使用逻辑表达式。该表达式由关系算子或UDF构成。对于在搜索期间找到的每个重写,重写器利用优化器来获得计划和所估计的代价。在查询执行期间,保留查询处理的所有副产品作为机会性物化视图,并将该所有副产品存储在系统中,变成其机会性物理设计配置的一部分。物化视图元数据存储装置包含与当前处于系统中的物化视图有关的信息(诸如视图定义)以及在查询优化中使用的标准数据统计。
[0030] 系统可以通过利用MR的内置容错机制作为机会性物理设计来极大地改进查询性能。每个MR作业涉及出于故障恢复的目的而对中间结果(映射器的输出、缩减器的输入和缩减器的输出)的物化。更一般地,多阶段作业(诸如,由Pig或Hive生成的作业)将涉及若干个这种物化。我们将这些物化结果称为查询执行的人工产物,并注意它们被自动地生成为查询处理的副产品。
[0031] 给定数据探索的演进性质,那么可能的是,每个查询具有与由相同分析者进行的先前查询的相似性,且甚至具有与对相同数据进行检查的其他分析者的查询的相似性。例如,若干数据分析者可以对特定类别的推特消息(例如,处于特定地理区域中的)执行情感分析,但在心里有不同假设。因此,在所生成的人工产物中捕获的由系统中的先前查询执行的计算可以对新查询来说相关。
[0032] 人工产物被视为机会性创建的物化视图,并使用它们来重写系统中的新查询。技术的机会性性质具有若干美好特性:物化视图被生成为查询执行的副产品,即,没有附加开销;视图的集合被自然地适应于当前工作负载;并且给定大规模分析系统典型地执行大量查询,那么由此得出,将存在同等大量的物化视图,且因此存在针对新查询找到良好重写的好机会。该技术在工业数据分析系统内的实现的结果指示可以极大节省查询执行时间:重写可以将执行时间减少多达两个量级。
[0033] 查询重写技术以MR系统内的机会性物化视图的场景为目标。算法采用由空间数据库激发的技术(具体地,度量空间中的最近邻搜索),以便进取性地精简候选重写的巨大空间并以高效方式生成最优重写。系统使用简单但足够富有表现力以捕获许多常见类型的UDF的灰盒UDF模型。这给我们供给了对UDF的有限理解,以实现对先前结果的有效重用。重写过程将查询和视图集合当作输入,并输出最优重写。该技术是工作高效的,这是因为其考虑了在特定假设下找到最优重写所必需的视图的最小集合。应用这些方法的实验结果使用真实世界数据和现实复杂查询来提供多达两个量级的执行时间改进。来自该方法的节省归因于移动少得多的数据,从而在可能时避免从原始日志重新读取数据的高支出并重用/重新目的化来自包括UDF的长期运行计算的结果。
[0034] 查询重写过程提出了两个主要挑战:如何搜索重写的大空间;以及如何推断包含UDF的视图(大规模数据分析中的公共特征)。可证明地找到最小代价重写的算法由非度量空间中的最近邻搜索激发。我们基于Hive来向对真实世界数据集的大范围实验研究呈现原型数据分析系统。结果展示:该方法可以导致对复杂数据分析查询的极大性能改进,从而把总执行时间减少平均61%且高达两个量级。
[0035] 图3示出了支持系统中的工作流的演进和新数据集的示例性过程。分析者编写一个或多个演进工作流100。系统在120中得到新UDF,并且系统在122中添加新数据集。系统在124中重写工作流,在110中执行来自工作流的演进工作流。在126中,系统给物化视图编目录。提供者可以使系统在128中丢弃物化视图。可替换地,可以在130中通过重写语言来扩展系统。
[0036] 图4示出了系统中的新用户的演进的示例性过程。最初,新分析者使用系统。分析者在140中编写工作流W。系统进而在142中重写工作流并在144中执行工作流。分析者在146中检查结果,并且如果他/她不满意,则分析者可以修订工作流并回环到140。可替换地,如果分析者满意,则该过程退出。
[0037] 图5示出了重写工作流的示例性过程。该过程在160中接收工作流W和一个或多个现有物化视图V作为输入。该过程在162中将W分解为n个子工作流。该过程在164中找到针对每个子工作流的最佳重写。然后,该过程在166中将重写进行组合以找到针对W的重写。
[0038] 图6示出了内部处理和维持工作流以支持有效且高效的演进的示例性系统。在170中,该过程接收工作流W和现有物化视图V作为输入。该过程在172中将W分解为n个子工作流。该过程在174中并发地枚举针对所有n个子工作流的重写。在176中,该过程在子工作流不能以代价c找到重写时精简搜索。该过程在178中维持到目前为止找到的最佳重写。接着,该过程在180中检验以查看是否所有搜索问题都已被精简。如果未都被精简,则该过程回环到174,并且否则,该过程在182中返回针对W的最佳重写。
[0039] 图7示出了对空间进行精简的示例性过程。在该过程中,在190中针对分析系统选择新使用情况。系统在192中同时捕获演进的3个维度(工作流、用户和数据)。该过程在194中应用有利于重写的灰盒UDF建模技术。该过程还在196中执行最优且工作高效的工作流重写。使用OptCost函数,该OptCost函数在198中允许对有希望的候选视图的递增枚举。然后,在200中,该过程重写搜索问题并将该问题转换为n个搜索问题,使用该n个搜索问题来对搜索空间进行精简。
[0040] 在一个实施例中,工作高效的查询重写算法在按使用视图的重写的代价的下限排序的每个目标处搜索空间。该下限不应当要求找到有效重写,这是由于这在计算上是昂贵的。我们定义了乐观代价函数OptCost(Wi,v),其将候选视图v和目标Wi当作输入并提供使用v 的Wi的重写ri的下限。ri是使用候选视图v的Wi的重写。下限的特性是:OptCost(Wi,v)≤Cost(ri)
下限代价的使用由度量空间中的最近邻查找问题激发,度量空间中,计算对象之间的距离可能在计算上是昂贵的,因此优选容易计算的交替距离函数,交替距离函数具有其始终小于或等于实际距离的期望特性。
[0041] 给定OptCost 函数,那么重写算法通过将问题分解为下述两个分量来找到W的最*优重写r :
1. BfRewrite执行针对W中的所有目标的重写的高效搜索,并输出针对Wn的全局最优重写。
2. ViewFinder 基于针对单个目标的候选视图的产生单个目标的低代价重写的潜力来枚举针对单个目标的候选视图,并被BfRewrite 利用。
[0042] BfRewrite算法产生可由在W中的多个目标处找到的重写构成的W的重写r。所计*算出的重写r 可证明地具有相同类别中的所有可能重写当中的最小代价。此外,该算法是* *
工作高效的:即使Cost(r)不是先验已知的,其也将从不会检查具有比最优代价Cost(r)更高的OptCost 的任何候选视图。直觉上,该算法仅探索搜索空间中的可证明地找到最优重选所需的部分。
[0043] 该算法开始于W自身是针对计划的最佳重写。然后,其在W 中的每个目标处引起n个并发的搜索问题,并以迭代方式工作以找到最佳重写。在每次迭代中,该算法选择一个目标Wi并检查Wi处的候选视图。该算法利用该步骤的结果来辅助精简W中的其他目标的搜索空间。为了工作高效,该算法必须正确地选择下一候选视图来进行检查。如我们下面将示出的那样,OptCost功能在选择下一目标以进行改善中起到必不可少的作用。
[0044] BfRewrite使用ViewFinder的实例来搜索每个目标处的重写的空间。ViewFinder是提供下述功能的黑盒:(1)Init创建按候选视图的OptCost排序的候选视图的搜索空间;(2)Peek提供下一候选视图的OptCost;以及(3)Refine尝试使用下一候选视图来找到目标的重写。Refine的一个重要特性是下述内容:不存在针对对应目标被找到的具有比Peek的值更小的代价的剩余重写。
[0045] ViewFinder 的关键特征是其OptCost 功能,该OptCost 功能被BFRewrite 使用以便以递增的方式探索空间并如4.1节中所示的那样精简非必要的子空间。如前所指出的,已知使用视图来重写查询是困难的问题。传统地,用于使用SPJG查询的类别的视图来重写查询的方法使用两阶段方法。精简阶段确定哪些视图与查询相关,并且在相关视图当中,包含所有所需联接谓词(predicate)的那些视图被称作完全解,否则,它们被称为部分解。典型地,这之后是合并阶段,合并阶段按所有联接顺序、使用所有可能的同等联接方法来联接部分解以形成附加相关视图。该算法重复,直到仅剩余对回答查询有用的那些视图。
[0046] 我们采取类似的方法,其中我们识别部分和完全解,然后接下来是合并阶段。当搜索目标的重写时,ViewFinder考虑候选视图C。C包括V中的视图以及通过使用Merge函数“合并”V 中的视图而形成的视图,该Merge函数是标准视图合并过程的实现。传统方法合并所有部分解以创建完全解,并继续直到没有部分解剩余。这以指数方式“激增”候选视图的空间。该方法在需要时允许空间的逐步激增,这导致比所考虑的少得多的候选视图。
[0047] 在没有早期终止条件的情况下,现有方法本来会在所有目标处详尽地探索空间。因此,我们期望一种重写算法,其可以枚举空间并仅按需要那么多以递增方式探索,从而如BfRewrite所请求的那样频繁地停止和重新开始搜索。我们注意到,尽管可能存在针对目标的等效重写,但是可能从不要求ViewFinder找到它。
[0048] 在算法4中呈现了ViewFinder。在高级别处,ViewFinder 是有状态的,这使BfRewrite 能够在每个目标处开始、停止和重新开始递增搜索。ViewFinder 使用候选视图的优先级队列来维持状态。ViewFinder 实现了我们接下来描述的三个函数Init、Peek和Refine。
[0049] Init函数利用query 来对ViewFinder 的实例进行例示,其中,目标的逻辑表示Wi∈W和物化视图的集合V存在于系统中。接着,将query指派给q,并使用OptCost(q,v)作为排序关键词将V中的每个视图添加至优先级队列。在Init的结尾处,PQ中的候选视图仅包括V中的那些视图。
[0050] Peek 函数被BfRewrite使用以获得PQ中的首部项的OptCost。当BfRewrite 要求ViewFinder 检查下一候选视图时,调用Refine 函数。在该阶段处,ViewFinder 将首部项v 弹出PQ。然后,ViewFinder 通过将v 与先前弹出的候选视图(即,Seen中的视图)合并来生成新候选视图的集合M,从而递增地激增候选视图的空间。注意,Seen包含OptCost 小于或等于v 的OptCost 的候选视图。M 仅保留尚未处于Seen 中的那些候选,这些候选然后被插入到PQ中。稍后作为定理而提供的OptCost的特性是:M中的候选视图所具有的OptCost大于v 的OptCost,并且因此,这些视图都不应当在v 之前已被检查。该特性实现了候选视图的空间的逐步激增。然后,v被添加到Seen。
[0051] 如果v被猜测为完全的,则我们通过调用RewriteEnum函数来尝试使用v找到q的重写。在通过RewriteEnum找到的重写当中,作为结果,将最便宜的重写返回到BfRewrite。为了确定视图v相对于查询q 是部分的还是完全的,我们采取乐观方法。该方法表示下述猜测:使用v 的完全重写存在。猜测需要下面的必要条件:视图必须满足参与q的重写;尽管这些条件不足以确认使用v 的等效重写的存在。
(a)v 包含q所需要的所有属性;或者包含产生q中的不处于v 中的那些属性的所有必需属性;
(b)v 包含比q 弱的选择谓词;
(c)v 比q 更不聚合。
[0052] 函数GuessComplete(q,v)执行这些检验,并在v满足相对于q的特性的情况下返回真。这些条件部分指定确定有效重写存在的需求,因此,猜测可能导致假肯定,但从不会导致假否定。
[0053] RewriteEnum算法尝试使用被猜测是完全的视图来产生查询的有效重写。所返回的重写表示使用v的q的所有可能等效重写当中最便宜的重写。重写的代价由Cost函数评估,且与实现重写的最便宜执行计划相对应。等效性是通过确保重写和查询包含相同属性、过滤器和分组依据来确定的。
[0054] 我们通过使用LR对被猜测为的完全视图v应用补偿来枚举q的等效重写。我们通过下述操作来完成这一点:生成所需补偿的所有排列并针对等效性进行测试,这相当于在给定LR的情况下所有可能重写的强力枚举。这造成了系统将|LR|保持为较小的情况。当LR被限制于已知、固定的算子集合时,其可能足以检查重写尝试的多项式数,如针对涉及分组依据的简单聚合的特定情况的[?]中那样。这些方法不适用于该情况,这是由于当系统导致总体系统收益时,系统应当具有利用UDF从LW扩展LR的灵活性。
[0055] 给定找到有效重写的计算代价,那么BfRewrite 使用两种策略来限制RewriteEnum 算法的调用。首先,我们避免必须在每个候选视图上应用RewriteEnum,基于早先描述的三个特性来针对视图的完整性进行猜测。其次,我们通过确定使用v的重写(如果存在这种重写的话)的代价的下限来延迟RewriteEnum对每个完全视图的应用。对于下限,我们使用OptCost,其在下一节中描述。
[0056] 系统基于候选视图的提供低代价重写的潜力来执行候选视图的枚举。OptCost依赖于Cost函数的不可归入的代价特性,以达到下限。给定v被猜测为相对于q完全,那么q和v 的属性、过滤器和分组依据表示之间的所设置的差异被称为定位。定位表示可将v 的表示变换成q的表示的假设局部函数。注意,包含这种局部函数的UDF可能实际上不存在。我们必须调用产生包含来自LR的补偿的重写的RewriteEnum。补偿中局部函数的合成将v的表示变换成q。最后,注意,定位的存在保证了v将导致有效重写,出于被猜测为完全可导致假肯定的相同原因。这两者均假定:可以彼此独立地将所需的补偿运算应用于v。
[0057] OptCost函数具有下述两个特性:其是由RewriteEnum(q,v)返回的任何计划的代价的下限,且在计算上不昂贵。如果v 是物化视图,则c 1等于访问v 的代价。否则,如果v产生自视图的合并,则c 1是访问v的构成视图的总代价。如果v尚不是物化的,则我们将c2表示为合并v 中的构成视图的代价(即,创建代价),否则,如果v已经是物化的,则c2 = 0。我们将c3表示为在v上的定位中应用最不昂贵的运算的代价,其通过调用Cost以获得在v上的定位中执行每个运算的代价而获得。通过min(Cost(x,v))来获得c3,使得x 是定位中的运算。
[0058] v 相对于q 的OptCost由下式给定:c = c1 + c2 + c3,其中,c 小于使用v 的重写的任何计划的代价。如果v 相对于q 是部分的,则c3 = 0,这是由于不应当应用补偿。
[0059] 优化器可以生成下述计划:其中,可以在对一些补偿进行物化之前将其推送到候选视图v 中。在这种情况下,OptCost 可以提供更弱的下限,这是由于其可以仅考虑访问v的所有构成视图的代价(c1)加上在v的任何构成视图上或可在创建v 的过程中创建的任何中间视图上的定位中应用最不昂贵运算的最小代价c3'。如果v 相对于q 是部分的,则OptCost 仅包括c1。一般地,c 是关于由使用v 的q 的等效重写r(如果其存在的话)产生的任何计划的代价的下限。为了找到最低代价r,RewriteEnum 应用补偿运算的所有排列,以实现等效重写。不管在补偿中使用多少运算,通过定义1,应用补偿的代价必须至少与定位中的最便宜运算c3同样昂贵。
[0060] 接着,针对涉及补偿的下推的情况分析OptCost函数。对于该情况,v 的构成视图的合并的排序以及可适用的补偿二者到现在为止均未知。下限保持,这是由于其未作出关于v 中的构成视图的排序(即,通过使用c1)以及r 的任何计划中的任何补偿算子的位置(即,c3')的任何假设。M 中的不处于Seen 中的每个候选视图的OptCost 大于或等于v 的OptCost。
[0061] 下面示出算法1-4的伪代码。
[0062] 上述方法利用机会性物化视图来显著地加速大规模数据分析系统中的查询。借助于UDF模型和下限OptCost函数,BfRewrite算法在工作高效的同时产生最优重写。针对现实场景的各种演进查询和所展示的极大性能改进具有平均值61%且高达两个量级。系统可以识别最有益的视图以保留。考虑到这些决定受视图维护代价影响,可以从总体系统利益的视点开发视图保留策略。
[0063] 本发明可以以硬件固件软件或者这三者的组合实现。优选地,本发明被实现在具有处理器、数据存储系统、易失性和非易失性存储器和/或存储元件、至少一个输入设备和至少一个输出设备的可编程计算机上执行的计算机程序中。
[0064] 通过示例,接下来讨论用于支持该系统的计算机的框图。该计算机优选地包括通过CPU总线耦合的处理器、随机存取存储器(RAM)、程序存储器(优选地,可写入只读存储器(ROM),诸如闪速ROM)和输入/输出(I/O)控制器。该计算机可以可选地包括硬盘驱动控制器,该硬盘驱动控制器耦合至硬盘和CPU总线。硬盘可以用于存储应用程序(诸如本发明)和数据。可替换地,应用程序可以被存储在RAM或ROM中。I/O控制器通过I/O总线耦合至I/O接口。I/O接口通过通信链路(诸如串行链路、局域网、无线链路和并行链路)以模拟或数字的形式接收和发送数据。可选地,显示器、键盘和指点设备(鼠标)还可以连接至I/O总线。可替换地,分离的连接(分离的总线)可以被用于I/O接口、显示器、键盘和指点设备。可以对可编程处理系统预编程,或者可以通过从另一源(例如,软盘、CD-ROM或另一计算机)下载程序来对其进行编程(和重新编程)。
[0065] 每个计算机程序被有形地存储在可被通用或专用可编程计算机读取的机器可读存储介质或设备(例如,程序存储器或磁盘)中,以当存储介质或设备被计算机读取以执行本文描述的过程时配置和控制计算机的操作。本发明的系统还可以被视为体现在被配置有计算机程序的计算机可读存储介质中,其中,如此配置的存储介质使计算机以特定且预定义的方式操作以便执行本文描述的功能。
[0066] 本领域技术人员现在可以从上面的描述中意识到,可以以多种形式实现本发明的宽泛教导。如可意识到的那样,在不脱离本发明的精神的情况下,可以按与本文描述和要求保护的顺序不同的顺序执行所公开和要求保护的方法的步骤。因此,尽管本发明已经结合其特定示例加以描述,但是本发明的真正范围不应被如此限制,这是由于在研究了附图、说明书和所附权利要求后,其他修改将变得对本领域技术人员来说显而易见。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈