Контроль версий для БД

DDT

Новичок
Контроль версий для БД

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

Надеюсь, многие знают, что такое контроль версий и для чего оно нужно. Известные программные продукты для контроля версий, как правило, применяться для работы с исходным кодом. А вот вопрос контроля версий структуры БД не рассматривается или я чего-то не знаю.

Вопрос ко знающим:
Существуют ли на свете методики и продукты для контроля изменений в структуре БД аналогично контролю исходного кода?
 

Активист

Активист
Команда форума
DDT
Вопрос задается раз в месяц. Пока готового решения типа SVN нет.
 

zerkms

TDD infected
Команда форума
И не будет, потому что со схемами производятся гораздо более комплексные изменения, чем с файлами (добавление, удаление, изменение строки)

-~{}~ 26.01.10 18:06:

разве что стоит упомянуть о миграциях. но в отличие от автоматически работающего свн'а - их придётся писать вручную.
 

Фанат

oncle terrible
Команда форума
Не, ну смотря что иметь в виду под "базой данных". Если пользовательский уровень, то модная когда-то технология вики и означает, собственно, базу знаний с контролем версий.

А если физический, то из бинари логов, наверное, что-то делать
 

zerkms

TDD infected
Команда форума
*****
бинарные логи необратимы. нельзя накатить лог "обратно".

хотя.... чисто принципиально - можно, конечно, взять дамп и накатить всё с начала до нужной позиции, но это всё не то...
 

Фанат

oncle terrible
Команда форума
А все-таки я бы задал сакраментальный вопрос "зачем".
 

Adelf

Administrator
Команда форума
В свое время наладил заливание текстов всех пользовательских процедур в свн. И получал с этого определенный профит.
Но структуру - не трогал. Слишком тонкие материи.
 

DDT

Новичок
Автор оригинала: *****
А все-таки я бы задал сакраментальный вопрос "зачем".
Есть "сильно" распределенная команда разработчиков (разные страны). Ищу способы оптимизации процесса внесения изменений в структуру БД.

-~{}~ 26.01.10 11:32:

P.S.
Ф_а_н_а_т, а зачем у тебя имя звездами заменяется? :)
 

akd

dive now, work later
Команда форума
поделюсь как это работало у нас на прошлой работе .. было .NET и мсскл, но это не важно в данном контексте.

была какая-то версия базы которая называлась base_start, была почти пустой и лежала в виде бекапа в свн.
потом была директория _db_scripts, где лежали скрипты версий в виде script_yyyymmddhhii.sql.
человек который приходил к совершенно новому брал base_start и специальной тулзой накатывал все скрипты версий по очереди, в итоге получал каррент дб.
потом девелопил шота свое, менял структуру и процедуры. после того как закончил, опять получал каррент версию и сравнивал со своей (тут иногда - очень редко, решал конфликты и т.д.) потом делал свой скрипт изменений (redgate sql compare) и коммитил его в свн под новую версию.
в базе хранилась история наката версий, т.е. на серваке клиента всегда можно было легко обновиться до актуальной версии той же тулзой.
надеюсь понятно описал.
 

Falc

Новичок
Как вариант, держать ДДЛ всех объектов базы в системе контроля версий.
У нас все исполняемые объекты (пакеты, процедуры, тригеры и прочее) лежат в svn.
Create table мы правда в svn не закатываем, но не вижу в этом ничего плохого.
Конечно же автоматического отката на нужную версию не будет, но всегда можно посмотреть историю изменений.
 

Alexandre

PHPПенсионер
есть готовые коммерческие продукты,

из свободного: мы используем mysql_diff
кладем дифы в svn
 

akd

dive now, work later
Команда форума
Alexandre
redgate sql compare это и есть mysql_diff только для мсскл.
 

Ilya Bous

Новичок
Не совсем в тему (наверно), но внесу пять копеек, коль скоро продукты RedGate были помянуты в предыдущем посте.
Есть подход рефакторинга баз данных, включающий в себя в частности хранение дельта-скриптов в системе контроля версий.
В общем ссылка по теме: http://sdexpo.ru/data/speakers_2007/sdmoscow_2007_evolutionarydatabasedesign_pramodsadalage.pdf
 

wIliaM

Новичок
Re: Контроль версий для БД

Автор оригинала: DDT
Вопрос ко знающим:
Существуют ли на свете методики и продукты для контроля изменений в структуре БД аналогично контролю исходного кода?
на самом деле есть и методики и продукты. все они не без недостатков.
например:
javabased database independent http://www.liquibase.org/
примитивный для php+mysql https://svn.limb-project.com/misc/migration/ (кстати для моих задач синхронизации изменений структуры БД между разработчиками хватает, сейчас используем его и для postgres. описание есть тут http://forum.limb-project.com/viewtopic.php?f=11&t=2315)
еще есть http://code.google.com/p/mysql-php-migrations/
 

AmdY

Пью пиво
Команда форума
ИМХО, данную проблему нужно решать на уровне приложения, а не сторонними средствами.
все изменения через интерфейс системы, а на драйверок БД вешать логер.
 
Сверху