对于企业和基于 web 的应用程序来说,Migration
就是将一个平台移到另一个平台。Database Migration
就是通过migration scripts
数据库从一个状态转换到另一个状态,每一个migration script
都会对数据库进行修改,修改的内容可能是创建一张新表、更新表的结构、更新表中的数据、删除一张表和创建索引,等等。一般迁移脚本会提供两个“互斥”功能,一个是Up
用于升级数据库,一个是Down
用于撤销数据库的升级。
为什么需要Database Migration
?数据库是个复杂的应用,具有无数不同的特征,行为,数据类型,以及支持工具和技术。在开发和维护一个数据驱动的应用程序时,数据库的schema
会发生改变,特别是在一个不断开发的项目中,随着需求的变化,数据库的schema
也会跟着变化,而追踪记录这些变化一向都是费成本的问题。
大部分项目都会有多个的环境(test, stage, prod),那么保证这些环境下的数据库的一致性的难度会成倍增加。比如,在开发应用的程序的过程中,创建一张新表、同时建立索引,那也就意味着,这些操作也需要在其它的每一个环境(test,stage,prod)发生,当然也包括团队其他成员的本地环境,这样才能保证数据库的一致性, 这个过程将面临很大的挑战。 为了让整个流程更加简单方便安全,可以给数据库加上版本控制功能,也就是数据库迁移功能,这样可以让团队在修改数据库结构或内容的同时,可以保持彼此本地环境数据库版本的一致性。
数据库迁移的工具:
Flyway
Java
MyBatis Migrations
Java
Sequelize
Node.js