Схемаҳои маълумот ва таҳаввулоти онҳо
1) Чаро ин платформаи IGaming аст
Эътимоднокӣ - Тағирот ба маълумот ҳисобот, API ё моделҳоро вайрон намекунад.
Суръати хусусият: майдонҳои бехатарро (KYC/RG/PSP) бидуни таваққуф илова кунед.
Танзимкунанда: пайгирӣ ва такрористеҳсолкунӣ (аудит/насл, DSAR, Hold Legal).
Арзиш: кам кардани "обхезиҳо" ва таъхири вақти бозгашт.
2) Намудҳои схемаҳо ва ҷои зисти онҳо
Ҳодисаҳо (ҷараёнҳо): 'пардохтҳо. deposit_accepted', 'бозӣ. round_finished'.
OLTP/DDL: ҷадвалҳои муқарраршуда (KYC, ҳисобҳо, маҳдудиятҳо).
DWH/мағозаҳо (тилло): агрегатҳои ғайримуқаррарӣ дар зери BI/ML.
Дӯкони хусусият: маҷмӯи хусусиятҳои онлайн/офлайнӣ бо кафолати мувофиқат.
Шартномаҳои шарики беруна: PSP, провайдерҳои бозӣ, манбаъҳои маркетинг.
Қайдҳо: Avro/Protobuf (ҷараёнҳо), JSON Schema (ҳамгироӣ), SQL DDL (DWH), схемаи Паркет (кӯл).
3) Мутобиқат (ядрои эволютсия)
Ба қафо мувофиқ: истеҳсолкунандагони нав → истеъмолкунандагони кӯҳна (майдони иловашуда c пешфарз/беэътибор).
Ба пеш мувофиқ: истеҳсолкунандагони кӯҳна → истеъмолкунандагони нав (хонандаи нав нолозимро нодида мегирад).
Мувофиқати пурра: ҳарду (ҳадафи матлуб барои рӯйдодҳо).
Тағиротҳо: номгузорӣ/нест кардани майдон, тағир додани намуд/семантика, тағир додани калиди/тақсимкунӣ.
Қоидаи 1: рӯйдодҳо тавассути илова, на тавассути тағирот таҳаввул меёбанд.
Қоидаи 2: нест кардан - танҳо дар нусхаи MAJOR схема пас аз мӯҳлати фарсуда.
4) Версияҳо ва сиёсатҳои семантикӣ
'МАЙОР. МИНОР. PATCH 'барои ҳар як схема/намоиш/маҷмӯи хусусиятҳо.
MAJOR - номувофиқ (мавзӯи нав/ҷадвал/маҷмӯи хусусиятҳо, дугона).
MINOR - мувофиқ (майдонҳои нави нобудшаванда/пешфарз, қиматҳои нави энум).
PATCH - таҳрири тасвирҳо/маҳдудиятҳо/шарҳҳо.
Давраи ҳаёти саҳроӣ: 'таҷрибавӣ → фаъол § фарсудашуда § хориҷ карда шудааст' (бо сана ва соҳиби он).
5) Бақайдгирии нақша ва шартномаҳои маълумот
Феҳристи схема: версияҳо, мутобиқат, эволютсия ва соҳибонро нигоҳ медорад.
Шартномаи маълумот: схема + сифати 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 Ҳодисаҳо (ҷараёнҳо)
Танҳо иловашуда: илова кардани майдонҳо бо нобаёнӣ/беэътибор; истеъмолкунандагони кӯҳна шикаста намешаванд.
Васеъшавии enum: аломатҳои нав MINOR ҳисобида мешаванд, аз истеъмолкунандагон талаб карда мешавад, ки филиали "дигар/номаълум" дошта бошанд.
Муҳоҷирати асосӣ: пардохтҳои мавзӯи нав. deposit_accepted. v2 ', дутарафа навиштан, соя хондан, пас иваз кардани истеъмолкунандагон.
6. 2 DWH/мағозаҳо
Ҷадвалҳои кабуд-сабз: 'тилло. revenue_v2' дар назди 'v1'; амалӣ кардан, тафтиш кардан, гузаштан BI.
Backfill: такрори бо лаҳзаҳои кӯтоҳ + якҷояшавии idempotent (бо калидҳо/версияҳо).
SCD: намуди 2 барои сифатҳои оҳиста тағирёбанда (маҳдудиятҳо, KYC, ҳолати VIP).
6. 3 Дӯкони хусусият
Дучанд-хизмат: маҷмӯи хусусиятҳои кӯҳна дар баробари нав хизмат карда мешавад; модел тавассути роутер хидмат мерасонад.
Мувофиқати вақт: эволютсия набояд шодиҳои PITA-ро вайрон кунад (вақт/дараҷа дар MINOR бетағйир мондааст).
7) Таксономияи тағирот (рӯйхати назоратӣ)
Бехатар (MINOR):- илова кардани майдони 'nullable/пешфарз';
- тамдиди enum (бо филиали 'номаълум' дар истеъмолкунанда);
- илова кардани шохиси/шарҳ/тавсифи ғайри калидӣ.
- Тағирёбии миқёс/воҳид (масалан, миқдор бо сент → асъори асосӣ) - Танҳо MAJOR
- истинод/интиқол - тавассути қабати муаррифӣ.
- Аз нав номгузорӣ/нест кардани майдон
- Дигаргун кардани намуд/формат/калид/қисмбандӣ
- тағир додани семантика (масалан, 'bonus _ sound' аз "ҳисобшуда" → "навишта шудааст").
8) Санҷишҳои линтерҳо ва мутобиқат
Schema-lint: услуби ном ('snake _ case'), тамғакоғазҳои талабшаванда ('соҳиб', 'doc', 'pii'), формати сана/асъор.
Compat-tests: санҷиши версияи нав бар зидди феҳрист (ба қафо/пеш/пурра).
Санҷишҳои истеъмолӣ-шартномавӣ: ҳар як хидмат "бори намуна" ва интизориро таъмин мекунад; ҳангоми тағир додани нақша дар CI кор кунед.
Маҷмӯаи тиллоӣ: маҷмӯи намунаҳои воқеӣ ва "бад" (энумҳои нав, майдонҳои холӣ/дер, арзишҳои сарҳадии сумҳо).
9) Директорияҳо, энум ва маҳаллисозӣ
Маълумотнома-маълумот (кишварҳо/асъорҳо/PSP/провайдерҳо): версияҳои инфиродӣ ва навсозиҳои SLA; ба рамзи ҳодиса дӯхта нашавед.
Минтақаҳои локалӣ/вақт: UTC-ро дар чорабиниҳо нигоҳ доред + маҳалли возеҳ барои муаррифӣ.
Қоидаҳои қаламравҳо: парчамҳои синнӣ, маҳдудиятҳои таблиғотӣ - дар шакли феҳрист бо санаи амал.
10) Бисёр бренд/бисёрҷониба ва PII
Ҷудокунии иҷорагир: 'бренд', 'кишвар', 'литсензия' - майдонҳои ҳатмӣ бо энум; масир ба онҳо.
Сиёсати PII дар сатҳи схема: майдонҳои 'pii = ҳақиқӣ', ниқобҳо/токенизатсияро қайд кунед; дар ҳодисаҳо, танҳо нишонаҳо.
DSAR: мавҷудияти 'source _ id/trace _ id' for несткунӣ/ҷустуҷӯ; Нигоҳдории ҳуқуқӣ оид ба муҳоҷирати MAJOR.
11) Версияи DDL ва Лейк
Муҳоҷирати DDL: муҳоҷирати декларативӣ (Liquibase/Flyway/dbt), нигоҳдорӣ дар VCS, баррасии соҳиби домен.
Форматҳо дар кӯл: Авро/Паркет - эволютсияи майдонҳоро сабт кунед; дар MAJOR - ҷадвали/роҳи нав '.../v2/'.
Тақсимот: иваз кардани қисмҳо (масалан, 'сана' → 'сана, бренд') - танҳо тавассути MAJOR ва вуруди дугона.
12) Намунаҳои IGaming
12. 1 PSP усулҳои васеъ
Илова 'усул = "MEFETE"' ба enum.
Нашри MINOR аз 'deposit _ қабулшуда v1. 8. 0`; истеъмолкунандагон, ки MEFETE-ро намедонанд, филиалро ба 'номаълум _ усул' мефиристанд.
12. 2 Провайдери бозиҳо чоҳҳо илова карданд
V 'game. round_finished' 'jackpot _ id' илова карда шуд (nullable).
Намоиши 'тилло. game_rounds_v3' МИНОР мегирад; гузоришҳои кӯҳна кор мекунанд, нав jackpots ҳисоб мекунанд.
12. 3 хусусиятҳои RG
Гузариш аз "худидоракунии" мантиқӣ ба ҳолати 'rg _ state ∈ {ҳеҷ, маҳдуд кардан, сардшавӣ, self_excluded}' - MAJOR, мавзӯи нав + дугона-навиштан + муҳоҷирати намоишҳо ва моделҳо.
13) Раванди эволютсия (аз ғоя ба гузариш)
1. Пешниҳод (ADR): чаро тағирот, навъи мутобиқат, арзёбии хатар ва истеъмолкунандагон таъсир расонд.
2. Тарроҳӣ ва шартнома: нақшаи бақайдгирӣ, семвер, сиёсати мутобиқат.
3. Санҷишҳо: линтерҳо, компат, шартномаҳои истеъмолӣ, такрори тиллоҳо.
4. Ҷойгиркунӣ: дугона-навиштан/кабуд-сабз/соя-хондан; ҳушдор медиҳад.
5. Муқоиса: Тавозуни тиҷорат/инвариантҳо (нигаред ба Тасдиқи маълумот).
6. Гузариш: гузариш ба истеъмолкунандагон/BI/хусусиятҳо.
7. Коҳиш диҳед: схемаи кӯҳна, давраи файз, нест кардан ва бойгониро ях кунед.
14) Метрикаҳо ва SLO-ҳои эволютсия
Сатҳи муваффақияти муҳоҷират, вақти дугона, ҳиссаи чорабиниҳои формати нав, ҳаҷми бозгашт, ақибмонӣ/тару тоза.
Ҳодисаҳои мутобиқат (P1/P2), сифати тиреза пас аз гузариш.
Арзиш: барзиёдии $/сил, $/соат дугона навиштан, сарбории кластер.
Мувофиқат: 0 ихроҷи PII, SLA DSAR/Hold Legal 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 Линтери номҳо ва намудҳо (қоидаҳо)
'sake _ case', вақтҳои UTC, DECIMAL (18). 2) барои сумма, 'кишвар' барои алфа-2 ISO-3166-1, 'асъор' for ISO-4217.
Майдонҳои No 'free _ text' for; маълумотномаҳо - берунӣ.
16) Харитаи роҳсозӣ
0-30 рӯз (MVP)
1. Фаъол кардани Феҳристи Схема + сиёсати мутобиқат барои рӯйдодҳои асосӣ (пардохтҳо, game_rounds, корбар).
2. Санҷишҳои Linters/compat дар CI; феҳристи соҳиб ва шарҳи SLA.
3. Қолабҳои ADR ва шиносномаи муҳоҷират; Рӯйхати назоратии MAJOR.
30-90 рӯз
1. Кабуд-Сабз барои дӯконҳои тиллоӣ; дутарафа барои мавзӯъҳои интиқодӣ.
2. Озмоишҳои истеъмолӣ-шартномавӣ барои хизматрасониҳои асосӣ; тиллоӣ-маҷмӯаҳо.
3. Ҳангоми гузариш ба таври худкор diff-ҳамоҳангсозӣ ва огоҳиҳо; ҳисобот оид ба хароҷот.
3-6 моҳ
1. Раванди ягонаи амортизатсия/хориҷ кардан бо давраи имтиёзнок; бойгонӣ ва нигоҳдории ҳуқуқӣ.
2. Схемаҳо ва калидҳои рамзгузории махсуси гео/иҷорагир; Вариантҳои DP барои бозорҳои ҳассос.
3. Луғати маълумот ва диаграммаҳои насли зинда.
17) RACI
Идоракунии маълумот (A/R): стандартҳо, сабти ном, баррасии муҳоҷират, интишори нашрия.
Соҳибони домейн (R): маънои соҳаҳо, маълумотномаҳо, инвариантҳои тиҷорат.
Платформаи маълумот (R): воситаҳои сабти ном, санҷишҳои компат, дугона/backfills.
Амният/DPO (A/R): сиёсати PII, гео/иҷорагир, DSAR/Hold Legal.
SRE/Мушоҳида (C): огоҳиҳо, эволютсияи SLO, қобилият.
Маҳсулот/Молия (C): тасдиқи KPI-ҳо, гузариши тирезаҳо.
18) Анти-намунаҳо
"Майдонро дар магас таҳрир кунед" бидуни версия ва дугона.
Тағир додани ном ба ҷои илова кардани майдони нав → тақсимоти оммавӣ.
Enum Hard бе шохаи "номаълум" → тарки арзишҳои нав.
Феҳристи ягона "дар рамз" барои ҳамаи қаламравҳо.
Backfill бе idempotent-merge ва санҷиши тавозунҳо.
Сабтҳо бо PII ва бе trace_id барои ҷустуҷӯ/DSAR.
19) Қисматҳои марбут
Тасдиқи маълумот, пайдоиши маълумот ва роҳ, амалияи маълумот, таҳлил ва метрикаҳои API, аудит ва таҳрир, амнияти маълумот ва рамзгузорӣ, назорати дастрасӣ, MLOps: Истифодаи моделҳо.
Ҷамъ
Таҳаввулоти схемаҳо равандест, на муҳоҷирати якдафъаина: сабти ном, версияҳо ва ҳамоҳангсозӣ; ба ҷои "гузариш дар нисфи шаб" дугона ва кабуд-сабз; санҷишҳои мутобиқат ва инвариантҳои тиҷорат ба ҷои иқбол. Ҳамин тавр, маълумот устувор боқӣ мемонад, моделҳо пешгӯишавандаанд, ҳисоботҳо дурустанд ва танзимгарон ором ҳастанд.