0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DBマイグレーションとは?仕組みと実務での使いどころを解説

0
Posted at

アプリケーション開発をしていると、途中で「データベースの構造を変更したい」という場面が必ず出てきます。

  • カラムを追加したい
  • テーブル構造を変更したい
  • 不要な項目を削除したい

こういった変更を安全かつ管理しながら行う仕組みが「DBマイグレーション」です。


DBマイグレーションとは?

DBマイグレーションとは、

データベースの構造変更をコードで管理する仕組み

のことです。


イメージで理解する

最初に、こんなテーブルがあったとします。

users
- id
- name

開発が進むと、次のような要件が出てきます。

  • メールアドレスを追加したい
  • パスワードも必要

するとテーブルはこうなります。

users
- id
- name
- email
- password

この「後から構造を変更する作業」がマイグレーションです。


なぜ普通にSQLで変更しないのか?

「ALTER TABLE(テーブルを構造を変更するDDLコマンド)でよくない?」と思うかもしれませんが、実務では問題があります。

① 履歴が残らない

誰が・いつ・何を変更したのか分からなくなります。


② 環境ごとの差異が出る

例えば:

  • 開発環境 → 変更済み
  • 本番環境 → 変更忘れ

といった事故が発生します。


③ チーム開発で破綻する

複数人がバラバラに変更すると、DBの状態が不一致になります。


マイグレーションの考え方

マイグレーションでは、

「変更を順番に積み上げる」

という考え方をします。

-- 001_create_users.sql
CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(100)
);

-- 002_add_email.sql
ALTER TABLE users ADD COLUMN email VARCHAR(255);

-- 003_add_password.sql
ALTER TABLE users ADD COLUMN password VARCHAR(255);

このように変更をファイルとして管理し、順番に実行していきます。


メリット

✔ 履歴が残る

変更内容がすべて記録される

✔ 再現性がある

どの環境でも同じ状態を再現できる

✔ チーム開発に強い

誰が作業しても同じ結果になる


よく使われるツール

実務では専用ツールを使います。

  • Flyway
  • Liquibase
  • Rails migration
  • Django migration
  • Prisma

これらは以下を自動でやってくれます:

  • 実行済み管理
  • 順番実行
  • ロールバック(元に戻す)

実務で使われるタイミング

ここが一番重要なポイントです。


① 新機能追加

例:

  • 年齢カラムを追加
  • 在庫数を追加

カラム追加のマイグレーションを作成


② テーブル設計変更

例:

  • カラム名変更
  • データ型変更

既存データを壊さないよう慎重に実施


③ 不要なカラム削除

本番データがあるため慎重に行う


④ 複数環境への反映

実務では以下の環境があります:

  • 開発環境
  • 検証環境
  • 本番環境

同じ変更を安全に適用するためにマイグレーションを使う


⑤ CI/CDでの自動実行

最近の開発では、

  • GitHub Actions
  • 自動デプロイ

と組み合わせて、アプリのデプロイ時にマイグレーションも実行されます。


実務での注意点(重要)

■ 本番DBにはデータがある

→ ミスするとデータ破損のリスク


■ ロールバックを考える

→ 失敗時に元に戻せる設計にする


■ 破壊的変更は段階的に行う

例:

  1. 新カラム追加
  2. データ移行
  3. 旧カラム削除

一気にやらないのがポイント


まとめ

DBマイグレーションとは、

  • DBの構造変更をコードで管理する仕組み
  • 履歴・再現性・安全性を担保するもの

そして実務では、

DB変更が発生するたびにほぼ必ず使われる重要な仕組み

です。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?