Choisir la meilleure base de données temporelle pour vos besoins IoT – une comparaison
Les données de séries temporelles sont au cœur de nombreux agrégation de donnéesLes appareils génèrent des relevés en temps quasi réel, produisant d'importants volumes de données horodatées qui doivent être stockées efficacement, ingérées rapidement et récupérées facilement pour analyse. Bien que les bases de données relationnelles traditionnelles puissent stocker des données de séries temporelles, elles ne sont pas toujours optimisées pour les modèles d'accès uniques requis – tels que les agrégations basées sur le temps ou l'ingestion rapide avec des délais minimaux. Ainsi, dans cet article, je me concentrerai sur le choix de la meilleure base de données de séries temporelles pour des besoins spécifiques.
Ci-dessous, je vais comparer quatre solutions populaires pour le stockage et l'analyse de séries temporelles :
- TimescaleDB – Une extension au-dessus de PostgreSQL, offrant des optimisations pour les séries temporelles tout en conservant la familiarité du SQL.
- InfluxDB (v3) – Une base de données temporelle spécialement conçue, reconnue pour son ingestion à haut débit et son écosystème riche.
- Azure Data Explorer (ADX) – Un service d'analyse rapide et cloud-native de Microsoft Azure, optimisé pour les données de logs et de télémétrie.
- automatiser les tâches – Un service de base de données de séries temporelles entièrement géré par AWS, conçu pour évoluer avec une charge opérationnelle minimale.
Bien que TimescaleDB et InfluxDB proposent également des offres cloud, aux fins du présent article, je me concentrerai sur leur disponibilité en tant que solutions de séries temporelles sur site.
Chez Spyrosoft, nous examinons toujours ces options au début d'un nouveau projet IoT, en fonction des exigences spécifiques. L'objectif de cet article est de comparer ces solutions pour le stockage et l'analyse des données IoT. Pour être clair, il n'existe pas de « règle d'or » unique ni de choix optimal universel lors de la sélection d'une base de données temporelle. Toutefois, je présenterai les considérations clés à garder à l'esprit lors du choix d'une solution temporelle, en fournissant un aperçu comparatif.
Commençons !
Organisation des données dans une base de données de séries temporelles
Une organisation efficace des données est essentielle à la performance et à l'optimisation des meilleures bases de données temporelles. Des solutions telles que InfluxDB, TimescaleDB, Amazon Timestream, et Azure Data Explorer chacun peut employer des schémas distincts pour structurer et stocker efficacement les données de séries temporelles.
InfluxDB Clustered
InfluxDB vous permet de stocker des données dans un emplacement nommé appelébase de données (désigné sous le nom decatégories dans InfluxDB TSM), qui regroupe les données logiquement en tables (connu sous le nom demesures dans InfluxDB TSM). Chaque table contient tags et champs:
- Tags sont des paires clé-valeur qui fournissent des métadonnées pour chaque point – des exemples incluent des identifiants tels que la station, l'ID du capteur ou la localisation. Les valeurs des tags peuvent être nulles.
- Champs sont des paires clé-valeur représentant des valeurs qui évoluent dans le temps – par exemple la température ou la pression. Les valeurs de champ peuvent être nulles, mais au moins une valeur de champ doit être non nulle dans toute ligne donnée.
A horodatage (qui n'est jamais nul) est associé à chaque point de données, et toutes les données sont ordonnées par temps. Le terme « point » désigne un enregistrement de données unique identifié par sa mesure, ses clés de tag, ses valeurs de tag, sa clé de champ et son horodatage. Tous les points d'une table donnée doivent partager les mêmes tags. Les colonnes qui identifient de manière unique chaque ligne d'une table forment la clé primaire. Les lignes sont identifiées de manière unique par leur horodatage et leur ensemble de balises non nulles.
Lorsque vous écrivez des données dans InfluxDB, les données elles-mêmes définissent le schéma. Il n'est pas nécessaire de créer explicitement des tables ou de définir un schéma au préalable.
TimescaleDB
TimescaleDB est construit sur PostgreSQL et distribué sous forme d'extension PostgreSQL, conservant une prise en charge complète de SQL. La solution organise les données de séries temporelles enhypertables, qui sont essentiellement des tables PostgreSQL partitionnées par le temps. La base de données gère automatiquement ces partitions en arrière-plan. Une hypertable est constituée de tables plus petites appelées segments, chacun se voyant attribuer une plage temporelle pour ne stocker que les données de cet intervalle. Le taille de bloc se configure lors de la création de l'hypertable, il convient donc de le planifier soigneusement, car il affecte les performances d'insertion et de requête. Par défaut, une hypertable nouvellement créée est indexée par ordre décroissant de temps. Les hypertables peuvent coexister avec les tables PostgreSQL standard, ce qui peut être avantageux dans certains scénarios.
Timestream
Choisir le bon modèle de facturationbases de données qui contiennent tables, similaire à la structure d'InfluxDB. Chaque table contient unséries temporelles, qui est une séquence d'un ou plusieurs points de données (enregistrements) capturés sur un intervalle de temps. Un point de données unique dans la série temporelle est appelé unenregistrement.
Un attribut décrivant les métadonnées d'une série temporelle est appelé undimension, et il se compose d'un nom et d'une valeur (par exemple, « device_id » et « 12345 »). Un mesurer est une valeur suivie par l'enregistrement, identifiée par un nom de mesure et une valeur de mesure (par exemple, « température » et « 45 »). Un horodatage indique quand la mesure a été collectée, avec une granularité à la nanoseconde.
Azure Data Explorer
Le conteneur de niveau supérieur dans Azure Data Explorer est une base de données, qui contient tables. Chaque table stocke les données dansétendues (fragments de données). Un extent est un segment horizontal d'une table contenant des données et des métadonnées, telles que son heure de création et des balises optionnelles. Tous les extents réunis forment la table. Ils sont également répartis uniformément sur les nœuds du cluster et mis en cache à la fois dans les SSD locaux et en mémoire pour des performances optimales. Essentiellement, ils sont immuables, et chaque extent stocke physiquement les enregistrements en colonnes.
Interroger les données avec les meilleures bases de données temporelles

Surveillance des données en temps réel et notifications
Les stratégies d'ingestion varient considérablement d'une base de données de séries temporelles à l'autre, reflétant les besoins divers des applications IoT.
- InfluxDB prend en charge les écritures à haut débit via son protocole line via HTTP, ainsi que les intégrations avec des outils comme Telegraf (un agent basé sur serveur qui peut collecter et envoyer des métriques et des événements depuis des capteurs IoT) pour l'import en streaming et par lots.
- TimescaleDB, étant une extension PostgreSQL, s'appuie sur les insertions SQL standard, les opérations groupées timescaledb-parallel-copy pour l'importation de données, par exemple à partir de fichiers CSV, et des connecteurs externes.
- automatiser les tâches fournit des intégrations natives avec AWS IoT Core et les flux de données Kinesis, tout en proposant également une approche pilotée par SDK.
- Azure Data Explorer (ADX) peut ingérer des données depuis Event Hubs, IoT Hub ou des points de terminaison HTTP directs, en regroupant et gérant automatiquement les fragments de données.
Meilleure base de données temporelle : options d'hébergement
Chacune de ces bases de données temporelles offre différentes options d'hébergement, ce qui peut influencer le coût, l'évolutivité et la complexité opérationnelle.
InfluxDB
Il existe de nombreuses façons d'implémenter InfluxDB dans les solutions IoT : en tant qu'instance auto-hébergée sur site, dans un cloud privé, ou en utilisant InfluxDB Cloud, une offre SaaS entièrement gérée. La version auto-hébergée offre un contrôle total sur l'infrastructure, mais nécessite une gestion opérationnelle. Dans cet article, nous nous concentrons sur InfluxDB hébergé sur site. Vous pouvez déployer une instance unique d'InfluxDB, ou utiliser InfluxDB Clustered, conçu pour la haute disponibilité et l'évolutivité. Le déploiement d'InfluxDB Clustered sur Kubernetes nécessite des ressources supplémentaires, telles qu'un stockage persistant pour les fichiers Parquet sous-jacents, qui doivent être compatibles avec AWS S3 ou un stockage objet compatible S3, ainsi qu'une instance PostgreSQL externe (ou compatible PostgreSQL) pour les métadonnées et la coordination. Il est également conseillé d'utiliser un équilibreur de charge pour répartir efficacement les requêtes et les demandes d'ingestion entre les nœuds du cluster.
TimescaleDB
TimescaleDB est disponible sous forme d'extension PostgreSQL auto-gérée, ce qui la rend déployable sur toute infrastructure où PostgreSQL fonctionne. De plus, TimescaleDB propose Timescale Cloud, un service managé pour héberger et mettre à l'échelle des bases de données temporelles avec une charge opérationnelle minimale.
automatiser les tâches
AWS Timestream est un service entièrement managé et cloud-native, disponible exclusivement au sein de l'écosystème AWS. Il élimine le besoin de gestion d'infrastructure mais nécessite une intégration AWS et suit un modèle de tarification basé sur le cloud. Au moment de la rédaction de cet article, AWS Timestream utilise une structure tarifaire à l'usage, avec des coûts déterminés par l'ingestion de données, le stockage et le traitement des requêtes. Pour obtenir les détails tarifaires les plus récents, vous devez consulter la page officielle de tarification d'AWS Timestream. La tarification doit être évaluée en fonction des exigences spécifiques du projet, car les coûts peuvent varier selon les modèles d'utilisation et les besoins de rétention des données.
Azure Data Explorer
ADX est un service cloud-native qui s'exécute sur Microsoft Azure, offrant un environnement managé avec une scalabilité intégrée. Bien qu'il soit optimisé pour les charges de travail Azure, il peut également s'intégrer à des architectures hybrides et multi-cloud via diverses méthodes d'ingestion. Azure Data Explorer propose plusieurs niveaux de service, notamment un cluster Dev/Test, conçu pour le développement et les tests avec un seul nœud et sans redondance, et un cluster de Production, qui comprend au moins deux nœuds pour une haute disponibilité et fonctionne sous un SLA Azure Data Explorer. Vous devez sélectionner un niveau approprié en fonction des exigences de votre charge de travail et des considérations de coût.
La meilleure base de données de séries temporelles est… ou peut-être pas ?
Eh bien, cela dépend ! Il n'existe pas de choix unique et parfait qui convienne à tous les cas d'usage. Cependant, voici une ligne directrice approximative pour déterminer quand chaque base de données peut être la meilleure option :
- Si vous avez besoin d'un hébergement sur site – envisagez InfluxDB ou TimescaleDB.
- Si votre équipe maîtrise déjà SQL et préfère PostgreSQL – TimescaleDB pourrait être la solution la plus adaptée.
- Si vous avez besoin d'une solution entièrement gérée et cloud-native sur AWS – AWS Timestream est un choix naturel.
- Si votre infrastructure est basée sur Azure et que vous avez besoin d'une intégration transparente avec d'autres ressources Azure, telles que Data Lake et Power BI – Azure Data Explorer mérite d'être envisagé.
- Si des taux d'ingestion élevés et des analyses en temps réel sont critiques – InfluxDB ou Azure Data Explorer pourrait être votre meilleure option.
Bien sûr, ce ne sont que des points de départ, et la meilleure approche consiste toujours à réaliser une preuve de concept (PoC) et des tests de charge adaptés à votre projet spécifique. Après tout, choisir une base de données ressemble un peu au choix d'une garniture de pizza préférée – ce qui fonctionne pour une équipe peut ne pas être le meilleur pour une autre.
Défis courants et comment les surmonter
En savoir plusConclusions sur le choix de la meilleure base de données temporelle
Il n'existe pas de « règle d'or » unique pour choisir la meilleure base de données de séries temporelles pour un projet IoT. Chaque solution présentée a ses forces et ses compromis, et la meilleure option dépend des exigences spécifiques du projet, telles que l'évolutivité, la facilité d'interrogation et les performances d'acquisition des données. Néanmoins, vous devriez absolument prendre en compte les facteurs décrits dans cet article au moment de prendre une décision.
La bonne nouvelle est que le déploiement de ces bases de données est relativement simple, ce qui facilite la réalisation d'une preuve de concept (PoC) évaluant leurs performances dans un scénario réel. Une fois la PoC en place, des tests de charge artificiels peuvent aider à estimer la capacité d'une base de données à gérer les charges de travail attendues, garantissant ainsi le bon choix avant de s'engager dans un système de production.
Dans mon projet actuel, nous avons suivi cette approche dès le début. Lorsque nous avons recueilli les exigences de télémétrie auprès du client, nous avons initialement réalisé un PoC avec Azure Data Explorer (ADX) et PostgreSQL. Étant donné que le client disposait déjà d'une infrastructure Azure existante et d'exigences supplémentaires – telles que l'intégration avec d'autres ressources comme Data Lake et Power BI – ADX s'est révélé être la meilleure solution pour notre scénario. Il a fourni l'évolutivité nécessaire presque immédiatement, avec une intégration transparente dans des services comme IoT Hub et Blob Storage.
Un autre aspect important à prendre en compte était la migration des données depuis différentes sources. La possibilité d'inclure des tables externes – telles que des sources stockées dans des fichiers CSV au sein de Blob Storage – constituait également un avantage considérable pour les besoins de notre projet. Cela ne signifie toutefois pas qu'Azure Data Explorer soit le meilleur choix pour chaque projet. Il s'agissait simplement de l'option la plus adaptée pour nous, compte tenu de nos exigences spécifiques.
Bien sûr, tout n'a pas été un long fleuve tranquille dès le départ. Nous avons dû affiner notre approche d'ingestion, configurer l'agrégation des données, gérer la latence des données et examiner attentivement les stratégies de rétention des données et d'export continu. De plus, l'efficacité des coûts a été un peu délicate – la tarification d'ADX n'est pas toujours simple et nécessite une analyse minutieuse. Mais gérer ADX et le faire fonctionner efficacement est probablement un sujet qui mériterait son propre article (et peut-être même quelques profonds soupirs en cours de route).
Accédez à la meilleure base de données de séries temporelles avec Spyrosoft
Choisir la meilleure base de données temporelle pour votre projet IoT n'est pas une tâche facile, mais nous espérons que cette comparaison vous a apporté des informations précieuses pour guider votre décision. Que vous recherchiez une intégration cloud transparente, une familiarité avec SQL ou une ingestion à haut débit, chaque base de données a quelque chose d'unique à offrir.
Si vous avez besoin de plus d'expertise IoT ouun accompagnement pratique dans le développement de votre projet IoT, contactez-nous via le formulaire ci-dessous et découvrez ce que nous pouvons accomplir ensemble.
FAQ
Une base de données de séries temporelles est conçue pour stocker des points de données collectés au fil du temps, souvent à haute fréquence. Contrairement aux bases de données relationnelles, qui se concentrent sur des ensembles de données structurés et relationnels, les systèmes de séries temporelles sont optimisés pour une ingestion rapide, une compression efficace et une interrogation fluide des données séquentielles. Cela les rend bien mieux adaptés aux scénarios IoT où les appareils génèrent des flux continus de mesures.
Concentrez-vous sur la vitesse d'ingestion, l'efficacité du stockage, les performances des requêtes et la capacité de la base de données à évoluer à mesure que les volumes de données augmentent. Il est également utile de considérer la facilité d'intégration avec votre infrastructure existante et de vérifier si le système prend en charge des fonctionnalités telles que le sous-échantillonnage ou les politiques de rétention. La meilleure base de données temporelles pour votre projet correspondra à la fois à votre charge actuelle et à votre croissance future.
Les environnements IoT restent rarement statiques. Le nombre d'appareils augmente, les fréquences d'échantillonnage changent et de nouveaux cas d'usage apparaissent. Une base de données qui évolue sans interruption vous permet de maintenir des performances constantes et des coûts prévisibles à mesure que votre environnement s'étend. Sans cela, même des systèmes bien conçus peuvent devenir lents ou instables.
De nombreuses solutions open-source offrent des bases solides, de grandes communautés et des fonctionnalités stables. Leur transparence les rend également faciles à auditer et à personnaliser. Cependant, les projets industriels peuvent nécessiter des garanties supplémentaires, telles que des SLA définis, un support entreprise ou des intégrations certifiées. Cela dépend souvent de vos capacités internes et de vos plans de maintenance à long terme.
Les politiques de rétention des données déterminent la durée pendant laquelle vous conservez les données brutes et traitées. Une politique adaptée vous aide à maîtriser les coûts de stockage sans perdre d'informations précieuses. Certaines bases de données automatisent la rétention et la réduction de la résolution, ce qui est utile pour gérer les tendances à long terme sans stocker de détails superflus.
Des requêtes lentes peuvent réduire la valeur de la surveillance en temps réel. Une base de données conçue pour les charges de travail de séries temporelles gérera plus aisément les agrégations, le filtrage et les fonctions de fenêtrage. Cela donne aux ingénieurs un accès plus rapide aux informations, prend en charge les alertes et aide à détecter les anomalies avant qu'elles ne deviennent des problèmes coûteux.
Oui. De nombreuses organisations utilisent une approche hybride. Par exemple, une base de données de séries temporelles peut stocker des données de capteurs à haute fréquence, tandis qu'une base de données relationnelle ou documentaire gère les métadonnées, les rapports ou la logique métier. L'important est de concevoir des flux de données qui restent stables et clairs à mesure que le système évolue.
Vous pouvez vous appuyer sur les ressources des fournisseurs, la documentation communautaire ou des consultants externes. Selon Spyrosoft, les organisations bénéficient d'un partenaire qui comprend à la fois le paysage technique et les exigences pratiques des plateformes IoT à grande échelle. Ce type d'accompagnement peut vous aider à choisir une solution adaptée à votre stratégie à long terme.
arrow_circle_rightnous contacter
Découvrez comment nous pouvons optimiser vos solutions IoT
arrow_circle_right Autres articles