Un véhicule blindé moderne émet des centaines de relevés de capteurs par seconde – régime moteur, pression d'huile, température de boîte de vitesses, charge de suspension, débit de carburant, tension de batterie, position GPS et qualité de liaison sur chaque radio qui lui est rattachée. Une flotte de 200 véhicules produit des dizaines de millions de points de données par minute. Un navire de guerre doté d'une surveillance complète des machines en produit davantage. Stocker cette télémétrie dans une base de données relationnelle n'a jamais été viable à grande échelle ; les schémas d'écriture, les formes de requête et les exigences de rétention diffèrent fondamentalement des charges transactionnelles. Les bases de données de séries temporelles (TSDB) existent précisément pour résoudre ce problème, et les décisions d'ingénierie prises lors du déploiement de l'une d'elles – conception du schéma, paramètres de lots, politique de sous-échantillonnage, cardinalité des tags – déterminent si le système peut soutenir le tempo opérationnel ou s'effondre sous la charge en quelques jours après le déploiement. Cet article couvre l'intégralité du cycle de vie : de l'ingestion du réseau de capteurs jusqu'aux niveaux de rétention et aux schémas de requête pour l'analyse de défense.

Pourquoi les bases de données de séries temporelles existent

Une base de données de séries temporelles est un moteur de stockage conçu spécifiquement pour des données intensives en ajout, ordonnées par horodatage, où les requêtes impliquent presque toujours une plage temporelle, et où la valeur principale des données réside dans leur relation temporelle – comment une métrique évolue dans le temps, et non comment un relevé individuel se rapporte à une autre entité.

La distinction technique fondamentale par rapport aux bases relationnelles est la disposition du stockage. Les TSDB utilisent un stockage en colonnes avec partitionnement automatique par le temps (appelé shards, chunks ou buckets selon le produit). Tous les relevés d'une métrique donnée dans une fenêtre temporelle sont stockés physiquement adjacents sur le disque. Cela signifie qu'une requête d'agrégation de plage temporelle – « donne-moi la température moyenne du moteur pour la plateforme P sur les dernières 24 heures » – lit un bloc disque contigu, et non des pages de tas dispersées. À 10 000 écritures de capteurs par seconde, une TSDB peut soutenir cette charge avec une latence d'écriture de l'ordre de la milliseconde sur du stockage NVMe courant. Une base relationnelle saturerait son sous-système d'E/S au même débit d'écriture car chaque insertion doit mettre à jour plusieurs index.

La compression est l'autre avantage critique. Les relevés de capteurs en virgule flottante d'horodatages adjacents sont souvent quasi identiques – la température varie de fractions de degré entre les échantillons. Les TSDB utilisent le codage delta, la compression XOR (pour les doubles IEEE 754) et le codage par plages pour atteindre des taux de compression de 10:1 ou mieux sur des flux de télémétrie typiques. Un flux de télémétrie brut qui occuperait 1 To dans une base relationnelle se stocke en 80–120 Go dans une TSDB.

Conception du schéma : measurements, tags et champs

Les décisions de schéma prises avant la première écriture sont les plus difficiles à inverser. Un ensemble de tags mal conçu provoque une explosion de la cardinalité des séries – un état où le nombre de séries temporelles distinctes dans la base croît sans limite, consommant la mémoire d'index et dégradant toutes les requêtes. C'est le mode de défaillance en production le plus courant des déploiements de TSDB, et il est entièrement évitable avec une conception correcte.

Measurements

Un measurement (appelé famille de métriques dans certains produits) est un regroupement logique de champs liés qui sont toujours écrits ensemble au même horodatage. Des frontières de measurement sensées pour la télémétrie des plateformes de défense incluent : engine_telemetry (régime, pression d'huile, température de liquide de refroidissement, débit de carburant), nav_position (latitude, longitude, altitude, cap, vitesse sol), power_systems (tension de batterie, sortie d'alternateur, courant de charge par bus) et radio_link_quality (puissance du signal, plancher de bruit, taux d'erreur de paquets, nombre de retransmissions). Les champs au sein d'un même measurement partagent un horodatage et sont stockés ensemble, de sorte que le regroupement par cadence d'écriture et cohésion opérationnelle produit la disposition la plus efficace.

Tags versus champs

Les tags sont des métadonnées indexées qui identifient la série. Chaque combinaison unique de valeurs de tags crée une série distincte dans l'index. Les champs sont les valeurs numériques écrites à chaque horodatage – ils ne sont pas indexés, seulement stockés. La règle de conception est : si vous devez filtrer ou regrouper par une dimension dans un prédicat de requête, ce doit être un tag. Si vous devez seulement lire la valeur, ce doit être un champ.

Pour la télémétrie des plateformes militaires, les tags appropriés sont : platform_id (un identifiant court et stable, par ex. « VH-041 »), platform_type (par ex. « M1A2 », « BTR-4 », « Mi-8 »), unit_id (identifiant de bataillon ou d'escadron), sensor_class (par ex. « engine », « nav », « comms ») et base ou grid_zone pour un contexte de localisation grossier. Ceux-ci sont à faible cardinalité : une flotte de 500 véhicules avec 20 affectations d'unités et 5 types de plateformes produit au plus 50 000 séries distinctes – bien dans la plage de fonctionnement confortable de toute TSDB de production.

Ce qui ne doit PAS être des tags : les coordonnées GPS brutes, les UUID d'événements, les codes de défaut en texte libre ou tout autre champ dont la cardinalité est proportionnelle au nombre de points de données. Placer une latitude brute comme tag crée une nouvelle série pour chaque point de données – l'index croît sans limite et les performances de requête se dégradent en quelques heures. Les identifiants à forte cardinalité appartiennent aux champs ou à un magasin de métadonnées relationnel distinct qui se joint à la série de la TSDB par les tags stables à faible cardinalité.

Ingestion à haut débit : lots, mise en tampon et écritures hors séquence

Les capteurs de défense – particulièrement ceux des plateformes de véhicules ou des UAV – n'écrivent pas directement dans la TSDB. Un collecteur de bord s'exécute sur la plateforme ou sur la passerelle qui agrège les données d'une section de véhicule, met en mémoire tampon les relevés localement et envoie des lots à la TSDB sur le réseau tactique. L'architecture d'ingestion possède trois paramètres qui déterminent si elle peut absorber la charge d'écriture soutenue sans perdre de données ni saturer le réseau.

Taille de lot. Écrire un point à la fois produit un aller-retour réseau par relevé de capteur – totalement insoutenable à des débits élevés. Des tailles de lot de 1 000–5 000 points par requête d'écriture réduisent la surcharge réseau de trois ordres de grandeur. Le compromis est la latence d'écriture : avec un lot de 1 000 points et un capteur à 100 Hz, les données sont retardées jusqu'à 10 secondes avant le vidage du lot. Pour la surveillance opérationnelle où une latence de 10–30 secondes est acceptable, les grands lots sont optimaux. Pour l'alerte en quasi-temps réel, des lots plus petits avec un intervalle de vidage basé sur le temps (par ex. vidage toutes les 2 secondes indépendamment du remplissage du lot) sont plus appropriés.

Mise en tampon en écriture anticipée. Les liaisons radio tactiques subissent des coupures. Quand la liaison est coupée, le collecteur de bord doit mettre en tampon localement les données non envoyées – sur stockage persistant, et pas seulement en mémoire, afin que les données survivent à un redémarrage de processus ou un cycle d'alimentation. Le dimensionnement du tampon doit être calculé à partir de la durée maximale de coupure de liaison attendue multipliée par le débit d'écriture de pointe : une coupure de 10 minutes avec un flux de capteur de 5 000 points par seconde nécessite 3 millions de points de capacité tampon, soit environ 150 Mo pour des largeurs de champ en virgule flottante typiques. Les collecteurs qui n'utilisent que des tampons en mémoire perdront des données à chaque interruption de liaison.

Acceptation des écritures hors séquence. Quand les données mises en tampon arrivent après le rétablissement de la liaison, elles portent des horodatages du passé. Les TSDB varient fortement dans leur tolérance aux écritures hors séquence : certaines rejettent les écritures dont l'horodatage est plus ancien qu'une fenêtre configurable ; d'autres acceptent toute écriture historique mais à un coût de performance. La fenêtre d'acceptation doit être configurée pour correspondre à la coupure de liaison maximale attendue pour le type de plateforme. Pour les plateformes de véhicules sur radio tactique, 300–600 secondes est typique. Pour les plateformes à relais satellite où une coupure de liaison pendant un trou de passage peut durer 90 minutes, la fenêtre doit être de 5 400 secondes ou plus.

Politiques de rétention et sous-échantillonnage

La télémétrie brute en pleine résolution est coûteuse à stocker à long terme et rarement nécessaire au-delà d'une courte fenêtre opérationnelle. Une politique de rétention à trois niveaux couvre pratiquement toutes les exigences de télémétrie de défense sans coût de stockage inutile.

Niveau 1 – Brut. Données en pleine résolution (10–100 Hz selon le type de capteur) conservées 7 à 30 jours. Cette fenêtre prend en charge la surveillance en temps réel, l'analyse immédiate après incident et la revue des alertes de seuil. Pour une flotte de 500 plateformes avec 50 capteurs par plateforme écrivant à 10 Hz, le stockage en pleine résolution consomme environ 2–4 To par jour en stockage TSDB compressé – gérable pour une rétention de 30 jours avec du matériel NAS courant.

Niveau 2 – Agrégats à 1 minute. Calculés par requête continue ou tâche de sous-échantillonnage : moyenne, min, max et count de chaque champ sur chaque fenêtre d'une minute. Conservés 6 à 12 mois. Cette résolution prend en charge l'analyse de tendance, l'ingénierie de caractéristiques pour la maintenance prédictive et la détection d'anomalies à l'échelle de la flotte. Le stockage à la résolution d'une minute est environ 600× plus petit que le niveau brut.

Niveau 3 – Agrégats à 1 heure. Conservés 3 à 7 ans pour l'analyse à long terme de l'état de la flotte, la planification du cycle de vie et la revue des programmes de soutien. À cette résolution, un historique de 7 ans pour une flotte de 500 plateformes occupe bien moins de 100 Go – trivialement peu coûteux par rapport à la valeur opérationnelle de l'enregistrement historique.

Les tâches de sous-échantillonnage doivent être planifiées avec un décalage délibéré par rapport à la limite de fenêtre. Une tâche planifiée pour s'exécuter exactement à la limite de minute lira fréquemment une fenêtre incomplète – les dernières secondes de données peuvent ne pas encore avoir été vidées du pipeline d'ingestion. Un décalage de 30 secondes garantit que la fenêtre est complète avant l'agrégation. Ce détail élimine une classe entière d'artefacts de bord subtils qui apparaissent comme des creux ou des pics anormaux à intervalles réguliers dans les données sous-échantillonnées.

Idée clé : L'explosion de la cardinalité des séries est le mode de défaillance en production le plus courant des déploiements de TSDB dans les programmes de télémétrie de défense. Elle est entièrement causée par le placement de valeurs à forte cardinalité – coordonnées GPS, UUID d'événements, chaînes de codes de défaut – dans des tags plutôt que dans des champs. La correction exige une migration de schéma et une réingestion complète, ce qui est perturbateur sur le plan opérationnel. Définissez les limites de cardinalité des tags avant la première écriture, imposez-les dans le collecteur et auditez-les avant l'intégration de tout nouveau type de capteur.

Schémas de requête pour l'analyse de la télémétrie de défense

Cinq schémas de requête représentent la majorité de l'utilisation opérationnelle et analytique d'une TSDB de télémétrie de défense. Un déploiement de production doit gérer les cinq avec une exécution par index uniquement – pas de balayages de séries complètes – aux volumes de données attendus après 6 à 12 mois d'accumulation.

Requêtes de dernière valeur. « Quelle est la température actuelle du moteur du véhicule VH-041 ? » C'est la requête la plus fréquente dans un tableau de bord de surveillance opérationnelle. Les TSDB optimisées pour ce schéma maintiennent un index de dernière valeur par série, de sorte que la requête renvoie en temps constant quelle que soit la quantité de données historiques existantes. Sans cette optimisation, les requêtes de dernière valeur dégénèrent en un balayage temporel inverse sur la série brute – acceptable à faible cardinalité, inacceptable à l'échelle de la flotte.

Agrégations de plage temporelle. « Quel était le taux moyen de consommation de carburant pour toutes les plateformes M1A2 de l'Unit-7 sur les dernières 72 heures ? » C'est la requête analytique centrale : un filtre de tag sélectionnant les séries pertinentes, un balayage de plage temporelle et une fonction d'agrégation appliquée à la fois sur la dimension temporelle et sur les séries filtrées. Le temps d'exécution doit se mesurer en dizaines de millisecondes aux volumes de données de 12 mois pour un schéma correctement indexé ; des centaines de millisecondes indiquent un problème de cardinalité.

Détection de franchissement de seuil. « Quand la température d'huile de boîte de vitesses sur un véhicule de la flotte a-t-elle dépassé 120 °C pour la première fois au cours des 30 derniers jours ? » Cette requête nécessite un balayage sur une plage temporelle avec un prédicat sur une valeur de champ. Certaines TSDB exécutent cela efficacement avec des métadonnées min/max en colonnes qui élaguent les chunks sans valeurs dépassant le seuil ; d'autres exigent un balayage complet du champ. Comprendre quelle stratégie d'exécution le produit choisi utilise est crucial pour dimensionner les budgets de latence du système d'alerte.

Comparaison multi-séries. « Montre-moi la consommation de carburant pour tous les véhicules de type BTR-4 sur la dernière semaine, regroupée par unité. » C'est la requête d'analyse comparative de flotte utilisée par les planificateurs de maintenance pour identifier les plateformes aberrantes. Elle nécessite que l'index de tags énumère efficacement toutes les séries correspondant au filtre platform_type, puis agrège chacune. Le résultat est une série temporelle par unité – un petit nombre de séries de sortie quelle que soit la taille de la flotte, si le schéma de tags est correct.

Requêtes de dérivée. « Quel est le taux de variation de l'amplitude de vibration sur le moteur bâbord de VH-041 sur les 6 dernières heures ? » Le taux de variation est la caractéristique centrale de la détection d'anomalies mécaniques – une augmentation soudaine de la dérivée d'une série de vibration ou de température précède souvent une défaillance de composant de plusieurs heures ou jours. Cela alimente directement le pipeline de file de messages qui livre les événements d'anomalie au centre d'opérations de maintenance. La plupart des TSDB prennent en charge le calcul de dérivée comme fonction native ; celles qui ne le font pas exigent un calcul au niveau applicatif sur un résultat de requête de plage temporelle dense, ce qui est viable mais ajoute de la latence.

Intégration à la plateforme de données plus large

Une TSDB ne fonctionne pas isolément. Dans une plateforme de données de défense, c'est un composant d'un pipeline qui comprend également des collecteurs de bord, des files de messages pour le routage d'événements en temps réel, un lac de données pour le stockage multiformat à long terme, et des frontaux d'analyse et de surveillance. Le contrat d'intégration entre la TSDB et ces composants doit être défini explicitement.

Pour les consommateurs en aval qui ont besoin de télémétrie en quasi-temps réel – systèmes d'alerte, tableaux de bord opérationnels, moteurs de fusion – le schéma recommandé est que le collecteur de bord publie chaque lot à la fois vers la TSDB (pour la persistance et la requête historique) et vers un topic de file de messages (pour le routage d'événements à faible latence vers les consommateurs). Cela découple la TSDB du chemin de livraison en temps réel : les consommateurs reçoivent les événements quelques secondes après la capture du capteur, sans interroger la TSDB, et la TSDB ne sert que les requêtes historiques et d'agrégation pour lesquelles sa disposition de stockage est optimisée.

Pour l'intégration au lac de données de défense, les niveaux sous-échantillonnés de la TSDB sont la source appropriée : exportez des instantanés d'agrégats à 1 minute en Parquet ou CSV de façon planifiée et déposez-les dans la zone d'ingestion du lac. Exporter les données brutes de la TSDB vers le lac est redondant si le collecteur de bord écrit déjà les données brutes vers les deux destinations – mais la TSDB demeure la source faisant autorité pour les requêtes de plage temporelle sur les données récentes, car son format de stockage est de plusieurs ordres de grandeur plus rapide pour ce schéma que les fichiers en colonnes adossés au stockage d'objets du lac.

Instrumentez vos plateformes avec corvus HEAD

Corvus HEAD relie les flux de télémétrie des plateformes – véhicules, UAV et capteurs fixes – à une image opérationnelle unifiée avec stockage de séries temporelles, sous-échantillonnage et alerte d'anomalies intégrés. Conçu pour les débits d'écriture et les exigences de rétention des opérations de défense, et non de l'informatique d'entreprise.

Découvrir Corvus HEAD → Réserver un briefing

Cette analyse a été préparée par les ingénieurs de Corvus Intelligence qui conçoivent des systèmes d'intégration de données et de surveillance de plateformes critiques pour les organisations de défense et gouvernementales. En savoir plus sur notre équipe →