enempluie
@enempluie
Познающий

В чем суть миграций БД?

Здравствуйте.
В данный момент изучаю Flask, проходя данный туториал:
https://blog.miguelgrinberg.com/post/the-flask-meg...
Так как никакого опыта работы с БД я не имею (совсем чайник), то возникло несколько вопросов после прочтения:
https://blog.miguelgrinberg.com/post/the-flask-meg...

Автор данного туториала использует ORM SQLAlchemy.
После прочтения осталось неясным:
1. Что такое миграция, для чего конкретно нужна и как это связанно с сохранением данных?
2. Чем миграция отличается от db_upgrade or db_downgrade?
3. Что будет, если миграции не производить?

По данным ссылкам ничего не нашел (так и не понял, зачем они мне нужны):
1. ru.stackoverflow.com/questions/325882/Зачем-нужны-миграции - Stack Overflow
2. Зачем нужны миграции? - Toster
  • Вопрос задан
  • 15419 просмотров
Решения вопроса 1
sim3x
@sim3x
1. Что такое миграция, для чего конкретно нужна и как это связанно с сохранением данных?
переход от одной структуры БД к другой без потери косистентности

2. Чем миграция отличается от db_upgrade or db_downgrade?
миграция подразумевает как прямое изменение апгрейд, так и обратное изменение - даунгрейд

3. Что будет, если миграции не производить?
миграции можно не делать,
если данные не важны и их можно просто удалить из БД,
если приложение не развивается и/или не меняет структуру хранения
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@awesomer
СУБД можно разделить на 2 группы:

  1. С заранее определенной схемой данных (определенным списком таблиц и их колонок)
  2. И бессхемные


СУБД с жесткими схемами и шустрее и лучше оптимизируются.
Но обладают очень неприятным недостатком - вы не можете вот так легко и просто начать туда записывать новый вид данных, не предусмотренный при начальном создании БД.
Процесс преобразования БД, при котором меняется схема (таблицы и их колонки; вспомогательные вещи такие как индексы и пр.) - и называется миграцией.
Причем важный момент - изменения в структуру базы данных могут вноситься, когда она уже давно существует и наполнена важной информацией, которую нельзя потерять, что еще больше затрудняет процесс.
И еще важный момент:
Как правило та или иная версия программы рассчитана на работу или со старой или с новой схемой базы данных. Не одновременно со старой и новой. То есть перед, тем как вы начнете эксплуатировать новую версию - вам обязательно нужно произвести миграцию. И после того как произведете миграцию - уже нельзя будет использовать старую версию программы. Что еще дополнительно усложняет процедуру перехода на новую версию программы.
Ответ написан
Рекомендую ознакомиться с хорошим мануалом по миграциям в Django - возможно это вас приблизит к пониманию сути процесса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
PitchMe Санкт-Петербург
от 180 000 ₽
DevStation Новосибирск
от 90 000 до 120 000 ₽