将数据迁移到 Spanner Graph

本文档介绍了将数据和应用迁移到 Spanner Graph 的过程。我们会根据您的源数据库和其他因素,介绍各个迁移阶段以及适用于每个阶段的推荐工具。

将图表迁移到 Spanner Graph 涉及以下核心阶段:

  1. 收集应用要求。
  2. 设计 Spanner Graph 架构。
  3. 将应用迁移到 Spanner Graph。
  4. 对 Spanner Graph 进行测试和调优。
  5. 将数据迁移到 Spanner Graph。
  6. 验证数据迁移。
  7. 配置割接和故障切换机制。

如需优化架构和应用以提升性能,您可能需要对架构进行迭代设计、构建应用以及对 Spanner Graph 进行测试和调优。

收集应用要求

如需设计满足应用需求的架构,请收集以下要求:

  • 数据建模
  • 常见查询句式
  • 延迟时间和吞吐量要求

设计 Spanner Graph 架构

如需了解如何设计 Spanner Graph 架构,请参阅 Spanner Graph 架构概览以了解基本概念;如需更多示例,请参阅创建、更新或删除 Spanner Graph 架构。如需针对常见查询句式优化架构,请参阅设计 Spanner Graph 架构的最佳实践

将应用迁移到 Spanner Graph

首先,请阅读有关迁移应用的一般 Spanner 指南,然后阅读本部分中的指南以了解 Spanner Graph 应用迁移指南。

连接到 Spanner Graph

如需了解如何以编程方式连接 Spanner Graph,请参阅创建、更新或删除 Spanner Graph 架构Spanner Graph 查询概览

迁移查询

Spanner Graph 查询接口与 ISO GQL 兼容,并且支持其他 openCypher 语法。如需了解详情,请参阅适用于 openCypher 用户的 Spanner Graph 参考文档

迁移变更

如需迁移应用的变更逻辑,您可以使用 Spanner 表变更机制。如需了解详情,请参阅插入、更新或删除 Spanner Graph 数据

对 Spanner Graph 进行测试和调优

有关如何对架构和应用性能进行测试和调优的 Spanner 指南适用于 Spanner Graph。如需了解 Spanner Graph 性能优化最佳实践,请参阅设计 Spanner Graph 架构的最佳实践以及对 Spanner Graph 查询进行调优的最佳实践

将数据迁移到 Spanner Graph

如需从关系型数据库迁移数据,请参阅迁移数据

如需从图表数据库或非关系型数据库迁移数据,您可以将源数据库中的数据保持到文件中,将文件上传到 Cloud Storage,然后使用 Dataflow 导入文件。建议采用的文件格式包括 AVRO 和 CSV。如需了解详情,请参阅建议用于批量迁移的格式

处理限制条件

如果您的架构对输入表定义了限制条件,请确保在数据导入期间不会违反这些限制条件。限制条件包括:

  • 外键:可以为边缘对节点的引用定义外键限制条件。
  • 交织:边缘输入表可以在节点输入表中交织。这种交织定义了父子关系,并隐含了父级必须在创建子级之前存在这一限制条件。

交织组织中的父级和外键限制条件中的被引用实体必须先加载。这意味着,您必须先加载图表中的节点,然后再加载边缘。如果您在加载边缘所连接的节点之前加载边缘,则在加载过程中可能会遇到错误,表明某些键不存在。

如需实现正确的导入顺序,请使用 Google 提供的模板为每个阶段定义单独的 Dataflow 作业,然后按顺序运行这些作业。例如,您可以运行一个 Dataflow 作业来导入节点,然后运行另一个 Dataflow 作业来导入边缘。或者,您也可以编写一个用于管理导入序列的自定义 Dataflow 作业

如需详细了解 Google 提供的模板,请参阅以下内容:

如果您以错误的顺序导入,作业可能会失败,或者可能只会迁移部分数据。如果只迁移了部分数据,请重新执行迁移。

提高数据加载效率

如需提高数据加载效率,请在将数据导入 Spanner 后创建二级索引并定义外键。此方法仅适用于初始批量加载或存在停机时间的迁移过程。

验证数据迁移

迁移数据后,请执行基本查询以验证数据是否正确。在源数据库和目标数据库上运行以下查询,以验证结果是否一致:

  • 统计节点和边缘的数量。
  • 统计每个标签的节点和边缘数量。
  • 计算每个节点和边缘属性的统计信息(数量、总和、平均值、最小值、最大值)。

配置割接和故障切换机制

配置割接和故障切换机制

后续步骤