Տվյալների սխեմաները և դրանց էվոլյուցիան
1) Ինչու՞ է դա iGaming հարթակ
Տե՛ ս, տվյալների փոփոխությունները չեն կոտրում հաշվետվությունները, API-ը և մոդելները։
Ֆիչի արագությունը 'ապահով կերպով ավելացնում ենք դաշտերը (KYC/RG/PSA), առանց սթրիմները կանգնեցնելու։
Կարգավորիչ 'հետադարձ և վերարտադրողականություն (audit/lineage, DSAR, Legal Hold)։
Արժեքը 'նվազագույնի հասցնում ենք «փոխպատվաստումներ» և դաունթայմ բեքֆիլներ։
2) Սխեմաների տեսակները և որտեղ են նրանք ապրում
Իրադարձությունները (սթրիմ) '"payments։ deposit_accepted`, `game. round_finished`.
OLTP/DDL: նորմալացված սեղաններ (KYC, հաշիվներ, սահմաններ)։
MSH/վիտրիններ (Gold) 'դիսորմալացված ագրեգատներ BI/ML-ի տակ։
Feature Store: առցանց/օֆլայնային ֆիգուրային ցանցեր, որոնք ունեն կոդեր։
Արտաքին գործընկերների պայմանագրերը ՝ PBS, խաղերի պրովայդերներ, մարքեթինգային աղբյուրներ։
Նոտացիաներ ՝ Avro/Corobuf (strims), JSON Schema (1942), SQL DDL (MSH), Parquet schema (lake)։
3) Համատեղելիությունը (էվոլյուցիայի միջուկը)
Backward-compatible-ը 'նոր վաճառողները հին կոնսյուրմերներ են (ավելացրեցին դաշտը 108/nullable)։
Forward-compatible: Հին վաճառողները նոր կոնսուումերներ են (նոր ընթերցողը անտեսում է ավելին)։
Fox-compatible: երկուսն էլ (իրադարձությունների ցանկալի նպատակը)։
Breaking-changes ՝ դաշտի վերանվանումը/հեռացումը, տիպի/սեմանտիկայի փոփոխությունը, ստեղնաշարի փոփոխությունը/partitioning։
1։ Իրադարձությունները զարգանում են ավելացման միջոցով, ոչ թե փոփոխության միջոցով։
Կանոն 2: հեռացնել միայն MAJOR-ում սխեմայի տարբերակները ավանդի ժամանակահատվածից հետո։
4) Սեմանտիկ տարբերակները և քաղաքականությունը
`MAJOR. MINOR. PATCH 'յուրաքանչյուր սխեմայի/վիտրինի/ֆիչի սեթի համար։
MAJOR-ը անհամատեղելի է (նոր topic/2019/fich-set, dig-run)։
MINOR-ը համատեղելի է (նոր nullable/wwww.ru դաշտեր, նոր enum-արժեքներ)։
PATCH - նկարագրությունների/սահմանումների/մեկնաբանությունների ուղղություններ։
Դաշտի կյանքի ցիկլը '«experimental experimental exprecated depremoved» (ամսագրերի և սեփականատիրոջ հետ)։
5) Տվյալների սխեմաները և պայմանագրերը
Schema Registry: պահպանում է տարբերակները, համատեղելիությունը, էվոլյուցիան և սեփականատերերը։
Medract-ը գրանցում է + SLO որակի + մասնավորեցումը (տե՛ ս «Տվյալների վալիդացիա» բաժինը)։
Օրինակ (Avro, 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 Իրադարձություններ (ստրիմա)
Meditive-only: Մենք ավելացնում ենք դաշտերը nullable-ից։ հին վահանակները չեն կոտրվում։
ENUM-ընդլայնումներ. Նոր խորհրդանիշները համարվում են MINOR, կոնսուլները պարտավոր են ունենալ «else/unknown» ճյուղը։
MAJOR միգրացիա 'նոր topic' payments։ deposit_accepted. v2 ', dom-write, shadow-reads, ապա կոնյուումերների փոխակերպումը։
6. 2 MSH/վիտրիններ
Blue-Green աղյուսակները '"gold. revenue _ v2 "-ի մոտ 'v1'; նյութապաշտություն, սայթաքում, տեղափոխում ենք BI։
Backfill: Repschotes + idempotent merge (բաների/տարբերակների)։
SCD '2 տեսակը դանդաղ փոխվող ատրիբուտների համար (լիմիտներ, KYC, VIP ստատուսներ)։
6. 3 Feature Store
Dance-serve: հին fich-set սպասարկվում է զուգահեռ նոր; մոդելը ծառայում է ռոտերի միջոցով։
Point-in-time-ի համաձայն. էվոլյուցիան չպետք է կոտրի PITA-joyns (timestamp/granuluty անփոփոխ MINOR)։
7) Փոփոխությունների տաքսոնոմիա (չեկ թերթ)
Անվտանգ (MINOR)
ավելացրեք 'nullable/wwww.ru' դաշտեր;
ընդլայնումը ("unknown '-- վեկտորով սպառողի մոտ);
ավելացնում է սխալ ինդեքսը/մեկնաբանությունը/նկարագրությունը։
Պայմանականորեն անվտանգ
մասշտաբի/միավորի փոփոխությունը (օրինակ, amount կենտրոններում հիմնական տարբերակում) միայն MAJOR-ում է։
տեղեկատու/հանրաքվե փոխանցումը ներկայացման շերտի միջոցով է։
Կոտրող (MAJOR)
վերանվանումը/հեռացումը;
փոփոխությունը/ձևաչափը/բանալին/part.ru;
Սեմանտիկայի փոփոխությունը (օրինակ ՝ "bonus _ amount" -ից "հաշվարկված" է ")։
8) սխեմաների և թեստերի ինժեներներ
Schema-lint: Անունների ոճը («www.ake _ cult»), պարտադիր կոմպոզիցիաներ («owner», «doc», «pii»), դատ/արժույթի ձևաչափը։
Compat-tes.ru: Մենք ստուգում ենք նոր տարբերակը ռուսական դեմ (backward/forward/fox)։
Consumer-www.ract-tes.ru: Յուրաքանչյուր ծառայություն տալիս է «բեռի օրինակ» և սպասումներ։ դուրս գանք CI-ում սխեմայի փոփոխության ժամանակ։
Golden-intasets: Իրական և «չար» օրինակների հավաքածու (նոր enum, դատարկ/ուշ դաշտեր, գումարների հիբրիդային արժեքներ)։
9) Տեղեկագրեր, enum և տեղայնացում
Reference-2019 (երկրներ/արժույթ/PSA/պրովայդերներ) 'առանձին տարբերակներ և SLA 71; չմտնել իրադարձությունների կոդին։
Delale/ժամացույցի գոտիները 'պահել UTC-ը իրադարձություններում + ակնհայտ ռելիզը ներկայացման համար։
Միգրացիայի կանոնները 'տարիքային դրոշներ, պրոմո սահմանափակումներ' գործունեության ամսաթվերի հետ։
10) Multibrend/multurization և PII
Tenant-մեկուսացում '«brand», «country», «license» - պարտադիր դաշտեր enum; ռոտինգը նրանց վրա։
PII քաղաքականությունը սխեմայի մակարդակում, մենք փակցնում ենք դաշտերը 'pii = 108 ", մենք օգտագործում ենք դիմակներ/հյուսվածքներ։ իրադարձությունները միայն ցնցված են։
DSAR ՝ «source _ id/trace _ id» առկայությունը կոդավորման/որոնման համար; Legal Hold-ը MAJOR-ում։
11) DDL և Lake տարբերակումը
DDL-2019-ը 'կառավարական (Liquib.ru/Flyway/dbt), պահպանումը VCS-ում, տիրույթի սկզբնական սեփականատեր։
Lake: Avro/Parquet - մենք արձանագրում ենք դաշտերի էվոլյուցիան։ MAJOR-ի դեպքում նոր ռուսական/ճանապարհ «.../v2/»։
Partitioning: Կուսակցության փոփոխությունը (օրինակ ՝ «date 'date 'date, brand») միայն MAJOR-ի միջոցով և կրկնակի ձայնագրությամբ։
12) iGaming-ի օրինակները
12. 1 PSA-ն ընդլայնեց մեթոդները
Ավելացված "method =" MEFETE "enum-ում։
MINOR-ը թողարկել է «deposit _ accepted v1» սխեմա։ 8. 0`; վահանակները, որոնք MEFETE-ը չգիտեն, ուղարկում են «unknown _ method» ճյուղին։
12. 2 Խաղերի պրովայդերը ավելացրեց դաշտերը
«game» -ում։ round _ finished "-ը ավելացվում է" jackpot _ id "(nullable)։
Վիտրինա 'gold. game _ rounds _ v3 "ստանում է MINOR; Հին հաշվետվությունները աշխատում են, նորերը համարում են ջեքպոտներ։
12. 3 RG ատրիբուտներ
Անցումը հացաբուլկեղենից 'www.luded' մինչև ստատիկ 'rg _ state _ none, limit, cooldown, wwww.f _ wwww.luded + - MAJOR, նոր topic + dom-write + վիտրինի և մոդելների խմբակցություն։
13) Էվոլյուցիայի գործընթացը (գաղափարից մինչև 1922)
1. Proposal (ADR). Ինչու ենք փոխում, տեսակը, ռիսկի գնահատումը և տուժած սպառողները։
2. Դիզայնը և պայմանագիրը 'սխեման խմբագրության, semver, քաղաքականության մեջ։
3. Թեստեր ՝ linters, compat, consumer-medracom, golden-սեթերի վրա։
4. Իսպանիա: d07-write/blue-green/shadow-reads; ալերտներ։
5. Սեվկա 'բիզնես հավասարակշռություններ/ինվարանտներ (տե՛ ս «Տվյալների վալիդացիան»)։
6. Switch: Մենք անջատում ենք վահանակները/BI/fichi։
7. Deprecate: freeze հին սխեմա, grace-period, հեռացում և արխիվ։
14) Մետրիկի և SLO էվոլյուցիայի
Success-rate-ration, dult-run ժամանակը, նոր ձևաչափի իրադարձությունների մասը, backfill, lag/freshness ծավալը։
Պատահականները (P1/P2), վիտրինի որակը դեպքից հետո։
Cost: ԱՄՆ դոլարը/TB ծանրաբեռնվածությունը, դոլար/ժամ dom-write, բեռը։
Compliance: 0 PII արտահոսքը, SLA DSAR/Legal Hold-ը պահպանված են։
15) Գործիքներ և արտեֆակտներ
15. 1 Քաղաքական գործիչներ (1922)
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 Linter անուններ և տեսակներ (կանոններ)
«wwww.ake _ cult», UTC timestamps, DECIMAL (18,2) գումարների համար, «country» համաձայն VI-3166-1 alpha-2, «currency »-17-ի համար։
Ոչ մի «free _ 108» enum դաշտերի համար։ գրացուցակները արտաքին են։
16) Իրականացման ճանապարհային քարտեզը
0-30 օր (MVP)
1. Միացրեք Schema Registry + policy-ը հիմնական իրադարձությունների համար (payments, game _ rounds, user)։
2. Linters/compat թեստեր CI-ում; սեփականատերերի և SLA ակնարկների կատալոգ։
3. ADR մոդելները և միգրացիայի անձնագիրը։ MAJOR-ի չեկ թերթիկը։
30-90 օր
1. Blue-Green-ի համար Gold-վիտրինի համար։ dox-write քննադատական թեմաների համար։
2. Consumer-www.ract-tes.ru հիմնական ծառայությունների համար։ golden-datasets.
3. Ավտոմատ diff-sucks և ալտերտեր, երբ փոխվում են, արժեքի հաշվետվություններ։
3-6 ամիս
1. Deprecate/remove միասնական գործընթացը grace-period-ի հետ։ արխիվացում և Legal Hold.
2. Geo/tenant-հատուկ սխեմաներ և կոդավորման բանալիներ; DP տարբերակները զգայուն շուկաների համար։
3. Դաշտերի սեմանտիկայի կատալոգը (dictionary) և կենդանի դիագրամները։
17) RACI
Intel Governational (A/R) 'ստանդարտներ, կոդավորումներ, խմբակցությունների նախապատվություն, դե հրատարակություն։
Domain Owners (R) 'դաշտերի իմաստը, գրողները, բիզնեսի ինվարանտները։
SystePlatform (R) 'կոդավորման գործիքներ, compat թեստեր, drix-run/backfill։
System/DPO (A/R): PII քաղաքականությունը, geo/tenae, DSAR/Legal Hold։
MSE/Observability (C) 'ալտերտներ, SLO էվոլյուցիաներ, capacity։
Delt/Finance (C) 'KPI-ի վալիդացիա, պատուհաններ։
18) Anti-patterna
«Աջ դաշտը ամռանը» առանց տարբերակների և drix-run։
Նոր դաշտի ավելացման փոխարեն վերանվանումը կատարվում է զանգվածային կոտրվածքներ։
Կոշտ enum առանց ճյուղի «unknown» նվազման նոր արժեքներով։
«Կոդում» միասնական տեղեկատու բոլոր խմբակցությունների համար։
Բեքֆիլը առանց idempotent-merge և չեկ-հավասարակշռությունների։
Logs PII-ից և առանց trace _ id որոնման/DSAR-ի։
19) Կապված հատվածներ
Տվյալների վալիդացիան, ծագումը և տվյալների ուղին, EurOps-ը, API վերլուծաբանները և մեթրիկը, Adit-ը և տարբերությունը, Տվյալների անվտանգությունը և կոդավորումը, հասանելիության վերահսկումը, MLOps-ը 'մոդելների շահագործումը։
Արդյունքը
Սխեմաների էվոլյուցիան գործընթաց է, և ոչ թե տարբեր միգրացիա ՝ ստանդարտ, տարբերակներ և համատեղելիություն։ d07-run և blue-green փոխարեն «անջատիչների կեսգիշերին»; թեստերը և բիզնեսի ինվարանտները հաջողության փոխարեն։ Այսպիսով, տվյալները մնում են կայուն, մոդելները կանխատեսելի են, հաշվետվությունները ճիշտ են, իսկ կարգավորիչները ՝ հանգիստ։