我有一个应用程序,它每秒可在内存中创建数千个图形.我希望找到一种方法来保留这些以便以后查询.它们并不是特别大(也许最多约1k个节点).
我需要能够存储整个图形对象,包括节点属性和边属性.然后,我需要能够基于节点中的时间属性在特定时间窗口内搜索图.
有没有一种简单的方法可以将该数据强制转换为neo4j?我还没有找到任何例子.虽然我发现了几个python库,包括一个嵌入式neo4j和一个rest客户.
是手动遍历图形并以这种方式存储图形的常用方法吗?
有没有更好的持久性替代方案?
解决方法:
Networkx有几种序列化方法.
在您的情况下,我将选择graphml序列化:
http://networkx.github.io/documentation/latest/reference/readwrite.graphml.html
使用起来非常简单:
import networkx as nx
nx.write_graphml('/path/to/file')
要将其加载到Neo4j中(如果您具有Neo4j< 2.0),则可以使用Tinkerpop Gremlin将您的graphml转储加载到Neo4J中
g.loadGraphML('/path/to/file')
Tinkerpop非常有用-不仅用于序列化/反序列化.
它将允许您使用带有“方言”称呼的不同图形数据库(前提是它们具有大多数人都可以使用的“ Blueprint”驱动程序)