Apstraktni sloj podataka

Apstraktni sloj podataka, jedinstveni model podataka sistema, apstrakcija opreme i normalizacija podataka, koji zajedno odvajaju aplikacije od fizičkog skladišta.

Apstraktni sloj podataka nalazi se između fizičkog skladišta podataka i aplikacija koje ih koriste. Skriva fizičku implementaciju i specifičnosti hardvera, a za rad sa podacima pruža jedinstven interfejs. Sloj obezbeđuje:

  • Nezavisnost od hardvera: podaci se čuvaju na različitim uređajima (na serverima, u oblaku, na IoT uređajima), ali aplikacija sa njima radi preko jedinstvenog interfejsa.
  • Jednostavniji razvoj: programeri rade sa apstraktnim entitetima i ne moraju da se bave detaljima fizičkog skladištenja podataka.
  • Fleksibilnost: promene fizičke strukture podataka (na primer, migracija u oblak) ne utiču na aplikacije.

Jedinstveni model podataka

Sistem koristi jedinstveni model podataka koji je prilagođen različitim tipovima opreme i omogućava da se sa podacima radi na ujednačen način, bez obzira na njihov izvor ili tip opreme. Model obuhvata zajedničke strukture podataka, ujednačena pravila obrade i semantičku doslednost podataka u svim sistemima i podsistemima.

Na primer, jedinstveni model podataka sistema sadrži:

  • Entiteti: oprema, kanali, sesije, jedinice mere i parametri šifarnika.
  • Veze: oprema ima kanale, kanali su povezani sa podacima, a podaci sa sesijama.
  • Atributi: za svaki entitet definisani su atributi (na primer, equipment.serial_number i channel_data.value).

Struktura jedinstvenog modela podataka sistema

Jedinstveni model podataka sistema je struktura za čuvanje podataka o opremi, kanalima, sesijama i merenjima i za upravljanje tim podacima. Pogledajmo svaku tabelu i njenu namenu, kao i veze između tabela.

Tabela channel_data

U ovoj tabeli čuvaju se podaci primljeni sa kanala opreme u okviru određenih sesija.

PoljeTipOpis
idbigintJedinstveni identifikator zapisa (primarni ključ).
equipment_idbigintReferenca na opremu (equipment.id).
seance_idbigintReferenca na sesiju (seances.id).
channel_idbigintReferenca na kanal (channels.id).
unit_idbigintReferenca na jedinicu mere (units.id).
archive_type_idintegerReferenca na tip arhive (referenceparameters.id).
event_timeintegerVreme događaja (npr. vremenska oznaka).
valuecharacter varying(100)Vrednost primljena sa kanala.
created_attimestamp(6) without time zoneVreme kreiranja zapisa.
updated_attimestamp(6) without time zoneVreme poslednjeg ažuriranja zapisa.

Veze:

  • Strani ključ unit_id upućuje na tabelu units.
  • Strani ključ archive_type_id upućuje na tabelu referenceparameters.
  • Strani ključ equipment_id upućuje na tabelu equipment.
  • Strani ključ channel_id upućuje na tabelu channels.
  • Strani ključ seance_id upućuje na tabelu seances.

Tabela units

U ovoj tabeli čuvaju se jedinice mere koje se koriste za podatke kanala.

PoljeTipOpis
idbigintJedinstveni identifikator zapisa (primarni ključ).
namecharacter varying(30)Naziv jedinice mere.
varnamecharacter varying(30)Kratko ime promenljive za jedinicu mere.
descriptioncharacter varying(100)Opis jedinice mere.
conversion_factordouble precisionFaktor konverzije za jedinicu mere.
roundingsmallintBroj decimalnih mesta za zaokruživanje.
synonymscharacter varying[]Niz sinonima za jedinicu mere.
created_attimestamp(6) without time zoneVreme kreiranja zapisa.
updated_attimestamp(6) without time zoneVreme poslednjeg ažuriranja zapisa.

Tabela referenceparameters

U ovoj tabeli čuvaju se parametri šifarnika, kao što su tipovi arhiva ili drugi kvalifikatori.

PoljeTipOpis
idbigintJedinstveni identifikator zapisa (primarni ključ).
namecharacter varying(30)Naziv jedinice mere.
varnamecharacter varying(30)Kratko ime promenljive za jedinicu mere.
descriptioncharacter varying(100)Opis jedinice mere.
parent_idintegerReferenca na nadređeni parametar (hijerarhija).
referencemodel_idintegerReferenca na model šifarnika.
created_attimestamp(6) without time zoneVreme kreiranja zapisa.
updated_attimestamp(6) without time zoneVreme poslednjeg ažuriranja zapisa.
deleted_attimestamp(6) without time zoneVreme logičkog brisanja zapisa (soft delete).

Veze:

  • Strani ključ parent_id upućuje na istu tabelu (referenceparameters.id), što omogućava izgradnju hijerarhija.

Tabela equipment

PoljeTipOpis
idbigintJedinstveni identifikator zapisa (primarni ključ).
equipment_type_idbigintReferenca na tip opreme.
serial_numbercharacter varying(25)Serijski broj opreme.
manufacture_datetimestamp(6) without time zoneDatum proizvodnje opreme.
installation_datetimestamp(6) without time zoneDatum ugradnje opreme.
program_versioncharacter varying(100)Verzija softvera opreme.
created_attimestamp(6) without time zoneVreme kreiranja zapisa.
updated_attimestamp(6) without time zoneVreme poslednjeg ažuriranja zapisa.

Tabela channels

U ovoj tabeli čuvaju se podaci o kanalima opreme.

PoljeTipOpis
idbigintJedinstveni identifikator zapisa (primarni ključ).
equipment_type_idbigintReferenca na tip opreme (equipment_type.id).
unit_idbigintReferenca na jedinicu mere (units.id).
namecharacter varying(100)Naziv kanala.
varnamecharacter varying(20)Kratko ime promenljive za kanal.
created_attimestamp(6) without time zoneVreme kreiranja zapisa.
updated_attimestamp(6) without time zoneVreme poslednjeg ažuriranja zapisa.

Veze:

  • Strani ključ equipment_type_id upućuje na tabelu equipment_type.
  • Strani ključ unit_id upućuje na tabelu units.

Tabela seances

U ovoj tabeli čuvaju se podaci o komunikacionim sesijama opreme.

PoljeTipOpis
idbigintJedinstveni identifikator zapisa (primarni ključ).
telemetry_idbigintReferenca na telemetriju (telemetry.id).
event_timeintegerVreme događaja.
evtidsmallintIdentifikator događaja.
trycntsmallintBroj pokušaja.
tryflcharacter varying(12)Indikator pokušaja.
statesmallintStatus sesije.
btmintegerNapunjenost baterije.
rssiintegerJačina signala (ako se koristi).
created_attimestamp(6) without time zoneVreme kreiranja zapisa.
updated_attimestamp(6) without time zoneVreme poslednjeg ažuriranja zapisa.

Opšta struktura i veze

Glavna tabela – channel_data, koja povezuje podatke kanala sa opremom, sesijama i jedinicama mere.

Povezane tabele:

  • units – jedinice mere.
  • referenceparameters – tipovi arhiva i drugi kvalifikatori.

Tabele opreme:

  • equipment – podaci o opremi.
  • channels – kanali opreme.

Tabela sesija – seances, u kojoj se čuvaju podaci o komunikacionim sesijama.

Primer korišćenja:

  • Podaci kanala (channel_data) stižu sa opreme (equipment) u okviru određenih sesija (seances).
  • Svaki kanal (channels) ima sopstvenu jedinicu mere (units).
  • Tip arhive (referenceparameters) određuje kako podatke treba čuvati ili obrađivati.

Prednosti jedinstvenog modela

Ovaj model podataka obezbeđuje fleksibilnost i skalabilnost pri čuvanju i analizi podataka sa različite opreme.

Neke od prednosti jedinstvenog modela podataka su:

  • Doslednost: podaci imaju istu strukturu i semantiku u svim sistemima.
  • Skalabilnost: lako je dodati nove izvore podataka ili tipove opreme.
  • Zaštita podataka: jedinstveni mehanizmi autentifikacije, autorizacije i šifrovanja.
  • Jednostavnija analiza: podaci mogu da se analiziraju jedinstvenim alatima.

Apstrakcija opreme

Apstrakcija opreme je ključni princip projektovanja sistema po kojem se logika rada sa podacima odvaja od fizičkih karakteristika opreme. To je posebno važno u sistemima koji koriste raznorodne uređaje.

Apstrakcija opreme znači da sistem radi sa podacima na logičkom nivou koji ne zavisi od fizičkih uređaja na kojima se podaci čuvaju ili obrađuju. To se postiže na sledeći način:

  • Unifikacija interfejsa: jedinstven način pristupa podacima, bez obzira na opremu.
  • Skrivanje detalja implementacije: fizička lokacija podataka, protokoli prenosa i drugi tehnički aspekti skriveni su od aplikacija.
  • Adapteri: konverzija podataka iz formata specifičnog za opremu u jedinstveni format.

Implementacija apstrakcije opreme

Sledeći primer pokazuje kako je ovaj pristup implementiran u našem sistemu. U njemu se prati put podataka od IoT uređaja preko adaptera u jedinstveni model podataka, a odatle dalje preko interfejsa API.

Uzmimo IoT uređaj koji šalje podatke o potrošnji gasa. Implementirani algoritmi nam omogućavaju da:

  • primimo podatke sa uređaja preko adaptera;
  • konvertujemo ih u strukturu channel_data;
  • sačuvamo ih u bazi podataka;
  • obezbedimo pristup podacima preko interfejsa API.

Za svaki tip opreme izrađuju se adapteri koji podržavaju protokole specifične za uređaj i konvertuju podatke u jedinstveni format.

Primer: transformacija podataka

Podaci sa IoT uređaja mogu da stignu u formatu JSON:

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

Adapter konvertuje podatke u strukturu 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);

Zahtev za podacima:

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

Odgovor:

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

Prednosti apstrakcije opreme

  • Nezavisnost od hardvera: aplikacije rade sa podacima, a da ne znaju gde se oni fizički nalaze.
  • Fleksibilnost: lako je dodati nove uređaje ili izmeniti postojeće.
  • Jednostavniji razvoj: programeri rade sa apstraktnim entitetima i ne moraju da se bave detaljima hardvera.
  • Skalabilnost: podaci mogu da se čuvaju na različitim uređajima, ali sistem i dalje radi na ujednačen način.

Normalizacija podataka

Normalizacija podataka je postupak kojim se podaci u bazi organizuju tako da se redundantnost svede na minimum, a integritet podataka poboljša. U kontekstu apstraktnog sloja podataka normalizacija ima ključnu ulogu u stvaranju jedinstvenog, efikasnog modela podataka koji može da se koristi za rad sa različitim tipovima opreme i izvorima podataka.

Normalizacija podataka deli podatke na logičke tabele i uspostavlja veze između njih kako bi se:

  • uklonili duplirani podaci;
  • pojednostavilo održavanje i ažuriranje podataka;
  • obezbedio integritet podataka;
  • poboljšale performanse upita.

Jedinstveni model podataka sistema doveden je u (treću) Bojs-Kodovu normalnu formu u pogledu atomičnih (skalarnih) vrednosti. Pojedini entiteti modela podataka koriste složene strukture kako bi se optimizovala obrada retkih, nestandardnih atributa.

Prednosti normalizacije

  • Uklanja redundantnost: podaci se čuvaju na jednom mestu, čime se smanjuje redundantnost.
  • Doslednost podataka: lakše je održavati doslednost podataka.
  • Fleksibilnost: strukturu podataka je lako menjati.
  • Performanse: performanse upita se poboljšavaju (u većini slučajeva).

Normalizacija u kontekstu apstraktnog sloja podataka

Normalizacija podataka je važan korak u projektovanju apstraktnog sloja podataka.

Ona omogućava da se:

  • izradi jedinstveni model podataka koji može da se koristi za rad sa različitim tipovima opreme;
  • uklone redundantnost i dupliranje podataka;
  • obezbede integritet i doslednost podataka, bez obzira na njihov izvor;
  • pojednostavi integracija novih uređaja i sistema.

Povezane teme

Poslednje ažuriranje

Da li vam je ova stranica bila korisna?