Lacuri de date și agregarea fluxului
1) Scop și valoare
Data Lake/Lakehouse - un strat de referință al stocării pe termen lung și al citirii pe scară largă, unde:- Fluxurile de produse/jocuri/plăți aterizează în bronz „așa cum este”.
- Argintul normalizează și îmbogățește, oferind chei consistente și de calitate.
- Aur - vitrine agregate (inclusiv în timp real/aproape real) pentru BI, regulator, antifraudă/RG.
Agregarea fluxurilor pe randamentele Lakehouse: latență redusă a raportului, cost previzibil, reproductibilitate și criminalistică.
2) Arhitectura de referință
1. Ingest/Edge: HTTP/gRPC, OTel, criteriile finale ale lotului → шина (Kafka/Redpanda).
2. Bronz (numai pentru adăugare): stocarea obiectelor + tabele ACID (Delta/Iceberg/Hudi), partiții după dată/piață/chiriaș; depozitarea sarcinii utile originale.
3. Stream Computer: Flink/Spark/Beam - unități de ferestre, CEP, deadup, căutări online.
4. Argint (curat/conform): normalizare valutară/fus orar, FK/directoare, SCD pentru măsurători.
5. Servire/OLAP: ClickHouse/Pinot/Druid - agregate minut/secundă materializate pentru panouri.
6. Aur (servire): cazuri de afișare zilnică/orară, felii de reglementare, pachete de export imuabile (WORM).
7. Bucle de control: Schema Registry, DQ-as-code, descendență, directoare, secrete/KMS, RBAC/ABAC.
3) Contracte și scheme
Schema-first: JSON/Avro/Protobuf; câmpurile necesare sunt 'event _ time (UTC)', 'event _ id',' trace _ id', 'user _ pseudo _ id',' market ',' schema _ version '.
Evoluție: back-compatibil → adăugând nullable; rupere → '/v2 '+ intrare dublă.
Directory: domain description, owner, fresh SLA, DQ rules, lineage.
4) Debarcarea fluxurilor în lac
Exact o dată în partea de jos: publicarea cel puțin o dată + chiuveta idempotentă (MERGE/upsert prin "event _ id').
Dedup: statornic în flux + unicitate în Silver.
Compresia fișierelor: fișiere mici → OPTIMIZARE/VID regulat pentru citire și cost.
Călătorie în timp: include depanare, reluare și audit.
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) Agregarea fluxului: ferestre și filigrane
Ferestre:- Tumbling - fix (ex. 1 min/5 min) pentru panouri stabile.
- Hopping - suprapunere (etapa
- Sesiune - lacune comportamentale în inactivitate.
- Filigrane: controlul întârziat al datelor (de obicei 2-5 minute), reguli de pre-emitere/corecție.
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) Materializarea agregatelor
Motor OLAP (ClickHouse/Pinot/Druid): stochează agregate minut/secundă pentru tablouri de bord și analize operaționale.
Lakehouse Gold: păstrează felii zilnice/orare pentru raportare și reconciliere (reproductibilitate).
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;
Felie de aur (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) Argint: normalizare și reconciliere
Timp și valută: 'event _ time (UTC)', 'sound _ base', 'fx _ rate _ used', 'fx _ source'.
Chei/directoare: 'user _ pseudo _ id',' game _ id', 'provider _ id',' market '.
SCD II: istorisirea dimensiunilor (utilizatori/jocuri/furnizori/RG/KYC).
Reguli DQ: unicitate cheie, directoare, intervale de cantitate, valabilitate temporală.
8) Înregistrarea unităților și definițiile „corecte”
Strat semantic: formule uniforme GGR/NGR, pariuri/câștiguri, conversie, ARPPU, latență p95.
Versioning metrics: 'metric _ version' și „as-of” calcule.
Dockcards: proprietar, formulă, surse, pregătire SLA.
9) Exact o dată/idempotență și ordine
Autobuz: cel puțin o dată + partiționare (ordine locală).
Procesare: dedup prin 'event _ id' (TTL 24-72h), operatori CEP/fereastră cu ajustări.
Chiuvetă: comite tranzacționale sau upsert/îmbinare idempotent.
Outbox/Inbox: publicarea evenimentelor de domeniu de la OLTP cu garanție.
10) Date și ajustări întârziate
Întârziere permisă: 2-5 min pentru afișaje operaționale; reasamblare de zi cu zi pentru aur.
Corecții: emisii suplimentare în OLAP și reeșantionarea aurului (idempotent).
Steaguri: 'late = true', 'correction _ of = <event _ id>' pentru audit.
11) Observabilitate și DQ
SLI/SLO (repere):- p95 ingest→1 -min vitrină ≤ 2-5 s; Aur de zi cu zi este gata până 06:00 de blocare.
- Integralitatea ≥ 99. 5%; Valabilitatea schemei ≥ 99. 9%; Acoperirea urmelor ≥ 98%.
- Măsurarea conductelor: lag/throughput/time ocupat/stat dimensiune, late-ratio, duprate-rate.
- DQ-tablouri de bord: prospețime/completitudine/valabilitate, pâlnie pierdere, card cheie fierbinte.
- Descendență: drumul de la bronz la aur/exporturi; analiza impactului asupra schimbărilor.
12) Confidențialitate, rezidență, securitate
Minimizare PII: pseudonimizare, cartografiere separată protejată.
Rezidență: SEE/UK/BR - directoare separate și chei de criptare; interzicerea intrărilor transregionale fără motiv.
Criptare: TLS în tranzit; KMS/CMK în repaus; semnături de export + WORM la accelerare.
DSAR/RTBF/Legal Hold: editări selective, înghețări de ștergere, accesări auditate.
13) Performanță și cost
Partiționare: după dată/piață/chiriaș; clustering/Z-ordine de atribute filtrate frecvent.
Compactare: eliminare fișiere mici, OPTIMIZARE/VID regulat.
Materializare: minute/secunde - în OLAP; zi/oră - în aur.
Stocare pe niveluri: cald/cald/rece, recuperare SLA, chargeback prin comandă (cost/GB, cost/interogare).
Preagregare/schițe: HyperLogLog/aprox-distinct acolo unde este acceptabil.
14) Exemple (fragmente)
Flink CEP - structurare depozit (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())
SQL - dedup atunci când este încărcat în argint:
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 idempotent:
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) Procese și RACI
R (Responsabil):- Platforma de date (Lakehouse/catalog/ACID, compactare),
- Streaming (unități/CEP/dedup)
- Domain Analytics (metrics/Gold).
- A (Responsabil): șef de date/CDO.
- C (Consultat): Compliance/Legal/DPO (PII/residency/Legal Hold), Finance (FX/GGR), SRE (SLO/стоимость), Security.
- I (Informat): BI/Produs/Marketing/Operațiuni.
16) Foaia de parcurs privind implementarea
MVP (3-5 săptămâni):1. Lakehouse Bronze/Silver (tabele ACID), ingera de la Kafka, scheme de registru.
2. Unități de flux de bază (1-5 minute) în OLAP; vitrina Gold. ggr_daily (D + 1 până la 06:00).
3. DQ-as-code for Payments/Gameplay, Prospețime/Tablouri de bord complete.
4. Compactare/OPTIMIZARE, valori minime ale costurilor și alerte lag/late/dup.
Faza 2 (5-10 săptămâni):- Silver extension (SCD II pentru utilizatori/jocuri/furnizori), descendență și analiza impactului.
- Căutări asincrone (RG/KYC/ASN/BIN), control întârziat al corecției.
- Strat semantic de valori, reglementări de export (WORM/semnături).
- Multi-regiune, DR/reluare simulator, auto-tuning ferestre şi filigrane.
- Cost-tablouri de bord, chargeback/cote, stocare pe niveluri și arhivare.
- Generarea automată a documentației de prezentare și a cardurilor metrice.
17) Lista de verificare pre-vânzare
- Scheme și contracte în registru; testele back-compat sunt verzi.
- Dedup, filigran/lateness permis, DLQ inclus.
- /OPTIMIZE/VACUUM este configurat conform programului.
- SLO: p95 ingest→minute -view, Aur до 06:00; alerte lag/late/dup/state size.
- Regulile DQ sunt active; descendența este vizibilă de la bronz la exporturi.
- RBAC/ABAC и KMS; rezidență și DSAR/RTBF/Legal Hold testat.
- Costul sub control (cost/GB, cost/interogare, cotă rece), limitele reluărilor.
18) Anti-modele și riscuri
Amestecarea datelor brute și raportate în același tabel: încalcă reproductibilitatea.
Lipsa compresiei: explozia fișierelor mici → cereri costisitoare.
Calculul FX „retroactiv”: Întrerupe istoricul și rapoartele.
Fără filigrane/politici târzii: storefronturi și alerte „float”.
Reîncărcați complet inutil: utilizați trepte și ajustări/MERGE.
PII în Analytics: Păstrați mapări separate, activați CLS/RLS.
19) Glosar (scurt)
Lakehouse - lac de date + tabele ACID și motor SQL.
Bronz/Argint/Aur - straturi brute/normalizate/de servire.
Filigran - limita de pregătire a ferestrei în funcție de eveniment-timp.
Vizualizarea materializată este o vitrină pre-calculată pentru citire rapidă.
Călătoria în timp - citirea versiunilor istorice ale tabelelor.
WORM - depozitare neschimbabilă a artefactelor de export.
20) Linia de jos
Un lac de date cu agregare corectă a fluxului este o disciplină de straturi și contracte: bronz „așa cum este”, Argint pentru normalizare și calitate, OLAP pentru panouri minute, Aur pentru rapoarte reproductibile. Gestionarea ferestrelor și a filigranelor, eliminarea duplicatelor și compresia, confidențialitatea și costurile, obțineți storefronturi rapide, verificabile și conforme pentru produs, conformitate și management operațional.