Time series database - Wikipedia, the free encyclopedia [ traitement des séries de temps, OpenTSD, CityzenData ]
mercredi 5 août 2015 à 17:22GuiGui'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)
« 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)