По порядку Senior Eloquent, N+1 и миграции обновлено
Переименование колонки без простоя
Вопрос
Расставьте шаги безопасного переименования колонки name в full_name в работающем приложении.
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1Фоновая задача переносит старые данные пачками
- 2Миграция удаляет колонку
name - 3Релиз: код перестаёт писать в
name - 4Релиз: код пишет в обе колонки, читает из
name - 5Миграция добавляет колонку
full_name(nullable) - 6Релиз: код читает из
full_name
Показать ответ и разбор
Коротко
Паттерн «расширить и сузить» (expand and contract): на каждом шаге старая и новая версии кода совместимы с текущей схемой, поэтому деплой и откат проходят без ошибок и блокировок всей таблицы.
Правильный порядок
- 1Миграция добавляет колонку
full_name(nullable) - 2Релиз: код пишет в обе колонки, читает из
name - 3Фоновая задача переносит старые данные пачками
- 4Релиз: код читает из
full_name - 5Релиз: код перестаёт писать в
name - 6Миграция удаляет колонку
name
Разбор
Паттерн «расширить и сузить» (expand and contract): на каждом шаге старая и новая версии кода совместимы с текущей схемой, поэтому деплой и откат проходят без ошибок и блокировок всей таблицы.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.