Comments 6
А мы обычно так делаем
Добавляем поля, nullable или со значением по умолчанию
Релизим код который одновременно пишет в новые и старые поля, но читает только старые
Копируем данные
Релизим код который читает новые поля
Проверяем, что старые поля имеют значение по умолчанию или nullable
Если проблем нет, то релизим код который ничего уже не знает про старые поля
Удаляем старые поля
Мне кажется в статье не совсем правильно: переключатель должен включать запись новых, но не выключать запись старых.
Всю статью можно свернуть до 3 пункктов
Пишите данные и в новом формате и в старом
Скопируйте все старое в новое
Переключите чтение на новый формат
Переезд де факто завершен. Осталось только убрать за собой: Подождать недели две, отключить запись в старом формате и убрать за собой.
Если нужен замороченный flow с одновременной поддержкой старой и новой моделей:
создаете новую таблицу
мигрируете данные со старой
синхронизацию изменений реализуете при помощи триггеров
следующий апдейт дропает старую таблу и триггеры
хорошая статья
Нулевое время простоя при изменениях базы данных с помощью флагов функций — шаг за шагом