Контроль версий для схемы базы данных

Wicked

Новичок
Контроль версий для схемы базы данных

Над проектом трудятся 4 человека. У каждого по своей SVN-песочнице, и по своей базе данных. Структура базы данных, естественно, периодически меняется. Из чего возможны проблемы в стиле возникают такие проблемы:

1) хочется, чтобы для любого ревижна мы могли узнать схему базы данных, действующую на тот момент.
Я так понимаю, с этим можно совладать, введя sql-файлик, содержащий структуру бд под контроль свн. Другого хорошего выхода, наверное, нету. Соответственно, если так сделать, начинает хотеться еще вот чего:

2) чтобы после каждого SVN-апдейта была кэшируемая проверка базы данных. Я себе вижу это так:
1. После апдейта при обращении к сайту, каким-нибудь пхп-скриптом сверяется текущий ревижн этого sql-файла с закэшированным.
1.1. Если они разные, то скрипт выдёргивает структуру базы данных, и сопоставляет с sql-файлом.
1.1.1. Если они совпадают, то последний ревижн помещается в кэш, и при следющем запуске тестов/скрипта проверка закончится на пункте 1.1.
1.1.2. Если они не совпадают, скрипт не дает сайту работать, обязывая изменить текущую структуру базы данных в соответствии с текущим ревижном. Руками, естественно.
1.2. Если они однакоковые, то сайт работает дальше.

3) чтобы перед каждым SVN-коммитом текущая структура бд помещалась в тот sql-файлик и тоже коммитилась.
Как это сделать ума не приложу :)

Может кто знает, как подобное делается наилучшим образом... если вообще делается?

PS: Под структурой частично подразумеваются и некоторые данные: например, список ключей из таблицы CONFIG.
 

Wicked

Новичок
т.е. чтобы mysql сама распространяла изменения между базами данных?
Боюсь, что это будет сложно. Т.к., во-первых, базы данных находятся в разных уголках интернета, и не имеют прямого доступа друг к другу. Во-вторых, это наверное потребует особой настройки серверов, а от этого зависеть не хотелось бы. В-третьих, насколько я понимаю, пункт "1)" не будет выполнен.

Извини за профанацию, если что :)
 

svetasmirnova

маленький монстрик
Настройки там несложные. На удалённых репликация обычно и работает =) А насчёт первого пункта да, автоматически ничего не делается.

PS: структуру я в SVN так и храню =)
 

Wicked

Новичок
"так" - это как? Я что-то упустил мысль.

Кстати, тогда есть еще такие проблемы:
4) изменив базу данных (т.е. все базы из-за репликации), я могу поломать все другие непроапдейченные песочницы.
5) "базы данных находятся в разных уголках интернета, и не имеют прямого доступа друг к другу" - они доступны в лучшем случае через ssh-туннель. Это может стать проблемой для поддержания.
 

svetasmirnova

маленький монстрик
>"так" - это как? Я что-то упустил мысль.
как ты в первом пункте описал: в файликах в репозитории
 
Сверху