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_numberachannel_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í.
| Pole | Typ | Popis |
|---|---|---|
id | bigint | Jedinečný identifikátor záznamu (primárny kľúč). |
equipment_id | bigint | Odkaz na zariadenie (equipment.id). |
seance_id | bigint | Odkaz na reláciu (seances.id). |
channel_id | bigint | Odkaz na kanál (channels.id). |
unit_id | bigint | Odkaz na mernú jednotku (units.id). |
archive_type_id | integer | Odkaz na typ archívu (referenceparameters.id). |
event_time | integer | Čas udalosti (napr. časová pečiatka). |
value | character varying(100) | Hodnota prijatá z kanála. |
created_at | timestamp(6) without time zone | Čas vytvorenia záznamu. |
updated_at | timestamp(6) without time zone | Čas poslednej aktualizácie záznamu. |
Vzťahy:
- Cudzí kľúč
unit_idodkazuje na tabuľkuunits. - Cudzí kľúč
archive_type_idodkazuje na tabuľkureferenceparameters. - Cudzí kľúč
equipment_idodkazuje na tabuľkuequipment. - Cudzí kľúč
channel_idodkazuje na tabuľkuchannels. - Cudzí kľúč
seance_idodkazuje na tabuľkuseances.
Tabuľka units
Táto tabuľka uchováva merné jednotky používané pre dáta z kanálov.
| Pole | Typ | Popis |
|---|---|---|
id | bigint | Jedinečný identifikátor záznamu (primárny kľúč). |
name | character varying(30) | Názov mernej jednotky. |
varname | character varying(30) | Skrátený premenný názov mernej jednotky. |
description | character varying(100) | Popis mernej jednotky. |
conversion_factor | double precision | Prepočítavací koeficient mernej jednotky. |
rounding | smallint | Počet desatinných miest na zaokrúhľovanie. |
synonyms | character varying[] | Pole synoným mernej jednotky. |
created_at | timestamp(6) without time zone | Čas vytvorenia záznamu. |
updated_at | timestamp(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.
| Pole | Typ | Popis |
|---|---|---|
id | bigint | Jedinečný identifikátor záznamu (primárny kľúč). |
name | character varying(30) | Názov mernej jednotky. |
varname | character varying(30) | Skrátený premenný názov mernej jednotky. |
description | character varying(100) | Popis mernej jednotky. |
parent_id | integer | Odkaz na nadradený parameter (hierarchia). |
referencemodel_id | integer | Odkaz na model číselníka. |
created_at | timestamp(6) without time zone | Čas vytvorenia záznamu. |
updated_at | timestamp(6) without time zone | Čas poslednej aktualizácie záznamu. |
deleted_at | timestamp(6) without time zone | Čas odstránenia záznamu (mäkké odstránenie). |
Vzťahy:
- Cudzí kľúč
parent_idodkazuje na tú istú tabuľku (referenceparameters.id), čo umožňuje budovať hierarchie.
Tabuľka equipment
| Pole | Typ | Popis |
|---|---|---|
id | bigint | Jedinečný identifikátor záznamu (primárny kľúč). |
equipment_type_id | bigint | Odkaz na typ zariadenia. |
serial_number | character varying(25) | Sériové číslo zariadenia. |
manufacture_date | timestamp(6) without time zone | Dátum výroby zariadenia. |
installation_date | timestamp(6) without time zone | Dátum inštalácie zariadenia. |
program_version | character varying(100) | Verzia softvéru zariadenia. |
created_at | timestamp(6) without time zone | Čas vytvorenia záznamu. |
updated_at | timestamp(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í.
| Pole | Typ | Popis |
|---|---|---|
id | bigint | Jedinečný identifikátor záznamu (primárny kľúč). |
equipment_type_id | bigint | Odkaz na typ zariadenia (equipment_type.id). |
unit_id | bigint | Odkaz na mernú jednotku (units.id). |
name | character varying(100) | Názov kanála. |
varname | character varying(20) | Skrátený premenný názov kanála. |
created_at | timestamp(6) without time zone | Čas vytvorenia záznamu. |
updated_at | timestamp(6) without time zone | Čas poslednej aktualizácie záznamu. |
Vzťahy:
- Cudzí kľúč
equipment_type_idodkazuje na tabuľkuequipment_type. - Cudzí kľúč
unit_idodkazuje na tabuľkuunits.
Tabuľka seances
Táto tabuľka uchováva informácie o komunikačných reláciách zariadenia.
| Pole | Typ | Popis |
|---|---|---|
id | bigint | Jedinečný identifikátor záznamu (primárny kľúč). |
telemetry_id | bigint | Odkaz na telemetriu (telemetry.id). |
event_time | integer | Čas udalosti. |
evtid | smallint | Identifikátor udalosti. |
trycnt | smallint | Počet pokusov. |
tryfl | character varying(12) | Príznak pokusu. |
state | smallint | Stav relácie. |
btm | integer | Nabitie batérie. |
rssi | integer | Sila signálu (ak sa používa). |
created_at | timestamp(6) without time zone | Čas vytvorenia záznamu. |
updated_at | timestamp(6) without time zone | Čas poslednej aktualizácie záznamu. |
Všeobecná štruktúra a vzťahy
Hlavná tabuľka — channel_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:
{
"device_id": "sensor-123",
"timestamp": 1739950861,
"value": 42.5
}Adaptér prevedie dáta do štruktúry channel_data:
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:
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3Odpoveď:
[
{
"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
Bola táto stránka užitočná?
Ďakujeme za vašu spätnú väzbu!