Anatoly Stojko - stock.adobe.com
InfluxDB 3.0 : InfluxData matérialise la refonte de sa base de données time series
InfluxData a annoncé une version majeure conçue dans le but d’améliorer les performances et la flexibilité de sa base de données time series. Cela passe par la prise en charge du langage SQL standard et des populaires Apache Arrow et Parquet. Une refonte en cours depuis près de trois ans.
InfluxData est l’éditeur et principal sponsor d’InfluxDB, une base de données open source optimisée pour gérer et analyser des données de séries chronologiques (Time Series Database ou TSDB, en VO). En février 2023, l’éditeur basé à San Francisco a levé 81 millions de dollars, ce qui porte son financement total à plus de 200 millions de dollars. Le 26 avril, soit un peu plus de deux mois plus tard, InfluxData a dévoilé InfluxDB 3.0.
Cette version entre en disponibilité générale dans les produits cloud de l’éditeur – InfluxDB Cloud Serverless et InfluxDB Cloud Dedicated. Elle vise non seulement à améliorer les fonctionnalités des versions précédentes de la plateforme de l’éditeur, mais sert également de base aux futurs ajouts à InfluxDB.
Les séries chronologiques sont un ensemble de données collectées à intervalles successifs et répertoriées dans l’ordre dans lequel les événements capturés se sont produits.
D’un côté, InfluxData est parfois mis en compétition avec des acteurs comme Grafana ou d’autres éditeurs de bases de données managées servant de socle à des plateformes d’observabilité. De l’autre côté, il doit faire face aux produits des géants du cloud tels qu’AWS, Google, IBM et Microsoft qui proposent, eux aussi, des bases de données time series pour des cas d’usage comme l’utilisation de services IoT, ou encore la surveillance de processus industriels.
Pour InfluxData, pas de cardinalité « illimitée » sans Apache Arrow
Pour se différencier, InfluxData ajoute les fonctionnalités suivantes à InfluxDB 3.0 et promet :
- Des réponses aux requêtes en temps réel, « 100 fois plus rapides » par rapport à la version open source d’InfluxDB.
- Une cardinalité « illimitée » – une référence à l’unicité des valeurs dans une colonne de base de données avec un niveau élevé de distinction signifiant que la colonne a une cardinalité élevée – combinée à un débit élevé pour permettre aux clients d’ingérer, de transformer et d’analyser des centaines de millions de points de données de séries temporelles par seconde.
- Une compression améliorée des données qui permet aux utilisateurs de stocker « 10 fois plus de données » et d’en réduire le coût de stockage.
- La prise en charge d’un langage SQL standard (en plus des langages typés SQL InfluxQL et Flux), qui permet aux clients d’utiliser le langage de requêtes le plus populaire.
Selon Rachel Stephens, analyste chez RedMonk, l’ajout le plus important aux capacités d’InfluxData est peut-être la tentative de permettre une cardinalité illimitée.
« La cardinalité est historiquement l’une des plus grandes limitations des TSDB », avance-t-elle. « InfluxData tente de résoudre ce problème grâce à une refonte de son moteur », ajoute-t-elle.
La « cardinalité illimitée », combinée à la prise en charge du SQL standard et à un traitement plus rapide, représente une amélioration significative par rapport aux itérations précédentes d’InfluxDB, selon Rick Spencer, vice-président chargé des produits chez InfluxData.
« Nous apportons à nos clients une série de fonctionnalités de nouvelle génération, à savoir la prise en charge de SQL, l’interrogation en temps réel à haute performance et la cardinalité illimitée », vante-t-il. « Ensemble, elles permettent d’améliorer les performances d’ingestion, l’évolutivité, la résilience et l’efficacité, même si la complexité et la cardinalité des données augmentent ».
Alors que les mises à jour d’une plateforme sont souvent motivées par des demandes de clients souhaitant de nouvelles fonctionnalités et des performances améliorées, l’impulsion pour développer InfluxDB 3.0 est venue du fondateur et directeur technique d’InfluxData, Paul Dix, selon M. Spencer.
« Son objectif était de réarchitecturer InfluxDB pour l’analyse en temps réel, en l’optimisant pour l’ensemble des données de séries chronologiques », avance-t-il.
Paul Dix rappelle que la TSDB de l’éditeur est historiquement efficace pour traiter les métriques. « Il y a d’autres données de séries temporelles que nous voulons prendre en charge : les traces, les événements bruts, les logs… Tout ce que l’on peut observer dans un système physique de capteurs ou dans des systèmes virtuels propulsés par des serveurs », liste-t-il.
« Paul Dix s’est vite rendu compte qu’en adhérant au projet Apache Arrow et à son approche en colonnes, nous pourrions construire la base de données adéquate pour l’analyse en temps réel tout en bénéficiant et en participant à l’écosystème dynamique en amont », ajoute Rick Spencer.
La concrétisation du projet IOx
En effet, à l’instar de Dremio et de ClickHouse, l’éditeur s’est appuyé sur Apache Arrow, un framework open source conçu spécifiquement pour permettre le traitement de données stockées dans un format orienté colonnes en mémoire. En outre, InfluxDB 3.0 a été écrite en Rust, un langage de programmation conçu pour la performance, la sécurité et la gestion de la mémoire.
Pour optimiser la compression des données, l’éditeur s’appuie sur le format de table ouvert Apache Parquet. De fait, les versions précédentes d’InfluxDB pouvaient déjà supporter un haut niveau de cardinalité grâce à sa gestion des traces distribuées, non sans difficultés. Les versions précédentes de la TSDB indexaient les mesures et les labels liés aux données afin d’accélérer leur accès. Qui plus est, ce système permettait de créer des tiers de stockage dans le but de réduire le coût de stockage en mémoire, puis sur disque. Or l’indexation demeure un exercice complexe, surtout quand un très grand nombre de données affluent en quelques secondes.
Paul DixFondateur et directeur technique, InfluxData
« Avec InfluxDB 3.0, nous avons supprimé cette indexation supplémentaire. Nous organisons toujours les données en gros fragments, mais ces fragments sont des fichiers Parquet qui ont un très bon niveau de compression. Ils sont tous stockés en mode objet, ce qui est très flexible et nous avons une couche d’interrogation élastique et dynamique qui peut suivre l’augmentation des volumes de données et des requêtes », décrit Paul Dix dans une courte vidéo.
L’implémentation d’un SQL standard passe par l’utilisation du projet open source Apache DataFusion, un framework in-memory de planification, d’optimisation et d’exécution de requêtes SQL. Il est le moteur de requête désigné d’Apache Arrow.
Là encore, les avantages de Parquet sont mis à contribution. « Nous utilisons certaines fonctionnalités de Parquet pour rendre le traitement des requêtes plus efficaces », poursuit Paul Dix. « Vous disposez de métadonnées qui décrivent le type d’éléments contenus dans les différentes colonnes, ce qui permet au moteur de recherche d’exclure certains fichiers parquet au moment de la recherche ».
Apache Arrow est aussi le moyen de traiter des événements bruts. « Notre moteur de requêtes est optimisé pour cela », assure le CTO. « Vous pouvez calculer des métriques à la volée depuis un flux de données brutes ».
En fonction de ce que l’utilisateur cherche, celui-ci peut s’appuyer sur les tags et les mesures pour créer ces « résumés ».
Selon Rachel Stephens, cela permettra d’améliorer la prise en charge des cas d’usage existant.
« Dans l’ensemble, cela permet de prendre en charge davantage de cas d’usage lié à l’observabilité – comme l’analyse de logs et de traces. Cela améliore également la compatibilité [d’InfluxDB] avec l’écosystème des solutions de stockage et de traitement de données au travers de la prise en charge d’Apache Parquet, d’Apache Arrow et du langage SQL standard », ajoute-t-elle.
Une déclinaison sur site en cours de préparation
InfluxDB 3.0 étant désormais disponible pour les clients cloud d’InfluxData, la prochaine étape consistera à lancer des versions self-managed de la base de données : InfluxDB 3.0 Clustered et InfluxDB 3.0 Edge.
Clustered est présentée comme « l’évolution » d’InfluxDB Enterprise, la version on premise du SGBD de l’éditeur.
Il y aura forcément des changements cassants. De fait, InfluxDB 3.0 est issu du projet open source standalone Influx IOx (Iron Oxide), lancé en 2020. Certaines fonctionnalités ont été ajoutées petit à petit, mais cette refonte risque d’entraîner quelques difficultés pour les clients.
« Nous veillons à conserver autant que possible la compatibilité avec InfluxDB Enterprise », assure Rick Spencer.
Au-delà des versions InfluxDB 3.0 Clustered et Edge, la feuille de route d’InfluxData prévoit des mises à jour régulières des nouveaux produits désormais construits sur l’architecture 3.0, promet-il.
La version open source, pas encore une priorité, selon le CTO d’InfluxData
Malgré l’utilisation massive de technologies open source, InfluxDB 3.0 est, à ce jour, une distribution propriétaire.
« Nous n’avons pas encore de détails sur la version open source d’InfluxDB 3.0. Nous nous concentrons pour l’instant sur nos offres cloud, où il est plus facile d’itérer et de débugger », déclare Paul Dix sur Twitter. « Nous nous attendons à ce que les cas d’usage de la version open source soient différents de ceux propulsés par notre distribution cloud, mais nous l’annoncerons une fois que nous serons plus avancés ».