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:

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

CampoTipoDescrizione
idbigintIdentificatore univoco del record (chiave primaria).
equipment_idbigintRiferimento all’apparecchiatura (equipment.id).
seance_idbigintRiferimento alla sessione (seances.id).
channel_idbigintRiferimento al canale (channels.id).
unit_idbigintRiferimento all’unità di misura (units.id).
archive_type_idintegerRiferimento al tipo di archivio (referenceparameters.id).
event_timeintegerL’orario dell’evento (ad es. timestamp).
valuecharacter varying(100)Il valore ricevuto dal canale.
created_attimestamp(6) without time zoneOrario di creazione del record.
updated_attimestamp(6) without time zoneOrario 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.

CampoTipoDescrizione
idbigintIdentificatore univoco del record (chiave primaria).
namecharacter varying(30)Nome dell’unità di misura.
varnamecharacter varying(30)Nome breve della variabile per l’unità di misura.
descriptioncharacter varying(100)Descrizione dell’unità di misura.
conversion_factordouble precisionFattore di conversione per un’unità di misura.
roundingsmallintNumero di cifre decimali a cui arrotondare.
synonymscharacter varying[]Array di sinonimi per l’unità di misura.
created_attimestamp(6) without time zoneOrario di creazione del record.
updated_attimestamp(6) without time zoneOrario 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_data fa riferimento alle tabelle equipment, channels, units e sessions tramite 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

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

Richiesta di dati tramite REST API

Esempio di richiesta:

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

Esempio di risposta:

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

Argomenti correlati

Ultimo aggiornamento il

Questa pagina è stata utile?