Neo4j:创建具有500个属性的节点是否会减慢创建过程?

时间:2017-07-21 18:34:24

标签: neo4j

我正在尝试创建500~600列的节点,因为要求是显示单个数据帧/表中的所有属性。节点的创建是使用java eclipse中的bolt驱动程序api。

此外,如果有来自不同节点并从不同节点中选择的话,手动选择这么多列将是繁琐的,以便将所有属性显示为表格。

如果所有属性都在一个节点中,我很容易返回*属性。

这就是我尝试创建节点的方式。要创建的节点总数约为20K~40K。

示例:

List<String> nodes = {create(s:TEST{a:"", b:"", .... })
    create(s:TEST{a:"", b:"", .... })
    ...
    create(s:TEST{a:"", b:"", .... })
    };

这是怎样的,我正在创建例如:

try (Session session = driver.session()) {
    for (String q : nodes) {
        StatementResult st = session.run(q);  
     }
}

1 个答案:

答案 0 :(得分:0)

这种迭代方法,一次创建一个节点,不推荐。

您可能希望查看有关插入数据的更好方法的Michael Hunger's batching tips

在您的情况下,提供属性映射列表的参数允许您展开地图,创建节点,并直接将属性值添加到节点:

UNWIND $propsList as props
CREATE (n:Test)
SET n = props

如果您在插入时遇到减速或挂起,请查看迈克尔关于使用APOC程序批量插入并定期提交的建议。