Azure Cosmos DB 迁移助手通过由 AI 驱动的引导式工作流和内置的最佳实践能力,简化并加速从 RDBMS 到 Azure Cosmos DB 的迁移。 它将手动分析替换为结构化建议,有助于导航关键设计选择,例如非规范化、分区和NoSQL数据建模模式。 在 Visual Studio Code 的 Azure Cosmos DB 扩展中提供,它将引导你完成从关系数据库(例如 Oracle、Db2、SQL Server、PostgreSQL 或 MySQL)到 Azure Cosmos DB for NoSQL 的 AI 辅助迁移。
重要
此功能目前以预览版提供。 安装 VS Code 扩展后,在 VS Code 中选择“切换到预发行版本”,切换到预发行版本。
关系数据库适用于规范化、事务性工作负载,但新式应用程序通常需要灵活的架构、弹性缩放和全局分布。 Azure Cosmos DB是一个托管的全局分布式NoSQL数据库,其中包含 JSON 数据模型、水平缩放、低延迟、可调整一致性、基于 RU 的吞吐量、自动索引和内置矢量搜索,以支持 AI 驱动的相似性查询。 手动将关系应用程序现代化以NoSQL非常困难且耗时,需要高影响的选择(例如非规范化、分区键选择和数据建模模式),这需要深入了解 RDBMS 和NoSQL技术。
Visual Studio Code中的迁移助手提供了一个基于阶段的引导式工作流,用于评估架构、应用程序代码和访问模式;生成 Cosmos DB 容器设计(包括分区键和索引建议);预配目标数据库和容器;加载示例数据;并帮助重构应用程序代码(全部在单个端到端流中)。 迁移项目将写入 .cosmosdb-migration/ 工作区中的文件夹,以便可以暂停、恢复、检查输出、将其提交到源代码管理,或根据需要重新运行步骤。
先决条件
- 已安装 Visual Studio Code
- Azure Cosmos DB扩展(预发行版本)
- 可在 Visual Studio Code 中使用的 GitHub Copilot
- 包含要迁移的应用程序的工作区
- 数据库架构文件
- 容量信息和访问模式(可选)
- 一个 Azure 订阅和用于登录并预配 Azure Cosmos DB 资源的权限,或者一个本地 Azure Cosmos DB 模拟器
打开迁移助手
可以使用命令面板中的以下命令启动和管理迁移:
- Azure Cosmos DB:新迁移... — 打开迁移助手并在所选工作区文件夹中创建项目
.cosmosdb-migration/。 - Azure Cosmos DB:打开现有迁移... — 重新打开来自
.cosmosdb-migration/文件夹或project.json的现有迁移。 - Azure Cosmos DB:删除迁移 - 从工作区视图中删除迁移,而无需删除磁盘项目。
执行第一阶段:探索
Discovery 会分析您的工作区,并收集迁移所需的核心输入信息:架构 DDL、数据量统计和访问模式。 它还生成描述源应用程序和目标环境的发现报告。
打开包含要迁移的应用程序的工作区。
从命令面板运行 Azure Cosmos DB: New Migration…,或通过 VS Code 中的 Azure 图标进行访问。
在迁移助手面板中,允许助手扫描工作区来推断语言、框架、ORM 和部署上下文。
为包含 DDL 的源数据库提供 数据库架构文件 ,并选择性地提供 Volumetrics 和 Access 模式 信息。
- 卷数信息有助于估计 RU/s 并选择最佳分区键。 示例模板在 volumetrics.md (选择 “Open Volumetrics 模板”)中提供,包括估计行数、平均行大小、每秒读取事务数和每秒写入事务数。 可以采用此格式提供数据,或使用 AI 读取输入数据,并使用模板生成数据。
- 访问模式信息有助于设计容器和分区策略。 示例模板位于 access-patterns.md (选择 “开放访问模式模板”),包括读取和写入模式,例如按顺序、按列表、创建、更新和删除以及延迟要求。 可以使用 AI 模型设置所需模板中的数据的格式。
- 若要在将这些文件添加到迁移project后将其删除或重新上传,请在Project资源管理器中将其从 phases/1-discovery/schema-ddl/、phases/1-discovery/volumetrics/或 phases/1-discovery/access-patterns/中删除。
手动填写其他存储库详细信息(例如类型、语言和数据库),或选择“ 自动检测 ”以自动填充它们。
自动检测会遍历项目存储库并填写信息。 这些字段是可编辑的,因此,如果需要,可以更新它们。
选择“ 生成发现报告”以启动发现。
查看迁移项目文件夹中生成的 discovery-report.md 。
你可以预期的产物:
phases/1-discovery/schema-ddl/phases/1-discovery/volumetrics/phases/1-discovery/access-patterns/phases/1-discovery/discovery-report.md
执行第 2 阶段:评估
评估会对收集到的访问模式进行规范化,并将表归入不同的域中。 可以拆分大型域并协调跨域关系。
选择 “运行评估”以启动评估。
查看提取并归一化后的访问模式。
审查域分组输出以及所有域拆分决策。
查看评估摘要。
你可以预期的产物:
phases/2-assessment/domains/phases/2-assessment/assessment-summary.md
运行阶段 3:架构转换
架构转换会为每个域设计对应的目标 Cosmos DB 容器模型。 设计循环可以涵盖容器形状、分区键选择、嵌入决策、访问模式验证、跨分区分析、索引编制和摘要。 快速转换路径可用于更小或更简单的架构。
- 通过选择 “运行架构转换”启动架构转换。
- 查看每个域建议的容器设计和相关建模指南。
- 查看分区键建议和访问模式验证结果。
- 审查索引指南和跨域摘要输出结果。
- 在预配之前,查看已合并的
model.json。
你可以预期的产物:
phases/3-schema-conversion/domains/phases/3-schema-conversion/model.jsonphases/3-schema-conversion/summary.md
运行阶段 4:预配
预配可让你登录到Azure,允许你选择或创建目标帐户和数据库,根据架构转换输出预配容器,并选择性地生成和加载示例数据。 助手还可以自动完成数据平面 RBAC 角色分配,以便你能够立即对新建的容器进行读取和写入操作。
选择Target Cosmos DB Environment开始预配。
出现提示时登录到Azure,然后选择或创建Azure Cosmos DB帐户和数据库。 使用下表作为指南选择正确的目标环境。
目标环境 最适用于 访问要求/先决条件 本地 Cosmos DB 模拟器 本地开发,提前验证,无Azure订阅 在本地Windows或 Docker 上安装 Cosmos DB 模拟器(Linux/Windows 容器);如果需要,请导入证书 Azure Cosmos DB帐户(现有) Cosmos DB 上的现有工作负荷 对订阅/资源组的访问权限;创建数据库/容器的权限;如果使用 Entra ID,则需具备 RBAC 角色(link) 预配新的 Cosmos DB 帐户 Azure专用环境中的早期验证 有效的 Azure 订阅;控制平面 RBAC 和 数据平面 RBAC
基于生成的模型预配容器。
(可选)生成和加载示例数据。
测试连接以验证对预配容器的访问。
你可以预期的产物:
phases/4-provisioning/-
phases/4-provisioning/sample-data.json(如果生成)
运行阶段 5:计划或开始迁移
完成第 1–4 阶段后,迁移助手 可以根据生成的工件构建一个包含丰富上下文的提示,并在 VS Code Copilot 对话助手 中打开该提示。 Copilot然后生成迁移计划(并且可以选择性地执行)。
- 在迁移助手面板中确认阶段 1-4 已完成。
- 选择下列选项之一:
- 计划迁移
- 开始迁移
- (可选)在提供的文本字段中输入其他迁移说明。
- 查看在
code-migration-plan.md中生成的.cosmosdb-migration/。 - 如果选择 “开始迁移”,请查看应用于工作区的更改,并使用源代码管理来管理或还原编辑(如果需要)。
计划迁移
迁移规划会生成code-migration-plan.md,并在不应用代码更改的情况下停止。 该文件位于 4-provisioning/ 中,如下所示。
查看并验证后 code-migration-plan.md ,即可转到 “开始迁移”。 如果需要更改,请提供 其他迁移说明 中的特殊说明并重新运行该过程。
开始迁移
启动迁移 将生成计划,并立即开始应用描述的代码更改。
了解磁盘上的迁移产物
迁移助手 将项目和阶段工件持久化存储在 .cosmosdb-migration/ 下:
| 项目工件 | Content |
|---|---|
project.json |
跟踪迁移进度、阶段完成状态和用户选择的配置的中央状态文件,从而启用迁移工作流的暂停/恢复和可重现性。 |
phases/1-discovery/ |
捕获源应用程序上下文,包括架构 DDL、访问模式和工作负荷特征,并生成定义迁移基线的发现报告。 |
phases/2-assessment/ |
分析和将关系实体分组到逻辑域中,规范化访问模式,并生成域级见解,以指导可缩放NoSQL数据建模决策。 |
phases/3-schema-conversion/ |
将关系域转换为优化的 Cosmos DB 容器设计,包括分区、索引和嵌入策略,与最佳做法保持一致。 |
phases/4-provisioning/ |
自动创建 Cosmos DB 资源(帐户、数据库、容器)、应用 RBAC,并选择性地生成用于验证和测试的示例数据。 |
code-migration-plan.md |
AI 生成的分步计划概述了如何重构应用程序代码(数据访问层、查询、SDK 使用情况),使之与新的 Cosmos DB 数据模型保持一致。 |
助手的范围
- 助手当前仅支持NoSQL Azure Cosmos DB。
- 源包括 Oracle、Db2、SQL Server、PostgreSQL 和 MySQL。
- 该助手侧重于发现、架构转换、数据建模、资源预配、转换有代表性的样本数据,以及将应用程序代码迁移到适用于 NoSQL 的 Azure Cosmos DB。 它当前不支持迁移实际生产数据。
后续步骤
- 通过尝试将不同的 RDBMS 平台迁移到 Azure Cosmos DB for NoSQL,探索 Visual Studio Code 中的 Azure Cosmos DB 扩展。
- 若要共享反馈或报告问题,请使用GitHub: https://aka.ms/cosmosdb-migration-assistant-report-issue
相关内容
- 关系与NoSQL数据 - .NET - 比较关系(SQL)和非关系(NoSQL)数据库,重点介绍其体系结构、数据存储方法和访问模式。
- 数据建模 - Azure Cosmos DB — 数据建模的最佳做法,以优化无架构数据库中的性能、可伸缩性和成本。
- 迁移少量一对多关系数据 - Azure Cosmos DB — 如何将关系数据迁移到适用于 NoSQL 的 Azure Cosmos DB。
- 使用 Visual Studio Code 连接和管理资源 - Azure Cosmos DB — 使用Visual Studio Code连接到NoSQL Azure Cosmos DB快速入门,包括查询、插入、更新和删除数据。
- Azure Cosmos DB Shell Visual Studio Code 扩展 - 提供无缝的集成体验,用于直接从代码编辑器管理和查询 Cosmos DB 数据库。