
- Baza
- Migratsiya
- Backend
- Ta'lim
Добавил новый курс и не тронул старые данные
24
Сегодня добавил на платформу курс по Python-бэкенду. Сам курс был не самой большой задачей — основное время ушло на изменение базы.
Проблема в том, что в базе уже есть пользователи и их результаты. Новому курсу требовалось несколько новых полей, а любое изменение несёт риск повредить существующие данные.
Было два пути. Первый — перестроить таблицы и перенести данные. Выходит чисто, но если ошибусь в одном месте, результаты пропадут. Второй — только добавлять: старые поля не трогать, добавить новые и разрешить им оставаться пустыми.
Выбрал второй. Он не особенно красив — теперь у части записей в базе есть незаполненные поля. Но важно другое: старые данные остались нетронутыми полностью. Даже если бы миграция не сработала, терять было бы нечего.
Чтобы проверить, сначала прогнал всё на копии базы. На копии сработало, потом запустил на настоящей. Этот шаг очень соблазнительно пропустить, но я однажды его пропустил и результат мне не понравился.
Курс добавился, существующие пользователи ничего не заметили. Лучшая миграция та, которую никто не заметил.