![]() |
|
Модераторы: LSD |
![]()
|
|
| GSMD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 28.9.2005 Репутация: нет Всего: 1 |
Проблема не нова, может, кто подскажет толковую идею?
Ведется разработка клиент-серверного приложения, работа з базой - через JDBC, сама база - PostgreSQL. На сервере находится одна копия без пользовательских данных и одна - с тестовыми данными. В начале рабочего дня (условно) каждый разработчик делает копию базы и работает с ней на localhost, после чего, при благоприятном стечении обстоятельств, вносит те же изменения в обе базы на сервере, делает дамп той базы, что без данных, кладет его в SVN и работа считается завершенной. Вся эта инфраструкрура выглядит несколько корявой, т.к. есть вероятность что разработчик забудет перенести изменения с локалхоста на базу на сервере, или перенесет неполностью. Есть ли какие-либо инструменты для автоматического приведения структуры одной БД к структуре другой? У кого какой workflow в данном вопросе? |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Ранее участвовал в проекте...
Делали так: Есть изначальный дамп БД. Старый. Но с реального боевого сервера Есть много скриптов(DDL, процедуры, вставки/апдейты ) залив дамп и запустив все скрипты - получаем последнюю версию. Ну а уже скрипты - под ЦВСом ЗЫ: для запуска всех свкиптов и проверки их на скриптовость писали маленькую свою утилку -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| GSMD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 28.9.2005 Репутация: нет Всего: 1 |
chief39, вариант.
|
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Кроме того - неплохо бы скрипты по откату таблиц тоже писать.
На случай, если на боевых серверах не проканает "накат" версии -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| GSMD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 28.9.2005 Репутация: нет Всего: 1 |
chief39, м-м-м, обсужу с разработчиками (я - project manager ;)). Хотя типичность задачи заставляет предполагать возможность наличия стандартных утилит. Не нашел.
|
|||
|
||||
| LSD |
|
|||
![]() 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. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Да. Кроме описанного мной, предпринимались ещё всякие мелкие ухищрения и контроли... "До кучи" писалась утилитка для управления скриптами и даже немного версионности помимо ЦВСа... Но всё равно следить за этим приходилось одному человеку. Некоторое время - мне. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| GSMD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 28.9.2005 Репутация: нет Всего: 1 |
Наткнулся на EMS SQL Manager - буду пробовать. Может, чем поможет.
|
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Ну как? Если сервак MS и есть утилка заточеная под него - я думаю, должна была подойти -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| GSMD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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). Первая позволяет сравнивать базы, вторая - только таблицы. Зачем нужна вторая при наличии первой сказать сходу не могу. Но похоже - оно.
|
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
У меня есть подозрение, что первая сравнивает структуру базы, вторая - содержимое таблиц. По крайней мере, Oracle Change Manager при сравнении данные в схемах не анализирует. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Кстати... уточните, плиз, что именно версионным должно быть - только структура и процедуры/триггера или данные тоже?
Потому как я сотоварищи использовал описанный мною путь для неких базовых данных в том числе. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Romkin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 14.11.2006 Где: Москва Репутация: 1 Всего: 5 |
Я тоже ищу Увы, иногда и некоторые данные перерабатывать приходится. В принципе, все решается скриптом, но вопрос как раз в том, что нужно не просто менять текст процедуры, например, но и выполнять код преобразования данных. Редко, но нужно. Сейчас решается полуручным способом: если кому-то надо сделать изменения в БД, он идет в общий каталог и создает там текстовый файл с очередным номером, в нем и пишет все изменения, которые надо сделать, после - проверка, что все написано правильно. При поставке смотрится номер имеющегося обновления, и все обновления с номерами болше - загружаются в БД. БД контролирует при этом, чтобы не было пропусков. Лучшего, увы, не придумали |
|||
|
||||
| GSMD |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 28.9.2005 Репутация: нет Всего: 1 |
batigoal, ага, так оно и есть.
chief39, необходимы оба варианта, т.к. с одной стороны, есть "чистая база", поставляемая новым клиентам, с другой - существующие инсталляции, которые необходимо обновлять до текущей версии базы. Сорри, если в каких-то моментах очевидно неправ: я в первую очередь project manager, в программировании пока не очень силен ;) В принципе, мне продукт от EMS понравился, еще у них есть удобная (наверное) штука, позволяющая набивать таблицы базы тестовыми данными. Romkin, а каким образом БД контролирует? В принципе, неплохой вариант. И может пригодиться, учитывая что... Задача в принципе не совсем тривиальная, т.к. разрабатываемый продукт клиент-серверный (естественно), но предназначен для большого количества мелких заказчиков (что делает его поддержку затратной), и я подумываю о системе автоматического обновления (через инет, или же клиент устанавливает dial-up соединение с нашим сервером - не принципиально). Ладно - обновить .jar - это не проблема, а вот с базой - это уже сложнее. Вероятно, будет что-то в стиле метода г-на Romkin, если он еще поделится каким образом база конролирует непропуск патчей. Т.е. при удаленном обновлении загружаются все патчи базы, непосредственно перед применением их делается backup базы (вероятно, ночью). И, собственно, выполняются эти скрипты-патчи. Как вам, уважаемые, такая концепция? Это сообщение отредактировал(а) GSMD - 15.11.2006, 19:12 |
|||
|
||||
| Romkin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 14.11.2006 Где: Москва Репутация: 1 Всего: 5 |
Ну контроль наполовину организационный:
Если одному из разработчиков нужна процедура в бд, он идет в расшаренный каталог и организует там текстовый файл, с очередным номером. Синхронизации не надо, нужно сравнительно редко, и коллизий не бывает. Первой же строчкой в этом скрипте он должен записать вызов процедуры и подать ей на вход номер скрипта (второй - для чего он нужен ;) ). НУ а дальше - элементарно, процедура пишет этот номер и время в таблицу, попутно контролируя, есть ли предыдущий. Если нет - исключение. Вполне достаточно. Плюс - у приложения в свойствах номер внутреннего билда всегда соответствует номеру изменения. Ну и есть приложение, которое объединяет эти файлы в один, но обычно и не используется: мы обновляем при выезде. Перед выездом все проверяется, на наличие вызова и тд. |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |