LINUX.ORG.RU

Система контроля версий схемы БД


0

0

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

Есть migrate к sqlalchemy, но он ещё ни фига не работает, и имхо, overdesigned.

Ничего путного в гугле не нашёл

Как такие системы вообще называются? И какие есть хорошие (и открытые и коммерческие)?

Какое БД то?

Например можно сделать mysqldump и поместить получившийся файлик в subversion, соответственно потом вынуть и mysql < dump.sql

imp ★★
()
Ответ на: комментарий от imp

> Какое БД то?

Postgres и в перспективе Oracle

> Например можно сделать mysqldump и поместить получившийся файлик в subversion, соответственно потом вынуть и mysql < dump.sql

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

Вот нашёл небольшой обзор: http://www.versioncontrolblog.com/2006/11/05/overview-database-schema-version...

Посмотрел на migrations от RoR. Migrate для sqlalchemy это его клон, и это тоже не совсем то что мне надо.

redvasily
() автор топика
Ответ на: комментарий от redvasily

Что ты понимаешь под апгрейдом?
Типа данные разные а структура одна?
Типа мы добавляем новую таблицу и у всех добавится?
Ну тогда так:

1. У клиента ревизия допустим 1.0
2. У нас самая новая ревизия 2.0
3. Делаем в subversion diff между 1.0 и 2.0
4. грепаем дифф на предмет +
5. сами + удаляем из файлика
6. опять же mysql < patch.sql

imp ★★
()
Ответ на: комментарий от imp

> Типа мы добавляем новую таблицу и у всех добавится?

>

> 1. У клиента ревизия допустим 1.0

> 2. У нас самая новая ревизия 2.0

> 3. Делаем в subversion diff между 1.0 и 2.0

> 4. грепаем дифф на предмет +

> 5. сами + удаляем из файлика

> 6. опять же mysql < patch.sql

Ну типа того. Только с человечим интерфейсом и автоматизацией рутиной работы.

redvasily
() автор топика
Ответ на: комментарий от imp

> 6. опять же mysql < patch.sql

Угу. С автоматической заменой 'create table' на 'alter table'? Или для справочных таблиц автоматически сгенерирует INSERT/UPDATE/DELETE?

У нас возникла аналогичная проблема для Oracle. Из ближайших аналогов для Oracle есть shchemadiff, писанная на perl, но нужно было интегрировать это в общую систему управления сборками, поэтому мы реализовали свою собственную приблуду, большая часть кода была написана на PL/SQL.

Сейчас работы пришлось слегка приостановить (ибо проект бюджетный, руководство считает, что удобство работы программистов себя не окупает).

В общем, самому интересно посмотреть, есть ли что аналогичное, или мы создали очередной велосипед?

eugine_kosenko ★★★
()
Ответ на: комментарий от redvasily

> Postgres и в перспективе Oracle

Изначально я все команды SQL (которыми правил в отладочной СУБД схему БД) добавлял в отдельный файлик, что бы потом просто сделать на рабочей СУБД: psql < diff.sql Но в определённый момент было что-то упущено... %)

Потратил полдня на поиски, всё что удалось найти - нерабочий скрипт на перле и платную прогу под оффтопик. Пробовал платную прогу - достаточно хорошо, базы сравнивает, но автоматически не работает =) например у функций теряет владельцев, зачем-то заменяет эскейпинг $$...$$ на кавычки и портит форматирование...

В итоге пришлось делать pg_dump + diff и вручную править/писать ALTER'ы и INSERT/UPDATE благо у меня не такая большая база... да и макросы в редакторе помогают слегка автоматизировать данный процесс... =)

Видимо нет готового решения... что действительно странно =)

redvasily, если вдруг найдёшь для postgres, отпишись тут пожалуйста.

Eshkin_kot ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.