InfluxDB : présentation, avantages, premiers pas
La collecte de données de mesure scientifiques ou techniques au moyen de capteurs génère d’énormes quantités de données dans un court laps de temps - données qui doivent faire l’objet d’un horodatage et être traitées. Ces données chronologiques exigent des bases de données spéciales. Dans cet article, nous vous présentons InfluxDB, un système de gestion de base de données spécialement conçu pour cette tâche.
Qu’est-ce qu’InfluxDB ?
InfluxDB est un système de gestion de base de données développé par la société InfluxData, Inc. InfluxDB est un logiciel open source et peut être utilisé gratuitement. La version commerciale « InfluxDB Enterprise » inclut un accord de maintenance ainsi que des contrôles d’accès spéciaux pour les clients professionnels et s’installe sur un serveur du réseau de l’entreprise.
La nouvelle version InfluxDB 2.0 offre en plus un service cloud flexible et adaptable et comprend une interface utilisateur web pour saisir et visualiser les données.
Le système de gestion de base de données InfluxDB utilise le langage de programmation Go de Google, encore appelé Golang. Dans la première version, le langage de requête InfluxQL, développé par la société, était utilisé pour interroger les bases de données externes.
InfluxDB 2.0 introduit le nouveau langage de programmation Flux, qu’InfluxData publie sur GitHub en open source sous licence MIT. Là-bas, d’autres développeurs manipulant des données chronologiques continueront d’améliorer le projet. Flux est un langage de script et de requête indépendant destiné aux bases de données de série temporelle (TSDB). Depuis la version 1.7, il peut être utilisé de manière entièrement indépendante ou en combinaison avec des bases de données d’autres fournisseurs.
Flux est optimisé pour le processus ETL (Extract, Transform, Load) mais n’est pas rétrocompatible avec le langage de requête précédemment utilisé, InfluxQL. Néanmoins, la société prévoit un chemin de migration pour les clients existants, qui devrait convertir le code InfluxQL en Flux.
La syntaxe de Flux est basée sur le langage de script JavaScript, ce qui signifie qu’il est facile à apprendre et librement extensible. Une caractéristique majeure de Flux est la prise en charge de différentes sources de données, par exemple via des API de fournisseurs tiers. Flux peut donc travailler avec des outils d’analyse tels que Jupyter.
L’interface d’échange de données Apache Arrow permet une communication avec d’autres systèmes et une intégration aux environnements big data.
Quand utiliser InfluxDB ?
InfluxDB est conçu pour gérer les bases de données de type TSDB (time series database), qui contiennent des séries temporelles. Ces bases de données sont employées notamment pour stocker et analyser des données de capteurs ou des journaux horodatés sur une période donnée.
Il peut être question de millions d’enregistrements entrants, comme les objets connectés de l’internet des objets ou les instruments de mesure scientifiques en fournissent en flux continu.
Ces données doivent être traitées rapidement une fois entrées dans la base de données. C’est pourquoi InfluxDB intègre un service de temps qui, grâce au Network Time Protocol (NTP), assure que l’heure est bien synchrone sur l’ensemble des systèmes.
Dans InfluxDB, une base de données peut être très compacte et doit comporter deux ou trois colonnes seulement. Dans l’exemple ci-dessous, on trouve la source de données, la valeur mesurée et la date/heure.
Capteur | Valeur | Temps |
---|---|---|
Capteur 1 | 140,50 | 23/04/2020 @ 10:00 |
Capteur 2 | 110,02 | 23/04/2020 @ 10:00 |
Capteur 1 | 142,32 | 23/04/2020 @ 10:05 |
Capteur 2 | 110,50 | 23/04/2020 @ 10:05 |
… | … | … |
InfluxDB opère une distinction entre tags et fields concernant les colonnes. Alors qu’un tag contient seulement des métadonnées qui sont indexées, les fields contiennent des valeurs qui pourront être analysées par la suite. Dans notre exemple, la première colonne est un tag, tandis que la deuxième est un field. Cette distinction simplifie l’administration de la base de données et l’analyse des données de mesure.
Quels sont les avantages d’InfluxDB ?
Par rapport aux bases de données relationnelles ordinaires, les bases de données TSDB comme InfluxDB offrent des avantages évidents en matière de rapidité pour l’enregistrement et le traitement des données horodatées. Un DBMS classique devient moins performant quand il doit organiser un index complexe (qui n’a pas d’utilité dans ce champ d’application). InfluxDB peut aussi maintenir des vitesses d’écriture élevées pendant une durée prolongée du fait que l’index est très simple.
Une grande nouveauté par rapport à la version précédente (1.x) est qu’InfluxData propose une solution basée dans le cloud avec InfluxDB Cloud 2.0 sur Amazon Web Services (AWS), Google Cloud Platform (GCP) ou Microsoft Azure. Grâce à l’informatique sans serveur, le client n’a pas besoin d’avoir sa propre infrastructure de serveur.
Dans la version cloud, il n’est pas nécessaire de réserver un serveur, puisque le système s’adapte automatiquement à la charge, ce qui est particulièrement intéressant pour les applications industrielles de l’internet des objets et l’apprentissage automatique, sachant que le volume de données produit peut varier d’un moment à l’autre.
Si dans la première version, des composants supplémentaires étaient encore requis (comme la pile TICK comprenant les produits Telegraf, Chronograf et Kapacitor), dans InfluxDB 2.0 tout est déjà inclus.
Dans la version locale à installer sur un serveur, le système de gestion de base de données tient dans un seul fichier programme, qui est à ce jour disponible pour Linux 64 bits, Linux pour processeurs ARM, macOS et comme conteneur Docker. Telegraf reste utilisable comme agent de collecte de données pour InfluxDB 2.0, en plus des autres agents.
Premiers pas dans InfluxDB
Pour se faire la main, InfluxDB offre un accès gratuit à InfluxDB Cloud 2.0. L’essai ne se limite pas à la base de données : la plateforme dans son ensemble, hébergée et multi-utilisateur, avec données de série temporelle, est accessible. InfluxDB Cloud 2.0 comprend aussi des modules pour collecter, analyser et visualiser les données stockées.
La version gratuite offre des débits de données illimités en lecture et écriture, jusqu’à 10 000 enregistrements et une durée de stockage maximale de 30 jours. Ces restrictions suffisent généralement pour les projets personnels. Une mise à niveau entre le plan gratuit et le plan payant à l’usage est possible sans perte de données.
Pour tester la version gratuite, créez-vous un compte utilisateur gratuit sur la page de connexion d’InfluxDB Cloud 2.0. Cliquez ensuite sur le lien de confirmation dans l’email.
Une fois votre compte validé, connectez-vous puis sélectionnez un fournisseur de cloud. En Europe, pour l’instant seul Amazon Web Services (AWS) est disponible, mais cela ne fait aucune différence en utilisation gratuite. Si vous utilisez déjà Amazon Web Services ou Google Cloud Platform (GCP), vous pouvez vous abonner aux produits InfluxDB Cloud sur la marketplace des fournisseurs.
Une fois que vous êtes connecté, InfluxDB affiche votre tableau de bord personnel, qui vous permet de collecter et de visualiser des données. La collecte de données peut être réalisée via les plug-ins Telegraf, l’API InfluxDB v2, l’interface de ligne de commande (CLI) Influx ou directement dans l’interface utilisateur InfluxDB. Des bibliothèques clientes pour divers langages de programmation populaires sont toujours disponibles.
Vous pouvez créer de manière interactive des configurations Telegraf ou appliquer les configurations existantes afin d’envoyer des données dans l’instance InfluxDB Cloud 2.0. Après avoir configuré InfluxDB Cloud pour la collecte de données, vous devez créer des tableaux de bord personnels pour interroger les données et les représenter.
L’explorateur de données InfluxDB sert à explorer et à visualiser les données collectées. Les temps de rafraîchissement et les périodes peuvent être adaptés librement pour chaque projet. L’interface utilisateur InfluxDB propose plusieurs options de visualisation au graphisme esthétique. Via l’interface web, vous pouvez basculer en toute transparence entre le Flux Builder et le traitement manuel des requêtes de base de données.
Dans la page « Usage », vous pouvez à tout moment consulter le taux d’utilisation de la base de données pour juger de l’utilité d’un plan payant.
Récapitulatif des principales nouveautés d’Influx Cloud 2.0
Plan gratuit (comporte des restrictions) : aucun téléchargement, aucune installation et aucune infrastructure de serveur locale, accès direct à la technologie InfluxDB 2.0, le plan gratuit est conçu pour se familiariser avec InfluxDB et pour les petits projets personnels.
Prise en charge de Flux : Flux est un langage de script et de requête indépendant destiné aux bases de données de série temporelle qui apporte un gain de productivité grâce à un code facilement réutilisable. Flux a été développé et optimisé pour la manipulation des données dans InfluxDB 2.0, mais peut également être utilisé avec d’autres sources de données.
API unique : l’API InfluxDB v2 unique donne accès à tous les composants d’InfluxDB (saisie des données, interrogation, stockage et visualisation). Elle rend possible une migration transparente entre la version open source installée et InfluxDB Cloud 2.0.
Visualisation et tableaux de bord : s’appuyant sur le projet Chronograf éprouvé de la première version d’InfluxDB, la nouvelle interface utilisateur du cloud affiche des performances nettement plus rapides pour la visualisation et la consultation des données en temps réel.
Plans payants à l’usage : la facturation à l’usage offre plus de flexibilité qu’un système de base de données auto-hébergé et garantit de payer seulement ce qui est réellement consommé.