4

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

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

有没有一种简单的方法可以将这些数据强制转换为 neo4j ?我还没有找到任何这样的例子。虽然我找到了几个 python 库,包括一个嵌入式 neo4j 和一个 rest 客户端。

手动遍历图形并以这种方式存储的常用方法是什么?

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

4

1 回答 1

3

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 在 Neo4J 中加载您的 graphml 转储

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

Tinkerpop 非常有用——不仅用于序列化/反序列化。

它将允许您使用具有共同“方言”的不同图形数据库(前提是它们具有大多数人都使用的“蓝图”驱动程序)

于 2014-01-09T19:09:59.897 回答