Abstrakt maʼlumotlar qatlami

Abstrakt maʼlumotlar qatlami, yagona tizim maʼlumotlar modeli, jihozlarni abstraktlash va ilovalarni jismoniy saqlashdan ajratuvchi maʼlumotlarni normallashtirish.

Abstrakt maʼlumotlar qatlami maʼlumotlarning jismoniy saqlanishi va undan foydalanadigan ilovalar oʻrtasida joylashadi. U jismoniy amalga oshirilishi va apparatga oid xususiyatlardan mavhumlashtiradi hamda maʼlumotlar bilan ishlash uchun yagona interfeysni taqdim etadi. U quyidagilarni beradi:

  • Apparatdan mustaqillik: Maʼlumotlar turli qurilmalarda (serverlar, bulut, IoT qurilmalari) saqlanadi, biroq ilova ular bilan yagona interfeys orqali oʻzaro aloqada boʻladi.
  • Soddalashtirilgan ishlab chiqish: Ishlab chiquvchilar jismoniy saqlash tafsilotlari haqida oʻylamasdan abstrakt obyektlar bilan ishlaydi.
  • Moslashuvchanlik: Maʼlumotlarning jismoniy tuzilmasidagi oʻzgarishlar (masalan, bulutga koʻchirish) ilovalarga taʼsir qilmaydi.

Yagona maʼlumotlar modeli

Tizim turli xil jihoz turlariga moslashtirilgan yagona maʼlumotlar modelidan foydalanadi va ularning manbai yoki jihoz turidan qatʼi nazar, ular bilan bir xil tarzda ishlash imkonini beradi. U umumiy maʼlumotlar tuzilmalarini, bir xil qayta ishlash qoidalarini hamda barcha tizim va quyi tizimlar boʻylab maʼlumotlarning semantik izchilligini oʻz ichiga oladi.

Masalan, yagona tizim maʼlumotlar modeli quyidagilarni oʻz ichiga oladi:

  • Obyektlar: Jihozlar, kanallar, seanslar, oʻlchov birliklari va maʼlumotnoma parametrlari.
  • Aloqalar: Jihozda kanallar boʻladi, kanallar maʼlumotlar bilan, maʼlumotlar esa seanslar bilan bogʻlangan.
  • Atributlar: Har bir obyekt uchun atributlar belgilanadi (masalan, equipment.serial_number va channel_data.value).

Yagona tizim maʼlumotlar modelining tuzilmasi

Yagona tizim maʼlumotlar modeli jihozlar, kanallar, seanslar va oʻlchovlarga oid maʼlumotlarni saqlash va boshqarish uchun moʻljallangan tuzilmadir. Har bir jadval va uning vazifasini, shuningdek ular oʻrtasidagi aloqalarni koʻrib chiqamiz.

channel_data jadvali

Bu jadval maʼlum seanslar doirasida jihoz kanallaridan olingan maʼlumotlarni saqlaydi.

MaydonTurTavsif
idbigintYozuvning yagona identifikatori (asosiy kalit).
equipment_idbigintJihozga havola (equipment.id).
seance_idbigintSeansga havola (seances.id).
channel_idbigintKanalga havola (channels.id).
unit_idbigintOʻlchov birligiga havola (units.id).
archive_type_idintegerArxiv turiga havola (referenceparameters.id).
event_timeintegerHodisa vaqti (masalan, vaqt belgisi).
valuecharacter varying(100)Kanaldan olingan qiymat.
created_attimestamp(6) without time zoneYozuv yaratilgan vaqt.
updated_attimestamp(6) without time zoneYozuv oxirgi marta yangilangan vaqt.

Aloqalar:

  • unit_id tashqi kaliti units jadvaliga havola qiladi.
  • archive_type_id tashqi kaliti referenceparameters jadvaliga havola qiladi.
  • equipment_id tashqi kaliti equipment jadvaliga havola qiladi.
  • channel_id tashqi kaliti channels jadvaliga havola qiladi.
  • seance_id tashqi kaliti seances jadvaliga havola qiladi.

units jadvali

Bu jadval kanal maʼlumotlari uchun ishlatiladigan oʻlchov birliklarini saqlaydi.

MaydonTurTavsif
idbigintYozuvning yagona identifikatori (asosiy kalit).
namecharacter varying(30)Oʻlchov birligining nomi.
varnamecharacter varying(30)Oʻlchov birligi uchun qisqa oʻzgaruvchi nomi.
descriptioncharacter varying(100)Oʻlchov birligining tavsifi.
conversion_factordouble precisionOʻlchov birligi uchun oʻtkazish koeffitsiyenti.
roundingsmallintYaxlitlash uchun oʻnli kasr xonalari soni.
synonymscharacter varying[]Oʻlchov birligi sinonimlari massivi.
created_attimestamp(6) without time zoneYozuv yaratilgan vaqt.
updated_attimestamp(6) without time zoneYozuv oxirgi marta yangilangan vaqt.

referenceparameters jadvali

Bu jadval arxiv turlari yoki boshqa kvalifikatorlar kabi maʼlumotnoma parametrlarini saqlaydi.

MaydonTurTavsif
idbigintYozuvning yagona identifikatori (asosiy kalit).
namecharacter varying(30)Oʻlchov birligining nomi.
varnamecharacter varying(30)Oʻlchov birligi uchun qisqa oʻzgaruvchi nomi.
descriptioncharacter varying(100)Oʻlchov birligining tavsifi.
parent_idintegerOta-parametrga havola (iyerarxiya).
referencemodel_idintegerMaʼlumotnoma modeliga havola.
created_attimestamp(6) without time zoneYozuv yaratilgan vaqt.
updated_attimestamp(6) without time zoneYozuv oxirgi marta yangilangan vaqt.
deleted_attimestamp(6) without time zoneYozuv oʻchirilgan vaqt (yumshoq oʻchirish).

Aloqalar:

  • parent_id tashqi kaliti oʻsha jadvalning oʻziga (referenceparameters.id) havola qiladi va shu orqali iyerarxiyalar tuzish imkonini beradi.

equipment jadvali

MaydonTurTavsif
idbigintYozuvning yagona identifikatori (asosiy kalit).
equipment_type_idbigintJihoz turiga havola.
serial_numbercharacter varying(25)Jihozning seriya raqami.
manufacture_datetimestamp(6) without time zoneJihozning ishlab chiqarilgan sanasi.
installation_datetimestamp(6) without time zoneJihozning oʻrnatilgan sanasi.
program_versioncharacter varying(100)Jihozning dasturiy taʼminot versiyasi.
created_attimestamp(6) without time zoneYozuv yaratilgan vaqt.
updated_attimestamp(6) without time zoneYozuv oxirgi marta yangilangan vaqt.

channels jadvali

Bu jadval jihoz kanallari haqidagi maʼlumotlarni saqlaydi.

MaydonTurTavsif
idbigintYozuvning yagona identifikatori (asosiy kalit).
equipment_type_idbigintJihoz turiga havola (equipment_type.id).
unit_idbigintOʻlchov birligiga havola (units.id).
namecharacter varying(100)Kanal nomi.
varnamecharacter varying(20)Kanal uchun qisqa oʻzgaruvchi nomi.
created_attimestamp(6) without time zoneYozuv yaratilgan vaqt.
updated_attimestamp(6) without time zoneYozuv oxirgi marta yangilangan vaqt.

Aloqalar:

  • equipment_type_id tashqi kaliti equipment_type jadvaliga havola qiladi.
  • unit_id tashqi kaliti units jadvaliga havola qiladi.

seances jadvali

Bu jadval jihozning aloqa seanslari haqidagi maʼlumotlarni saqlaydi.

MaydonTurTavsif
idbigintYozuvning yagona identifikatori (asosiy kalit).
telemetry_idbigintTelemetriyaga havola (telemetry.id).
event_timeintegerHodisa vaqti.
evtidsmallintHodisa identifikatori.
trycntsmallintUrinishlar soni.
tryflcharacter varying(12)Urinish bayrogʻi.
statesmallintSeans holati.
btmintegerBatareya zaryadi.
rssiintegerSignal kuchi (agar ishlatilsa).
created_attimestamp(6) without time zoneYozuv yaratilgan vaqt.
updated_attimestamp(6) without time zoneYozuv oxirgi marta yangilangan vaqt.

Umumiy tuzilma va aloqalar

Asosiy jadvalchannel_data, u kanal maʼlumotlarini jihozlar, seanslar va oʻlchov birliklari bilan bogʻlaydi.

Aloqa jadvallari:

  • units — oʻlchov birliklari.
  • referenceparameters — arxiv turlari va boshqa kvalifikatorlar.

Jihoz jadvallari:

  • equipment — jihozlar haqidagi maʼlumot.
  • channels — jihoz kanallari.

Seanslar jadvaliseances, u aloqa seanslari haqidagi maʼlumotlarni saqlaydi.

Foydalanish misoli:

  • Kanal maʼlumotlari (channel_data) maʼlum seanslar (seances) doirasida jihozdan (equipment) keladi.
  • Har bir kanalning (channels) oʻz oʻlchov birligi (units) boʻladi.
  • Arxiv turi (referenceparameters) maʼlumotlar qanday saqlanishi yoki qayta ishlanishi kerakligini belgilaydi.

Yagona modelning afzalliklari

Bu maʼlumotlar modeli turli jihozlardan kelgan maʼlumotlarni saqlash va tahlil qilish uchun moslashuvchanlik va miqyoslanuvchanlikni taʼminlaydi.

Yagona maʼlumotlar modelining baʼzi afzalliklari:

  • Izchillik: Maʼlumotlar barcha tizimlar boʻylab bir xil tuzilma va semantikaga ega.
  • Miqyoslanuvchanlik: Yangi maʼlumot manbalari yoki jihoz turlarini qoʻshish oson.
  • Maʼlumotlarni himoyalash: Yagona autentifikatsiya, avtorizatsiya va shifrlash mexanizmlari.
  • Soddalashtirilgan tahlil: Maʼlumotlarni yagona vositalar bilan tahlil qilish mumkin.

Jihozlarni abstraktlash

Jihozlarni abstraktlash — bu maʼlumotlar bilan ishlash mantigʻini jihozning jismoniy xususiyatlaridan ajratuvchi tizim dizaynining muhim tamoyilidir. Bu ayniqsa har xil qurilmalardan foydalanadigan tizimlarda muhimdir.

Jihozlarni abstraktlash tizim maʼlumotlarni mantiqiy darajada, yaʼni maʼlumotlar saqlanadigan yoki qayta ishlanadigan jismoniy qurilmalardan mustaqil ravishda boshqarishini bildiradi. Bunga quyidagilar orqali erishiladi:

  • Interfeyslarni unifikatsiyalash: Jihozdan qatʼi nazar, maʼlumotlarga kirishning yagona usuli.
  • Amalga oshirish tafsilotlarini yashirish: Maʼlumotlarning jismoniy joylashuvi, uzatish protokollari va boshqa texnik jihatlar ilovalardan yashiriladi.
  • Adapterlar: Maʼlumotlarni jihozga xos formatdan yagona formatga oʻtkazish.

Jihozlarni abstraktlashni amalga oshirish

Quyidagi misol ushbu yondashuv bizning tizimimizda qanday amalga oshirilishini koʻrsatadi. U maʼlumotlarning IoT qurilmasidan adapter orqali yagona maʼlumotlar modeliga oʻtishini va API orqali chiqishini kuzatadi.

Gaz sarfi maʼlumotlarini yuboradigan IoT qurilmasini koʻrib chiqaylik. Amalga oshirilgan algoritmlar bizga quyidagilarga imkon beradi:

  • Maʼlumotlarni qurilmadan adapter orqali olish.
  • Uni channel_data tuzilmasiga aylantirish.
  • Uni maʼlumotlar bazasida saqlash.
  • Maʼlumotlarga API orqali kirishni taʼminlash.

Har bir jihoz turi uchun qurilmaga xos protokollarni qayta ishlaydigan va maʼlumotlarni yagona formatga oʻtkazadigan adapterlar yaratiladi.

Misol: maʼlumotlarni oʻzgartirish

IoT qurilmasi uchun maʼlumotlar JSON formatida kelishi mumkin:

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

Adapter maʼlumotlarni channel_data tuzilmasiga aylantiradi:

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);

Maʼlumotlar soʻrovi:

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

Javob:

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

Jihozlarni abstraktlashning afzalliklari

  • Apparatdan mustaqillik: Ilovalar maʼlumotlar jismonan qayerda joylashganini bilmasdan ular bilan ishlaydi.
  • Moslashuvchanlik: Yangi qurilmalarni oson qoʻshish yoki mavjudlarini oʻzgartirish.
  • Soddalashtirilgan ishlab chiqish: Ishlab chiquvchilar apparat tafsilotlari haqida oʻylamasdan abstrakt obyektlar bilan ishlaydi.
  • Miqyoslanuvchanlik: Maʼlumotlar turli qurilmalarda saqlanishi mumkin, biroq tizim bir xil tarzda ishlashda davom etadi.

Maʼlumotlarni normallashtirish

Maʼlumotlarni normallashtirish — bu maʼlumotlar bazasidagi maʼlumotlarni ortiqchalikni eng kam darajaga keltiradigan va maʼlumotlar yaxlitligini yaxshilaydigan tarzda tartibga solish jarayonidir. Abstrakt maʼlumotlar qatlami kontekstida normallashtirish turli xil jihoz turlari va maʼlumot manbalarini qayta ishlashda foydalanish mumkin boʻlgan yagona, samarali maʼlumotlar modelini yaratishda muhim rol oʻynaydi.

Maʼlumotlarni normallashtirish maʼlumotlarni mantiqiy jadvallarga ajratadi va ular oʻrtasida aloqalar oʻrnatadi, buning maqsadi:

  • Takrorlanadigan maʼlumotlarni bartaraf etish.
  • Maʼlumotlarni saqlash va yangilashni soddalashtirish.
  • Maʼlumotlar yaxlitligini taʼminlash.
  • Soʻrovlar unumdorligini oshirish.

Tizimning yagona maʼlumotlar modeli atomar (skalyar) qiymatlar boʻyicha (uchinchi) Boyce-Codd normal shakliga keltirilgan. Baʼzi maʼlumotlar modeli obyektlari kam uchraydigan, nostandart atributlarni qayta ishlashni optimallashtirish uchun tarkibiy tuzilmalardan foydalanadi.

Normallashtirishning afzalliklari

  • Ortiqchalikni yoʻqotadi: Maʼlumotlar bir joyda saqlanadi va bu ortiqchalikni kamaytiradi.
  • Maʼlumotlar izchilligi: Maʼlumotlar izchilligini taʼminlash soddalashadi.
  • Moslashuvchanlik: Maʼlumotlar tuzilmasiga oʻzgartirishlar kiritish oson.
  • Unumdorlik: Soʻrovlar unumdorligi yaxshilanadi (aksariyat hollarda).

Abstrakt maʼlumotlar qatlami kontekstida normallashtirish

Maʼlumotlarni normallashtirish abstrakt maʼlumotlar qatlamini loyihalashdagi muhim qadamdir.

U sizga quyidagilarga imkon beradi:

  • Turli xil jihoz turlarini qayta ishlashda foydalanish mumkin boʻlgan yagona maʼlumotlar modelini yaratish.
  • Maʼlumotlarning ortiqchaligi va takrorlanishini bartaraf etish.
  • Manbasidan qatʼi nazar, maʼlumotlar yaxlitligi va izchilligini taʼminlash.
  • Yangi qurilmalar va tizimlarni integratsiya qilishni soddalashtirish.

Aloqador mavzular

Oxirgi yangilanish

Ushbu sahifa foydali boʻldimi?