Ищите доступную для сети хеш-таблицу - PullRequest
1 голос
/ 14 октября 2010

У меня есть приложение для сбора данных, разбитое на клиента и сервер.

Сервер отвечает за захват данных с оборудования, проведение анализа в реальном времени и запись данных на диск по запросу.

клиент - это графический интерфейс, который оператор может использовать для просмотра некоторых симпатичных графиков (генерируемых сервером), установки некоторых параметров и включения и выключения записи. Обычно он запускается на той же машине, что и сервер, но может быть запущен с любой другой машины в сети.

Оба написаны на Qt (C ++). Оба используются в Linux.

Связь между ними в настоящее время осуществляется с помощью доморощенной библиотеки (на C ++, но не Qt), которая по сути является хеш-таблицей. На сервере есть список параметров, например analysis.graph.width, и эти параметры могут быть установлены и получить как сервером, так и клиентом (ами).

Система перерабатывается для поддержки нового оборудования, и сейчас самое время заменить эту библиотеку, если что-то будет лучше. Вот некоторые требования:

  • В идеале хорошо бы работать с Qt (используя QVariant для хранения значений, используя сигналы / слоты)
  • Должно быть допустимым, чтобы значения были разных типов (целые числа, строки, числа типа double, bools, их списки)
  • Ключи будут строками
  • Должно быть быстрым, позволяя устанавливать / получать операции до 30 раз в секунду
  • Должно позволять нескольким клиентам одновременно устанавливать / получать параметры

Я нашел этот список: http://en.wikipedia.org/wiki/Structured_storage, но библиотеки, перечисленные там, кажутся слишком сложными (распределенными, зеркальными) или недостаточно совместимыми (значения могут быть только строками).

Кто-нибудь знает библиотеки, которые бы соответствовали некоторым или всем требованиям?

1 Ответ

0 голосов
/ 15 октября 2010

Ну, Дейв, я использовал redis для той же проблемы. Он не отвечает всем вашим требованиям, но соответствует

  1. Должно быть много значений разные типы (целые числа, строки, двойники, були, списки тех)
  2. Ключи будут строки
  3. Должно быть быстрым, позволяя установить / получить операции до 30 раз в секунду
  4. Необходимо разрешить нескольким клиентам установить / получить параметры одновременно

Вы можете использовать API c / c ++ для связи с Redis. Как использовать Redis в программе на C ++? ... да, вам придется преобразовывать типы данных из одного в другой, например, char *, в QString и т. Д.

...