gpt4 book ai didi

java - 在 Neo4j 中使用 cypher 加速关系和节点创建

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:37 25 4
gpt4 key购买 nike

我有 2 个 csv 文件 A 和 B。文件 A 包含 7000 行,有 6 个属性,文件 B 包含 10M 行,有 11 个属性。此外,文件 A 具有属性 PKA,用作主键,而文件 B 具有属性 FKA,用作 PKA 的外键。

我想以这种方式将这些文件加载​​到 Neo4j 中:1 - 为文件A和文件B的每一行插入一个新节点2 - 在创建的表示所描述的主键和外键关系的任何节点之间添加关系。

目前,我已使用 JAVA API 通过 BatchInserter 插入这些文件,为这些文件的每一行添加一个节点,并分别为文件 A 和文件 B 设置标签“A”和“B”。我还为 PKA 和 FKA 创建了两个索引。要添加关系,我的目的是调用以下 cypher 语句(来自 Neo4jShell):

match (a:A), (b:B) where a.PKA=b.FKB create (a)<-[:KEYREL]-(b);

我的问题是:- 对于文件 B(最大的一个),使用 BatchInserter 添加节点需要 14 分钟,最后只有一次提交(~12k 节点/秒,~130k 属性/秒),我想将导入过程加快 2 倍。- 密码查询无法使用此数据集大小进行处理,但我希望可以实现。

我正在运行具有 IntelXeon @2.6Ghz 双核和 8GB RAM 且安装了 Windows 64 位和 Java8 64 位的 VM。我已经使用以下 java 选项运行了导入 java 程序和 Neo4jShell:

-server -XX:+UseConcMarkSweepGC -Xms2000m -Xmx5000m

最佳答案

当处理大量数据时,运行 MATCH 通常非常慢。

您可以尝试加快创建 constraint 的速度在节点上,您将每个节点定义为唯一的。这个可以speed up the MATCH操作,尽管创建约束也需要时间:

CREATE CONSTRAINT ON (a:A) ASSERT a.PKA IS UNIQUE;
CREATE INDEX ON :B(PKB);

然后您可以运行 MATCH,您可以根据 Neo4j docs 从第三个 CSV 文件运行 MATCH。其中描述了与您类似的场景。

关于java - 在 Neo4j 中使用 cypher 加速关系和节点创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24173514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com