powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Взаимодействие клиентов с БД.
25 сообщений из 323, страница 2 из 13
Взаимодействие клиентов с БД.
    #39961188
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
если клиентов дофига, то иного варианта и нет

Точно нет? Ну то есть вот если хоть один другой вариант найдётся - ты посыпешь голову пеплом и впредь заречёшься писать прежде чем думать?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961228
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
ViPRos
если клиентов дофига, то иного варианта и нет

Точно нет? Ну то есть вот если хоть один другой вариант найдётся - ты посыпешь голову пеплом и впредь заречёшься писать прежде чем думать?

чем лишний раз блабла, лучше бы просветил
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961231
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
чем лишний раз блабла, лучше бы просветил

Чтобы просвещать, нужно хоть как-то представлять задачу. "Дофига" - это хотя бы примерно сколько?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961244
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?


Правильно держать пул соединений, на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Во многих ЯП и библиотеках это выглядит как создание и закрытие соединения, но при этом они берутся из пула.

Никаких за и против тут быть не может. Вы не должны напрямую управлять соединением на уровне прикладного кода. И никакие оправдания вам тут не помогут.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961322
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961331
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
hVostt
на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных.

дык, для каждого чиха есть свой пул
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961343
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
ViPRos
чем лишний раз блабла, лучше бы просветил

Чтобы просвещать, нужно хоть как-то представлять задачу. "Дофига" - это хотя бы примерно сколько?

ну, есть же какие то ограничения на сервере на количество одновременных соединений
"дофига" - близко к этим ограничениям
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961349
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
ну, есть же какие то ограничения на сервере на количество одновременных соединений
"дофига" - близко к этим ограничениям

Ну, тут вопрос - каких именно соединений. Речь может идти о сессиях в БД или о tcp/соединениях операционки. Но в любом случае в таких условиях стратегия "сразу же гробить" неэффективна по сравнению со стратегией "разделяя, эффективно использовать". На пальцах:

  • допустим, одна пользовательская операция потребляет в среднем X ресурсов (процессор, память итп)
  • допустим, мощность основного железа 10'000 * X (то есть в идеале оно может обслуживать 10'000 постоянно активных клиентов)
  • допустим, операционка, БД или что-нибудь в этом духе ограничивает количество одновременных соединений 1'000
  • допустим, инициализация и завершение соединения потребляют в среднем Y ресурсов.

Давай возьмём за эталон лузерства решение "1000 счастливчиков подключились и работают, остальные сосут". В этом режиме ресурсы сервера утилизируются на 10%, то есть 90% уходит впустую. Показатель полезной нагрузки - 1000 операций в единицу времени.

Рассмотрим твоё решение. В этом случае одна операция требует уже X + Y ресурсов. Что будет с сервером? Тут уже начинает зависеть от того, что именно за ресурсы. В наилучшем случае он будет делать те же 1000 операций в единицу времени, но утилизация повысится до 10*(X+Y)/X процентов (так будет, например, если операции требуют почти исключительно процессора, и по нему запас). В наихудшем случае утилизация останется той же, но он будет делать всего 1000*X/(X+Y) операций в единицу времени. То есть пропускная способность уменьшится даже по сравнению с лузерским вариантом! В реальности скорее всего будет нечто промежуточное - пропускная способность уменьшится, но не так сильно, утилизация увеличится, но не так сильно.

На практике этим ты предлагаешь купить следующее: вместо "1000 счастливчиков, 9000 сосут" будет "10000 сосут, но чуть менее обидно". С точки зрения пользователя каждая операция будет занимать в 10-20-50 раз дольше, чем могла бы. Можно ли так работать? Ну да, в принципе, конечно, можно. Я в такой ситуации просто приношу на работу книжку и сижу, читаю.

Что бы лично я сделал вместо этого. Я бы поставил 20 промежуточных прокси - они простые и дешёвые. Клиенты соединяются на прокси по 500 штук на каждого, лимит в 1000 соединений не нарушен. Прокси соединяются с БД, тратя на это 20 * N соединений. N выбирается исходя из оптимальной работы сервера. Прокси диспетчеризует запросы так, чтобы наилучшим образом загрузить сервер (например, упаковывает разные в один батч). Лимит в 1000 соединений опять же не нарушается. Итого: сервер загружен по полной, 10'000 счастливчиков спокойно и эффективно работают, все счастливы. По цена/качество этот вариант кроет "одноразовые подключения" как бык блоху.

Для упрощения рассуждений я говорю о постоянно активных клиентах, то есть работающих в цикле "отправил запрос - получил ответ - сразу же отправил следующий". Реальные клиенты, конечно, обычно ждут пользователя, но с этим всё просто: если клиент активен в среднем k% времени, то N "ждущих клиентов" по потоку обращений эквивалентны kN "постоянно активных", можно рассуждать в терминах последних и не думать о k.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961362
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
hVostt
на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных.


Ну а ещё раньше лошадей подковывали.

Как вам вообще права-то выдали, если вы не знаете о том, как подковать лошадь или перебрать мотор и промыть карбюратор, а? )))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961365
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Что бы лично я сделал вместо этого. Я бы поставил 20 промежуточных прокси - они простые и дешёвые. Клиенты соединяются на прокси по 500 штук на каждого, лимит в 1000 соединений не нарушен. Прокси соединяются с БД, тратя на это 20 * N соединений. N выбирается исходя из оптимальной работы сервера. Прокси диспетчеризует запросы так, чтобы наилучшим образом загрузить сервер (например, упаковывает разные в один батч). Лимит в 1000 соединений опять же не нарушается. Итого: сервер загружен по полной, 10'000 счастливчиков спокойно и эффективно работают, все счастливы. По цена/качество этот вариант кроет "одноразовые подключения" как бык блоху.


Зачем так много слов и буков, если можно сказать -- горизонтальное масштабирование.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961382
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

сам прекрасно понимаешь что про прокси и т.д. не был и речи, разговор был клиент - сервер
а в режиме клиент-сервер я бы и на стороне сервера ввел бы пул соединений и присваивал бы динамические приоритеты клиентам и их запросам по заданным правилам
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961462
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
сам прекрасно понимаешь

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

ViPRos
а в режиме клиент-сервер я бы и на стороне сервера ввел бы пул соединений

Ну, есть такое в Oracle, называется shared server mode. Но это ответ для случая, если лимит по количеству соединений. Лимит по tcp соединениям это преодолеть не поможет.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961465
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок (прокладка всегда воняет)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961466
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer

Ну, есть такое в Oracle, называется shared server mode. Но это ответ для случая, если лимит по количеству соединений. Лимит по tcp соединениям это преодолеть не поможет.

ну, есть слава бог люди с правильными мозгами, не все фаулеры еще засрали
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961467
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
Т.е мы говорим о ленивой заранее неизвестной подгрузке исполняемого объекта (в том числе с зависимостями из репозитория и по http),то круче java в этом вопросе никого нет.

Весьма спорно. Напомните: вот лежит некий плагин (ну то есть jar-ник или нечто аналогичное в любом другом формате). Java хотя бы научилась загружать его без необходимости явно перечислять стартовые классы, инициализация которых должна быть выполнена?

irbis_al
У Меня модуль состоит из главной формы...контейнера в который загрузится неизвестно что,и коннектор к базе данных ,который читает конфигурацию и говорит что грузить в контейнер в данный момент.

Вы так говорите, будто это нечто особенное.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961468
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок

Если у ТС есть колёса и руль, это не означает, что нет ничего кроме колёс и руля. Он задаёт архитектурный вопрос и не задал никаких ограничений на "только КС". Да и кроме того, прокси - вовсе не обязательно нарушение КС.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961477
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
ViPRos
ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок

Если у ТС есть колёса и руль, это не означает, что нет ничего кроме колёс и руля. Он задаёт архитектурный вопрос и не задал никаких ограничений на "только КС". Да и кроме того, прокси - вовсе не обязательно нарушение КС.

ладно, тебя х переспоришь, за столько лет накачал уже навыки
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961483
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

а смысл спорить? Ну хреновый это режим - пересоединяться на каждый чих. Всё равно что школьникам после каждого урока возвращаться домой, а потом снова топать в школу на следующий.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961486
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
ну, есть слава бог люди с правильными мозгами, не все фаулеры еще засрали


Ну я же говорил! Земля плоская!

А то засрали тут свои мозги всякими Галилеями галимыми. Фух, хорошо есть ещё умные люди
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961510
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?


Правильно держать пул соединений, на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Во многих ЯП и библиотеках это выглядит как создание и закрытие соединения, но при этом они берутся из пула.

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


Зависит от БД.
Иногда выгоднее честное открытие/закрытие соединений.
Натолкнулся на особенности MySQL.
Где у меня пул соединений постоянно тихо терял соединение с БД.
Соответственно из пула выдавалось "мертвое содинение"
:-)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961577
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
hVostt
на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных.
А разве все перечисленное не должно интересовать только того кто пишет ХП?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961687
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
А разве все перечисленное не должно интересовать только того кто пишет ХП?

Нет. Подход "всё на ХП" - это отрыжка больного на голову MSSQL, которая появилась только потому, что они не могли сделать адекватной работы СУБД в других режимах и предпочли за счёт маркетоидов прорекламировать багу как фичу.

Так или иначе, контракт между БД-частью и БД-клиентом - вопрос архитектуры. Разработчик выбирает тот вариант, который соответствует задаче.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961689
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
А разве все перечисленное не должно интересовать только того кто пишет ХП?

Нет. Подход "всё на ХП" - это отрыжка больного на голову MSSQL, которая появилась только потому, что они не могли сделать адекватной работы СУБД в других режимах и предпочли за счёт маркетоидов прорекламировать багу как фичу.

Так или иначе, контракт между БД-частью и БД-клиентом - вопрос архитектуры. Разработчик выбирает тот вариант, который соответствует задаче.

ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API или тому от чего наследоваться , а в противном случае ORM .
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961694
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API

Секурность на уровне ХП - это заведомо хрупкое решение. API - хорошее слово. ХП - это существенная часть API, но они не в состоянии дать адекватное решение ряду стоящих задач, поэтому подход "всё на API" годится либо для демо-примеров в книжках, либо для производства инвалидов.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961707
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API

Секурность на уровне ХП - это заведомо хрупкое решение. API - хорошее слово. ХП - это существенная часть API, но они не в состоянии дать адекватное решение ряду стоящих задач, поэтому подход "всё на API" годится либо для демо-примеров в книжках, либо для производства инвалидов.

Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП, а обратные случаи есть.
Секурность на уровне ХП замечательно работает по пользователям. Пользователь может выполнить ровно то что ему дозволено и это хорошо когда используются СУБД без РЕДО лога и нельзя сделать селект таблицы на определенную дату , ну есть логгирование и дупликаты на тригграх, но сути не меняет . В некоторые ХП в некоторых СУБД вполне можно интегрировать код языков высшего порядка , поэтому я не совсем понимаю каких задач нельзя решить на уровне СУБД.Существует огромное множесто аппликух на APEX , в которых все выполняется в СУБД и есть огромная куча очень крупных компаний инвалидов, которые это с удовольствием используют .
...
Рейтинг: 0 / 0
25 сообщений из 323, страница 2 из 13
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Взаимодействие клиентов с БД.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]