У нас есть приложение Qt C++ Gui, которое в основном является терминалом для сервера (TCP), контролирующего его и отображающего его данные.Параллельные обновления данных реляционных приложений
Проблема в том, что данные, поступающие с сервера, являются реляционными данными. В Условиях SQL это будет ~ 10-15 таблиц, все связанные друг с другом некоторыми внешними ключами
Эти данные обновляются на сервере и должны быть (в то же время) отображены графическим интерфейсом.
Исходное решение состоит в том, что мы храним все данные в (в основном) картах и структурах с соответствующей блокировкой (чтение/запись), чтобы избежать проблем с одновременным доступом.
Теперь мы сталкиваемся с проблемой, что это решение не очень хорошо масштабируется. Производительность приложения (нажатие на что-то происходит на экране) ухудшается.
Будет ли использоваться система реляционных баз данных в приложении (например, sqlite с базой данных в памяти)? Использует базу данных (где реляционные зависимости решаются при запросе) лучше масштабируется, чем с использованием карт структур (где реляционные зависимости решаются во время вставки)?
Надеюсь, я поставил свою проблему как можно яснее.
С уважением, Андре
Чтобы сделать его более ясным: Это о GUI не реагирует больше, как много обновлений с сервера блокировки datastructures.
Вопрос: пользователь вводит команды в графическом интерфейсе, которые затем отправляются на сервер, который отвечает на большее количество данных (по запросу)? – Sga
Я боюсь, что с «блокировкой» вы хотите отправить запрос блокировки от клиента к серверу, ответить с успехом/неудачей блокировки и продолжить работу с обновлением? Потому что это объясняет медленность. – MSalters
Ах, все еще неясно ... Игнорируйте, что клиент делает с сервером. Все дело в данных, поступающих с сервера. Обработка данных (помещая их в правильные карты) по существу блокирует поток графического интерфейса пользователя от рисования. В связи с этим возникает вопрос: поможет ли RDB в этом случае – Bigbohne