本文档介绍了将数据和应用迁移到 Spanner 图。我们将介绍迁移阶段和推荐的工具 具体取决于源数据库和其他因素。
将图迁移到 Spanner Graph 涉及以下核心阶段:
- 收集您的应用要求。
- 设计 Spanner 图架构。
- 将您的应用迁移到 Spanner 图。
- 测试和调整 Spanner Graph。
- 将数据迁移到 Spanner 图。
- 验证数据迁移。
- 配置切换和故障切换机制。
为了优化架构和应用以提升性能,您可能需要迭代设计架构、构建应用,以及测试和调整 Spanner Graph。
收集应用要求
若要设计符合应用需求的架构,请收集以下要求:
- 数据建模
- 常见查询句式
- 延迟时间和吞吐量要求
设计 Spanner 图架构
如需了解如何设计 Spanner 图架构,请参阅 Spanner 图架构概览了解基本概念,并参阅创建、更新或删除 Spanner 图架构了解更多示例。如需针对常见查询模式优化架构,请参阅设计 Spanner 图架构的最佳实践。
将应用迁移到 Spanner 图
首先请阅读有关将 应用 然后阅读本部分中的指南,了解 Spanner 图 应用迁移指南。
连接到 Spanner 图
如需了解如何以编程方式连接到 Spanner Graph,请参阅创建、更新或删除 Spanner Graph 架构以及 Spanner Graph 查询概览。
迁移查询
Spanner Graph 查询接口与 ISO GQL 兼容,并且包含额外的 openCypher 语法支持。如需了解详情,请参阅面向 openCypher 用户的 Spanner 图表参考文档。
迁移变更
如需迁移应用的变更逻辑,您可以使用 Spanner 表 变异机制。如需了解详情,请参阅插入、更新或删除 Spanner 图 数据。
测试和调整 Spanner 图
有关如何测试和优化架构和应用性能的 Spanner 指南适用于 Spanner Graph。学习内容 Spanner 图性能优化最佳实践,请参阅 设计 Spanner 图架构的最佳实践 和 调整 Spanner 图查询的最佳实践。
将数据迁移到 Spanner Graph
要迁移关系型数据库中的数据,请参阅迁移您的 数据。
如需移动图表数据库或非关系型数据库中的数据,您可以使用 将数据从源数据库转换为文件,将文件上传到 Cloud Storage, 然后使用 Dataflow 导入文件。建议的文件格式包括 AVRO 和 CSV。如需了解详情,请参阅批量迁移的推荐格式。
处理约束条件
如果您的架构对输入表定义了约束条件,请确保在数据导入期间不会违反这些约束条件。限制条件包括:
- 外键:可以为边对节点的引用定义外键约束条件。
- 交错:边缘输入表可能会交错在节点输入表中。这种交错定义了父子关系,其中隐含的约束条件是,父项必须先存在,然后才能创建子项。
必须先加载交错组织中的父级,以及外键约束条件中被引用的实体。这意味着,您必须先加载图中的节点,然后再加载边。如果您先加载边,然后再加载边连接到的节点,则可能会在加载过程中遇到错误,指明某些键不存在。
为了实现正确的导入顺序,请使用 Google 提供的模板来定义 为每个阶段单独运行 Dataflow 作业,然后在 序列。例如,您可以运行一个 Dataflow 作业来导入 运行另一个 Dataflow 作业以导入边缘。 或者,您也可以编写一个用于管理导入顺序的自定义 Dataflow 作业。
如需详细了解 Google 提供的模板,请参阅以下内容:
如果导入顺序错误,作业可能会失败,或者只有部分数据 可能被迁移如果仅迁移了部分数据,请执行迁移 。
提高数据加载效率
如需提高数据加载效率,请创建二级索引并定义外部索引 将数据导入 Spanner。此方法仅适用于初始批量加载或在有停机时间的迁移期间。
验证数据迁移
迁移数据后,请执行基本查询以验证数据是否正确。对源数据库和目标数据库运行以下查询 以验证结果是否匹配:
- 统计节点和边的数量。
- 计算每个标签的节点数和边数。
- 计算每个节点和边缘属性的统计信息(计数、总和、平均值、最小值、最大值)。