Maglumatlaryň kadalaşmagy
1) Bellenilmegi
Kadalaşmak täzelenmeleriň dublikatlaryny we anomaliýalaryny ýok edýär, ýeke-täk gollanmalary we açarlary kesgitleýär, maglumatlary utgaşdyrylan we arzan edýär. iGaming-de bu GGR/NGR, AML/RG-analizleri, kadalaşdyryjy hasabat, antifrod we ML üçin möhümdir.
2) Nirede kadalaşdyrýarys
Bronze (raw): kadalaşdyrmaýarys - forensika üçin bolşy ýaly saklamak (append-only).
Kümüş (clean/conform): esasy kadalaşma (3NF/BCNF, gollanmalar, açarlar, SCD).
Gold (serve): maksatly penjireler -/BI okamak üçin dolandyrylýan denormalizasiýa mümkin.
3) Esasy ýörelgeler
1. Schema-first: Ähli tablisalarda aç-açan shemalar we açarlar bar.
2. Bitewi identifikatorlary: 'user _ pseudo _ id', 'session _ id', 'game _ id', 'provider _ id', 'transaction _ id'.
3. Ýeke-täk gollanmalar: walýutalar, bazarlar/ýurisdiksiýalar, KYC/RG statuslary, oýun üpjün edijileri, traffik kanallary.
4. Wagt we walýuta: saklamak 'event _ time' (UTC) we kadalaşdyrylan 'amount _ base' + 'fx _ source'.
5. Ewolýusiýa: semantik wersiýalar, diňe "sessiz" arakesmeler bolmazdan gabat gelýän üýtgeşmeler.
6. PII-minimalizasiýa: ulanyjy - pseudo-ID arkaly; mapping aýratyn saklanylýar, giriş çäklidir.
4) Adaty görnüşleri çalt
1NF: atom bahalary, sütünlerde massiwsiz (massiwler → çagalar tablisalary).
2NF: atributlar ähli açara baglydyr.
3NF: tranzitiw garaşlylyk ýok (atribut diňe açara bagly).
BCNF: Her kesgitleýji açar. "Ýadro" üçin ulanyň (payments/gameplay).
Amal: Tölegleriň we oýun işjeňliginiň kümüş modellerini azyndan 3NF saklaýarys; has berk BCNF - gollanmalar we baglanyşyk tablisalary üçin.
5) Standart domen modeli (Kümüş)
5. 1 gollanmalar
`dim. users '(psevdo-ID, ýurt, ýaş aralygy, RG-statuslar).
`dim. games '(game_id, provider_id, reanr, RTP, üýtgewsizlik).
`dim. providers '(provider_id, görnüşi, ygtyýarnamasy).
`dim. markets '(ýurisdiksiýa kody, düzgünleşdiriji).
`dim. fx_rates` (date, ccy_from, ccy_to, rate, fx_source).
5. 2 Faktlar (wakalaryň/geleşikleriň dar tablisalary)
`fact. payments` (transaction_id, user_pseudo_id, amount_orig, currency, amount_base, market, event_time, psp_ref, method).
`fact. bets` (bet_id, user_pseudo_id, game_id, stake_base, stake_ccy, outcome, event_time).
`fact. payouts` (payout_id, user_pseudo_id, game_id, amount_base, event_time).
Baglanyşyklar: faktlar, durnukly açarlar boýunça gollanmalar. Ähli pullary "başlangyç walýutada" we "esasy walýutada" köpeldýäris (amount_base), 'fx _ source' belleýäris.
6) Haýal üýtgeýän ölçegler (SCD)
Type I (täzeden ýazmak): orfografiki/kritiki däl düzedişler.
Type II (taryh): 'valid _ from/valid _ to/is _ current', üýtgeşmeleriň barlagy (mysal üçin, RG statusynyň üýtgemegi).
Type III (alternatiw sütün): gysga deňeşdirmeler üçin "öň/soň".
Maslahat: RG/KYC/marketing kanaly üçin - SCD II; Oýun gollanmalary üçin (RTP) - täsiriň tassyklanmagy bilen SCD II.
SCD II mysaly (ýönekeýleşdirilen):sql
CREATE TABLE dim. users_scd (
user_pseudo_id STRING,
country STRING,
rg_status STRING,
valid_from TIMESTAMP,
valid_to TIMESTAMP,
is_current BOOLEAN
);
7) De-duplikasiýa we açarlar
Içerki gatnaşyklar üçin surrogat açarlary (BIGINT/UUID).
Tebigy açarlar (mysal üçin, PSP-den 'transaction _ id') - aýratyn tassyklamak we saklamak.
Dedup '(event_id, source)' -da ingest + Silver-daky biznes açarlary.
sql
CREATE TABLE silver. payments AS
SELECT EXCEPT(rn) FROM (
SELECT p., ROW_NUMBER() OVER (PARTITION BY transaction_id ORDER BY event_time) rn
FROM bronze. payment_events p
)
WHERE rn = 1;
8) Walýutalary we taýmzonlary standartlaşdyrmak
'event _ time' - hemişe UTC; penjireler üçin bazaryň ýerli/wagt zolagyny goşýarys.
Walýutalar: 'amount _ orig' i 'amount _ base' (mysal üçin, EUR) + 'fx _ source', 'fx _ rate _ used'.
Her gün: 'dim. Çeşme we heş-gol bilen fx_rates'.
sql
SELECT t. transaction_id,
t. amount_orig,
t. currency,
r. rate AS fx_rate_used,
t. amount_orig r. rate AS amount_base
FROM bronze. payment_events t
JOIN dim. fx_rates r
ON r. date = DATE(t. event_time) AND r. ccy_from = t. currency AND r. ccy_to = 'EUR';
9) Gollanmalaryň yzygiderliligi
Gollanmalaryň bitewi sanawy (games, providers, markets, currencies).
DQ walidatorlary: 'in _ set', FK-baglanyşyklar, SCD-iň özboluşlylygy, gapma-garşylygy.
Daşarky çeşmelerden (oýun üpjün edijileri, ýurtlar, PSP) "inçe" dimensiýalaryň awtogenerasiýasy.
10) Haçan denormallaşdyrmaly
Gold üçin denormalizasiýa:- durnukly "giň" hasabatlary (GGR, töwekgelçilikli penjireler);
- BI-haýyşlary/daşbordlary çaltlaşdyrmak;
- realtime-vitrin (ClickHouse/Pinot) SLA okamak üçin.
- Hakykatyň çeşmesi Silver bolup galýar.
- Denormallaşdyrylan meýdanlar - Silver-dan hasaplanan/göçürilen meýdanlar; logikanyň wersiýasy.
- Islendik denormalizasiýa resminamalaşdyrylýar we dogrulygyna barlanýar.
11) "Ýyldyz" we "gar tanky" modeli
Staryldyz: bir hakykat + tekiz ölçegler - okamak has aňsat we çalt, ýazmak/utgaşdyrmak has gymmat.
Gar tanky: ölçegler kadalaşdyryldy (kiçi gollanmalar birikdirildi) - dublikatlardan az, haýyşlar has kyn.
Maslahat: "Gold" -da köplenç "ýyldyz", "Silver" -da - kadalaşdyrylan "gar bölekleri".
12) Shemalaryň ewolýusiýasy (safe changes)
Back-compatible: nullable sütünleri goşmak; baýdakly täze salgylanma bahalary.
Breaking: adyny üýtgetmek/görnüşini üýtgetmek/semantik üýtgeşmeler - diňe '/v2 'we migrasiýa döwri üçin goşa ýazgy arkaly.
Şertnamalar: JSON/Euro shema registry, consumer-tests на совместимость.
13) kadalaşmak üçin DQ-gözegçilikler
Iň az toplumy:- Açarlaryň özboluşlylygy: 'transaction _ id', 'bet _ id'.
- Salgylanma bitewiligi: FK na 'dim.'.
- Walýutalar: 'currency' from whitelist, 'fx _ rate _ used' non NULL, 'amount _ base> = 0'.
- Wagt: akylly penjirede 'event _ time'; "geljekki" wakalaryň ýoklugy.
- SCD-dogrulygy: kesişmeýän aralyklar 'valid _ from/valid _ to'.
14) SQL modelleriniň mysallary
Jedelleriň hakykaty (3NF):sql
CREATE TABLE silver. fact_bets (
bet_id STRING PRIMARY KEY,
user_pseudo_id STRING NOT NULL,
game_id STRING NOT NULL,
stake_ccy DECIMAL(18,2) NOT NULL,
currency CHAR(3) NOT NULL,
stake_base DECIMAL(18,2) NOT NULL,
market CHAR(2) NOT NULL,
event_time TIMESTAMP NOT NULL
);
GGR üçin ýyldyz (Gold):
sql
CREATE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
m. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. markets m ON m. code = b. market
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
15) Gizlinlik we gabat gelmek
Ulanyjynyň "Silver" -da lakamlaşdyrylmagy; hakyky ID bilen baglanyşyk - aýratyn goralýan konturda.
RLS/CLS we meýdanlary gizlemek (e-poçta/PAN analitikada elýeterli däl).
Kataloglary/açarlary sebitleşdirmek, shemalary giňeltmek üçin DPO-gözegçilik.
16) Gözegçilik we lineage
Bronze → Silver → Gold-dan Data lineage, üýtgeşmeleriň we şertnamalaryň wersiýalary.
Metrikler: completeness, validity, FK-ýalňyşlyklar, dublikatlar, wagt boýunça "deşikler", haýyşnamanyň bahasy.
Maglumat kitaplarynyň we FX çeşmeleriniň arakesmelerinde alertler.
17) RACI
R: Data Engineering (Kümüş/Altyn modeller), Data Platform (shemalaryň sanawy, DQ).
A: Head of Data/Architecture.
C: Compliance/DPO (PII/retention), Finance (FX/GGR), Risk (RG/AML).
I: BI/Önüm/Marketing/Amallar.
18) Durmuşa geçirmegiň ýol kartasy
MVP (2-4 hepde):1. Kataloglaryň sanawy (markets, currencies, providers, games).
2. Silver modelleri 'fact. payments`, `fact. bets ',' dim. '(3NF), SCD II for' dim. users`.
3. Walýutalaryň/taýmzonlaryň kadalaşmagy, esasy DQ düzgünleri (FK/uniqueness/in_set).
4. Ilkinji Gold-vitrin (GGR Daily) we deňeşdirme synaglary.
2-nji faza (4-8 hepde):- SCD giňeltmek, oýun wakalaryny ýapmak, üpjün ediji konform modelleri.
- Shemalaryň laýyklygynyň awtotestleri, migrasiýa simulýatory, meta-maglumatlar katalogy.
- Açarlary/partiýalary optimizirlemek, toplamak/Z-order.
- Gold, SLA/bahasy üçin denormalizasiýa syýasaty; "ýyldyz/gar tanky" templeytalary.
- Resminamalaryň awtogenerasiýasy, daşbordlarda lineage grafasy.
- Sebitleýin kataloglar we şifrlemek açarlary, DR-maşklar.
19) Hil barlagy
- Bitewi açarlar we gollanmalar tassyklandy.
- 3NF kümüş, SCD "haýal" ölçeglere ulanylýar.
- Walýutalar/wagt zolaklary kadalaşdy; 'fx _ source' kesgitlenýär.
- DQ düzgünleri (FK/uniqueness/range/in_set) işjeň.
- Denormalizasiýa resminamalaşdyryldy, dogrylyk synaglary geçirildi.
- Täze/doly çyzgylar we metrikler daşbordlarda görünýär.
20) Ýygy-ýygydan ýalňyşlyklar we olardan nädip gaça durmaly
Analitikada PII garyşdyrma: mappingleri aýyryň, CLS/RLS ulanyň.
Silver-yň ýeterlik derejede kadalaşmazlygy: 3NF getiriň, ýogsam gymmat goldaw we deňeşdirme ýalňyşlyklary.
FX "hasabatyň hakykaty boýunça": kurslar "yzky" san bilen däl-de, wakada ýazylmalydyr.
Esasy ölçegler üçin SCD ýok: RG/KYC/kanallaryň taryhy ýitýär.
Gold-yň üýtgedilmegi: artykmaç join's → dolandyrylýan denormalizasiýa.
Shemalaryň aç-açan ewolýusiýasy: registry we consumer-tests ulanyň.
21) Jemleýji
Normalizasiýa - bu Kümüş derejeli düzgün: faktlar we ölçegler üçin 3NF/BCNF ýeke-täk açarlar we gollanmalar, dogry taryh (SCD) we wagt/walýutalaryň standartlaşdyrylmagy. Şeýle "skelet" bilen Gold-vitrinler öňünden aýdyp boljak, hasabatlary deňeşdirip boljak we eýeçiligiň bahasy gözegçilik astynda saklanar.