【リキベース】

Liquibase とは?

最終更新:
💡 DB変更を記録し、適用する順序と履歴を管理

データベースの変更をchangesetとして記述し、changelogと実行履歴を使って管理するツール。XML・YAML・JSON・SQLを利用でき、対応DB、復旧方法、機能やライセンスの条件を確認して運用します。

📌 このページのポイント
Liquibase:DB変更と実行履歴を管理changelogchangeset 1changeset 2XML/YAML等Liquibase履歴と照合変更を適用対象DBテーブル等実行履歴SQL記述も可能DBごとの対応と戻す処理を確認差分から生成した変更定義も、適用前に点検
対象DBの実行履歴(DATABASECHANGELOG)を照合して変更を適用します。変更タイプ・記述形式・DB・版で対応範囲が異なり、削除したデータまで自動で復元する保証ではありません。
ひよこ ひよこ
Liquibaseって何を管理するの?
ペンギン先生 ペンギン先生
テーブルを作る、列を追加する、といったDBの変更をchangesetという単位で記述する。changelogにまとめて適用し、どの変更を実行したかをDB側の履歴と照合するツールだよ。
ひよこ ひよこ
SQLを書かなくても使える?
ペンギン先生 ペンギン先生
XML・YAML・JSONで変更タイプを記述する方法と、SQLを記述する方法がある。対応する変更タイプからDB向けのSQLを生成できるけど、全DBに同じ機能があるわけではない。対応状況やデータ型を確認しよう。
ひよこ ひよこ
一度実行した変更は、毎回実行される?
ペンギン先生 ペンギン先生
通常は履歴を使って再実行を避ける。changesetはid・author・ファイルパスで識別され、内容のチェックサムも確認する。実行済みの変更を書き換えるとエラーになることがあるので、追加変更として管理する。再実行を指定する属性には別の条件があるよ。
ひよこ ひよこ
失敗したら自動で元に戻せる?
ペンギン先生 ペンギン先生
必ずではない。自動のロールバックSQLを生成できる変更タイプもあるけど、dropTableなどは戻す処理を定義する必要がある。formatted SQLでは自分でロールバックを書く。失ったデータや外部処理まで自動で復元する保証ではないんだ。
ひよこ ひよこ
diffで移行ファイルも作れる?
ペンギン先生 ペンギン先生
diffは差分の比較、diff-changelogは差分からchangelogを生成するコマンドだよ。生成できないオブジェクトや依存関係もあるため、そのまま本番へ適用せず内容を点検する。バックアップと復旧手順も用意しよう。
もっと詳しく知りたい人へ

Communityなら、どの版でも同じ条件で使える?

版や配布物で機能・提供条件が異なります。現在のCommunityリポジトリはFSLを案内しており、Secureには商用の追加機能があります。「無料版なら何でも可能」と判断せず、利用する版のライセンスとコマンドの対応を確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Liquibase」って出てきたら「DB変更をchangesetと履歴で管理するツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Liquibase」 = データベース変更管理ツールの名称
💬 変更履歴をソース管理と合わせて扱うための製品・プロジェクト名です。

参考資料

← 用語集にもどる