マイグレーション (migration)

マイグレーションは「移動、移住、移転」を意味する英語。

データベースにおけるマイグレーションは、システムを古い状態から新しい状態に移行するようなイメージ。

アプリ開発において、マイグレーションの内容をファイル上で管理・共有し、それぞれの PC でマイグレーションを行うことで、データベースの内部構造の整合性を保つことができます。

(アプリのソースコードとは違い)データベースはアプリを立ち上げているユーザーごとに中身が違うはずなので、開発者は「各々のDBにこうゆう操作しといてね」という指示書をソースコード上に書いとかないといけないといった感じです。

例えばあるECサイトで、次のバージョンからは商品情報にレビューが追加されます!ってなったとき、開発者は「Item モデルに review カラムを追加」という操作のマイグレーションファイルを記述し、ソースコードとして共有します。このバージョンにあげたアプリ管理者は、このマイグレーションファイルを元にマイグレーションを行うことによってめでたく彼のデータベースの Item モデルに review カラムが追加されます。マイグレーションしない限り、データベースは「商品にレビュー情報をつけられるなんて聞いてないよ」となってしまいます。

このようにデータベースへの操作内容をマイグレーションファイルとして共有しておけば、以前の状態に戻したいという時も、可逆な操作であればマイグレーションファイルの操作を巻き戻せば良いだけで済みます。