论文部分内容阅读
历史图作为刻画图网络随着时间维度不断的变化的图数据结构,正在越来越多的场景展现其应用和研究价值。本文从历史图数据入手,着手于研究历史图数据的存储和计算方法。基于Rocks DB存储引擎,本文设计并实现了历史图数据库Hist DB对历史图数据进行高效的存储和检索。Hist DB基于K-V存储模式存储历史图的图增量数据,并结合历史图的顶点检索、图增量检索、历史邻居检索和快照检索四类检索设计并实现了高效的数据检索接口。此外,Hist DB基于分块的底层存储,设计了数据索引区块对检索进行优化,实验表明,Hist DB的索引优化机制可以有效地提升一些数据检索接口的性能。本文结合历史图上查询需求,基于Gremlin静态图查询语言并引入时间维度设计了历史图查询语言Hist QL。基于Hist QL语言,本文还设计实现了历史图查询计算框架Hist Query以对查询语句进行计算,Hist Query使用嵌套的计算单元管理方式,可以实现多层次、多粒度的资源管理和计算调度。此外,本文还基于所设计了无锁通信机制,实现了Hist Query的多线程计算框架。本文还基于实验测试,展示了Hist Query的多线程查询性能,并分析了图划分方式、配置参数、提前终止机制等因素对查询计算的影响,分析了历史图查询计算框架Hist Query的调优机制。结合现有历史图模型定义的不完备性,本文还创新型地映入时间权重边的概念,对历史图模型进行了拓展。基于扩展的历史图模型,本文还研究了历史图上的路径搜索技术,对历史图包含时间权重边的路径问题进行了定义,并利用效用值函数衡量路径搜索过程中的评价规则。本文分别设计了一种基于广度优先搜索的基本算法和一种基于一趟扫描的优化算法以解决历史图的路径搜索问题。实验结果表明,所提出的一趟扫描算法拥有更高的搜索效率,且面对不同的输入数据分布,一趟扫描算法同时也拥有更好的稳定性。