|
|
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
ViPRos если клиентов дофига, то иного варианта и нет Точно нет? Ну то есть вот если хоть один другой вариант найдётся - ты посыпешь голову пеплом и впредь заречёшься писать прежде чем думать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2020, 21:48 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer ViPRos если клиентов дофига, то иного варианта и нет Точно нет? Ну то есть вот если хоть один другой вариант найдётся - ты посыпешь голову пеплом и впредь заречёшься писать прежде чем думать? чем лишний раз блабла, лучше бы просветил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 01:28 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
ViPRos чем лишний раз блабла, лучше бы просветил Чтобы просвещать, нужно хоть как-то представлять задачу. "Дофига" - это хотя бы примерно сколько? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 02:26 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Правильно держать пул соединений, на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Во многих ЯП и библиотеках это выглядит как создание и закрытие соединения, но при этом они берутся из пула. Никаких за и против тут быть не может. Вы не должны напрямую управлять соединением на уровне прикладного кода. И никакие оправдания вам тут не помогут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 08:21 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
hVostt на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 13:41 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov hVostt на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных. дык, для каждого чиха есть свой пул ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 14:09 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer ViPRos чем лишний раз блабла, лучше бы просветил Чтобы просвещать, нужно хоть как-то представлять задачу. "Дофига" - это хотя бы примерно сколько? ну, есть же какие то ограничения на сервере на количество одновременных соединений "дофига" - близко к этим ограничениям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 14:56 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
ViPRos ну, есть же какие то ограничения на сервере на количество одновременных соединений "дофига" - близко к этим ограничениям Ну, тут вопрос - каких именно соединений. Речь может идти о сессиях в БД или о tcp/соединениях операционки. Но в любом случае в таких условиях стратегия "сразу же гробить" неэффективна по сравнению со стратегией "разделяя, эффективно использовать". На пальцах:
Давай возьмём за эталон лузерства решение "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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 15:46 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov hVostt на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных. Ну а ещё раньше лошадей подковывали. Как вам вообще права-то выдали, если вы не знаете о том, как подковать лошадь или перебрать мотор и промыть карбюратор, а? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 17:16 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer Что бы лично я сделал вместо этого. Я бы поставил 20 промежуточных прокси - они простые и дешёвые. Клиенты соединяются на прокси по 500 штук на каждого, лимит в 1000 соединений не нарушен. Прокси соединяются с БД, тратя на это 20 * N соединений. N выбирается исходя из оптимальной работы сервера. Прокси диспетчеризует запросы так, чтобы наилучшим образом загрузить сервер (например, упаковывает разные в один батч). Лимит в 1000 соединений опять же не нарушается. Итого: сервер загружен по полной, 10'000 счастливчиков спокойно и эффективно работают, все счастливы. По цена/качество этот вариант кроет "одноразовые подключения" как бык блоху. Зачем так много слов и буков, если можно сказать -- горизонтальное масштабирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 17:20 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer, сам прекрасно понимаешь что про прокси и т.д. не был и речи, разговор был клиент - сервер а в режиме клиент-сервер я бы и на стороне сервера ввел бы пул соединений и присваивал бы динамические приоритеты клиентам и их запросам по заданным правилам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 18:27 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
ViPRos сам прекрасно понимаешь Не надо этими словами приписывать мне всякую фигню. Сам прекрасно понимаешь, есть некое приложение (готовое либо проектируемое), есть нарисованная тобой ситуация, стоит вопрос как сделать (или переделать) это приложение, чтобы оно хорошо работало в таком раскладе. ViPRos а в режиме клиент-сервер я бы и на стороне сервера ввел бы пул соединений Ну, есть такое в Oracle, называется shared server mode. Но это ответ для случая, если лимит по количеству соединений. Лимит по tcp соединениям это преодолеть не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 23:54 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer, ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок (прокладка всегда воняет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 23:58 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer Ну, есть такое в Oracle, называется shared server mode. Но это ответ для случая, если лимит по количеству соединений. Лимит по tcp соединениям это преодолеть не поможет. ну, есть слава бог люди с правильными мозгами, не все фаулеры еще засрали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2020, 23:59 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
irbis_al Т.е мы говорим о ленивой заранее неизвестной подгрузке исполняемого объекта (в том числе с зависимостями из репозитория и по http),то круче java в этом вопросе никого нет. Весьма спорно. Напомните: вот лежит некий плагин (ну то есть jar-ник или нечто аналогичное в любом другом формате). Java хотя бы научилась загружать его без необходимости явно перечислять стартовые классы, инициализация которых должна быть выполнена? irbis_al У Меня модуль состоит из главной формы...контейнера в который загрузится неизвестно что,и коннектор к базе данных ,который читает конфигурацию и говорит что грузить в контейнер в данный момент. Вы так говорите, будто это нечто особенное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 00:02 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
ViPRos ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок Если у ТС есть колёса и руль, это не означает, что нет ничего кроме колёс и руля. Он задаёт архитектурный вопрос и не задал никаких ограничений на "только КС". Да и кроме того, прокси - вовсе не обязательно нарушение КС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 00:06 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer ViPRos ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок Если у ТС есть колёса и руль, это не означает, что нет ничего кроме колёс и руля. Он задаёт архитектурный вопрос и не задал никаких ограничений на "только КС". Да и кроме того, прокси - вовсе не обязательно нарушение КС. ладно, тебя х переспоришь, за столько лет накачал уже навыки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 00:40 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
ViPRos, а смысл спорить? Ну хреновый это режим - пересоединяться на каждый чих. Всё равно что школьникам после каждого урока возвращаться домой, а потом снова топать в школу на следующий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 01:28 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
ViPRos ну, есть слава бог люди с правильными мозгами, не все фаулеры еще засрали Ну я же говорил! Земля плоская! А то засрали тут свои мозги всякими Галилеями галимыми. Фух, хорошо есть ещё умные люди ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 01:38 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
hVostt Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Правильно держать пул соединений, на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Во многих ЯП и библиотеках это выглядит как создание и закрытие соединения, но при этом они берутся из пула. Никаких за и против тут быть не может. Вы не должны напрямую управлять соединением на уровне прикладного кода. И никакие оправдания вам тут не помогут. Зависит от БД. Иногда выгоднее честное открытие/закрытие соединений. Натолкнулся на особенности MySQL. Где у меня пул соединений постоянно тихо терял соединение с БД. Соответственно из пула выдавалось "мертвое содинение" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 06:13 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov hVostt на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 10:45 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
Misha_E А разве все перечисленное не должно интересовать только того кто пишет ХП? Нет. Подход "всё на ХП" - это отрыжка больного на голову MSSQL, которая появилась только потому, что они не могли сделать адекватной работы СУБД в других режимах и предпочли за счёт маркетоидов прорекламировать багу как фичу. Так или иначе, контракт между БД-частью и БД-клиентом - вопрос архитектуры. Разработчик выбирает тот вариант, который соответствует задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 13:52 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer Misha_E А разве все перечисленное не должно интересовать только того кто пишет ХП? Нет. Подход "всё на ХП" - это отрыжка больного на голову MSSQL, которая появилась только потому, что они не могли сделать адекватной работы СУБД в других режимах и предпочли за счёт маркетоидов прорекламировать багу как фичу. Так или иначе, контракт между БД-частью и БД-клиентом - вопрос архитектуры. Разработчик выбирает тот вариант, который соответствует задаче. ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API или тому от чего наследоваться , а в противном случае ORM . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 14:02 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
Misha_E ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API Секурность на уровне ХП - это заведомо хрупкое решение. API - хорошее слово. ХП - это существенная часть API, но они не в состоянии дать адекватное решение ряду стоящих задач, поэтому подход "всё на API" годится либо для демо-примеров в книжках, либо для производства инвалидов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 14:14 |
|
||
|
Взаимодействие клиентов с БД.
|
|||
|---|---|---|---|
|
#18+
softwarer Misha_E ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API Секурность на уровне ХП - это заведомо хрупкое решение. API - хорошее слово. ХП - это существенная часть API, но они не в состоянии дать адекватное решение ряду стоящих задач, поэтому подход "всё на API" годится либо для демо-примеров в книжках, либо для производства инвалидов. Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП, а обратные случаи есть. Секурность на уровне ХП замечательно работает по пользователям. Пользователь может выполнить ровно то что ему дозволено и это хорошо когда используются СУБД без РЕДО лога и нельзя сделать селект таблицы на определенную дату , ну есть логгирование и дупликаты на тригграх, но сути не меняет . В некоторые ХП в некоторых СУБД вполне можно интегрировать код языков высшего порядка , поэтому я не совсем понимаю каких задач нельзя решить на уровне СУБД.Существует огромное множесто аппликух на APEX , в которых все выполняется в СУБД и есть огромная куча очень крупных компаний инвалидов, которые это с удовольствием используют . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2020, 14:31 |
|
||
|
|

start [/forum/topic.php?fid=33&msg=39961462&tid=1547103]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 182ms |

| 0 / 0 |
