Маалыматтар схемалары жана алардын эволюциясы
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 + купуялык схемасын белгилейт ("Маалыматтарды валидациялоо" бөлүмүн караңыз).
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;
- маалымдаманы/референтти өткөрүп берүү - көрсөтүү катмары аркылуу.
- атын өзгөртүү/талааны алып салуу;
- түрүн өзгөртүү/формат/ачкыч/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 жана көк-жашыл ордуна "түн ичинде баскычтар"; ийгиликтин ордуна шайкештик тесттер жана бизнес инварианттар. Ошентип, маалыматтар туруктуу бойдон калууда, моделдер - алдын ала, отчеттор - туура, ал эми жөнгө салуучу - тынч.