Data Lake va markazlashtirilgan saqlash
(Bo’lim: Texnologiyalar va infratuzilma)
Qisqacha xulosa
Data Lake - xomashyo va konsolidatsiyalashgan datasetlarni markazlashtirilgan saqlashning bazaviy qatlami. iGaming uchun u OLTPdan stavkalar/to’lovlar/o’yin daftarlari, sheriklik yuklamalari, CDClarni qabul qiladi va ularni tahlilchilarga, antifrodga, CRM va BI ga beradi. Zamonaviy amaliyot - Lakehouse: ochiq ustunli formatlar + ACID-jadval qatlami + yagona katalog + tranzaksiyalar/ma’lumotlar versiyasi. Muvaffaqiyat kaliti - sxemalar va partiyalashtirish intizomi, qiymatni boshqarish, PII xavfsizligi va qatʼiy operatsion madaniyat (DQ, lineage, DR).
iGaming platformasidagi Data Lake roli
Tahlil uchun yagona haqiqat nuqtasi: xom va tozalangan ma’lumotlarni manbai va formatidan qat’i nazar saqlash.
Moslashuvchanlik: batch va streaming (CDC/konnektorlar, event-strimlar) ni qo’llab-quvvatlash.
Evolyutsiya: xom Bronzadan Silver konformiga va Gold biznes-vitrinalariga.
Mas’uliyat bo’linishi: prod-servislar shina/steyjingga yoziladi, analitika/ML Lake qatlamlaridan iste’mol qiladi.
Arxitektura modellari: Lake vs Lakehouse
Data Lake (S3/ADLS/GCS + Parquet/ORC): schema-on-read, arzon saqlash, formatlarning moslashuvchanligi.
Lakehouse (Delta/Iceberg/Hudi Parquet ustidan): ACID tranzaksiyalari, upsert/merge, time-travel, ixcham fayllar, vakuum, indeksatsiya/klasterlash.
Amaliyot: iGaming uchun Lakehouse asosiy qatlam sifatida foydalidir, tashqi OLAP (ClickHouse/BigQuery/Snowflake/Pinot) esa vitrinalar va maxsus dvigatellarga o’xshaydi.
Qatlamlarning medalyon modeli
Bronze (Raw/Staging): manbalardan olingan xom fayllar (CDC, log-damplar, sherik CSV, webhooks). Minimal validatsiya, «bo’lgani kabi».
Silver (Conformed): tozalash/dedup, valyuta/vaqt zonalarini normallashtirish, turlarni keltirish, SCD o’lchash, konsistent kalitlar.
Gold (Marts/Serving): GGR/NGR/LTV/Retention uchun agregatlar, BI/CRM/antifrod ostidagi materiallashtirilgan vitrinalar.
TTL: Bronze uchun tajovuzkor, Silver uchun mo’tadil, Gold agregatlarida uzoq muddatli.
Formatlar va jadval qatlamlari
Kolonochnыe: Parquet (de-fakto standarti), ORC.
Ochiq jadval formatlari (ACID):- Delta Lake - tranzaksiyalar, «MERGE», time-travel, optimallashtirish/vakuum, Z-order.
- Apache Iceberg - manifestlar/snapshotlar bilan jadvallar, yashirin partiyalashtirish,’MERGE/DELETE/UPDATE’, time-travel.
- Apache Hudi - copy-on-write/merge-on-read, upsert-optimallashtirish, inkremental ekstraksiyalar.
- Ekotizim va upsert/striming/moslashuvchanlik sxemalari bo’yicha tanlang.
Katalog va metastor
Yagona katalog (Hive Metastore/Unity/Glue/platforma kataloglari) sxemalar, partiyalar, versiyalar, huquqlarni saqlaydi.
Talablar: jadval qatlami bilan tranzaksion muvofiqlik, bir nechta dvigatellarni qo’llab-quvvatlash (Spark, Trino/Presto, Flink, dbt), audit/lineage.
Sxemalar va evolyutsiya
Schema contract: Majburiy maydonlarni, turlarni, semantikani belgilang; manbalarni versiya qiling (’schema _ version’).
Evolyutsiya: ixtiyoriy maydonlarni qo’shish, migratsiyasiz buzuvchi o’zgarishlarni taqiqlash; payplaynlarda avtomatik sxema-chekyerlar.
PII segmentatsiyasi: sezgir maydonlar - shifrlangan va alohida huquqlarga ega bo’lgan alohida ustun/jadvallarga.
Partiyalash va lay-out ma’lumotlari
Sana/soat - voqealar uchun bazaviy kalit; qo’shimcha:’country’,’product’,’tenant _ id’.
Hive-style путь: `s3://lake/bronze/payments/source=pspA/dt=2025-11-05/hour=13/part-0001. parquet`.
Klaster/saralash: Z-order/Sort keys tez-tez filtrlanadigan maydonlarda (player_id, country).
Fayl o’lchami: 128-1024 MB; «small files» dan qoching (quyida qarang).
Yashirin partiyalashtirish uchun virtual ustunlar (Iceberg/Delta).
Small files va kompakshn muammosi
Manbalar kichik changlarni oqizadi → skanlar va meta-ma’lumotlarning degradatsiyasi.
Yechim: davriy optimize/compaction (coalesce), compaction-vazifalarni rejalashtiruvchi, ingestion uchun batch-mikro-bundle,’autoOptimize’(agar mavjud bo’lsa).
Merge-on-read vs copy-on-write - yozuv latentligi va oʻqish tezligi oʻrtasidagi muvozanat.
Injest: batch, stream, CDC
OLTP dan CDC (Debezium/konnektorlar) → Bronze (bir daqiqalik yangilik).
Stream (Kafka/Flink/Spark Structured Streaming) → Silver/Gold inkremental (upsert/merge).
Batch (sheriklik hisobotlari/CSV/JSON) - manifestlari bo’lgan «qabul qilgichlar» orqali, checksum bo’yicha dubllarni nazorat qilish.
Idempotency: keys (idempotency_key), dedup po (key, ts), «suv belgilari» (watermarks).
Maʼlumotlar sifati (DQ) va lineage
DQ-cheklar: kalitlarning to’liqligi, noyobligi, diapazonlari, referens yaxlitligi (mamlakatlar/valyutalar ro’yxati), biznes qoidalari (GGR ≥ 0).
Liniedj: hisobotdan manbagacha bogʻliqlik grafigi, model kodining versiyasi va jadvalning snapshoti.
Sxemalarni nazorat qilish: «buzuvchi» o’zgarishlarni bloklovchi avtomatik back/forward-compat testlari.
Yuklash auditi: kim/qachon/qancha, rad etilgan partiyalar, retralar.
Serving va kirish
SQL-dvigatellar: ad-hoc va transformatsiyalar uchun Spark/Trino/Presto; ELT modellari uchun dbt.
Real-time/near-real-time: Pinot/Druid/ClickHouse vitrinalar sifatida; Lakehouse - inkremental sink orqali manba.
Data Sharing: jadvallar/snapshotlarni tashqi jamoalarga nusxasiz sharing qilish (agar format qoʻllanilsa).
Xavfsizlik, PII va ko’p tenantlik
Shifrlash: at-rest (KMS) va in-transit (TLS).
IAM/RBAC/ABAC: katalog/jadval/ustunlar/satrlar darajasidagi rollar (niqoblash, dinamik siyosatlar).
Mintaqalar bo’yicha segmentatsiya (EI/Turkiya/LatAm mahalliylashtirish): baketalar va hisoblash pullarini izolyatsiya qilish.
Ko’p tenantlik: namespace/yo’llar kataloglari va prefikslari,’tenant _ id’bo’yicha filtrlar, ixtiyoriy ravishda - row-level policies.
Foydalanish auditi: meta ma’lumotlarni o’qish/o’zgartirish daftarlari, retenshn va modifikatsiya qilinmaydigan jurnallar.
Qiymatni boshqarish
Saqlash sinflari: standart sinfda issiq (tez-tez o’qiladigan), TTL siyosatchilari bo’lgan sovuq/Glacier sinflarida arxiv.
Partiyalash/klasterlar $ dan kam bo’lgan skanerlarni kamaytiradi.
Qimmatbaho hisobotlar uchun materiallashtirilgan vitrinalar; BI natijalari keshi.
Kompakshn va «to’g’ri fayl o’lchami» - meta ma’lumotlardan va I/Odan kam.
Kvotalar va budjetlashtirish: compute-klastyerlar/joblar uchun limitlar, sana/jamoa qiymati bo’yicha hisobotlar.
Chiqindilarni olib tashlash: «VACUUM/REWRITE» jadval formatlarida, TTL Bronze.
DR va takrorlanuvchanlik
Jadvallarni (time-travel) va katalog snapshotlarini versiya qilish.
Baketlar va meta ma’lumotlarning kross-mintaqaviy replikatsiyasi.
PITR: jadvallar tranzaksiya daftarlari (Delta/Iceberg/Hudi) va payplayn daftarlarini saqlash.
Game-day: hududlarni qayta tiklash va almashtirishning muntazam mashqlari.
Kuzatish darajasi va SLO
SLO yangiligi: Bronze ≤ 5 min, Silver ≤ 15-30 min, Gold ≤ 60 min (misol).
Metrika: fayllar hajmi/soni, parket faylning o’rtacha o’lchami, skanlar vaqti, o’tkazib yuborilgan partiyalar ulushi, compaction chastotasi, qiymat/sanaset, DQ xatolari, kechiktirilgan ma’lumotlar.
Alertlar: small files ko’tarilishi, qiymatning o’sishi, p95/p99 tanazzulga uchrashi, DQ/sxemalarning buzilishi, strim-sinklarning orqada qolishi.
Neyming va yo’llar konvensiyalari (shablon)
s3://<lake>/<layer>/<domain>/<dataset>/
source=<sys>/ # для Bronze dt=YYYY-MM-DD/
hour=HH/
country=XX/
Datasetlarning nomlari:’bets _ raw’,’payments _ cdc’,’players _ silver’,’mart _ ggr _ daily’.
Meta ma’lumotlar ustunlari:’ingest _ ts’,’source’,’schema _ version’,’trace _ id’,’tenant _ id’.
Namunalar (umumlashtirilgan)
1) Iceberg: sana bo’yicha yashirin partiyali Silver jadvali
sql
CREATE TABLE silver. bets (
bet_id BIGINT,
player_id BIGINT,
country STRING,
stake DECIMAL(18,2),
win DECIMAL(18,2),
event_ts TIMESTAMP,
ingest_ts TIMESTAMP,
schema_version INT
)
PARTITIONED BY (days(event_ts))
TBLPROPERTIES ('format-version'='2');
2) Delta: CDC dan inkremental upsert
sql
MERGE INTO silver. players t
USING bronze. players_cdc s
ON t. player_id = s. player_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
3) Bronze uchun TTL siyosati (g’oya)
bronze/: keep 30 days silver/: keep 365 days (non-PII), 90 days (PII masked)
gold/marts/: keep 2–3 years (aggregated)
Joriy etish chek-varaqasi
1. Tabl formatini (Delta/Iceberg/Hudi) va katalogni tanlang; (Spark/Trino/Flink/dbt).
2. Medalyon qatlamlari, TTL qoidalari va buyruqlarning javobgarligini aniqlang.
3. Schema contracts, evolyutsiya nazorati, PII segmentatsiyasi va shifrlash.
4. Lay-out loyihasini loyihalashtiring: partiyalar, nav-kalitlar, faylning maqsadli oʻlchami; compaction.
5. Indempotentlik va dedup bilan ingest (CDC/stream/batch) ni moslash.
6. DQ/lineage, meta maʼlumotlar katalogi va auditni kiriting.
7. SLOni yangilik/qiymat, metrik dashbordlar va alertlarni aniqlang.
8. DRni tashkil qiling: snapshotlar/replikatsiya/tiklash + muntazam mashqlar.
9. Neyming va yo’llarni, metakolonkalarni (’ingest _ ts’,’source’,’schema _ version’) standartlashtiring.
10. Gold-vitrinalar va real-time servingni mos OLAP/RT dvigatellariga olib chiqing.
Antipatternlar
Qatlamsiz bitta umumiy «qopcha» va TTL → xaos va portlash qiymati.
Mamlakat/mahsulotni hisobga olmagan holda faqat vaqt bo’yicha partiyalashtirish → og’ir skanerlar.
Minglab kichik fayllarni/soatni yaratadigan oqimlar compaction emas.
Sxemalar va DQ nazorati yo’qligi → «buzuvchi» o’zgarishlar va hisobotlarga ishonchsizlik.
Huquqlarni yashirmasdan/ajratmasdan PIIni Gold-vitrinalar bilan aralashtirish.
Katalog va jadval siyosati o’rniga baketalar darajasida kirish huquqining hardkodi.
Yakunlar
iGaming uchun zamonaviy Data Lake - bu ochiq jadval formatidagi Lakehouse, yagona katalog va medalyon modeli. Sxemalar/partiyalar intizomi, compaction vs small files, DQ/lineage, PII-xavfsizlik va qiymat gigiyenasi lake-qatlamni barqaror poydevorga aylantiradi: saqlash uchun arzon, o’qish uchun tezkor, SLO bo’yicha oldindan aytib bo’ladigan va DROga tayyor. Bunday poydevor turnir cho’qqilariga ko’paytiriladi va uni qo’llab-quvvatlaydi va batch va near-real-time vitrinalar.