PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli du 23/07/2013

⇐ retour index

Time series database - Wikipedia, the free encyclopedia [ traitement des séries de temps, OpenTSD, CityzenData ]

mercredi 5 août 2015 à 17:22
GuiGui's Show - Liens
« A time series database (TSDB) is a software system that is optimized for handling time series data, arrays of numbers indexed by time. [...] A time series of stock prices might be called a price curve. A time series of energy consumption might be called a load profile. A log of temperature values over time might be called a temperature trace.Despite the disparate names, many of the same mathematical operations, queries, or database transactions are useful for analysing all of them. The implementation of a database that can correctly, reliably, and efficiently implement these operations must be specialized for time-series data. [...]

A workable implementation of a time series database can be deployed in a conventional SQL-based relational database provided that the database software supports both binary large objects (BLOBs) and user-defined functions. SQL statements that operate on one or more time series quantities on the same row of a table or join can easily be written, as the user-defined time series functions operate comfortably inside of a SELECT statement. However, time series functionality such as a SUM function operating in the context of a GROUP BY clause cannot be easily achieved. »


OpenTSDB est quand même limité :
   * Problème d'optimisation dans le stockage hbase utilisé derrière ;
   * Au-delà de fonctions de base (sum, union, moyenne,...), rien n'est proposé par OpenTSDB, ce qui est extrêmement limitant ;


Pour les usages avancés, une société commerciale, Cityzen Data (http://www.cityzendata.com/), propose une infrastructure et un langage (Einstein) pour stocker et traiter les séries temporelles. Quelques points sur cette techno :
   * Ça marche et plutôt bien : je pousse environ 37000 métriques par minute, toutes les minutes de chaque jour et la plateforme les acquittes en 1-2 secondes (stockage sécurisé dans kafka et traitement au fil de l'eau) :D ;

   * La documentation (https://api0.cityzendata.net/doc/) est plutôt faible : un gros effort est fait mais il y a encore des fonctions non documentées. Exemples : FINDSTATS pour obtenir des informations sur vos séries ou  AUTHENTICATE <nombre> LIMIT pour remonter (avec FETCH) plus de métriques que la limite pré-configurée,... De plus, la documentation existante n'est pas toujours complète... Comme la documentation officielle est encore la seule source d'information disponible, c'est parfois un peu difficile de s'y retrouver ;

   * Système interopérable : les données se poussent sur la plateforme via une requête HTTP POST, elles se récupérent via une requête HTTP GET au format JSON. Un mécanisme de push/pull via les websockets est aussi disponible. Les erreurs retournées sont claires et compréhensibles ;

   * Un langage de manipulation des séries est proposé : Einstein. Il est exécuté côté serveur donc on récupère uniquement les métriques qui nous intéressent, après traitement ;

   * Peut-être couplé avec Grafana (https://github.com/CityzenDataOSS/grafana-warp) pour produire facilement des visualisations graphiques ;

   * Limite : il manque encore des fonctions super utiles comme par exemple un TOP n sur les valeurs ou un SORT sur les valeurs numériques. On est obligé d'avoir recours à des macros et à une projection orthogonale (car les abscisses sont ordonnées automatiquement)...


Une autre source d'information sur CZD : Domotique : Valoriser et exploiter les données chez GuiguiAbloc - http://blog.guiguiabloc.fr/?p=1700
(Permalink)