IIoT : la fondation Apache adoube le projet Apache IoTDB

Une semaine avant l’ApacheCON 2020, la fondation Apache a intégré un nouveau projet Top Level qui rejoint directement une liste déjà longue de plus de 350 références. Apache IoTDB, est une base de données open source conçue pour les déploiements IoT.

Incubé par la fondation Apache en 2018, Apache IoTDB est issu d’un projet de recherche à l’université de Tsinghua, à Beijing, en Chine. La fondation open source le présente comme une solution pour les projets IoT et IIoT à large échelle.

« L'Internet des objets, en particulier IoT, a bouleversé le monde avec des volumes de données inimaginables », déclare Xiangdong Huang, vice-président d'Apache IoTDB qui se félicite d’avoir atteint le statut Top Level dans un communiqué de presse. « À ce jour, les solutions de bases de données relationnelles et basées sur des clés valeurs luttent pour répondre aux exigences de la gestion des données IoT. Apache IoTDB est le chaînon manquant entre les données IoT actuelles et les applications IoT, et redéfinit la façon dont les données IoT sont gérées, à la fois dans le cloud et en périphérie », promet-il.

Apache IoTDB, une base de données dédiée à l’AIoT

Données IoT oblige, Apache IoTDB est une base de données Time Series développé en Java (à installer avec Maven) qui stocke donc des informations horodatées par colonne. Les responsables du projet promettent une emprunte frugale et une haute compatibilité avec l’écosystème Big Data Apache dont Flink, Hadoop, Spark, Grafana, mais aussi PLC4X, un protocole universel pour les PLC ou encore Apache StreamPipes, un projet de Self-Service Analytics dédié à l’IIoT.

« Apache IoTDB est un projet open source et une innovation technologique logicielle développée pour les besoins des applications AIoT/ Big Data », affirme le professeur Jianmin Wang, doyen de l'école du logiciel de l'université de Tsinghua, qui a initialement décidé de faire don du projet à l’ASF.

Ainsi, IoTDB peut s’interfacer avec des frameworks de machine learning comme MatLab.

Comme toute base de données de série chronologique, Apache IoTDB proposerait un accès « très rapide » en écriture et en lecture, une technologie de compression des données « efficace » et un schéma de stockage en forme arborescence (LSM) capable de supporter la complexité des métadonnées.

Les responsables du projet y ont ajouté un moteur de requêtes qui incorpore des logiques floues pour faciliter la recherche des métadonnées et une interface en ligne de commande (CLI).

Les données sont extraites des capteurs via MQTT. Il est possible de stocker en mode Edge computing des fichiers au format TSFile et de les synchroniser, voire fusionner avec une plateforme de traitement de données Hadoop ou Spark hébergée dans le cloud, ou non, via des API natives ou JDBC. Cela permet d’appliquer des modèles de machine learning comme de la détection d’anomalies.

La base de données supporte six types de données (BOOLEAN, INT32, INT64, FLOAT, DOUBLE et TEXT). Les données peuvent être compressées via la méthode Snappy. Le format TSFile lui-même est largement inspiré de Parquet, un format orienté colonne originellement pensé pour l’écosystème Hadoop par Cloudera et Twitter.

Le coût du stockage s’en retrouverait grandement réduit et les responsables assurent que la compression serait 15 % plus performante que celles offertes par InfluxDB.

A noter qu’en juillet 2019, InfluxDB était deux fois plus performant en écriture et en lecture, tandis qu’IoTDB offrait des performances de requêtes bien meilleures, selon un benchmark.

Contrairement à KairosDB (Cassandra) ou OpenTSDB (HBase) qui sont bâtis sur des bases de données NOSQL, IoTDB profite d’un moteur de requête type SQL et un moteur de stockage en propre. Les ingénieurs derrière le projet assurent que 32 Mo et un processeur ARM7 suffisent pour déployer une version embarquée de la brique TSFile.

Paré pour supporter jusqu’à 100 000 objets connectés

Apache IoTDB est d’abord un projet universitaire, comme le prouve le communiqué de presse. Mais il est également en cours d’adoption dans des grands groupes. Lors d’une présentation de la base de données l’année dernière, XiangDong Huang avait présenté son utilisation par les opérateurs du métro de Shanghai pour superviser les trains.

Le précédent système basé sur Cassandra et KairosDB permettait de récolter 3200 points de données toutes les 500 millisecondes par train pour 144 trains. La connexion des services REST KDB vers une instance IoTDB a permis d’enregistrer le même nombre de points de données toutes les 200 millisecondes, soit 414 milliards de points de données par jour pour 300 trains. Le projet remplit un disque de 1 To par mois.

Selon la présentation réalisée lors de l’ApacheCon 2020 par Jialin Qiao, doctorant en ingénierie logicielle, la base de données serait utilisée dans une centrale électrique et une usine de fabrication de tabac en Chine.

« Avec la croissance continue des équipements intelligents, les données générées par les machines augmentent de jour en jour, ce qui pose des défis extraordinaires en matière de processus de stockage, de vitesse d'interrogation et d'espace de stockage », déclare Dawei Liu, architecte chez AutoAI Inc, une filiale de NAVINFO, entreprise chinoise spécialisée dans l’automobile intelligente et membre du comité de gestion du projet Apache IoTDB.

« Nous avons essayé et testé diverses solutions et avons finalement choisi IoTDB comme base de données centrale pour ses hautes performances, son ouverture à l'entreprise et sa communauté active. Nous avons construit notre plateforme Wecloud sur la base d'Apache IoTDB, qui a bien servi à BMW, Toyota et Great Wall Motors, entre autres ». ajoute-t-il dans le communiqué de presse.

Bien que passé Top Level au sein de la fondation Apache et que le projet semble avoir fait ses preuves en production, IoTDB n’en est qu’à ses débuts. Passé en version 0.10 (auparavant en 0.9.3), il nécessite encore des améliorations au niveau de sa structure de stockage LSM, de sa gestion de la mémoire vive (memory overhead) et du phénomène de « l’out of order data », le fait que les données horodatées n’arrivent pas dans l’ordre.

Actuellement, cela demande des optimisations manuelles. Enfin, il faut correctement paramétrer les ressources CPU pour assurer un parallélisme élevé et Jilian Qiao recommande de ne pas traiter les données de plus de 100 000 appareils connectés avec la TSDB.

Pour approfondir sur Base de données

Close