论文部分内容阅读
随着互联网技术和物联网技术的高速发展,各行各业的数据量都在呈爆发式增长。海量数据蕴含着巨大的价值,为了从海量数据中提取出有价值的信息,需要对海量数据进行统计分析。在常规的海量数据应用中,通常使用类SQL查询语句来完成对海量数据的统计分析。海量数据的统计分析主要有两个场景,分别是对静态数据集的统计分析和对增量数据集的统计分析。对于静态数据集的统计分析,通常会一次运行一批查询语句。这些查询具有以下三个特征:每个查询覆盖不同的查询区域;多个查询之间存在大量的公共查询区域;查询集中在一些热点查询区域。然而,现有的查询优化方法比较简单,并没有很好的利用查询的特征,忽略了多个查询之间可能存在的复用关系,容易产生冗余计算,影响计算效率。对于增量数据集的统计分析,通常会周期性地运行一批查询语句。由于数据集在不断扩增,所以之前的计算结果已经过时了,因此每次都需要重新对数据集进行计算。本文针对多区域查询优化问题和增量计算优化问题展开了深入的研究,并提出了相应的优化方法,这些优化方法可以有效地减少冗余计算,提高计算效率,现将本文的工作总结如下:(1)为了提高多区域查询的处理效率,本文根据多区域查询的特点,设计了一种基于区域聚类的MapReduce物化策略,这种物化策略利用了区域查询之间的区域重叠性和查询集的区域聚集性。这种物化策略的基本思想是区域聚类,首先对查询空间进行划分,然后利用本文提出的基于贪心策略的聚类算法来完成查询聚类,将相似程度较高的多个查询分在一个组中,每组产生一个物化视图。本文提出的方法可以避免物化视图的恶性膨胀,使得在较小的区域内进行查询处理。最后进行了相应的验证性实验,实验结果表明本文提出的方法可以有效地提升查询集的执行效率。(2)为了提高增量查询效率,本文提出了基于可合并算子的增量计算复用模型并设计实现了一种基于Spark平台的增量查询优化系统。其主要思路为:通过归并历史计算结果和新增数据的计算结果来得到最终的计算结果。为了能够复用之前的计算结果,本文定义了缓存元信息并设计了计算匹配方法。本文建立了缓存复用成本代价模型,用于评估缓存的复用成本。为了重写执行计划生成增量的执行计划,本文提出了执行计划重写规则。为了实现增量查询优化,本文还对Spark进行了扩展。由于经典的缓存替换算法并不适用于本系统,本文还提出了基于综合价值的缓存替换算法。最后通过实验验证了本文提出的增量查询优化系统能够有效地提高增量查询效率。