5504 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
page 1 / 1
  • Time series database - Wikipedia, the free encyclopedia [ traitement des séries de temps, OpenTSDB, CityzenData ]

    « 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 acquitte 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 (erreurs, nombre d'éléments stockés,...) ou '<votre_token>' 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 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 au format JSON via une requête HTTP GET. 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. C'est un langage à pile (exemple :  1 60 * 60 * 'noSecondesInOneHour' STORE) dont la gymnastique n'est pas celle naturelle à notre cerveau donc il faut de l'entraînement et de la persévérence ;

        * 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 un TOP n sur les valeurs ou un SORT des séries sur leur valeur (pour les valeurs numériques, of course) :
            * Pour le SORT par valeur, on est obligé d'avoir recours à des macros et à une projection orthogonale (car les séries peuvent être triées sur leurs abscisses (timestamp en temps normal, sans projection) avec les fonctions SORT/RSORT) ;
            * Pour un TOP n, il faut se souvenir que la fonction SHRINK trie automatiquement la série (c'est dans la doc') par ordre croissant. Donc, si l'on veut récupérer les N plus grandes valeurs, il faut demander à SHRINK de prendre ces N valeurs à partir de la fin : « N -1 * SHRINK ». Petite subtilité : si N est pile le nombre d'éléments dans la GTS, SHRINK n'est pas exécutée et donc vos élements sont affichés sans être triés. Donc ceinture et bretelles : « (R)SORT N -1 * SHRINK ». :)


    Une autre source d'information sur CZD : Domotique : Valoriser et exploiter les données chez GuiguiAbloc - http://blog.guiguiabloc.fr/?p=1700
    Wed Aug 5 17:22:46 2015 - permalink -
    - https://en.wikipedia.org/wiki/Time_series_database
    nomarkdown
Links per page: 20 50 100
page 1 / 1
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community