cursus
Base de données des séries temporelles (TSDB) : Un guide avec des exemples
Il y a quelques années, au cours de ma première semaine dans une nouvelle fonction d'ingénieur logiciel, on m'a demandé d'étudier les aspects suivants bases de données de séries temporelles (TSDB) pour remplacer notre solution Postgres.
Je ne connaissais absolument rien au sujet et je me posais beaucoup de questions. Qu'est-ce qu'une base de données de séries chronologiques ? Comment cela fonctionne-t-il ? Quelle est la différence avec une base de données traditionnelle ? Pourquoi devrions-nous en utiliser un ? Ai-je besoin de compétences spécifiques pour cela ?
Depuis, j'ai beaucoup appris sur les TSDB et j'ai appliqué ces connaissances dans diverses entreprises pour résoudre un large éventail de problèmes.
Dans cet article, je résumerai ce que j'ai appris au cours des dernières années pour vous donner une bonne idée de ce que sont les TSDB, de leur fonctionnement et des cas d'utilisation pour lesquels elles conviennent le mieux. Je vous présenterai également quelques-unes des TSDB actuellement disponibles sur le marché et vous donnerai des conseils pour que vous puissiez choisir celle qui répond le mieux à vos besoins.
Qu'est-ce qu'une base de données de séries temporelles ?
Imaginez un thermostat intelligent vendu par l'entreprise X qui enregistre la température toutes les 30 secondes. En une seule journée, cet appareil génère des milliers de points de données. Maintenant, multipliez cela par des centaines ou des milliers d'appareils dans une ville, et le volume de données horodatées recueillies par l'entreprise X devient stupéfiant.
Pour stocker efficacement ces données et analyser les tendances (comme les changements de température au fil du temps ou les pics soudains), l'entreprise X a besoin d'une base de données capable de gérer des vitesses d'écriture massives et d'exécuter efficacement des requêtes basées sur le temps.
Les bases de données traditionnelles ont tendance à se heurter à ce type de charge de travail parce qu'elles ne sont pas conçues pour gérer les écritures de données à haute fréquence ou pour interroger efficacement des données sur des périodes spécifiques. C'est là qu'interviennent les bases de données de séries chronologiques.
Les bases de données de séries temporelles sont des bases de données spécialisées conçues pour gérer des données organisées et indexées en fonction du temps. Contrairement aux bases de données traditionnelles, qui sont optimisées pour le stockage de données à usage général, les TSDB se concentrent sur le stockage, l'interrogation et l'analyse efficaces de séquences de points de données horodatés.
Les TSDB sont particulièrement adaptées aux applications qui traitent des flux de données continus, comme l'IoT, la surveillance DevOps et l'analyse financière.
Caractéristiques des bases de données de séries chronologiques
Il y a quelques différences entre les TSDB et les bases de données traditionnelles.
Optimisé pour les données horodatées
À la base, les TSDB sont conçues pour traiter des données dont l'un des attributs fondamentaux est l'horodatage. Chaque point de données dans une TSDB comprend un horodatage, qui sert d'index primaire. Cela permet à ces bases de données de stocker et d'extraire efficacement des séquences ordonnées dans le temps et d'offrir un accès rapide aux tendances historiques ou aux événements récents.
La plupart des BDST utilisent un partitionnement basé sur le temps, ce qui signifie que les données sont stockées dans des partitions basées sur des intervalles de temps (par exemple, toutes les heures, tous les jours). Cela permet un élagage efficace, où les requêtes ignorent complètement les partitions non pertinentes.
Ils peuvent également mettre en place des groupes de tempsqui regroupent les données dans des fenêtres temporelles prédéfinies (par exemple, 1 minute, 1 heure) pour des agrégations plus rapides.
Taux d'ingestion élevés
Les données de séries temporelles sont souvent générées à un rythme rapide - pensez aux appareils IoT qui envoient des milliers de points de données par seconde ou à un outil de surveillance de serveur qui capture les métriques du système en temps réel. Les TSDB sont optimisées pour ces taux d'écriture élevés et peuvent ingérer de grandes quantités de données sans ralentissement ni perte d'informations.
Pour ce faire, on utilise généralement des modèles de stockage de données "append-only" et des tampons en mémoire afin d'éviter les blocages ou les goulets d'étranglement transactionnels.
Requêtes efficaces pour les intervalles de temps
L'analyse de données de séries chronologiques implique souvent l'interrogation d'intervalles de temps ou de fenêtres spécifiques, tels que "les dernières 24 heures" ou "cette année comparée à l'année dernière". Les BDST sont conçues dans cette optique et offrent des capacités d'interrogation spécialisées qui permettent aux utilisateurs d'extraire rapidement des données sur des périodes définies. Ils prennent également en charge les agrégations telles que les moyennes, les sommes ou les tendances afin d'offrir des analyses précieuses sans logique d'interrogation complexe.
Les techniques d'optimisation des requêtes comprennent
- Données pré-agrégées : Les BDST précalculent souvent des résumés pour des intervalles de temps courants (par exemple, des moyennes horaires ou journalières).
- Algorithmes de fenêtre coulissante : Ils permettent de calculer efficacement des mesures sur des fenêtres temporelles mobiles, telles que des moyennes glissantes.
Politiques de compression et de conservation des données
Pour gérer la grande quantité de données de séries temporelles générées au fil du temps, les TSDB utilisent des techniques avancées de compression des données. Ces méthodes réduisent les besoins en stockage tout en préservant les performances des requêtes.
Les BDST comprennent généralement des politiques de conservation permettant aux utilisateurs de définir la durée de conservation des données. Par exemple, un système peut conserver des données détaillées pour le mois écoulé tout enprocédant à un sous-échantillonnage ( ) pour les données plus anciennes ( ). Le déséchantillonnage est le processus de réduction de la granularité des données dans le temps. Par exemple :
- Les températures brutes peuvent être enregistrées toutes les 10 secondes pendant les 7 derniers jours.
- Pour les données plus anciennes, le système peut réduire l'échantillonnage à des moyennes horaires pour gagner de la place tout en conservant les tendances historiques.
Voici quelques exemples de techniques de compression avancées :
- Encodage delta: Stocker la différence entre des valeurs consécutives au lieu de la valeur totale.
- Compression Gorilla: Méthode utilisée pour compresser efficacement les données de séries temporelles en virgule flottante en stockant les changements au format binaire.
Cas d'utilisation des bases de données de séries temporelles
Les bases de données de séries temporelles sont utilisées dans de nombreuses applications modernes basées sur les données et dans divers secteurs d'activité. Examinons les principaux cas d'utilisation.
1. Internet des objets (IoT)
Les appareils IoT, tels que les thermostats intelligents, les capteurs industriels et les moniteurs environnementaux, génèrent des flux continus de données horodatées. Les TSDB sont utilisées pour stocker et analyser ces données, et alimentent des applications telles que :
- Maisons intelligentes : Surveillance et contrôle des appareils sur la base de données sensibles au temps.
- Automatisation industrielle : Cursus des performances des machines et détection des anomalies en temps réel pour minimiser les temps d'arrêt.
- Surveillance de l'environnement : Recueillir des données à l'aide de capteurs pour suivre la qualité de l'air, les conditions météorologiques ou le niveau de l'eau au fil du temps.
2. DevOps et surveillance des systèmes
Dans le cadre de DevOps, les TSDB sont largement utilisées pour surveiller l'infrastructure et les applications informatiques en collectant des données telles que l'utilisation du processeur, la consommation de mémoire et le débit du réseau. Ils permettent :
- Contrôle des performances : Visualisation en temps réel de la santé du système et des mesures de performance.
- Détection des anomalies : Identifier des schémas inhabituels, tels que des pics de charge des serveurs ou de latence du réseau.
- Planification des capacités : Utiliser les tendances historiques pour prévoir et allouer les besoins futurs en ressources.
Des outils comme Prometheus et Grafana s'intègrent souvent aux TSDB pour fournir des capacités de visualisation et d'alerte aux équipes DevOps.
3. Marchés financiers
Les TSDB sont essentielles pour le traitement et l'analyse des grandes quantités de données à haute fréquence générées par les marchés financiers. Ils sont utilisés pour :
- Le trading algorithmique : Stocker et analyser les données du marché en quelques millisecondes afin d'exécuter des transactions basées sur des tendances en temps réel.
- Gestion des risques : Suivre les indicateurs financiers au fil du temps pour évaluer et atténuer les risques.
- Analyse du marché : L'analyse des données historiques afin d'identifier les modèles, les tendances et les anomalies dans le comportement du marché.
4. Autres applications
Si les trois cas d'utilisation ci-dessus sont très courants, les bases de données de séries temporelles peuvent également trouver des applications dans toute une série d'autres domaines :
- Soins de santé : Suivi des constantes du patient en temps réel et analyse des données des dispositifs médicaux.
- Recherche scientifique : Collecte et analyse de données pour la modélisation du climat, les observations astronomiques et d'autres phénomènes dépendant du temps.
- Analyse d'entreprise : Cursus du comportement des clients, analyse des tendances des ventes et suivi des indicateurs clés de performance dans le temps.
Meilleures bases de données de séries temporelles : Un aperçu comparatif
Les bases de données de séries temporelles se présentent sous différentes formes, chacune étant adaptée à des cas d'utilisation spécifiques.
InfluxDB
InfluxDB est une base de données de séries temporelles open-source développée par InfluxData. Il a été conçu spécifiquement pour des taux d'ingestion élevés et une interrogation efficace des données horodatées, ce qui en fait une solution courante pour la surveillance de l'IoT, les métriques DevOps et les analyses en temps réel.
Pour |
Cons |
Taux d'ingestion élevés pour des volumes massifs de données. |
Nécessite une gestion manuelle des politiques de conservation pour un stockage optimal. |
InfluxQL, de type SQL, simplifie les requêtes pour les analystes familiers des bases de données relationnelles. |
Défis en matière d'évolutivité pour les très grands ensembles de données sans caractéristiques d'entreprise. |
S'intègre facilement avec des outils comme Grafana pour la visualisation. |
Capacités d'interrogation avancées limitées par rapport aux bases de données basées sur SQL. |
TimescaleDB
TimescaleDB est une extension open-source pour PostgreSQLconçue pour combiner la puissance des bases de données relationnelles avec les fonctionnalités des séries temporelles. Il vous permet d'exploiter SQL tout en traitant efficacement les données horodatées. Il est donc particulièrement bien adapté aux cas d'utilisation qui nécessitent l'intégration de données temporelles avec des données relationnelles, telles que l'analyse commerciale ou la télémétrie IoT.
Pour |
Cons |
Le support SQL complet permet une intégration facile avec les outils et les flux de travail PostgreSQL existants. |
Des connaissances en PostgreSQL sont nécessaires pour l'installation et la maintenance. |
Hypertables : Partitionner automatiquement les données de séries temporelles pour un stockage et des requêtes efficaces. |
La vitesse d'ingestion n'est peut-être pas encore comparable à celle des bases de données spécialisées comme InfluxDB. |
Combine les données relationnelles et les séries temporelles dans une seule base de données. |
Prométhée
Prometheus est un système de surveillance et d'alerte avec une TSDB intégrée, largement adopté dans DevOps pour les métriques système en temps réel, le suivi des performances et la gestion des alertes.
Pour |
Cons |
Léger et facile à déployer, notamment avec Kubernetes. |
Stockage à long terme limité sans solutions externes. |
Le scraping métrique basé sur l'extraction garantit que seules les données pertinentes sont collectées. |
L'évolutivité repose sur des outils supplémentaires tels que Thanos ou Cortex. |
PromQL offre de puissantes capacités d'interrogation. |
Il se concentre sur les mesures et peut ne pas répondre à tous les besoins généraux en matière de bases de données statistiques. |
Clickhouse
ClickHouse est une base de données en colonnes open-source conçue pour des requêtes analytiques de haute performance. Bien qu'il ne s'agisse pas d'une base de données traditionnelle, son architecture la rend exceptionnellement adaptée aux données chronologiques, en particulier lorsque la rapidité d'exécution des requêtes est essentielle.
Pour |
Cons |
Performances élevées en matière d'interrogation pour les charges de travail analytiques. |
Complexe à mettre en place et à entretenir pour les débutants. |
Le stockage en colonnes réduit la latence des requêtes. |
N'est pas spécifiquement conçu comme une TSDB (peut nécessiter des solutions de contournement). |
Apache Cassandra
Apache Cassandra est une base de données NoSQL distribuée construite pour l'évolutivité horizontale et la haute disponibilité. Bien qu'il ne s'agisse pas exclusivement d'une TSDB, elle peut être utilisée efficacement pour les charges de travail liées aux séries temporelles, en particulier lorsque la durabilité et la tolérance aux pannes sont essentielles.
Pour |
Cons |
Excellente évolutivité horizontale. |
L'interrogation des données chronologiques peut être fastidieuse sans optimisations supplémentaires, car la base de données ne dispose pas de fonctions natives d'interrogation et d'agrégation des données chronologiques. |
Tolérance aux pannes et haute disponibilité. |
Amazon Timestream
Amazon Timestream est un service de base de données de séries temporelles entièrement géré proposé par AWS. Conçu pour l'évolutivité et la simplicité, il est idéal pour les organisations qui exploitent déjà l'infrastructure AWS pour l'IoT et la surveillance des applications.
Pour |
Cons |
L'architecture sans serveur simplifie la gestion. |
Fonctionnalité limitée en dehors de l'écosystème AWS. |
S'adapte automatiquement pour gérer de grands volumes de données. |
Les coûts peuvent augmenter avec des taux d'ingestion de données élevés. |
Choisir la bonne base de données de séries temporelles : Principales considérations
Les bases de données de séries temporelles offrent différentes caractéristiques pour répondre à différents besoins. Alors, comment choisir celui qui résoudra le mieux votre problème ?
Évaluer le volume de données et le taux d'ingestion
Les charges de travail liées aux séries temporelles peuvent varier considérablement en termes de volume de données (quantité de données générées) et de taux d'ingestion (vitesse à laquelle les données sont écrites). Certains systèmes génèrent des données de manière sporadique, tandis que d'autres produisent de grandes quantités de données chaque seconde.
Par exemple :
- Un déploiement IoT avec des milliers d'appareils peut nécessiter l'ingestion de millions de points de données chaque minute.
- Un outil de surveillance DevOps peut collecter des mesures de serveur en temps réel toutes les quelques secondes sur des milliers de serveurs.
Toutes les TSDB ne sont pas optimisées pour des vitesses d'écriture extrêmement élevées. Les systèmes qui ne parviennent pas à suivre le rythme d'ingestion perdent des données, ce qui entraîne des lacunes dans l'analyse et des résultats incomplets.
Si vos systèmes génèrent une grande quantité de données, vous devez chercher :
- TSDB qui supporte des taux d'ingestion élevés sans dégradation des performances.
- Solutions avec des modèles de stockage en annexe seulement et des tampons en mémoire pour l'optimisation de l'écriture (par exemple, InfluxDB, TimescaleDB, Prometheus).
Je vous recommande vivement d'évaluer le débit d'écriture d'une TSDB en la testant avec des charges de travail réalistes. Suites d'analyses comparatives telles que Time Series Benchmark Suite peuvent aider à simuler des scénarios d'ingestion.
Vous pouvez également connecter votre système à la TSDB de votre choix dans le cadre d'un essai gratuit et évaluer les résultats. Par expérience, se rendre compte que vos pipelines génèrent 30 Go de données toutes les 30 minutes n'est pas une bonne surprise.
Examinez les schémas d'interrogation et la complexité
Le type de requêtes que vous exécuterez fréquemment est un autre facteur déterminant dans le choix d'une TSDB. Différentes bases de données sont optimisées pour différentes charges de travail.
Exemples de modèles de requête :
- Requêtes simples sur les intervalles : Récupérer des points de données dans un intervalle de temps spécifique (par exemple, "7 derniers jours").
- Requêtes d'agrégation : Calculer des moyennes, des sommes ou des percentiles (par exemple, "utilisation moyenne de l'unité centrale par heure").
- Réduire l'échantillonnage : Résumer les données brutes à un niveau de granularité inférieur (par exemple, des moyennes horaires à partir de relevés par seconde).
- Analyses complexes : Corrélation de plusieurs flux de données, détection d'anomalies ou analyse prédictive.
Certaines BDST excellent dans les requêtes simples basées sur le temps, tandis que d'autres sont mieux adaptées aux agrégations complexes ou aux charges de travail analytiques. Le choix d'une mauvaise base de données peut entraîner des requêtes lentes et des pipelines d'analyse inefficaces.
Vous pourriez vouloir chercher :
- TSDB avec support intégré pour vos types de requêtes les plus courants.
- Systèmes avec des langages de requête de type SQL (par exemple, TimescaleDB avec compatibilité PostgreSQL) pour des requêtes plus complexes.
- Des fonctionnalités d'interrogation en continu qui vous permettent de précalculer des agrégations pour les données fréquemment consultées et de réduire la charge d'interrogation au moment de l'exécution.
Vérifier l'évolutivité et la disponibilité
Au fur et à mesure que votre volume de données augmente, votre TSDB doit évoluer de manière transparente tout en maintenant les performances. En outre, pour les applications critiques, la base de données doit être hautement disponible afin de garantir une absence totale de temps d'arrêt.
Si votre TSDB ne peut pas évoluer horizontalement (en ajoutant des serveurs supplémentaires) ou verticalement (en augmentant les ressources des serveurs), vous risquez des goulets d'étranglement au fur et à mesure que les données augmentent.
Vous devez rechercher :
- Évolutivité horizontale : Les bases de données qui peuvent distribuer des données sur plusieurs nœuds (avec le sharding par exemple)
- Haute disponibilité : Mécanismes intégrés de mise en grappe, de réplication et de basculement pour garantir la disponibilité.
L'intégration et l'écosystème sont vraiment importants
La capacité d'une BDST à s'intégrer à vos outils et flux de travail existants est très importante pour que votre équipe l'adopte et l'utilise efficacement.
Cherchez :
- Intégration avec vos outils (plateformes de monitoring, framework de traitement de données, outils BI, etc.)
- Prise en charge des pipelines d'ingestion : Recherchez des TSDB qui s'intègrent à vos sources de données, telles que les appareils IoT, les API ou les agrégateurs de journaux.
- API et langages de requête : Les BDST qui offrent des API REST, un support SQL ou des SDK linguistiques facilitent l'intégration pour les développeurs.
Coût
La TSDB peut s'avérer coûteuse, en particulier lorsque vos volumes de données augmentent. Les coûts peuvent varier en fonction des licences, des exigences en matière d'infrastructure et des efforts de maintenance.
Certaines BDST sont libres et gratuites, mais elles peuvent nécessiter des coûts d'infrastructure et d'exploitation importants. D'autres sont commerciaux, avec des droits de licence, mais ils sont dotés de fonctions avancées et d'une assistance.
Veillez à consulter :
- Frais de licence : Open-source (par exemple, Prometheus, VictoriaMetrics) et commercial (par exemple, InfluxDB Enterprise).
- Coûts d'infrastructure : Bases de données techniques hébergées dans le cloud par rapport aux solutions auto-hébergées.
- Frais généraux de maintenance : Coûts opérationnels pour la mise à l'échelle, les sauvegardes et la reprise après sinistre.
Pour les petites charges de travail, vous pouvez envisager des services gérés hébergés dans le cloud qui réduisent les frais généraux d'exploitation, mais veillez à prendre en compte les coûts à long terme au fur et à mesure de l'évolution des données. Je vous recommande également de mettre en œuvre des politiques de conservation des données et de réduire l'échantillonnage dès le départ afin de gérer efficacement les coûts de stockage.
Conclusion
J'espère que vous avez pris autant de plaisir à lire ce guide que j'en ai eu à le rédiger !
Maintenant que vous comprenez les bases des bases de données de séries temporelles, vous pouvez choisir la base de données de votre choix, obtenir un essai gratuit et commencer à mettre vos compétences en pratique !
Ingénieur logiciel senior, rédacteur technique et conseiller avec une formation en physique. Nous nous engageons à aider les jeunes entreprises à atteindre leur potentiel et à rendre des concepts complexes accessibles à tous.
Apprenez l'ingénierie des données avec ces cours !
cours
Time Series Analysis in SQL Server
cours
Database Design
blog
Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024
blog
Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux
Nisha Arya Ahmed
20 min
blog
2022-2023 Rapport annuel DataCamp Classrooms
blog
Q2 2023 DataCamp Donates Digest
blog
Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire
Fereshteh Forough
4 min
blog