GH GambleHub

Analitik məlumatların sıxılması

1) Niyə analitik məlumatları sıxışdırmaq lazımdır

Sıxılma saxlama və trafikin həcmini azaldır, daha az IO və daha yaxşı caching sayəsində skanerləri sürətləndirir. Qiymət - CPU və (bəzən) yeniləmələrin mürəkkəbliyi. Məqsəd SLO altında optimal «IO, CPU, dəqiqlik və dəyərdir».

Əsas metriklər:
  • 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) Sıxılma yaşayan təbəqələr

1. Format səviyyəsində: Parquet/ORC/Avro (səhifələr/strayplar/sütunlar).
2. Enkodinq səviyyəsində sütunlar: Dictionary, RLE, Delta, FoR/Bit-packing, Gorilla/XOR.
3. Kodek səviyyəsində: ZSTD, Snappy, LZ4, Gzip.
4. Sorğu/mühərrik səviyyəsində: vektorizasiya, səhifə atlama (min/max), bloom/zone-map.
5. Saxlama səviyyəsində: tiered storage (hot/warm/cold), kompakt, page cache.


3) Sütun formatları və onların üstünlükləri

Parquet: sütunlara görə səhifələr; lüğət dəstəyi, RLE/Bit-packing, min/max statistika və null-count.
ORC: axınlarda indeksləri olan strayplar, bloom filtrləri; uzun taramalar üçün təsirli.
Avro (row): axın/log üçün əlverişli, analitik skanlar üçün daha pis.

Təcrübə: Default analitika üçün Parquet/ORC istifadə edin, kardinallığın aşağı/orta olduğu yerlərdə column stats və dictionary daxil edin.


4) Encoding sütunlar (lossless)

Dictionary: qiymətləri indekslərlə əvəz edir (aşağı kardinallıq üçün idealdır).
RLE (Run-Length Encoding): təkrarlanan dəyərlər → (value, run). Çeşidlənmiş/klasterləşdirilmiş sütunlar üçün yaxşıdır.
Delta/Delta-of-Delta: fərqləri saxlayır (ədədlər/vaxt).
FoR (Frame-of-Reference) + Bit-packing: qiymət = base + offset; offset N bitləri ilə dolu.
Gorilla/XOR (Time-series): dəyişən uzunluqlu qonşu dəyərlərin XOR saxlayır; metrik üçün yaxşı.
Nullable-bitmask: ayrı null's axını CR artırır.

Məsləhət: Filtrasiya açarları ilə əvvəlcədən klasterləşdirmə/çeşidləmə RLE/zone-maps və CR-ni kəskin şəkildə yaxşılaşdırır.


5) Ümumi təyinatlı kodeklər

ZSTD: mülayim CPU qiyməti ilə ən yaxşı CR; 1-22 səviyyələri dəstəkləyir. Universal seçim.
Snappy: sürətli, aşağı CR; yüksək oxu tezliyi ilə isti məlumatlar üçün uygundur.
LZ4: daha sürətli Snappy, oxşar CR; tez-tez - axın/log/cache üçün.
Gzip/Deflate: yüksək CR, yüksək qiymət CPU; nadir hallarda interaktiv analitikada haqlıdır.

Qayda: isti təbəqə - Snappy/LZ4, isti/soyuq - ZSTD (level 3-7).


6) Müvəqqəti sıralar və yuvalar

TSDB/sütun DD: nadir siqnallar üçün Gorilla/XOR, Delta-RLE-Bitmap, Sparse-run.
Log: JSON → Parquet + ZSTD; açarları və növləri normallaşdırın («string int» saxlamayın).
Downsampling və roll-ups (lossy): isti təbəqədə pəncərələr (1m/5m/1h) üzrə aqreqatları saxlayın; xam - soyuq.
Sketch strukturları: HLL (kardinallıq), TDigest/KLL (kvantillər), CMS (tezliklər) - kompakt, lakin yaxınlaşma.


7) Lossless vs Lossy (dəqiqliyi itirə biləcəyiniz zaman)

Lossless - hesabat, maliyyə, audit.
Lossy - monitorinq, böyük pəncərələrdə A/B analitikası, telemetriya (açıq işarə ilə!).
Keyfiyyət nəzarəti: icazə verilən səhv təyin edin (məsələn, P99 ± 0. 5 p.p.) və CI-də yoxlayın.


8) Partizan, səhifə və kompakşn

Partisia: tarix/region/tenant → daha az skan, daha yaxşı CR.
Səhifə/striptiz ölçüsü: Səhifə başına 64-256 KB, fayl başına 64-512 MB - seek və CPU arasında balans.
Kompakt: Kiçik faylları (small files problem) birləşdirin - CR və sürətdən yuxarı.
Zone-maps/Bloom: səhifə boşluqlarını sürətləndirir; filtrlərlə çeşidlənmədə effektivdir.


9) Sıxılma və şifrələmə/məxfilik

Əməliyyat qaydası: əvvəlcə sıxılma, sonra şifrələmə. Əks halda CR ≈ 1.
TDE/at-rest CR-ə mane olmur (artıq sıxılmış blok şifrələnir).
In-transit (TLS) formata təsir etmir.
Sıxılmadan əvvəl PII maskalanması/tokenizasiyası idarə olunan entropiyanı saxlayır.
OPE/DET şifrələmə ilə diqqətli olun: CR-ni pisləşdirə və/və ya məxfiliyi riskə ata bilər.


10) Qiymət və SLO (iqtisadiyyat)

Storage: az bayt → aşağı $/TB-mo.
Compute: daha az IO → daha sürətli scan; lakin dekompressiya CPU xərcləyir.
Egress: az bayt → aşağı trafik/nüsxə vaxt.
SLO güzəşti: codec/level seçin ki, 'p95 _ latency' hədəf pəncərəsində qalsın.

Siyasət nümunəsi (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) Mühərriklər üçün təcrübələr (ClickHouse/Snowflake/BigQuery/Redshift/Presto)

ClickHouse: CODEC 'və sütunlarda (LZ4/ZSTD/DoubleDelta), RLE/skanlar üçün ORDER BY, TTL/kompakt.
Snowflake/BigQuery: formatların avtomatlaşdırılması/klasterləşdirilməsi; cluster by kömək (tarix, tenant, filter açarları).
Redshift/Presto/Trino: ZSTD ilə Parquet/ORC, hive. exec. compress. output ', statistika və faylların ayrılması.


12) Payplays: harada sıxılma daxil

Ingest: lake yazarkən sıxılmış batches (ZSTD/LZ4).
Transform/DBT: İstədiyiniz codec və çeşidləmə ilə sütunlu hədəflər yaradın.
Serve/OLAP: uyğun codec ilə materiallaşdırılmış performans; isti dashboard üçün ön aqreqatlar.
Export: для CSV/JSON — gzip/zstd; Parquet vermək daha yaxşıdır.


13) Test və validasiya

AB profili: sorğular dəsti → p50/p95, bytes scanned, CPU vaxt, CR müqayisə.
Golden-sets: transcoding/kompakt sonra düzgünlüyünü yoxlamaq.
Regression perf tests: codec/səviyyə dəyişikliyindən sonra p95 ↑> X% əgər alert.
DQ qaydaları: növləri/diapazonları/NULL-rate yerdəyişmə zamanı dəyişməməlidir.


14) Saxlama siyasəti və TTL

Tiered: hot (7-14 gün) , warm (30-90 gün) , cold (≥ 180 gün) .
Downsampling: «soyuduqca» xam əvəzinə aqreqatları/eskizləri saxlayın.
Retention/Legal hold: standartlarla ziddiyyətləri aradan qaldırmayın; kataloqlar və versiyalar saxlayın.


15) Antipattern

«Hər yerdə Gzip level 9 «: bahalı CPU, heç bir fayda.
Heç bir çeşidləmə/klasterləşdirmə: pis RLE/zone-maps → skanerlər bahalıdır.
JSON saxlama formatı kimi: ingest üçün əlverişli, analitika üçün pis.
Çox kiçik fayllar: metadata/seek şişirtmək; CR düşür.
Sıxılmadan əvvəl şifrələmə: demək olar ki, sıfır CR.
Etiketsiz Lossy: etimad və hesabatın pozulması.


16) Tətbiqi yol xəritəsi

1. Discovery: sorğu/məlumat profilləri, SLO və büdcələr.
2. MVP: Parquet + ZSTD/Snappy, əsas çeşidləmə/klasterləşdirmə, kompakşn.
3. Tuning: ZSTD səviyyələri, səhifə ölçüləri, cluster by, bloom/zone-maps.
4. Warm/Cold: tiered storage, downsampling/eskizləri, egress siyasəti.
5. Hardening: regressiya perf testlər, DQ, runbooks transcoding.


17) Buraxılışdan əvvəl çek siyahısı

  • Format: Parquet/ORC; daxil statistik/lüğət.
  • Filtrasiya açarları ilə klaster; partiya tarixi/tenant.
  • Codec: hot = Snappy/LZ4, warm/cold = ZSTD (3-7); p95 normal.
  • Kompakt konfiqurasiya; heç bir small files; hədəf fayl/səhifə ölçüləri.
  • DQ və qızıl dəstləri yaşıl; növləri/diapazonları saxlanılır.
  • Sıxıldıqdan sonra şifrləmə; PII maskalı; retenshn/legal-hold riayət olunur.
  • Perf-reqressiya izlənilir; p95/bytes scanned/CR.
  • Saxlama siyasəti və kodlaşdırma təlimatlarının sənədləşdirilməsi hazırdır.

18) Mini şablonlar

DBT (ZSTD və klasterləşdirmə ilə Parquet cədvəli):
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
Kompakşn siyasəti (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

Nəticə: analitik məlumatların sıxılması yalnız «kodeki daxil etmək» deyil, bütövlükdə strategiyadır: düzgün format, sütunların enkodinqi, çeşidləmə və partizanlaşdırma, kompakşn və saxlama səviyyələri, şifrələmə və SLO-ya hörmət. Səriştəli dizayn daha sürətli skanerlər, aşağı hesablama və proqnozlaşdırıla bilən performans verir - məlumatlara inamla kompromis olmadan.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.