|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Доброго дня , господа. Я начинающий , но уже не молодой и вроде не эникейщик. Собственно вопрос по взаимодействию клиентов и БД следущий - правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Т.е. я могу тормознуть поток в приложении , не закрывая подключения и в этом же подключении если conn = not null сделать следующий запрос\процедуру. Готов обсудить все за и против каждого варианта. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 11:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Доброго дня , господа. Я начинающий , но уже не молодой и вроде не эникейщик. Собственно вопрос по взаимодействию клиентов и БД следущий - правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Т.е. я могу тормознуть поток в приложении , не закрывая подключения и в этом же подключении если conn = not null сделать следующий запрос\процедуру. Готов обсудить все за и против каждого варианта. Ну если у Вас descktop приложение(Даже новомодные electron desctop-flutter pwa ) то одно соединение. А если web ,то создается пул соединений.(Ибо соединение допустим для oracle...это ресурсоёмкая операция..так же для db2 и pg) Поэтому создается пул и при транзакции или запросе менеджер пула предоставляет свободное соединение(Не занятое в данный момент транзакцией или возвращением запроса)...если свободного нет,то ставится в очередь) (На java и python и node полно примеров работы с пулом) Кстати в html примерах к ораклу...там создается новое соединение на request(и потом закрывается),-не ведитесь...это лишь обучающий пример. А вот к моему непониманию, например в языке PHP при работе c mysql ...каждый request раз поднимается connect и выполняет sql и потом connection закрывается.(может быть что-то уже изменилось,но даже крутые порталы так работали(На мой взгляд неэффективно) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 12:57 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
irbis_al Misha_E Доброго дня , господа. Я начинающий , но уже не молодой и вроде не эникейщик. Собственно вопрос по взаимодействию клиентов и БД следущий - правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Т.е. я могу тормознуть поток в приложении , не закрывая подключения и в этом же подключении если conn = not null сделать следующий запрос\процедуру. Готов обсудить все за и против каждого варианта. Ну если у Вас descktop приложение(Даже новомодные electron desctop-flutter pwa ) то одно соединение. А если web ,то создается пул соединений.(Ибо соединение допустим для oracle...это ресурсоёмкая операция..так же для db2 и pg) Поэтому создается пул и при транзакции или запросе менеджер пула предоставляет свободное соединение(Не занятое в данный момент транзакцией или возвращением запроса)...если свободного нет,то ставится в очередь) (На java и python и node полно примеров работы с пулом) Кстати в html примерах к ораклу...там создается новое соединение на request(и потом закрывается),-не ведитесь...это лишь обучающий пример. А вот к моему непониманию, например в языке PHP при работе c mysql ...каждый request раз поднимается connect и выполняет sql и потом connection закрывается.(может быть что-то уже изменилось,но даже крутые порталы так работали(На мой взгляд неэффективно) Вот и я озадачился , т.к. накатал прожку для оценки производительности БД, оказалось что нашей БД само подключение ресурсоемкое по процессору . По ораклу читал Кайта, надо освежить в память, а то отложилось что уникальный пользователь накладен , а не коннект. Ставить в очередь это сервер приложений , в клиентском приложении можно так данные терять , т.е. юзер будет искать сохранилось или нет. Вы правы, везде в обучалках открыть закрыть коннект . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 13:32 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E, Ставить в очередь это сервер приложений , Нет это делает сам класс OracleDatabasePollConnection из JDBC если мы говорим о java для node и python необходим OCI(бинарные либы оракла...они держат пул и являются шлюзом к node и т.д). Поэтому сервер приложений Вам необязателен(Можно спокойно на jetty(grizly,-любой автономный лёгкий http сервер на java) заделать..у меня так где-то было)...разве,что решаете и другие web проблемы...ну например,чтоб был https,много приложений взаимодействующих..Websocket и т.д. -тогда стоит подумать о сервере приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 13:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
irbis_al Misha_E, Ставить в очередь это сервер приложений , Нет это делает сам класс OracleDatabasePollConnection из JDBC если мы говорим о java для node и python необходим OCI(бинарные либы оракла...они держат пул и являются шлюзом к node и т.д). Поэтому сервер приложений Вам необязателен(Можно спокойно на jetty(grizly,-любой автономный лёгкий http сервер на java) заделать..у меня так где-то было)...разве,что решаете и другие web проблемы...ну например,чтоб был https,много приложений взаимодействующих..Websocket и т.д. -тогда стоит подумать о сервере приложений. В данном случае не Оракля, но большое вам спасибо. Дали верное направление. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:32 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Вот и я озадачился , т.к. накатал прожку для оценки производительности БД Напишите, на чём накатали, что за БД? Многие библиотеки по работе с БД реализуют в себе поддержку пула соединений и надо просто следовать рекомендациям вида: Misha_E открыть закрыть коннект ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 20:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Дмитрий Мух Misha_E Вот и я озадачился , т.к. накатал прожку для оценки производительности БД Напишите, на чём накатали, что за БД? JDBC , FireBird Дмитрий Мух Многие библиотеки по работе с БД реализуют в себе поддержку пула соединений и надо просто следовать рекомендациям вида: C FireBird все сложно, но на выбор СУБД повлиять не могу.И JDBC неудачно выбрал на питоне там драйвер и мануал повеселей и местами проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 21:05 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Обычно это совершенно неправильно. Но сильно зависит от архитектуры приложения и обстоятельств. Misha_E JDBC неудачно выбрал на питоне там драйвер и мануал повеселей А что, на нормальных языках программировать вообще вариантов нет?.. С/С++ там, Дельфи... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 14:06 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Обычно это совершенно неправильно. Но сильно зависит от архитектуры приложения и обстоятельств. Я неопытным глазом сразу заметил неладное [quot Dimitry Sibiryakov#22135787] Misha_E Misha_E JDBC неудачно выбрал на питоне там драйвер и мануал повеселей А что, на нормальных языках программировать вообще вариантов нет?.. С/С++ там, Дельфи... С++ начну в ближайшее время. Дельфи нормальный? Давно? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 15:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Дельфи нормальный? Давно? Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 06:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Zmeelov2 Misha_E Дельфи нормальный? Давно? Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший. Вот не хочу заводить холливар в этой теме можно отдельную тему создать.. Но вот я как бывший дельфист могу сказать если быстро наформошлёпать то да...дельфи равных нет...а вот если Вы делаете большую ERP И неизвестно(Компилятору) какая у Вас подгрузится логика интерфейс и т.д. Т.е мы говорим о ленивой заранее неизвестной подгрузке исполняемого объекта (в том числе с зависимостями из репозитория и по http),то круче java в этом вопросе никого нет. У Меня модуль состоит из главной формы...контейнера в который загрузится неизвестно что,и коннектор к базе данных ,который читает конфигурацию и говорит что грузить в контейнер в данный момент. Вот тут обсуждалось Идеальная платформа - из чего и как построить? И можно эту тему там и продолжать насчёт языка и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Zmeelov2 Misha_E Дельфи нормальный? Давно? Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший. Наверно именно поэтому мне пришлось на JDBC писать, потому что наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert. Разумеется эта хрень напрочь зависала в 70% случаев. Вот ничего не хочется иметь общего ни с такими языками , ни с такими ведущими. А теперь серьезно :делфи хорош как быстрая разработка легких графических интерфейсов , но как выясняется и тут есть VCL для решения многих проблем\задач, а в этом VCL нет диаграмм Ганта, но в этом же VCL для С++ они есть. Итог - делфи норм для узкого круга задач небольших организаций, и если есть 10к зелени на Embarcadero . Начав работать с FB я познал параллельную реальность в которой живет эта СУБД. Я узнал что существует такая вещь как "нестабильность курсора" . Был сильно удивлен что MERGE по скорости выполнения то же самое что процедурка на процедурном языке с переменными.И многое многое другое. После такого могу точно сказать - стоимость Оракли оправдана на все 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E, - стоимость Оракли оправдана на все 100% Ну возьмите Oracle XE(Он бесплатен) ...с каждой новой версией...он даёт всё больше и больше лимитов.Хотя их(лимитов) и сейчас дофига. Так же можно скачать по девелоперской лицензии большой оракле У меня в образе VM там большой оракле(его поставить непросто) http://www.cis-pos.com/apex/f?p=116:43 Поставьте образ сравните с XE ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 10:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
irbis_al Misha_E, - стоимость Оракли оправдана на все 100% Ну возьмите Oracle XE(Он бесплатен) ...с каждой новой версией...он даёт всё больше и больше лимитов.Хотя их(лимитов) и сейчас дофига. Так же можно скачать по девелоперской лицензии большой оракле У меня в образе VM там большой оракле(его поставить непросто) http://www.cis-pos.com/apex/f?p=116:43 Поставьте образ сравните с XE Дома XE, на работе 10Гб превышено. Сейчас занимаюсь миграцией таблиц с FB в PostGres , потом и до оракли очередь дойдет. Прогоним тесты(запросы) посмотрим насколько FB хуже , а там может и БД сменим.У нас и оракля есть(а в целом по конторе у нас оракли не мерянно) , FB в нашей БД вероятно политическое решение ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:20 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Смотря как напишешь. Бывает нужно сделать n действий в одной сессии и если начать раздавать подключение направо и налево, то можно наделать себе дырок. С другой стороны поднимать соединение дорого, надо держать какой-то пул, пул закончится надо поднимать новые соединение - дорого, n соединений делать на всех страшно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:29 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster, надо держать какой-то пул, пул закончится Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает. Это экспериментальным путем вычисляется... У меня например расчёт на 25-30 пользователей 5 соединений в пуле.(у Вас может быть другая картина) При этом зависимость нелинейная (см.теорию массового обслуживания) на 60 пользователей модно дать уже 9 в пуле а на 90 -12 в пуле. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:39 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
irbis_al Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает. Так надо всё равно новое соединение поднимать. Не секурно же. Там в кешах что-то может остаться или во временных таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster irbis_al Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает. Так надо всё равно новое соединение поднимать. Не секурно же. Там в кешах что-то может остаться или во временных таблицах. А пользователь в БД один? А после авторизации как этот пользователь подтверждает что это он? Врменный файл, либо кукис если веб , либо переменная в приложении?Секурность отдельная история. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:41 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E А пользователь в БД один? Один. Авторизацию через юзеров бд делать - херовая идея. Misha_E А после авторизации как этот пользователь подтверждает что это он? Врменный файл, либо кукис если веб , либо переменная в приложении? С помощью асинхронного шифрования еще можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:50 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert Ненормальный процент дебилов среди использующих язык никак не соотносится с самим языком. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 13:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Misha_E наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert Ненормальный процент дебилов среди использующих язык никак не соотносится с самим языком. "порог входа" обычно отсекает дебилов. Каждый дебил знает что такое плюсы и даже не суется туда. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 14:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Нет. Это самый тупой вариант, какой только можно представить. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2020, 13:39 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Нет. Это самый тупой вариант, какой только можно представить. если клиентов дофига, то иного варианта и нет ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2020, 13:58 |
|
|
start [/forum/topic.php?fid=33&msg=39958911&tid=1547103]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
262ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
others: | 461ms |
total: | 838ms |
0 / 0 |