chAlx
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору miwa Цитата: Наша практика показала, что единственный нормальный способ разработки базы данных - это инкрементальные скрипты. | Поэтому вы выбрали редкую СУБД без лога транзакций ;) Хотя не знаю, помогает ли на практике лог при обновлении метаданных. По-идее, из таблиц version history как раз и можно вытаскивать всю эту информацию: кто добавил, когда, что. Сравнение версий там вообще замечательное -- с sql-скриптами такого не получишь. Плюс в том, что это всё генерится автоматом и не требует никаких телодвижений (собрать скрипт, протестировать запуск на необновлённой базе, выложить в репозиторий). Минус в сложности инкрементального апдейта (у вас, видимо, несколько одинаковых баз, на которые такие скрипты удобно накатывать). Да и сгенерить recreate script на конкретную дату непросто. Откатываться в прошлое в обоих вариантах довольно неудобно по-сравнению с обычным бэкапом. Видимо, надо всё же разделять контроль версий и управление апгрейдами/бэкапами. Взять, например, добавление параметра в процедуру. Для апгрейда нужен sql-скрипт, отключающий все зависимые процедуры, обновляющий нужную, пересоздающий зависимые процедуры по-новой. При этом не особо важно, кто и как это изменение внёс. А для контроля и дебага как раз важно, кто и что именно: в истории версий мы увидим одну строчку с новым параметром, а не весь скрипт со всеми зависимостями. Остаётся придумать актуальный способ выдачи данных для git и предложить автору IBExpert добавить соответствующий экспорт в контроль версий, который уже есть. |