Russian Qt Forum
Ноябрь 22, 2024, 18:21
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
где лучше выполнять QSqlQuery, на сервере или на клиенте?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: где лучше выполнять QSqlQuery, на сервере или на клиенте? (Прочитано 6307 раз)
unkeep
Гость
где лучше выполнять QSqlQuery, на сервере или на клиенте?
«
:
Июль 07, 2016, 18:21 »
допустим есть несколько физических узлов(компов) равных по мощности. На одном стоит сервер БД, на остальных клиентское ПО. В каком случае будут более рационально использованы ресурсы:
1) Серверное ПО создаёт и выполняет QSqlQuery, а после отдаёт готовые данные клиенту по тсп сокету.
2) Клиентское ПО создаёт и выполняет QSqlQuery, а на серверном машине есть только сервер БД, другого ПО нету.
в общем один и тот же запрос можно выполнить как на узле с бд, так и на других узлах. Как при этом будет распределятся нагрузка?
«
Последнее редактирование: Июль 07, 2016, 18:56 от unkeep
»
Записан
PimenS
Крякер
Offline
Сообщений: 371
Re: где лучше выполнять QSqlQuery, на сервере или на клиенте?
«
Ответ #1 :
Июль 07, 2016, 18:58 »
Мне кажется есть очень много дополнительных факторов(кроме мощности компьютера), которые еще нужно учитывать.
Чаще всего выполнение на сервере более производительно, но опять таки, все зависит от задачи.
Цитировать
Серверное ПО создаёт и выполняет QSqlQuery
Не совсем понял, что вы имеете ввиду. У вас еще есть дополнительный сервер, который работает с базой, а клиенты работают с базой через него?
«
Последнее редактирование: Июль 07, 2016, 19:01 от PimenS
»
Записан
unkeep
Гость
Re: где лучше выполнять QSqlQuery, на сервере или на клиенте?
«
Ответ #2 :
Июль 07, 2016, 19:28 »
на данный момент есть система работающая по варианту №1. Т.е да, клиент работает не на прямую с сервером бд, а через дополнительный программный слой на серверном узле, который преобразовывает запрос полученный через сеть в запрос QSqlQuery. Проблема в том, что даже несмотря на многопоточную реализацию этого слоя со своей очередью запросов, сервер можно повесить 5тью плотно работающими клиентами. При этом все клиенты начнут получать таймауты.
Вот и встал вопрос об оптимизации: "а можно ли более равномерно распределить нагрузку, вызывая запросы на клиентах?"
Записан
PimenS
Крякер
Offline
Сообщений: 371
Re: где лучше выполнять QSqlQuery, на сервере или на клиенте?
«
Ответ #3 :
Июль 07, 2016, 19:44 »
Тогда встречный вопрос. А почему клиент не работает напрямую с базой?
Не знаю вашей задачи. У меня например клиенты работают напрямую с базой. Конечно больше 10-ти одновременно работающих клиентов я не проверял, но при 10-ти
никаких проблем не наблюдал.
Невнимательно ответ прочитал. Какой SQL у вас?
«
Последнее редактирование: Июль 07, 2016, 20:06 от PimenS
»
Записан
unkeep
Гость
Re: где лучше выполнять QSqlQuery, на сервере или на клиенте?
«
Ответ #4 :
Июль 08, 2016, 11:28 »
Цитата: PimenS от Июль 07, 2016, 19:44
Невнимательно ответ прочитал. Какой SQL у вас?
Postgre
Записан
PimenS
Крякер
Offline
Сообщений: 371
Re: где лучше выполнять QSqlQuery, на сервере или на клиенте?
«
Ответ #5 :
Июль 08, 2016, 11:53 »
Как вариант, более сложные операции выполняйте на сервере Postgresql, простые на клиенте.
Только без дополнительной прокладки.
Записан
PinkPanther
Самовар
Offline
Сообщений: 169
Re: где лучше выполнять QSqlQuery, на сервере или на клиенте?
«
Ответ #6 :
Март 11, 2017, 01:47 »
Если я правильно понял структуру вашего ПО, клиентская часть может преобразовывать запросы в формат QSqlQuery или же отправлять as is на сервер.
Рациональный путь, кмк, комбинационный - предварительный запрос о текущей нагрузке на сервер. Если сервер не загружен, работа достается ему (клиентские машины должны грузиться по-минимуму). Если сервер загружен, придется грузить работой клиентские машины.
Записан
Эвтаназия - наше хобби!
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...