2010-10-14 5 views
1

J'ai une application d'acquisition de données cassée dans un client et un serveur.Vous cherchez une table de hachage accessible par le réseau

Le serveur est chargé de saisir les données du matériel, d'effectuer une analyse en temps réel et d'enregistrer les données sur le disque lorsque cela est demandé.

Le client est une interface graphique que l'opérateur peut utiliser pour afficher de jolis graphes (générés par le serveur), définir certains paramètres et activer et désactiver l'enregistrement. Il est généralement exécuté sur la même machine que le serveur, mais peut être exécuté à partir de n'importe quelle autre machine du réseau.

Les deux sont écrits en Qt (C++). Les deux sont utilisés sur Linux.

La communication entre les deux est actuellement effectuée avec une bibliothèque d'origine (en C++, mais pas Qt) qui est essentiellement une table de hachage. Le serveur a une liste de paramètres, comme analysis.graph.width, et ces paramètres peuvent être définir et obtenir par le serveur et le client (s).

Le système est en train d'être repensé pour prendre en charge le nouveau matériel, et c'est le bon moment pour remplacer cette bibliothèque si quelque chose de mieux existe. Voici quelques exigences:

  • idéal serait bien jouer avec Qt (en utilisant QVariant pour stocker des valeurs, en utilisant les signaux/slots)
  • doit permettre des valeurs à différents types (entiers, chaînes, doubles, bools, listes de celles-ci)
  • les clés seront les chaînes
  • doit être rapide, ce qui permet set/get opérations jusqu'à 30 fois par seconde
  • doit permettre à plusieurs clients pour définir/obtenir les paramètres simultanément

J'ai trouvé cette liste: http://en.wikipedia.org/wiki/Structured_storage, mais les bibliothèques qui y sont listées semblent trop complexes (distribuées, en miroir) ou pas assez cabables (les valeurs ne peuvent être que des chaînes).

Quelqu'un connaît-il des bibliothèques qui répondent à certaines ou à toutes les exigences?

Répondre

0

Bien Dave J'ai utilisé redis pour le même problème. Il ne répond pas à toutes vos exigences, mais répond

  1. doit permettre des valeurs d'être beaucoup différents types (entiers, chaînes, doubles, bools, listes de personnes)
  2. Les clés seront les chaînes
  3. Must être rapide, ce qui permet set/get opérations jusqu'à 30 fois par seconde
  4. doit permettre à plusieurs clients à set/get paramètres simultanément

Vous pouvez utiliser l'API c/C++ pour communiquer avec redis. How to use Redis within a C++ program? ... oui vous devrez convertir les types de données de l'un à l'autre par exemple char * à QString

Questions connexes