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_numbervachannel_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.
| Maydon | Tur | Tavsif |
|---|---|---|
id | bigint | Yozuvning yagona identifikatori (asosiy kalit). |
equipment_id | bigint | Jihozga havola (equipment.id). |
seance_id | bigint | Seansga havola (seances.id). |
channel_id | bigint | Kanalga havola (channels.id). |
unit_id | bigint | Oʻlchov birligiga havola (units.id). |
archive_type_id | integer | Arxiv turiga havola (referenceparameters.id). |
event_time | integer | Hodisa vaqti (masalan, vaqt belgisi). |
value | character varying(100) | Kanaldan olingan qiymat. |
created_at | timestamp(6) without time zone | Yozuv yaratilgan vaqt. |
updated_at | timestamp(6) without time zone | Yozuv oxirgi marta yangilangan vaqt. |
Aloqalar:
unit_idtashqi kalitiunitsjadvaliga havola qiladi.archive_type_idtashqi kalitireferenceparametersjadvaliga havola qiladi.equipment_idtashqi kalitiequipmentjadvaliga havola qiladi.channel_idtashqi kalitichannelsjadvaliga havola qiladi.seance_idtashqi kalitiseancesjadvaliga havola qiladi.
units jadvali
Bu jadval kanal maʼlumotlari uchun ishlatiladigan oʻlchov birliklarini saqlaydi.
| Maydon | Tur | Tavsif |
|---|---|---|
id | bigint | Yozuvning yagona identifikatori (asosiy kalit). |
name | character varying(30) | Oʻlchov birligining nomi. |
varname | character varying(30) | Oʻlchov birligi uchun qisqa oʻzgaruvchi nomi. |
description | character varying(100) | Oʻlchov birligining tavsifi. |
conversion_factor | double precision | Oʻlchov birligi uchun oʻtkazish koeffitsiyenti. |
rounding | smallint | Yaxlitlash uchun oʻnli kasr xonalari soni. |
synonyms | character varying[] | Oʻlchov birligi sinonimlari massivi. |
created_at | timestamp(6) without time zone | Yozuv yaratilgan vaqt. |
updated_at | timestamp(6) without time zone | Yozuv oxirgi marta yangilangan vaqt. |
referenceparameters jadvali
Bu jadval arxiv turlari yoki boshqa kvalifikatorlar kabi maʼlumotnoma parametrlarini saqlaydi.
| Maydon | Tur | Tavsif |
|---|---|---|
id | bigint | Yozuvning yagona identifikatori (asosiy kalit). |
name | character varying(30) | Oʻlchov birligining nomi. |
varname | character varying(30) | Oʻlchov birligi uchun qisqa oʻzgaruvchi nomi. |
description | character varying(100) | Oʻlchov birligining tavsifi. |
parent_id | integer | Ota-parametrga havola (iyerarxiya). |
referencemodel_id | integer | Maʼlumotnoma modeliga havola. |
created_at | timestamp(6) without time zone | Yozuv yaratilgan vaqt. |
updated_at | timestamp(6) without time zone | Yozuv oxirgi marta yangilangan vaqt. |
deleted_at | timestamp(6) without time zone | Yozuv oʻchirilgan vaqt (yumshoq oʻchirish). |
Aloqalar:
parent_idtashqi kaliti oʻsha jadvalning oʻziga (referenceparameters.id) havola qiladi va shu orqali iyerarxiyalar tuzish imkonini beradi.
equipment jadvali
| Maydon | Tur | Tavsif |
|---|---|---|
id | bigint | Yozuvning yagona identifikatori (asosiy kalit). |
equipment_type_id | bigint | Jihoz turiga havola. |
serial_number | character varying(25) | Jihozning seriya raqami. |
manufacture_date | timestamp(6) without time zone | Jihozning ishlab chiqarilgan sanasi. |
installation_date | timestamp(6) without time zone | Jihozning oʻrnatilgan sanasi. |
program_version | character varying(100) | Jihozning dasturiy taʼminot versiyasi. |
created_at | timestamp(6) without time zone | Yozuv yaratilgan vaqt. |
updated_at | timestamp(6) without time zone | Yozuv oxirgi marta yangilangan vaqt. |
channels jadvali
Bu jadval jihoz kanallari haqidagi maʼlumotlarni saqlaydi.
| Maydon | Tur | Tavsif |
|---|---|---|
id | bigint | Yozuvning yagona identifikatori (asosiy kalit). |
equipment_type_id | bigint | Jihoz turiga havola (equipment_type.id). |
unit_id | bigint | Oʻlchov birligiga havola (units.id). |
name | character varying(100) | Kanal nomi. |
varname | character varying(20) | Kanal uchun qisqa oʻzgaruvchi nomi. |
created_at | timestamp(6) without time zone | Yozuv yaratilgan vaqt. |
updated_at | timestamp(6) without time zone | Yozuv oxirgi marta yangilangan vaqt. |
Aloqalar:
equipment_type_idtashqi kalitiequipment_typejadvaliga havola qiladi.unit_idtashqi kalitiunitsjadvaliga havola qiladi.
seances jadvali
Bu jadval jihozning aloqa seanslari haqidagi maʼlumotlarni saqlaydi.
| Maydon | Tur | Tavsif |
|---|---|---|
id | bigint | Yozuvning yagona identifikatori (asosiy kalit). |
telemetry_id | bigint | Telemetriyaga havola (telemetry.id). |
event_time | integer | Hodisa vaqti. |
evtid | smallint | Hodisa identifikatori. |
trycnt | smallint | Urinishlar soni. |
tryfl | character varying(12) | Urinish bayrogʻi. |
state | smallint | Seans holati. |
btm | integer | Batareya zaryadi. |
rssi | integer | Signal kuchi (agar ishlatilsa). |
created_at | timestamp(6) without time zone | Yozuv yaratilgan vaqt. |
updated_at | timestamp(6) without time zone | Yozuv oxirgi marta yangilangan vaqt. |
Umumiy tuzilma va aloqalar
Asosiy jadval — channel_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 jadvali — seances, 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_datatuzilmasiga 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:
{
"device_id": "sensor-123",
"timestamp": 1739950861,
"value": 42.5
}Adapter maʼlumotlarni channel_data tuzilmasiga aylantiradi:
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:
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3Javob:
[
{
"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
Ushbu sahifa foydali boʻldimi?
Fikr-mulohazangiz uchun rahmat!