powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Взаимодействие клиентов с БД.
25 сообщений из 323, страница 1 из 13
Взаимодействие клиентов с БД.
    #39958846
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня , господа.
Я начинающий , но уже не молодой и вроде не эникейщик.
Собственно вопрос по взаимодействию клиентов и БД следущий -
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?
Т.е. я могу тормознуть поток в приложении , не закрывая подключения и в этом же подключении
если conn = not null сделать следующий запрос\процедуру.
Готов обсудить все за и против каждого варианта.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39958875
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 закрывается.(может быть что-то уже изменилось,но даже крутые порталы так работали(На мой взгляд неэффективно)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39958893
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 закрывается.(может быть что-то уже изменилось,но даже крутые порталы так работали(На мой взгляд неэффективно)

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

Нет это делает сам класс OracleDatabasePollConnection из JDBC если мы говорим о java
для node и python необходим OCI(бинарные либы оракла...они держат пул и являются шлюзом к node и т.д).
Поэтому сервер приложений Вам необязателен(Можно спокойно на jetty(grizly,-любой автономный лёгкий http сервер на java) заделать..у меня так где-то было)...разве,что решаете и другие web проблемы...ну например,чтоб был https,много приложений взаимодействующих..Websocket и т.д. -тогда стоит подумать о сервере приложений.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959088
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
Misha_E,
Ставить в очередь это сервер приложений ,

Нет это делает сам класс OracleDatabasePollConnection из JDBC если мы говорим о java
для node и python необходим OCI(бинарные либы оракла...они держат пул и являются шлюзом к node и т.д).
Поэтому сервер приложений Вам необязателен(Можно спокойно на jetty(grizly,-любой автономный лёгкий http сервер на java) заделать..у меня так где-то было)...разве,что решаете и другие web проблемы...ну например,чтоб был https,много приложений взаимодействующих..Websocket и т.д. -тогда стоит подумать о сервере приложений.
В данном случае не Оракля, но большое вам спасибо. Дали верное направление.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959109
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Вот и я озадачился , т.к. накатал прожку для оценки производительности БД

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

Напишите, на чём накатали, что за БД?

JDBC , FireBird
Дмитрий Мух

Многие библиотеки по работе с БД реализуют в себе поддержку пула соединений и надо просто следовать рекомендациям вида:

C FireBird все сложно, но на выбор СУБД повлиять не могу.И JDBC неудачно выбрал на питоне там драйвер и мануал повеселей и местами проще.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959464
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?

Обычно это совершенно неправильно. Но сильно зависит от архитектуры приложения и обстоятельств.

Misha_E
JDBC неудачно выбрал на питоне там драйвер и мануал повеселей

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

Обычно это совершенно неправильно. Но сильно зависит от архитектуры приложения и обстоятельств.


Я неопытным глазом сразу заметил неладное
[quot Dimitry Sibiryakov#22135787]
Misha_E


Misha_E
JDBC неудачно выбрал на питоне там драйвер и мануал повеселей

А что, на нормальных языках программировать вообще вариантов нет?.. С/С++ там, Дельфи...

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

Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959770
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeelov2
Misha_E
Дельфи нормальный? Давно?

Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший.


Вот не хочу заводить холливар в этой теме можно отдельную тему создать..
Но вот я как бывший дельфист могу сказать если быстро наформошлёпать то да...дельфи равных нет...а вот если Вы делаете большую ERP
И неизвестно(Компилятору) какая у Вас подгрузится логика интерфейс и т.д. Т.е мы говорим о ленивой заранее неизвестной подгрузке исполняемого объекта (в том числе с зависимостями из репозитория и по http),то круче java в этом вопросе никого нет.
У Меня модуль состоит из главной формы...контейнера в который загрузится неизвестно что,и коннектор к базе данных ,который читает конфигурацию и говорит что грузить в контейнер в данный момент.
Вот тут обсуждалось
Идеальная платформа - из чего и как построить?
И можно эту тему там и продолжать насчёт языка и т.д.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959772
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeelov2
Misha_E
Дельфи нормальный? Давно?

Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший.

Наверно именно поэтому мне пришлось на JDBC писать, потому что наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert. Разумеется эта хрень напрочь зависала в 70% случаев. Вот ничего не хочется иметь общего ни с такими языками , ни с такими ведущими.

А теперь серьезно :делфи хорош как быстрая разработка легких графических интерфейсов , но как выясняется и тут
есть VCL для решения многих проблем\задач, а в этом VCL нет диаграмм Ганта, но в этом же VCL для С++ они есть.
Итог - делфи норм для узкого круга задач небольших организаций, и если есть 10к зелени на Embarcadero .

Начав работать с FB я познал параллельную реальность в которой живет эта СУБД. Я узнал что существует такая
вещь как "нестабильность курсора" . Был сильно удивлен что MERGE по скорости выполнения то же самое что процедурка на процедурном языке с переменными.И многое многое другое. После такого могу точно сказать - стоимость Оракли оправдана на все 100%
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959793
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E,
- стоимость Оракли оправдана на все 100%

Ну возьмите Oracle XE(Он бесплатен) ...с каждой новой версией...он даёт всё больше и больше лимитов.Хотя их(лимитов) и сейчас дофига.
Так же можно скачать по девелоперской лицензии большой оракле
У меня в образе VM там большой оракле(его поставить непросто)
http://www.cis-pos.com/apex/f?p=116:43
Поставьте образ сравните с XE
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959804
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 в нашей БД вероятно политическое решение
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959805
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как то так.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959807
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?

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

Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает.

Это экспериментальным путем вычисляется...
У меня например расчёт на 25-30 пользователей 5 соединений в пуле.(у Вас может быть другая картина)
При этом зависимость нелинейная (см.теорию массового обслуживания) на 60 пользователей модно дать уже 9 в пуле
а на 90 -12 в пуле.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959811
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает.

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

Так надо всё равно новое соединение поднимать. Не секурно же. Там в кешах что-то может остаться или во временных таблицах.

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

Один. Авторизацию через юзеров бд делать - херовая идея.
Misha_E
А после авторизации как этот пользователь подтверждает что это он? Врменный файл, либо кукис если веб , либо переменная в приложении?

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

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

Ненормальный процент дебилов среди использующих язык никак не соотносится с самим языком.

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

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

Нет. Это самый тупой вариант, какой только можно представить.

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

Посадить всех на n соединений, исключив атаки на общее соединение.
...
Рейтинг: 0 / 0
25 сообщений из 323, страница 1 из 13
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Взаимодействие клиентов с БД.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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