~/VibeHandbook

Глава 09 · 04

Миграции: безопасное изменение схемы

Ваша схема будет меняться — вы добавите столбец, переименуете таблицу, добавите индекс. Миграция — это версионированный, повторяемый скрипт, который описывает одно такое изменение. Миграции важны потому, что схема на вашем ноутбуке, на ноутбуке вашего коллеги и в продакшене должна оставаться идентичной.

Правила, которые делают миграции безопасными:

  • Никогда не редактируйте базу данных вручную в продакшене. Напишите миграцию.
  • Миграции движутся вперёд. Каждая из них — новый файл; вы не переписываете старые, которые уже выполнились.
  • Деструктивные изменения делайте осторожно. Удаление столбца или таблицы стирает данные навсегда. Сначала сделайте резервную копию.
  • Аддитивные изменения самые безопасные. Добавление столбца, допускающего null, редко что-либо ломает; переименование или удаление может сломать работающий код.

Инструменты вроде Prisma, Drizzle или миграций Rails генерируют и отслеживают их за вас. Доверьте это им.

Миграция состоит из двух половин: изменение для применения (up) и как его отменить (down). Надёжный инструмент генерирует оба, так что плохой деплой можно откатить начисто:

-- up: добавить необязательное bio, безопасно применять вживую
ALTER TABLE users ADD COLUMN bio TEXT;

-- down: обратить изменение
ALTER TABLE users DROP COLUMN bio;

По-настоящему опасные миграции — это переименования и смены типа, потому что старый код и новая схема на мгновение расходятся. Профессиональный паттерн — разбить их на аддитивные шаги: добавить новый столбец, заполнить его, переключить код на чтение из него и удалить старый столбец только в более позднем деплое, когда на него уже ничто не ссылается. Это кажется медленным, но это разница между плавным релизом и всплеском ошибок 500 для каждого пользователя посреди деплоя.

Хотите офлайн-версию?

Получите PDF + EPUB + скачиваемую библиотеку промптов + обновления версий.

$ Получить PDF — $39