flyway を触ってみた
0時に寝て4時に起きてタイムライン眺めながらだらだらして6時半に起き上がった。
データベースの移行処理⌗
半年前から導入したいという話しは聞いていたものの、先送りになっていたライブラリに flyway がある。データベースの移行処理のためのスクリプト (sql) を管理するツールでどの移行スクリプトを実行したかを記録したり、未適用の処理を自動で適用してくれたりする。spring boot だとすぐ組み込める状態になっていて Community Plugins and Integrations: Spring Boot をみながら設定したらすぐに動いた。flyway 自体の設定も Common Application Properties を参考に spring boot の設定ファイルで行える。
例えば、こんな感じ。
spring:
flyway:
 enabled: true
 schemas: public
 locations: classpath:db/migration
 baseline-version: 0
 baseline-on-migrate: true
移行処理の履歴情報は flyway_schema_history
テーブルに保持される。既存のテーブルが存在して flyway の履歴データがない場合 (初回起動時) に移行処理を実行するかどうかを baseline-on-migrate で決める。実行するなら baseline-version でどのバージョンをベースラインとするかも設定できる。ゼロにすることで V1
からの sql ファイルを適用してくれる。ベースラインの考え方は実際に何度かデータベースの初期状態を変えて実行しないとわかりにくいかもしれない。
Read other posts