Flyway と Liquibase の比較
結論としてはFlywayを利用することにしました。
FlywayよりもLiquibaseの方が多機能であることは間違いない。
個人的には以下がLiquibaseで魅力的だった。
1.ロールバックができる。
2.ドキュメント出力できる。
3.DBが変わっても同じXMLファイルを利用できる。
ただ、実際に使ってみてメリットを感じなかった。
1.ロールバックができる。
→ロールバック用のSQLを書かないといけないっぽい。
実際にロールバックする際は手動で確認してからやりたいので、
個人的にこの機能は使わないと思う。
2.ドキュメント出力できる。
→別に必要ないレベルのドキュメントだった・・・。ないよりは全然いーんだけど・・・。
3.DBが変わっても同じXMLファイルを利用できる。
→DB変わることがない。変わったとしても、問題なく利用できるかわからない。
そして、自分の環境だと「xmlの属性指定でエラーが多発する」という致命的なデメリットがあった。
理由は不明だけど、 Liquibaseは最新バージョン使ってるから、Javaとかのバージョン問題なのかな・・・。
以下はエラーの一部。
Unexpected error running Liquibase: cvc-complex-type.3.2.2: 要素'sql'に属性'dbms'を含めることはできません。 Unexpected error running Liquibase: cvc-complex-type.3.2.2: 要素'column'に属性'remarks'を含めることはできません。
ドキュメント見て設定しても上記のようなエラーばっかり・・・。
これが今後発生していくと思うと、Liquibaseを利用しない方がいいかなと・・・。
Liquibaseに感じたメリットも個人的に微妙だったし・・・。
ということで、Flywayを採用。
Flywayは主に以下の2つの機能しかない。
・SQL実行履歴の閲覧
・マイグレーション動作は同じSQLを複数実行しないように制御してくるだけ
でもこれで十分だった。
LiquibaseはXMLベースで書くのが基本だけど、FlywayはSQLがそのまま書けるのも嬉しい。
実際に利用してみて不満を感じないので、今後もFlywayでいーか。
Flywayの環境別運用について書きました。
http://d.hatena.ne.jp/pospome/20150613/1434216556