Composants d'unification
Les briques de base de l'unification des données — normalisation du format, unification de la structure, unification sémantique, normalisation et exploitation des données unifiées.
Normalisation du format
Toutes les données provenant de sources différentes sont converties dans un format unique.
Par exemple, les données issues des appareils IoT arrivent au format JSON :
{
"device_id": "sensor-123",
"temp": 27.3,
"time": 1739960923
}Unification de la structure des données
Une structure unique est définie pour l’ensemble des données, quelle que soit leur source.
Toutes les données sont stockées dans la table channel_data, qui les associe à l’équipement, aux sessions, aux canaux et aux unités de mesure :
| Champ | Type | Description |
|---|---|---|
id | bigint | Identifiant unique de l’enregistrement (clé primaire). |
equipment_id | bigint | Référence vers l’équipement (equipment.id). |
seance_id | bigint | Référence vers la session (seances.id). |
channel_id | bigint | Référence vers le canal (channels.id). |
unit_id | bigint | Référence vers l’unité de mesure (units.id). |
archive_type_id | integer | Référence vers le type d’archive (referenceparameters.id). |
event_time | integer | Heure de l’événement (par ex. horodatage). |
value | character varying(100) | Valeur reçue depuis le canal. |
created_at | timestamp(6) without time zone | Heure de création de l’enregistrement. |
updated_at | timestamp(6) without time zone | Heure de la dernière mise à jour de l’enregistrement. |
Où :
equipment_id: identifiant unique de l’équipement.seance_id: identifiant unique de la session.channel_id: identifiant unique du canal.unit_id: identifiant unique de l’unité de mesure.
Lorsque les données provenant de différents appareils sont stockées dans un référentiel central :
- les données sont converties dans un format et une structure uniques ;
- elles sont enregistrées dans la table de données unifiées
channel_data.
Unification sémantique
Toutes les données ont la même signification et la même interprétation dans l’ensemble des systèmes.
Par exemple :
- Tous les horodatages sont au format
UTC. Ce choix a été appliqué dès la phase de conception du système. - Tous les systèmes utilisent les mêmes unités de mesure (par ex. les degrés Celsius).
Pour unifier les unités de mesure, le modèle Units a été ajouté au système. Il stocke les unités de mesure utilisées pour les données des canaux.
| Champ | Type | Description |
|---|---|---|
id | bigint | Identifiant unique de l’enregistrement (clé primaire). |
name | character varying(30) | Nom de l’unité de mesure. |
varname | character varying(30) | Nom de variable abrégé de l’unité de mesure. |
description | character varying(100) | Description de l’unité de mesure. |
conversion_factor | double precision | Facteur de conversion de l’unité de mesure. |
rounding | smallint | Nombre de décimales pour l’arrondi. |
synonyms | character varying[] | Tableau de synonymes de l’unité de mesure. |
created_at | timestamp(6) without time zone | Heure de création de l’enregistrement. |
updated_at | timestamp(6) without time zone | Heure de la dernière mise à jour de l’enregistrement. |
Normalisation des données
Le modèle de données du système est ramené à la forme normale de Boyce-Codd (troisième forme normale) au regard des valeurs atomiques (scalaires). Certaines entités du modèle de données recourent à des structures composites afin d’optimiser le traitement des attributs rares et non standard.
Les données sont réparties dans des tables logiques (equipment, channels, units, sessions), ce qui élimine la redondance et les doublons.
Par exemple :
- La table
channel_dataréférence les tablesequipment,channels,unitsetsessionsau moyen de clés étrangères.
Exploitation des données unifiées
Les données unifiées peuvent être utilisées à des fins d’analyse, de visualisation, d’apprentissage automatique et pour d’autres tâches.
Analyse des données avec SQL
SELECT equipment_id, AVG(value) as avg_value
FROM channel_data
WHERE archive_type_id = 4 AND channel_id = 3
GROUP BY equipment_id
ORDER BY equipment_idInterrogation des données via l’API REST
Exemple de requête :
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3Exemple de réponse :
[
{
"id": 123,
"equipment_id": 1,
"seance_id": 2,
"channel_id": 3,
"archive_type_id": 4,
"value": 42.5,
"event_time": 1739950861
}
]Sujets connexes
Cette page vous a-t-elle été utile ?
Merci pour votre retour !