知识卡片
Flyway迁移即数据库版本控制
内容
数据库结构的变更理应像代码一样被版本控制,Flyway 把每一次数据库变更叫作一次”迁移”:带版本号的迁移按顺序执行且只执行一次(适合建表、加列这类结构变化),可重复迁移则是内容一变(校验和变化)就重新执行(适合视图、存储过程这类可以整体替换的对象)。Flyway 会自动建一张 flyway_schema_history 表记录哪些迁移已经跑过,这张表的作用几乎等价于 Git 仓库的提交日志——按顺序记录了数据库从空白状态一路演变到当前状态经历过的每一步变更,任何一个环境的数据库状态都能靠回放这份记录被确定性地重建出来。发散:这个”变更历史即真相来源”的思路和不可变构建的哲学是同一套——数据库结构不再是”当前长什么样”这种可以被随意手动改动的活的状态,而是”从空开始按顺序应用了哪些迁移脚本”这个可复现、可审计的过程。
参考来源
《Cloud Native Spring in Action》第5章《Persisting and managing data in the cloud》