SuperAPI AI 工具集

db-migration-validation

数据与分析

查看项目

更新于 10-15 17:22

技能介绍

用途:这是 AI-DLC 数据库迁移的校验与测试阶段,在 Construction 阶段获批后使用,用来证明源库与目标库之间“相同输入得到相同值”(函数/查询)以及“相同输入产生相同净效果”(过程/DML)。方法论见 engines/<pair>/checks/equivalence-spec.md,需替换为当前引擎对(如 oracle-to-postgresql、sqlserver-to-mysql)。

分工:dbmig 负责确定性工作(采样数据、运行测试、比较、报告),由 Kiro 依据真实数据生成测试用例。

运行模式:silent(默认)下任何测试或核对失败都记录到 migrations/<project>/follow-up.yaml(及 .md),运行继续、不阻塞,结束时汇总待办项;interactive 下额外提示输入或修正,失败以非零退出码呈现。

主要步骤:一、按 testing.data_load 装载数据,dev/test 用 python -m dbmig migrate-data --schema <S> --workers 8 --project <P>,方法可选 toolkit(默认)或 fdw(仅 PostgreSQL 目标,慢速 VPN 场景,加载后默认删除 FDW 对象,可加 --fdw-keep / --fdw-cleanup),prod/大型用外部 AWS DMS。二、数据就绪后执行 python -m dbmig apply-schema --schema <S> --project <P> --post-data 应用被推迟的外键与触发器,这是门控写入。三、用 python -m dbmig compare --schema <S> --project <P> 核对行数。四、用 python -m dbmig gen-tests --schema <S> --project <P> 抽取可调用对象与真实样本,人工为每个待处理单元写 .test.yaml,函数比较返回值,过程用探针查询前后快照比较增量。五、用 python -m dbmig run-tests --schema <S> --project <P> 在事务中运行并回滚,结果写入等价性报告。六、对失败项分类,链接到转换对象与手册参考,修复后回到 Construction 重新转换并重测。

限制:装载与过程测试会写目标库,属门控操作,应使用专用测试 schema/数据库;若过程自带 COMMIT,回滚无法撤销,只能对一次性目标测试。结束时停在门控“Approve the equivalence test results?”,带未决项继续须显式确认。