В чем смысл миграций

174
24 апреля 2018, 01:38

Здравствуйте!

Встречал инструменты для создания миграций, например artisan в Laravel или db-migrate для NodeJS, но никак не пойму их смысл, если, например, можно просто создать файл с sql запросами на создание таблиц и не мучаться.

Что скажете?

Answer 1

Миграции нужны для того, чтобы через GIT или просто через файлы проекта передать изменения состояния БД

Вам проще руками что-то делать, а теперь ситуации:

1.Командная работа

  • вы работаете не один!
  • вы что-то поменяли в структуре (добавили, изменили) и отправили в GIT
  • человек подтянул изменения и у него не работает, так как код написан под другую структуру БД

Не в чате же каждый раз пересылать инфу всем коллегам, что вы поменяли :)

2. Работа с несколькими проектами на одной кодовой базе

  • вы работаете один, но локальный проект должен быть в 3 версиях на продакшне
  • вы что-то поменяли и теперь вам в 3 местах нужно лазать и менять все это добро, особенно если изменений много

3.Туда-сюда изменения

  • Вы сделали что-то не так в коде и решили вернуть структуру БД
  • Вы ковыряете БД локальную, потом удаленную, когда могли просто набрать откат миграции

Я например в этих ситуациях бываю каждый час работы.

 

Итог

Миграции — передача состояния БД (с инструкциями отката состояний), которая гарантирована описана и может передваться через контроль версий или просто с кодом.

Откат или накат их можно добавить в автодеплой, и когда вы решили выкатить релиз, все само делается — гит подтянулся, миграции накатились, релиз выкатился

Отдельное преимущество:

Как правило имена миграций содержат дату в точности до миллисекунды, что позволяет системе понимать какую миграцию в какой очередности делать, если вы сделаете изменения через sql файлики — вам нужно будет решить проблему очереди, например когда новый сотрудник из ГИТ захочет развернуть проект, в какой очередности ему их грузить?

READ ALSO
Генератор уникальных значений php

Генератор уникальных значений php

Есть массив с датами

184
PHP Стандарты PSR

PHP Стандарты PSR

Уже несколько раз прочитал стандарты PSR для PHP, а именно PSR-0, PSR-1, PSR-2

189
Ошибка после favicon на вебсайте

Ошибка после favicon на вебсайте

У меня был сайт все нормально webmail/cpanel все былоТак потом вчера я favicon захоте поменять поменял все окей пошел спать

150