先决条件

本页概述了在运行 Dataflow 作业将数据导入 Neo4j 之前需要执行的所有步骤。

Neo4j 实例

您需要一个正在运行的 Neo4j 实例,以便数据能够流入其中。

如果您尚未拥有实例,有两种选择:

  • 注册一个免费的 AuraDB 实例

  • 在可公开访问的位置安装并自行托管 Neo4j(参见 Neo4j → 安装),并打开 7687 端口(Bolt 协议)。

模板使用 约束,其中一些仅在 Neo4j/Aura Enterprise 版中可用。虽然 Dataflow 作业能够在 Neo4j Community Edition 实例上运行,但大多数约束不会被创建。因此您必须确保源数据和作业规范已相应准备。

Google Cloud Storage 存储桶

您需要一个 Google Cloud Storage 存储桶。这是 Dataflow 作业唯一可获取文件(包括配置文件和源 CSV(如果有))的地点。

上传连接信息

无论 Neo4j 实例如何部署,您都需要创建一个包含数据库连接信息的 JSON 格式文件。我们将其称为 neo4j-connection-info.json。Dataflow 将使用该文件中的信息连接到 Neo4j 实例。

基础认证方案依赖传统的用户名和密码。此方案也可用于针对 LDAP 服务器进行身份验证。

{
  "server_url": "neo4j+s://xxxx.databases.neo4j.io",
  "database": "neo4j",
  "username": "<username>",
  "pwd": "<password>"
}

如果服务器禁用了身份验证,则可以省略凭据。

{
  "server_url": "neo4j+s://xxxx.databases.neo4j.io",
  "database": "neo4j",
  "auth_type": "none"
}

Kerberos 认证方案需要一个 base64 编码的票证。只有在服务器安装了 Kerberos 附加组件 时才能使用。

{
  "server_url": "neo4j+s://xxxx.databases.neo4j.io",
  "database": "neo4j",
  "auth_type": "kerberos",
  "ticket": "<base 64 encoded Kerberos ticket>"
}

Bearer 认证方案需要由身份提供者通过 Neo4j 的 单点登录(SSO)功能 提供的 base64 编码令牌。

{
  "server_url": "neo4j+s://xxxx.databases.neo4j.io",
  "database": "neo4j",
  "auth_type": "bearer",
  "token": "<bearer token>"
}

用于登录使用自定义认证方案的服务器。

{
  "server_url": "neo4j+s://xxxx.databases.neo4j.io",
  "database": "neo4j",
  "auth_type": "custom",
  "principal": "<principal>",
  "credentials": "<credentials>",
  "realm": "<realm>",
  "scheme": "<scheme>",
  "parameters": {"<key>": "<value>"}
}

连接文件可以作为机密上传到 Google Cloud Secret Manager,或直接上传到您的 Google Cloud Storage 存储桶。

  1. Google Secret Manager — 创建一个新密钥,并将 neo4j-connection-info.json 文件作为值上传。

  2. Google Cloud Storage — 将 neo4j-connection-info.json 文件上传到您的 Cloud Storage 存储桶。

要导入的数据集

您需要一个要导入到 Neo4j 的 Google BigQuery 数据集。本指南提供了一个示例供您入门。

由于您正在将数据从关系型数据库迁移到图数据库,数据模型可能会发生变化。请查看 图数据建模指南,了解如何为图数据库建模。

Google Dataflow 作业

Google Dataflow 作业将所有部分粘合在一起并执行数据导入。您需要编写一个 作业规范 文件,为 Dataflow 提供加载数据到 Neo4j 所需的全部信息。

image$google dataflow
所有与 Google 相关的资源(云项目、Cloud Storage 存储桶、Dataflow 作业)应属于同一账户,或属于 Dataflow 作业有访问权限的账户。