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:
{
"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âmp | Tip | Descriere |
|---|---|---|
id | bigint | Identificatorul unic al înregistrării (cheie primară). |
equipment_id | bigint | Referință la echipament (equipment.id). |
seance_id | bigint | Referință la sesiune (seances.id). |
channel_id | bigint | Referință la canal (channels.id). |
unit_id | bigint | Referință la unitatea de măsură (units.id). |
archive_type_id | integer | Referință la tipul de arhivă (referenceparameters.id). |
event_time | integer | Momentul evenimentului (de ex. marca temporală). |
value | character varying(100) | Valoarea primită de la canal. |
created_at | timestamp(6) without time zone | Momentul în care înregistrarea a fost creată. |
updated_at | timestamp(6) without time zone | Momentul î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âmp | Tip | Descriere |
|---|---|---|
id | bigint | Identificatorul unic al înregistrării (cheie primară). |
name | character varying(30) | Denumirea unității de măsură. |
varname | character varying(30) | Numele scurt de variabilă al unității de măsură. |
description | character varying(100) | Descrierea unității de măsură. |
conversion_factor | double precision | Factorul de conversie al unității de măsură. |
rounding | smallint | Numărul de zecimale la care se rotunjește valoarea. |
synonyms | character varying[] | Tablou cu sinonimele unității de măsură. |
created_at | timestamp(6) without time zone | Momentul în care înregistrarea a fost creată. |
updated_at | timestamp(6) without time zone | Momentul î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_dataface referire la tabeleleequipment,channels,unitsșisessionsprin chei străine.
Utilizarea datelor unificate
Datele unificate pot fi folosite pentru analiză, vizualizare, învățare automată și alte sarcini.
Analiza datelor cu 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_idObținerea datelor prin REST API
Exemplu de cerere:
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3Exemplu de răspuns:
[
{
"id": 123,
"equipment_id": 1,
"seance_id": 2,
"channel_id": 3,
"archive_type_id": 4,
"value": 42.5,
"event_time": 1739950861
}
]Subiecte conexe
A fost utilă această pagină?
Vă mulțumim pentru răspuns!