2010-10-14 3 views
1

У меня есть приложение для сбора данных, разбитое на клиент и сервер.Ищете сетевую таблицу хэшей

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

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

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

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

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

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

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

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

ответ

0

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

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

Вы можете использовать c/C++ api для связи с redis. How to use Redis within a C++ program? ... да вам придется преобразовать типы данных из одного в другое, скажем, char * to QString и т. Д.

Смежные вопросы