GH GambleHub

მონაცემთა სქემები და მათი ევოლუცია

1) რატომ არის ეს iGaming პლატფორმა

საიმედოობა: მონაცემთა ცვლილებები არ არღვევს მოხსენებებს, API და მოდელებს.
ფიკის სიჩქარე: უსაფრთხოდ დაამატეთ ველები (KYC/RG/PSP) ნაკადების შეჩერების გარეშე.
მარეგულირებელი: კვალიფიკაცია და რეპროდუქცია (audit/lineage, DSAR, Legal Hold).
ღირებულება: ჩვენ მინიმუმამდე დავიყვანთ „გადასასვლელებს“ და ზურგჩანთებს.

2) სქემების ტიპები და სად ცხოვრობენ ისინი

მოვლენები (ნაკადები): 'payments. deposit_accepted`, `game. round_finished`.
OLTP/DDL: ნორმალიზებული ცხრილი (KYC, ანგარიშები, ლიმიტები).
DWH/witrins (Gold): დენორმალიზებული დანაყოფები BI/ML- ის ქვეშ.
Feature Store: ონლაინ/ოფლაინის ფინალური ნაკრები, თანმიმდევრული გარანტიით.
გარე პარტნიორების კონტრაქტები: PSP, თამაშების პროვაიდერები, მარკეტინგული წყაროები.

ნოტაციები: Avro/Protobuf (ნაკადები), JSON Schema (ინტეგრაცია), SQL DDL (DWH), Parquet schema (lake).

3) თავსებადობა (ევოლუციის ბირთვი)

Backward compatible: ახალი მწარმოებლები - ძველი კონსუტერები (დაამატეს ველი default/nullable).
Forward Compatible: ძველი მწარმოებლები ახალი კონსიუმერები არიან (ახალი მკითხველი ზედმეტი უგულებელყოფს).
Full compatible: ორივე და სხვა (მოვლენების სასურველი მიზანი).
Breaking-changes: ველის შეცვლა/მოცილება, ტიპის/სემანტიკის შეცვლა, გასაღების შეცვლა/წვეულება.

წესი 1: მოვლენები ევოლუციის გზით, არა ცვლილების გზით.
წესი 2: წაშლა - მხოლოდ MAJOR სქემის ვერსიაში, დეპრესიის პერიოდის შემდეგ.

4) სემანტიკური ვერსიები და პოლიტიკოსები

`MAJOR. MINOR. PATCH 'თითოეული სქემისთვის/ფანჯრის ფანჯრები/ფეხის ნაკრები.

MAJOR - შეუთავსებელი (ახალი topic/ცხრილი/fich ნაკრები, ორმაგი რუნი).
MINOR - თავსებადია (ახალი არალეგალური/defoult ველები, ახალი enum მნიშვნელობები).
PATCH - აღწერილობის/ლიმიტების/კომენტარების რედაქტირება.

ველის სასიცოცხლო ციკლი: 'experimental - აქტიური - deprecated - removed' (თარიღებითა და მფლობელით).

5) სქემების და მონაცემთა კონტრაქტების რეესტრი

Schema Registry: ინახავს ვერსიებს, თავსებადობას, ევოლუციას და მფლობელებს.
Data Contract: აფიქსირებს + 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 მოვლენები (ნაკადები)

Additive-only: დაამატეთ ველები default/nullable; ძველი კონსუტერები არ იშლება.
Enum გაფართოება: ახალი სიმბოლოები ითვლება MINOR, კონსიუმერებს უნდა ჰქონდეთ ფილიალი 'else/unknown'.
MAJOR მიგრაცია: ახალი topic 'payments. deposit_accepted. v2 ', ორმაგი write, shadow-reads, შემდეგ consumers გადართვა.

6. 2 DWH/witrins

Blue-Green ცხრილი: 'gold. revenue _ v2 '' 'მახლობლად' v1 '; ჩვენ ვამოწმებთ მასალებს, გადავცვლით BI- ს.
Backfill: Snapshots + idempotent merge (კლავიშების/ვერსიების მიხედვით).
SCD: ტიპი 2 ნელა ცვალებადი ატრიბუტებისთვის (ლიმიტები, KYC, VIP სტატუსები).

6. 3 Feature Store

Dual serve: ძველი set ემსახურება ახალი პარალელურად; მოდელს ემსახურება როუტერი.
Point-in-time კოორდინაცია: ევოლუცია არ უნდა დაარღვიოს PITA ჯოინები (timestamp/მარცვლოვანი უცვლელი MINOR- ის ქვეშ).

7) ცვლილებების ტაქსონომია (შემოწმების სია)

უსაფრთხო (MINOR):
  • დამატება 'არა/default' ველები;
  • enum გაფართოება (მომხმარებელში 'unknown' ფილიალით);
  • არასასურველი ინდექსის/კომენტარის/აღწერილობების დამატება.
პირობითად უსაფრთხო:
  • მასშტაბის/ერთეულების შეცვლა (მაგალითად, ძირითადი ვალუტით ცენტრებში ამოუნტი) - მხოლოდ MAJOR- ში;
  • საცნობარო/რეფერენდუმის გადაცემა - პრეზენტაციის ფენის საშუალებით.
გატეხილი (MAJOR):
  • ველის შეცვლა/მოცილება;
  • ტიპის/ფორმატის/გასაღების/ნაწილის შეცვლა;
  • სემანტიკის შეცვლა (მაგალითად, „bonus _ amount“ - დან „დარიცხული“).

8) სქემების და თავსებადობის ტესტები

Schema-lint: სახელების სტილი ('snake _ case'), სავალდებულო ეტიკეტები ('owner', 'doc', 'pii'), თარიღების/ვალუტის ფორმატი.
Compat-tests: ჩვენ ვამოწმებთ ახალ ვერსიას რეესტრის წინააღმდეგ (backward/forward/full).
Consumer-contract-tests: თითოეული სერვისი აწვდის „დატვირთვის მაგალითს“ და მოლოდინს; მოდით CI- ზე გადავიტანოთ სქემის შეცვლისას.
Golden მონაცემთა ბაზები: რეალური და „ბოროტი“ მაგალითების ერთობლიობა (ახალი enum, ცარიელი/გვიან ველები, თანხების ხაზოვანი მნიშვნელობები).

9) ცნობარები, ენები და ლოკალიზაცია

ანგარიშის მონაცემები (ქვეყნები/ვალუტები/PSP/პროვაიდერები): ცალკეული ვერსიები და SLA განახლებები; არ შეიყვანოთ მოვლენების კოდი.
Locale/დროის ზონები: შეინახეთ UTC ღონისძიებებში + აშკარა ადგილი პრეზენტაციისთვის.
იურისდიქციების წესები: ასაკობრივი დროშები, პრომო შეზღუდვები - საცნობარო წიგნების სახით, მოქმედების თარიღებით.

10) მულტიბრენდი/ანიმაცია და PII

ტენანტის იზოლაცია: 'brand', 'country', 'license' - სავალდებულო ველები enum- ით; მათზე როუტინგი.
PII პოლიტიკა სქემის დონეზე: ველი „pii = true“, ჩვენ ვიყენებთ ნიღბებს/ტოკენიზაციას; მოვლენებში - მხოლოდ ნიშნები.
DSAR: 'source _ id/trace _ id' არსებობა წაშლა/ძებნა; Legal Hold MAJOR მიგრაციებში.

11) DDL და Lake ვერსიები

DDL მიგრაცია: დეკლარაციული მიგრაცია (Liquibase/Flyway/dbt), შენახვა VCS- ში, დომენის ეჭვიანი მფლობელი.
ფორმატები ტბაში: Avro/Parquet - ჩვენ ვადგენთ ველების ევოლუციას; MAJOR- ში - ახალი ცხრილი/გზა... .../v2/'.
წვეულება: პარტიების ცვლილება (მაგალითად, 'date' date 'date, brand') - მხოლოდ MAJOR- ის საშუალებით და ორმაგი ჩაწერა.

12) iGaming- ის მაგალითები

12. 1 PSP- მა გააფართოვა მეთოდები

დაემატა 'method = „MEFETE“' enum.
MINOR სქემის გამოცემა 'deposit _ accepted v1. 8. 0`; კონსიუმერები, რომლებმაც არ იციან MEFETE, იგზავნება 'unknown _ method' ფილიალში.

12. 2 თამაშების პროვაიდერმა დაამატა მოედანი

'game. round _ finished 'დაემატა' jackpot _ id '(nullable).
ვიტრინ გოლდი. game _ rounds _ v3 'იღებს MINOR; ძველი მოხსენებები მუშაობს, ახლები ჯეკპოტებს თვლიან.

12. 3 RG ატრიბუტები

Bull 'self _ excluded' - დან სტატუსის 'rg _ state "გადასვლა {none, limit, cooldown, self _ excluded'} - MAJOR, ახალი topic + dul-write + ვიტრინების და.

13) ევოლუციის პროცესი (იდეიდან გადართვამდე)

1. Proposal (ADR): რატომ ვცვლით თავსებადობის ტიპს, რისკის შეფასებას და დაზარალებულ მომხმარებლებს.
2. დიზაინი და კონტრაქტი: სქემა რეესტრში, სემვერში, თავსებადობის პოლიტიკა.
3. ტესტები: linters, compat, consumer-contracts, raples golden სეტებზე.
4. განლაგება: ორმაგი write/blue-green/shadow-reads; ალერტა.
5. Cryption: ბიზნეს ბალანსი/ინვარიანტები (იხ. „მონაცემების შესაბამისობა“).
6. Switch: გადართეთ კონსიუმერები/BI/ფიჩები.
7. დეპრესია: ძველი სქემის freeze, grace-period, მოცილება და არქივი.

14) მეტრიკა და SLO ევოლუცია

Success-rate მიგრაცია, ორმაგი რუნის დრო, ახალი ფორმატის მოვლენების წილი, backfill, lag/freshness მოცულობა.
თავსებადობის ინციდენტები (P1/P2), ფანჯრების ხარისხი გადართვის შემდეგ.
Cost: $/TB გადაკვეთა, $/$ ორმაგი-write, კლასტერის დატვირთვა.
Compliance: 0 PII გაჟონვა, SLA DSAR/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 Linter სახელები და ტიპები (წესები)

'snake _ case', UTC timestamps, DECIMAL (18.2) თანხებისთვის, 'country' შესაბამისად ISO-3166-1 alpha-2, 'currence' შესაბამისად ISO-4217.
არ არის „უფასო _ ტექსტი“ enum ველებისთვის; საცნობარო წიგნები - გარე.

16) გზის განხორციელების რუკა

0-30 დღე (MVP)

1. ჩართეთ Schema Registry + პოლიტიკის თავსებადობა საკვანძო მოვლენებისთვის (payments, game _ rounds, user).
2. Linters/compat ტესტები CI- ში; მფლობელთა კატალოგი და SLA მიმოხილვები.
3. ADR შაბლონები და მიგრაციის პასპორტი; MAJOR ჩეკის სია.

30-90 დღე

1. ცისფერი-მწვანე ოქროს ფანჯრისთვის; ორმაგი write კრიტიკული თემებისთვის.
2. Consumer-contract-tests ძირითადი სერვისებისთვის; golden-datasets.
3. ავტომატური დისკი და ალერტები გადართვის დროს; ღირებულების ანგარიშები.

3-6 თვე

1. ერთი დეპრესია/remove ერთად grace period; საარქივო და იურიდიული ჰოლდი.
2. Geo/tenant სპეციფიკური სქემები და დაშიფვრის გასაღებები; მგრძნობიარე ბაზრების DP ვარიანტები.
3. ველის სემანტიკის კატალოგი (მონაცემთა ციფრული) და ცოცხალი ხაზის დიაგრამები.

17) RACI

Data Governance (A/R): სტანდარტები, რეესტრი, მიგრაციის შურისძიება, დე პუბლიკაცია.
დომენის ობნერები (R): სფეროების მნიშვნელობა, საცნობარო წიგნები, ბიზნეს ინვარიანტები.
Data Platform (R): რეესტრის ინსტრუმენტები, კომპატის ტესტები, ორმაგი რუნი/ზურგჩანთა.
Security/DPO (A/R): PII პოლიტიკა, geo/tenant, DSAR/Legal Hold.
SRE/Observability (C): ალერტები, SLO ევოლუციები, capacity.
Product/Finance (C): KPI შესაბამისობა, გადართვის ფანჯრები.

18) ანტი შაბლონები

„სწორი ველი ფრენაზე“ ვერსიების გარეშე და ორმაგი რუნი.
ახალი ველის დამატების ნაცვლად, სახელის გადარქმევა მასობრივი ავარია იყო.
მკაცრი enum ფილიალის გარეშე 'unknown' - ის დაცემის ახალი მნიშვნელობებით.
ერთი საცნობარო წიგნი „კოდში“ ყველა იურისდიქციისთვის.
Backfill idempotent-merge და ჩეკის ბალანსების გარეშე.
Logs ერთად PII და trace _ id ძიების გარეშე/DSAR.

19) დაკავშირებული მონაკვეთები

მონაცემთა შესაბამისობა, მონაცემთა წარმოშობა და გზა, DataOps პრაქტიკა, API ანალიტიკოსები და მეტრიკა, აუდიტი და ვერსია, მონაცემთა უსაფრთხოება და დაშიფვრა, წვდომის კონტროლი, MLOps: მოდელების ექსპლუატაცია.

შედეგი

სქემების ევოლუცია არის პროცესი და არა ერთჯერადი მიგრაცია: რეესტრი, ვერსიები და თავსებადობა; ორმაგი რუნი და ცისფერი-მწვანე ნაცვლად „შუაღამისას კონცენტრატორების“ ნაცვლად; თავსებადობის ტესტები და ბიზნესის ინვარიანტები წარმატების ნაცვლად. ასე რომ, მონაცემები რჩება სტაბილური, მოდელები პროგნოზირებულია, მოხსენებები სწორია, ხოლო რეგულატორები მშვიდია.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.