困难
- 如果数据库不能停机更新, 并且变更是不兼容的. 那么在变更期间, 旧的应用程序产生大量错误.
增加一列
- 首先需要变更数据库表结构, 新列中的值此时都为
NULL
. - 然后更改应用程序代码, 开始向数据库中插入包含新列的记录.
- 然后运行迁移程序为列式数据计算新列的值, 并更新历史数据.
- 最后可能会为新列添加上
NOT NULL
的约束.
删除一列
- 首先更改应用程序代码, 不再使用该列, 可能需要移除
NOT NULL
的约束. - 然后需要变更数据库表结构, 移除该列.
移动一列
- 首先需要修改应用程序代码, 进行双写.
- 然后需要运行迁移程序, 处理历史数据.
- 然后需要修改应用程序, 只读新表.
- 然后需要改为单写, 只写新表.
- 最后就可以移除旧的数据了.