Componenti di unificazione
Gli elementi costitutivi dell'unificazione dei dati — standardizzazione del formato, unificazione della struttura, unificazione semantica, normalizzazione e utilizzo dei dati unificati.
Standardizzazione del formato
Tutti i dati provenienti da fonti diverse vengono convertiti in un unico formato.
Ad esempio, i dati provenienti dai dispositivi IoT arrivano in formato JSON:
{
"device_id": "sensor-123",
"temp": 27.3,
"time": 1739960923
}Unificazione della struttura dei dati
Viene definita un’unica struttura per tutti i dati, indipendentemente dalla loro origine.
Tutti i dati sono archiviati nella tabella channel_data, che li associa all’apparecchiatura, alle sessioni, ai canali e alle unità di misura:
| Campo | Tipo | Descrizione |
|---|---|---|
id | bigint | Identificatore univoco del record (chiave primaria). |
equipment_id | bigint | Riferimento all’apparecchiatura (equipment.id). |
seance_id | bigint | Riferimento alla sessione (seances.id). |
channel_id | bigint | Riferimento al canale (channels.id). |
unit_id | bigint | Riferimento all’unità di misura (units.id). |
archive_type_id | integer | Riferimento al tipo di archivio (referenceparameters.id). |
event_time | integer | L’orario dell’evento (ad es. timestamp). |
value | character varying(100) | Il valore ricevuto dal canale. |
created_at | timestamp(6) without time zone | Orario di creazione del record. |
updated_at | timestamp(6) without time zone | Orario dell’ultimo aggiornamento del record. |
Dove:
equipment_id: Identificatore univoco dell’apparecchiatura.seance_id: Identificatore univoco della sessione.channel_id: Identificatore univoco del canale.unit_id: Identificatore univoco dell’unità di misura.
Quando i dati provenienti da dispositivi diversi vengono archiviati in un repository centrale:
- i dati vengono convertiti in un unico formato e in un’unica struttura;
- vengono archiviati nella tabella dei dati unificati
channel_data.
Unificazione semantica
Tutti i dati hanno lo stesso significato e la stessa interpretazione in tutti i sistemi.
Ad esempio:
- Tutti i timestamp sono in formato
UTC. Questo è stato implementato in fase di progettazione del sistema. - Tutti i sistemi utilizzano le stesse unità di misura (ad es. gradi Celsius).
Per unificare le unità di misura, al sistema è stato aggiunto il modello Units. Esso memorizza le unità di misura utilizzate per i dati dei canali.
| Campo | Tipo | Descrizione |
|---|---|---|
id | bigint | Identificatore univoco del record (chiave primaria). |
name | character varying(30) | Nome dell’unità di misura. |
varname | character varying(30) | Nome breve della variabile per l’unità di misura. |
description | character varying(100) | Descrizione dell’unità di misura. |
conversion_factor | double precision | Fattore di conversione per un’unità di misura. |
rounding | smallint | Numero di cifre decimali a cui arrotondare. |
synonyms | character varying[] | Array di sinonimi per l’unità di misura. |
created_at | timestamp(6) without time zone | Orario di creazione del record. |
updated_at | timestamp(6) without time zone | Orario dell’ultimo aggiornamento del record. |
Normalizzazione dei dati
Il modello dati del sistema è ricondotto alla forma normale di Boyce-Codd (terza) in termini di valori atomici (scalari). Alcune entità del modello dati utilizzano strutture composite per ottimizzare l’elaborazione di attributi rari e non standard.
I dati sono suddivisi in tabelle logiche (equipment, channels, units, sessions), il che elimina ridondanze e duplicazioni.
Ad esempio:
- La tabella
channel_datafa riferimento alle tabelleequipment,channels,unitsesessionstramite chiavi esterne.
Utilizzo dei dati unificati
I dati unificati possono essere utilizzati per analisi, visualizzazione, apprendimento automatico e altre attività.
Analisi dei dati tramite 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_idRichiesta di dati tramite REST API
Esempio di richiesta:
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3Esempio di risposta:
[
{
"id": 123,
"equipment_id": 1,
"seance_id": 2,
"channel_id": 3,
"archive_type_id": 4,
"value": 42.5,
"event_time": 1739950861
}
]Argomenti correlati
Questa pagina è stata utile?
Grazie per il tuo feedback!