使用架构迁移程序扩展将 Cassandra 架构转换为 Azure DocumentDB

本指南使用 Visual Studio Code 中的 Azure DocumentDB 架构迁移程序扩展将 Apache Cassandra 架构转换为 Azure DocumentDB。 该扩展使用 AI 分析 Cassandra 架构文件,包括 SOLR 搜索配置和查询模式,并生成具有集合定义、分片键建议、索引和已翻译查询的 Azure DocumentDB 数据模型。

该扩展支持两个 AI 提供程序:GitHub Copilot(通过现有Copilot订阅)和 Azure OpenAI(使用自己的资源和 API 密钥)。

先决条件

  • Visual Studio Code 1.85.0 或更高版本。
  • 以下任一人工智能提供方:
    • GitHub Copilot:已安装 VS Code Copilot 扩展的有效 Copilot 订阅。
    • Azure OpenAI:具有已部署模型的 Azure OpenAI 资源,例如gpt-4o
  • 从源集群导出的 Cassandra 架构定义文件。 有关支持的文件类型,请参阅 “导出架构文件 ”。

导出架构文件

在开始之前,请从 Cassandra 群集导出架构定义和查询模式。 该扩展接受以下文件类型:

文件类型 说明
CQL 架构文件 包含 CREATE TABLECREATE TYPE语句和 CREATE INDEX 语句的文件
SOLR 配置文件 schema.xml 文件
DML 文件 包含 DML 语句的文件

可以导入包含这些文件类型组合的单个文件或整个文件夹。 分析文件夹时,该扩展会将所有文件的结果合并到单个项目中。

Tip

导出尽可能多的查询示例。 AI 使用这些模式来建议对 Azure DocumentDB 的等效 MongoDB 查询语言(MQL)表达式和优化索引。

安装扩展

该扩展目前以预览版的形式提供。 若要运行它,请克隆存储库并在Visual Studio Code中启动扩展主机。

  1. 克隆 azure-documentdb-schema-migrator 存储库。

  2. 在Visual Studio Code中打开克隆的文件夹。

  3. 打开终端并运行以下命令以安装依赖项:

    npm install
    
  4. F5 以打开一个已加载该扩展的新 VS Code 扩展开发主机窗口。

创建迁移项目

项目将架构文件、分析工件和转换输出集中在同一个工作区中。

  1. 在 VS Code 活动栏中打开 Azure DocumentDB 架构迁移程序面板。
  2. 选择“创建新项目”
  3. 输入项目的名称。
  4. 选择 AI 提供程序并对其进行配置:
    • GitHub Copilot(建议):从可用Copilot模型列表中选择要使用的模型。
    • Azure OpenAI:输入终结点 URL、部署名称和 API 密钥。 该扩展安全地将 API 密钥存储在 VS Code 的机密存储中。
  5. 选择“ 创建项目”。

导入架构文件

  1. “资源管理器” 面板中展开您的项目。
  2. “架构文件”部分选择“导入架构文件”。
  3. 从文件系统中选择导出的架构文件夹。

导入的文件显示在项目的 “架构文件 ”部分下,使用与源选择相同的文件夹层次结构进行组织。

分析架构文件

该扩展将分析每个导入的文件或文件夹,并将实体、索引和查询模式提取为项目。

“架构文件 ”部分中,右键单击文件或文件夹,然后选择“ 分析文件 ”或 “分析文件夹”。

该扩展会自动检测每种文件类型,并应用相应的分析:

源文件类型 已生成构件
CQL 架构文件 架构、索引和查询
SOLR 配置文件 (schema.xml 仅限索引
DML 文件 仅限查询
混合文件夹 从 CQL 文件中整合出的架构,以及从所有文件中整合出的索引和查询

注释

使用 CREATE TYPE 声明的用户定义类型(UDT)可指定嵌套属性的名称和数据类型。 该扩展将 UDT 内联扩展到引用它们的表中,从而保留原始字段名称。 匿名嵌套类型(例如元组的集合)会被转换为使用诸如 field1field2 之类的通用字段名称。 UDT 定义会出现在工件中供参考,但不会被直接转换为 Azure DocumentDB 集合。

分析结果会显示在项目的 Artifacts 部分下。 每个项目都标有其类型: 架构索引查询

转换为 Azure DocumentDB

添加至少一个项目后,运行转换以生成完整Azure DocumentDB 迁移架构。

  1. “生成的项目 ”部分中,右键单击节标题。
  2. 选择“转换为 Azure DocumentDB”。

该扩展运行多阶段 AI 分析:

  1. 架构建模:将 Cassandra 表映射到 Azure DocumentDB 集合,确定分片键,并推荐相关实体(UDT)的嵌入策略。
  2. 查询转换:将 CQL 和 SOLR 查询模式转换为 MQL 等效项。
  3. 索引建议:按照 ESR 规则(相等、排序、范围)生成复合索引和部分索引定义。
  4. 索引优化:合并冗余索引或重复索引并验证最终索引集。

转换输出在项目的 “转换输出 ”部分下保存为 JSON 文件,包括:

  • 包含分片键选择的集合定义。
  • 针对所有可查询字段的索引建议。
  • MQL 中的已翻译查询模式。

该扩展将此文件用作下一步的输入,这将生成 MongoDB shell 脚本以将架构应用到群集。

重要

在将其应用到生产群集之前,请查看所有 AI 生成的建议。 根据实际查询模式和数据分布要求验证分片键选项。

生成 MongoDB shell 脚本

转换完成后,生成可供运行的脚本,以将架构应用到 Azure DocumentDB 群集。

  1. “转换输出 ”部分中,右键单击生成的输出文件。
  2. 选择“ 生成 Mongo Shell 脚本”。

该扩展创建 MongoDB shell 脚本,用于:

  • 使用建议的分片键创建集合。
  • 创建所有建议的索引。
  • 包括一个 JSON 文档架构模板,其中显示了每个集合的预期文档结构。

使用 MongoDB shellVisual Studio Code 的 DocumentDB 扩展,将这些脚本应用于 Azure DocumentDB 群集。