知识库

在云端将数据导入 Neo4j

在云端的 Neo4j 实例中加载数据与使用任何其他方式运行 Neo4j 十分相似。但在将数据导入“云图”时,有一些小细节需要注意。本文将讨论其中的主要要点。

  • 配置和访问

  • 使用离线导入器

  • 云磁盘规划

在云端运行 Neo4j 的具体差异记录在我们的 开发者指南 中。未列出的内容表示与其他 Neo4j 实现没有区别。

配置和访问

当您设置并部署云实例时,某些云平台的默认安全设置可能会阻止防火墙通过您打算使用的数据源进行流量。这意味着许多外部数据源和网络可能被锁定,无法与 Neo4j 云实例通信。为了解决此问题,您需要在云机器上调整防火墙设置以允许流量。具体操作因云提供商而异。有关更改防火墙设置的步骤,请查阅您云提供商的文档。

插件(Plugins)

某些 Neo4j 插件(如 APOC图算法)在云安装中默认包含。其他插件可以根据需要手动安装。然而,对于使用 APOC 的数据导入过程,并非所有镜像都配置了本地磁盘文件导入。这些安全设置可能会阻止您使用某些加载本地文件的过程。

如果执行了被阻止的过程,您可能会看到类似下面的错误信息。

Neo.ClientError.Procedure.ProcedureCallFailed: Failed to invoke procedure apoc.load.json: Caused by: java.lang.RuntimeException: Import from files not enabled, please set apoc.import.file.enabled=true in your neo4j.conf

若要更改这些设置并允许被阻止的过程运行以及访问文件,请参考 APOC 文档 中的配置选项和白名单设置。

离线数据导入

neo4j-admin import 工具通过忽略数据库运行时的常规事务批处理以及其他日常请求,能够以极快的速度将海量数据加载到一个全新、空的数据库中。使用非事务加载使该工具非常快速,但也意味着为提升性能而绕过了正常的 ACID 过程。

如果操作准确,这一过程既简单又高效。在云实例上运行 neo4j-admin import 工具与其他部署的一个小区别在于如何停止和启动数据库。云提供商使用 systemd 将 Neo4j 安装为服务,因此在使用 neo4j-admin import 之前,您需要先停止 systemd 服务。以下是停止和启动的典型命令示例。

$ systemctl stop neo4j
# run neo4j-admin import command
$ systemctl start neo4j

有关系统服务在云虚拟机上与 Neo4j 配合工作的更多信息,请参阅我们的 开发者指南

离线数据导入应谨慎使用。强烈警告:切勿在数据库实例正在运行时使用离线数据导入。这样做会导致数据损坏,并产生难以诊断的错误信息。

欲了解 neo4j-admin import 工具的更多信息,请查阅 运营手册

云端磁盘规划

将数据导入 Neo4j(尤其是大量数据)需要一定的磁盘空间。云实例的默认磁盘配置可能不足以处理大文件导入或来自其他系统的流式导入。

如果磁盘配额不足,加载过程中磁盘空间会耗尽,导致数据库崩溃。为避免此问题,您需要扩大磁盘容量。那么到底需要多少空间呢?

您需要为存放文件(若使用平面文件导入)以及加载过程预留一定空间。作为安全估计,建议准备 2‑3 倍于计划加载数据大小的磁盘空间。例如,若有 50 GB 的 CSV 文件,建议分配 100 GB 以上的磁盘。

当然,不同数据集的复杂度会有所差异,但以上数值能够覆盖大多数情况。若您遇到任何问题或有疑问,欢迎前往 Neo4j 社区站点 与我们联系。我们乐意与您一起找出最佳方案!

© . This site is unofficial and not affiliated with Neo4j, Inc.