Analisi stream vs Batch
1) Breve essenza
Stream: gestione continua degli eventi in secondi: antifrode/AML, trigger RG, alert SLA, pannelli operativi.
Batch è un ricalcolo periodico con riproduzione completa: report regolatori (GGR/NGR), finswerk, dataset ML.
Punti di riferimento: Stream p95 e2e 0. 5-5 c, Batch D + 1 fino alle 06:00 (lock.) .
2) Matrice di selezione (TL; DR)
Regola 80/20: tutto ciò che non richiede una reazione <5 minuti - in Batch; il resto è in Stream, con la validazione notturna della Batch.
3) Architetture
3. 1 Lambda
Stream per online + Batch per il consolidamento. In più, flessibilità. Meno due logiche.
3. 2 Kappa
Tutto come flussi; Batch = «repliche» attraverso il logo. In più, un unico codice. Meno: complessità delle repliche/costo.
3. 3 Lakehouse-Hybrid (raccomandato)
Stream operativi OLAP (minuti) e Bronze/Silver; Batch sovrascrive Gold (D + 1) e pubblica i report.
4) Dati e tempo
Stream
Le finestre sono tumbling/hopping/sessions.
Watermarks: 2-5 min; late data viene contrassegnato e completato.
Stateful: CEP, deadup, TTL.
Batch
Inverti/CDC: «updated _ at», replica logica.
SCD I/II/III: cronologia degli attributi.
Snapshot - Livelli diurni/mensili per «as-of».
5) Pattern di applicazione in iGaming
AML/Antifrode: Stream (velocity/strutturazione) + Batch crociera e valigetta.
Stream controllo limiti/auto-esclusioni Registro dei rapporti Batch.
Operazioni/SRE: Stream alert SLA; Batch post-analisi incidenti e trend.
Prodotto/marketing: Stream personalizzazione/missione; Batch coorti/LTV.
Finanziari/Report: Batch (Gold D + 1, pacchetti WORM), Stream - pannelli operativi.
6) DQ, riproduzione, repliche
Stream DQ: convalida diagrammi, deadup '(event _ id, source)', completeness finestre, late-ratio, dup-rate; DLQ critico.
Batch DQ: unicità/FK/range/temporale, compressione con OLTP/provider; fail job + report.
- Stream: repliche di topic nell'intervallo + deterministic di trasformazione.
- Batch: time-travel/versioni logiche ('logic _ variante') + slot Gold.
7) Privacy e residenza
Stream: alias, maschera in linea, linee di montaggio regionali (EEA/UK/BR), timeout per PII-lookups esterni.
Batch: isolamento di mupping PII, RLS/CLS, DSAR/RTBF, Legale Hold, archivi WORM.
8) Cost-engineering
Stream: evitare chiavi «hot» (salting), limitare async lookups, TTL stato, preagregazione.
Batch: partizionamento/clustering, compressione small files, materializzazione di aggregazioni stabili, quote/finestre di avvio.
9) Esempi
9. 1 Stream - Flink SQL (10 min velocity depositi)
sql
SELECT user_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS sum_10m
FROM stream. payments
GROUP BY user_id, TUMBLE(event_time, INTERVAL '10' MINUTE);
9. 2 Stream - CEP (pseudo-codice AML)
python if count_deposits(10MIN) >= 3 and sum_deposits(10MIN) > THRESH \
and all(d. amount < REPORTING_LIMIT for d in window):
emit_alert("AML_STRUCTURING", user_id, snapshot())
9. 3 Batch - MERGE
sql
MERGE INTO silver. payments s
USING stage. delta_payments d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
9. 4 Batch — Gold GGR (D+1)
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) event_date,
b. market, g. provider_id,
SUM(b. stake_base) stakes_eur,
SUM(p. amount_base) payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) 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. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
10) Metriche e SLO
Stream (punti di riferimento)
p95 ingest→alert ≤ 2–5 c completeness окна ≥ 99. 5%
schema-errors ≤ 0. 1%
late-ratio ≤ 1%
Disponibilità ≥ 99. 9%
Batch (punti di riferimento)
Gold. daily è pronto entro le 6:00.
completeness ≥ 99. 5%
validity ≥ 99. 9%
Incidente MTTR DQ 24-48 ore
11) Test e release
Contratti/schemi: consumer-driven test; back-compat CI.
Stream: regole canarie, avvio scuro, simulatore replay.
Batch: dry-run nei campionamenti, confronto delle metriche, sommazione di controllo (recordcilion).
12) Anti-pattern
Duplicazione logica: calcoli di Stream e Batch diversi senza allineamento delle formule.
API esterne sincronizzate nel percorso caldo Stream senza cache/timeout.
Full reload «per sicurezza» al posto degli incantesimi.
Nessun watermarks/late-policy.
PII nei livelli analitici nessun CLS/RLS.
Vetrine Gold che mutano a posteriori.
13) Ibrido consigliato (playbook)
1. Tracciato stream: ingest → → Flink/Beam (watermarks, deadup, CEP) →
OLAP (ClickHouse/Pinot) per pannelli 1-5-min + Bronze/Silver (append).
2. Tracciato batch - Inverti/CDC da Silver normalizzazione/SCD da Gold vetrine/report giornalieri (WORM).
3. Allineamento: un unico livello semantico delle metriche; crocevia nightly Stream↔Batch; Discrepanze> → Ticet.
14) RACI
R (Respontible) - Streaming platform (Stream-Infra), Data Engineering (Batch Model), Domain Analytics (metriche/regole), MLOs (Fitch/Feature Store).
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/Legal/DPO, Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/Prodotto/Marketing/Operazioni.
15) Road map
MVP (2-4 settimane):1. Kafka/Redpanda + 2 topic critici ('payments', 'auth').
2. Flink-jobs: watermark + deadup + 1 regola CEP (AML o RG).
3. Vetrina OLAP 1-5 min + dashboard lag/late/dup.
4. Lakehouse Silver (ACID), prima Gold. ggr _ daily (D + 1 fino alle 6:00).
Fase 2 (4-8 settimane):- Inverti/CDC per dominio, SCD II, livello semantico delle metriche.
- Compressione in streaming DQ e nightly.
- Regionalizzazione (EEA/UK/BR), DSAR/RTBF, Legale Hold.
- Replica simulatore, canary/A-B rilascio regole/metriche.
- Cost-dashboard e quote; tiered storage; Esercitazioni DR.
- Generazione automatica della documentazione di vetrine/metriche e lineage.
16) Assegno-foglio di implementazione
- Schemi/contratti in Registry; back-compat test sono verdi.
- Stream: watermarks/allowed-lateness, дедуп, DLQ; pannelli OLAP in vendita.
- Batch: Incanto/CDC, SCD II, Gold D + 1 con esportazioni WORM.
- Uno strato semantico delle metriche; nightly .
- DQ-dashboard Freshness/Completeness/Validity; alert lag/late/dup.
- RBAC/ABAC, crittografia, residenza; DSAR/RTBF/Legal Hold.
- Costo sotto controllo (cost/GB, cost/query, state size, repliche in quota).
17) Totale
Stream e Batch non sono concorrenti, ma due ingranaggi dello stesso motore. Stream risponde «qui e ora», Batch è la verità da verificare «al mattino». L'approccio ibrido Lakehouse, un unico strato di metriche e la disciplina DQ/lineage consentono di costruire tracciati analitici veloci, riproducibili e complessi, ottimali per SLA e costo.