Сталкер - блог веб-программиста - Комментарии к "Обновления для разработчиков и людей — несерьезно о серьезном." /blog/alek%24/obnovleniya-dlya-razrabotchikov-i-lyudei-%E2%80%94-neserezno-o-sereznom RSS лента комментариев к "Обновления для разработчиков и людей — несерьезно о серьезном." ru Спасибо за ценное дополнение /blog/alek%24/obnovleniya-dlya-razrabotchikov-i-lyudei-%E2%80%94-neserezno-o-sereznom#comment-1486

Спасибо за ценное дополнение :)

UNIX timestamp предпочтителен для того, чтобы минимизировать шанс того, что два программиста попытаются создать одновременно миграции с одинаковыми номерами — шанс. Ну а конфликты в логике таких миграций как ни крути придётся решать вручную, как и с любым кодом, тут ничего не сделаешь, да.

Что же касается автоматических диффов схем - такого софта довольно мало, он довольно платный и справляется не очень хорошо. Поэтому с точки зрения возможности обновления с любой ревизии на любую миграции все же удобны.

Mon, 19 Mar 2012 02:53:45 +0000 Alek$ comment 1486 at http://stalker-x.ru
Думаю database migration /blog/alek%24/obnovleniya-dlya-razrabotchikov-i-lyudei-%E2%80%94-neserezno-o-sereznom#comment-1485

Думаю database migration появился задолго до появления java / ruby / etc.. :) Разработчики сложнх систем всегда их использовали.

Unix timestamp использовать конечно можно, но практика показывает, что не удобно. Достаточно обычной нумерации 00-*.sql, 01-*.sql и так далее. Хотя конечно можно приписывать его в конец, но на самом деле он не решает ничего. Два программиста могут модифицировать одни и те же таблицы и тут уже.. кто успел тот и съел. :)

Пару слов о типичном случае миграции базы данных с которой работает одно или несколько приложений:
Сам процесс миграции можно разделить на 3 основных части: before (до отсановки сервера приложений / приложения), critical (во время остановки сервера) и post (после запуска сервера, новая версия приложения). Таким образом можно минимизировать процесс простоя сервера в неработоспособном состоянии (минимизировав количество патчей которые содержатся в секции critical). В before выносим созидающие патчи, в post - подчищающие. Лучше выполнять стадию post предыдущей версии приложения перед before следующей (вдруг понадобятся данные которые мы хотим удалить)

Так же для миграции можно использовать немного другой подход. Существует модель базы данных. От версии к версии эта модель преобразуется. Существуют программные средства делающие diff между двумя моделями в автоматическом режиме. То, что не возможно сделать в автоматическом режими ложится на руки dba или программистов.

Статья неплохая, начинающим разработчикам должно быть интересно. Не стоит бояться многобуквенных текстов. :)

Sun, 18 Mar 2012 17:58:25 +0000 Vladislav Bauer comment 1485 at http://stalker-x.ru