SuperAPI AI 工具集

database-migration

数据与分析

查看项目

更新于 10-16 03:51

技能介绍

Database Migration 是一个围绕数据库 schema 与数据迁移的技能,强调在多种 ORM 与平台之间执行迁移,并提供回滚与零停机策略。资料显示,该技能不适用于与数据库迁移无关的任务,也不适用于其范围之外的领域或工具。

用途 资料列出的适用场景包括:在不同 ORM 之间迁移;执行 schema 转换;在数据库之间移动数据;实施回滚流程;零停机部署;数据库版本升级;数据模型重构。

主要能力 该技能覆盖 Sequelize、TypeORM、Prisma 的迁移写法与命令。Sequelize 使用 migrations/.js 文件,up 中创建表、down 中删除表,运行命令为 npx sequelize-cli db:migrate,回滚为 npx sequelize-cli db:migrate:undo。TypeORM 使用 migrations/-CreateUsers.ts 类,up 中 createTable、down 中 dropTable,运行命令为 npm run typeorm migration:run,回滚为 npm run typeorm migration:revert。Prisma 通过 schema.prisma 的 model User 定义,生成迁移命令为 npx prisma migrate dev --name create_users,应用为 npx prisma migrate deploy。

在 schema 转换方面,资料给出带默认值添加列、零停机重命名列、修改列类型的多步做法。重命名列采用三步:先添加新列并复制数据,再更新应用使用新列,最后删除旧列。修改列类型对大型表采用多步:添加新列、复制并转换数据、删除旧列、重命名新列。

数据转换部分给出复杂数据迁移示例,先查询记录,再逐条转换并更新,最后删除旧列;down 中则重建原列并回填。

使用方式 回滚策略方面,资料包含基于事务的迁移(transaction commit/rollback)与基于检查点的回滚(创建 users_backup 备份表,校验失败则恢复)。零停机迁移采用蓝绿部署式分阶段:先做向后兼容的变更,再部署同时写两列的代码,回填数据,部署读取新列的代码,最后删除旧列。跨数据库迁移示例处理 PostgreSQL 与 MySQL 的差异,例如 JSON 与 JSONB 类型选择。

限制 资料未提供该技能的具体安装命令、支持的平台范围之外的信息、收费或价格信息、性能数据或效果承诺。其资源列表包含 references/orm-switching.md、references/schema-migration.md、references/data-transformation.md、references/rollback-strategies.md、assets/schema-migration-template.sql、assets/data-migration-script.py、scripts/test-migration.sh。常见陷阱包括未测试回滚流程、在没有停机策略的情况下做破坏性变更、忘记处理 NULL 值、未考虑索引性能、忽略外键约束、一次性迁移过多数据。