Komponenty unifikácie

Stavebné prvky unifikácie údajov — štandardizácia formátu, unifikácia štruktúry, sémantická unifikácia, normalizácia a využitie unifikovaných údajov.

Štandardizácia formátu

Všetky údaje prichádzajúce z rôznych zdrojov sa prevádzajú do jednotného formátu.

Napríklad údaje zo zariadení IoT prichádzajú vo formáte JSON:

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

Unifikácia štruktúry údajov

Pre všetky údaje je definovaná jednotná štruktúra bez ohľadu na ich zdroj.

Všetky údaje sa ukladajú do tabuľky channel_data, ktorá ich prepája so zariadením, reláciami, kanálmi a meracími jednotkami:

PoleTypPopis
idbigintJedinečný identifikátor záznamu (primárny kľúč).
equipment_idbigintOdkaz na zariadenie (equipment.id).
seance_idbigintOdkaz na reláciu (seances.id).
channel_idbigintOdkaz na kanál (channels.id).
unit_idbigintOdkaz na meraciu jednotku (units.id).
archive_type_idintegerOdkaz na typ archívu (referenceparameters.id).
event_timeintegerČas udalosti (napr. časová pečiatka).
valuecharacter varying(100)Hodnota prijatá z kanála.
created_attimestamp(6) without time zoneČas vytvorenia záznamu.
updated_attimestamp(6) without time zoneČas poslednej aktualizácie záznamu.

Kde:

  • equipment_id: Jedinečný identifikátor zariadenia.
  • seance_id: Jedinečný identifikátor relácie.
  • channel_id: Jedinečný identifikátor kanála.
  • unit_id: Jedinečný identifikátor meracej jednotky.

Pri ukladaní údajov z rôznych zariadení do centrálneho úložiska:

  • údaje sa prevedú do jednotného formátu a štruktúry;
  • ukladajú sa do unifikovanej tabuľky údajov channel_data.

Sémantická unifikácia

Všetky údaje majú vo všetkých systémoch rovnaký význam a interpretáciu.

Napríklad:

  • Všetky časové pečiatky sú vo formáte UTC. Toto bolo zavedené už vo fáze návrhu systému.
  • Všetky systémy používajú rovnaké meracie jednotky (napr. stupne Celzia).

Na zjednotenie meracích jednotiek bol do systému pridaný model Units. Uchováva meracie jednotky používané pre údaje kanálov.

PoleTypPopis
idbigintJedinečný identifikátor záznamu (primárny kľúč).
namecharacter varying(30)Názov meracej jednotky.
varnamecharacter varying(30)Krátky názov premennej pre meraciu jednotku.
descriptioncharacter varying(100)Popis meracej jednotky.
conversion_factordouble precisionPrepočítavací koeficient meracej jednotky.
roundingsmallintPočet desatinných miest na zaokrúhlenie.
synonymscharacter varying[]Pole synoným pre meraciu jednotku.
created_attimestamp(6) without time zoneČas vytvorenia záznamu.
updated_attimestamp(6) without time zoneČas poslednej aktualizácie záznamu.

Normalizácia údajov

Dátový model systému je z hľadiska atomických (skalárnych) hodnôt prevedený do Boyceovej-Coddovej (tretej) normálnej formy. Niektoré entity dátového modelu používajú zložené štruktúry na optimalizáciu práce so zriedkavými, neštandardnými atribútmi.

Údaje sú rozdelené do logických tabuliek (equipment, channels, units, sessions), čím sa odstraňuje nadbytočnosť a duplicita.

Napríklad:

  • Tabuľka channel_data odkazuje na tabuľky equipment, channels, units a sessions prostredníctvom cudzích kľúčov.

Využitie unifikovaných údajov

Unifikované údaje možno použiť na analýzu, vizualizáciu, strojové učenie a ďalšie úlohy.

Analýza údajov pomocou 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

Vyžiadanie údajov cez REST API

Príklad požiadavky:

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

Príklad odpovede:

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

Súvisiace témy

Naposledy aktualizované

Bola táto stránka užitočná?