我有一个应用程序,每秒钟创建数千个图形在内存中。 我希望找到一种方法来保存这些图形以供后续查询。 它们不是特别大(可能最多 ~1k节点)。
我需要能够存储包括节点属性和边缘属性在内的整个图形对象。 然后,我需要能够根据节点中的时间属性在特定时间窗口内搜索图形。
是否有简单的方法将此数据强制转换为neo4j? 我尚未找到任何示例。 虽然我找到了几个Python库,包括嵌入式neo4j和rest客户端。
通常的方法是手动遍历图形并以这种方式存储吗?
是否有更好的持久性替代方案?
我有一个应用程序,每秒钟创建数千个图形在内存中。 我希望找到一种方法来保存这些图形以供后续查询。 它们不是特别大(可能最多 ~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<2.0版本,您可以使用Tinkerpop Gremlin将图形文件导入Neo4j中。
g.loadGraphML('/path/to/file')
TinkerPop非常有用,不仅可以进行序列化/反序列化。
它允许您使用具有共同“语言”的不同图数据库(只要它们具有“Blueprint”驱动程序,大多数都有)。