论文部分内容阅读
近年来,随着大数据的规模急剧增加,传统的关系型数据库系统已无法满足发展的需求,非关系型数据库的出现解决了传统的关系型数据库面临的一些问题。但是非关系型数据库的种类繁多,存储方式各有不同,从而出现了各式各类的大数据实时查询平台。目前,主流的大数据实时查询平台有Apache Drill、Apache Hive、SPARK以及Impala等。与其他查询平台相比,Drill具有可扩展数据源的优势,通过实现存储插件的方式可以将Drill与不同的非关系型数据库进行连接,同时还可以在单个查询中动态组合来自多个数据源的数据。Drill还提供了统一的,易于学习且使用广泛的标准SQL作为查询语言。通过这些优势,Drill逐渐成为了最为流行的开源大数据实时查询平台之一。当前,在面向文档的非关系型数据库中,Drill仅支持MongoDB作为数据源,然而MongoDB的自定义存储格式可读性较差,应用接口不够丰富,并且由于内存占用问题导致可用性有着一定的不足,使得Drill在查询和处理文档型数据时受到一定的限制。CouchDB是一种新兴的文档型数据库,与MongoDB相比,CouchDB具备了使用JSON格式存储数据,可在更多的操作系统环境下运行以及任何支持HTTP请求的语言均可使用等优势。但是CouchDB的查询是基于磁盘的操作,导致了查询性能低下,并且CouchDB的查询方式相对复杂,同时不能支持标准SQL查询。基于以上的原因,CouchDB也存在着一定的不足。针对以上的问题,本文做的工作包括:(1)对Drill的系统架构及其存储插件的工作原理、CouchDB数据库的架构及其查询方式展开了深入研究;(2)设计并实现了Drill平台下的CouchDB存储插件,使得CouchDB可以通过Drill平台进行SQL查询,从而将Drill对文档型数据库的管理能力进行了进一步扩展。同时利用Drill的列存储数据结构Value Vectors将CouchDB基于磁盘的查询转移到内存中,提高了CouchDB的查询效率;(3)对Drill平台下的MongoDB存储插件和CouchDB存储插件进行了性能对比与分析;(4)对Drill使用的Calcite优化器进行了探讨,并根据CouchDB的富查询特点设计了相应的优化规则。通过列裁剪和谓词下推的优化方案,减少了对无效数据的处理,从而使内存消耗更小并且数据传输效率更高。本文的主要贡献如下:(1)本文通过对Drill与CouchDB进行深入研究,设计并实现了Drill平台下的CouchDB存储插件,CouchDB存储插件项目的源代码获得了Drill项目的PMC主席Charles S.Givre的认可并提交。(2)本文扩展了Drill平台对文档型数据库的支持,使得Drill平台对非关系型数据库有了更强大的管理能力。(3)本文利用Drill平台的特点,弥补了CouchDB数据库的不足。Drill的列存储数据结构Value Vectors可以提升CouchDB的查询性能,并且通过列裁剪和谓词下推的优化规则实现了将SQL中的过滤条件下推至CouchDB进行富查询,以达到减少内存和网络传输成本的目的。此外,通过Drill平台,CouchDB能够与其他的非关系型数据库进行联合查询。