Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 5
Interbase

Использование одного соединения разными приложениями

18.10.2015, 11:45. Показов 614. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Проблема в следующем. Имеется несколько приложений, которые используют соединение с одной базой данных на сервере. На сервере стоит firebird в режиме classic, соответственно создается по одному процессу на каждое приложение. Сейчас ситуация такая, что 100 пользователей запускает по 10 приложений одновременно к примеру, т.е. уже 1000 процессов на сервере, это крайне не расточительная роскошь.

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

Т.к. я недопрограммист, а сисадмин, хотелось бы найти правильный вариант решения данной задачи.
Были мысли по объединению всех программ в одно приложение с разбивкой по юнитам и использовать текущее подключение, или загонять все приложения/формы в DLL и туда передавать хэндл подключения.

Или может есть все-таки решение легкое и стандартное?)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2015, 11:45
Ответы с готовыми решениями:

SendInput() (user32.dll) работает с разными приложениями по разному
В приложения: блокнот, калькулятор и тому подобное с помощью метода SendInput из user32.dll у меня получается передавать все нужные...

Использование одной базы 2-мя приложениями
Доброго времени суток!!! Есть 2 приложения. Одно серверное (ASP) - для чтения данных из БД и второе для занесения данных в БД. Как...

Использование текстурных юнитов несколькими приложениями
Здравствуйте! Вопрос нубский, но не смог найти ответ... Как я понял, текстурные слоты это блоки памяти в видеокарте, которые могут...

9
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,184
Записей в блоге: 3
18.10.2015, 11:58
как сисадмину вам надо думать в сторону увеличения производительности сервера

а как программисту о создании промежуточного сервера к которому будут коннектится клиенты, а уже он обращаться к БД

ЗЫ я не понял - программа открывает соединение и оно висит? до каких пор? почему не выполнить запрос и закрыть подключение? У нас на складе 80 ТСД коннектятся к серверу с Firebird и никаких проблем нет.
0
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 5
18.10.2015, 12:19  [ТС]
как сисадмину вам надо думать в сторону увеличения производительности сервера
Сервер не напрягается Просто мне как сисадмину показалось нерационально использовать мощности сервера на глупости программиста, т.е. опять же меня.
а как программисту о создании промежуточного сервера к которому будут коннектится клиенты, а уже он обращаться к БД
это опять-таки нерационально при возможности простого решения, которое собственно ищу.
почему не выполнить запрос и закрыть подключение?
ну вот, сразу чувствуется, что на форуме программистов) Честно говоря, раньше так и делал, но почему-то в последствии стал при запуске приложения инициировать, при закрытии приложения - разрывать. Связано было с двумя факторами:
1) не предугадал действия пользователей, думал они запустят приложение, сделают свое дело и закроют его тут же, а оказалось, что они их тупо сворачивают, более того, умудряются несколько экземпляров запустить - но эту проблему решил;
2) почему-то казалось, такие частые подключения/отключения неразумные решения и напряг для сервера, не знаю почему так казалось, по логике те же запуски транзакций и коммиты, ну эти то хоть я запускаю и завершаю/откатываю когда надо))

Добавлено через 3 минуты
Блин, вспомнил еще третью причину. В приложениях открываются DBgrid, и если закрыть подключение, датасеты соответственно тоже закроются. Так что задача еще актуальна.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
18.10.2015, 12:26
А чего не установить super server FB?
0
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 5
18.10.2015, 12:39  [ТС]
По моему мнению это некрасивое решение в многопользовательской среде. Если какие-то проблемы с процессом начнутся, придется убивать процесс.. значит и всех пользователей. Уж лучше обойдусь смертью одного, чем всех.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
18.10.2015, 13:26
Потоки выполнения запросов все равно разные.
Да и спасаться от снежков под танковой броней как-то не очень оптимально.
На официальной странице так и сказано:
Под Windows выбирайте Superserver.
Впрочем, если серверный комп тянет этакую прорву процессов, то пусть будет и классик.
А передавать хендлы от клиента к клиенту для работы в одном и том же процессе (ИМХО) желание, скорее, из области фантастики.
0
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 5
18.10.2015, 13:49  [ТС]
У меня Superserver почему-то ассоциируется с общагой, а classic с многоквартирным домом, где у каждого своя квартира со своё пространство (кэш). И в квартире соседи меньше вступают в конфликт между собой, чем в общаге. Я выбираю многоквартирный дом) Да и судя по описаниям superserver может быть проблемным для многопроцессорного сервера, что и есть в моем случае.
Но суть понял, что решения моего вопроса нет. Нужно значит упаковывать все в одну программу, либо смириться с большим кол-вом процессов.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
18.10.2015, 14:20
superserver может быть проблемным для многопроцессорного сервера, что и есть в моем случае
В FB такая ситуация предусмотрена:
На многопроцессорных серверах под управлением Windows, производительность может резко снизиться,
поскольку операционная система будет переключать процесс (Firebird) между процессорами.
Чтобы избежать этого, установите параметр CpuAffinityMask в конфигурационном файле firebird.conf.
0
5980 / 4555 / 1095
Регистрация: 29.08.2013
Сообщений: 28,184
Записей в блоге: 3
18.10.2015, 16:24
Цитата Сообщение от Layman Посмотреть сообщение
Сервер не напрягается Просто мне как сисадмину показалось нерационально использовать мощности сервера на глупости программиста, т.е. опять же меня
если сервер не напрягается, то в чем проблема?
просто "показалось"?

Цитата Сообщение от Layman Посмотреть сообщение
это опять-таки нерационально при возможности простого решения, которое собственно ищу.
промежуточный сервер это как раз самое простое решение. Почитайте про DataSnap - возможность подключения из любого места\удобство и простота использования.

Цитата Сообщение от Layman Посмотреть сообщение
но почему-то в последствии стал при запуске приложения инициировать, при закрытии приложения - разрывать
вы с ума сошли. хорошо что у вас пользователей мало и про блокировки вы еще не читали.

Цитата Сообщение от Layman Посмотреть сообщение
1) не предугадал
2) почему-то казалось,
Блин, вспомнил еще третью причину. В приложениях открываются DBgrid,
1 и 2 вообще без комментариев. Вы хоть книжки читаете что бы понять как правильно, или только на "показалось" работаете?
3) не используйте DBGrid

ТС насколько вредят серверу эти 1000 процессов? Стоит ли дергаться если "опасности" нет?
0
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 5
18.10.2015, 17:12  [ТС]
если сервер не напрягается, то в чем проблема? ТС насколько вредят серверу эти 1000 процессов? Стоит ли дергаться если "опасности" нет?
Я не дергаюсь, все ОК, к чему истерики? Пока 1000, дальше будет 10000000ХХХ и сервер начнет напрягаться. Я не живу одним днем и планирую очевидные вещи.
промежуточный сервер это как раз самое простое решение.
Нафига огород городить еще какими то посредниками? Че за бред.. Это школьнику понятно, что в данном случае нужно другое решение.
вы с ума сошли. хорошо что у вас пользователей мало и про блокировки вы еще не читали.
а вы меня точно правильно поняли, что я под инициацией имел ввиду подключение к БД, а не старт транзакций?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2015, 17:12
Помогаю со студенческими работами здесь

Три активити установились отдельными приложениями вместо одного
Как я понял - Activity - это окно программы. Вот создал 3 окна программы, все работает отлично. Установил на устройство для проверки, и......

Управление несколькими различными приложениями MS Office из одного макроса
Всем доброго времени суток! Заранее извиняюсь за нубский вопрос. В VB/VBS/VBA новичок. Подскажите, пожалуйста, возможно ли сделать что-то...

Совместное использование двумя приложениями глобальной переменной из одной DLL
Есть два приложения одновременно использующих одну dll. Вопрос как в dll объявить общую для двух приложений глобальную переменную? Поискал...

Исследование, использование реестра для передачи информации между приложениями
Добрый день-вечер, дорогие друзья форумчане! Может кто реализовывал подобное или знает, где почитать об этом... просьба, выслать...

Обмен данных между DOS-приложениями и Windows-приложениями
Как настроить установки Windows 98, чтобы нажатием клавиши PrtSc рисунок, созданный Borland Pascal-программой, скопировался в буфер обмена?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru