论文部分内容阅读
随着大数据时代的到来,以社交网络为代表的图数据规模迅速增长,同时图query查询的规模也在增加,但是如何高效地利用超大规模图数据进行查询的领域仍有许多问题需要解决,这些需求都指向发展具有更高性能的query加速算法。虽然目前已经发展出成熟的大数据平台,例如MapReduce和Spark等,但是由于图数据其具有的独特特点,即节点之间的依赖性较强,节点之间需要大量的数据传输;同时图计算的过程中存在大量的迭代过程,这些特点决定了图query查询不适合目前主流的大数据平台,所以提出一个具有高性能的query加速算法具有重要的意义。发展高性能的query加速算法的最大难点在于无法在保证性能的同时保持其原本的扩展性。在已知的图计算系统中,一般都使用分布式的图计算系统来保证系统具有很好的扩展性,但是对于系统性能的提升仍没有一个标准的解决方案,因此对于目前的图query查询算法,在保证其扩展性的要求下,大规模图数据的计算和通信的消耗是巨大的,尤其是对于分布式图计算系统,有时系统的性能完全由通信时间决定,所以提出一种针对图计算系统的query加速算法,在保证扩展性的前提下,提高系统性能的解决方案,是该领域的迫切需求。本文针对上述问题,在保证图计算系统扩展性的前提下,重点研究和解决如何提高大规模图数据的查询性能。进而设计并实现了基于SSP(Stale Synchronous Parallel)并行计算模型采用内存计算和内存共享技术的query加速算法,从而有效保证了图计算系统的实时性和扩展性。为了提高图query查询的性能,本文基于SSP并行计算框架,通过算法将全部的query并行执行,同时使用内存计算技术来加速计算过程;为了提高图计算系统的易用性,本文使用boost::spirit::qi词法解析工具,将query设计为符合EBNF语法的类SQL语句;为了提高图计算系统的动态扩展性,引入kafka消息队列,动态的对内存中的图结构进行增删改,基本达到流计算的要求;为了减少重复计算,本文利用query之间的相似性,在query之间使用内存共享技术,以达到有效减少重复计算的目的。综合本文提出的query加速算法在实时性、可移植性、易用性、伸缩性、负载均衡性、内存消耗性和计算能力等方面的实验结果,得到如下结论:1.本文提出的query加速算法使用SSP并行计算框架,将全部的query查询过程并行化,同时使用内存计算来加速图查询过程,符合有实时性要求的领域;数据通信使用ZMQ标准,可以直接运行到支持ZMQ标准的分布式平台上,避免了平台移植造成的问题,具有很好的可移植性;2.本文提出的query加速算法使用词法解析工具boost::spirit::qi,对符合EBNF语法的查询语句进行解析,具有很好的易用性,降低了使用者的使用难度;同时使用kafka消息队列,对内存中的图数据及时更新和修改,为流计算提供了条件,并且为后续系统支持集群机器扩展提供支持,具有很好的伸缩性;3.本文提出的query加速算法将全部query并行执行,降低了节点空闲的时间,避免了每个节点由于运行时间分配不均,而导致的时间浪费问题,具有很好的性能和负载均衡性;4.本文提出的query加速算法在相似的query之间使用内存共享技术,提取query查询过程中的重复计算,将重复计算的结果放在共享的内存中,避免了重复计算的时间开销,不仅仅减少了对内存的消耗,也加速了query查询过程。综上,本文提出的query加速算法在实时性、可移植性、易用性、伸缩性、负载均衡性、内存消耗性和计算能力等方面达到了很好的平衡,同时,本文的研究工作具有一定的理论价值,对于同类工作具有参考和借鉴意义。