用于演进分析的系统的制作方法

文档序号:6533175阅读:159来源:国知局
用于演进分析的系统的制作方法
【专利摘要】一种用于演进分析的系统通过下述操作来支持三个维度(分析工作流、用户和数据):通过使用物化为系统中的先前工作流执行运行的一部分的答案,重写工作流以便更高效。
【专利说明】用于演进分析的系统
[0001]本申请是于2012年6月27日提交的序列号为61664971的临时申请的非临时申请并要求该临时申请的优先权,该临时申请的内容通过弓I用而并入。

【背景技术】
[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]优选实施例的优势可以包括下面的一项或多项。系统较不复杂。从用户的角度来看,重写是在没有用户的引导或暗示的情况下自动完成的。从系统的角度来看,物理设计是自动化的且在没有提供者的引导的情况下连续调谐的。系统在算法上以工作高效的方式找到最优重写。此外,实现了更快速的运算。从用户和系统的角度来看,该方法保证了系统使用系统中的现有人工产物提供分析者查询的可能的最便宜(最优)重写。从算法的角度来看,由于0PTC0ST,该算法搜索最小量的解空间以找到最优重写,这是在不精简解空间的情况下完成的。工作流重写技术通过产生使用系统中的所有可用人工产物减少工作流执行时间的重写,以工作高效的方式找到演进工作流的最优重写。这导致从用户的观点来看更快的性能以及从系统提供者的观点来看回答查询所消耗的系统资源的量减少。乐观代价函数(optimistic cost funct1n)0PTC0ST的使用使工作流重写算法能够递增地搜索重写的空间,这使系统能够创建(激增)和搜索找到最优重写所必需的最小量的解空间。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]典型地,在我们的使用情况中,分析者通过检查先前结果和修改原始工作流来修订工作流多次。这样,分析者具有下述自由度:随着他们向他们期望的答案移动,在任何方向上探索他们的直觉。工作流修改可以包括:添加新数据源;改变子目标;改变参数;或者利用m)F来替换工作流中的一些操作。一个实施例在我们的微基准中捕获这些类型的修改。分析者可以通过将新UDF添加至系统来扩展工作流的语言,然后,UDF变为对所有其他分析者来说可用。
[0023]服务提供者是系统中的另一参与者,且作为平台管理者,想要确保良好的系统性能。提供者必须考虑最大化单个用户的性能相对于用户的社区的性能之间的折衷。提供者可以通过添加更多UDF来扩展重写的语言。利用UDF扩展重写语言可以通过找到更好的重写来使分析者受益,但使重写搜索空间更大,这增加了找到良好重写所耗费的时间。即使重写语言包括丰富且可扩展的变换集合,也将期望重写的语言没有工作流的语言昂贵。提供者还必须决定要保留哪些物化视图。由于存储空间不是无限的,因此需要垃圾收集器。
[0024]在我们的场景中,查询很可能包括表达为UDF的复杂分析操作。为了在我们的系统中有效地重用先前的计算,我们需要一种用于在语义上对UDF进行建模的方式。
[0025]对UDF进行建模的可能性可以包括对系统来说具有变化级别的开销和复杂度的白盒、灰盒或黑盒方法。白盒方法需要UDF的完整描述,使得系统理解UDF如何变换输入。当将新UDF添加至系统时,该方法具有针对分析者的高开销。黑盒方法具有针对分析者的非常低的开销,但产生对系统来说完全不透明的输出,因此可能不适于我们的重用结果的目标。由于UDF可以涉及对数据的相当复杂的操作,因此我们的系统采用灰盒方法,灰盒方法仅捕获由UDF执行的端对端变换。通过端对端变换,我们意指:我们的模型可以捕获输入和输出元组之间的细粒度依赖性,尽管我们的UDF模型不知道与计算有关的任何更多事情。这需要附加的工作来在添加新M)F时提供灰盒模型,但允许系统以有用的方式理解UDF的变换。另一方面,黑盒模型仅可以总体上跟踪输入和输出之间的粗粒度依赖性。
[0026]在我们的灰盒模型中,UDF被编写为局部函数的合成(composit1n)。局部函数指代对单个元组或元组的单个组操作的函数。一个实施例将局部函数限制成执行下述操作:
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扩展以生成在每个计划节点上具有下述两种类型的注释的计划:(I)其计算的逻辑表达式;以及(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分解为η个子工作流。该过程在164中找到针对每个子工作流的最佳重写。然后,该过程在166中将重写进行组合以找到针对W
的重写。
[0038]图6示出了内部处理和维持工作流以支持有效且高效的演进的示例性系统。在170中,该过程接收工作流W和现有物化视图V作为输入。该过程在172中将W分解为η个子工作流。该过程在174中并发地枚举针对所有η个子工作流的重写。在176中,该过程在子工作流不能以代价c找到重写时精简搜索。该过程在178中维持到目前为止找到的最佳重写。接着,该过程在180中检验以查看是否所有搜索问题都已被精简。如果未都被精简,则该过程回环到174,并且否则,该过程在182中返回针对W的最佳重写。
[0039]图7示出了对空间进行精简的示例性过程。在该过程中,在190中针对分析系统选择新使用情况。系统在192中同时捕获演进的3个维度(工作流、用户和数据)。该过程在194中应用有利于重写的灰盒UDF建模技术。该过程还在196中执行最优且工作高效的工作流重写。使用OptCost函数,该OptCost函数在198中允许对有希望的候选视图的递增枚举。然后,在200中,该过程重写搜索问题并将该问题转换为η个搜索问题,使用该η个搜索问题来对搜索空间进行精简。
[0040]在一个实施例中,工作高效的查询重写算法在按使用视图的重写的代价的下限排序的每个目标处搜索空间。该下限不应当要求找到有效重写,这是由于这在计算上是昂贵的。我们定义了乐观代价函数办W,其将候选视图K和目标K当作输入并提供使用K的Wi的重写r,.的下限。r,.是使用候选视图K的Wj的重写。下限的特性是:
OptCost (Wi, v) ^ Cost Cri)
下限代价的使用由度量空间中的最近邻查找问题激发,度量空间中,计算对象之间的距离可能在计算上是昂贵的,因此优选容易计算的交替距离函数,交替距离函数具有其始终小于或等于实际距离的期望特性。
[0041]给定OptCost函数,那么重写算法通过将问题分解为下述两个分量来找到r的最优重写
1.BfRewrite执行针对F中的所有目标的重写的高效搜索,并输出针对Wn的全局最优重写。
2.ViewFinder基于针对单个目标的候选视图的产生单个目标的低代价重写的潜力来枚举针对单个目标的候选视图,并被BfRewri te利用。
[0042]算法产生可由在/f中的多个目标处找到的重写构成的W的重写r。所计算出的重写Z可证明地具有相同类别中的所有可能重写当中的最小代价。此外,该算法是工作高效的:即使不是先验已知的,其也将从不会检查具有比最优代价更高的办iCbW的任何候选视图。直觉上,该算法仅探索搜索空间中的可证明地找到最优重选所需的部分。
[0043]该算法开始于r自身是针对计划的最佳重写。然后,其在r中的每个目标处引起η个并发的搜索问题,并以迭代方式工作以找到最佳重写。在每次迭代中,该算法选择一个目标Wj并检查Wj处的候选视图。该算法利用该步骤的结果来辅助精简r中的其他目标的搜索空间。为了工作高效,该算法必须正确地选择下一候选视图来进行检查。如我们下面将示出的那样,OptCost功能在选择下一目标以进行改善中起到必不可少的作用。
[0044]BfRewrite使用ViewFinder的实例来搜索每个目标处的重写的空间。 ViewFinder是提供下述功能的黑盒:(I)Init创建按候选视图的办if1si排序的候选视图的搜索空间;
(2)Peek提供下一候选视图的办iCbW ;以及(3)Refine尝试使用下一候选视图来找到目标的重写。Refine的一个重要特性是下述内容:不存在针对对应目标被找到的具有比Peek的值更小的代价的剩余重写。
[0045]ViewFinder的关键特征是其办tCos ?功能,该办tCos ?功能被BFRewri ?e使用以便以递增的方式探索空间并如4.1节中所示的那样精简非必要的子空间。如前所指出的,已知使用视图来重写查询是困难的问题。传统地,用于使用SPJG查询的类别的视图来重写查询的方法使用两阶段方法。精简阶段确定哪些视图与查询相关,并且在相关视图当中,包含所有所需联接谓词(predicate)的那些视图被称作完全解,否则,它们被称为部分解。典型地,这之后是合并阶段,合并阶段按所有联接顺序、使用所有可能的同等联接方法来联接部分解以形成附加相关视图。该算法重复,直到仅剩余对回答查询有用的那些视图。
[0046]我们采取类似的方法,其中我们识别部分和完全解,然后接下来是合并阶段。当搜索目标的重写时,ViewFinder考虑候选视图C。C包括K中的视图以及通过使用Merge函数“合并” K中的视图而形成的视图,该Merge函数是标准视图合并过程的实现。传统方法合并所有部分解以创建完全解,并继续直到没有部分解剩余。这以指数方式“激增”候选视图的空间。该方法在需要时允许空间的逐步激增,这导致比所考虑的少得多的候选视图。
[0047]在没有早期终止条件的情况下,现有方法本来会在所有目标处详尽地探索空间。因此,我们期望一种重写算法,其可以枚举空间并仅按需要那么多以递增方式探索,从而如BfRewrite所请求的那样频繁地停止和重新开始搜索。我们注意到,尽管可能存在针对目标的等效重写,但是可能从不要求ViewFinder找到它。
[0048]在算法4中呈现了 FiewFinder。在高级别处,KiewFinder是有状态的,这使BfRewrite能够在每个目标处开始、停止和重新开始递增搜索。ViewFinder使用候选视图的优先级队列来维持状态。ViewFinder实现了我们接下来描述的三个函数Init、Peek和Refine。
[0049]Init函数利用来对ViewFinder的实例进行例示,其中,目标的逻辑表示Vi ^ F和物化视图的集合K存在于系统中。接着,将指派给<7,并使用OptCost (q, v)作为排序关键词将K中的每个视图添加至优先级队列。在Init的结尾处,PQ中的候选视图仅包括V中的那些视图。
[0050]Peek函数被BfRewri te使用以获得/?*中的首部项的OptCost。当BfRewri te要求ViewFinder检查下一候选视图时,调用Refine函数。在该阶段处,ViewFinder将首部项V弹出PQ。然后,ViewFinder通过将r与先前弹出的候选视图(即,fee/?中的视图)合并来生成新候选视图的集合#,从而递增地激增候选视图的空间。注意,包含办iCbW小于或等于r的OptCost的候选视图。#仅保留尚未处于中的那些候选,这些候选然后被插入到/?中。稍后作为定理而提供的OptCost的特性是:#中的候选视图所具有的OptCost大于K的办iibw,并且因此,这些视图都不应当在K之前已被检查。该特性实现了候选视图的空间的逐步激增。然后,V被添加到Seen。
[0051]如果^被猜测为完全的,则我们通过调用函数来尝试使用^找到<7的重写。在通过TfefrriteEnum找到的重写当中,作为结果,将最便宜的重写返回到te。为了确定视图r相对于查询7是部分的还是完全的,我们采取乐观方法。该方法表示下述猜测:使用r的完全重写存在。猜测需要下面的必要条件:视图必须满足参与7的重写;尽管这些条件不足以确认使用r的等效重写的存在。
(a>包含所需要的所有属性;或者包含产生中的不处于r中的那些属性的所有必需属性;
(b)^包含比弱的选择谓词;
(c)^比<7更不聚合。
[0052]^MlGuessComplete、q, v)执行这些检验,并在^满足相对于<7的特性的情况下返回真。这些条件部分指定确定有效重写存在的需求,因此,猜测可能导致假肯定,但从不会导致假否定。
[0053]RewriteEnum算法尝试使用被猜测是完全的视图来产生查询的有效重写。所返回的重写表示使用r的^的所有可能等效重写当中最便宜的重写。重写的代价由Cost函数评估,且与实现重写的最便宜执行计划相对应。等效性是通过确保重写和查询包含相同属性、过滤器和分组依据来确定的。
[0054]我们通过使用4对被猜测为的完全视图K应用补偿来枚举7的等效重写。我们通过下述操作来完成这一点:生成所需补偿的所有排列并针对等效性进行测试,这相当于在给定4的情况下所有可能重写的强力枚举。这造成了系统将I4I保持为较小的情况。当4被限制于已知、固定的算子集合时,其可能足以检查重写尝试的多项式数,如针对涉及分组依据的简单聚合的特定情况的[?]中那样。这些方法不适用于该情况,这是由于当系统导致总体系统收益时,系统应当具有利用UDF从~扩展4的灵活性。
[0055]给定找到有效重写的计算代价,那么BfRewrite使用两种策略来限制RewriteEnum算法的调用。首先,我们避免必须在每个候选视图上应用RewriteEnum,基于早先描述的三个特性来针对视图的完整性进行猜测。其次,我们通过确定使用r的重写(如果存在这种重写的话)的代价的下限来延迟对每个完全视图的应用。对于下限,我们使用办其在下一节中描述。
[0056]系统基于候选视图的提供低代价重写的潜力来执行候选视图的枚举。OptCost依赖于Cbw函数的不可归入的代价特性,以达到下限。给定皮猜测为相对于^完全,那么^和^的属性、过滤器和分组依据表示之间的所设置的差异被称为定位。定位表示可将r的表示变换成7的表示的假设局部函数。注意,包含这种局部函数的UDF可能实际上不存在。我们必须调用产生包含来自Lr的补偿的重写的RewriteEnum。补偿中局部函数的合成将r的表示变换成&最后,注意,定位的存在保证了 r将导致有效重写,出于被猜测为完全可导致假肯定的相同原因。这两者均假定:可以彼此独立地将所需的补偿运算应用于^
[0057]OptCost函数具有下述两个特性:其是由Rewri teEnum (q, v)返回的任何计划的代价的下限,且在计算上不昂贵。如果r是物化视图,则C1等于访问r的代价。否则,如果r产生自视图的合并,则C1是访问r的构成视图的总代价。如果r尚不是物化的,则我们将C2表示为合并K中的构成视图的代价(即,创建代价),否则,如果K已经是物化的,则C2 = O。我们将C3表示为在K上的定位中应用最不昂贵的运算的代价,其通过调用Cost以获得在K上的定位中执行每个运算的代价而获得。通过minWosiCr,κ))来获得C3,使得ζ是定位中的运算。
[0058]r相对于<7的OptCost由下式给定:c = C1 + C2 + C3,其中,c小于使用r的重写的任何计划的代价。如果r相对于<7是部分的,则C3 = O,这是由于不应当应用补偿。
[0059]优化器可以生成下述计划:其中,可以在对一些补偿进行物化之前将其推送到候选视图r中。在这种情况下,OptCost可以提供更弱的下限,这是由于其可以仅考虑访问r的所有构成视图的代价(C1)加上在r的任何构成视图上或可在创建r的过程中创建的任何中间视图上的定位中应用最不昂贵运算的最小代价c/。如果r相对于q是部分的,则办iCbW仅包括Cl。一般地,c是关于由使用^的的等效重写r (如果其存在的话)产生的任何计划的代价的下限。为了找到最低代价r, RewriteEnum应用补偿运算的所有排列,以实现等效重写。不管在补偿中使用多少运算,通过定义1,应用补偿的代价必须至少与定位中的最便宜运算C3同样昂贵。
[0060]接着,针对涉及补偿的下推的情况分析办if1si函数。对于该情况,K的构成视图的合并的排序以及可适用的补偿二者到现在为止均未知。下限保持,这是由于其未作出关于r中的构成视图的排序(即,通过使用C1)以及r的任何计划中的任何补偿算子的位置(即,C3' )的任何假设。M中的不处于fee/?中的每个候选视图的OptCost大于或等于r的OptCost ο
[0061]下面示出算法1-4的伪代码。

Algorithfii I Oprimal re?Tite of W using ViewFinder

1: fiiurl1ii EiiRj-_Wft|T1-:<If, Vi
2: for tatii W\ € W doIsii Step

3: ¥lEWFiNDERiKIT4lii, V)
4: bstPlMs^ original plan to jroiace Wi
5; bstPlkCst.^ -hCost(Wi)"> flmi

if- cttil fin*

7: repeat

8: (HO, d) 1- FlKDNEXlMlNTARGHTiiriil)

9: IHFIMElARGETiirf) if 十 NULL
10; until Wi MTLL
11:W uxmg iis*iP!,nh


12: end fiiiiict1ii

【权利要求】
1.一种用于支持演进查询的方法,包括: 保留来自先前查询或工作流执行运行的人工产物(物化视图); 提供用户定义函数(M)F)的灰盒模型以支持针对UDF的重写的搜索; 自动地产生使用人工产物减少工作流执行时间的重写;以及 递增地搜索要创建(激增)的重写的空间并搜索最小量的解空间以找到最优重写。
2.根据权利要求1所述的方法,包括:支持沿包括工作流、用户和数据演进的三个维度的同时演进。
3.根据权利要求1所述的方法,包括:将重写语言扩展成包括UDF。
4.根据权利要求1所述的方法,包括:确定乐观代价函数OptCost(W1, V),其将候选视图r和目标Zfi当作输入;以及提供使用r的Wi的重写r,.的下限,其中r,.是使用候选视图r的巧的重写,并且其中下限的特性被确定为:
OptCost (Wi, v) ^ Cost Cri)。
5.根据权利要求4所述的方法,包括:创建按办Kosi排序的候选视图的搜索空间;提供下一候选视图的办iCbW ;以及使用所述下一候选视图来确定目标的重写。
6.根据权利要求1所述的方法,包括通过下述操作来确定r的最优重写Z: 执行针对r中的所有目标的重写的高效搜索,并输出针对黾的全局最优重写;以及基于针对单个目标的一个或多个候选视图的产生所述目标的低代价重写的潜力来枚举针对单个目标的一个或多个候选视图。
7.根据权利要求1所述的方法,包括:产生由在r中的多个目标处找到的重写构成的r的重写其中,所计算的Z具有在相同类别中的重写当中最小的代价。
8.根据权利要求1所述的方法,包括: 使用r作为针对计划的重写; 在r中的每个目标处引起/7个并发的搜索问题,并迭代地找到更好的重写,其中,每次迭代选择一个目标K并检查Zfi处的候选视图;以及 把更好的重写结果用于精简r中的其他目标的搜索空间。
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所述的系统,包括用于执行下述操作的计算机代码:确定乐观代价函数办(W1, V),其将候选视图K和目标Wj当作输入;以及提供使用K的Wj的重写r,.的下限,其中r,.是使用候选视图r的巧的重写,并且其中下限的特性被确定为:
OptCost (Wi, v) ^ Cost Cri)。
20.根据权利要求19所述的系统,包括用于执行下述操作的计算机代码:创建按OptCost排序的候选视图的搜索空间;提供下一候选视图的OptCost ;以及使用所述下一候选视图来确定目标的重写。
21.根据权利要求11所述的系统,包括用于执行下述操作的计算机代码: 使用r作为针对计划的重写; 在r中的每个目标处引起/7个并发的搜索问题,并迭代地找到更好的重写,其中,每次迭代选择一个目标K并检查Zfi处的候选视图;以及 将更好的重写结果用于精简r中的其他目标的搜索空间。
【文档编号】G06F17/00GK104137095SQ201380011695
【公开日】2014年11月5日 申请日期:2013年5月31日 优先权日:2012年6月27日
【发明者】V.H.哈奇古穆斯, J.桑卡拉纳拉亚南, J.勒菲弗尔, J.塔特穆拉, N.波利佐蒂斯 申请人:美国日本电气实验室公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1