📅  最后修改于: 2023-12-03 14:49:17.077000             🧑  作者: Mango
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 的限制和导入的介绍,每位程序员都应该遵循最佳实践,以提高导入性能和效率。