delta’s diary

プログラミングとか

db migration toolどうやって選ぶ?

db migration toolは世の中にたくさんあるので使いたいものを使えばいいと思うが、自分が選ぶとしたらこんな基準があるかなというやつ。

migration toolって何ができたら嬉しいか

検討ポイント 理由 優先度
checksumを確認している DBが壊れるのは絶対に避けたい。おかしいデータを入れさせない。 high
生のSQLで記述する (好み)使っているtoolがもし更新されなくなった時に変えが効くように。学習コストもDSL記述より低い。 high
コマンドライン実行できる アプリに統合した形(railsなど)だと、そのwebアプリを捨てることが一生できなくなってしまうのでできれば避けたい。 high
金額 無料の方が嬉しい(当たり前)。flywayとかはライセンス料が意外と高い。 middle
dryrunができる 気軽にロールバックできるようにすればいいのでそこまで問題ではない。 low
rollbackができる rollbackをmigration toolに任せてしまうと意図から外れた変更が起こりかねないので慎重にやるためにも手運用で十分。 low

なので自分はflyway(free)をコマンドラインで使うのが好き。

勿論寿命が短いアプリとか、それぞれ適材適所あると思うのでその時にあった物を使うのが一番大事。

こういうdb migration toolいいよとかあったら教えてください。