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.
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.
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.