用途:为数据库模式变更产出完整、安全的迁移计划,确保应用持续可用、数据一致,且每个阶段可独立回滚。默认采用 expand/contract 模式:先扩展模式兼容新旧状态,迁移应用,再收缩移除旧状态;不把模式变更与数据回填放在同一次部署迁移中。
主要能力:要求提供当前与目标模式、迁移原因、数据库引擎、数据量、部署约束与回滚窗口;输出含迁移概览、向后兼容分析表、四阶段(扩展、回填+双写、强制+切换、收缩)、数据验证计划、性能影响评估(锁类型与时长)、部署运行手册及质量检查与反模式清单。
使用方式:按阶段执行 SQL,例如扩展阶段 ALTER TABLE users ADD COLUMN org_id UUID NULL 与 CREATE INDEX CONCURRENTLY;回填用批量 UPDATE 加 pg_sleep 暂停;强制阶段用 ADD CONSTRAINT ... NOT VALID、VALIDATE CONSTRAINT、ALTER COLUMN SET NOT NULL;收缩阶段 DROP COLUMN。应用需在过渡期双写。
适用场景:PostgreSQL、MySQL、SQLite、CockroachDB 等引擎的模式变更,尤其大表加列、回填、加非空约束、改类型、重命名、删列与索引调整。
限制:资料以 PostgreSQL 示例为主,其他引擎语法需自行适配;具体耗时、负载增幅、回滚窗口等需按实际数据量填写,资料未提供固定数值;收缩阶段为破坏性操作,删列数据不可恢复。