2024-11-19 · Pattern
用 Expand 与 Contract 安全地改数据库结构
先扩展、再迁移、最后收尾,让新旧代码同时运行也不中断服务。
前言
以零停机重命名字段为例,逐步说明双写入的过渡期,以及如何确认新旧两条路径的数据一致之后,再删除旧字段。
小事的复利
回顾 Pattern 的工作,真正的收获都不怎么华丽:一次命名修正、一个被删掉的配置、一份再也没改过的检查清单。
它们为什么留了下来
- 它们由一个人负责,而不是一个委员会。
- 它们上线时,附带了「何时会失效」的观察手段。
- 它们去掉了一个决策,而不是多写了一份文档。
直接拿走
挑一个这个月你已经抱怨过三次的痛点。那就是你的下一个项目——它已经证明过自己的生命力。
写在最后
大重写的故事更好听;小步复利的系统更好用。