一种面向大规模社交网络的图数据存储及查询方法_4

文档序号:8922524阅读:来源:国知局
edis。本发明的数据交换采用报文的形式传输字节流。而Redis和Neo4j采用查询命令或语言,降低了数据的传输效率。此外本发明的后台数据写入采用多线程处理,提高的效率。Redis采用事件驱动模型的单线出处理。
[0072]本发明测试了本发明以及比较系Redis和Neo4j在不同并发量下的远程读性能,该读性能取了十个数据集下的平均值。
[0073]如图7所示,远程读操作,本发明采用了数据预取机制,能够批量传输有效数据。而Redis和Neo4j都没有采用预取机制。
[0074]实例2数据更新实例
[0075]本文测试了本发明以及比较系Redis和Neo4j的数据更新性能,该性能取了十个数据集下的平均值。
[0076]如图8所示,对于数据的增量更新,本发明采用了链式的分配方式,能够消除数据插入和删除引起的数据频繁挪动问题。而Redis和Neo4j采用了顺序分配的方式,随着数据的更新,需要挪动数据,重定位数据,在这个过程中,无法进行新的查询处理。
[0077]实例3数据远程访问实例
[0078]本文测试了本发明在有预取机制和非预取的情况下的性能差异。本发明提供多种数据预取机制,便于上层应用更加自己的应用背景选择最佳的数据预取方式。本实验采用BFS预取,实验用到的算法是统计图数据集中图的总边数,算法的思路为:将图的顶点划分为η个分片,每个分片指定一个线程处理,所有线程并行访问本发明中的图数据。线程将访问请求中要访问的顶点放入队列,然后处理队列头部的顶点,访问顶点的邻域,统计顶点边数。如果当前边的终点位于线程所属分片,则将该终点放入队列。不断的循环处理队列的首部,直到队列为空。但所有的线程完成顶点的统计,将结果累计,算法结束。该算法为BFS遍历算法,能够很好的利用BFS预取机制,预取数据在后续的访问中,具有很高的命中率。
[0079] 如图9所示,本发明提供了多种数据预取机制,比如顺序预取,BFS预取和DFS预取。上层的计算框架可以选择最佳的预取方式批量的从异地获取图数据,图数据访问过程中,每次读取数据量比较少,虽然相邻时间的数据读取是可以预测的。通过将大批小量数据的访问积攒成大块数据,可以充分利用带宽资源,降低1启动时间,这样我们可以通过较低的并发获得较高的数据吞吐率。
【主权项】
1.一种面向大规模社交网络的图数据存储方法,其步骤为: 1)数据存储管理器对收到的图数据采用Key-Value方式存储,其中以图数据的顶点ID为Key,以顶点邻域为Value ; 2)对每一顶点邻域的数据存储:将与该顶点邻域对应顶点相连的多条边以时间戳有序存储到固定大小的内存块Block中,并使用链表结构将所占用的内存块Block构成Block双向链表,将该顶点的属性信息和指向该Block双向链表头部和尾部的索引信息存储到一数据结构Vertex中。2.如权利要求1所述的方法,其特征在于,所述内存块Block由一负责存储资源分配的Block池管理器进行分配与回收;所述Block双向链表中的内存块Block包括三部分:第一部分为指向Block双向链表中当前内存块Block的前一个内存块Block的指针,第二部分为指向Block双向链表中当前内存块Block的后一个Block的指针,第三部分为当前内存块Block存储的边。3.如权利要求2所述的方法,其特征在于,所述步骤2)中,当一顶点有新边需要存储到顶点邻域时,将该新边按时间戳排序,查看Block双向链表头部的Block是否未满,如果未满,则将该新边追加在该Block的头部;如果头部的Block已满,则由Block池管理器分配一新的内存块Block并添加到该Block双向链表的头部,然后将该新边存储到该新内存块Block 中。4.如权利要求1或2或3所述的方法,其特征在于,每一所述内存块Block中设有一数据域,用于保存所存边的时间戳区间;当对顶点领域中的边进行删除时,从Block双向链表尾部的内存块Block开始选取一边,如果该边的时间戳小于尾部内存块Block的时间戳区间下界,则结束删除操作,如果该边的时间戳大于该时间戳区间的上界,则从该Block双向链表末尾移除该内存块Block;如果该边的时间戳位于该时间戳区间内,则扫描该内存块Block中的边,删除比该边的时间戳早的边。5.如权利要求1所述的方法,其特征在于,所述数据存储管理器将存储资源分成两类:粗粒度存储资源和细粒度存储资源,所述数据存储管理器的内存中设置有界缓存窗口 ;其中所述粗粒度存储资源用于存储设定的大文件,并常驻于内存,所述细粒度存储资源用于存储按需分配的小文件;所述数据存储管理器按需将细粒度存储资源载入该有界缓存窗口,当该有界缓存窗口被占满,需要加载新的细粒度存储资源时,采用缓存替换算法将该有界缓存窗口中已有的细粒度存储资源换出,然后载入新的细粒度存储资源。6.如权利要求5所述的方法,其特征在于,所述粗粒度存储资源和所述细粒度存储资源均划分成固定大小的所述内存块Block,每一内存块Block拥有唯一的Block ID。7.如权利要求5所述的方法,其特征在于,所述数据存储管理器首先分配粗粒度存储资源的内存块Block,当粗粒度存储资源耗尽时,开始按需地动态地分配细粒度存储资源在内存块Block。8.如权利要求5所述的方法,其特征在于,所述数据存储器定期地扫描图数据,将过期的图数据从所述粗粒度存储资源中删除并转存到所述细粒度存储资源中。9.一种基于权利要求1所述方法存储的图数据的图数据查询方法,其特征在于,当数据存储管理器收到访问顶点V的访问请求时,数据存储管理器将该顶点V及其k阶邻域传输给请求者;请求者将返回数据缓存在本地,下次查询时,首先检查本地的缓存,如果不存在查询的顶点,则将访问请求发送给所述数据存储管理器。10.如权利要求9所述的方法,其特征在于,所述顶点V的k阶邻域为从该顶点V出发经过最短距离k条边可达的全部顶点构成的集合。
【专利摘要】本发明公开了一种面向大规模社交网络的图数据存储及查询方法,本发明数据存储管理器对收到的图数据采用Key-Value方式存储,以图数据的顶点ID为Key,以顶点邻域为Value;对每一顶点邻域的数据存储:将与该顶点邻域相连的多条边以时间戳有序存储到固定大小的内存块中,并构成双向链表,将该顶点的属性信息和索引信息存储到一数据结构中。当数据存储管理器收到访问顶点v的访问请求时,数据存储管理器将该顶点v及其k阶邻域传输给请求者;请求者将返回数据缓存在本地,下次查询时,首先检查本地的缓存,如果不存在查询的顶点,则将访问请求发送给所述数据存储管理器。本发明能满足动态更新、适合处理数据稀疏的场景和随机访问。
【IPC分类】G06F12/06
【公开号】CN104899156
【申请号】CN201510229346
【发明人】周薇, 包秀国, 马宏远, 程工, 冉攀峰, 刘春阳, 王卿, 韩冀中, 庞琳, 李雄, 贺敏, 刘玮
【申请人】中国科学院信息工程研究所, 国家计算机网络与信息安全管理中心
【公开日】2015年9月9日
【申请日】2015年5月7日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1