Abstraktná dátová vrstva

Abstraktná dátová vrstva, jednotný dátový model systému, abstrakcia zariadení a normalizácia dát, ktoré oddeľujú aplikácie od fyzického úložiska.

Abstraktná dátová vrstva sa nachádza medzi fyzickým úložiskom dát a aplikáciami, ktoré ich využívajú. Abstrahuje fyzickú implementáciu a hardvérové špecifiká a poskytuje jednotné rozhranie na prácu s dátami. Ponúka:

  • Nezávislosť od hardvéru: Dáta sú uložené na rôznych zariadeniach (servery, cloud, zariadenia IoT), ale aplikácia s nimi pracuje prostredníctvom jednotného rozhrania.
  • Jednoduchší vývoj: Vývojári pracujú s abstraktnými entitami bez toho, aby sa museli zaoberať detailmi fyzického úložiska.
  • Flexibilita: Zmeny vo fyzickej štruktúre dát (napríklad migrácia do cloudu) nemajú vplyv na aplikácie.

Jednotný dátový model

Systém používa jednotný dátový model, ktorý je prispôsobený rôznym typom zariadení a umožňuje s nimi pracovať jednotným spôsobom bez ohľadu na ich zdroj alebo typ zariadenia. Zahŕňa spoločné dátové štruktúry, jednotné pravidlá spracovania a sémantickú konzistentnosť dát naprieč všetkými systémami a podsystémami.

Jednotný dátový model systému napríklad zahŕňa:

  • Entity: Zariadenia, kanály, relácie, jednotky a referenčné parametre.
  • Vzťahy: Zariadenie má kanály, kanály súvisia s dátami a dáta súvisia s reláciami.
  • Atribúty: Pre každú entitu sú definované atribúty (napríklad equipment.serial_number a channel_data.value).

Štruktúra jednotného dátového modelu systému

Jednotný dátový model systému je štruktúra na ukladanie a správu dát súvisiacich so zariadeniami, kanálmi, reláciami a meraniami. Pozrime sa na jednotlivé tabuľky a ich účel, ako aj na vzťahy medzi nimi.

Tabuľka channel_data

Táto tabuľka uchováva dáta prijaté z kanálov zariadení v rámci konkrétnych relácií.

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 mernú 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.

Vzťahy:

  • Cudzí kľúč unit_id odkazuje na tabuľku units.
  • Cudzí kľúč archive_type_id odkazuje na tabuľku referenceparameters.
  • Cudzí kľúč equipment_id odkazuje na tabuľku equipment.
  • Cudzí kľúč channel_id odkazuje na tabuľku channels.
  • Cudzí kľúč seance_id odkazuje na tabuľku seances.

Tabuľka units

Táto tabuľka uchováva merné jednotky používané pre dáta z kanálov.

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

Tabuľka referenceparameters

Táto tabuľka uchováva referenčné parametre, ako sú typy archívov alebo iné kvalifikátory.

PoleTypPopis
idbigintJedinečný identifikátor záznamu (primárny kľúč).
namecharacter varying(30)Názov mernej jednotky.
varnamecharacter varying(30)Skrátený premenný názov mernej jednotky.
descriptioncharacter varying(100)Popis mernej jednotky.
parent_idintegerOdkaz na nadradený parameter (hierarchia).
referencemodel_idintegerOdkaz na model číselníka.
created_attimestamp(6) without time zoneČas vytvorenia záznamu.
updated_attimestamp(6) without time zoneČas poslednej aktualizácie záznamu.
deleted_attimestamp(6) without time zoneČas odstránenia záznamu (mäkké odstránenie).

Vzťahy:

  • Cudzí kľúč parent_id odkazuje na tú istú tabuľku (referenceparameters.id), čo umožňuje budovať hierarchie.

Tabuľka equipment

PoleTypPopis
idbigintJedinečný identifikátor záznamu (primárny kľúč).
equipment_type_idbigintOdkaz na typ zariadenia.
serial_numbercharacter varying(25)Sériové číslo zariadenia.
manufacture_datetimestamp(6) without time zoneDátum výroby zariadenia.
installation_datetimestamp(6) without time zoneDátum inštalácie zariadenia.
program_versioncharacter varying(100)Verzia softvéru zariadenia.
created_attimestamp(6) without time zoneČas vytvorenia záznamu.
updated_attimestamp(6) without time zoneČas poslednej aktualizácie záznamu.

Tabuľka channels

Táto tabuľka uchováva informácie o kanáloch zariadení.

PoleTypPopis
idbigintJedinečný identifikátor záznamu (primárny kľúč).
equipment_type_idbigintOdkaz na typ zariadenia (equipment_type.id).
unit_idbigintOdkaz na mernú jednotku (units.id).
namecharacter varying(100)Názov kanála.
varnamecharacter varying(20)Skrátený premenný názov kanála.
created_attimestamp(6) without time zoneČas vytvorenia záznamu.
updated_attimestamp(6) without time zoneČas poslednej aktualizácie záznamu.

Vzťahy:

  • Cudzí kľúč equipment_type_id odkazuje na tabuľku equipment_type.
  • Cudzí kľúč unit_id odkazuje na tabuľku units.

Tabuľka seances

Táto tabuľka uchováva informácie o komunikačných reláciách zariadenia.

PoleTypPopis
idbigintJedinečný identifikátor záznamu (primárny kľúč).
telemetry_idbigintOdkaz na telemetriu (telemetry.id).
event_timeintegerČas udalosti.
evtidsmallintIdentifikátor udalosti.
trycntsmallintPočet pokusov.
tryflcharacter varying(12)Príznak pokusu.
statesmallintStav relácie.
btmintegerNabitie batérie.
rssiintegerSila signálu (ak sa používa).
created_attimestamp(6) without time zoneČas vytvorenia záznamu.
updated_attimestamp(6) without time zoneČas poslednej aktualizácie záznamu.

Všeobecná štruktúra a vzťahy

Hlavná tabuľkachannel_data, ktorá prepája dáta z kanálov so zariadeniami, reláciami a jednotkami.

Tabuľky vzťahov:

  • units — merné jednotky.
  • referenceparameters — typy archívov a iné kvalifikátory.

Tabuľky zariadení:

  • equipment — informácie o zariadeniach.
  • channels — kanály zariadení.

Tabuľka reláciíseances, ktorá uchováva informácie o komunikačných reláciách.

Príklad použitia:

  • Dáta z kanálov (channel_data) pochádzajú zo zariadení (equipment) v rámci konkrétnych relácií (seances).
  • Každý kanál (channels) má vlastnú mernú jednotku (units).
  • Typ archívu (referenceparameters) určuje, ako sa majú dáta ukladať alebo spracovávať.

Výhody jednotného modelu

Tento dátový model poskytuje flexibilitu a škálovateľnosť pri ukladaní a analýze dát z rôznych zariadení.

Niektoré z výhod jednotného dátového modelu sú:

  • Konzistentnosť: Dáta majú rovnakú štruktúru a sémantiku naprieč všetkými systémami.
  • Škálovateľnosť: Je jednoduché pridať nové zdroje dát alebo typy zariadení.
  • Ochrana dát: Jednotné mechanizmy autentifikácie, autorizácie a šifrovania.
  • Jednoduchšia analýza: Dáta je možné analyzovať jednotnými nástrojmi.

Abstrakcia zariadení

Abstrakcia zariadení je kľúčový princíp návrhu systému, ktorý oddeľuje logiku spracovania dát od fyzických vlastností zariadenia. To je obzvlášť dôležité v systémoch, ktoré používajú heterogénne zariadenia.

Abstrakcia zariadení znamená, že systém spracúva dáta na logickej úrovni, ktorá je nezávislá od fyzických zariadení, na ktorých sa dáta ukladajú alebo spracúvajú. Dosahuje sa to pomocou:

  • Zjednotenia rozhraní: Jednotný spôsob prístupu k dátam bez ohľadu na zariadenie.
  • Skrytia detailov implementácie: Fyzické umiestnenie dát, prenosové protokoly a ďalšie technické aspekty sú pred aplikáciami skryté.
  • Adaptérov: Konverzia dát z formátu špecifického pre zariadenie do jednotného formátu.

Implementácia abstrakcie zariadení

Nasledujúci príklad ukazuje, ako je tento prístup implementovaný v našom systéme. Sleduje dáta zo zariadenia IoT cez adaptér do jednotného dátového modelu a von cez API.

Predstavme si zariadenie IoT, ktoré odosiela dáta o spotrebe plynu. Implementované algoritmy nám umožňujú:

  • Prijať dáta zo zariadenia prostredníctvom adaptéra.
  • Previesť ich do štruktúry channel_data.
  • Uložiť ich do databázy.
  • Poskytnúť prístup k dátam prostredníctvom API.

Pre každý typ zariadenia sa vytvárajú adaptéry, ktoré spracúvajú protokoly špecifické pre dané zariadenie a prevádzajú dáta do jednotného formátu.

Príklad: transformácia dát

Pre zariadenie IoT môžu dáta prísť vo formáte JSON:

example.json
{
  "device_id": "sensor-123",
  "timestamp": 1739950861,
  "value": 42.5
}

Adaptér prevedie dáta do štruktúry channel_data:

example.sql
INSERT INTO channel_data (equipment_id, seance_id, channel_id,
 archive_type_id, value, event_time)
VALUES (1, 2, 3, 4, '42.5', 1739950861);

Požiadavka na dáta:

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

Odpoveď:

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

Výhody abstrakcie zariadení

  • Nezávislosť od hardvéru: Aplikácie pracujú s dátami bez toho, aby vedeli, kde sa fyzicky nachádzajú.
  • Flexibilita: Jednoduché pridávanie nových zariadení alebo úprava existujúcich.
  • Jednoduchší vývoj: Vývojári pracujú s abstraktnými entitami bez toho, aby sa museli zaoberať detailmi hardvéru.
  • Škálovateľnosť: Dáta je možné ukladať na rôznych zariadeniach, ale systém naďalej funguje jednotným spôsobom.

Normalizácia dát

Normalizácia dát je proces usporiadania dát v databáze tak, aby sa minimalizovala redundancia a zlepšila integrita dát. V kontexte abstraktnej dátovej vrstvy zohráva normalizácia kľúčovú úlohu pri vytváraní jednotného, efektívneho dátového modelu, ktorý možno použiť na spracovanie rôznych typov zariadení a zdrojov dát.

Normalizácia dát rozdeľuje dáta do logických tabuliek a stanovuje medzi nimi vzťahy s cieľom:

  • Odstrániť duplicitné dáta.
  • Zjednodušiť údržbu a aktualizáciu dát.
  • Zabezpečiť integritu dát.
  • Zlepšiť výkon dopytov.

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

Výhody normalizácie

  • Odstraňuje redundanciu: Dáta sú uložené na jednom mieste, čím sa znižuje redundancia.
  • Konzistentnosť dát: Udržiavanie konzistentnosti dát je jednoduchšie.
  • Flexibilita: Je jednoduché vykonávať zmeny v štruktúre dát.
  • Výkon: Výkon dopytov sa zlepšuje (vo väčšine prípadov).

Normalizácia v kontexte abstraktnej dátovej vrstvy

Normalizácia dát je dôležitým krokom pri návrhu abstraktnej dátovej vrstvy.

Umožňuje vám:

  • Vytvoriť jednotný dátový model, ktorý možno použiť na spracovanie rôznych typov zariadení.
  • Odstrániť redundanciu a duplicitu dát.
  • Zabezpečiť integritu a konzistentnosť dát bez ohľadu na ich zdroj.
  • Zjednodušiť integráciu nových zariadení a systémov.

Súvisiace témy

Naposledy aktualizované

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