Componentele unificării

Elementele de bază ale unificării datelor – standardizarea formatului, unificarea structurii, unificarea semantică, normalizarea și utilizarea datelor unificate.

Standardizarea formatului

Toate datele care provin din surse diferite se convertesc într-un format unic.

De exemplu, datele de la dispozitivele IoT sosesc în format JSON:

example.json
{
  "device_id": "sensor-123",
  "temp": 27.3,
  "time": 1739960923
}

Unificarea structurii datelor

Pentru toate datele se definește o structură unică, indiferent de sursa lor.

Toate datele se stochează în tabelul channel_data, care le asociază cu echipamentele, sesiunile, canalele și unitățile de măsură:

CâmpTipDescriere
idbigintIdentificatorul unic al înregistrării (cheie primară).
equipment_idbigintReferință la echipament (equipment.id).
seance_idbigintReferință la sesiune (seances.id).
channel_idbigintReferință la canal (channels.id).
unit_idbigintReferință la unitatea de măsură (units.id).
archive_type_idintegerReferință la tipul de arhivă (referenceparameters.id).
event_timeintegerMomentul evenimentului (de ex. marca temporală).
valuecharacter varying(100)Valoarea primită de la canal.
created_attimestamp(6) without time zoneMomentul în care înregistrarea a fost creată.
updated_attimestamp(6) without time zoneMomentul în care înregistrarea a fost actualizată ultima dată.

Unde:

  • equipment_id: identificatorul unic al echipamentului.
  • seance_id: identificatorul unic al sesiunii.
  • channel_id: identificatorul unic al canalului.
  • unit_id: identificatorul unic al unității de măsură.

Când datele de la diferite dispozitive se stochează într-un depozit central:

  • datele se convertesc într-un format și o structură unice;
  • se stochează în tabelul de date unificate channel_data.

Unificarea semantică

Toate datele au aceeași semnificație și aceeași interpretare în toate sistemele.

De exemplu:

  • Toate mărcile temporale sunt în formatul UTC. Această regulă a fost implementată în etapa de proiectare a sistemului.
  • Toate sistemele folosesc aceleași unități de măsură (de exemplu, grade Celsius).

Pentru a unifica unitățile de măsură, în sistem a fost adăugat modelul Units. Acesta stochează unitățile de măsură folosite pentru datele canalelor.

CâmpTipDescriere
idbigintIdentificatorul unic al înregistrării (cheie primară).
namecharacter varying(30)Denumirea unității de măsură.
varnamecharacter varying(30)Numele scurt de variabilă al unității de măsură.
descriptioncharacter varying(100)Descrierea unității de măsură.
conversion_factordouble precisionFactorul de conversie al unității de măsură.
roundingsmallintNumărul de zecimale la care se rotunjește valoarea.
synonymscharacter varying[]Tablou cu sinonimele unității de măsură.
created_attimestamp(6) without time zoneMomentul în care înregistrarea a fost creată.
updated_attimestamp(6) without time zoneMomentul în care înregistrarea a fost actualizată ultima dată.

Normalizarea datelor

Modelul de date al sistemului este adus la forma normală Boyce-Codd (a treia) în ceea ce privește valorile atomice (scalare). Unele entități din modelul de date folosesc structuri compuse pentru a optimiza lucrul cu atributele rare, nestandard.

Datele sunt împărțite în tabele logice (equipment, channels, units, sessions), ceea ce elimină redundanța și duplicarea.

De exemplu:

  • Tabelul channel_data face referire la tabelele equipment, channels, units și sessions prin chei străine.

Utilizarea datelor unificate

Datele unificate pot fi folosite pentru analiză, vizualizare, învățare automată și alte sarcini.

Analiza datelor cu 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

Obținerea datelor prin REST API

Exemplu de cerere:

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

Exemplu de răspuns:

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

Subiecte conexe

Ultima actualizare:

A fost utilă această pagină?