知识库

将数据导入云端的 Neo4j

在云端 Neo4j 实例中加载数据与使用任何其他方法运行 Neo4j 非常相似。但是,在将数据导入“云图”时,有一些需要注意的小事项。本文将讨论其中主要的一些事项。

  • 配置和访问

  • 使用离线导入器

  • 云磁盘规划

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

配置和访问

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

插件

某些 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 云实例上运行 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 倍。例如,如果您有 50GB 的 CSV,则您可能应该分配 100GB+ 的磁盘。

当然,每个数据集可能具有不同的复杂性,但这些数字应该涵盖大多数情况。与往常一样,如果您有任何问题或疑问,请随时在Neo4j 社区网站上与我们联系。我们很乐意与您合作,找到最佳解决方案!