论文部分内容阅读
高效的查询执行效率是数据仓库管理系统开发时最大的关注点。最近的研究表明,底层数据以列存储的方式进行组织,能够更好地适应数据仓库管理系统面向查询的特征,能够在执行过程中避免抽取查询所不需要的列值,引起多余的I/O开销。除此之外,列存储还拥有比行存储更高的压缩比。论文研究了数据仓库技术、列存储技术,查询执行引擎中的核心模块。结合数据仓库列存储的特征,对现有的查询执行引擎进行了结构与策略两个方面的优化与实现,其中结构方面包括传递块结构的优化与实现以及操作结点的优化与实现,而在策略方面则设计并实现了基于操作结点相对位置的重用度估计模型以及基于该模型的重用缓冲区调度策略。本文研究内容如下:1.论文首先分析了数据仓库以及列存储的特征,着重讨论了MonetDB、C-Store及InfoBright的存储方式与查询执行方式,并总结它们的特征与不足之处。2.然后,论文对列存储查询执行引擎中的核心元素进行了详细地介绍,其中包括查询执行的基本对象——物理执行树,物理执行树的构成单元——操作结点、查询执行时数据在内存中的组织形式以及能够完成数据处理与传递的迭代器及其网络。3.接着,论文对现有列存储查询执行引擎进行了结构方面的优化,其中包括对传递块的结构以及操作结点内部结构的优化设计与实现。对传递块结构的优化主要包括设计并实现了不仅能够存储rowid以及不同类型列值,还能够通过位置关系实现低开销快速元组重构的传递块结构。而对操作结点内部结构的优化主要包括1)以工厂模式的方式进行操作结点开发从而减少重复判断;2)利用数据有序的特性进行谓词选择预判以减少多余判断;3)改进哈希连接结点使其能够灵活适应事实表与维表的位置变换;4)改进传统排序连接操作使其能利用数据仓库中数据有序以及事实表与维表连接的特征;5)设计并实现了同时适用于定长列值与变长列值的列值抽取方法;6)设计并实现了能够灵活适应19种情况的打印操作结点;7)根据“将数组放入函数”的原则对执行引擎进行了整体优化。同时,论文对现有列存储查询执行引擎还进行了策略方面的优化设计与实现,主要包括1)提出并实现了基于操作结点在物理执行树中相对位置的重用度估计模型;2)根据模型的估计结果设计并实现了重用缓冲区调度策略并对其进行了优化。通过多个基于SSB数据集的实验验证了本文提出的优化方法的有效性。最后,论文对数据仓库管理系统列存储查询执行引擎的实现与优化现状进行了总结,并对下一步的研究工作进行了展望。