GH GambleHub

Analitik va ETL konveyerlari

(Bo’lim: Texnologiyalar va infratuzilma)

Qisqacha xulosa

Tahliliy konveyer iGaming operatsion hodisalarini (stavkalar, depozitlar, PSP vebxuklari, o’yinlar loglari) barqaror metrik vitrinalarga (GGR/NGR, LTV, retenshn, antifrod-signallar) aylantiradi. Tayanch prinsiplari: qatlamlarning yagona modeli (Bronze/Silver/Gold), DQ/lineage instrumental intizomi, inkrementlik va idempotentlik, kuzatuv va SLO, qiymat nazorati. Qarorlar yuklama (turnirlarning cho’qqisi), tartibga solish (PII/mahalliylashtirish) sohasi va biznesning ma’lumotlarning yangiligiga bo’lgan talablarini hisobga olgan holda qabul qilinadi.

1) Arxitektura: ETL vs ELT, batch vs stream

ETL (Extract → Transform → Load): DWHga yuklashdan oldingi transformatsiyalar. Transformatsiyalar «bulutgacha» nazorat qilinadigan muhit/sirlarni talab qiladigan joylarga mos keladi.
ELT (Extract → Load → Transform): Lake/Lakehouse/DWH xomashyosi, keyingi o’rinlarda SQL/dvigatel (dbt/SQL-skriptlar). Ustunli dvigatellar va moslashuvchan iteratsiyalar uchun qulay.
Batch: rejalashtirilgan derazalar (har 5/15/60 daqiqada, nightly). Arzon va oldindan aytish mumkin.
Stream: почти real-time (Kafka → Flink/ksqlDB → OLAP). near-real-time (5-60 soniya) va antifrod/CRM signallari uchun.
Gibrid: Bronze oqim bilan to’ldiriladi, Silver/Gold - inkremental batch modellari.

Tavsiya: iGaming’da ELT + strimingni saqlash: CDC/outbox → Bronze (bir daqiqalik yangilik) orqali voqealar, Silver/Gold’da inkremental transformatsiyalar.

2) Qatlamli model (Medallion)

Bronze (Raw): xom voqealar/CDC biznes-mantiqsiz. Parquet/ORC formatlari, sxemalar mavjud, minimal validatsiya.
Silver (Conformed): tozalash, deduplikatsiya, identifikatorlarni normallashtirish, SCD o’lchashlar, valyuta/vaqt zonalarini birxillashtirish.
Gold (Marts): biznes-vitrinalar (faktlar/o’lchovlar, kublar), materialized views, predagregatsiya (kunlar/mamlakatlar/mahsulotlar).

Afzalliklari: takrorlanuvchanlik, shaffof evolyutsiya, qatlamlar bo’yicha turli SLO va TTL.

3) Manbalar va yuklash: CDC, outbox, fayllar

CDC (Change Data Capture): OLTP (Postgres/MySQL) dan tartib va idempotentlik kafolati bilan oʻzgarishlar oqimi.
Outbox-pattern: hodisalar outbox jadvaliga/toʻplamiga servisning tranzaksiyasida yoziladi → konnektor shina/koʻlga joylashtiradi.
Fayl yuklash: PSP yuklash, sheriklik hisobotlari; manifestlar, dubl nazorati (checksum) va qabul qilish kataloglaridan foydalaning.

Amaliyotlar: manbalar versiyalashtiriladi (schema version), har bir manba uchun - dalalar va sifat kutish kontrakti.

4) Orkestratsiya: DAG, qaramlik, deploy

DAGi: aniq qaramlik (raw → staging → dims → facts → marts).
Vazifalarning o’zgaruvchanligi: nojo’ya ta’sirlarsiz qayta ishga tushirish (partition-overwrite,’MERGE ’/upsert).
Atrof-muhitni ajratish: Dev/Stage/Prod, artefaktlarni targ’ib qilish, qimmatbaho backfill uchun «qo’l darvozasi» (manual approval).
Rejalashtirish: cron/vaqtinchalik derazalar + event-triggerlar (fayllar/partiyalar kelganda).
Sirlar: sir-menejerdan; DAG kodidagi sirlarni taqiqlash.

Abstrakt DAG (psevdokod) misoli:
python with DAG("dwh_daily", schedule="0  ") as dag:
bronze = ingest_cdc(source="payments", partition=hour())
silver = dedup_normalize(input=bronze)
dims  = build_dimensions(input=silver)
facts = build_facts(input=silver, dims=dims)
marts = build_marts(input=facts)
bronze >> silver >> [dims, facts] >> marts

5) Ma’lumotlar sifati (DQ) va lineage

DQ-cheklar: to’liqligi (count, late arrivals), kalitlarning o’ziga xosligi, diapazonlari/domen qoidalari (yig’indisi ≥ 0, ma’lumotnomadagi valyuta).
Ishga tushirish chegarasi: jadvalning tanqidiyligiga qarab alert bilan qattiq/soft-fail.
Lineage/katalog: reportdan manbagacha (jadvallar, ustunlar, metriklar), egalari, hujjatlar, PII tasnifi.
Sxemalarni boshqarish: avtomatik muvofiqlik testlari (backward-/forward-compatible), «buzuvchi» oʻzgarishlar uchun alert.

6) Modellashtirish: SCD, surrogate keys, normallashtirish

SCD2’valid _ from/valid _ to/is _ current’, surrogate key (’_ sk’) va natural kalit (’_ id’).
SCD1: ahamiyatsiz atributlar uchun qayta yozish (masalan, interfeys lokali).
Surrogate keys: barqaror’_ sk’join uchun, natural keys - noyoblik uchun.
O’lchovlarni normallashtirish: ierarxiya chuqur bo’lgan snowflake; aks holda, yulduz tezlik uchun.

7) Inkremental modellar va partiyalashtirish

Suv belgisi (’updated _ at’,’ingest _ ts’): faqat yangi/oʻzgartirilgan satrlarni oʻqish.
Biznes-kalitlar bo’yicha «MERGE», partiyalar bo’yicha «INSERT OVERWRITE», kichik partiyalar uchun «DELETE + INSERT» inkremental strategiyalari.
Partiyalashtirish: sana/soat/mintaqa bo’yicha; filtrlash kalitlari va join bo’yicha klaster (sort keys/Z-order).
Materiallashtirilgan tushunchalar: GGR/NGR oldindan agregatsiya qilish, ommabop kesimlar kesimi.
Approx-agregatlar: arzon top-N vitrinalar uchun HLL/approx_distinct.

Inkremental’MERGE’misoli (umumlashtirilgan):
sql
MERGE INTO fact_deposits f
USING staging_deposits s
ON (f. deposit_id = s. deposit_id)
WHEN MATCHED THEN UPDATE SET amount = s. amount, status = s. status, updated_at = s. updated_at
WHEN NOT MATCHED THEN INSERT (...)
VALUES (...);

8) Backfill, reprocessing va tarixni boshqarish

Backfill: resurslar limitlari va derazalari bo’lgan alohida DAGlar; aniq «haqiqat oynasi» (masalan, 2024-01-01.. 2025-11-05).
Reprocessing: determinizatsiya qilingan transformatsiyalar → qayta ishlash bir xil natija beradi. Model kodining versiyalarini loglash.
Time-travel/jadvallar versiyasi: tekshiruvlar va DR «mantiqiy xatolar» uchun qulay.
Retraction: protokollash bilan ma’lumotlarni ko’rib chiqish (o’chirish/tuzatish) siyosati.

9) konveyerning CLO/SLA/SLO

Tazelik (freshness): Bronze ≤ 1-5 daqiqa, Silver ≤ 15 daqiqa, Gold ≤ 60 daqiqa (misol).
Ishonchlilik: DAGning muvaffaqiyatli progonlari foizi ≥ 99. x%.
Unumdorligi: p95/p99 tugun uzunligi; partiya uchun vaqt budjeti.
Lag monitoring: ingest-strimning orqada qolishi, navbatlar chuqurligi, «late data» ulushi.
Alertlar: yangilik/hajmning buzilishi, DQ-fayllar, skanlar qiymatining oshishi, MV degradatsiyasi.

10) Qiymati: prognozlashtirish va maqbullashtirish

Partiya va klasterlar skanerlar hajmini kamaytirmoqda.
Issiq markerlarni materiallashtirish (kunlar/mamlakatlar/mahsulotlar).
Tez ishlatiladigan dashbordlar uchun natijalar/MVs kesh.
Qayta ishga tushirish chastotasini nazorat qilish (sababsiz har 5 daqiqada).
TTL: agressiv retenshn Bronze, o’rta Silver, uzun Gold (faqat agregatlar).
Capacity planning: katalogli metriklar, turnirlar/kampaniyalar cho’qqilarini prognoz qilish.

11) Xavfsizlik, PII va mahalliylashtirish

Ma’lumotlar tasnifi: PII/moliyaviy/operatsion.
Shifrlash: tinch va tranzit; KMS/rolga asoslangan kirish.
De-identifikatsiya: xeshlash/maskalash, kalitli alohida ustunlar.
Ko’p tenantlik uchun RLS/vyuxlar (’tenant _ id’bo’yicha).
Mahalliylashtirish: hududlar bo’yicha saqlash va qayta ishlash zonalari (EU/TR/LATAM); faqat ruxsat etilgan joylarga eksport qilish.
Audit: tanqidiy jadvallarga oʻqish/yozish, katalogga kirish.

12) Kuzatish darajasi: metriklar, loglar, treyslar

Konveyer metrikasi: vazifalar davomiyligi, navbat, xatolar, retralar, qayta ishlangan baytlar/satrlar hajmi, qiymati.
Logi: strukturalangan; ’trace _ id ’/’ run _ id’ bo’yicha korrelyatsiya.
Treysing: manbadan vitrinagacha (ingest → transform → load → BI).
Dashbordlar: qatlamlarning yangiligi, DAGlarning muvaffaqiyati, eng qimmat so’rovlar, p95/p99.

13) Asboblar (rollar bo’yicha mo’ljallar)

Orkestratsiya: DAG-orkestratorlar (rejalashtiruvchi, retrajlar, alertlar, sirlar bilan).
Transformatsiyalar: SQL-modellashtirish («kod sifatida modellar»), modellarning yunit-testlari, hujjatlar.
DQ/kontraktlar: tekshirish freymvorkalari va maʼlumotlar toʻplamiga SLA.
Lineyj/katalog: bogʻliqlik grafigini avtomatik tuzish, egasini qidirish.
Striming: oyna/agregatsiya protsessorlari, sink/source konnektorlari.

(Aniq vendorlar kompaniya steki va xavfsizlik talablari uchun tanlanadi.)

14) Namunalar

GGR vitrin namunasi (umumlashtirilgan SQL)

sql
CREATE OR REPLACE TABLE mart_ggr_daily AS
SELECT
DATE(b. ts) AS d,
c. country_code,
SUM(b. stake) AS stake_sum,
SUM(b. win)  AS win_sum,
SUM(b. stake - b. win) AS ggr
FROM fact_bets b
JOIN dim_country c ON c. country_sk = b. country_sk AND c. is_current
WHERE b. ts >= DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY)
GROUP BY d, c. country_code;

«Suv belgisi» bo’lgan inkremental model

sql
INSERT INTO fact_bets PARTITION (dt)
SELECT
FROM staging_bets
WHERE updated_at > (SELECT COALESCE(MAX(watermark), '1970-01-01') FROM _meta_watermarks WHERE table='fact_bets');
-- then update watermark

DQ-tekshirish (g’oya)

sql
-- 1) key uniqueness
SELECT deposit_id FROM fact_deposits GROUP BY deposit_id HAVING COUNT()>1;

-- 2) negative amounts (error)
SELECT FROM fact_deposits WHERE amount < 0;

15) Joriy etish chek-varaqasi

1. Metrik lugʻatni (GGR/NGR/LTV/Retention) va egalarini aniqlang.
2. SLOni Bronze/Silver/Gold qatlamlari bo’yicha o’rnating.
3. Manbalar shartnomalarini (sxemalar, DQ, SLA) standartlashtiring.
4. DAG-grafini indempotent qadamlari va alohida sirlari bilan tuzing.
5. Inkrementallik (MERGE/overwrite) va «suv belgilari» ni amalga oshiring.
6. DQ (tanqidiy/yumshoq tekshiruvlar), lineage va maʼlumotlar katalogini kiriting.
7. Kuzatish darajasini (metriklar, loglar, treyslar) va alertlarni sozlang.
8. Retenshn/TTL va backfill/reprocessing siyosatini kiriting.
9. PII nazorati, shifrlash, RLS va mahalliylashtirishni taʼminlang.
10. Game-day’ni o’tkazing: manbaning qulashi, «buzuvchi» sxemalar, ommaviy backfill.

16) Antipatternlar

Partiyasiz va inkrementalsiz «Bitta tungi ETL».
DQ va lineage yo’qligi → qarama-qarshi hisobotlar va «arvohlarni ovlash».
Har bir ishga tushirishda jadvallarni to’liq qayta ishlash (qiymatni portlatish).
Tamponsiz/retrajsiz qattiq aloqa.
PII va ochiq vitrinalarni segmentatsiya va niqobsiz aralashtirish.
Retraction/oʻchirish siyosati mavjud emas (xatolarni tuzatib boʻlmaydi).

Yakunlar

iGaming’da barqaror tahliliy konveyer - bu ELT + strimingli qattiq DQ/lineage, inkremental modellar, shaffof orkestrator va o’lchaydigan SLOli qatlamli modelga yuklash. Xarajat nazorati, PII/mahalliylashtirish siyosati, muntazam backfill/DR mashqlarini qo’shing - va sizning tahliliy platformaniz biznesga kerakli yangilik va sifat ma’lumotlari bilan javob beradigan turnir cho’qqilariga aylanadi.

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.