知识库

将数据导入云端 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-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 社区网站与我们联系。我们很乐意与您一起找到最佳解决方案!

© . All rights reserved.