GH GambleHub

Маалыматтарды нормалдаштыруу

1) Максаты

Нормалдаштыруу жаңыртуулардын дубликаттарын жана аномалияларын жок кылат, бирдиктүү маалымдамаларды жана ачкычтарды белгилейт, маалыматтарды макулдашылган жана арзан коштоосунда кылат. iGaming GGR/NGR, AML/RG анализдери, жөнгө салуучу отчеттуулук, антифрод жана ML үчүн маанилүү болуп саналат.

2) Кайда нормалдаштыруу

Bronze (raw): нормалдашпайт - сактоо (append-only) forensics үчүн.
Silver (clean/conform): негизги нормалдаштыруу (3NF/BCNF, колдонмолор, ачкычтар, SCD).
Gold (serve): максаттуу терезелер - окуу/BI үчүн башкарылуучу денормализация мүмкүн.

3) Негизги принциптер

1. Schema-биринчи: бардык таблицалар ачык схемалар жана ачкычтар бар.
2. Бирдиктүү идентификаторлор: 'user _ pseudo _ id', 'session _ id', 'game _ id', 'provider _ id', 'transaction _ id'.
3. Бирдиктүү колдонмолор: валюталар, базарлар/юрисдикциялар, KYC/RG статустары, оюн провайдерлери, трафик каналдары.
4. Убакыт жана валюта: сактоо 'event _ time' (UTC) жана нормалдаштырылган 'amount _ base' + 'fx _ source'.
5. Эволюция: семантикалык версиялар, "унчукпай" ажырымдарсыз гана шайкеш келген өзгөрүүлөр.
6. PII-минималдаштыруу: колдонуучу - псевдо-ID аркылуу; mapping өзүнчө сакталат, кирүү чектелген.

4) нормалдуу түрү тез

1НФ: атомдук баалуулуктар, колонка массивдери жок (массивдер → балдар таблицалары).
2НФ: атрибуттар бардык курамдык ачкычка көз каранды.
3НФ: эч кандай транзиттик көз карандылык (атрибут гана ачкычка көз каранды).
BCNF: ар бир аныктоочу ачкыч болуп саналат. "Ядро" үчүн колдонуу (payments/gameplay).

Practice: Silver-төлөм моделдери жана оюн иш-чаралардын минималдуу 3НФ; катуураак BCNF - маалымдамалар жана шилтеме таблицалар үчүн.

5) Эталон домен модели (Күмүш)

5. 1 Колдонмолор

`dim. users '(psevdo-ID, өлкө, курактык диапазону, RG-статусу).
`dim. games '(game_id, provider_id, жанр, RTP, туруксуздук).
`dim. providers '(provider_id, түрү, лицензия).
`dim. markets '(юрисдикция коду, жөнгө салуучу).
`dim. fx_rates` (date, ccy_from, ccy_to, rate, fx_source).

5. 2 Фактылар (тар окуялар/транзакциялар таблицалары)

`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).

Байланыштар: туруктуу ачкычтар боюнча маалымат кагаздары. Бардык суммалар "баштапкы валютада" жана "базалык валютада" кайталанат (amount_base), 'fx _ source' деп белгиленет).

6) жай өзгөрүп өлчөө (SCD)

Type I (кайра жазуу): орфографиялык/критикалык эмес оңдоолор.
Type II (тарых): 'valid _ from/valid _ to/is _ current', өзгөрүүлөрдүн аудити (мисалы, RG статусун өзгөртүү).
Type III (альтернатива тилкеси): кыска салыштыруу үчүн "чейин/кийин".

Сунуш: RG/KYC/маркетинг каналы үчүн - SCD II; Оюн маалымдамалары үчүн (RTP) - SCD II таасир валидациясы менен.

SCD II Мисалы (жөнөкөйлөштүрүлгөн):
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) Дедупликация жана ачкычтар

ички байланыштар үчүн суррогат ачкычтар (BIGINT/UUID).
Табигый ачкычтар (мисалы, PSP 'ден' transaction _ id ') - өзүнчө валидациялоо жана сактоо.
Dedup '(event_id, source)' боюнча ingest + боюнча Silver бизнес ачкычтар.

Төлөмдөрдүн дедупи (мисалы):
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) Валюталарды жана таймзондорду стандартташтыруу

'event _ time' - дайыма UTC; витриналар үчүн жергиликтүү/таймзонаны кошобуз.
Валюталар: 'amount _ orig' и 'amount _ base' (мисалы, EUR) + 'fx _ source', 'fx _ rate _ used'.
Күнүмдүк курстарды бекитүү: 'dim. 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) Маалымдамалардын консистенттүүлүгү

Колдонмолордун бирдиктүү реестри (games, providers, markets, currencies).
DQ валидаторлору: 'in _ set', FK-шилтемелер, уникалдуулугу, SCD ырааттуулугу.
Тышкы булактардан (оюн провайдерлери, өлкөлөр, PSP) "жука" дименсиялардын автогенерациясы.

10) Качан Денормалдаштыруу

Denormalization үчүн Gold жол берилет:
  • туруктуу "кенен" отчеттор (GGR, тобокелдик терезелер);
  • BI-суроо/dashboard тездетүү;
  • realtime-vitrin (ClickHouse/Pinot) SLA окуу астында.
Эрежелер:
  • чындык булагы Silver бойдон калууда.
  • Денормалдаштырылган талаалар - Silver эсептелүүчү/көчүрүлүүчү; логиканы версиялоо.
  • Ар кандай денормализация документтештирилет жана тууралыгына текшерилет.

11) Модель "жылдыз" жана "кар"

Star: бир чындык + жалпак өлчөө - жөнөкөй жана тез окуу, кымбат жазуу/макулдашуу.
Кар бүртүкчөсү: өлчөө нормалдаштырылган (төмөнкү-маалымдама туташтырылган) - аз дубликат, кыйыныраак суроо.

Сунуш: Алтын көп "жылдыз", Silver - нормалдаштырылган "кар".

12) Схемалардын эволюциясы (safe changes)

Back-compatible: nullable мамычаларды кошуу; желектери бар жаңы маалымдама маанилери.
Breaking: аты-жөнүн өзгөртүү/түрүн өзгөртүү/семантикалык жылыштар - гана '/v2 'жана кош жазуу аркылуу көчүрүү мезгили.
Келишимдер: JSON/Euro схемалар каттоо, шайкештиги үчүн керектөөчү-тесттер.

13) нормалдаштыруу үчүн DQ-контролдоо

Минималдуу топтому:
  • Ачкычтардын уникалдуулугу: 'transaction _ id', 'bet _ id'.
  • Референттик бүтүндүк: FK на 'dim.'.
  • Валюталары: 'currency' from whitelist, 'fx _ rate _ used' NULL эмес, 'amount _ base> = 0'.
  • Убакыт: акылдуу терезеде 'event _ time'; "келечектеги" окуялардын жоктугу.
  • SCD-туура: кайчылаш эмес диапазондор 'valid _ from/valid _ to'.

14) SQL үлгүлөрү

Коюмдардын фактысы (3НФ):
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 үчүн жылдыз (Алтын):
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) Купуялык жана комплаенс

Silver колдонуучунун псевдонимизациясы; чыныгы ID менен байланышуу - өзүнчө корголгон контурда.
RLS/CLS жана талааларды жашыруу (электрондук почта/PAN аналитика жеткиликтүү эмес).
Каталогдорду/ачкычтарды регионалдаштыруу, схемаларды кеңейтүү үчүн DPO көзөмөлү.

16) Байкоо жана сызык

Bronze → Silver → Gold тартып Data lineage, котормолорун жана келишимдер.
Метрика: completeness, validity, FK-ката, дубликат, убакыт боюнча "тешиктер", суроо наркы.
Справочниктердин жана FX булактарынын үзүлүшүндө алерталар.

17) RACI

R: Data Engineering (Silver/Gold моделдери), Data Platform (схемалар реестри, DQ).
A: Head of Data/Architecture.
C: Compliance/DPO (PII/retention), Finance (FX/GGR), Risk (RG/AML).
I: BI/Продукт/Маркетинг/Операциялар.

18) Ишке ашыруунун жол картасы

MVP (2-4 жума):

1. Каталог реестри (markets, currencies, providers, games).

2. Silver-моделдер 'fact. payments`, `fact. bets ',' dim. '(3NF), SCD II үчүн' dim. users`.

3. Валюталарды/таймзондорду нормалдаштыруу, негизги DQ эрежелери (FK/uniqueness/in_set).

4. Биринчи Gold-Display (GGR Daily) жана текшерүү тесттер.

2-этап (4-8 жума):
  • SCD кеңейтүү, оюн иш-чараларды камтуу, провайдердик конформалык моделдер.
  • Схемалардын шайкештигинин автотесттери, миграция симулятору, метадерилдер каталогу.
  • Оптималдаштыруу ачкычтар/партиялар, кластерлештирүү/Z-order.
Этап 3 (8-12 жума):
  • Алтын, SLA/наркы үчүн Denormalization саясаты; темплейттер "жылдыз/кар бүртүкчөсү".
  • Autogeneration документтер, дашбордддордо сызык.
  • Аймактык каталогдор жана шифрлөө ачкычтары, DR-машыгуулар.

19) Чек сапаты

  • Бирдиктүү ачкычтар жана колдонмолор бекитилген.
  • Silver 3НФ, SCD "жай" өлчөө колдонулат.
  • Валюталар/таймзондор нормалдаштырылган; 'fx _ source' бекитилет.
  • DQ эрежелери (FK/uniqueness/range/in_set) активдүү.
  • Denormisation документтештирилген, туура тесттер өттү.
  • тактайчалар жана тактайчалар көрүүгө болот сергектик/толуктугу метриктер.

20) Көп каталар жана аларды алдын алуу үчүн кантип

Аналитикада PII аралаштыруу: Mappings бөлүп, CLS/RLS колдонуу.
Silver жетишсиз нормалдаштыруу: 3НФ алып келет, болбосо кымбат колдоо жана текшерүү каталар.
FX "отчеттун фактысы боюнча": курстар "арткы" санда эмес, окуяга белгилениши керек.
негизги өлчөө үчүн эч кандай SCD: жоголгон RG/KYC/каналдар тарыхы.
Gold кайра нормалдаштыруу: ашыкча join's → башкарылуучу denormalization.
Бүдөмүк схемалар эволюциясы: каттоо жана керектөөчү-тесттерди колдонуу.

21) Жыйынтык

Нормалдаштыруу - бул Күмүш деңгээл дисциплинасы: фактылар жана өлчөөлөр үчүн 3НФ/BCNF бирдиктүү ачкычтар жана маалымдамалар, туура тарых (SCD) жана убакыт/валюталарды стандартташтыруу. Мындай "скелет" менен Gold-витриналар алдын ала айтууга болот, отчеттор салыштырууга болот, ал эми ээлик кылуу баасы контролго алынат.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.