【フライウェイ】

Flyway とは?

最終更新:
💡 DBの変更を順番に適用して履歴を残す

データベースのスキーマ変更をバージョン管理するマイグレーションツール。SQLファイルに番号を振って順番に適用することで、DBの変更履歴を追跡できます。

📌 このページのポイント
Flyway:未適用の変更を順に適用 SQLファイル V1 適用済み V2 適用済み V3 未適用 Flyway 履歴を確認 未適用を実行 V3 参照 適用 DBの履歴テーブル V1 記録あり V2 記録あり V3 今回追加
番号付きマイグレーションの例。緑のV1・V2は適用済みで、橙のV3だけを実行して履歴へ追加します。Repeatableは変更時に再適用する別の方式です。
ひよこ ひよこ
Flywayって何をするツールなの?
ペンギン先生 ペンギン先生
データベースのテーブルやカラムなどの変更を、履歴を残しながら適用するツールだよ。変更の手順をファイルで管理し、どこまで適用したかをDB側で追跡するんだ。
ひよこ ひよこ
具体的にはどう書くの?
ペンギン先生 ペンギン先生
標準の命名例はV1__create_users.sqlだよ。V、バージョン、アンダースコア2個、説明、.sqlという形。番号付きマイグレーションは、バージョンを数値として並べて順に適用するんだ。
ひよこ ひよこ
同じSQLが何度も実行されない?
ペンギン先生 ペンギン先生
番号付きのものは適用済みを履歴テーブルで確認し、1回ずつ適用するよ。チェックサムも記録するので、適用済みファイルの変更を見つける手掛かりになる。共有環境に適用したSQLを直すより、新しい番号で修正を追加するのが基本だよ。
ひよこ ひよこ
全部の変更が1回限りなの?
ペンギン先生 ペンギン先生
Repeatableという別の方式もあるよ。R__create_view.sqlのように番号を付けず、チェックサムが変わると再適用する。その実行では未適用の番号付きマイグレーションの後に動き、繰り返し実行できるSQLにしておく必要があるんだ。
ひよこ ひよこ
間違えたら自動で元に戻せる?
ペンギン先生 ペンギン先生
任意の変更を自動で戻せるわけではないよ。TeamsのUndoでは対応する逆操作のSQLを用意するが、削除データの復元や、DDLをまとめて取り消せないDBで途中失敗した変更には限界がある。復旧方法は変更内容とDBの仕組みに合わせて準備しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Flyway」って出てきたら「DBスキーマのバージョン管理ツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Flyway」 = 渡り鳥の飛行ルート
💬 英語のflywayは渡り鳥が通る飛行ルートのこと。DBの変更を順に辿るイメージで覚えられるね。

参考資料

← 用語集にもどる