1

我有一些带有 100 万个节点和 300 万条边的旧图形数据,我想将它们转换为 Neo4j。

我正在使用嵌入的 Neo4j,我的程序大致如下:

for (all node in old graph data):
    node1 = neo4jdb.findNode(node1_id)
    node2 = neo4jdb.findNote(node2_id)
    if (node1 or node2 doesnt exist):
        create new nodes
    if (! relationExistBetween(node1, node2)):
        create new relation between node1 and node2

但是,创建过程超级慢。使用完全相同的逻辑,使用 TinkerGraph 程序运行得更快。

我想知道是否有任何技巧可以加快速度?谢谢!

4

1 回答 1

0

弄清楚了。分析代码,发现瓶颈在于 findNode 操作。这让我想到它可能与索引有关。

您必须手动在属性上创建索引以加快速度,使用 Neo4j Embedded,类似于:

var transaction = graphDB.beginTx()
try {
  graphDB.schema()
    .indexFor(nodeLabel).on("node_id")
    .create()
  transaction.success()
} finally {
  transaction.close()
}
于 2018-10-11T20:39:52.410 回答