Что такое Zero Downtime Migrations? Проблема с добавлением NOT NULL колонки без дефолта на уровне БД.

Zero-downtime migration выполняется по совместимым этапам. NOT NULL без значения нельзя просто добавить к заполненной таблице: старые строки и старый код ещё не умеют заполнять колонку.

Короткий ответ

Что ответить на собеседовании

Zero-downtime migration выполняется по совместимым этапам. NOT NULL без значения нельзя просто добавить к заполненной таблице: старые строки и старый код ещё не умеют заполнять колонку.

Подробный разбор

Ответ с пояснениями

Zero-downtime migration выполняется по совместимым этапам. NOT NULL без значения нельзя просто добавить к заполненной таблице: старые строки и старый код ещё не умеют заполнять колонку.

Обычно сначала добавляют nullable-колонку, выпускают код, который её пишет, и небольшими пакетами заполняют старые данные. Затем проверяют отсутствие NULL и вводят ограничение способом, подходящим конкретной СУБД. Старую версию приложения удаляют лишь после перехода всех экземпляров. Даже быстрая операция схемы может ждать блокировку, поэтому задают timeout, наблюдают нагрузку и планируют откат. Временный default допустим только при корректном бизнес-смысле.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее