Leave a comment

Comments 4

vasfed June 2 2011, 21:02:58 UTC
А как обеспечивать строгое соответствие состояний базы ревизиям клиентского кода?
(тяжелые случаи типа split-brain рассматривать стоит отдельно)
Имхо на текущий момент ничего лучше механизма rails-style обратимых миграций пока нет

Reply

sparkboy June 3 2011, 07:53:45 UTC
Это все таки отдельная архитектура, а не обобщенный инструмент ведения всех изменений=)
Посмотрел Ruby немножко, решение очень классное, не въехал в некоторые детали. Изменения в самой хранимой процедуре как они держат? Хранимки ведь могут быть ведь очень специфическими.

Reply

vasfed June 3 2011, 08:20:32 UTC
Суть в том, что напрямую в базе изменения запрещены, на каждое изменение создается "миграция" - по сути это пара любых действий над базой, упрощенно - одно из них приводит базу в состояние N из N-1, другое - обратно (если обратного нет - то миграция необратимая)
Код миграций хранится в VCS вместе с кодом приложения, а в базе есть служебная таблица с данными о том, какие миграции над базой проводились.
Соответственно можно легко приводить базу в нужное состояние для нужной версии кода.
Причем это общее решение для схемы и данных (например вполне нормальными считаются миграции типа "перелить все данные с конвертацией формата в другую таблицу, а первую грохнуть"), покрывает не только хранимки.

Reply


kitmaster June 5 2011, 12:35:13 UTC
Че-то журнал все сложнее и сложнее для меня становится) Девчонок что ли своих выкладывай)

Reply


Leave a comment

Up