web-dev-qa-db-fra.com

Existe-t-il un puissant système de base de données pour les données de séries chronologiques?

Dans plusieurs projets, nous devons stocker, agréger, évaluer des valeurs de mesure simples. Une ligne se compose généralement d'un horodatage, d'une valeur et de certains attributs de la valeur. Dans certaines applications, nous aimerions stocker 1000 valeurs par seconde et plus. Ces valeurs doivent non seulement être insérées mais également supprimées au même rythme, car la durée de vie d'une valeur est limitée à un an environ (dans différentes étapes d'agrégation, nous ne stockons pas 1000/s pour toute l'année).

Jusqu'à présent, nous avons développé différentes solutions. Un basé sur Firebird, un sur Oracle et un sur un mécanisme de stockage self-made. Mais aucune de ces solutions n'est très satisfaisante.

Les deux solutions SGBDR ne peuvent pas gérer le flux de données souhaité. En plus de cela, les applications qui fournissent les valeurs (par exemple les pilotes de périphériques) ne peuvent pas être facilement attachées aux bases de données, les instructions d'insertion sont lourdes. Et enfin, même si une interface SQL avec les données est fortement souhaitée, les évaluations typiques sont difficiles à formuler en SQL et lentes dans l'exécution. Par exemple. trouver la valeur maximale avec horodatage toutes les 15 minutes pour toutes les mesures du dernier mois.

La solution self-made peut gérer le taux d'insertion et dispose d'une API conviviale pour le faire, mais elle n'a rien à voir avec un langage de requête et ne peut pas être utilisée par d'autres applications via une interface standard, par exemple pour les rapports.

La meilleure solution dans mes rêves serait un système de base de données qui:

  • possède une API pour une insertion très rapide
  • est capable de supprimer/tronquer 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 se rapproche de ces exigences ou aborderiez-vous le problème d'une manière différente?

62
Kit Fisto

La plupart des autres réponses semblent mentionner des bases de données basées sur SQL. Les bases de données basées sur NoSQL sont bien supérieures dans ce genre de choses.

Quelques bases de données de séries chronologiques open source:

Basé sur le cloud:

42
Joakim

influxdb :: Une base de données de séries chronologiques distribuées open source sans dépendances externes.

8
A.N.

Considérez IBM Informix Dynamic Server avec TimeSeries DataBlade.

Il s'agit cependant d'un débit de données extrême avec lequel vous travaillez. (Pas tout à fait à la hauteur de la physique sub-atomique au CERN, mais dans cette direction générale.)


Divulgation juste : Je travaille pour IBM sur le SGBD Informix, mais pas sur le TimeSeries DataBlade en soi.

2
Jonathan Leffler
1
Mitch Wheat

Vous pouvez essayer HDF5 pour les données de séries chronologiques. Il est extrêmement rapide pour de telles applications.

1
shoonya

Comme l'a dit Jonathan Leffler, vous devriez essayer la fonction Informix Timeseries. Il est inclus dans toutes les éditions d'Informix sans frais supplémentaires. Vous pouvez jeter un œil aux fonctions TimeSeries qu'il prend en charge:

routines SQL IBM Informix Time Series

Vous pouvez accéder aux données via des fonctions SQL ou des interfaces de vue virtuelle, vous pouvez même les insérer dans la vue.

0
GeorgeStone