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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поддержка версий SP 
:(
    Опции темы
Vit
  Дата 19.7.2005, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



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

1) Есть примерно десяток приложений которые работают на нескольких сотнях компьютеров в локальной сетке и используют одну базу данных.

2) В базе денных имеется набор stored procedure которые обеспечивают некоторую функциональность приложений

Система работает, всё в порядке...

Теперь рассмотрим вопросы если надо делается обновление системы, это может быть новый релиз какого-то приложения, а может быть и просто исправление какого-то бага.

Здесь возможно несколько вариантов:

1. Новое приложение не требует изменений SP (здесь всё просто, не рассматриваем)

2. Новое приложение вообще не требуется, надо изменить только SP
Тут возникает масса проблем, дело в том что на каком-то этапе после тренировок на кошках (в тестовой среде и тестовых базах данных), надо протестировать работоспособность в реальных условиях, причём делать это надо не меняя все приложения во всей системе, а например поменять только 1-2 приложения из нескольких сотен и посмотреть... Вот варианты которые я вижу с граблями:

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

- Можно написать новую SP (или версию SP) и изменить приложение чтобы новый exe использовал новую версию SP. Но тогда возникает 2 неудобства: во-первых надо менять exe фaйл на практически такой же, причём в перспективе на многих машинах, что процесс достаточно трудоёмкий, во-вторых появляется 2 SP которые используются одновременно, с тем что одно приложение использует сотни SP, а самих приложений тоже не мало, то с течением времени появляется в базе данных по десятку вариантов SP для каждой хранимки, часть из которых используется, а часть нет... Через какое-то время становится достаточно сложно предсказать используется какая-то SP каким-либо приложением или нет... Т.е. конечно можно вести подробную документацию на каждую версию каждого приложения, но всё равно - это ручная работа, следовательно возникают варианты когда кто-то что-то забыл где-то записать, в итоге имеем либо мусор, либо того хуже стёрта нужная хранимка.

- Можно сделать data dictionary где хранить имя компа+имя програмы+внутренее название SP и ассоциированное имя (версия) реальной SP. Тогда менежмент версий станет очень лёгкий, сразу видно кто что использует, при смене версии SP не надо менять ничего локально, достаточно работать с базой данных, откат в случае ошибок очень лёгкий... но(!) - это дополнительный запрос на каждый вызов хранимки, при потоке запросов на сервер до сотни в секунду, это означает практически удвоение количества запросов! Кроме того нужны существенные изменения кода в продуктах для поддержки этой системы, следовательно чтобы идти по этому вроде бы наиболее привлекательному варианту мне нужны веские основания...

- Можно имена используемых SP хранить в каком-то ini файле локально... Тогда вроде бы напряга для сервера не будет, но любой update потребует обходить все рабочие станции и чего-то там менять...

3. Если надо поменять и приложение и SP. В принципе почти вариант 2, но прельщает просто в коде указать версию используемой SP, как наиболее простом и быстром варианте решения, однако остаются проблемы перечисленные выше.

Хотелось бы узнать, есть ли у кого реальный опыт разруливания таких ситуаций?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
igon
Дата 20.7.2005, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 21



Вариант (для Oracle)
1. Пусть имеем рабочую схему (user) WORK
2. Создаем тестовую схему TEST, в нее помещаем синонимы на ВСЕ объекты схемы WORK.
3. Если нужно протестировать SP, помещаем ее новую версию в TEST, удалив синоним.
4. По окончании тестирования переносим SP в WORK и восстанавливаем синоним.
"Подопытные" на период тестирования делают connect TEST, по окончании, как и остальные, - connect WORK


--------------------
Хотите поговорить об этом?
PM   Вверх
LSD
Дата 20.7.2005, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(igon @ 20.7.2005, 03:38)
Вариант (для Oracle)
1. Пусть имеем рабочую схему (user) WORK
2. Создаем тестовую схему TEST, в нее помещаем синонимы на ВСЕ объекты схемы WORK.
3. Если нужно протестировать SP, помещаем ее новую версию в TEST, удалив синоним.
4. По окончании тестирования переносим SP в WORK и восстанавливаем синоним.
"Подопытные" на период тестирования делают connect TEST, по окончании, как и остальные, - connect WORK

Можно без синонимов, просто повесив триггер на CONNECT, переключать умолчальную схему. Пользователей различать или по имени, или по машине, или по имени приложения.


--------------------
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   Вверх
igon
Дата 20.7.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 21



Цитата
Можно без синонимов

Пусть в WORK имеем SP mySP, использующую myTable (фактически WORK.myTable).
Чтобы тестовая версия mySP работала в TEST в условиях, максимально приближеных к "боевым", нужно
1) либо вместе с mySP скопировать в TEST таблицу myTable и потом следить за TEST.myTable==WORK.myTable
2) либо в TEST Create Synonym myTable for WORK.myTable
Второй вариант, ИМХО, предпочтительней

Переключение на нужную схему в момент CONNECT`а, безусловно, хорошее дополнение: "подопытным" не придется менять свои настройки, а все управление TEST<-->WORK можно будет сосредоточить в БД


--------------------
Хотите поговорить об этом?
PM   Вверх
Vit
Дата 20.7.2005, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Спасибо, метод нравится, хотя и не без изъянов. ПОсмотрим какие ещё будут идеи


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW 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.1879 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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