GH GambleHub

Laghi di dati e aggregazione dei flussi

1) Assegnazione e valore

Data Lake/Lakehouse è un livello di riferimento per la conservazione a lungo termine e la lettura su larga scala dove:
  • I flussi da prodotti/giochi/pagamenti atterrano a Bronze «com'è».
  • Silver normalizza e arricchisce fornendo chiavi e qualità coerenti.
  • Gold è una vetrina aggregata (tra cui real/near-real-time) per BI, regolatori, antifrode/RG.

L'aggregazione dei flussi su Lakehouse offre un basso ritardo nei rapporti, costi prevedibili, riproducibilità e forensistica.

2) Architettura arbitrale

1. Ingest/Edge: HTTP/gRPC, OTel, batch endpoints → шина (Kafka/Redpanda).
2. Bronze (append-only): magazzino oggetti + ACID (Delta/Iceberg/Hudi), partiture by date/market/tenant; storage del payload originale.
3. Stream Compute: Flink/Spark/Beam - unità a finestre, CEP, deadup, online-lookups.
4. Silver (clean/conform) - Regolazione delle valute/timesone, FK/riferimenti, SCD per le misurazioni.
5. Serving/OLAP: ClickHouse/Pinot/Druid - Apparecchiature da minuti/secondi materializzate per i pannelli.
6. Gold (serve) - Vetrine diurne/orarie, tagli regolatori, pacchetti di esportazione invariati (WORM).
7. Tracciati di controllo: Schema Registry, codice DQ-come, lineage, directory, segreti/KMS, RBAC/ABAC.

3) Contratti e schemi

Schema-first: JSON/Avro/Protobuf; campi obbligatori: 'event _ time (UTC)', 'event _ id', 'trace _ id', 'user _ pseudo _ id', 'market', 'schema _ version'.
Evoluzione: back-compatibile per aggiungere nullable; breaking '/v2 '+ doppia voce.
Cartella descrizione dominio, proprietario, freschezza SLA, regole DQ, lineage.

4) Atterraggio dei flussi nel lago

Exactly-once sul fondo: at-least-once pubblicazione + idempoted sink (MERGE/upsert a «event _ id»).
stateful in strim + unicità in Silver.
Compagine di file: small files → OTTIMIZE/VACUUM regolari per la lettura e il costo.
Time-travel include debug, repliche e verifiche.

Esempio Iceberg Partizionamento (DDL-Idea):
sql
CREATE TABLE bronze. payment_events (
event_id STRING, user_pseudo_id STRING, currency STRING,
amount DECIMAL(18,2), market STRING, event_time TIMESTAMP, payload STRING
)
PARTITIONED BY (days(event_time), market);

5) Aggregazione flussi: finestre e watermarks

Finestre:
  • Tumbling è fisso (ad esempio, 1 min/5 min) per pannelli stabili.
  • Hopping - sovrapponibili (passo
  • Sessione è una rottura comportamentale per inattività.
  • Watermarks - Gestione late data (generalmente 2-5 minuti), regole di preemissione/correzione.
Flink SQL - Depositi di mercato di 1 minuto:
sql
SELECT market,
TUMBLE_START(event_time, INTERVAL '1' MINUTE) AS ts_min,
COUNT() AS deposits_1m,
SUM(amount_base) AS sum_1m
FROM silver. payments
GROUP BY market, TUMBLE(event_time, INTERVAL '1' MINUTE);

6) Materializzazione delle unità

Motore OLAP (ClickHouse/Pinot/Druid) - Memorizza unità minuti/secondi per dashboard e analisi operative.
Lakehouse Gold memorizza i tagli giornalieri/orari per la segnalazione e la riproduzione.

ClickHouse - materialization view (GGR da minuti):
sql
CREATE MATERIALIZED VIEW mv_ggr_1m
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), market, provider_id) AS
SELECT toStartOfMinute(event_time) AS ts_min,
market,
provider_id,
sumState(stake_base) AS s_stake,
sumState(payout_base) AS s_payout
FROM stream. game_events
GROUP BY ts_min, market, provider_id;
Taglio a giorni (Lakehouse):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(event_time) AS event_date,
market, provider_id,
SUM(stake_base) AS stakes_eur,
SUM(payout_base) AS payouts_eur,
SUM(stake_base) - SUM(payout_base) AS ggr_eur
FROM silver. fact_game_financials
GROUP BY 1,2,3;

7) Silver: normalizzazione e negoziazione

Ora e valuta: 'event _ time (UTC)', 'amount _ basé,' fx _ rate _ used ',' fx _ source '.
Chiavi/guide: «user _ pseudo _ id», «game _ id», «provider _ id», «market».
SCD II: storiizzazione delle misurazioni (users/games/provider/RG/KYC).
Regole DQ: unicità delle chiavi, guide, intervalli di importo, temporale-validità.

8) Registro delle apparecchiature e definizioni «corrette»

Semantic Layer: singole formule GGR/NGR, scommesse/vincite, conversione, ARPPU, latency p95.
Versioning delle metriche: «metric _ variante» e «as-of» del calcolo.
Carte doc: owner, formula, fonti, SLA pronto.

9) Exactly-once/idampotenza e ordine

Bus: at-least-once + partizionamento (ordine locale).
Elaborazione: deadup dì event _ id "(TTL 24-72h), operatori CER/finestre con regolazioni.
Sink: committenti transazionali o idempotent upsert/merge.
Outbox/Inbox - Pubblica eventi di dominio da OLTP con garanzia.

10) Late data e regolazioni

Allowed lateness: 2-5 min per le vetrine operative; sovrapprezzi giornalieri per la Gold.
Regolazioni: preemissioni in OLAP e ridisegnazione Gold (idempotent).
I flag sono «late = true», «correction _ of = <event _ id>» per il controllo.

11) Osservabilità e DQ

SLI/SLO:
  • p95 - min vetrina 2-5 c; Gold daily è pronto entro le 6:00.
  • Completeness ≥ 99. 5%; Schema validity ≥ 99. 9%; Trace coverage ≥ 98%.
  • Metriche di pipeline: lag/throughput/busy time/state size, late-ratio, dup-rate.
  • DQ-Dashboard: Freshness/Completeness/Validity, vortice di perdita, mappa delle chiavi hot.
  • Lineage: percorso da Bronze a Gold/export; Analisi impact in caso di modifiche.

12) Privacy, residenza, sicurezza

Minimizzazione PII: alias, mapping protetto separato.
Residency: EEA/UK/BR - singole directory e chiavi di crittografia Vietare i join'ov crocifissori senza fondamento.
Crittografia: TLS in-transit; KMS/CMK at-rest; firma di esportazione + WORM durante la regolazione.
DSAR/RTBF/Legale Hold: modifiche selettive, congelamento delle cancellazioni, accessibilità verificabili.

13) Prestazioni e costi

Partitura per data/mercato/tenante; clustering/Z-order per attributi spesso filtrati.
Compattazione: eliminazione di small files, OTTIMIZE/VACUUM regolare.
Materializzazione: minuti/secondi in OLAP; 24 ore al Gold.
Tiered storage: hot/warm/cold, SLA di ripristino, conformeback per comando (cost/GB, cost/query).
Preagregazione/sketch, HyperLogLog/approx-distinct dove è accettabile.

14) Esempi (sezioni)

Flink CEP - Struttura dei depositi (10 min):
python if count_deposits(window=10MIN) >= 3 \
and sum_deposits(window=10MIN) > THRESH \
and all(d. amount < REPORTING_LIMIT for d in window_events):
emit_alert("AML_STRUCTURING", user_id, snapshot())
Deduplicazione SQL durante il caricamento in Silver:
sql
CREATE TABLE silver. payments AS
SELECT EXCEPT(rn) FROM (
SELECT p., ROW_NUMBER() OVER (PARTITION BY event_id ORDER BY event_time) rn
FROM bronze. payment_events p
) WHERE rn = 1;
Iceberg/Delta - MERGE idipotente:
sql
MERGE INTO silver. fact_bets s
USING stage. fact_bets_delta d
ON s. bet_id = d. bet_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;

15) Processi e RACI

R (Responsible):
  • Platform data (Lakehouse/directory/ACID, compagine),
  • Streaming (unità/CEP/dedup),
  • Domain Analytics (metriche/Gold).
  • A (Accountable): Head of Data/CDO.
  • C (Consulted): Compliance/Legal/DPO (PII/residency/Legal Hold), Finance (FX/GGR), SRE (SLO/стоимость), Security.
  • I (Informed): BI/Prodotto/Marketing/Operazioni.

16) Road map di implementazione

MVP (3-5 settimane):

1. Lakehouse Bronze/Silver (ACID-Tabelle), ingest di Kafka, diagramma registry.

2. Unità strim di base (1-5 min) in OLAP; la vetrina Gold. ggr _ daily (D + 1 fino alle 6:00).

3. Codice DQ come per Payments/Gameplay, dashboard Freshness/Completeness.

4. Compattazione/OTTIMIZE, minime coste metriche e alert lag/late/dup.

Fase 2 (5-10 settimane):
  • Estensione Silver (SCD II per users/games/provider), lineage e impact.
  • Lookups asincroni (RG/KYC/ASN/BIN), gestione delle regolazioni late.
  • Livello semantico delle metriche, regolamento di esportazione (WORM/Firma).
Fase 3 (10-16 settimane):
  • Multi-regione, DR/replay-simulatore, auto-tuning finestre e watermarks.
  • Cost-dashboard, chargeback/quote, tiered storage e archiviazione.
  • Generazione automatica della documentazione delle vetrine e delle schede delle metriche.

17) Foglio di assegno prima della vendita

  • Schemi e contratti nel registro; back-compat test sono verdi.
  • Abilitato deadup, watermark/allowed lateness, DLQ.
  • La compagine/OTTIMIZE/VACUUM è stata configurata come pianificato.
  • SLO: p95 ingest→minute-view, Gold до 06:00; alert lag/late/dup/state size.
  • Le regole DQ sono attive; lineage è visibile da Bronze alle esportazioni.
  • RBAC/ABAC и KMS; residenza e DSAR/RTBF/Legale Hold sono stati testati.
  • Costo sotto controllo (cost/GB, cost/query, quota cold), limiti per repliche.

18) Anti-pattern e rischi

La miscelazione tra dati crudi e report in una tabella viola la reproducibility.
L'esplosione di small files è costosa.
Calcolo FX a posteriori - Rompe la cronologia e i report.
Niente watermarks/late-policy, vetrine e alert che nuotano.
Full reload senza necessità: utilizzare gli incantesimi/MERGE e le regolazioni.
PII nell'analisi: tenete separati i mupping, includete CLS/RLS.

19) Glossario (breve)

Lakehouse - data lake + tabelle ACID e motore SQL.
Bronze/Silver/Gold - strati crudi/normalizzati/cervinaggi.
Watermark è il limite di preparazione delle finestre per event-time.
Materialization View è una vetrina predefinita per la lettura rapida.
Time-travel - Lettura delle versioni storiche delle tabelle.
WORM - Memorizzazione invariata dei manufatti di esportazione.

20) Totale

Un lago di dati con la corretta aggregazione strim è la disciplina dei livelli e dei contratti: Bronze «com'è», Silver per la normalizzazione e la qualità, OLAP per i pannelli minuti, Gold per i rapporti riproduttivi. Gestendo finestre e watermarks, deducibilità e compattazione, privacy e costo, si ottengono vetrine veloci, verificabili e complesse per il prodotto, la compilazione e la gestione operativa.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.