Что такое…

Что такое миграция базы данных — это git для схемы, а не перенос данных

Иллюстрация: таблицы-колоды с версионными метками едут по конвейеру в схему

Слово «миграция» сбивает с толку. Кажется, что это перенос данных — с одного сервера на другой, из старой базы в новую. Почти всегда это про другое.

Миграция — это изменение структуры базы: добавил колонку, завёл новую таблицу, переименовал поле. И записывается оно так, чтобы его можно было повторить у себя, у напарника и на проде — одинаково. По сути это коммит, только не для кода, а для схемы.

Что такое миграция на самом деле

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

База помнит список уже применённых миграций. Поэтому она всегда знает, на каком «шаге» находится сейчас.

Данные при этом обычно не трогаются. Меняется форма, в которую они складываются, — не содержимое.

Сравни с базой данных: сама база — это полки, а миграция — распоряжение «добавь ещё одну полку» или «подпиши её иначе».

Почему нельзя просто поменять таблицу руками

Можно. Один раз, у себя. Проблема начинается на втором компьютере.

Ты добавил колонку в панели у себя — приложение заработало. Напарник скачал твой код, запустил — падает: у него в базе такой колонки нет. На проде — та же история. Структура кода и структура базы разъехались, и никто не помнит, что именно ты крутил руками три недели назад.

Миграция чинит это так же, как git чинит вопрос «а что мы вообще поменяли»: изменение записано в файл, файл лежит в репозитории, применяется одной командой у всех одинаково.

Как это работает: шаг вперёд и шаг назад

У аккуратной миграции две стороны.

  • Up (вперёд) — что сделать: добавить таблицу, колонку, связь.
  • Down (назад) — как это откатить: удалить то, что добавил.

Зачем down? Чтобы можно было отступить. Выкатил миграцию, поймал баг — команда «откат», и структура вернулась на шаг назад. Без down ты как в игре без сохранений: вперёд можно, назад — только собирать заново.

Порядок тоже важен. Миграции применяются по очереди, как коммиты в git: пятая не встанет раньше четвёртой. Поэтому у каждой есть номер или дата — это её место в очереди. Маленький шаг, у которого есть порядок и который можно отмотать.

Почему это важно тебе — даже если ты один

«Я один, мне не с кем синхронизировать базу» — частая мысль. Но напарник у тебя есть всегда: это ты сам через месяц и твой прод.

Три причины держать миграции с самого начала:

  • Прод — это второй компьютер. У тебя на ноуте одна база, в облаке — другая. Миграция — единственный честный способ докатить изменение туда, ничего не забыв.
  • ИИ пишет тебе схему. Просишь агента «добавь таблицу для комментариев» — он генерит миграцию. Не сохранишь её в репозиторий — завтра не вспомнишь, что и когда поменялось.
  • Откат спасает вечер. Плохое изменение схемы без миграции откатываешь руками и по памяти. С миграцией — одной командой.

Где ты встретишь миграции первым делом

Как только заведёшь базу через Supabase, Firebase или любой инструмент с ORM — миграции появятся сами. Многие сервисы генерят их за тебя: ты меняешь модель в коде, инструмент видит разницу и пишет миграцию. Тебе остаётся её просмотреть и применить.

Главное усвоить сразу: изменение схемы — это не «кликнул в интерфейсе», а файл, который едет в репозиторий вместе с кодом. Тогда база и код всегда рассказывают одну историю.

Миграция и бэкап — это одно и то же?

Нет. Бэкап — это копия данных на случай потери. Миграция — это изменение структуры, которое едет вперёд вместе с кодом. Бэкап отвечает на «как вернуть данные», миграция — на «как поменять форму базы одинаково у всех».

Нужны ли миграции для крошечного проекта?

Если база вообще есть — да, самые простые. Даже одна колонка, добавленная руками, однажды сломает прод, который про неё не знает. Миграция стоит пары минут и снимает целый класс «у меня работает, а в облаке нет».

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →