La collecte de données de mesure scien­ti­fiques ou tech­niques 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 ho­ro­da­tage et être traitées. Ces données chro­no­lo­giques exigent des bases de données spéciales. Dans cet article, nous vous pré­sen­tons InfluxDB, un système de gestion de base de données spé­cia­le­ment 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é In­flux­Data, Inc. InfluxDB est un logiciel open source et peut être utilisé gra­tui­te­ment. La version com­mer­ciale « InfluxDB En­ter­prise » inclut un accord de main­te­nance ainsi que des contrôles d’accès spéciaux pour les clients pro­fes­sion­nels et s’installe sur un serveur du réseau de l’en­tre­prise.

La nouvelle version InfluxDB 2.0 offre en plus un service cloud flexible et adaptable et comprend une interface uti­li­sa­teur web pour saisir et vi­sua­li­ser les données.

Le système de gestion de base de données InfluxDB utilise le langage de pro­gram­ma­tion 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 in­ter­ro­ger les bases de données externes.

InfluxDB 2.0 introduit le nouveau langage de pro­gram­ma­tion Flux, qu’In­flux­Data publie sur GitHub en open source sous licence MIT. Là-bas, d’autres dé­ve­lop­peurs ma­ni­pu­lant des données chro­no­lo­giques con­ti­nue­ront d’améliorer le projet. Flux est un langage de script et de requête in­dé­pen­dant destiné aux bases de données de série tem­po­relle (TSDB). Depuis la version 1.7, il peut être utilisé de manière en­tiè­re­ment in­dé­pen­dante ou en com­bi­nai­son avec des bases de données d’autres four­nis­seurs.

Flux est optimisé pour le processus ETL (Extract, Transform, Load) mais n’est pas ré­tro­com­pa­tible avec le langage de requête pré­cé­dem­ment 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 Ja­vaS­cript, ce qui signifie qu’il est facile à apprendre et librement ex­ten­sible. Une ca­rac­té­ris­tique majeure de Flux est la prise en charge de dif­fé­rentes sources de données, par exemple via des API de four­nis­seurs tiers. Flux peut donc tra­vail­ler avec des outils d’analyse tels que Jupyter.

L’interface d’échange de données Apache Arrow permet une com­mu­ni­ca­tion avec d’autres systèmes et une in­té­gra­tion aux en­vi­ron­ne­ments big data.

Quand utiliser InfluxDB ?

InfluxDB est conçu pour gérer les bases de données de type TSDB (time series database), qui con­tien­nent des séries tem­po­relles. 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’en­re­gis­tre­ments entrants, comme les objets connectés de l’internet des objets ou les ins­tru­ments de mesure scien­ti­fiques en four­nis­sent en flux continu.

Ces données doivent être traitées ra­pi­de­ment 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 dis­tinc­tion entre tags et fields con­cer­nant les colonnes. Alors qu’un tag contient seulement des mé­ta­don­nées qui sont indexées, les fields con­tien­nent 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 dis­tinc­tion simplifie l’ad­mi­nis­tra­tion 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 re­la­tion­nelles or­di­naires, les bases de données TSDB comme InfluxDB offrent des avantages évidents en matière de rapidité pour l’en­re­gis­tre­ment et le trai­te­ment des données ho­ro­da­tées. Un DBMS classique devient moins per­for­mant quand il doit organiser un index complexe (qui n’a pas d’utilité dans ce champ d’ap­pli­ca­tion). 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’In­flux­Data 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’in­for­ma­tique sans serveur, le client n’a pas besoin d’avoir sa propre in­fras­truc­ture de serveur.

Dans la version cloud, il n’est pas né­ces­saire de réserver un serveur, puisque le système s’adapte au­to­ma­ti­que­ment à la charge, ce qui est par­ti­cu­liè­re­ment in­té­res­sant pour les ap­pli­ca­tions in­dus­trielles de l’internet des objets et l’ap­pren­tis­sage au­to­ma­tique, sachant que le volume de données produit peut varier d’un moment à l’autre.

Si dans la première version, des com­po­sants sup­plé­men­taires étaient encore requis (comme la pile TICK com­pre­nant les produits Telegraf, Chro­no­graf 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 dis­po­nible pour Linux 64 bits, Linux pour pro­ces­seurs ARM, macOS et comme conteneur Docker. Telegraf reste uti­li­sable 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 pla­te­forme dans son ensemble, hébergée et multi-uti­li­sa­teur, avec données de série tem­po­relle, est ac­ces­sible. InfluxDB Cloud 2.0 comprend aussi des modules pour collecter, analyser et vi­sua­li­ser les données stockées.

La version gratuite offre des débits de données illimités en lecture et écriture, jusqu’à 10 000 en­re­gis­tre­ments et une durée de stockage maximale de 30 jours. Ces res­tric­tions suffisent gé­né­ra­le­ment pour les projets per­son­nels. 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 uti­li­sa­teur gratuit sur la page de connexion d’InfluxDB Cloud 2.0. Cliquez ensuite sur le lien de con­fir­ma­tion dans l’email.

Une fois votre compte validé, connectez-vous puis sé­lec­tion­nez un four­nis­seur de cloud. En Europe, pour l’instant seul Amazon Web Services (AWS) est dis­po­nible, mais cela ne fait aucune dif­fé­rence en uti­li­sa­tion gratuite. Si vous utilisez déjà Amazon Web Services ou Google Cloud Platform (GCP), vous pouvez vous abonner aux produits InfluxDB Cloud sur la mar­ket­place des four­nis­seurs.

Une fois que vous êtes connecté, InfluxDB affiche votre tableau de bord personnel, qui vous permet de collecter et de vi­sua­li­ser 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 di­rec­te­ment dans l’interface uti­li­sa­teur InfluxDB. Des bi­blio­thèques clientes pour divers langages de pro­gram­ma­tion po­pu­laires sont toujours dis­po­nibles.

Vous pouvez créer de manière in­te­rac­tive des con­fi­gu­ra­tions Telegraf ou appliquer les con­fi­gu­ra­tions exis­tantes 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 per­son­nels pour in­ter­ro­ger les données et les re­pré­sen­ter.

L’ex­plo­ra­teur de données InfluxDB sert à explorer et à vi­sua­li­ser les données col­lec­tées. Les temps de ra­fraî­chis­se­ment et les périodes peuvent être adaptés librement pour chaque projet. L’interface uti­li­sa­teur InfluxDB propose plusieurs options de vi­sua­li­sa­tion au graphisme es­thé­tique. Via l’interface web, vous pouvez basculer en toute trans­pa­rence entre le Flux Builder et le trai­te­ment manuel des requêtes de base de données.

Dans la page « Usage », vous pouvez à tout moment consulter le taux d’uti­li­sa­tion de la base de données pour juger de l’utilité d’un plan payant.

Ré­ca­pi­tu­la­tif des prin­ci­pales nou­veau­tés d’Influx Cloud 2.0

Plan gratuit (comporte des res­tric­tions) : aucun té­lé­char­ge­ment, aucune ins­tal­la­tion et aucune in­fras­truc­ture de serveur locale, accès direct à la tech­no­lo­gie InfluxDB 2.0, le plan gratuit est conçu pour se fa­mi­lia­ri­ser avec InfluxDB et pour les petits projets per­son­nels.

Prise en charge de Flux : Flux est un langage de script et de requête in­dé­pen­dant destiné aux bases de données de série tem­po­relle qui apporte un gain de pro­duc­ti­vité grâce à un code fa­ci­le­ment réu­ti­li­sable. Flux a été développé et optimisé pour la ma­ni­pu­la­tion 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 com­po­sants d’InfluxDB (saisie des données, in­ter­ro­ga­tion, stockage et vi­sua­li­sa­tion). Elle rend possible une migration trans­pa­rente entre la version open source installée et InfluxDB Cloud 2.0.

Vi­sua­li­sa­tion et tableaux de bord : s’appuyant sur le projet Chro­no­graf éprouvé de la première version d’InfluxDB, la nouvelle interface uti­li­sa­teur du cloud affiche des per­for­mances nettement plus rapides pour la vi­sua­li­sa­tion et la con­sul­ta­tion des données en temps réel.

Plans payants à l’usage : la fac­tu­ra­tion à l’usage offre plus de flexi­bi­lité qu’un système de base de données auto-hébergé et garantit de payer seulement ce qui est réel­le­ment consommé.

Aller au menu principal