У меня есть приложение для сбора данных, разбитое на клиента и сервер.
Сервер отвечает за захват данных с оборудования, проведение анализа в реальном времени и запись данных на диск по запросу.
клиент - это графический интерфейс, который оператор может использовать для просмотра некоторых симпатичных графиков (генерируемых сервером), установки некоторых параметров и включения и выключения записи. Обычно он запускается на той же машине, что и сервер, но может быть запущен с любой другой машины в сети.
Оба написаны на Qt (C ++). Оба используются в Linux.
Связь между ними в настоящее время осуществляется с помощью доморощенной библиотеки (на C ++, но не Qt), которая по сути является хеш-таблицей. На сервере есть список параметров, например analysis.graph.width
, и эти параметры могут быть установлены и получить как сервером, так и клиентом (ами).
Система перерабатывается для поддержки нового оборудования, и сейчас самое время заменить эту библиотеку, если что-то будет лучше. Вот некоторые требования:
- В идеале хорошо бы работать с Qt (используя QVariant для хранения значений, используя сигналы / слоты)
- Должно быть допустимым, чтобы значения были разных типов (целые числа, строки, числа типа double, bools, их списки)
- Ключи будут строками
- Должно быть быстрым, позволяя устанавливать / получать операции до 30 раз в секунду
- Должно позволять нескольким клиентам одновременно устанавливать / получать параметры
Я нашел этот список: http://en.wikipedia.org/wiki/Structured_storage, но библиотеки, перечисленные там, кажутся слишком сложными (распределенными, зеркальными) или недостаточно совместимыми (значения могут быть только строками).
Кто-нибудь знает библиотеки, которые бы соответствовали некоторым или всем требованиям?