观点:你的测试无法看到移徙会破坏什么——干跑 它在克隆一号绿色测试套件上是判断AI生成的迁移的错误工具,因为测试会与后迁移计划相悖,从不观察数据消失的中间状态.
向上迁移是经过审查的可见文物,而向下迁移则被视为事后考虑,尽管这是部署失误的唯一安全网。
自由模型访问使问题的结构化:生成成本降至零,因此迁移量会上升,每增加一次迁移会将表面乘以未经审查的数据丢失.
披露:这篇文章是作为MonkeyCode产品推广的一部分而编写的.
测试验证目的地,而不是行程 当一个测试套件运行在迁移的数据库上时,它确认应用程序可以读取新的计划,但它不能确认迁移保留了它应该保存的数据.
测试跑道在迁移执行后连接,因此它从未看到一列被丢弃,一表被重新命名,或者约束被默默地放松的瞬间.
通过每个测试的迁移仍然可以破坏生产数据,因为测试是为了验证应用行为,而不是迁移安全.
标准的缓解是一个中转数据库,但中转不能替代干跑,因为它有不同的数据、不同的体积和不同的使用模式。
我推荐的干跑使用一个具有代表性数据样本的生产计划克隆,它通过每一步的数据完整性检查来进行迁移的两个方向.
克隆人不需要大;每张桌子有几千行就足以暴露出最具破坏性的模式.
五步走的干燥工作流程 工作流程是故意机械化的,因为目标是去除核查过程中的判断力,保留人类的注意力,以达到迁移的意图: Clone the schema并加载一个数据样本——丢弃目前的schema,创建一个新的数据库,并加载一个有代表性的生产数据片.
绘制基线图——记录行数、无效费率和制约在迁移触及任何事情之前就计算在内。
再次应用上升的迁移和快照——运行人工智能生成的迁移并记录相同的度量.
第三次应用下行迁移和快照——运行下行迁移,并再次记录衡量标准。
比较所有三个快照——向上迁移只应改变补丁的意图,向下迁移应完全恢复基线.
以下脚本执行步骤二至步骤五用于 PostgreSQL : 剧本收录了三个结构度量衡——表数,约束数,和"非虚"属性分数,足以捕捉到最常见的破坏性迁移模式.
生产级版本还应记录每行的计数和一栏的无效率,然后通过三个快照加以传播。
关键属性不是下移执行时没有出错;而是图和数据返回基线状态.
能够捕捉到Schema修复失败的图案的数据检查是必要的,但还不够,因为数据损坏能够成功向下迁移。
列类型更改可能不可逆地转换值,而下移会在数据被损坏时恢复类型.
捕捉这些问题的检查是你们为进行数据质量审计而运行的检查: 平面行数——任何大小变化超过迁移意图的表格都是一面红旗.
列为空速率——这一列在迁移前从未无效,在表示数据损失后无效.
重复检测——增加独特约束的迁移不应默默地合并行.
外国密钥完整性——下行迁移应恢复确切的参考行.
这些检查在克隆上运行是便宜的,免费的服务器选项使得克隆本身