GH GambleHub

Tahliliy omborlarni indekslash

1) Nima uchun iGaming-platformaga indeksatsiya qilish

Tahlilning tezligi: GGR/NET, konversiyalar, RG/AML va A/B-eksperimentlar bo’yicha hisobotlar SLAga joylashtiriladi.
Qiymati: skan qilinadigan baytlardan kam → hisoblash hisobvarag’idan past/ombor.
Ishonchlilik: barqaror p95/p99 latentlik dashbordlari va API metrik.
Ko’lami: o’nlab brendlar/bozorlar/PSP/provayderlar «full scan» ga teng emas.

2) Yuklamalar modeli (indekslashdan oldin)

Факты: `payments`, `game_rounds`, `sessions`, `bonus_events`.
Oʻlchovlari:’dim _ user’(PIIsiz),’dim _ provider’,’dim _ psp’,’dim _ country’.
So’rovlar: «so’nggi N kun»,’brand/country/provider/psp’bo’yicha agregatsiyalar, status maydoni bo’yicha filtrlar, surrogate-keys bo’yicha join’lar, JSON atributlari (to’lov usuli, qurilma) bo’yicha qidiruv, top-K/percentile.

Biz indekslarni selektivlik, kardinallik va foydalanish chastotasidan kelib chiqib tanlaymiz.

3) Indekslar turlari va ularni qachon olish

3. 1 Klassika

B-tree: yuqori selektiv ustunlar bo’yicha tenglik/diapazonlar (’user _ surrogate _ id’,’occurred _ at’,’amount’).
Hash: sof tenglik; kamdan-kam hollarda (diapazonlarga nisbatan zaif).
Bitmap: past kardinallik va tez-tez ulangan filtrlar (’country’,’kyc _ level’,’rg _ state’,’brand’). Niqoblarni jamlash uchun juda yaxshi.

3. 2 Columnar-spetsifikasi

Min-max (data skipping): parket-strayplar/qismlardagi minimal/maksimal avtomatik statistika → dvigatel bloklarni o’tkazib yuboradi. Filtrlanadigan maydonlarga qarab saralashda yaxshiroq ishlaydi.
Bloom indekslari: tezkor ehtimollik testlari blokdagi qiymatlar (’user _ id’,’transaction _ id’,’psp’uchun foydalidir).
BRIN (Block Range Index): agar maʼlumotlar tabiiy tartibda boʻlsa, blok diapazonlaridagi arzon «koʻrsatkichlar». Arzon, ammo time-series uchun samarali.

3. 3 Ilg’or/ixtisoslashtirilgan

GiST/GIN (invertlangan): JSON/arrays/matn, ichki atributlar boʻyicha filtrlar (’metadata. method = 'Papara'`, `device. os in [...]`).
Join/Projection (ClickHouse/MPP): jadallashtirish uchun materiallar join/agg (pre-join key faktga yaqin saqlanadi, dastlabki agregatsiyalar).
Vektorlar (ANN): shunga o’xshash embeddinglarni qidirish (tavsiyalar/antifrod xatti-harakati) - IVF/HNSW/Flat «yaqin qo’shnilar indeksi» sifatida.
Z-tartibga solish/Z-order (lakehouse/Databricks )/Cluster keys (Snowflake )/ORDER BY (ClickHouse): eng yaxshi skipping ma’lumotlari uchun diskdagi ma’lumotlarni ko’p o’lchovli klasterlash.

4) Partiyalashtirish, saralash, klasterlashtirish

Partitsiyalar (date/country/brand): «kichik fayllarni la’natlashdan» qochish uchun katta (kun/hafta). WHERE/kirish huquqida yuqori selektivlikka ega maydonlarni tanlaymiz.
Partiya ichida saralash:’ORDER BY (occurred_at, brand, psp)’yoki’(brand, country, provider)’bo’yicha Z-order - ming-max va bloom yaxshiroq ishlaydi.
Cluster/Recluster: lokalizatsiyani saqlash uchun davriy qayta klasterlash.
TTL va retenshn: eski partiyalar/segmentlarni avtomatik ravishda olib tashlash.

5) Materiallashtirilgan taqdimnomalar va proyeksiyalar

MV:’payments _ 7d _ by _ brand _ psp’,’rounds _ 1d _ by _ provider’. Inkremental (streaming upserts).
Proyeksiyalar (ClickHouse )/Aggregate tables: dastlabki guruhlar, roll-up darajalari (soat → kun → hafta).
Natijalar keshi: query result cache/warehouse result cache takrorlanadigan dashbordlar uchun (so’rov tokeni va ma’lumotlarning yangiligi bo’yicha validatsiya).

6) Yarim tarkibiy ma’lumotlar (JSON/VARIANT)

Yo’llar bo’yicha indekslar: invertlangan/json-yo’llardagi GIN-indeks (’$ .device. os`, `$.psp. details. method`).
Muhim atributlarni ustunlarga materiallashtirish: barqaror filtrlar uchun (to’lov usuli, qurilma, ilova versiyasi).
Kalit bo’yicha statistika: selektiv reja uchun distribyutsiyalar to’plash.

7) Ma’lumotlar ko’llari: Iceberg/Delta/Hudi

Manifest-indekslar: parket-fayllar (min-max, null-count, bloom) → partition pruning + file skipping to’g "risidagi meta-ma’lumotlar.
Kompaksiya/fayllarni birlashtirish: kichik fayllarning muntazam merge «maqbul» hajmda (128-1024 MB).
Clustering/Z-order: bogʻlovchi maydonlar uchun fayllarni qayta qadoqlash (masalan,’brand, country, occurred _ at’).
Delete/Update indekslari: merge-on-o’qishni tezlashtirish uchun pozitsion deltlar va bloom.

8) Indekslarni qanday tanlash kerak: amaliy chek-varaq

1. Top-N soʻrovlarini yigʻing (90% yuk) → filtrlar/join/group.
2. Har bir maydon uchun’sel = 1 - distinct (value )/rows’va kardinallikni baholang.
3. Vaqt bo’yicha partitsiyasi + 1-2 o’lchov, barqaror filtrlar/kirish.
4. Saralash/klaster keys filterlar va join-kalitlar bilan kelishiladi.
5. Nuqta id uchun bloom, past kardinallik uchun bitmap qoʻshing.
6. Issiq agregatsiyalar → MV/proyeksiyalar.
7. JSON-yo’llar → invertatsiya qilingan indekslar + materiallashtirish.
8. Ko’llarda - jadval bo’yicha kompaksiya va clustering.
9. SLOni kiriting: p95-latentlik, skanerlanadigan bayt/soʻrov, skipped data ulushi.

9) Qo’llab-quvvatlash va xizmat ko’rsatish

ANALYZE/statistika: kardinallik va gistogrammalarni yangilang; aks holda «ko’zi ojiz» optimizator.
VACUUM/OPTIMIZE/RECLUSTER: defragmentatsiya va qayta klasterlash.
«covering rate», «unused index list», «bytes scanned/bytes skipped» indekslaridan foydalanish monitoringi.
Avto-maslahatchilar: query log asosida klaster-kalitlar va saralash bo’yicha davriy tavsiyalar.
Regressiya testlari: yangi kalitlarni deployishdan oldin - so’rovlar profilini va qiymatini taqqoslash.

10) Indeksatsiya metrikasi va SLO

Texnik: p95/p99 latency, scanned bytes/query, skipped bytes%, files touched, cache hit-rate.
Iqtisodiyot: $/so’rov, $/dashbord, $/TB skaner.
Operatsiyalar: kompaksiya vaqti, qayta klasterlash navbati, «kichik fayllar» ulushi.
Rejalar sifati: indeks/proyeksiyalardan foydalanadigan so’rovlar ulushi, kardinallikning aniqligi.

11) iGaming keyslari (tayyor retseptlar)

11. 1 To’lovlar/PSP: tushish/ishdan chiqish

Partiya:’by day’. Saralash:’(brand, country, occurred_at)’.
Bloom: `transaction_id`, `user_id`. Bitmap: `psp`, `status`.
MV: `payments_7d_by_brand_psp(status, declines)`.
Natija: p95 ↓ 8. 2s dan 1 gacha. 1s, scanned bytes ↓ на 87%.

11. 2 O’yin raundlari: provayder/o’yin

Z-order / ORDER BY: `(provider, game_id, occurred_at)`.
Projection/agg: `rounds_1d_by_provider_game`.
BRIN (agar Postgres oʻxshash saqlovchi boʻlsa):’occurred _ at’boʻyicha.
Natija: top-K o’yinlar/soat - issiq keshda sub-second.

11. 3 RG/AML: cheklovlar/o’z-o’zini istisno qilish hodisalari

Bitmap: `rg_state`, `kyc_level`. JSON-path GIN: `$.reason`.
MV: «30 kun ichida faol cheklovlar» + user-darajani PIIsiz materiallashtirish.
Natija: full scan milliardlab hodisalarsiz komplayens uchun tezkor namunalar.

11. 4 Antifrod: yo’nalishlar va qurilmalar

JSON → ustunining materiallashuvi:’device. os`, `device. model`, `payment. method`.
Bloom: `graph_device_id`. Cluster: `(brand, country, device. os)`.
Vektor indeksi: shunga o’xshash anomaliyalar uchun «7d uchun depozitlarning xatti-harakati» → tezkor k-NN embeddingi.

12) Xavfsizlik va maxfiylik

Zero-PII indekslanadigan maydonlarda va rejalar loglarida.
Diskdagi shifrlash: indekslar/statistik maʼlumotlar kabi shifrlanadi.
Agregatlarning K-anonimligi: MV/proyeksiyalar faqat ≥ N guruhlari tomonidan e’lon qilinadi.
Geo/tenant-izolyatsiya: partiyalar/kalitlar’brand/country/license’ni o’z ichiga oladi.
Legal Hold: indekslar/manivestlar ham «muzlatiladi».

13) Anti-patternlar

Hamma narsani indekslash → hajm portlashi va write-amplification.
Kichik partiyalar (soat/daqiqa) → bo’ron plankalar va «kichik fayllar».
Filterlar bilan mos kelmaydigan saralash kalitlari → nol data skipping.
Statistikaning yo’qligi → yomon rejalar, full scan.
JSON yo’l indeksisiz va «issiq» atributlarni materiallashtirmasdan.
Kompaksiya ignori va recluster → 2-4 haftadan keyin degradatsiya.

14) Shablonlar (foydalanishga tayyor)

14. 1 Klaster/indeksatsiya siyosati (YAML)

yaml dataset: gold. payments partition_by: ["date"]
order_by: ["brand","country","occurred_at"]
indexes:
bloom: ["transaction_id","user_surrogate_id"]
bitmap: ["psp","status","rg_state"]
materialized_views:
- name: mv_payments_7d_brand_psp group_by: ["brand","psp","status"]
window: "7d"
slo:
p95_latency_ms: 1200 scanned_bytes_per_query_max_mb: 256 maintenance:
compact_small_files: true recluster_cron: "0 /6  "
privacy:
pii_in_index: false

14. 2 Ko’lning kompaksiya rejasi (Iceberg/Delta)

yaml compaction:
target_file_size_mb: 512 small_file_threshold_mb: 64 zorder_by: ["brand","country","occurred_at"]
run_every: "PT6H"
max_concurrency: 4

14. 3 JSON uchun indekslar

sql
-- GIN/inverted index on device attributes
CREATE INDEX idx_device_json ON gold. sessions
USING GIN ((device_json));
-- Materialization of critical pathways
ALTER TABLE gold. sessions ADD COLUMN device_os TEXT;
UPDATE gold. sessions SET device_os = device_json->>'os';
CREATE BITMAP INDEX idx_device_os ON gold. sessions(device_os);

14. 4 Indeks monitoringi SLO

yaml monitoring:
skipped_bytes_share_min: 0. 70 index_usage_rate_min: 0. 85 stats_freshness_max_hours: 24 small_files_share_max: 0. 10

15) Joriy etish yo’l xaritasi

0-30 kun (MVP)

1. Top-N soʻrovlar va skanerlash profillarini yigʻish.
2. Filtrlar bilan kelishilgan sanasi + saralash bo’yicha partiyalashtirish.
3. Id-maydonlar uchun data skipping (min-max) va bloomni yoqish.
4. «Issiq» metrika uchun bitta MV (payments 7d).
5. Dashboard SLI: p95, scanned bytes, skipped share, small files.

30-90 kun

1. JSON-yo’llar: invertatsiya qilingan indekslar + materiallashtirish.
2. Ko’l: kompaksiya va 2-3 kalit bo’yicha Z-order/clustering.
3. Kalitlar/proyeksiyalarning avtoyoʻlchisi; muntazam ANALYZE.
4. Kichik fayllar (day → week) ni qayta koʻrib chiqish.

3-6 oy

1. MV/proyeksiyalar katalogi va SLA.
2. Tavsiyalar/antifrod uchun vektor indekslari.
3. SLO va budjetlarning yagona siyosati $/so’rov; degradatsiya alertlari.
4. Indeks maxfiyligi auditi, geo/tenant-izolyatsiya.

16) RACI

Data Platform (R): partiyalar/indekslar/kompaksiyalar, avto-maslahatchilar, monitoring.
Analytics/BI (R): MV/dashbord proyeksiyalari, so’rovlarni profillash.
Domain Owners (C): «issiq» kesmalar va filtrlar mezonlari.
Security/DPO (A/R): maxfiylik, PII siyosati, geo/tenant kalitlari.
SRE/Observability (C): SLO/alerting, kompaksiyalar uchun kapasiti.
Finance (C): budjetlar $/so’rov va indekslardan tejash.

17) Bog’liq bo’limlar

Ma’lumotlar sxemalari va ularning evolyutsiyasi, Ma’lumotlarni validatsiya qilish, DataOps-amaliyotlar, Anomaliyalar va korrelyatsiyalar tahlili, API analitikasi va metrikalari, Ma’lumotlarni klaster qilish, O’lchamlarni kamaytirish, MLOps: modellardan foydalanish.

Jami

Tahliliy omborni indekslash «hamma narsaga indeks yaratish» emas, balki strategiyadir. To’g "ri partiyalar va saralash, data skipping va bloom, puxta o’ylangan MV/proyeksiyalar va muntazam kompaksiya nazorat qilinadigan qiymatda va maxfiylik uchun xavfsiz bo’lgan tezkor va oldindan aytib bo’ladigan so’rovlar beradi. iGaming uchun bu SLA va byudjet doirasida to’lovlar, provayderlar va RG/AML bo’yicha tezkor yechimlarni anglatadi.

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.