データベース運用・管理

データベースマイグレーション でーたべーすまいぐれーしょん

マイグレーションスキーマ変更バージョン管理ロールバックFlywayLiquibase
DBマイグレーションって何のためにあるの?

簡単に言うとこんな感じ!

DBマイグレーションは「データベースの設計変更をバージョン管理する仕組み」だよ!テーブルを追加・変更するSQLを順番に記録しておくことで、「このシステムの本番DBと開発DBがいつ食い違ったか」を追跡できて、必要なら元に戻すこともできるんだ。


データベースマイグレーションとは

データベースマイグレーション(Database Migration) とは、データベーススキーマ(構造)への変更をバージョン管理しながら安全に適用・ロールバックできる仕組みです。

アプリケーションのコードはGitで管理できますが、データベースのスキーマ変更は「ALTER TABLE」などのSQL文で行われ、追跡・管理が難しい問題がありました。マイグレーションツールはこの問題を解決し、DB変更をコードと同じように管理します。


マイグレーションの仕組み

マイグレーションファイル(例)

V001__create_users_table.sql    → テーブル作成
V002__add_email_to_users.sql    → カラム追加
V003__create_orders_table.sql   → 新テーブル追加

ツールは「どこまで適用済みか」をDBの管理テーブルで追跡し、未適用のマイグレーションだけを順次実行します。


主なマイグレーションツール

ツール言語特徴
FlywayJava/汎用シンプルなSQLベース
LiquibaseJava/汎用XML/YAML/SQLで柔軟に記述
Django MigrationsPythonDjango ORMと統合
ActiveRecord MigrationsRubyRails標準
Prisma MigrateTypeScript型安全なスキーマ管理
golang-migrateGoシンプルなCLIツール

歴史と背景

  • 2001年前後:Rails(ActiveRecord)がマイグレーションの概念を開発者に広める
  • 2010年代Java・Go等の他言語でもマイグレーションツールが普及
  • 現在CI/CDパイプラインに組み込み、自動でマイグレーションを適用する運用が標準化

マイグレーションの注意点

  • 本番DBへの適用は慎重に:大量データのある本番でALTER TABLEはロック・パフォーマンス問題が発生
  • 後方互換性を意識する:カラム削除はアプリ側の対応が先
  • ロールバックの設計:DownマイグレーションはUpと同じくらい重要

関連用語