论文部分内容阅读
随着互联网的飞速发展,数据呈现爆炸性增长的趋势,云计算平台逐渐成为一种大规模数据存储和管理的解决方案。目前工业界有许多企业开始提供各种云数据管理服务,但其功能和性能都不够完善,大部分云数据管理系统无法提供结构化查询接口,这给很多基于DBMS的系统向云数据管理系统的无缝迁移带来许多不便,并且没有针对云数据的特点进行查询的优化处理,尤其是针对复杂查询,基于MapReduce的查询处理效率远远无法满足用户需求。 本文首先针对结构化查询效率的问题,借用MapReduce的容错思想,提出一种有针对性的高效查询处理算法。该算法将用户查询按存储进行拆分,同时利用云数据管理系统中的备份数据,将一个子查询映射为k(k为备份个数)个子查询,令每个子查询映射均等待在该份数据所在的从节点的队列中。算法分别采用两种调度策略为当前空闲从节点分派其等待队列中的子查询,保证节点间的负载均衡。 连接查询是云数据管理中极其重要的一类查询,同时由于其与普通查询相比具有一定的特殊性,因此本文特别针对连接查询设计了查询处理技术。连接查询涉及多个数据表,因此查询过程中的数据传输问题尤为严重。首先针对连接查询中可能存在的无效连接进行过滤,降低其带来的传输代价;另一方面通过对具有相同访问路径的子连接进行聚类,把所有可以同时访问并进行查询的子连接聚合在一起,从而降低读写代价和重复查询次数;在子查询的调度过程中,针对相同调度队列中的聚集再次进行合并,减少由差异访问路径带来的子查询分离现象,进一步减少读写和数据传输代价。 对上面提出的查询处理技术,本文分别在模拟环境和真实环境中,在不同量、不同分布的数据集上进行了丰富的实验。实验结果表明提出的算法的有效性、高效性和可扩展性,可以很好的利用系统中的冗余存储提高查询处理的并行度,降低数据传输代价,从而提高查询效率。