~/VibeHandbook
$39

09 · 04

マイグレーション: スキーマを安全に変える

あなたのスキーマは変わっていきます — カラムを追加し、テーブル名を変え、インデックスを追加します。マイグレーション とは、そうした1つの変更を記述した、バージョン管理された、繰り返し実行できるスクリプトです。マイグレーションが重要なのは、あなたのノートPC、チームメイトのノートPC、そして本番のスキーマが、同一に保たれなければならないからです。

マイグレーションを安全に保つルール:

  • 本番でデータベースを手作業で編集しない。 マイグレーションを書きます。
  • マイグレーションは前へ進む。 それぞれが新しいファイルです。すでに実行された古いものを書き換えてはいけません。
  • 破壊的な変更は慎重に。 カラムやテーブルを削除すると、データは永久に消えます。先にバックアップを取りましょう。
  • 追加的な変更が最も安全。 NULL許容のカラムを追加してもめったに何も壊れません。名前変更や削除は、稼働中のコードを壊しかねません。

Prisma、Drizzle、Rails migrationsのようなツールが、これらを生成・追跡してくれます。任せましょう。

マイグレーションは2つの半分でできています: 適用する変更 (up) と、それを取り消す方法 (down) です。信頼できるツールは両方を生成するので、まずいデプロイがきれいにロールバックできます:

-- up: 任意のbioを追加。稼働中に適用しても安全
ALTER TABLE users ADD COLUMN bio TEXT;

-- down: 取り消す
ALTER TABLE users DROP COLUMN bio;

本当に危険なマイグレーションは 名前変更型変更 です。古いコードと新しいスキーマが一瞬食い違うからです。プロのパターンは、それらを追加的なステップに分割することです: 新しいカラムを追加し、バックフィルし、コードがそれを読むよう切り替え、何も参照しなくなった 後の デプロイでようやく古いカラムを削除します。遅く感じますが、それが滑らかなリリースと、デプロイの最中にすべてのユーザーに500エラーが噴き出すこととの違いです。

オフラインでも読みたい?

PDF + EPUB + ダウンロード可能なプロンプトライブラリ + バージョンアップデートを入手しよう。

$ PDFを入手 — $39