GH GambleHub

Tahliliy maʼlumotlarni siqish

1) Nima uchun tahliliy ma’lumotlarni siqish

Siqish saqlash va trafikni kamaytiradi, kam IO va yaxshiroq keshlash tufayli skanerlarni tezlashtiradi. Narx - CPU va (ba’zan) yangilanishlarning murakkabligi. Maqsad - SLO uchun optimum «IO, CPU, aniqlik va qiymat».

Asosiy metriklar:
  • Compression Ratio (CR) = `raw_size / compressed_size`.
  • Scan Cost ≈ bytes_scanned / throughput_storage + cpu_decode_time`.
  • Total Cost = `storage_cost + compute_cost + egress_cost`.

2) Siqilish yashaydigan qatlamlar

1. Format darajasida: Parquet/ORC/Euro (sahifalar/strayplar/ustunlar).
2. Enkoding darajasida: Dictionary, RLE, Delta, FoR/Bit-packing, Gorilla/XOR.
3. Kodek darajasida: ZSTD, Snappy, LZ4, Gzip.
4. Soʻrov/harakat darajasida: vektorizatsiya, sahifalarni oʻtkazib yuborish (min/max), bloom/zone-map.
5. Saqlash darajasida: tiered storage (hot/warm/cold), kompakshn, page cache.


3) Ustunli formatlar va ularning afzalliklari

Parquet: ustunlar boʻyicha sahifalar; lugʻatlar, RLE/Bit-packing, min/max va null-count statistikalarini qoʻllab-quvvatlash.
ORC: oqimlarda indekslari bo’lgan strayplar, bloom-filtrlar; uzoq skanerlar uchun samarali.
Euro (row): oqim/loglar uchun qulay, analitik skanlar uchun yomonroq.

Amaliyot: andoza tahlillar uchun Parquet/ORC’dan foydalaning, kardinallik past/o’rta bo’lgan joylarga column stats va dictionary’ni kiriting.


4) Kolonkalar enkodingi (lossless)

Dictionary: qiymatlarni indekslar bilan almashtiradi (past kardinallik uchun ideal).
RLE (Run-Length Encoding): takrorlanuvchi qiymatlar → (value, run). Saralangan/klasterlangan ustunlar uchun yaxshi.
Delta/Delta-of-Delta: farqlarni saqlaydi (son/vaqt).
FoR (Frame-of-Reference) + Bit-packing: qiymati = base + offset; offset N bitlar bilan o’ralgan.
Gorilla/XOR (Time-series): oʻzgaruvchan uzunlikdagi qoʻshni qiymatlarning XORini saqlaydi; metriklar uchun yaxshi.
Nullable-bitmaskalar: null’larning alohida oqimi CRni oshiradi.

Maslahat: filtrlash kalitlari boʻyicha dastlabki klasterlash/saralash RLE/zone-maps va CRni keskin yaxshilaydi.


5) Umumiy maqsaddagi kodeklar

ZSTD: CPUning maqbul narxida eng yaxshi CR; 1-22 darajalarni qo’llab-quvvatlaydi. Universal tanlov.
Snappy: tezkor, past CR; o’qish tezligi yuqori bo’lgan issiq ma’lumotlar uchun mos keladi.
LZ4: Snappy’dan ham tezroq, CRga oʻxshash; ko’pincha - oqim/loglar/keshlar uchun.
Gzip/Deflate: yuqori CR, yuqori CPU narxi; kamdan-kam hollarda interaktiv tahlilda oqlanadi.

Qoida: issiq qatlam - Snappy/LZ4, issiq/sovuq - ZSTD (level 3-7).


6) Vaqtinchalik qatorlar va loglar

TSDB/kolonochnыe DB: Gorilla/XOR, Delta-RLE-Bitmap, Sparse-run uchun nodir signallar.
Logi: JSON → Parquet + ZSTD; kalitlar va turlarni normallashtiring («satr int» ni saqlamang).
Downsampling va roll-ups (lossy): agregatlarni (1m/5m/1h) issiq qatlamda saqlang; xom - sovuqda.
Sketch tuzilmalari: HLL (kardinallik), TDigest/KLL (kvantillar), CMS (chastotalar) - ixcham, ammo aproksimatsion.


7) Lossless vs Lossy (qachon aniqlikni yo’qotish mumkin)

Lossless - hisobot, moliya, audit.
Lossy - monitoring, katta oynalarda A/B-tahlil, telemetriya (aniq markalangan!).
Sifat nazorati: xatolik (masalan, P99 ± 0. 5 p.p.) va uni CI da tekshirish.


8) Partiyalash, sahifalar va kompakshn

Partitsiyalar: sana/mintaqa/tenant bo’yicha → kamroq skanerlar, yaxshiroq CR.
Sahifa/strayp o’lchami: sahifaga 64-256 KB, faylga 64-512 MB - seek va CPU o’rtasidagi balans.
Kompakshn: kichik fayllarni birlashtiring (small files problem) - CR va tezlikdan yuqori.
Zone-maps/Bloom: sahifalarni oʻtkazib yuborishni tezlashtiradi; filtrlar bo’yicha saralashda samarali.


9) Siqish va shifrlash/maxfiylik

Operatsiyalar tartibi: avval siqish, keyin shifrlash. Aks holda CR ≈ 1.
TDE/at-rest CR ga xalaqit bermaydi (allaqachon siqilgan blok shifrlanmoqda).
In-transit (TLS) formatga taʼsir qilmaydi.
PII ning qisilgunga qadar niqoblanishi/tokenlanishi boshqariladigan entropiyani saqlab qoladi.
OPE/DET shifrlashda ehtiyot boʻling: CRni yomonlashtirishi va/yoki maxfiylikni xavf ostiga qoʻyishi mumkin.


10) Qiymat va SLO (iqtisodiyot)

Storage: kamroq bayt → past $/TB-mo.
Compute: kam IO → tezroq skanerlar; lekin dekompressiya CPUni sarflaydi.
Egress: kamroq bayt → past trafik/nusxa vaqti.
SLO murosasi:’p95 _ latency’maqsadli oynada qoladigan kodek/darajani tanlang.

Siyosat namunasi (psevdo-YAML):
yaml hot:
format: parquet codec: snappy target_p95_ms: 1000 max_scan_mb: 2048 warm:
format: parquet codec: zstd:4 target_p95_ms: 2500 compaction: daily cold:
format: parquet codec: zstd:7 glacier: true retention: 365d

11) Dvigatellar uchun amaliyotlar (ClickHouse/Snowflake/BigQuery/Redshift/Presto)

ClickHouse: CODEC’i ustunlarda (LZ4/ZSTD/DoubleDelta), RLE/skanlar uchun ORDER BY, TTL/kompakshn.
Snowflake/BigQuery: formatlar/klasterlash avtomatikasi; cluster by (sana, tenant, filtr kalitlari).
Redshift/Presto/Trino: Parquet/ORC bilan ZSTD, sozlash’hive. exec. compress. output’, statistika va fayllarni ajratish.


12) Payplaynlar: siqishni qaerda yoqish kerak

Ingest: lake ga yozilganda siqilgan batchi (ZSTD/LZ4).
Transform/DBT: kerakli kodek va saralash bilan ustunli nishonchalarni yarating.
Serve/OLAP: maqbul kodekli materiallashtirilgan tasavvurlar; issiq dashbordlar uchun predagregatlar.
Export: для CSV/JSON — gzip/zstd; Parquet berish yaxshiroqdir.


13) Test va validatsiya

AB profillash: soʻrovlar toʻplami → p50/p95, bytes scanned, CPU time, CR.
Golden-to’plamlar: qayta kodlash/kompakshnadan so’ng to’g’riligini tekshirish.
Regression perf tests: alertlar, agar p95 ↑> X% kodek/darajasini oʻzgartirgandan keyin.
DQ qoidalari: turlar/diapazonlar/NULL-rate almashtirilganda oʻzgarmasligi kerak.


14) Saqlash siyosati va TTL

Tiered: hot (7-14 kun) , warm (30-90 kun) , cold (180 kun ≥) .
Downsampling: «sovutish» bilan xom emas, balki agregat/eskizlarni saqlang.
Retention/Legal hold: meʼyorlar bilan ziddiyatlarni olib tashlamang; kataloglar va versiyalarni saqlang.


15) Antipatternlar

«Hamma joyda Gzip level 9 «: qimmat CPU, hech qanday foyda yo’q.
Saralash/klasterlashsiz: yomon RLE/zone-maps → skanerlar qimmat.
JSON saqlash formati sifatida: ingest uchun qulay, tahlilchilar uchun yomon.
Juda kichik fayllar: meta maʼlumotlar/seek; CR pasaymoqda.
Siqilguncha shifrlash: deyarli nol CR.
Belgilanmagan Lossy: ishonch va hisobotning buzilishi.


16) Joriy etish yo’l xaritasi

1. Discovery: soʻrov/maʼlumot profillari, SLO va byudjetlar.
2. MVP: Parquet + ZSTD/Snappy, bazaviy saralash/klasterlash, kompakshn.
3. Tuning: ZSTD darajalari, sahifalar oʻlchamlari, cluster by, bloom/zone-maps.
4. Warm/Cold: tiered storage, downsampling/eskizlar, egress-siyosatlar.
5. Hardening: regression perf-testlar, DQ, runbooks.


17) Chiqarishdan oldingi chek-varaq

  • Format: Parquet/ORC; statistika/lug’atlar kiritilgan.
  • Filtrlash kalitlari bo’yicha klaster; sana/tenant bo’yicha partiyalar.
  • Kodeklar: hot = Snappy/LZ4, warm/cold = ZSTD (3-7); p95 me’yorda.
  • Kompakshn sozlangan; small files mavjud emas; fayl/sahifalarning maqsadli oʻlchamlari.
  • DQ va oltin-to’plamlar yashil; turlar/diapazonlar saqlangan.
  • Siqilgandan keyin shifrlash; PII niqoblangan; retenshn/Legal-hold qoidalariga rioya qilindi.
  • Perf-regressiya kuzatiladi; p95/bytes scanned/CR bo’yicha alertlar.
  • Saqlash siyosati hujjatlari va qayta kodlash yo’riqnomalari tayyor.

18) Mini-shablonlar

DBT (ZSTD va klasterlash bilan Parquet jadvali):
sql create table if not exists analytics.sales_daily cluster by (event_date, tenant_id)
as select from {{ ref('sales_daily_view') }};
-- в конфиге модели: materialized=table, file_format=parquet, compression=zstd
Kompakshn siyosati (psevdo):
yaml compaction:
target_file_mb: 256 small_file_threshold_mb: 32 schedule: "hourly"
downsampling (psevdo):
yaml timeseries:
raw:  keep: 14d rollup_1m: keep: 90d rollup_1h: keep: 365d rollup_1d: keep: 1825d

Xulosa: tahliliy ma’lumotlarni siqish nafaqat "kodekni yoqish", balki yaxlit strategiya: to’g "ri format, ustunlar enkodingi, saralash va partiyalashtirish, kompakshn va saqlash darajasi, shifrlash va SLOga hurmat. Savodli dizayn tezroq skanerni, hisobdan pastroq va oldindan aytib bo’ladigan samaradorlikni beradi - ma’lumotlarga ishonishda murosasiz.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.