GH GambleHub

Ma’lumotlar sxemalari va ularning evolyutsiyasi

1) Nima uchun iGaming platformasi

Ishonchlilik: maʼlumotdagi oʻzgarishlar hisobotlar, API va modellarni buzmaydi.
Fich tezligi: strimlarni toʻxtatmasdan xavfsiz ravishda (KYC/RG/PSP) qoʻshing.
Tartibga solish: kuzatilishi va takrorlanuvchanligi (audit/lineage, DSAR, Legal Hold).
Qiymati: «to’kilishlar» ni va backfilllarning pastligini kamaytiramiz.

2) Sxemalar turlari va ular yashaydigan joy

Hodisalar (oqimlar):’payments. deposit_accepted`, `game. round_finished`.
OLTP/DDL: normallashtirilgan jadvallar (KYC, akkauntlar, limitlar).
DWH/vitrinalar (Gold): BI/ML ostidagi denormallashtirilgan agregatlar.
Feature Store: muvofiqlik kafolatlari bilan onlayn/oflayn fich-setlar.
Tashqi hamkorlar shartnomalari: PSP, oʻyin provayderlari, marketing manbalari.

Notalar: Yevro/Protobuf (oqimlar), JSON Schema (integratsiyalar), SQL DDL (DWH), Parquet schema (lake).

3) Muvofiqlik (evolyutsiya yadrosi)

Backward-compatible: yangi prodyuserlar → eski konsumerlar (c default/nullable maydoni qoʻshilgan).
Forward-compatible: eski prodyuserlar → yangi konsumerlar (yangi o’quvchi ortiqcha narsaga e’tibor bermaydi).
Full-compatible: ikkalasi ham (istalgan maqsad).
Breaking-changes: maydonni qayta nomlash/olib tashlash, turni/semantikani oʻzgartirish, kalitni/partitioning oʻzgartirish.

1-qoida: voqealar qo’shish orqali rivojlanadi, o’zgartirish orqali emas.
2-qoida: o’chirish - faqat MAJOR sxema versiyasida deprekeyt davridan keyin.

4) Semantik versiyalar va siyosatlar

`MAJOR. MINOR. PATCH’har bir sxema/vitrin/fich-set uchun.

MAJOR - mos kelmaydigan (yangi topic/jadval/fich-set, dual-run).
MINOR - mos keladi (yangi nullable/default maydonlari, yangi enum qiymatlari).
PATCH - tavsiflar/limitlar/sharhlarni tuzatish.

Maydon hayoti:’experimental → active → deprecated → removed’(sana va egasi bilan).

5) Sxemalar reyestri va ma’lumotlar kontraktlari

Schema Registry: versiyalar, moslik, evolyutsiya va egalarini saqlaydi.
Data Contract: + SLO sifat sxemasini + maxfiylikni belgilaydi («Maʼlumotlarni validatsiya qilish» boʻlimiga qarang).

Misol (Yevro, payments. deposit_accepted v1. 7. 0):
json
{
"type":"record","name":"deposit_accepted","namespace":"payments",
"fields":[
{"name":"event_id","type":"string"},
{"name":"occurred_at","type":{"type":"long","logicalType":"timestamp-micros"}},
{"name":"user_id","type":"string"},
{"name":"brand","type":"string"},
{"name":"country","type":"string"},
{"name":"psp","type":"string"},
{"name":"method","type":"string"},
{"name":"amount","type":{"type":"bytes","logicalType":"decimal","precision":18,"scale":2}},
{"name":"currency","type":{"type":"enum","name":"Currency","symbols":["EUR","USD","TRY","BRL"]}},
{"name":"risk_score","type":["null","int"],"default":null},       // MINOR+
{"name":"kyc_level","type":["null",{"type":"enum","name":"Kyc","symbols":["L0","L1","L2","L3"]}],"default":null}
],
"compatibility":"FULL","owner":"team-payments"
}

6) Migratsiya patternlari

6. 1 Voqealar (oqimlar)

Additive-only: default/nullable bilan maydonlarni qoʻshing; eski konsumerlar buzilmaydi.
Enum-kengaytmalar: yangi belgilar MINOR hisoblanadi, konsumerlar’else/unknown’filialiga ega boʻlishlari shart.
MAJOR migratsiyasi: yangi topic’payments. deposit_accepted. v2’, dual-write, shadow-reads, so’ngra konsumerlarni o’zgartirish.

6. 2 DWH/vitrinalar

Blue-Green jadvallari:’gold. ’v1’ yonidagi revenue_v2'; materiallashtiramiz, solishtiramiz, BI o’tkazamiz.
Backfill: snapshotlar + idempotent merge (kalitlar/versiyalar boʻyicha).
SCD: sekin o’zgaruvchan atributlar uchun 2-tur (limitlar, KYC, VIP-maqomlar).

6. 3 Feature Store

Dual-serve: eski fich-setga yangisiga parallel ravishda xizmat ko’rsatiladi; model router orqali xizmat ko’rsatiladi.
Point-in-time muvofiqlik: evolyutsiya PITA-joylarni buzmasligi kerak (MINORda timestamp/granulyarlik o’zgarmaydi).

7) O’zgarishlar taksonomiyasi (chek-varaq)

Xavfsiz (MINOR):
  • ’nullable/default’ maydonini qoʻshish;
  • enum kengaytirish (’unknown’- iste’molchida tarmoq);
  • kalitsiz indeks/sharh/tavsifni qoʻshish.
Shartli xavfsiz:
  • masshtab/birliklarning o’zgarishi (masalan, amount tsentda → asosiy valyutada) - faqat MAJORda;
  • ma’lumotnoma/referensni ko’chirish - taqdimot qatlami orqali amalga oshiriladi.
Buzuvchi (MAJOR):
  • maydonni qayta nomlash/olib tashlash;
  • / formatini/kalitini/partition oʻzgartirish;
  • semantikaning o’zgarishi (masalan,’bonus _ amount’dan’hisoblangan’→’hisobdan chiqarilgan’).

8) Sxemalar linterlari va muvofiqlik testlari

Schema-lint: nomlar uslubi (’snake _ case’), majburiy belgilar (’owner’,’doc’,’pii’), sana/valyuta formati.
Compat-tests: yangi versiyani reyestrga qarshi tekshirmoqdamiz (backward/forward/full).
Consumer-contract-tests: har bir xizmat «foydali yuk namunasi» va kutish; sxemani o’zgartirganda CI ga haydaymiz.
Golden-datasets: haqiqiy va «yovuz» misollar to’plami (yangi enum, bo’sh/kech maydonlar, so’mlarning chegaraviy qiymatlari).

9) Ma’lumotnomalar, enum va mahalliylashtirish

Reference-data (mamlakatlar/valyutalar/PSP/provayderlar): yangilanishlarning alohida versiyalari va SLA; hodisa kodiga tikmaslik.
Locale/Soat zonalari: UTC ni hodisalarda saqlash + taqdimot uchun aniq lokal.
Yurisdiksiya qoidalari: yoshga oid bayroqlar, promo cheklovlari - amal qilish sanalari ko’rsatilgan ma’lumotnomalar tarzida.

10) Multibrend/multiyurisdiksiyalar va PII

Tenant-izolyatsiya:’brand’,’country’,’license’- enum bilan majburiy dalalar; ular bo’yicha routing.
PII-siyosat sxema darajasida:’pii = true’maydonlarini belgilaymiz, niqob/tokenizatsiyani qo’llaymiz; hodisalarda - faqat tokenlar.
DSAR: olib tashlash/qidirish uchun’source _ id/trace _ id’mavjud; MAJOR-migratsiyalarda Legal Hold.

11) DDL va Lake versiyalari

DDL migratsiyasi: deklarativ migratsiya (Liquibase/Flyway/dbt), VCSda saqlash, domen egasi tomonidan g’azab bilan.
Lake formatlari: Euro/Parquet - maydonlarning evolyutsiyasini qayd etamiz; MAJOR - yangi jadval/yo’l’.../v2/’.
Partitioning: partiyalar o’zgarishi (masalan,’date’→’date, brand’) - faqat MAJOR va qo’sh yozuv orqali.

12) iGaming misollari

12. 1 PSP usullarini kengaytirdi

Enumga’method =’MEFETE’qoʻshilgan.
MINOR’deposit _ accepted v1 sxemasining chiqarilishi. 8. 0`; MEFETEni bilmaydigan konsumerlar’unknown _ method’tarmog’iga yuboradilar.

12. 2 O’yin provayderi maydon qo’shdi

V’game. round_finished'’jackpot _ id’(nullable) qoʻshilgan.
Vitrin’gold. game_rounds_v3' MINOR oladi; eski hisobotlar ishlaydi, yangilari jekpotlarni hisoblaydi.

12. 3 RG atributlari

’self _ excluded’ dan status’rg _ state ∈ {none, limit, cooldown, self_excluded}' - MAJOR, yangi topic + dual-write + vitrinalar va modellar migratsiyasiga oʻtish.

13) Evolyutsiya jarayoni (g’oyadan o’zgarishgacha)

1. Proposal (ADR): nima uchun biz o’zgartiramiz, muvofiqlik turi, xavf-xatar va ta’sir ko’rsatgan iste’molchilarni baholash.
2. Dizayn va kontrakt: reyestrdagi sxema, semver, muvofiqlik siyosati.
3. Testlar: linters, compat, consumer-contracts, golden-setlardagi replay.
4. Joylashtirish: dual-write/blue-green/shadow-reads; alertlar.
5. Solishtirish: biznes-balanslar/invariantlar («Ma’lumotlarni validatsiya qilish» ga qarang).
6. Switch: konsumerlarni/BI/fichlarni almashtiring.
7. Deprecate: freze eski sxema, grace-period, olib tashlash va arxiv.

14) Metrika va evolyutsiya SLO

Success-rate migratsiyasi, dual-run vaqti, yangi formatdagi voqealar ulushi, backfill hajmi, lag/freshness.
Moslik hodisalari (P1/P2), vitrinalar sifati.
Cost: $/TB to’kilishi, $/soat dual-write, klaster yuklanishi.
Compliance: 0 PII-sizib chiqish, SLA DSAR/Legal Hold ga rioya qilindi.

15) Asboblar va artefaktlar

15. 1 Muvofiqlik siyosati (reyestr)

yaml schema: payments. deposit_accepted compatibility: FULL default_nulls: true enums:
currency: {allow_new_symbols: true, require_consumer_unknown_branch: true}
pii: false owners: ["team-payments"]
reviewers: ["data-governance","security-dpo"]

15. 2 Migratsiya pasporti (shablon)

yaml change_id: MIG-2025-041 scope: game. round_finished -> v3 type: MAJOR plan:
dual_write: true shadow_reads: consumers: ["gold-rounds","rg-models"]
backfill: {from: "2025-01-01", mode: "idempotent-merge"}
validation:
invariants: ["sum_bets = sum_wins + margin + bonuses"]
freshness_delta_p95_max: "PT5M"
switch_criteria:
error_rate_max: 0. 1%
kpi_diff_pp_max: 0. 5 deprecate_after: "2025-12-31"

15. 3. Nomlar va turlar linteri (qoidalar)

’snake _ case’, UTC timestamps, DECIMAL (18,2) summalari uchun,’country’bo’yicha ISO-3166-1 alpha-2,’currency’bo’yicha ISO-4217.
Enum maydonlari uchun’free _ text’mavjud emas; ma’lumotnomalar - tashqi.

16) Joriy etish yo’l xaritasi

0-30 kun (MVP)

1. Asosiy hodisalar (payments, game_rounds, user) uchun Schema Registry + policy mosligini yoqish.
2. Linterlar/compat-testlar CI; egalari va SLA sharhlar katalogi.
3. ADR shablonlari va migratsiya pasporti; MAJOR chek-varag’i.

30-90 kun

1. Gold-vitrinalar uchun Blue-Green; tanqidiy mavzular uchun dual-write.
2. asosiy servislar uchun Consumer-contract-tests; golden-datasets.
3. Avtomatik diff-solishtirmalar va almashtirishdagi alertlar; qiymat hisobotlari.

3-6 oy

1. grace-period bilan yagona deprecate/remove jarayoni; arxivlash va Legal Hold.
2. Geo/tenant-o’ziga xos sxemalar va shifrlash kalitlari; Sezgir bozorlar uchun DP variantlari.
3. Data dictionary va jonli lineage diagrammalari.

17) RACI

Data Governance (A/R): standartlar, reyestr, migratsiya rivoyati, de-nashr.
Domain Owners (R): maydonlarning ma’nosi, ma’lumotnomalar, biznes invariantlari.
Data Platform (R): reyestr vositalari, compat-testlar, dual-run/backfilllar.
Security/DPO (A/R): PII siyosati, geo/tenant, DSAR/Legal Hold.
SRE/Observability (C): alertlar, evolyutsiya SLO, capacity.
Product/Finance (C): KPI validatsiyasi, almashtirish oynalari.

18) Anti-patternlar

«Uchish maydonini boshqaramiz» versiyasiz va dual-run.
Yangi maydonni qoʻshish oʻrniga nomini oʻzgartirish → ommaviy buzilishlar.
’unknown’ filialisiz qattiq enum → yangi qiymatlarda tushadi.
Barcha yurisdiksiyalar uchun «kodda» yagona ma’lumotnoma.
Idempotent-merge va chek-balanssiz backfill.
Qidirish uchun PII va trace_id boʻlmagan loglar/DSAR.

19) Bog’liq bo’limlar

Ma’lumotlarni validatsiya qilish, Ma’lumotlarning kelib chiqishi va yo’li, DataOps-amaliyotlar, API analitikalari va metrikalari, Audit va versiyadorlik, Ma’lumotlar xavfsizligi va shifrlash, Kirish nazorati, MLOps: modellardan foydalanish.

Jami

Sxemalar evolyutsiyasi - bu bir martalik migratsiya emas, balki jarayon: reyestr, versiyalar va muvofiqlik; «yarim tunda o’tkazgichlar» o’rniga dual-run va blue-green; omad o’rniga muvofiqlik testlari va biznes invariantlari. Shunday qilib, ma’lumotlar barqaror, modellar oldindan aytib bo’ladigan, hisobotlar to’g’ri, regulyatorlar esa xotirjam bo’lib qoladi.

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.