2024-11-19 · Pattern

用 Expand 与 Contract 安全地改数据库结构

先扩展、再迁移、最后收尾,让新旧代码同时运行也不中断服务。

前言

以零停机重命名字段为例,逐步说明双写入的过渡期,以及如何确认新旧两条路径的数据一致之后,再删除旧字段。

小事的复利

回顾 Pattern 的工作,真正的收获都不怎么华丽:一次命名修正、一个被删掉的配置、一份再也没改过的检查清单。

它们为什么留了下来

  • 它们由一个人负责,而不是一个委员会。
  • 它们上线时,附带了「何时会失效」的观察手段。
  • 它们去掉了一个决策,而不是多写了一份文档。

直接拿走

挑一个这个月你已经抱怨过三次的痛点。那就是你的下一个项目——它已经证明过自己的生命力。

写在最后

大重写的故事更好听;小步复利的系统更好用。