Много говорится о бестпрактис хранения исходников БД в СКВ, причем каждый объект — это отдельный файл и т.д.
Так же есть множество модных (и не очень) деплойеров и changhe manager'ов, которые позволяют управлять изменениями кода БД, собирать дифф-скрипты, накатывать на базы и контроллировать все это дело (Liquibase, dbdeploy, etc).
А есть какая-либо тулза, которая помогала бы непосредственно управлять самим исходным кодом, например:
— Могла набросать каркас из папок и файлов для хранения исходных кодов объектов;
— собрать из этих исходников итоговый скрипт, который можно юзать в какой-нибудь CI. Причем сборка с различными параметрами, например частичная (отдельной таблицы или нескольких таблиц), без ФК, ПК, индексов и т.д. Сборка с тестовыми данными, сборка с боевыми данными и многое другое…
— контроллировать актуальность хранимых объектов, т.е. следить за тем, что если был удален пользователь из репозитория, то и все его объекты так же должны пропасть из текущей версии. Если грохнули таблицу, то также удалились ее индексы (которые так же хранятся в отдельных файлах и имеют свою историю изменения);
— была интегрирована в какой-нибудь сборщик (Ant, Maven)
Простите, а что значат «исходники БД»?
под исходниками БД обычно понимается исходный код сервера БД — Mysql,Postgres к примеру.
А «структура» самой БД — это банальная пачка бинарных файлов с файлом базы, логами, индексами и прочим стаффом.
Ну и структура БД — это, собственно человекочитаемый список таблиц в БД, структура самих таблиц и права доступа.
Или может я чего не понимаю
Имеется ввиду исходный код создания БД, т.е. DML, DDL и т.д. Каждый объект БД хранится в собственном файле, и все это под контролем СКВ (http://habrahabr.ru/post/142255/). Могу подробнее рассказать.
Если система поддерживает механизм миграций — то его вам должно хватить за глаза.
Если с этим проблемы (в том числе и оффлайн решения не использовать), то можно создать папку sql, в которую отдельно положить структуру и фикстуры (данные). Ну и, соответственно, эту папку в СКВ.
Но предпочтительнее все же разобраться в первом варианте — миграции более правильный инструмент, ИМХО.
Спасибо за ответ. Механизм миграций не совсем подходит, предпочитаю работать непосредственно с кодом объектов БД.
то можно создать папку sql, в которую отдельно положить структуру и фикстуры (данные). Ну и, соответственно, эту папку в СКВ.
Об этом я и говорю. Сделать это не сложно, но как потом с этим всем упраляться? Как правильно продумать все структуру хранения файлов? Как красиво из этих файлов собрать инсталляционный скрипт для базы или его часть? И т.д.