Python网络图和持久性(可能在neo4j中)

5

我有一个应用程序,每秒钟创建数千个图形在内存中。 我希望找到一种方法来保存这些图形以供后续查询。 它们不是特别大(可能最多 ~1k节点)。

我需要能够存储包括节点属性和边缘属性在内的整个图形对象。 然后,我需要能够根据节点中的时间属性在特定时间窗口内搜索图形。

是否有简单的方法将此数据强制转换为neo4j? 我尚未找到任何示例。 虽然我找到了几个Python库,包括嵌入式neo4j和rest客户端。

通常的方法是手动遍历图形并以这种方式存储吗?

是否有更好的持久性替代方案?

1个回答

4

Networkx有几种序列化方法。

在您的情况下,我会选择graphml序列化:

http://networkx.github.io/documentation/latest/reference/readwrite.graphml.html

它非常容易使用:

import networkx as nx
nx.write_graphml('/path/to/file')

如果您使用的是Neo4j<2.0版本,您可以使用Tinkerpop Gremlin将图形文件导入Neo4j中。

g.loadGraphML('/path/to/file')

TinkerPop非常有用,不仅可以进行序列化/反序列化。

它允许您使用具有共同“语言”的不同图数据库(只要它们具有“Blueprint”驱动程序,大多数都有)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接