论文部分内容阅读
数据仓库作为信息技术领域一个重要的研究方向,越来越受到人们的重视。早期的数据仓库,其构建和研究工作都是建立在关系型数据库管理系统(RDBMS)的基础之上。随着数据规模的不断扩大,数据仓库应用要求更高的数据处理性能与之匹配,而基于RDBMS方式构建的数据仓库不能满足当前的这种要求。因此实现一个独立的数据仓库管理系统(DWMS)已成为数据仓库技术研究和应用的强烈需求。在数据仓库环境下,相对于行存储,列存储具有非常明显的优势,能够减少非相关列的读入,利于数据压缩和压缩执行,从而提高查询性能。列存储DWMS将对数据存储和查询带来一种全新的改变,而基于行存储的查询执行引擎无法适应底层的列存储,因此研究和实现基于列存储的查询执行引擎是必要的,而且能够更好的挖掘列存储的性能,进一步提高DWMS的查询效率。本文结合实际项目,研究了列存储查询执行的相关技术,并对其中的某些技术做了相应的优化和改进。针对基于rowid的元组重构方法存在组合代价大的缺陷,提出了基于地址映射索引的元组重构,简称AMI。通过在数据索引叶子块中存储查询相关的多个列,建立针对数据索引非查找键列的地址映射索引,在查询执行时,结合数据索引和地址映射索引返回的地址范围就可以得到满足查询条件的地址集,根据地址集从数据索引中取得相应的数据块,从而减少了元组重构的开销,极大程度提高了多列查询的执行效率。针对早期物化存在构造大量不必要的元组以及延迟物化可能导致同一属性列的某些数据块被重复抽取的缺陷,提出了带值路径物化策略,简称VPMS。VPMS使用一个新的中间结果结构传递块,用于将重构的位置信息与实际列值相分离,并根据带值路径将路径起点引用列满足谓词条件的位置信息和列值存储在传递块中,从而避免了同一列的列值被重复抽取。VPMS的物化时机是尽量在中间结果不含无关列值的时候进行元组重构,也即是在WHERE子句中各列经过过滤之后进行元组重构,从而减少了无关元组的构造量。以块迭代方式代替传统的元组迭代来实现物理操作符,减少了执行中递归的次数和迭代的深度,并提出了执行定制技术,用以减少执行中不必要的重复判断,最终提高了查询的执行效率。本文主要有三个部分。首先,研究了列存储的相关技术,描述了DWMS和查询处理器的架构,这部分是深入研究的前提;其次,研究了列存储查询执行的相关技术,包括块迭代、物化策略、元组重构、执行定制,这部分是重点;最后,基于前面的研究基础,详细阐述了执行引擎的设计与实现,这部分是结果。