📜  从 csv neo4j 限制导入 (1)

📅  最后修改于: 2023-12-03 14:49:17.077000             🧑  作者: Mango

从 CSV 到 Neo4j:限制和导入

CSV 文件是一种方便的方式来将数据导入到数据库中,而 Neo4j 数据库也不例外。借助 Neo4j 自带的 LOAD CSV 导入工具,程序员可以将 CSV 文件中的数据快速载入到 Neo4j 数据库中。

然而,当处理大量数据时,可能会出现一些问题,例如导入速度慢或者导入过程中出现错误。为了应对这些问题,本文将会介绍几种限制和最佳实践来优化 Neo4j 数据库的 CSV 导入。

增加缓存

Neo4j 的 LOAD CSV 工具的速度是非常快的,但是在处理大量数据时,还是可能会出现延迟。为了缓解这种情况,可以使用 Neo4j 的图状缓存(graph buffering)功能来提高导入性能。

在导入时,可以将 graph.db 配置文件中的 cache_type 和 cache_size 的值修改为 'graph' 和合适的大小(例如 2G),以提高导入速度和效率。

dbms.memory.pagecache.type=graph
dbms.memory.pagecache.size=2g
限制批处理大小

Neo4j 的 LOAD CSV 工具默认会维护一个事务,以避免出现一些意外情况。然而,这也意味着在每个事务提交前必须在内存中存储大量数据,这会对性能造成影响。

为了提高性能,可以将批次大小(batch size)从默认的 1000 修改为更合适的大小。例如,将批次大小设置为 5000,即可将内存占用减少到原来的 1/5 左右。

USING PERIODIC COMMIT 5000
LOAD CSV FROM ...
利用并行处理

Neo4j 数据库还支持并行处理导入操作,以进一步提高导入性能。使用并行处理可以将 CSV 文件分成多个部分,然后同时进行导入操作。

为了启用并行处理,需要使用--nodes:--relationships:命令行选项,同时指定要导入的部分数量。这些部分可以使用 range() 函数来计算得到。

例如,以下命令将原 CSV 文件分成 4 份,然后并行导入到 Neo4j 数据库中。

neo4j-admin import --database=graph.db --nodes:A:importfile.csv --nodes:B:importfile.csv --nodes:C:importfile.csv --nodes:D:importfile.csv

以上是本文关于从 CSV 到 Neo4j 的限制和导入的介绍,每位程序员都应该遵循最佳实践,以提高导入性能和效率。