论文部分内容阅读
随着信息化的深入,大数据在各个领域产生了巨大的价值,海量数据的存储和快速分析成为新的挑战。传统的关系型数据库由于其性能、扩展性的不足以及价格昂贵等方面的缺点难以满足大数据的存储和分析需求。Spark SQL是基于大数据处理框架Spark的数据分析工具,支持关系型SQL查询,目前已支持TPC-DS基准,成为了大数据背景下传统数据仓库的替代解决方案。全文检索作为一种文本搜索的有效方式,能够与一般查询操作结合使用,提供更加丰富的查询和分析操作,在众多关系型数据库中都提供了全文检索功能。目前,Spark SQL仅支持简单的查询操作,不支持全文检索。 为了满足传统业务迁移和现有业务对于全文检索的使用需求,论文提出并实现了一个基于Spark SQL的分布式全文检索框架,并在如下四个方面开展了关键技术研究: (1)针对Spark SQL尚不支持使用SQL全文检索的问题,提出了全文检索文法和全文检索查询语言到检索模型的翻译转换方法。 (2)针对Spark缺少分布式环境下索引建立和查询方法的问题,提出了检索模型的并行化方法。包括数据的并行化、索引建立和查询计算的并行化、索引多作业间的共享、全局结果聚合。 (3)针对Spark尚未支持索引的问题,提出了存储模型与检索优化方案。在建立索引阶段,本文提出两类存储模型即拥有高查询性能的全量存储模型和极低索引存储量的索引指定列存储模型。在查询阶段,基于索引指定列存储模型,提出了能够将查询结果与原表数据进行连接、具有O(n)复杂度的分区对齐连接算法,同时,基于两类存储模型提出了谓词下推以及列裁剪优化策略。 (4)设计和实现了Spark SQL分布式全文检索系统,使用大规模数据集对系统的性能、扩展性进行了评测,与传统关系型数据库进行了比较。 实验表明,相比传统关系型数据库,在两种存储模型和相应检索优化方案下,该框架索引构建的平均速度比传统数据库的快166倍和200倍,查询的平均速度快99倍和9倍,在索引指定列存储模型中,索引存储量减少为传统数据库的55%,有效验证了Spark SQL全文检索框架能够满足海量数据的全文检索需求。