宣言的スキーマ管理のためのデータマイグレーション

宣言的スキーマ管理をする場合に「データマイグレーションをどうするか」という課題があって、Ridgepoleについては「データマイグレーションはほかのツールでやってほしい」というポリシーで開発してきた。

C社にいた頃はLiquibaseを使って「GitHubSQLファイルがマージされたら冪等に実行する」という社内ツールを作ったが、現職でも宣言的スキーマ管理をするケースが増えて「データマイグレーションをどげんかせんといかん」という機運になってきたので、テータマイグレーション用のツールを作った。

github.com

qrevはSQLファイルを実行し、履歴を管理するツール。

設計方針は以下の通り。

  • up・downという概念はない。ロールバックもない
  • 成否にかかわらず一回実行されたら再実行はしない
  • ただし失敗したSQLファイルを編集したら再実行できる

極めてシンプルなツールだが、データマイグレーションには必要十分ではないかと考えている。

開発フローに投入して様子見中。