Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

2-bob: Ma’lumotlar Modellari, Formatlari va Sifati

1-bobda siz ma’lumotlar muhandisligi shunchaki fayllarni bir joydan ikkinchi joyga ko’chirish emasligini o’rgandingiz. Bu ma’lumotlar operatsion tizimlardan tahlil, avtomatlashtirish va AI’ga o’tayotganda ma’noni saqlab qoladigan ishonchli ma’lumotlar mahsulotlarini (data products) qurish amaliyotidir. Ushbu bob ushbu fikrlash tarzini birinchi aniq dizayn mahoratiga aylantiradi: ma’lumotlar qanday ifodalanishi, saqlanishi, modellashtirilishi va sinovdan o’tkazilishi kerakligini hal qilish.

Ushbu bobning amaliy natijasi kichik, ammo real TuranMart ma’lumotlar dizayni to’plamidir. Siz elektron tijorat buyurtma ma’lumotlarini tekshirasiz, operatsion mohiyat-munosabat modelini (entity-relationship model) loyihalashtirasiz, xuddi shu biznes jarayonini tahlil uchun o’lchamli modelga (dimensional model) aylantirasiz va CSV hamda JSON manba fayllarini sifat tekshiruvlarini qo’llagan holda Parquet formatiga o’zgartiradigan daftarni ishga tushirasiz. Maqsad har bir mumkin bo’lgan fayl formati yoki modellashtirish texnikasini yodlash emas. Maqsad professional ma’lumotlar muhandislari biznes voqeligini qanday qilib ishonish, so’rov qilish va rivojlantirish oson bo’lgan tuzilmalarga aylantirishini o’rganishdir.

Ma'lumotlar turlari, modellashtirish, saqlash formatlari, sifat tekshiruvlari va amaliy laboratoriya artefaktini qamrab oluvchi bobning umumiy ko'rinishi.

Figure 1:Ma’lumotlar turlari, modellashtirish, saqlash formatlari, sifat tekshiruvlari va amaliy laboratoriya artefaktini qamrab oluvchi bobning umumiy ko’rinishi.

Kirish stsenariysi: TuranMart’ning Daromad Muammosi

TuranMart’ning marketing jamoasi mintaqaviy kampaniyani ishga tushirdi. Veb-sayt minglab yangi buyurtmalarni ko’rsatmoqda, to’lov provayderi boshqacha daromad raqamini xabar qilmoqda va logistika boshqaruv paneli ushbu buyurtmalarning ko’pchiligi jo’natilmaganini aytmoqda. Moliya jamoasi mintaqa, mahsulot kategoriyasi va kampaniya bo’yicha ishonchli kunlik daromad jadvalini so’raydi. Marketing konversiya ko’rsatkichlarini so’raydi. Logistika qaysi shaharlar yetkazib berish kechikishlarini keltirib chiqarayotganini so’raydi. Bosh direktor (CEO) oddiy savol beradi: “Kecha nima bo’ldi?”

Bu savol qiyinlashadi, chunki har bir manba tizimi biznesni turlicha tavsiflaydi. To’lovni rasmiylashtirish ma’lumotlar bazasi customers, orders, order_items, payments va shipments kabi normallashtirilgan jadvallarni saqlaydi. Veb-ilova har bir hodisa ichma-ich kampaniya metama’lumotlarini o’z ichiga olishi mumkin bo’lgan JSON hodisalarini chiqaradi. Moliya jamoasi ba’zan hamkorlardan CSV eksportlarini oladi. Tahlil jamoasi sana, mintaqa, mijoz segmenti, mahsulot kategoriyasi va kampaniya bo’yicha so’rov qilinishi mumkin bo’lgan tezkor jadvalni xohlaydi. Shuning uchun bitta biznes hodisasi o’z ma’nosini yo’qotmasdan bir nechta o’zgartirishlardan o’tishi kerak.

Manfaatdor tomonOg’riqli nuqtaKutilayotgan natijaMa’lumotlar muhandisligi dizayn savoli
Moliya tahlilchisiDaromad to’lovni rasmiylashtirish, to’lov va elektron jadval eksportlari o’rtasida farq qiladi.Mintaqa va valyuta bo’yicha audit qilingan kunlik daromad.To’lov holati, qaytarmalar va kelishuv uchun qaysi manba ishonchli?
Marketing menejeriKampaniya samaradorligi hodisa talqiniga qarab o’zgaradi.Kampaniya, kanal va mahsulot kategoriyasi bo’yicha konversiya ko’rsatkichlari.Klik oqimi hodisalari buyurtmalar va mijozlarga qanday ulanadi?
Logistika operatoriKechikkan jo’natmalar faqat mijozlar shikoyat qilgandan keyin ko’rinadi.Shahar va tashuvchi bo’yicha jo’natma kechikish signallari.Jo’natmalar buyurtmalar, manzillar, omborlar va xizmat ko’rsatish darajasi maqsadlariga qanday bog’lanadi?
Ma’lumotlar tahlilchisiBoshqaruv panellari takroriy birlashtirishlar (joins) va takroriy ko’rsatkich mantiqini talab qiladi.O’z-o’ziga xizmat ko’rsatish tahlili uchun so’rov qilinadigan, hujjatlashtirilgan jadvallar.Tahliliy model normallashtirilgan, o’lchamli yoki ikkalasi ham bo’lishi kerakmi?
Platforma muhandisiFayllar turli shakllarda keladi va ularni izchil tasdiqlash qiyin.Tipli, sinab ko’riladigan saqlashga takrorlanadigan konvertatsiya.Qaysi formatlar sxemani saqlaydi, xarajatni kamaytiradi va tasdiqlashni qo’llab-quvvatlaydi?

Asosiy saboq shundaki, modellashtirish, format tanlash va sifat tekshiruvlari bitta dizayn suhbatidir. Noto’g’ri sxemaga ega Parquet fayli yaxshi ma’lumotlar mahsuloti emas. Tasdiqlanmagan manba yozuvlaridan qurilgan chiroyli yulduz sxemasi ishonchli emas. Aniq tahliliy natijalarsiz normallashtirilgan ma’lumotlar bazasi har bir hisobot savoli uchun ishqalanish yaratadi. Ushbu bob sizga ushbu tanlovlarni ongli ravishda bog’lashni o’rgatadi.

O’quv maqsadlari

Ushbu bobning oxiriga kelib, siz tuzilgan (structured), yarim tuzilgan (semi-structured) va tuzilmagan ma’lumotlar (unstructured data) o’rtasidagi farqni tushuntira olishingiz va har biri uchun mos formatlarni tanlay olishingiz kerak. Siz operatsion yaxlitlik uchun normallashtirilgan elektron tijorat mohiyat-munosabat modelini va tahliliy ishlash uchun o’lchamli modelni loyihalashtira olishingiz kerak. Shuningdek, siz CSV va JSON ma’lumotlarini o’qiydigan, asosiy sifat qoidalarini tasdiqlaydigan, Parquet yozadigan va natijani DuckDB bilan so’rov qiladigan kichik konvertatsiya ish oqimini ishga tushira olishingiz kerak.

MaqsadNima qila olishingiz kerakAmaliy laboratoriyadagi dalil
Ma’lumotlarni tuzilishi bo’yicha tasniflashRelyatsion jadvallar, API yuklari, jurnallar, hujjatlar va mediani ajratib turadigan manba inventari.Nima uchun orders.csv va events.jsonl turlicha ishlashni talab qilishining qisqacha tushuntirishi.
Fayl formatlarini tanlashQabul qilish, almashish, oqimli qayta ishlash va tahlil qilish uchun CSV, JSON, Avro, Parquet va ORC’ning asosli taqqoslanishi.Xom TuranMart kiritishlaridan yaratilgan Parquet natijalari.
Operatsion ma’lumotlarni modellashtirishElektron tijorat buyurtmalari uchun birlamchi kalitlar, tashqi kalitlar, kardinalliklar (cardinalities) va yaxlitlik cheklovlari bilan ERD.Operatsion modelga mos keladigan SQL DDL.
Tahliliy ma’lumotlarni modellashtirishDaromad tahlili uchun faktlar, o’lchamlar, don (grain) va o’lchovlar (measures) bilan yulduz sxemasi.Sana va mintaqa bo’yicha daromad so’rovi.
Sifat tekshiruvlarini qo’llashSxema to’g’riligi, majburiy maydonlar, yagonalik, referensial yaxlitlik (referential integrity) va kelishuv jamilari uchun testlar.O’tgan sifat hisoboti va tasdiqlash skripti.
Murosalar haqida tushuntirishNima uchun bitta biznes jarayoni turli qatlamlarda turli modellar va formatlarga muhtoj bo’lishi mumkinligi haqida aniq dalil.Mashqlar va ko’rib chiqish savollariga yozma javoblar.

Konseptual asos: Ma’lumotlar ko’lamdan oldin shaklga ega

Yangi boshlanuvchilarning keng tarqalgan xatosi shakl haqida o’ylashdan oldin ko’lam haqida o’ylashdir. Katta ma’lumotlar tizimlari kengayuvchan saqlash va qayta ishlash dvigatellariga muhtoj, ammo birinchi dizayn savoli ancha asosiy: bu qanday ma’lumot va u allaqachon qanchalik tuzilishga ega? Ma’lumotlar muhandislari odatda uchta keng toifa bilan ishlaydi.

Tuzilgan ma’lumotlar oldindan belgilangan sxemaga ega. Relyatsion jadval, elektron jadval yoki boshqariladigan CSV eksporti odatda qatorlar va ustunlarni o’z ichiga oladi, bu yerda har bir ustun kutilgan ma’no va turga ega. Tuzilgan ma’lumotlarni birlamchi kalitlar (primary keys), tashqi kalitlar (foreign keys), yagonalik qoidalari va tur tekshiruvlari kabi cheklovlar bilan tasdiqlash eng oson. Shuningdek, u SQL tahlili uchun tabiiy boshlang’ich nuqtadir.

Yarim tuzilgan ma’lumotlar ichki tashkilotga ega, lekin har doim ham qat’iy jadvalga mos kelmaydi. JSON va XML hujjatlari ko’pincha ichma-ich ob’ektlar, ixtiyoriy maydonlar, massivlar va o’zgaruvchan atributlarni o’z ichiga oladi. Bu yarim tuzilgan ma’lumotlarni API’lar, jurnallar, klik oqimi hodisalari va hujjat ma’lumotlar bazalari uchun foydali qiladi. Moslashuvchanlik qimmatli, ammo u ko’proq mas’uliyatni ma’lumotlar muhandisiga yuklaydi: ichma-ich maydonlar talqin qilinishi, ixtiyoriy maydonlar ko’rib chiqilishi va sxema siljishi aniqlanishi kerak.

Tuzilmagan ma’lumotlar aniq qator-ustun tuzilishiga ega emas. Mahsulot rasmlari, qo’llab-quvvatlash qo’ng’irog’i audiosi, PDF shartnomalari, chat transkriptlari va uzun hujjatlar shu yerga tegishli. Zamonaviy ma’lumotlar platformalarida tuzilmagan ma’lumotlar ko’pincha metama’lumotlarni ajratib olish, matnni tahlil qilish, vektor ifoda (embedding) yaratish, nutqni aniqlash yoki kompyuter ko’rishdan keyin foydali bo’ladi. AI va ML ma’lumotlar muhandisligi bo’yicha keyingi boblar ushbu nuqtaga qaytadi, chunki qidirish bilan kengaytirilgan generatsiya va semantik qidiruv tuzilmagan tarkibni to’g’ri tayyorlashga ko’p jihatdan bog’liq.

Ma’lumot turiTuranMart misoliOdatiy saqlashMuhandislik xavfi
Tuzilganorders, payments, customers jadvallariPostgreSQL, MySQL, ombor jadvallari, Parquet to’plamlariNoto’g’ri cheklovlar yoki mos kelmaydigan biznes ta’riflari.
Yarim tuzilganVeb hodisalar, API javoblari, mahsulot atributlariJSON Lines, hujjat ma’lumotlar bazalari, xom ma’lumotlar ko’li zonalariSxema siljishi, yetishmayotgan ixtiyoriy maydonlar, chuqur ichma-ich atributlar.
TuzilmaganSharhlar, qo’llab-quvvatlash chiptalari, rasmlar, hisob-fakturalarOb’ektli saqlash, hujjat do’konlari, qayta ishlashdan keyin vektor indekslariO’lchash qiyin bo’lgan sifat, maxfiylik fosh bo’lishi, qimmat ajratib olish.

Amaliy qoida oddiy: xom dalillarni sodiqlik bilan saqlang, so’ngra foydalanish holatlari uchun kuratorlik qilingan tuzilmalarni yarating. Ma’lumotlar ko’li asl JSON hodisasini saqlab qolishi mumkin, chunki u nosozliklarni bartaraf etish uchun foydali. Ombor toza fact_order_line jadvalini ko’rsatishi mumkin, chunki tahlilchilar barqaror daromad ko’rsatkichlariga muhtoj. Agar har bir qatlam aniq maqsadga ega bo’lsa, ikkalasi ham to’g’ri bo’lishi mumkin.

2.1 Fayl formatlari - bu muhandislik shartnomalari

Fayl formati faqat saqlash tafsiloti emas. Bu ishlab chiqaruvchilar, quvurlar, so’rov dvigatellari va quyi oqim foydalanuvchilari o’rtasidagi shartnomadir. Format sxemalar qanday saqlanishi, ma’lumotlar qanchalik samarali skanerlanishi, siqish yaxshi ishlashi va nosozliklarni bartaraf etish qanchalik qiyinligiga ta’sir qiladi.

CSV mashhur, chunki u oddiy va universaldir. Deyarli har qanday vosita uni ocha oladi. Bu afzallik uning zaif tomoni hamdir. CSV sxema ma’lumotlarini ishonchli tarzda tashimaydi, shuning uchun turlar xulosa qilinishi yoki tashqi tomondan belgilanishi kerak. Raqamli bo’lib ko’rinadigan ustun bo’sh satrlar, boshlovchi nollar, mahalliy valyuta ajratgichlari yoki matn kodlarini o’z ichiga olishi mumkin. Shuning uchun CSV kichik eksportlar va o’zaro ishlash uchun foydalidir, ammo u tahliliy ma’lumotlar to’plamlari uchun mo’rt uzoq muddatli saqlash formatidir.

JSON ko’plab API’lar va veb-ilovalarning tabiiy tilidir. U ichma-ich tuzilmalarni CSV’dan ko’ra yaxshiroq ifodalaydi va odamlar uchun tekshirish oson. Biroq, JSON ko’p so’zli, chunki maydon nomlari har bir yozuvda takrorlanadi. Katta JSON to’plamlari odatda JSON Lines sifatida saqlanadi, bu yerda har bir qator bitta JSON ob’ekti bo’ladi, chunki bu oqimli va qatorma-qator qayta ishlashni osonlashtiradi. JSON xom qabul qilish va hodisalarni ushlash uchun ajoyib, ammo tahliliy tizimlar odatda uni tipli jadval formatiga aylantiradi.

Apache Avro - bu sxemalar atrofida ishlab chiqilgan ixcham ikkilik seriyalashtirish formati. Avro hujjatlari Avro’ni boy ma’lumotlar tuzilmalari, ixcham ikkilik ma’lumotlar formati, konteyner fayllari, masofaviy protsedura chaqiruvlari va sxemaga asoslangan qayta ishlashni ta’minlaydigan ma’lumotlarni seriyalashtirish tizimi sifatida tavsiflaydi.[1] Avro oqimli quvurlarda keng tarqalgan, chunki hodisalar sxemalarni tashishi yoki ularga havola qilishi mumkin, va ishlab chiqaruvchilar hamda iste’molchilar boshqariladigan tarzda rivojlanishi mumkin.

Apache Parquet - bu tahliliy ish yuklari uchun mo’ljallangan ustunli fayl formati. Apache Parquet loyihasi ommaviy fayl formati spetsifikatsiyasini taqdim etadi va DuckDB Parquet fayllarini yuklash va qayta ishlash samarali bo’lgan siqilgan ustunli fayllar sifatida tavsiflaydi.[2] [3] Ustunli saqlash muhim, chunki tahliliy so’rovlar ko’pincha ko’plab qatorlardan bir nechta ustunlarni o’qiydi. Agar so’rovga faqat order_date, region va gross_revenue kerak bo’lsa, ustunli fayl mijoz elektron pochtasi yoki jo’natmani kuzatish raqami kabi aloqador bo’lmagan ustunlarni skanerlashdan qochishi mumkin. DuckDB shuningdek Parquet fayllari uchun o’qish, yozish, sxemani tekshirish, filtrni pastga surish (predicate pushdown) va proyeksiyani pastga surishni qo’llab-quvvatlaydi.[3]

ORC - bu Hadoop va Hive ekotizimining qismlarida kuchli bo’lgan yana bir ustunli format. Yangi ochiq manbali ko’l-ombor (lakehouse) loyihalarida Parquet ko’pincha keng tarqalgan, chunki u Spark, DuckDB, Trino, pandas, Polars, Delta Lake, Iceberg va ko’plab bulutli so’rov dvigatellari bo’ylab keng qo’llab-quvvatlanadi. Muhim tamoyil bitta format abadiy g’alaba qozonishida emas. Tamoyil formatni ish yuki bilan moslashtirishdir.

FormatEng yaxshi foydalanishKuchli tomoniZaif tomoniOdatiy qatlam
CSVKichik eksportlar va insoniy almashinuvUniversal va tekshirish osonZaif sxema va mo’rt tahlil qilishXom almashinuv, maxsus eksport
JSON / JSON LinesAPI’lar, jurnallar, hodisalar, ichma-ich yuklarMoslashuvchan va ifodaliKo’p so’zli va tahlil uchun sekinroqXom bronza qatlami
AvroOqimli hodisalar va sxema evolyutsiyasiSxema yordami bilan ixcham ikkilik yozuvlarMaxsus SQL tahlili uchun kamroq qulayQabul qilish va hodisa quvurlari
ParquetTahliliy ma’lumotlar ko’llari va ko’l-omborlarUstunli o’qishlar, siqish, o’rnatilgan sxemaInson o’qiy olmaydiKumush va oltin tahliliy qatlamlar
ORCHive’ga yo’naltirilgan tahlilUstunli ishlash va siqishBa’zi ekotizimlardan tashqarida kamroq universalOmbor va Hadoop tahlili

Dizayn qoidasi: Odamlar kichik fayllarni tekshirishi yoki almashishi kerak bo’lganda inson o’qiy oladigan formatlardan foydalaning. Mashinalar katta yoki takrorlanadigan ma’lumotlar to’plamlarini ishonchli tarzda qayta ishlashi kerak bo’lganda sxemadan xabardor ikkilik formatlardan foydalaning.

2.2 Qatorga yo’naltirilgan va Ustunga yo’naltirilgan fikrlash

Qatorga yo’naltirilgan (row-oriented storage) va ustunga yo’naltirilgan saqlash (columnar storage) o’rtasidagi farq ma’lumotlar muhandisligidagi eng foydali aqliy modellardan biridir. Qatorga yo’naltirilgan saqlashda bitta yozuv uchun qiymatlar birgalikda saqlanadi. Ilova bitta mijoz hisobi yoki bitta buyurtma kabi to’liq biznes ob’ektini o’qiganda yoki yangilaganda bu samarali bo’ladi. Operatsion ma’lumotlar bazalari odatda ushbu namunani afzal ko’radi, chunki tranzaksiyalar kam sonli to’liq yozuvlarga tegadi.

Ustunga yo’naltirilgan saqlashda bir xil ustundagi qiymatlar birgalikda saqlanadi. Tahliliy so’rov ko’plab qatorlarni, lekin faqat bir nechta ustunlarni skanerlaganda bu samarali bo’ladi. Ustunga yo’naltirilgan tartiblar ham yaxshi siqiladi, chunki qo’shni qiymatlar ko’pincha bir xil tur va o’xshash naqshlarni baham ko’radi. Masalan, region qiymatlarini o’z ichiga olgan ustun bir xil bir nechta shahar yoki mintaqa nomlarini ko’p marta takrorlashi mumkin.

Ish yukiAsosiy savolAfzal ko’rilgan tartibMisol so’rov
OLTP“Siz hozir ushbu buyurtmani xavfsiz yarata yoki yangilay olasizmi?”Indekslar va cheklovlar bilan qatorga yo’naltirilgan jadvallarBitta tranzaksiyada buyurtma va uning elementlarini kiritish.
OLAP“O’tgan oyda kampaniya va mintaqa bo’yicha daromad qancha edi?”Ustunga yo’naltirilgan fayllar yoki tahliliy jadvallarMillionlab qatorlar bo’ylab sana, mintaqa, kampaniya va daromad ustunlarini skanerlash.
Oqimli“Har bir hodisa xavfsiz tarzda seriyalashtirilishi va iste’mol qilinishi mumkinmi?”Sxema nazorati bilan yozuvga yo’naltirilgan hodisa formatiKafka’ga bitta OrderPlaced hodisasini nashr qilish.
Ma’lumotlar ilmi“Belgilarni qayta-qayta va takrorlanadigan tarzda yuklash mumkinmi?”Metama’lumotlarga ega ustunli ma’lumotlar to’plamlariModelni o’qitish uchun tanlangan belgi ustunlarini yuklash.

Professional platforma ko’pincha bir vaqtning o’zida bir nechta tartiblardan foydalanadi. TuranMart buyurtma tranzaksiyalari uchun PostgreSQL, veb hodisalar uchun JSON, oqimli hodisalar uchun Avro, ko’l-ombor uchun Parquet va BI uchun o’lchamli sxemadan foydalanishi mumkin. Bu mos kelmaslik emas; bu maqsadli ixtisoslashuv.

2.3 Operatsion modellashtirish: Mohiyat-munosabat ko’rinishi

Operatsion tizimlar yaxlitlikka muhtoj. Mijoz buyurtma berganda, tizim buyurtma haqiqiy mijozga tegishli ekanligini, har bir buyurtma elementi haqiqiy mahsulotga ishora qilishini, to’lov holati izchil qayd etilishini va jo’natma yangilanishlari qarama-qarshi holatlarni yaratmasligini ta’minlashi kerak. Bu mohiyat-munosabat modellashtirish dunyosi.

Mohiyat o’z shaxsiyatiga loyiq bo’lgan biznes ob’ekti yoki tushunchasidir. Munosabat mohiyatlar qanday bog’lanishini tasvirlaydi. Kardinallik munosabatda qancha yozuv ishtirok etishi mumkinligini tasvirlaydi. TuranMart’da bitta mijoz ko’p buyurtma berishi mumkin, bitta buyurtma ko’p buyurtma elementlarini o’z ichiga olishi mumkin, bitta mahsulot ko’p buyurtma elementlarida paydo bo’lishi mumkin va bitta buyurtma bitta joriy jo’natmaga ega bo’lishi mumkin. Figure 2 dagi ERD soddalashtirilgan operatsion modelni ko’rsatadi.

Mijozlar, buyurtmalar, elementlar, mahsulotlar, to'lovlar va jo'natmalar uchun normallashtirilgan TuranMart elektron tijorat ERD'si.

Figure 2:Mijozlar, buyurtmalar, elementlar, mahsulotlar, to’lovlar va jo’natmalar uchun normallashtirilgan TuranMart elektron tijorat ERD’si.

Yaxshi ER modellashtirish bezak emas. U ishlab chiqarish tizimlarini noaniqlikdan himoya qiladi. Agar orders.customer_id tashqi kalit bo’lsa, buyurtma jimgina mavjud bo’lmagan mijozga ishora qila olmaydi. Agar products.sku yagona bo’lsa, biznes bir xil zaxira saqlash birligiga ega ikkita mahsulot qatoridan qochadi. Agar order_items orders dan ajratilgan bo’lsa, bitta buyurtma mijoz ma’lumotlarini takrorlamasdan ko’plab mahsulotlarni o’z ichiga olishi mumkin.

ERD elementiMa’nosiTuranMart misoliSifat oqibati
Birlamchi kalitBitta mohiyat yozuvi uchun barqaror identifikatorcustomer_id, order_id, product_idYagonalik tekshiruvlari va birlashtirishlarni yoqadi.
Tashqi kalitBoshqa mohiyatga havolaorders.customer_idReferensial yaxlitlik tekshiruvlarini yoqadi.
KardinallikRuxsat etilgan tegishli yozuvlar soniBitta buyurtma ko’p buyurtma elementlariga egaDon haqidagi noto’g’ri taxminlarning oldini oladi.
CheklovMa’lumotlar bazasi yoki quvur tomonidan ta’minlanadigan qoidaemail UNIQUE, amount >= 0Yaroqsiz ma’lumotlarni erta to’xtatadi.
Audit ustuniO’zgarishning operatsion izicreated_at, updated_at, status_changed_atNosozliklarni bartaraf etish va kelib chiqishini qo’llab-quvvatlaydi.

Normalizatsiya (normalization) operatsion modellarda keraksiz takrorlanishni kamaytirish intizomidir. Normallashtirilgan dizayn har bir faktni bitta mantiqiy joyda saqlaydi. Mijoz elektron pochtasi customers ga tegishli, har bir buyurtmaga ko’chirilmaydi. Mahsulot kategoriyasi products yoki categories ga tegishli, har bir buyurtma elementida qo’lda takrorlanmaydi. Ko’pgina operatsion tizimlar uchun uchinchi normal shaklga yaqin dizayn yaxshi standart hisoblanadi, chunki u yangilash anomaliyalarini kamaytiradi va izchillikni himoya qiladi.

Normalizatsiya bepul emas. Yuqori darajada normallashtirilgan sxemalar bo’yicha tahliliy so’rovlar ko’plab birlashtirishlarni talab qilishi mumkin. Shuning uchun bir xil biznes jarayoni ko’pincha tahlil uchun ikkinchi modelga muhtoj.

2.4 Tahliliy modellashtirish: O’lchamli ko’rinish

Tahliliy tizimlar tushunarlilik va so’rov ishlashiga muhtoj. Agar biznes foydalanuvchisi kampaniya va mintaqa bo’yicha daromadni ko’rishni xohlasa, ular beshta jadvalli birlashtirish haqida o’ylamasliklari kerak. Bu o’lchamli modellashtirish dunyosi bo’lib, u ma’lumotlarni biznes jarayonlariga (faktlar) va tavsiflovchi kontekstga (o’lchamlar) ajratadi.[4]

Faktlar jadvali (fact table) miqdoriy o’lchovlarni saqlaydi. TuranMart’da fact_order_line har bir sotilgan element uchun quantity, gross_revenue va discount_amount ni yozib oladi. O’lchamlar jadvali (dimension table) bu faktlarni filtrlash va guruhlash uchun ishlatiladigan tavsiflovchi atributlarni saqlaydi. dim_customer jadvali segment va region kabi ustunlarni taqdim etadi. O’lchamlar va faktlarni birlashtirish yulduz sxemasini yaratadi.

TuranMart tahliliy yulduz sxemasi, markaziy faktlar jadvali va sana, mijoz, mahsulot, mintaqa va kampaniya o'lchamlarini ko'rsatadi.

Figure 3:TuranMart tahliliy yulduz sxemasi, markaziy faktlar jadvali va sana, mijoz, mahsulot, mintaqa va kampaniya o’lchamlarini ko’rsatadi.

O’lchamli dizayndagi eng muhim qadam donni aniqlashdir. Don faktlar jadvalidagi bitta qator aynan nimani anglatishini belgilaydi. Agar fact_order_line ning doni “sotilgan bitta mahsulot qatori” bo’lsa, har bir qator aniq bitta miqdor va daromadga ega. Agar don “bitta buyurtma” bo’lsa, unda qator bir nechta mahsulotlarning jami bo’lishi kerak. Ikkala donni bitta faktlar jadvaliga aralashtirish ikki tomonlama hisoblash xatolariga olib keladi. Don jumlasi o’lchovlarni xavfsiz agregatsiya qilish mumkinligini isbotlaydi.

Faktlar jadvallari operatsion tizim kalitlaridan (masalan, order_id) foydalanishi mumkin bo’lsa-da, ular ko’pincha o’zlarining identifikatorlarini, ya’ni surrogat kalitlarni (surrogate keys) yaratadilar. Surrogat kalit - bu ombor tomonidan yaratilgan butun son yoki UUID. U faktlarni o’lchamlarga bog’laydi va tahliliy tizimni operatsion kalit o’zgarishlaridan himoya qiladi. Agar manba tizimi ma’lumotlar bazalarini o’zgartirsa va ID formatlarini o’zgartirsa, ombor surrogat kalitlarni o’zgartirmasdan yangi qatorlarni qo’shishi mumkin. Asl order_id faktlar jadvalida degenerat o’lcham (degenerate dimension) sifatida qoladi - guruhlash uchun foydali bo’lgan, lekin o’z o’lchamlar jadvaliga muhtoj bo’lmagan ID.

Yulduz sxemasi elementiMa’nosiTuranMart misoliTahliliy foyda
Faktlar jadvaliO’lchanadigan biznes hodisalarifact_order_lineTezkor agregatsiya (SUM, AVG, COUNT).
O’lchamlar jadvaliTavsiflovchi kontekstdim_product, dim_customerOson filtrlash (WHERE) va guruhlash (GROUP BY).
DonBitta fakt qatorining biznes ma’nosi“Buyurtmadagi bitta mahsulot qatori”Ikki tomonlama hisoblashning oldini oladi.
O’lchovAgregatsiya qilinadigan miqdoriy maydongross_revenue, quantityBoshqaruv panellari uchun asosiy ko’rsatkichlarni taqdim etadi.
Surrogat kalitOmbor tomonidan yaratilgan birlashtirish kalitiproduct_key, date_keyOmbor tarixini manba kalit o’zgarishlaridan ajratadi.

2.5 Ma’lumotlar sifati: Modelni isbotlash

Ma’lumotlar modeli faqat uni tasdiqlovchi testlar kabi yaxshi. Operatsion ma’lumotlar bazalari sifatni qabul qilish paytida cheklovlar orqali ta’minlaydi. Biroq, ma’lumotlar ko’llari va tahliliy quvurlar ko’pincha tashqi fayllarni o’qiydi yoki oqimlarni iste’mol qiladi, bu yerda cheklovlar bajarilmaydi. Ushbu muhitlarda ma’lumotlar muhandisi o’zgartirishdan oldin sifatni isbotlovchi kod yozishi kerak.

Ma’lumotlar sifati bitta “to’g’ri yoki noto’g’ri” o’lchovi emas. U turli jihatlar bo’ylab baholanadi:[5]

Quvurlar odatda sifat tekshiruvlarini uch bosqichda qo’llaydi, bu ko’pincha bronza-kumush-oltin yoki medalyon arxitekturasi deb ataladi.

  1. Bronza (Xom): Ma’lumotlar o’zgarishsiz, asl formatida (CSV, JSON) saqlanadi. Bu audit va quvurni qayta ishga tushirish uchun to’liq kelib chiqishini ta’minlaydi.

  2. Kumush (Tozalangan): Ma’lumotlar tipli ustunlarga aylantiriladi, takrorlanishlar olib tashlanadi va yaroqsiz qatorlar karantinga olinadi. Ushbu qatlam ishonchli domen ma’lumotlarini taqdim etadi.

  3. Oltin (Biznes): Ma’lumotlar iste’mol qilish uchun yulduz sxemalari, hisobot jadvallari yoki ML belgilari sifatida modellashtiriladi.

Great Expectations yoki dbt testlari kabi ramkalar ushbu tekshiruvlarni ijro etiladigan kod sifatida yozish imkonini beradi.[6] Yaxshi ma’lumotlar muhandisi qaysi tekshiruv muvaffaqiyatsiz bo’lsa quvurni to’xtatishi kerakligini (masalan, yetishmayotgan daromad) va qaysi tekshiruv shunchaki ogohlantirishi kerakligini (masalan, noodatiy chegirma miqdori) biladi.

Amaliy laboratoriya

Xom fayllardan tasdiqlangan Parquet’gacha

Ushbu laboratoriyada siz Python, Pandas va DuckDB yordamida kichik konvertatsiya quvurini ishga tushirasiz. Siz TuranMart uchun xom CSV va JSON fayllarini o’qiysiz, turlarni tasdiqlaysiz, sifat tekshiruvlarini qo’llaysiz va so’rov qilinadigan Parquet to’plamini yozasiz.

Format konvertatsiya laboratoriyasi oqimi: CSV va JSON kiritishlardan Pandas DataFrames orqali sifat tekshiruvlariga, Parquet yozishga va DuckDB tasdiqlashiga.

Figure 4:Format konvertatsiya laboratoriyasi oqimi: CSV va JSON kiritishlardan Pandas DataFrames orqali sifat tekshiruvlariga, Parquet yozishga va DuckDB tasdiqlashiga.

Sizning vazifalaringiz:

  1. Daftarni o’rnating va xom ma’lumotlarni yuklang.

  2. Turlarni belgilang va etishmayotgan qiymatlarni ishlating.

  3. Asosiy sifat tekshiruvlarini bajaring.

  4. Natijalarni Parquet formatida yozing.

  5. DuckDB yordamida natijani so’rov qiling.

1-qadam: Xom ma’lumotlarni yuklash

Birinchidan, shared/labs/ch02_data_models_formats_quality/input/ dan xom buyurtmalar va hodisalarni o’qiymiz.

import pandas as pd
import json
from pathlib import Path

# Fayl yo'llari
input_dir = Path("../../shared/labs/ch02_data_models_formats_quality/input")
orders_path = input_dir / "csv/orders.csv"
events_path = input_dir / "json/events.jsonl"

# CSV o'qish (Barcha turlar satr sifatida xulosa qilinadi)
df_orders_raw = pd.read_csv(orders_path)
print(f"Loaded {len(df_orders_raw)} raw orders.")

# JSON Lines o'qish
events_data = []
with open(events_path, 'r') as f:
    for line in f:
        events_data.append(json.loads(line))
df_events_raw = pd.DataFrame(events_data)
print(f"Loaded {len(df_events_raw)} raw events.")

2-qadam: Turlarni belgilash va tozalash

CSV faylida sanalar matn sifatida mavjud. Biz ularni to’g’ri sana-vaqt ob’ektlariga aylantirishimiz kerak.

# Kumush qatlam o'zgarishlari
df_orders_silver = df_orders_raw.copy()

# Satrlarni vaqt belgilariga o'zgartirish
df_orders_silver['order_ts'] = pd.to_datetime(df_orders_silver['order_ts'])

# Sifat qoidasi: Faqat joriy holatlarni saqlash
valid_statuses = ['completed', 'pending', 'cancelled']
df_orders_silver = df_orders_silver[df_orders_silver['order_status'].isin(valid_statuses)]

print(f"Silver orders after type conversion and filtering: {len(df_orders_silver)}")

3-qadam: Sifat tekshiruvlari

Yozishdan oldin, bizning tozalangan ma’lumotlarimiz kutganlarimizga mos kelishini isbotlaymiz.

# Yagonalik tekshiruvi
duplicate_orders = df_orders_silver['order_id'].duplicated().sum()
assert duplicate_orders == 0, f"Quality failure: Found {duplicate_orders} duplicate orders!"

# Null tekshiruvi
null_customers = df_orders_silver['customer_id'].isna().sum()
assert null_customers == 0, f"Quality failure: Found {null_customers} orders without customers!"

print("Quality checks passed. Data is valid.")

4-qadam: Parquet formatida yozish

Endi ma’lumotlar tipli va sinovdan o’tgan, biz ularni kelajakdagi tahlil uchun siqilgan Parquet fayllari sifatida yozamiz.

output_dir = Path("../../shared/labs/ch02_data_models_formats_quality/output/parquet")
output_dir.mkdir(parents=True, exist_ok=True)

# Parquet yozish (snappy siqishni sukut bo'yicha ishlatadi)
orders_out = output_dir / "orders_silver.parquet"
df_orders_silver.to_parquet(orders_out, index=False)

print(f"Successfully wrote {orders_out.stat().st_size / 1024:.1f} KB to Parquet.")

5-qadam: DuckDB bilan tasdiqlash

Nihoyat, biz natijalarni tahlil qilish uchun Parquet fayllarini to’g’ridan-to’g’ri SQL yordamida o’qiydigan tezkor qator ichidagi tahliliy ma’lumotlar bazasi DuckDB’dan foydalanamiz.

import duckdb

# DuckDB xotiradagi ulanishi
con = duckdb.connect(database=':memory:')

# To'g'ridan-to'g'ri Parquet faylini so'rov qilish
query = f"""
    SELECT 
        order_status,
        COUNT(*) as order_count,
        MIN(order_ts) as earliest_order,
        MAX(order_ts) as latest_order
    FROM '{orders_out}'
    GROUP BY order_status
    ORDER BY order_count DESC;
"""

result = con.execute(query).df()
print("\nDuckDB Query Results:")
print(result)

Kutilayotgan natija: Siz CSV xom matni Parquet faylidagi ustunli turlarga aylanganini ko’rishingiz kerak va DuckDB ma’lumotlarni oldindan yuklamasdan bevosita fayldan agregatsiya qila oladi.

Muhandislik anti-naqshlari

Anti-naqshNima sodir bo’ladiYaxshiroq yondashuv
Hamma narsa uchun CSV ishlatishTahliliy so’rovlar sekinlashadi va turlar buziladi.Katta ma’lumotlar to’plamlari uchun Parquet kabi tipli ustunli formatlarga o’ting.
Kelib chiqishini yo’qotishO’zgartirishlar dalillarni ustiga yozadi.Xom ma’lumotlarni saqlang va kuratorlik qilingan natijalar qanday ishlab chiqarilganini yozib oling.
Formatlarni modaga qarab tanlashMuhandislar mashhur arxitekturani ko’chiradilar.Format, model va saqlashni ish yuki va foydalanuvchi ehtiyojlariga moslang.
Biznes ma’nolarini aralashtirishO’xshash maydonlar bir xil ma’noga ega kabi birlashtiriladi.Ta’riflarni hujjatlashtiring va manfaatdor tomonlar bilan haqiqat manbai qarorlarini kelishib oling.

Operatsion saboq shundaki, eng erta modellashtirish qarorlari keyingi saqlash, qayta ishlash, orkestratsiya, kuzatuvchilik, boshqaruv va AI ishlari uchun asos bo’ladi. Zaif model zaif quvurlarni yaratadi. Sinovdan o’tmagan kuchli model baribir xavf tug’diradi. Noto’g’ri formatdagi sinovdan o’tgan model ishlash va xarajat muammolarini yaratadi. Professional ma’lumotlar muhandisligi uchalasini ham talab qiladi: ma’no, tuzilma va isbot.

Laboratoriya materiallari

Laboratoriya materialiMaqsadHavola
Laboratoriya READMEBosqichma-bosqich ko’rsatmalar, tozalash va nosozliklarni bartaraf etish.README
MashqlarUshbu bob uchun qo’shimcha amaliy vazifalar.mashqlar
Yechim qo’llanmasiDizayn tanlovlari va kutilgan natijalar tushuntirishi.yechim

Mashqlar

Quyidagi mashqlar boshqariladigan laboratoriyani kengaytiradi. Ular bitta to’g’ri javobni ko’chirishdan ko’ra, muhandislik mulohazangizni mashq qilishingiz uchun mo’ljallangan.

DarajaMashqVazifaKutilayotgan artefakt
AsosiyYangi buyurtma holatini qo’shishreturned deb nomlangan holatni qo’shing va tasdiqlash mantiqini yangilang.O’tgan sifat hisoboti va returned to’lovdan oldin yoki keyin kelishini tushuntiruvchi eslatma.
AsosiySifat xatosini majburlashQasddan takroriy buyurtma qatorini qo’shing va sifat tekshiruvi muvaffaqiyatsiz bo’lishini tasdiqlang.Muvaffaqiyatsiz tekshiruvni ko’rsatuvchi daftar yoki terminal natijasi.
O’rtaKampaniya kontekstini qo’shishJSON hodisa metama’lumotlaridan dim_campaign jadvalini qo’shing va uni yulduz sxemasiga ulang.Qisqacha sxema tavsifi va kampaniya kanali bo’yicha bitta SQL so’rovi.
Ilg’orMijoz tarixini modellashtirishMijoz segmenti tarixini saqlaydigan sekin o’zgaruvchi dim_customer jadvalini loyihalashtiring.Surrogat kalit, tabiiy kalit, amal qilish sanalari va joriy bayroqqa ega jadval dizayni.
Ilg’orCSV va Parquet’ni taqqoslash10,000 ta sintetik qator qo’shing va fayl hajmi hamda so’rov vaqtini taqqoslang.Kuzatishlar bilan kichik benchmark jadvali.
JamoaModelni ko’rib chiqishMoliya, marketing, logistika va platforma rollariga bo’linib, xuddi shu dizaynni ko’rib chiqing.Murosalar va hal qilinmagan savollarni hujjatlashtiradigan qisqacha qaror yozuvi.

Takrorlash savollari

Ushbu savollar o’z-o’zini baholash, sinf muhokamasi yoki o’qituvchi ko’rib chiqishi uchun mo’ljallangan. Kuchli javob nafaqat vositani nomlashi, balki mulohazani tushuntirishi kerak.

SavolKuchli javob nimani o’z ichiga olishi kerak
Nima uchun ma’lumotlar muhandisi saqlash dvigatelini tanlashdan oldin ma’lumotlar shaklini tasniflashi kerak?Javob tuzilma, tasdiqlash, sxema siljishi va ish yukiga moslikni bog’lashi kerak.
Qachon CSV mos keladi va qachon uni Parquet yoki boshqa tipli formatga o’zgartirish kerak?Javob insoniy almashinuvni takrorlanuvchi tahliliy qayta ishlashdan ajratishi kerak.
Nima uchun TuranMart xuddi shu buyurtma jarayoni uchun ham operatsion ERD, ham tahliliy yulduz sxemasiga muhtoj bo’lishi mumkin?Javob tranzaksiya yaxlitligini tahliliy foydalanish qulayligi bilan taqqoslashi kerak.
fact_order_line ning doni nimani anglatadi va nima uchun don jumlasini o’tkazib yuborish xavfli?Javob qator ma’nosi, agregatsiya xavfsizligi va ko’rsatkich izchilligini tushuntirishi kerak.
Moliya jamoasiga kunlik daromad jadvalidan foydalanishga ruxsat berishdan oldin qanday sifat tekshiruvlarini o’tkazgan bo’lardingiz?Javob majburiy maydonlar, yagonalik, yaroqli holatlar, to’lov kelishuvi va o’z vaqtida yetkazilishini eslatib o’tishi kerak.
Bronza-kumush-oltin naqshi operatsion xavfni qanday kamaytiradi?Javob xom ma’lumotlarni saqlash, standartlashtirilgan tuzatish, biznes uchun tayyor iste’mol va kelib chiqishini tushuntirishi kerak.
2-bob laboratoriyasi to’g’ri ishlaganini qanday dalil isbotlaydi?Javob yaratilgan Parquet fayllari, o’tgan sifat tekshiruvlari, DuckDB so’rov natijasi va kutilgan natijalar bilan tasdiqlashni eslatib o’tishi kerak.

Xulosa

Ushbu bob ma’lumotlar muhandisligining birinchi dizayn lug’atini taqdim etdi. Siz ma’lumotlar ko’lamdan oldin tuzilishga ega ekanligini va tuzilgan, yarim tuzilgan hamda tuzilmagan ma’lumotlar turli xil ishlashni talab qilishini o’rgandingiz. Siz CSV, JSON, Avro, Parquet va ORC’ni ajratilgan fayl kengaytmalari sifatida emas, balki muhandislik shartnomalari sifatida taqqosladingiz. Siz operatsion yaxlitlik uchun normallashtirilgan ERD va tahliliy foydalanish qulayligi uchun o’lchamli yulduz sxemasini loyihalashtirdingiz. Nihoyat, siz ushbu g’oyalarni sifat tekshiruvlari va xom fayllarni tasdiqlangan Parquet’ga aylantiradigan boshqariladigan laboratoriya bilan bog’ladingiz.

Keyingi bob ma’lumotlar dizaynidan kengroq ochiq manbali ekotizimga o’tadi. Siz ma’lumotlar bazalari, ob’ektli saqlash, qayta ishlash dvigatellari, orkestratsiya vositalari, sifat ramkalari, kataloglar va daftarlar qanday qilib amaliy platformaga birlashishini o’rganasiz. 2-bob sizga oldinga olib borish uchun asosiy savolni beradi: ma’lumotlar qanday ma’noni saqlab qolishi kerak va tizim uni saqlab qolganini qanday isbotlaydi?

Adabiyotlar

Footnotes