Zero-downtime migration выполняется по совместимым этапам. NOT NULL без значения нельзя просто добавить к заполненной таблице: старые строки и старый код ещё не умеют заполнять колонку.
Что такое Zero Downtime Migrations? Проблема с добавлением NOT NULL колонки без дефолта на уровне БД.
Zero-downtime migration выполняется по совместимым этапам. NOT NULL без значения нельзя просто добавить к заполненной таблице: старые строки и старый код ещё не умеют заполнять колонку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Zero-downtime migration выполняется по совместимым этапам. NOT NULL без значения нельзя просто добавить к заполненной таблице: старые строки и старый код ещё не умеют заполнять колонку.
Обычно сначала добавляют nullable-колонку, выпускают код, который её пишет, и небольшими пакетами заполняют старые данные. Затем проверяют отсутствие NULL и вводят ограничение способом, подходящим конкретной СУБД. Старую версию приложения удаляют лишь после перехода всех экземпляров. Даже быстрая операция схемы может ждать блокировку, поэтому задают timeout, наблюдают нагрузку и планируют откат. Временный default допустим только при корректном бизнес-смысле.