Logo GH

Нормализатсияи маълумот

1) Мақсад

Нормализатсия нусхаҳо ва аномалияҳои навсозиро бартараф мекунад, феҳристҳо ва калидҳои якхеларо муқаррар мекунад, маълумотро барои нигоҳдорӣ мувофиқ ва арзон мекунад. Дар IGaming, ин барои GGR/NGR, таҳлили AML/RG, ҳисоботи танзимкунанда, антифрауд ва ML муҳим аст.

2) Дар куҷо мо муқаррар мекунем

Биринҷӣ (хом): муқаррарӣ нашудааст - нигоҳдорӣ, ба монанди (танҳо замима) барои криминалистика.
Нуқра (тоза/мувофиқат): нормализатсияи асосӣ (3NF/BCNF, феҳристҳо, калидҳо, SCD).
Тилло (хизмат): дӯконҳои мақсаднок - denormalization назоратшаванда барои хондан/BI имконпазир аст.

3) Принсипҳои асосӣ

1. Схема-аввал-Ҳама ҷадвалҳо схемаҳо ва калидҳои возеҳ доранд.
2. Идентификаторҳои ягона: 'user _ pseudo _ id', 'session _ id', 'game _ id', 'provider _ id', 'transaction _ id'.
3. Феҳристҳои умумӣ: асъорҳо, бозорҳо/қаламравҳо, статусҳои KYC/RG, провайдерҳои бозӣ, каналҳои трафик.
4. Вақт ва асъор: 'event _ time' (UTC) -ро нигоҳ доред ва 'миқдор _ база' + 'fx _ source' -ро муқаррар кунед.
5. Эволютсия: версияҳои семантикӣ, танҳо тағиротҳои мувофиқ бидуни танаффуси "хомӯш".
6. Кам кардани PII: корбар - тавассути псевдо-ID; харитасозӣ алоҳида нигоҳ дошта мешавад, дастрасӣ маҳдуд аст.

4) Шаклҳои муқаррарӣ зуд

1NF: арзишҳои атомӣ, массивҳо дар сутунҳо нестанд (массивҳо → ҷадвалҳои кӯдакон).
2NF-Attributes аз тамоми калиди мураккаб вобаста аст.
3NF: вобастагии гузаранда (атрибут танҳо аз калид вобаста аст).
BCNF: ҳар як муайянкунанда калид аст. Барои "ядро" истифода баред (пардохт/бозӣ).

Амал: Моделҳои нуқраи пардохт ва фаъолияти бозӣ ҳадди аққал 3NF нигоҳ медоранд; BCNF сахттар - барои маълумотномаҳо ва ҷадвалҳои истинод.

5) Модели домени истинод (нуқра)

5. 1 Маълумотномаҳо

'дим. истифодабарандагон '(псевдо-ID, кишвар, синну сол, ҳолати RG).
'дим. бозиҳо '(game_id, provider_id, жанр, RTP, ноустуворӣ).
'дим. провайдерҳо '(provider_id, намуд, иҷозатнома).
'дим. бозорҳо '(кодекси юрисдиксия, танзимкунанда).
'дим. fx_rates' (сана, ccy_from, ccy_to, қурб, fx_source).

5. 2 Далелҳо (ҷадвалҳои танг/амалиёт)

'факт. пардохтҳо '(transaction_id, user_pseudo_id, amount_orig, асъор, amount_base, бозор, event_time, psp_ref, усул).
'факт. гаравҳо ( , , , , натиҷа, .
'факт. пардохтҳо '( , , , ).

Истинодҳо: далелҳо ↔ дастурҳои калидҳои устувор. Мо ҳама маблағҳоро дар "асъори манбаъ" ва дар "пойгоҳ" (amount_base), ислоҳи 'fx _ source') такрор мекунем.

6) Андозагирии оҳиста тағирёбанда (SCD)

Навъи I (аз нав нависед): ислоҳоти имло/ғайри интиқодӣ.
Намуди II (таърих): 'дуруст _ аз/дурустии _ ба/is _ current', тағиротҳои аудит (масалан, тағйири ҳолати RG).
Навъи 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) барои пайвандҳои дохилӣ.
Калидҳои табиӣ (масалан, 'transaction _ id' аз PSP) - тасдиқ ва алоҳида нигоҳ дошта мешаванд.
Dedup by '(event_id, манбаъ)' барои ворид кардани + калидҳои корӣ дар Силвер.

Тарҳи пардохт (мисол):
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; барои тирезаҳои мағоза, локал/вақти бозорро илова кунед.
Асъорҳо: 'миқдор _ orig' ва 'sature _ base' (масалан, EUR) + 'fx _ source', 'fx _ rate _ used'.
Таъмири ҳаррӯзаи курсҳо: 'хира. 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) Мувофиқати китобҳои истинодӣ

Феҳристи ягонаи феҳристҳо (бозиҳо, провайдерҳо, бозорҳо, асъорҳо).
Валидаторҳои DQ: 'in _ set', истинодҳои FK, беҳамтоӣ, мувофиқати SCD.
Автогенератсияи dimencias "лоғар" аз манбаъҳои беруна (провайдерҳои бозӣ, кишварҳо, PSP).

10) Кай denormalize

Denormalization дар тилло иҷозат дода шудааст барои:
  • гузоришҳои устувори "васеъ" (GGR, намоиши хатарҳо);
  • Суръатбахшии дархостҳои BI/панели панелҳо
  • дар вақти хониши SLA мағозаҳои вақти воқеӣ (Click 'House/Pinot).
Қоидаҳо:
  • Нуқра манбаи ҳақиқат боқӣ мемонад.
  • Майдонҳои ғайримуқаррарӣ - аз нуқра ҳисоб карда/нусхабардорӣ карда мешаванд; мантиқи версия.
  • Ҳама гуна denormalization ҳуҷҷатгузорӣ карда мешавад ва барои дурустӣ санҷида мешавад.

11) Модели ситора ва барфпӯши барфӣ

Ситора: як далел + андозагирии ҳамвор - хониши осонтар ва тезтар, навиштан/муқоисаи гаронтар.
Барфпӯши барфӣ: ченакҳо ба эътидол оварда мешаванд (зерқисматҳои пайвастшуда) - нусхаҳои камтар, дархостҳои мураккаб.

Тавсия: дар тилло бештар "ситора", дар нуқра - "барфпӯши барфӣ".

12) Эволютсияи схемаҳо (тағироти бехатар)

Бозгашт мувофиқ аст: илова кардани сутунҳои беэътибор; арзишҳои нави истинод бо парчамҳо.
Танаффус: тағир додани номгузорӣ/чопкунӣ/семантикӣ - танҳо тавассути '/v2 'ва воридшавии дукарата барои давраи муҳоҷират.
Шартномаҳо: схемаҳои JSON/Avro дар феҳрист, санҷишҳои истеъмолкунандагон барои мутобиқат.

13) Назорати DQ барои нормализатсия

Маҷмӯи минимум:
  • Калидҳо беназиранд: 'transaction _ id', 'bet _ id'.
  • Беайбии истинод: FK дар 'хира'.
  • Асъорҳо: 'асъор' аз сафедпӯст, 'fx _ rate _ used' NULL нест, 'маблағ _ base> = 0'.
  • Вақт: 'event _ time' дар равзанаи оқилона; ягон воқеаи "оянда" вуҷуд надорад.
  • SCD-дуруст: диапазонҳои такрорнашаванда 'дуруст _ аз/дуруст _ ба'.

14) Намунаҳои моделҳои SQL

Нархҳои воқеӣ (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 (Тилло):
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) Махфият ва риояи он

Бегона кардани корбар дар нуқра; пайвастшавӣ бо ID воқеӣ - дар схемаи алоҳидаи муҳофизатшаванда.
RLS/CLS ва ниқоби саҳроӣ (почтаи электронӣ/PAN дар таҳлил мавҷуд нест).
Минтақасозии феҳристҳо/калидҳо, назорати DPO барои тамдиди схема.

16) Риоя ва насл

Насли маълумот аз Bronze → Silver → Gold, версияи тағирот ва шартномаҳо.
Нишондиҳандаҳо: пуррагӣ, эътимоднокӣ, хатогиҳои ФК, такрорӣ, "сӯрохиҳо" дар вақташ, арзиши дархост.
Огоҳиҳо ҳангоми танаффус дар феҳристҳо ва манбаъҳои FX.

17) RACI

R: Муҳандисии маълумот (моделҳои нуқра/тиллоӣ), Платформаи маълумот (қайди ноҳиявӣ, DQ).
A: Сардори маълумот/меъморӣ.
C: Мувофиқат/DPO (PII/нигоҳдорӣ), Молия (FX/GGR), Хавф (RG/AML).
I: BI/Маҳсулот/Маркетинг/Амалиёт.

18) Харитаи роҳсозӣ

MVP (2-4 ҳафта):

1. Феҳристи феҳристҳо (бозорҳо, асъорҳо, провайдерҳо, бозиҳо).

2. Далели нуқра-моделҳо. пардохтҳо ',' далел. bets ',' хира '. (3HF), SCD II барои' dim. истифодабарандагон '.

3. Меъёри асъор/минтақаи вақт, қоидаҳои асосии DQ (FK/uniqueness/in_set).

4. Аввалин намоиши тиллоӣ (GGR Daily) ва санҷишҳои оштӣ.

Марҳилаи 2 (4-8 ҳафта):
  • Тавсеаи SCD, фарогирии рӯйдодҳои бозӣ, моделҳои мутобиқати провайдер.
  • Автотестҳои мутобиқати схема, симуляторҳои муҳоҷират, каталоги метамаълумот.
  • Оптимизатсияи калидҳо/ҳизбҳо, кластер/Z-фармоиш.
Марҳилаи 3 (8-12 ҳафта):
  • Сиёсати denormalization барои тилло, SLA/арзиш; қолабҳои ситораи/барфпӯши барфӣ.
  • Тавлиди худкори ҳуҷҷатгузорӣ, графикаи насл дар панели панелҳо.
  • Феҳристҳои минтақавӣ ва калидҳои рамзгузорӣ, машқҳои DR.

19) Рӯйхати назорати сифат

  • Калидҳо ва феҳристҳои ягона тасдиқ карда мешаванд.
  • нуқра дар 3NF, SCD ба андозагирии "суст" татбиқ мешавад.
  • асъор/вақтҳо муқаррар карда мешаванд; 'fx _ source' собит шудааст.
  • Қоидаҳои DQ (FK/uniqueness/range/in_set) фаъоланд.
  • Denormalization ҳуҷҷатгузорӣ, санҷишҳои дурустӣ гузаштанд.
  • Дар панели панелҳо ченакҳои хатӣ ва тару тоза/пуррагӣ намоёнанд.

20) Хатогиҳои зуд-зуд ва чӣ гуна аз онҳо канорагирӣ кардан

Омезиши PII дар таҳлил: харитасозии алоҳида, CLS/RLS-ро истифода баред.
Нормализатсияи нокифояи нуқра: ба 3NF оварда мерасонад, вагарна хатогиҳои дастгирӣ ва оштӣ.
FX "барои як гузориш": Нархҳо бояд дар як чорабинӣ сабт карда шаванд, на "ақибмонда".
SCD барои андозаҳои калидӣ нест: таърихи гумшудаи RG/KYC/channel.
Азнавбарқароркунии тилло: ҳамроҳшавии зиёдатӣ § denormalization идорашаванда.
Таҳаввулоти ношаффофи схемаҳо: истифодаи феҳрист ва санҷишҳои истеъмолкунандагон.

21) Сатри поён

Нормализатсия як фанни сатҳи нуқра аст: калидҳои ягона ва маълумотномаҳо, 3NF/BCNF барои далелҳо ва андозагирӣ, таърихи дуруст (SCD) ва стандартикунонии вақт/асъор. Бо чунин "скелет", ҳолатҳои тиллоӣ пешгӯишаванда мешаванд, гузоришҳо қиёс карда мешаванд ва арзиши моликият назорат карда мешавад.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Telegram
@Gamble_GC
Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.