论文部分内容阅读
在互联网技术高速发展的带动下,人类社会正逐步走向大数据时代,随着数据规模的指数级增长,数据间依赖的复杂度增加,传统关系型数据库系统已经无法满足某些新的应用场景的需求。基于“图”这一抽象数据结构的图数据库系统应运而生。图数据库在处理面向连接的数据模式时有着天生的优势。根据图数据结构上的特点,可以抽象出一种通用的属性图模型,并基于此实现了很多种类的图数据库。图数据库从功能上包含存储系统和查询引擎两个模块。 然而,通过对现有图数据库技术的分析,在面对分布式架构的图存储层时,本研究发现当前的图数据库查询引擎无法充分发挥底层存储系统的性能优势:首先,传统同步式流水线运行方式限制了系统的并发度;其次,现有图存储模型无法自动分载热点的查询请求;最后,图数据库实例端的查询计算过程极大增加了网络开销。因此,本文设计并实现了一套基于异步流水线的分布式图查询引擎,研究了查询流程优化、存储方式设计、系统架构改进等关键技术,并通过大量实验证明了研究成果的可行性和高效性。本文主要贡献包括如下三个方面: 1)设计并实现了一套异步查询流水线框架,将图查询语言转换成并发的底层数据操作。这套框架依托流水线的设计思路,以异步数据流驱动查询的执行。在图遍历的过程中,查询流水线使用有序缓存队列维护了并发查询管道的结果,从而用广度预取实现了并发式的惰性求值。保证结果顺序一致的同时,提高了系统并发度,降低了查询执行延迟。在异步流水线执行时还引入了一套线程池自动管理机制,完成了计算资源的合理分配。 2)设计了一种分布式图存储模型,该模型继承BigTable的数据模式,在有效地保存结点、边、属性等图信息的同时,尤其可以将高度数的热点数据分布在多台服务器上。使用分段策略完成结点ID的分配和存储,生成唯一的结点标识,实现结点ID的切分。启用独立的热点切分器在数据持续写入的同时完成热点的监测,并最终通知图数据库实例在写入新数据时自动实现边的切分,在读取热点数据时分布式化。 3)实现了一个分布式图数据查询引擎,架构上分为后端存储层、分布式计算层、数据库层和应用层,可以让多个独立的图数据库实例共享同一份底层图数据、共用同一套分布式计算层。在HBase之上构建了一个服务器端图计算模块,其中设计了新的边存储结构以完成一般的服务器端边过滤,同时实现了条件计算下推以完成复杂的服务器端谓词计算。结合热点切分策略,真正实现了图查询的分布式化,减少了查询执行时存储层与图数据库实例间的网络传输量和客户端的计算量。 大量实验表明系统每个模块都达到了设计要求。与现有图数据库的查询引擎对比了点属性查询、邻边查询、边过滤查询和综合查询。相比现有的Titan分布式图数据库的查询引擎,本系统在点属性查询上查询效率提高了近30倍,在邻边查询上提高了30%,在边过滤查询上提高了10倍以上,在综合查询上也提高了10倍左右。