论文部分内容阅读
RDF资源描述框架由于其表示的灵活性和天然的图数据模型变得越来越流行。与此同时,RDF数据的数据量也在飞速增长。由于数据量的增长,已经超出了单机处理能力的限制,从而激发了分布式存储查询的需求。基于这一背景,本文着重研究了RDF数据分布式查询处理和优化问题。本文的主要研究内容可以概括为几个方面:首先提出了一种新的基于Spark Graph X的SPARQL查询处理方法SQX。将RDF数据视为一个带标签的属性图,通过图并行计算的方式实现SPARQL查询处理。SQX采用了一种新的“查询树匹配”+“结果过滤”的方法,对每一个查询产生查询树和非树边。基于Spark Graph X实现的Pregel接口,查询树采用自底向上分层匹配的方式可以在一个超级步中处理多个三元组模式的迭代,最后使用非树边对迭代过后的结果进行过滤得到最终的结果。在完成基本的SPARQL查询的基础上,我们实现了对Filter、Optional和Union等SPARQL功能的支持。其次在SQX的基础上,提出了一种新的基于统计代价估计的SPARQL查询优化算法。不同的三元组执行顺序对应不同的数据传输代价,查询优化可以为查询选择最优的迭代顺序,缩短执行时间。采用了统计的边权值分配策略为每条边分配一个合理的权值,并基于属性对词频自底向上对权值进行更新并估计查询代价,在迭代轮数相同的情况下,代价最小的执行计划将被作为最终的查询评估方案。然后实现了SPARQL近似查询的功能。当用户对底层知识库没有足够理解的情况下,用户的查询可能不能返回正确的结果。提出了一种基于知识向量化表示的近似查询方案,构造和用户表达最相似的查询。最后对于本文提出的所有算法进行了具体的实现,同时通过大量实验来验证算法的性能。实验结果表明,算法具有良好的查询效率和优化性能。