论文部分内容阅读
近年来,互联网应用的高速发展和电信、交通、金融等各个领域数据规模的快速增长,大规模数据处理的应用日益显著。Google提出的MapReduce编程模型由于其高伸缩性、容错性和易用性,赢得了工业界和学术界的广泛关注。但来自数据库领域的一些研究者认为MapReduce模型在数据存储上没有考虑定义数据的模式及完整性约束,在查询处理中没有利用索引等传统数据库中常见的优化技术,是数据分析技术的一种倒退。此外,一些研究者对混合型数据处理模式进行了原型研究。例如,HadoopDB是一个将MapReduce框架与底层数据库实例相结合的混合型分布式数据库原型系统,该系统希望具备MapReduce的可伸缩性、易编程性以及利用数据库在查询处理方面的优化技术。其研究思路为探索新的数据处理系统设计提供了参考。
本文的主要工作如下:
(1)从系统设计的角度分析对比了MapReduce编程框架与无共享式并行数据库在各自系统设计中的特性,提出了基于MapReduce的列存储分析型数据库设计中模式、计算模型、数据分布与索引、性能、容错能力及编程灵活性等六个需要权衡考虑的因素,为下文的原型设计和实现提供了理论基础。
(2)基于开源Hadoop和MonetDB实现了MR-MonetDB系统原型。针对HadoopDB设计中存在的一些不足加入查询优化技术。首先提供数据分区的自动分区机制及两种分区策略;其次在查询引擎中添加优化阶段,提供查询子句下推以优化查询性能;最后对记录数量小的维表提供复制策略以及对分布式连接进行优化。
(3)通过原型系统在HadoopDB论文中测试集上的实验,验证系统设计和优化技术的有效性。在不同数据规模大小的环境下,对Grep、Selection、Aggregation、Join四种类型的任务进行了测试。初步的结果表明,在MR-MonetDB系统中,通过结合查询优化技术及底层列存储数据库实例的能力,其查询性能与传统Hadoop程序及HadoopDB相比有一定提高。