Komponenty sjednocení

Stavební kameny sjednocení dat — standardizace formátu, sjednocení struktury, sémantické sjednocení, normalizace a využití sjednocených dat.

Standardizace formátu

Veškerá data přicházející z různých zdrojů se převádějí do jednotného formátu.

Data z IoT zařízení například přicházejí ve formátu JSON:

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

Sjednocení struktury dat

Pro všechna data je definována jednotná struktura bez ohledu na jejich zdroj.

Veškerá data se ukládají do tabulky channel_data, která je propojuje se zařízeními, relacemi, kanály a měrnými jednotkami:

PoleTypPopis
idbigintJedinečný identifikátor záznamu (primární klíč).
equipment_idbigintOdkaz na zařízení (equipment.id).
seance_idbigintOdkaz na relaci (seances.id).
channel_idbigintOdkaz na kanál (channels.id).
unit_idbigintOdkaz na měrnou jednotku (units.id).
archive_type_idintegerOdkaz na typ archivu (referenceparameters.id).
event_timeintegerČas události (např. časové razítko).
valuecharacter varying(100)Hodnota přijatá z kanálu.
created_attimestamp(6) without time zoneČas vytvoření záznamu.
updated_attimestamp(6) without time zoneČas poslední aktualizace záznamu.

Kde:

  • equipment_id: Jedinečný identifikátor zařízení.
  • seance_id: Jedinečný identifikátor relace.
  • channel_id: Jedinečný identifikátor kanálu.
  • unit_id: Jedinečný identifikátor měrné jednotky.

Při ukládání dat z různých zařízení do centrálního úložiště platí:

  • data se převedou do jednotného formátu a struktury;
  • ukládají se do sjednocené datové tabulky channel_data.

Sémantické sjednocení

Veškerá data mají napříč všemi systémy stejný význam a interpretaci.

Například:

  • Všechna časová razítka jsou ve formátu UTC. To bylo zavedeno již ve fázi návrhu systému.
  • Všechny systémy používají stejné měrné jednotky (např. stupně Celsia).

Za účelem sjednocení měrných jednotek byl do systému přidán model Units. Ukládá měrné jednotky používané pro data kanálů.

PoleTypPopis
idbigintJedinečný identifikátor záznamu (primární klíč).
namecharacter varying(30)Název měrné jednotky.
varnamecharacter varying(30)Zkrácený symbolický název měrné jednotky.
descriptioncharacter varying(100)Popis měrné jednotky.
conversion_factordouble precisionPřevodní koeficient měrné jednotky.
roundingsmallintPočet desetinných míst pro zaokrouhlení.
synonymscharacter varying[]Pole synonym měrné jednotky.
created_attimestamp(6) without time zoneČas vytvoření záznamu.
updated_attimestamp(6) without time zoneČas poslední aktualizace záznamu.

Normalizace dat

Datový model systému je z hlediska atomických (skalárních) hodnot převeden do Boyceovy–Coddovy (třetí) normální formy. Některé entity datového modelu využívají složené struktury za účelem optimalizace práce se vzácnými, nestandardními atributy.

Data jsou rozdělena do logických tabulek (equipment, channels, units, sessions), což odstraňuje redundanci a duplicitu.

Například:

  • Tabulka channel_data odkazuje na tabulky equipment, channels, units a sessions prostřednictvím cizích klíčů.

Využití sjednocených dat

Sjednocená data lze využít k analýze, vizualizaci, strojovému učení a dalším úlohám.

Analýza dat pomocí 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žádání dat prostřednictvím REST API

Příklad požadavku:

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

Příklad odpovědi:

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

Související témata

Naposledy aktualizováno

Byla tato stránka užitečná?