По порядку Senior Eloquent, N+1 и миграции обновлено

Переименование колонки без простоя

Вопрос

Расставьте шаги безопасного переименования колонки name в full_name в работающем приложении.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    Фоновая задача переносит старые данные пачками
  2. 2
    Миграция удаляет колонку name
  3. 3
    Релиз: код перестаёт писать в name
  4. 4
    Релиз: код пишет в обе колонки, читает из name
  5. 5
    Миграция добавляет колонку full_name (nullable)
  6. 6
    Релиз: код читает из full_name
Показать ответ и разбор

Коротко

Паттерн «расширить и сузить» (expand and contract): на каждом шаге старая и новая версии кода совместимы с текущей схемой, поэтому деплой и откат проходят без ошибок и блокировок всей таблицы.

Правильный порядок

  1. 1
    Миграция добавляет колонку full_name (nullable)
  2. 2
    Релиз: код пишет в обе колонки, читает из name
  3. 3
    Фоновая задача переносит старые данные пачками
  4. 4
    Релиз: код читает из full_name
  5. 5
    Релиз: код перестаёт писать в name
  6. 6
    Миграция удаляет колонку name

Разбор

Паттерн «расширить и сузить» (expand and contract): на каждом шаге старая и новая версии кода совместимы с текущей схемой, поэтому деплой и откат проходят без ошибок и блокировок всей таблицы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.