论文部分内容阅读
随着大数据技术的发展,NoSQL数据库变得流行,人们对此类技术的期望和要求也越来越高。当非关系型数据库最开始被提出时,只是为了解决稳定的海量数据存储及简单的并发查询。但随着数据规模的增大和数据种类多样性的发展,使用者开始更关心对数据的关系型操作。为了在NoSQL数据库上获得的关系型操作的查询计算能力,通常的做法是根据实际情况,另外实现相关的系统或算法来作为辅助。这种做法不具有通用性和简便性,使用方法也因系统而异,没有统一的标准,学习成本高。因此,实现如何获得了关系型的数据操作的同时也获得NoSQL数据库的性能这个问题面临着挑战,也是本文将要研究并解决的问题。本文在调查并研究了相关开源解决方案的情况下,设计并实现了Hypertable之上的SQL查询计算系统。解决了获得NoSQL数据库的性能的同时实现关系型的数据操作的问题;使用类SQL语言,更符合用户的使用习惯,降低学习成本。本文完成了以下工作:(1)本文设计的系统基于Hypertable作为系统的核心及底层存储模块;利用Storm为编程模型代替了现有解决方案中常用的MapReduce模型,实现内建函数来扩展丰富查询与计算;设计了系统使用的查询计算语言HHQL并实现其解析器;实现了查询计算任务调度,能够根据查询语句自动构建任务代码并执行;构建了一个易用、高效的分布式大数据查询计算系统。(2)调研了当前主要的分布式流式计算系统——Apache Storm;通过比较其计算效率、编程接口丰富程度和友好性等方面,确定了Storm作为查询计算系统的计算层框架和算子模型;并利用Storm中的DRPC模型,实现了系统中的内建计算算子。(3)基于标准Sql设计一套使用于本文实现的查询计算系统中的查询语言HHQL。并通过对JSqlParser的二次开发,实现了HHQL语言的解析器。(4)设计实现了查询计算任务执行管理器。任务执行管理器负责生成任务执行代码,在任务的整个生命周期中负责维护任务实例,包括执行任务、结束任务和失败容错等。(5)设计了主从式的分布式系统结构,提供了远程过程调用的开发工具包(SDK),实现了底层透明的查询计算请求。即用户无需直接操作集群系统,或者自己实现Storm算子,直接利用HHQL语句结合SDK中提供的接口就可以做实时查询与计算。通过以上工作,实现了一个完整的大数据查询计算系统,扩展了非关系型数据库,提供了高效、易用的工具。