Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синхронизация разработки СУБД? Для кода есть SVN, а как быть с DB? 
:(
    Опции темы
GSMD
Дата 1.11.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.9.2005

Репутация: нет
Всего: 1



Проблема не нова, может, кто подскажет толковую идею?
Ведется разработка клиент-серверного приложения, работа з базой - через JDBC, сама база - PostgreSQL. На сервере находится одна копия без пользовательских данных и одна -  с тестовыми данными.
В начале рабочего дня (условно) каждый разработчик делает копию базы и работает с ней на localhost, после чего, при благоприятном стечении обстоятельств, вносит те же изменения в обе базы на сервере, делает дамп той базы, что без данных, кладет его в SVN и работа считается завершенной.
Вся эта инфраструкрура выглядит несколько корявой, т.к. есть вероятность что разработчик забудет перенести изменения с локалхоста на базу на сервере, или перенесет неполностью.

Есть ли какие-либо инструменты для автоматического приведения структуры одной БД к структуре другой? У кого какой workflow в данном вопросе?
PM MAIL   Вверх
chief39
Дата 1.11.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Ранее участвовал в проекте...
Делали так:
Есть изначальный дамп БД. Старый. Но с реального боевого сервера

Есть много скриптов(DDL, процедуры, вставки/апдейты )

залив дамп и запустив все скрипты - получаем последнюю версию.

Ну а уже скрипты - под ЦВСом smile

ЗЫ: для запуска всех свкиптов и проверки их на скриптовость писали маленькую свою утилку


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
GSMD
Дата 6.11.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.9.2005

Репутация: нет
Всего: 1



chief39, вариант.
PM MAIL   Вверх
chief39
Дата 7.11.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Кроме того - неплохо бы скрипты по откату таблиц тоже писать.
На случай, если на боевых серверах не проканает "накат" версии


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
GSMD
Дата 7.11.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.9.2005

Репутация: нет
Всего: 1



chief39, м-м-м, обсужу с разработчиками (я - project manager ;)). Хотя типичность задачи заставляет предполагать возможность наличия стандартных утилит. Не нашел.
PM MAIL   Вверх
LSD
Дата 7.11.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Уже обсуждалось и похоже решения, все же толкового решения нет.
Проблема в том, что база содержит в себе данные которые надо апгрейдить/доунгрейдить. Код данных не содержить, максимум это ресурсы, но они таскаются как есть с каждой версией.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
chief39
Дата 8.11.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Цитата(LSD @  7.11.2006,  22:59 Найти цитируемый пост)
Уже обсуждалось и похоже решения, все же толкового решения нет.

Да.
Кроме описанного мной, предпринимались ещё всякие мелкие ухищрения и контроли...
"До кучи" писалась утилитка для управления скриптами и даже немного версионности помимо ЦВСа...
Но всё равно следить за этим приходилось одному человеку. Некоторое время - мне.



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
GSMD
Дата 8.11.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.9.2005

Репутация: нет
Всего: 1



Наткнулся на EMS SQL Manager - буду пробовать. Может, чем поможет.
PM MAIL   Вверх
chief39
Дата 13.11.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Цитата(GSMD @  8.11.2006,  12:23 Найти цитируемый пост)
Наткнулся на EMS SQL Manager - буду пробовать. Может, чем поможет. 

Ну как?

Если сервак MS и есть утилка заточеная под него - я думаю, должна была подойти smile


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
GSMD
Дата 14.11.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.9.2005

Репутация: нет
Всего: 1



chief39, сервак не MS, а PostgreSQL. C софтиной начал разбираться только сейчас. В составе всего того комплекта под названием EMS SQL Manager есть компоненты DB Comparer 2006(an excellent tool for database comparison and synchronization) и Data Comparer 2005a powerful and easy-to-use utility for data comparison and synchronization. Стоят одинаково (USD95). Первая позволяет сравнивать базы, вторая - только таблицы. Зачем нужна вторая при наличии первой сказать сходу не могу. Но похоже - оно.
PM MAIL   Вверх
batigoal
Дата 14.11.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Цитата(GSMD @  14.11.2006,  11:27 Найти цитируемый пост)
Первая позволяет сравнивать базы, вторая - только таблицы. Зачем нужна вторая при наличии первой сказать сходу не могу. Но похоже - оно. 

У меня есть подозрение, что первая сравнивает структуру базы, вторая - содержимое таблиц. По крайней мере, Oracle Change Manager при сравнении данные в схемах не анализирует.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
chief39
Дата 15.11.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Кстати... уточните, плиз, что именно версионным должно быть - только структура и процедуры/триггера или данные тоже?

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


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Romkin
Дата 15.11.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 14.11.2006
Где: Москва

Репутация: 1
Всего: 5



Цитата(chief39 @  15.11.2006,  14:03 Найти цитируемый пост)
Кстати... уточните, плиз, что именно версионным должно быть - только структура и процедуры/триггера или данные тоже?

Я тоже ищу smile
Увы, иногда и некоторые данные перерабатывать приходится. В принципе, все решается скриптом, но вопрос как раз в том, что нужно не просто менять текст процедуры, например, но и выполнять код преобразования данных. Редко, но нужно.
Сейчас решается полуручным способом: если кому-то надо сделать изменения в БД, он идет в общий каталог и создает там текстовый файл с очередным номером, в нем и пишет все изменения, которые надо сделать, после - проверка, что все написано правильно.
При поставке смотрится номер имеющегося обновления, и все обновления с номерами болше - загружаются в БД. БД контролирует при этом, чтобы не было пропусков.
Лучшего, увы, не придумали smile
PM ICQ   Вверх
GSMD
Дата 15.11.2006, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.9.2005

Репутация: нет
Всего: 1



batigoal, ага, так оно и есть.

chief39, необходимы оба варианта, т.к. с одной стороны, есть "чистая база", поставляемая новым клиентам, с другой - существующие инсталляции, которые необходимо обновлять до текущей версии базы.

Сорри, если в каких-то моментах очевидно неправ: я в первую очередь project manager, в программировании пока не очень силен ;)

В принципе, мне продукт от EMS понравился, еще у них есть удобная (наверное) штука, позволяющая набивать таблицы базы тестовыми данными.

Romkin, а каким образом БД контролирует? В принципе, неплохой вариант. И может пригодиться, учитывая что...

Задача в принципе не совсем тривиальная, т.к. разрабатываемый продукт клиент-серверный (естественно), но предназначен для большого количества мелких заказчиков (что делает его поддержку затратной), и я подумываю о системе автоматического обновления (через инет, или же клиент устанавливает dial-up соединение с нашим сервером - не принципиально). Ладно - обновить .jar - это не проблема, а вот с базой - это уже сложнее. Вероятно, будет что-то в стиле метода г-на Romkin, если он еще поделится каким образом база конролирует непропуск патчей.
Т.е. при удаленном обновлении загружаются все патчи базы, непосредственно перед применением их делается backup базы (вероятно, ночью). И, собственно, выполняются эти скрипты-патчи.

Как вам, уважаемые, такая концепция? smile

Это сообщение отредактировал(а) GSMD - 15.11.2006, 19:12
PM MAIL   Вверх
Romkin
Дата 15.11.2006, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 14.11.2006
Где: Москва

Репутация: 1
Всего: 5



Ну контроль наполовину организационный: 
Если одному из разработчиков нужна процедура в бд, он идет в расшаренный каталог и организует там текстовый файл, с очередным номером. Синхронизации не надо, нужно сравнительно редко, и коллизий не бывает.
Первой же строчкой в этом скрипте он должен записать вызов процедуры и подать ей на вход номер скрипта (второй - для чего он нужен ;) ). НУ а дальше - элементарно, процедура пишет этот номер и время в таблицу, попутно контролируя, есть ли предыдущий. Если нет - исключение.
Вполне достаточно.
Плюс - у приложения в свойствах номер внутреннего билда всегда соответствует номеру изменения.
Ну и есть приложение, которое объединяет эти файлы в один, но обычно и не используется: мы обновляем при выезде. Перед выездом все проверяется, на наличие вызова и тд.
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0701 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.