現在使用可能なサブコマンド一覧

以下に、現在のLiquiBaseで使用可能なサブコマンドの一覧を示す。これを見れば、LiquiBaseがまさに「かゆい所に手が届く」ツールであるかがお解りだろう。

migrate DBスキーマをチェンジログに合わせて最新にする
migrateSQL migrateコマンドによって発行されるSQLを出力する
rollback <tag> タグが指定された時点までDBの状態をロールバックする
rollbackToDate <date/time> 指定した日時までDBの状態をロールバックする
rollbackCount <value> 指定した回数分の変更をロールバックする
rollbackSQL <tag> タグが指定された時点までDBの状態をロールバックするためのSQLを、標準出力に表示する
rollbackToDateSQL <date/time> 指定した日時までDBの状態をロールバックするためのSQLを、標準出力に表示する
rollbackCountSQL <value> 指定した回数分の変更をロールバックするためのSQLを、標準出力に表示する
futureRollbackSQL チェンジログを適用した状態から、現在のDBの状態までロールバックするためのSQLを出力する
generateChangeLog データベースの状態から、チェンジログを生成して表示する
diff [diff parameters] DBの比較結果を表示する
diffChangeLog [diff parameters] diffの結果をチェンジログとして表示する
dbDoc <outputDirectory> DBの状態とチェンジログを、Javadocライクなドキュメントとして出力する
tag 現在の状態にタグを付ける
status まだ適用されていない変更セットの数を表示する
validate チェンジログにエラーがないかチェックする
changelogSyncSQL チェンジログを同期するためのSQL (databasechangelogテーブルへのクエリ) を出力する
listLocks データベースのチェンジログをロックしているユーザを表示する
releaseLocks データベースのチェンジログに対するロックを解放する
dropAll ユーザが保持する全てのDBオブジェクトを削除する

利用可能なリファクタリング操作

データベースに対して行えるリファクタリング操作(createTable、addColumnなど)に関する一覧はこちらのページ を見ていただきたい。それぞれの操作に関して、ロールバックが可能かどうかも明示してある。

ここに挙げられた各種の操作は、先に挙げた書籍『Database Refactoring』で挙げられているものに対応している。まだ全てのリファクタリングがサポートされているわけではないが、今後のバージョンアップで追加されていくことに期待したい。

LiquiBaseの起動方法

本稿では、LiquiBaseの起動方法としてコマンドラインツールの紹介を行った。LiquiBaseは他にも以下のような手段を用いて、データベースのマイグレーションを行うことができる。

  • Ant
  • Maven
  • Servletのリスナ (サーバ起動時にマイグレーションが行われる)
  • Spring (liquibase.spring.SpringMigratorをBean定義することで、コンテキスト初期化時にマイグレーションが行われる)
  • Grails (プラグインとしてインストールでき、ほぼ全てのサブコマンドが利用可能)

LiquiBase IDE

また、LiquiBaseをベースにしたIDEも開発中だ。Eclipseをベースとして開発されており、スタンドアローン版とEclipseプラグイン版が提供されている (ダウンロードはこちらのページ から)。

LiquiBase IDE

同IDEはまだ開発中であり、品質としてはα版並みだということだ。ロールバックやDiffはサポートされておらず、バグもまだ多いようであるが、チェンジログファイルを手書きする必要がなくなるのは非常に嬉しい点だ。

以上でLiquiBaseの解説は終わりだ。ソースコードの管理や単体テストに関してはかなりのレベルで自動化が進んでいるが、データベースのスキーマ管理に関しては、DBAの手作業に頼っているプロジェクトもまだまだ意外と多いのではないだろうか。

LiquiBaseを使用すれば、そうしたわずらわしい管理作業から解放され、かつ変更履歴の管理が今まで以上に厳密化できる。間違いなく「使って損はないツール」だと筆者は思うので、読者の皆さんもぜひ一度試してみることをお勧めする。