Magazine de date și modele OLAP
(Secțiunea: Tehnologie și infrastructură)
Scurt rezumat
Depozit de date (DWH) - nivelul de analiză de bază al iGaming: rapoarte către autoritățile de reglementare, profitabilitate după produs/piață, cohortă LTV, analiză antifraudă, segmentare CRM și tablouri de bord în timp real. DWH sustenabil este construit pe un model clar de date (Star/Snowflake/Data Vault), integrare robustă (ETL/ELT + CDC), performanță atentă (motoare de coloană, părți, MV-uri), semantică metrică strictă, securitate/PII și management al costurilor.
Abordări arhitecturale
Classic DWH (Kimball vs Inmon)
Kimball (Dimensional/Star/fulg de zăpadă): cazuri rapide de raportare; se concentreze pe fapte și dimensiuni, istoria SCD. Valoare rapidă a timpului.
Inmon (Corporate Information Factory): nucleu normalizat + storefronturi; mai grele în timp, dar strict și central.
Data Vault 2. 0
Hubs-Links-Sateliți: Un model scalabil „brut” pentru integrarea sursei și auditarea schimbărilor. Star storefronts sunt construite pe partea de sus.
Lacul de date/Lakehouse
Data Lake: fișiere brute (parchet/ORC) + directoare (stup/lipici/unitate/metastore).
Lakehouse: un singur strat pentru lot/flux, tabele ACID (Delta/Iceberg/Hudi), călătorie în timp, upsert/îmbinare, fișiere compacte, Z-order/clustering.
Medalion (bronz-argint-aur)
Bronz: date brute (brute) + CDC.
Argint: purificat și conform.
Aur: cazuri de afaceri/metrici/cuburi.
Potrivit pentru hibrizi (Kafka → bronz; Silver в Lakehouse; Aur в ClickHouse/BigQuery/Fulg de zăpadă).
Modele OLAP: Stea, Fulg de nea, Vault de date
Schema stelară (stea)
Tabele de fapte: tranzacții (rate, depozite, sesiuni).
Dimensiuni: jucător, joc, furnizor, data/ora, geo, canal de atracție.
Pro: Joynes simplu, performanță prezis.
Fulg de zăpadă
Normalizarea dimensiunilor (ierarhii de țară/regiune/oraș, ierarhii de produse).
Argumente pro: mai puțină dublare; minus - mai multe joynes.
Data Vault → Star
Adăugăm modificări brute la DV (audit, reproductibilitate completă), construim ferestre de raport precum Star/Snowflake.
Integrare: ETL/ELT, CDC, modificări lente
Conducte
Outbox/CDC de la conectorii OLTP (Postgres/MySQL) → Kafka/ → Bronze.
ELT: curățare, dedup, normalizare în Silver.
Logica de afaceri și agregări în Aur/storefronts.
SCD (Schimbarea lentă a dimensiunilor)
Tip 1-Overwrite (pentru câmpuri neesențiale).
Tipul 2: istoric (versiuni datate) - standard pentru profile/canale/preturi.
Tipul 3: depozitarea unei perechi de valori (rare).
sql
-- insert new dimension version
INSERT INTO dim_player (player_sk, player_id, country, valid_from, valid_to, is_current)
SELECT gen_sk(), s. player_id, s. country, now(), '9999-12-31', true
FROM staging_player s
LEFT JOIN dim_player d ON d. player_id = s. player_id AND d. is_current = true
WHERE d. player_id IS NULL OR d. country <> s. country;
-- closing the old version
UPDATE dim_player d
SET valid_to = now(), is_current = false
FROM staging_player s
WHERE d. player_id = s. player_id AND d. is_current = true AND d. country <> s. country;
Strat semantic și măsurători „adevărate”
Introduceți un singur strat semantic: definițiile GGR, NGR, Net Deposits, ARPPU, LTV, Churn, Retention Cohorts.
Valorile ca cod (dbt metrics/LookML/Semantic Layer) → aceleași formule în toate rapoartele.
Calendar: tabel data/ora cu atribute de TZ/regiuni/weekenduri/campanii.
Bolți și motoare: selectarea pentru profil
Coloana și Cloud DWH
ClickHouse: scanări/agregări ultrarapide, reprezentări materializate, proiecții; este diferit pentru evenimente/telemetrie și vitrine de marketing.
BigQuery: serverless, scară, cache-uri automate/clustere; prețul per scanare; convenabil pentru sarcini mixte și ad-hoc.
Fulg de zăpadă: ramură de calcul/depozitare, clustere la cerere, călătorie în timp; transparent pentru diferite echipe.
Deplasare spre roșu/Vertica/Pinot/Druid: opțiuni pentru OLAP/în timp real.
Tuning profil
Partiționarea după dată/regiune/canal.
Clustering/sortare după tastele filtru/joyn.
Compresie și codificare prin dicționare.
Preagregări (rollup, cuburi), vizualizări materializate.
Funcții aproximative (HyperLogLog/approx_distinct) pentru evaluări ieftine.
Inginerie de performanță
Partiționarea și gruparea
Partidul este limita compartimentului. Petreceri zi/oră pentru evenimente.
Clustering (sortare taste/Z-ordine) - accelerează intervalele și se alătură.
Vizualizări materializate (MV)
Pre-raport GGR/NGR pe zi/țară/produs.
Actualizare incrementală din fluxul CDC.
sql
CREATE MATERIALIZED VIEW mv_ggr_daily
ENGINE = SummingMergeTree()
PARTITION BY toYYYYMMDD(ts)
ORDER BY (country, product_id, toDate(ts)) AS
SELECT toDate(ts) AS d,
country,
product_id,
sum(stake) AS stake_sum,
sum(win) AS win_sum,
sum(stake - win) AS ggr
FROM bets
GROUP BY d, country, product_id;
Modele incrementale (dbt/ELT)
Strategii 'insert _ overwrite' by party, 'merge' prin chei CDC, 'watermark' prin 'update _ at'.
Alăturați-vă strategiilor
Replica de măsurători în fiecare segment de lot (denorm).
Difuzare dims mici; amestecați fapte mari sortate după cheie.
Cost: control și optimizare
BigQuery/fulg de zăpadă: dimensiunea de scanare limită (părți de proiectare/clustere), permite cache rezultat/vizualizări materializate, limita auto-quest-uri BI.
ClickHouse: dimensiunea lotului, frecvența merjey, bugetul de stocare (TTL pentru evenimente brute, agregări sunt durabile).
Semantica metrică reduce calculul „dublu”.
Tăierea datelor: păstrarea pentru bronz, agregarea pentru aur.
Calitatea datelor (DQ), catalog, descendență
DQ-verificări: completitudine, unicitate, intervale, reguli de afaceri (de exemplu, GGR ≥ 0 în agregate).
Catalog de date și Lineage: descrieri tabel/câmp, proprietari, clasificare PII, urmărire raport la sursă.
Sisteme de control: contract pentru evenimente/CDC, alerte pentru modificări incompatibile.
Siguranță, conformitate și multi-chirie
Segmentare PII: zone individuale, mascare/pseudonimizare, coloane cu criptare KMS.
RBAC/ABAC: roluri la nivelul proiectului/schemei/tabelului/rândului (RLS), role pentru „need-to-know”.
Localizarea datelor: galeti/depozite regionale (EU/TR/LATAM).
Audit de acces: cine a citit/schimbat storefronturi și modele.
DR, copii de rezervă și reproductibilitate
Versionarea codului de date (dbt/git), Dev/QA/Prod mediu.
Instantanee Metastor/catalog + mese de călătorie în timp.
Straturi de retenție/TTL Bronz/Argint/Aur; exportul de vitrine critice.
Ziua jocului: restaurarea vitrinelor, verificarea integrității măsurătorilor.
Storefronturi în timp real și hibride
Stream-to-OLAP: Kafka → ClickHouse/Pinot/Druid pentru vitrine de minut.
Vizualizări materializate + CDC pentru actualizări aproape online (5-15 min).
Stratul semantic rămâne același: valorile sunt identice în timp real și lot.
GGR by Day and Country Showcase Exemplu (Generic SQL)
sql
CREATE TABLE fact_bets (
bet_id BIGINT,
player_sk BIGINT,
game_sk BIGINT,
country_sk BIGINT,
stake DECIMAL(18,2),
win DECIMAL(18,2),
ts TIMESTAMP
) PARTITION BY DATE(ts);
CREATE TABLE dim_country (
country_sk BIGINT PRIMARY KEY,
iso2 STRING,
region STRING,
valid_from TIMESTAMP,
valid_to TIMESTAMP,
is_current BOOL
);
-- Showcase
CREATE MATERIALIZED VIEW mart_ggr_daily AS
SELECT
DATE(ts) as d,
c. region,
SUM(stake) AS stake_sum,
SUM(win) AS win_sum,
SUM(stake - win) AS ggr
FROM fact_bets f
JOIN dim_country c ON c. country_sk = f. country_sk AND c. is_current
GROUP BY d, c. region;
Lista de verificare a implementării
1. Definiți sursele și domeniile, fixați dicționarul metric.
2. Selectați modelul: DV pentru straturi brute/auditate + Stea pentru cazuri de afișare.
3. Design partide/clustere pentru interogări cheie și ferestre.
4. Configurați CDC/ELT, politica SCD și cheile surogat.
5. Introduceți un strat semantic (valori ca cod) și un calendar dată/oră.
6. Creați MV-uri/preagregări pentru rapoarte costisitoare.
7. Activați controlul DQ/director/descendență și schemă.
8. Definiți RBAC/PII/localizare, criptare, audit.
9. Configurați monitorizarea p95/p99, costurile, alertele privind degradarea și depășirea.
10. Exerciții DR regulate și reproductibilitatea mediilor.
Anti-modele
„Un fapt gigantic fără partide” → scanări terabyte și scorul este în creștere.
Definiții inconsecvente ale metricii în diferite tablouri de bord.
Lipsa de SCD2 în cazul în care afacerea necesită istoricitate.
Normalizarea prematură a măsurătorilor: joynes inutile și rapoarte lente.
Date brute fără verificări DQ și descendență → rapoarte „nimic”.
Absența permisiunii/TTL → depozitarea gunoiului și explozia costurilor.
Rezumat
Fiabil iGaming-DWH este un model clar (DV→Star), un singur dicționar metric, partiții corecte/grupare, storefronturi materializate, DQ/descendență strictă și RBAC/PII/localizare. Adăugați streaming hibrid pentru prospețime, disciplină bazată pe ELT și valoare - și obțineți o platformă de analiză durabilă care se scalează la turnee, rapoarte de reglementare și cercetare ad-hoc fără surprize în p99 și buget.