Data structures 操作大型(不适合内存)图形的有效方法
我需要维护一个大的有向图G,可能有数百万个节点和边。它可能不适合内存 我需要在此图表上执行的一些常见操作包括:Data structures 操作大型(不适合内存)图形的有效方法,data-structures,graph,neo4j,social-networking,graph-databases,Data Structures,Graph,Neo4j,Social Networking,Graph Databases,我需要维护一个大的有向图G,可能有数百万个节点和边。它可能不适合内存 我需要在此图表上执行的一些常见操作包括: 每个节点/边将具有与之关联的用户定义属性,例如访问计数、权重等 对于每个节点(顶点),我需要根据属性值执行有效的查询。例如,查找X值大于v1但小于v2的节点。这可能需要在某些字段上建立索引 我需要找到给定节点的所有传入边和传出边,并更新边的权重 我需要从给定节点执行本地(基于DFS)遍历,并返回满足某个用户定义谓词的所有路径(该谓词可能使用路径中节点/边的属性值) 我需要高效地添加/删
基本上,我只需要一个磁盘上的图形库,它可以有效地处理持久性、节点查询和本地遍历。你对我可以使用的现有(开源)项目有什么建议吗?如果没有,那么实现这样一个功能的最佳方式是什么?我看到了一些包含数百万个节点的大型图。我建议你找到一个点,你应该做一个加权压缩。因此,您将使用平均值和权重,将N个节点压缩为N/M个节点。。。。然后重建图形 您可以选择每隔这么多个节点重新压缩一次。原因是,当一切都变得巨大时,从某种意义上说,你将能够随着时间的推移使其正常化 你有一个有向图。当你在大型节点上传递更大的数据时,你可以说,如果A>B>(E&D)>H,你可以说:A>H
它确实允许您根据节点之间的最短跳跃来确定节点之间的公共路由。如果它不在压缩列表中,它至少会指向某个区域,并且可以,这取决于。。。从某种意义上讲,已解压缩。使用带有一些您不需要的选项的工具有什么不对?您确实需要的操作也可能在Neo4j之类的设备上更有效。