Как хранить SQL файлы в SVN

FB3

Новичок
Как хранить SQL файлы в SVN

На первый взгляд видятся два варианта:

1. Хранить SQL файл, где содержатся все данные по таблицам и обновлять его при изменениях полей/индексов, добавлении/удалении таблиц.
Плюсы:
легко отследить изменения в файле с помощью лога/диффа СВН
легко установить систему с нуля
поддерживается целостность хранимых данных
Минусы:
для обновления таблицы пишем запрос руками и никуда не сохраняем

2. Хранить начальный SQL файл и в отдельных файлах хранить патчи для таблиц, т.е. при любом изменении полей/индексов создавать новый файл, в которым будут содержаться всякие ALTER TABLE и, если нужно, то разные UPDATE.
Плюсы:
можно взять и кодом из отдельного файла(ов) обновить базу данных, т.е. не писать запрос руками
Минусы:
не поддерживается целостность хранимых данных
чтобы установить систему с нуля (добавить новый сервер), нужно заимпортить кучу файлов в определенном порядке

Можно хранить и то и то, но получается, что тогда храним лишнюю информацию.

На практике сейчас мне больше нравится первый вариант, поскольку проект свой, следовательно, таблички один раз апдейтятся на всех серверах и дальше запросы для обновления не нужны, т.е. хранить их отдельно, как во втором варианте, я не вижу смысла.

Какие есть еще плюсы/минусы? Как храните вы?
 

Falc

Новичок
Мы таблицы в svn не храним, но если хранить то 1-й вариант т.к. можно посмотреть диф.
 

zerkms

TDD infected
Команда форума
FB3
для того, чтобы другие члены команды могли их применить. а также чтобы потом можно было их применить на stage/prod сервер.
 

MiksIr

miksir@home:~$
В деве эталонная схема + рабочая. На процедуре выкатки сравнение схем, построение альтеров и отправка/выполнение этого в продакшн. Плюс дампы схем в svn исключительно с информационными целями. Плюс памятка программистам о том, что не нужно делать с базой, если они не хотят люлей ;) В частности - ничего не удалять сразу (т.е. если столбец не нужен - пометить в вики как "к удалению", но не удалять), типы полей не менять и тому подобное. Это помогает в большинстве случаев откатить продакшн не откатывая базы и обеспечить мягкий апдейт всех нод без остановки сервиса.
 

Dovg

Продвинутый новичок
У нас используется оба варианта.

Разработчики коммитят изменения базы в директорию alter.
Структура базы каждую ночь роботами коммитится отдельно прямо с продакшена.
 

Falc

Новичок
FB3
Не храним так как особого смысла нету, и программисты у нас ленивые :)
Единственное зачем они нам могут понадобится так это для хранения истории, что бы в случае разборок узнать какая "редиска" изменила таблицу. Но это вобщем-то обычно и без svn'а можно узнать :)
 
Сверху