本文档介绍了将数据和应用迁移到 Spanner Graph 的过程。我们将介绍迁移阶段以及每个阶段的推荐工具,具体取决于您的源数据库和其他因素。
将图迁移到 Spanner Graph 涉及以下核心阶段:
- 收集应用要求。
- 设计 Spanner 图架构。
- 将应用迁移到 Spanner Graph。
- 测试和调整 Spanner Graph。
- 将数据迁移到 Spanner Graph。
- 验证数据迁移。
- 配置割接和故障切换机制。
为了优化架构和应用以提升性能,您可能需要迭代设计架构、构建应用,以及测试和调整 Spanner Graph。
收集应用要求
若要设计符合应用需求的架构,请收集以下要求:
- 数据建模
- 常见查询模式
- 延迟时间和吞吐量要求
设计 Spanner Graph 架构
如需了解如何设计 Spanner Graph 架构,请参阅 Spanner Graph 架构概览了解基本概念,并参阅创建、更新或删除 Spanner Graph 架构了解更多示例。如需针对常见查询模式优化架构,请参阅设计 Spanner 图架构的最佳实践。
将应用迁移到 Spanner Graph
首先,阅读有关迁移应用的一般 Spanner 指南,然后阅读本部分中的指南,了解 Spanner 图应用迁移指南。
连接到 Spanner Graph
如需了解如何以编程方式连接到 Spanner Graph,请参阅创建、更新或删除 Spanner Graph 架构以及 Spanner Graph 查询概览。
迁移查询
Spanner Graph 查询接口与 ISO GQL 兼容,并包含额外的 openCypher 语法支持。如需了解详情,请参阅面向 openCypher 用户的 Spanner 图表参考文档。
迁移更改
如需迁移应用的更改逻辑,您可以使用 Spanner 表更改机制。如需了解详情,请参阅插入、更新或删除 Spanner 图数据。
测试和调整 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 后创建二级索引并定义外键。此方法仅适用于初始批量加载或在有停机时间的迁移期间。
验证数据迁移
迁移数据后,请执行基本查询以验证数据是否正确。在源数据库和目标数据库上运行以下查询,以验证结果是否匹配:
- 统计节点和边的数量。
- 统计每个标签的节点数和边数。
- 计算每个节点和边属性的统计信息(计数、总和、平均值、最小值、最大值)。