Visual Studio Code 中适用于从 RDBMS 到 NoSQL 迁移的 Azure Cosmos DB 迁移助手(预览版)

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扩展Visual Studio 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 模拟器

打开迁移助手

可以使用命令面板中的以下命令启动和管理迁移:

  1. Azure Cosmos DB:新迁移... — 打开迁移助手并在所选工作区文件夹中创建项目.cosmosdb-migration/
  2. Azure Cosmos DB:打开现有迁移... — 重新打开来自 .cosmosdb-migration/ 文件夹或 project.json 的现有迁移。
  3. Azure Cosmos DB:删除迁移 - 从工作区视图中删除迁移,而无需删除磁盘项目。

VS Code Studio Azure 工作区中Azure Cosmos DB 迁移助手配置面板的屏幕截图,其中显示了项目名称和 AI 模型选择的初始对话框。

执行第一阶段:探索

Discovery 会分析您的工作区,并收集迁移所需的核心输入信息:架构 DDL、数据量统计和访问模式。 它还生成描述源应用程序和目标环境的发现报告。

  1. 打开包含要迁移的应用程序的工作区。

  2. 从命令面板运行 Azure Cosmos DB: New Migration…,或通过 VS Code 中的 Azure 图标进行访问。

  3. 在迁移助手面板中,允许助手扫描工作区来推断语言、框架、ORM 和部署上下文。

  4. 为包含 DDL 的源数据库提供 数据库架构文件 ,并选择性地提供 VolumetricsAccess 模式 信息。

    第 1 阶段发现部分的屏幕截图,其中显示了包含必需输入架构-ddl 文件的文件资源管理器文件夹,以及可选的访问模式、卷数项目和示例 Markdown 模板文件。

    • 卷数信息有助于估计 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/中删除。
  5. 手动填写其他存储库详细信息(例如类型、语言和数据库),或选择“ 自动检测 ”以自动填充它们。

    第 1 阶段发现中的数据库架构上传部分的屏幕截图,显示了“数据库架构”文件夹或“文件上传”选项,以及“应用程序信息”字段部分(包含一个可选的“自动检测”按钮)。

    自动检测会遍历项目存储库并填写信息。 这些字段是可编辑的,因此,如果需要,可以更新它们。

    阶段 1 应用程序信息部分的屏幕截图,其中显示了“自动检测”选项,用于填充项目、应用程序类型、编程语言、框架、RDBMS 数据库类型详细信息。

  6. 选择“ 生成发现报告”以启动发现。

    第 1 阶段发现报告的屏幕截图,显示了已上传的模式、容量分析文件以及用于生成发现报告的按钮。

  7. 查看迁移项目文件夹中生成的 discovery-report.md

你可以预期的产物:

  • phases/1-discovery/schema-ddl/
  • phases/1-discovery/volumetrics/
  • phases/1-discovery/access-patterns/
  • phases/1-discovery/discovery-report.md

第 1 阶段的屏幕截图,其中显示了完成状态,其中包含查看发现报表的选项、用于重新生成它的选项以及文件资源管理器中发现报告的链接。

执行第 2 阶段:评估

评估会对收集到的访问模式进行规范化,并将表归入不同的域中。 可以拆分大型域并协调跨域关系。

  1. 选择 “运行评估”以启动评估。

    第 2 阶段的屏幕截图,其中显示了“域评估”部分,其中使用生成的发现报告和“运行评估”按钮。

  2. 查看提取并归一化后的访问模式。

  3. 审查域分组输出以及所有域拆分决策。

  4. 查看评估摘要。

你可以预期的产物:

  • phases/2-assessment/domains/
  • phases/2-assessment/assessment-summary.md

第 2 阶段的屏幕截图,其中显示了“域评估”部分已完成,其中列出了文件资源管理器中的四个已标识域、表、代码映射详细信息和评估摘要文档链接。

运行阶段 3:架构转换

架构转换会为每个域设计对应的目标 Cosmos DB 容器模型。 设计循环可以涵盖容器形状、分区键选择、嵌入决策、访问模式验证、跨分区分析、索引编制和摘要。 快速转换路径可用于更小或更简单的架构。

  1. 通过选择 “运行架构转换”启动架构转换
  2. 查看每个域建议的容器设计和相关建模指南。
  3. 查看分区键建议和访问模式验证结果。
  4. 审查索引指南和跨域摘要输出结果。
  5. 在预配之前,查看已合并的 model.json

你可以预期的产物:

  • phases/3-schema-conversion/domains/
  • phases/3-schema-conversion/model.json
  • phases/3-schema-conversion/summary.md

阶段 3 的屏幕截图,显示“架构转换摘要”部分,其中展示了已转换为 Cosmos DB NoSQL 架构的域以及域到容器的映射。

运行阶段 4:预配

预配可让你登录到Azure,允许你选择或创建目标帐户和数据库,根据架构转换输出预配容器,并选择性地生成和加载示例数据。 助手还可以自动完成数据平面 RBAC 角色分配,以便你能够立即对新建的容器进行读取和写入操作。

  1. 选择Target Cosmos DB Environment开始预配。

  2. 出现提示时登录到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

    第 4 阶段的屏幕截图,其中显示了预配目标Azure Cosmos DB环境,其中包含选择“本地 Cosmos DB 模拟器”、“现有Azure Cosmos DB帐户”或预配新Azure Cosmos DB帐户的选项,包括成功的验证复选标记。

  3. 基于生成的模型预配容器。

  4. (可选)生成和加载示例数据。

  5. 测试连接以验证对预配容器的访问。

你可以预期的产物:

  • phases/4-provisioning/
  • phases/4-provisioning/sample-data.json (如果生成)

第 4 阶段的屏幕截图,其中显示了Azure Cosmos DB 数据资源管理器接口,其中显示了基于架构设计和填充的示例 JSON 数据创建的示例 Cosmos DB 容器。

运行阶段 5:计划或开始迁移

完成第 1–4 阶段后,迁移助手 可以根据生成的工件构建一个包含丰富上下文的提示,并在 VS Code Copilot 对话助手 中打开该提示。 Copilot然后生成迁移计划(并且可以选择性地执行)。

  1. 在迁移助手面板中确认阶段 1-4 已完成。
  2. 选择下列选项之一:
    • 计划迁移
    • 开始迁移
  3. (可选)在提供的文本字段中输入其他迁移说明。
  4. 查看在 code-migration-plan.md 中生成的 .cosmosdb-migration/
  5. 如果选择 “开始迁移”,请查看应用于工作区的更改,并使用源代码管理来管理或还原编辑(如果需要)。

计划迁移

迁移规划会生成code-migration-plan.md,并在不应用代码更改的情况下停止。 该文件位于 4-provisioning/ 中,如下所示。

第 5 阶段的屏幕截图,其中显示了“计划迁移”部分,其中包含用于生成应用程序代码迁移计划文档(包括 Cosmos DB 相关 SDK 更改)的按钮。

查看并验证后 code-migration-plan.md ,即可转到 “开始迁移”。 如果需要更改,请提供 其他迁移说明 中的特殊说明并重新运行该过程。

开始迁移

启动迁移 将生成计划,并立即开始应用描述的代码更改。

第 5 阶段的屏幕截图,其中显示了“开始迁移”部分,其中包含用于根据生成的迁移计划启动应用程序存储库重构的按钮。

了解磁盘上的迁移产物

迁移助手 将项目和阶段工件持久化存储在 .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。 它当前不支持迁移实际生产数据。

后续步骤