Dans de nombreux projets, nous devons stocker, agréger et évaluer des valeurs de mesure simples. Une ligne se compose généralement d'un horodateur, d'une valeur et de quelques attributs de la valeur. Dans certaines applications, nous aimerions stocker 1000 valeurs par seconde et plus. Ces valeurs doivent être non seulement insérées mais aussi supprimées au même rythme, puisque la durée de vie d'une valeur est limitée à un an environ (dans les différentes étapes d'agrégation, nous ne stockons pas 1000/s pendant toute l'année).
Jusqu'à présent, nous avons développé différentes solutions. Une basée sur Firebird, une sur Oracle et une sur un mécanisme de stockage que nous avons créé nous-mêmes. Mais aucune de ces solutions n'est très satisfaisante.
Les deux solutions SGBD ne peuvent pas gérer le flux de données souhaité. En outre, les applications qui fournissent les valeurs (par exemple, les pilotes de périphériques) ne peuvent pas être facilement rattachées aux bases de données, les instructions d'insertion sont lourdes. Enfin, si une interface SQL avec les données est fortement souhaitée, les évaluations typiques sont difficiles à formuler en SQL et lentes à exécuter. Par exemple, trouver la valeur maximale avec horodatage toutes les 15 minutes pour toutes les mesures du dernier mois.
La solution maison peut gérer le taux d'insertion et dispose d'une API conviviale pour le faire, mais elle n'a rien d'un langage de requête et ne peut pas être utilisée par d'autres applications via une interface standard, par exemple pour l'établissement de rapports.
La meilleure solution dans mes rêves serait un système de base de données qui :
- dispose d'une API pour une insertion très rapide
- est capable de supprimer/trouver les valeurs à la même vitesse.
- fournit une interface SQL standard avec un support spécifique pour les données de séries chronologiques typiques
Connaissez-vous une base de données qui s'approche de ces exigences ou aborderiez-vous le problème d'une manière différente ?
0 votes
Pour un traitement rapide et pratique (en mémoire) vous pouvez essayer
pandas
pour des entrées-sorties rapides.PyTables
.0 votes
Vous pouvez également essayer Starcounter. Il peut gérer quelques millions de requêtes SQL par seconde sur un seul serveur Windows 2008. Il est encore en version bêta fermée, mais il fonctionne en production sur de très grandes installations depuis un certain temps déjà. Un courriel devrait suffire pour en obtenir une copie.
0 votes
J'ai une question similaire, sinon identique, qui a été fermée comme hors sujet également, donc je l'ai déplacée ici : softwarerecs.stackexchange.com/questions/18302/