GH GambleHub

Маалыматтар схемалары жана алардын эволюциясы

1) Эмне үчүн iGaming-платформа

Ишенимдүүлүк: маалыматтарды өзгөртүү отчетторду, API жана моделдерин сындырбайт.
Fich ылдамдыгы: коопсуз талааларды кошуу (KYC/RG/PSP) агымдарды токтотуу жок.
Жөнгө салуучу: байкоо жана кайталоо (audit/lineage, DSAR, Legal Hold).
Баасы: минималдаштыруу "ташып" жана downtime backfill.

2) схемалар түрлөрү жана алар жашаган жерде

Окуялар (агымдар): 'payments. deposit_accepted`, `game. round_finished`.
OLTP/DDL: нормалдаштырылган таблицалар (KYC, эсептер, лимиттер).
DWH/Showrooms (Алтын): BI/ML астында Денормалдаштырылган агрегаттар.
Feature Store: ырааттуулук кепилдиктери менен онлайн/оффлайн сүрөт топтомдору.
Тышкы өнөктөштөрдүн келишимдери: PSP, оюн провайдерлери, маркетинг булактары.

Ноталар: Euro/Protobuf (агымдар), JSON схемасы (интеграция), SQL DDL (DWH), Parquet схемасы (лак).

3) шайкештик (эволюция өзөгү)

Backward-compatible: жаңы өндүрүүчүлөр → эски consumers (c default/nullable талаа кошулду).
Forward-compatible: эски өндүрүүчүлөр → жаңы consumers (жаңы окурман ашыкча четке кагат).
Толук-compatible: экөө тең (окуялар үчүн максаттуу).
Breaking-changes: атын өзгөртүү/талааны алып салуу, түрүн өзгөртүү/семантика, ачкычын өзгөртүү/partitioning.

Эреже 1: окуялар өзгөртүү аркылуу эмес, кошумча аркылуу өнүгөт.
Эреже 2: өчүрүү - гана MAJOR нускасын схемасы кийин депрекейт мезгил.

4) Семантикалык версия жана саясат

`MAJOR. MINOR. PATCH 'ар бир схема/витрина/сүрөт топтому үчүн.

MAJOR - шайкеш келбейт (жаңы topic/стол/fich-set, dual-run).
MINOR - шайкеш (жаңы nullable/default талаалар, жаңы enum-баалуулуктар).
PATCH - сүрөттөмөлөрдү/лимиттерди/комментарийлерди оңдоо.

Талаа жашоо айлампасы: 'experimental → active → deprecated → removed' (даталары жана ээси менен).

5) Схемалардын реестри жана маалыматтар контракттары

Schema Registry: версияларын, шайкештигин, эволюциясын жана ээлерин сактайт.
Data Contract: Сапат + SLO + купуялык схемасын белгилейт ("Маалыматтарды валидациялоо" бөлүмүн караңыз).

Мисал (Euro, 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) Миграциянын үлгүлөрү

6. 1 Окуялар (агымдар)

Additive-only: default/nullable менен талааларды кошуу; эски консумерлер сынбайт.
Enum-кеңейтүүлөр: жаңы белгилер MINOR болуп эсептелет, консумерлер 'else/unknown' бутагына ээ болушу керек.
MAJOR-миграция: жаңы topic 'payments. deposit_accepted. v2 ', dual-write, shadow-reads, андан кийин которуу.

6. 2 DWH/айнек

Blue-Green стол: 'gold. revenue_v2' 'v1' жанында; материалдаштырып, текшерип, БИ которуп.
Backfill: snapshot + idempotent merge боюнча реплика (ачкычтар/версиялар боюнча).
SCD: 2 түрү акырындык менен өзгөрүп атрибуттар (чектер, KYC, VIP-статусу).

6. 3 Feature Store

Dual-serve: эски fichset жаңы параллелдүү кызмат; модель роутер аркылуу кызмат кылат.
Point-in-time ырааттуулук: эволюция PITA-джойндорду сындырбашы керек (timestamp/гранулярдуулук MINOR менен өзгөрбөйт).

7) Өзгөрүүлөрдүн таксономиясы (чек-баракчасы)

Коопсуз (MINOR):
  • 'nullable/default' талаа кошуу;
  • enum кеңейтүү ('unknown' -керектөөчүнүн бутагы менен);
  • ачкычсыз индекс/комментарий/сүрөттөмөлөрдү кошуу.
Шарттуу түрдө коопсуз:
  • масштабын/бирдигин өзгөртүү (мисалы, негизги акча менен amount →) - бир гана MAJOR;
  • маалымдаманы/референтти өткөрүп берүү - көрсөтүү катмары аркылуу.
Сынган (MAJOR):
  • атын өзгөртүү/талааны алып салуу;
  • түрүн өзгөртүү/формат/ачкыч/partition;
  • семантиканы өзгөртүү (мисалы, 'bonus _ amount' "чегерилген" → "эсептен чыгарылган").

8) Линтер схемалар жана шайкештик тесттер

Schema-lint: ысымдардын стили ('snake _ case'), милдеттүү белгилер ('owner', 'doc', 'pii'), даталар/валюталардын форматы.
Compat-tests: реестрине каршы жаңы нускасын текшерүү (backward/forward/full).
Consumer-contract-tests: ар бир кызмат "жүк үлгүсү" жана күтүүлөр менен камсыз кылат; схема өзгөргөндө CIге айдайбыз.
Golden-datasets: чыныгы жана "жаман" мисалдардын жыйындысы (жаңы enum, бош/кеч талаалар, суммалардын чек аралары).

9) Колдонмолор, enum жана локализация

Reference-data (өлкөлөр/валюталар/PSP/провайдерлер): айрым версиялар жана SLA жаңыртуулар; кодуна кирбеш керек.
Locale/убакыт тилкелери: окуяларда UTC сактоо + презентация үчүн ачык жергиликтүү.
Юрисдикциялардын эрежелери: курактык желектер, промо чектөөлөрү - жарактуу даталары бар маалымдамалар түрүндө.

10) Мультибренд/мультиюрисдикциялар жана PII

Tenant-изоляция: 'brand', 'country', 'license' - enum менен милдеттүү талаалар; алар боюнча роутинг.
схемасы боюнча PII саясаты: 'pii = true' талааларын белгилөө, маска/tokenization колдонуу; окуяларда - токендер гана.
DSAR: жок кылуу/издөө үчүн 'source _ id/trace _ id' болушу; Legal Hold боюнча MAJOR-көчүрүү.

11) DDL жана Lake чыгаруу

DDL-миграция: декларативдик миграция (Liquibase/Flyway/dbt), VCS сактоо, домен ээсинин ревю.
Lake форматтары: Euro/Parquet - талаалардын эволюциясын жаздыруу; MAJOR - жаңы таблица/жол '.../v2/'.
Partitioning: партияларды өзгөртүү (мисалы, 'date' → 'date, brand') - MAJOR жана кош жазуу аркылуу гана.

12) iGaming мисалдар

12. 1 PSP ыкмаларын кеңейтүү

enum 'method =' MEFETE 'кошулду.
MINOR чыгаруу схемасы 'deposit _ accepted v1. 8. 0`; MEFETE билбеген консюмерлер 'unknown _ method' бутагын жөнөтүшөт.

12. 2 Оюн провайдери талааларды кошту

V 'game. round_finished' 'jackpot _ id' (nullable) кошулду.
Витрина 'gold. game_rounds_v3' MINOR алат; иштеп жатат, жаңылары джекпотторду эсептеп жатышат.

12. 3 RG атрибуттары

'self _ excluded' статусуна өтүү 'rg _ state ∈ {none, limit, cooldown, self_excluded}' - MAJOR, жаңы topic + dual-write + көчүрүү терезелер жана моделдер.

13) Эволюция процесси (идеядан которууга чейин)

1. Proposal (ADR): эмне үчүн өзгөртүп, шайкештик түрү, тобокелдик баа берүү жана керектөөчүлөр таасир этет.
2. Дизайн жана келишим: реестрине схемасы, semver, шайкештик саясаты.
3. Тесттер: linters, compat, consumer-contracts, golden-сеттерде реплика.
4. Жайгаштыруу: dual-write/blue-green/shadow-reads; Алерталар.
5. Салыштыруу: бизнес-баланстар/инварианттар (караңыз "Маалыматтарды валидациялоо").
6. Switch: Consumer/BI/Fich которуу.
7. Deprecate: эски схемасы freeze, grace-мезгил, алып салуу жана архив.

14) Метрика жана SLO Evolution

Success-rate миграциясы, убакыт кош-run, жаңы форматтагы окуялардын үлүшү, backfill көлөмү, lag/freshness.
Инцидент шайкештиги (P1/P2), Vitrins сапаты өткөндөн кийин.
Наркы: $/TB толкун, $/саат эки жолу, кластерди жүктөө.
Compliance: 0 PII-агып, SLA DSAR/Юридикалык Hold сакталат.

15) Аспаптар жана экспонаттар

15. 1 Шайкештик саясаты (реестр)

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 Миграция паспорту (шаблон)

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 Линтер аттары жана түрлөрү (эрежелер)

'snake _ case', UTC timestamps, DECIMAL (18,2) суммалар үчүн, 'country' alpha-2 ISO-3166-1 боюнча, 'currency' ISO-4217 боюнча.
Жок 'free _ text' enum талаалары үчүн; маалымдамалар - тышкы.

16) Ишке ашыруунун жол картасы

0-30 күн (MVP)

1. Негизги окуялар үчүн Schema Registry + policy шайкештикти киргизүү (payments, game_rounds, user).
2. Линтер/compat-тесттер CI; ээлеринин каталогу жана SLA сын-пикирлер.
3. ADR үлгүлөрү жана миграция паспорту; MAJOR чек тизмеси.

30-90 күн

1. Blue-Green үчүн Gold-Display; маанилүү темалар үчүн dual-write.
2. Негизги кызматтар үчүн Consumer-contract-tests; golden-datasets.
3. Автоматтык DIFF текшерүүлөр жана которуштуруп Алерт; нарк отчеттору.

3-6 ай

1. grace-period менен бирдиктүү deprecate/remove жараяны; Archiving жана Legal Hold.
2. Гео/тенант-атайын схемалар жана шифрлөө ачкычтары; сезгич рыноктор үчүн DP параметрлери.
3. Талаа семантикасынын каталогу (data dictionary) жана тирүү lineage диаграммалары.

17) RACI

Data Governance (A/R): стандарттар, реестр, миграция ревю, де-жарыялоо.
Domain Owners (R): талаалардын мааниси, колдонмолор, бизнес инварианттар.
Data Platform (R): реестр инструменттери, compat-тесттер, dual-run/backfills.
Security/DPO (A/R): PII-саясат, geo/tenant, DSAR/Legal Hold.
SRE/Observability (C): Alert, SLO Evolution, capacity.
Product/Finance (C): KPI валидациясы, өзгөртүү терезелери.

18) Анти-үлгүлөрү

"Талааны учууда башкарабыз" версиясы жана кош-жарышы жок.
Жаңы талааны кошуунун ордуна атын өзгөртүү → массалык бузулуулар.
Катуу enum 'unknown' бутагы жок → жаңы маанилерде түшөт.
Бардык юрисдикциялар үчүн коддогу бирдиктүү колдонмо.
idempotent-merge жана чек баланстары жок Backfill.
PII менен Логи жана издөө үчүн trace_id жок/DSAR.

19) Байланыштуу бөлүмдөр

Data Validation, DataOps-Practices, DataOps-Practices, API аналитика жана метрика, Аудит жана версиясы, Data Security & коддоо, Access Control, MLOps: моделдерди иштетүү.

Жыйынтык

Схемалардын эволюциясы - бир жолку миграция эмес, процесс: реестр, версиялар жана шайкештик; dual-run жана көк-жашыл ордуна "түн ичинде баскычтар"; ийгиликтин ордуна шайкештик тесттер жана бизнес инварианттар. Ошентип, маалыматтар туруктуу бойдон калууда, моделдер - алдын ала, отчеттор - туура, ал эми жөнгө салуучу - тынч.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.