Flyway と Liquibase の比較

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