現在使用可能なサブコマンド一覧
以下に、現在の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プラグイン版が提供されている (ダウンロードはこちらのページ から)。
同IDEはまだ開発中であり、品質としてはα版並みだということだ。ロールバックやDiffはサポートされておらず、バグもまだ多いようであるが、チェンジログファイルを手書きする必要がなくなるのは非常に嬉しい点だ。
以上でLiquiBaseの解説は終わりだ。ソースコードの管理や単体テストに関してはかなりのレベルで自動化が進んでいるが、データベースのスキーマ管理に関しては、DBAの手作業に頼っているプロジェクトもまだまだ意外と多いのではないだろうか。
LiquiBaseを使用すれば、そうしたわずらわしい管理作業から解放され、かつ変更履歴の管理が今まで以上に厳密化できる。間違いなく「使って損はないツール」だと筆者は思うので、読者の皆さんもぜひ一度試してみることをお勧めする。