Przetwarzanie partii
1) Cel i wartość
Przenośniki seryjne tworzą niezawodne dzienne/godzinne skrzynki wyświetlające dla:- Sprawozdawczość regulacyjna i finansowa (GGR/NGR, podatki, rejestry RG/AML).
- BI i analityka produktów (kohorty, LTV, lejki konwersyjne).
- Weryfikacja dokładności (OLTP i DWH, dostawcy/PSP), historyzacja (SCD).
- Przygotowanie funkcji i zestawów treningowych do ML.
Kluczowe właściwości: przewidywalność, kompletność, odtwarzalność, niski koszt na jednostkę danych.
2) Architektura (odniesienie)
1. Ingest (raw capture): HTTP/gRPC, CDC z OLTP, dostawca uploads → Brąz.
2. Lakehouse: Brąz (surowy, tylko dodatek) → Srebrny (czysty/zgodny) → Złoty (służyć).
3. Orkiestra: Airflow/Dagster/Prefekt (DAG'i, zależności, przekładki, SLA).
4. Przetwarzanie: silniki iskrowe/trino/DBT/SQL; formaty podziału i ACID (Delta/Iceberg/Hudi).
5. DQ i kontrakty: Schema Registry, zasady DQ (YAML/SQL), testy konsumenckie.
6. Obsługa: warstwa BI/semantyczna, eksport raportowany (CSV/PDF/JSON + hash), API/GraphQL.
7. Obserwowalność: metryka rurociągu, rodowód, kłody, koszt (koszt/GB, koszt/zapytanie).
3) Częstotliwości i SLA
Codziennie (od D + 1 do 06:00) : raporty GGR, przesyłki regulacyjne, pojednania.
Godzina/kwasi-czas: panele operacyjne dla Ops/Finance.
Tygodniowo/miesięcznie: konkonkonsolidacja, modele i retroprocesje.
- Prezentacje Gold-Daily są gotowe do 06:00 czasu lokalnego.
- Świeżość Srebro p95 ≤ 15 min dla mikrobatów/≤ 2 h w ciągu dnia.
- Kompletność ≥ 99. 5%, ważność (program) ≥ 99. 9%.
4) Dodatkowe pliki do pobrania i CDC
Podejścia:- CDC (Zmiana przechwytywania danych): Replikacja debezu/dziennika → Brąz → przyrosty w srebrze.
- Znak wodny według czasu: 'updated _ at> max_loaded_ts'.
- Porównanie hash: 'md5 (wiersz)' do wykrywania zmian.
- Upsert/Merge: Idempotent Silver/Gold aktualizacje.
sql
MERGE INTO silver. payments AS s
USING staging. payments_delta AS d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
5) SCD (historia pomiarów)
SCD I: nadpisywanie (pisownia, drobne korekty).
SCD II: pełna historia ('valid _ from/valid _ to/is _ current').
SCD III: „przed/po” dla krótkich porównań.
sql
MERGE INTO dim. users_scd t
USING stage. users u
ON t. user_pseudo_id = u. user_pseudo_id AND t. is_current = TRUE
WHEN MATCHED AND (t. country <> u. country OR t. rg_status <> u. rg_status)
THEN UPDATE SET t. is_current = FALSE, t. valid_to = CURRENT_TIMESTAMP
WHEN NOT MATCHED
THEN INSERT (user_pseudo_id, country, rg_status, valid_from, valid_to, is_current)
VALUES (u. user_pseudo_id, u. country, u. rg_status, CURRENT_TIMESTAMP, NULL, TRUE);
6) Backfill, Reprocessying
Zasypka: Początkowe wypełnienie/historyczne zasypki.
Ponowne przetwarzanie: ponowne obliczanie okien sklepu po edycji danych logicznych/korygujących.
- Idempotencja (MERGE/upsert), odporność na brąz, wersioning logiczny.
- Podróż w czasie dla powtarzających się metadanych migawek.
- Poręcze: ograniczenia zakresów, kwot i konkurencyjnych miejsc pracy.
- Dokumentacja: książka startowa z etapami i kryteriami wykonania.
7) Modelowanie warstwy
Brąz:- Tylko dodatek, 'event _ date', 'jurysdykcja', 'lokator' partycje.
- Przechowujemy oryginalny ładunek (do kryminalistyki), naprawiamy 'ingested _ at'.
- Normalizacja i standaryzacja: FK/katalogi, dedup, FX/timezones.
- Tabele faktów/wymiarów (3NF/BCNF), SCD dla wymiarów kluczowych.
- Denormalizowane sklepy dla BI/regulacja/finanse, gotowość SLA.
- Materializacja kruszyw; niezmienne artefakty eksportowe (hash + WORM).
8) Jakość danych (DQ-as-code)
Przykład zasad YAML dla Silver:yaml table: silver. payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: unique_tx type: unique columns: [transaction_id]
severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical
Polityka reakcji: krytyczna → praca awaryjna + DLQ; major/minor → tag + report.
9) Warstwa semantyczna i sprawozdawczość
Ujednolicone definicje mierników (GGR/NGR, ARPPU, Retention) w sklepie semantycznym/metrycznym.
mierniki wersji; Integracja z pakietami BI/export
Raporty: CSV/JSON/PDF + sha256, download log and Legal Hold, jeśli to konieczne.
10) Prywatność, rezydencja, bezpieczeństwo
Minimalizacja PII: pseudonimizacja użytkowników; mapowanie - w osobnej pętli chronionej.
Miejsce zamieszkania danych: oddzielne katalogi/klucze dla EOG/UK/BR; zakaz przyłączenia się międzyregionalnego bez podstaw prawnych.
Szyfrowanie: TLS w tranzycie; KMS/CMK w stanie spoczynku; kontrole wywozu.
DSAR/RTBF: projekcje obliczeniowe, edycje selektywne; audyt dostępu.
Legal Hold: Archiwum WORM do artefaktów regulacyjnych.
11) Wydajność i koszt
Podział według daty/rynku/najemcy; Z-order/cluster według częstych predykatów.
Formaty: Parkiet + tabele ACID; kompresja/statystyki, OPTIMIZE/VACUUM.
Materializacja: stabilne agregacje w złocie; unikać „monolitycznych” miejsc pracy.
Kwoty/budżety: obciążenie zwrotne według zespołu; limity zasypki/ciężkie żądania.
Harmonogram: okna niskiego obciążenia (noc/weekend), priorytety kolejki.
12) Obserwowalność i zarządzanie
Metryka rurociągu: czas trwania, wskaźnik sukcesu, ponowne próby, przetworzone wiersze, koszt/zapytanie.
Wskaźniki DQ: kompletność, ważność, wyjątkowość, błędy FK, dryf.
mapa ogrzewania świeżości: według domeny i rynku; Deski rozdzielcze SLA.
Rodowód: Brązowe pochodzenie raportów; analiza wpływu przed zmianami.
Wpisy: budżety SLO, degradacja DQ, opóźnienia, wzrost kosztów.
13) Przykłady SQL/modelu
Normalizacja waluty (srebro):sql
CREATE OR REPLACE TABLE silver. payments AS
SELECT p. transaction_id,
p. user_pseudo_id,
p. currency,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
p. market,
CAST(p. event_time AS TIMESTAMP) AS event_time
FROM bronze. payment_events p
JOIN dim. fx_rates r
ON r. date = DATE(p. event_time)
AND r. ccy_from = p. currency AND r. ccy_to = 'EUR';
GGR Codzienna prezentacja (złoto):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. 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. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
Kontrola kompletności (DQ SQL):
sql
SELECT market, event_date, COUNT() AS n
FROM silver. fact_bets
GROUP BY market, DATE(event_time) AS event_date
HAVING n = 0;
14) Procesy i RACI
R (odpowiedzialny): Data Engineering (DAG ', Silver/Gold models), Data Platform (infra, circuit register, DQ).
A (Odpowiedzialny): Szef Danych/Główny Inspektor Danych.
C (konsulowane): Zgodność/Prawna/DPO (PII/retencja), Finanse (FX/GGR), Ryzyko (RG/AML), SRE (SLO/стоноста).
I (Poinformowany): BI/Produkt/Marketing/Operacje.
15) Plan działania w zakresie wdrażania
MVP (4-6 tygodni):1. Lakehouse Bronze/Silver (format ACID), CDC/przyrosty dla 2-3 domen.
2. DQ-like-code: 10-15 zasad dla płatności/Gameplay + CI walidacji.
3. Pierwszy Gold Showcase (GGR Daily) z SLA do 06:00; zgłoszony eksport + hash.
4. Świeżość/Kompletność/Deski rozdzielcze kosztów, podstawowe wpisy.
Faza 2 (6-12 tygodni):- SCD II - użytkownicy/gry/dostawcy; rozszerzenie domeny.
- Warstwa semantyczna mierników; kontrole z OLTP/dostawcami (dokładność).
- Procedury zasypywania/regeneracji, rodowód i analiza oddziaływania, regionalizacja (EOG/UK).
- Automatyczna symulacja zmian (sucha), budżety/kwoty, obciążenie zwrotne.
- Automatyczna dokumentacja (strony produktu danych), ćwiczenia DR i odzyskiwanie czasu podróży.
- Optymalizacja kosztów (klastrowanie, materializacja, TTL, próżnia).
16) Lista kontrolna przedsprzedaży
- Umowy i schematy w rejestrze, testy zgodności są zielone.
- Dodatkowe pliki do pobrania/CDC, MERGE jest idempotent.
- Zasady DQ są aktywne; krytyczny → fail + DLQ; raport z naruszeń.
- Deski rozdzielcze SLA/świeżości/pełności; Alerty są ustawione.
- Polityka PII/DSAR/RTBF/Legal Hold potwierdzona przez Legal/DPO.
- Run Book "i backfill/reprocessing/DR testowane.
- Koszt kontrolowany (koszt/zapytanie, koszt/GB, kwoty).
17) Anty-wzory i jak uniknąć
Monolityczne dźwięki nocne: podzielone na niezależne kroki, równoległe przez strony.
Pełny przeładowanie niepotrzebnie: używać przyrostów/CDC/scalić.
Mieszanie PII w analityce: przechowywać mapy oddzielnie, stosować CLS/RLS.
Brak DQ/lineage: Wprowadź kod DQ-as i pochodzenie śladowe.
„Ręczne” zasypki: zautomatyzować i dokumentować, zakresy limitów.
Koszty niemożliwe do opanowania: klastrowanie, materializacja, polityka zatrzymywania.
18) Słownik (krótki)
CDC - Przechwytywanie zmian z OLTP.
SCD - powoli zmieniające się pomiary (I/II/III).
Lakehouse - jezioro danych + tablice ACID.
MERGE/Upsert - idempotent aktualizacji operacji.
Podróże w czasie - czytanie historycznych wersji tabel.
WORM - niezmienne przechowywanie artefaktów.
19) Najważniejsze
Przetwarzanie partii jest dyscypliną przewidywalnych, powtarzalnych i bezpłatnych rurociągów. Stosując się do zasad schematu-first, przyrostów/CDC, historyzacji SCD, DQ-as-code, obserwowalności i świadomej ekonomii, otrzymasz stabilne prezentacje i raporty Gold, zweryfikowane przez iskry i gotowe do audytu w dowolnym momencie.