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 :

example.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 :

ChampTypeDescription
idbigintIdentifiant unique de l’enregistrement (clé primaire).
equipment_idbigintRéférence vers l’équipement (equipment.id).
seance_idbigintRéférence vers la session (seances.id).
channel_idbigintRéférence vers le canal (channels.id).
unit_idbigintRéférence vers l’unité de mesure (units.id).
archive_type_idintegerRéférence vers le type d’archive (referenceparameters.id).
event_timeintegerHeure de l’événement (par ex. horodatage).
valuecharacter varying(100)Valeur reçue depuis le canal.
created_attimestamp(6) without time zoneHeure de création de l’enregistrement.
updated_attimestamp(6) without time zoneHeure 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.

ChampTypeDescription
idbigintIdentifiant unique de l’enregistrement (clé primaire).
namecharacter varying(30)Nom de l’unité de mesure.
varnamecharacter varying(30)Nom de variable abrégé de l’unité de mesure.
descriptioncharacter varying(100)Description de l’unité de mesure.
conversion_factordouble precisionFacteur de conversion de l’unité de mesure.
roundingsmallintNombre de décimales pour l’arrondi.
synonymscharacter varying[]Tableau de synonymes de l’unité de mesure.
created_attimestamp(6) without time zoneHeure de création de l’enregistrement.
updated_attimestamp(6) without time zoneHeure 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_data référence les tables equipment, channels, units et sessions au 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

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_id

Interrogation des données via l’API REST

Exemple de requête :

bash
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3

Exemple de réponse :

json
[
  {
    "id": 123,
    "equipment_id": 1,
    "seance_id": 2,
    "channel_id": 3,
    "archive_type_id": 4,
    "value": 42.5,
    "event_time": 1739950861
  }
]

Sujets connexes

Dernière mise à jour le

Cette page vous a-t-elle été utile ?