批處理數據
1)目的和價值
Batch流水線形成可靠的每日/每小時店面,用於:- 監管和財務報告(GGR/NGR,稅收,RG/AML註冊表)。
- BI和產品分析師(隊列,LTV,轉換漏鬥)。
- 精度對比(OLTP↔DWH,提供商/PSP),歷史化(SCD)。
- 為ML準備菲奇和訓練包。
關鍵屬性:可預測性、完整性、可重復性、每單位數據成本低。
2)體系結構(參考)
1.Ingest(原始捕獲):HTTP/gRPC,OLTP的CDC,Bronze →的上載提供商。
2.Lakehouse: Bronze (raw, append-only) → Silver (clean/conform) → Gold (serve).
3.編排:Airflow/Dagster/Prefect(DAG'i,成癮,retrai,SLA)。
4.處理:Spark/Trino/DBT/SQL引擎;派對和ACID格式(Delta/Iceberg/Hudi)。
5.DQ和合同:計劃註冊,DQ規則(YAML/SQL),消費者測試。
6.伺服器:BI/語義層,報告導出(CSV/PDF/JSON+hash),API/GraphQL。
7.可觀察性:piplines,lineage,logi,成本(cost/GB,cost/query)度量。
3)頻率和SLA
每日(D+1至06:00 lock)*GGR報告,監管卸載,對賬。
每小時/準現實:Ops/Financial的操作面板。
每周/每月:精煉、模型和逆轉錄過程。
- 黃金每日店面準備就緒,直到當地時間06:00。
- Freshness Silver p95 ≤ 15分鐘,用於日間微蝙蝠/≤ 2小時。
- Completeness ≥ 99.5%,Validity(方案)≥ 99。9%.
4)增量下載和CDC
方法:- CDC(更改數據捕獲):Debezium/log復制→ Bronze → Silver中的填充物。
- Watermark按時間:'updated_at> max_loaded_ts'。
- 哈希比較:「md5(row)」用於更改檢測。
- Upsert/Merge: Silver/Gold等效更新。
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(測量歷史)
SCD I:重寫(拼寫、次要修補程序)。
SCD II:全功能歷史(「valid_from/valid_to/is_current」)。
SCD III:簡要比較的「之前/之後」。
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 и Reprocessing
Backfill:主要填充/歷史填充。
Reprocessing:在編輯邏輯/修復數據後重新計算店面。
- 相等性(MERGE/upsert),青銅不變性,邏輯轉換。
- 重復運行的時間旅行;元數據快照。
- Guardrails:限制範圍、配額和競爭性喬布斯。
- 文檔:包含步驟和完成標準的運行手冊。
7)圖層建模
Bronze:
僅適用於「event_date」,「jurisdiction」,「tenant」的部分。
我們保留原始的payload(用於forenzika),並固定「ingested_at」。
Silver:
規範化和標準化:FK/參考書,dedup,FX/時間段。
事實/測量表(3NF/BCNF),用於關鍵測量的SCD。
Gold:
BI/監管機構/財務,準備就緒的SLA之下的非正規店面。
聚合物實現;不可變導出工件(hash+WORM)。
8)數據質量(DQ代碼)
Silver的YAML規則示例: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
反應策略:critical → fail job+DLQ;major/minor →標記+報告。
9)語義層和報告
在Semantic layer/metrics商店中統一度量定義(GGR/NGR,ARPPU,Retention)。
測試指標;與BI/出口套件的集成。
報告:CSV/JSON/PDF+sha 256,上載日誌和法律保留。
10)隱私,居住,安全
PII最小化:用戶化名;mapping-在單獨的保護環中。
數據駐留:EEA/UK/BR上的單獨目錄/密鑰;禁止在沒有法律依據的情況下進行跨區域合作。
加密:transit中TLS;KMS/CMK at-rest;出口管制。
DSAR/RTBF:可計算的投影,選擇性編輯;可用性審核。
法律保留:用於監管工件的WORM檔案。
11)性能和成本
按日期/市場/特南特分期付款;Z-order/cluster按頻繁謂詞排列。
格式:Parquet+ACID表;壓縮/統計,OPTIMIZE/VACUUM。
實現:黃金穩定聚集;避免「整體」喬布斯。
配額/預算:按團隊分列的chargeback;後退限制/繁重查詢。
計劃:低負荷窗口(夜間/周末),隊列優先級。
12)可觀察性和控制
Piplines度量標準:持續時間,成功率,retries, rows processed, cost/query。
DQ度量標準:完整性,validity, uniqueness, FK錯誤,漂移。
Freshness heatmap:按領域和市場;SLA-dashbords。
線性:從青銅到報告的起源;變更前的影響分析。
Alerts: SLO預算、DQ降級、延遲、成本上升。
13) SQL/模型示例
貨幣正常化(Silver):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(黃金)每日展示:
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;
完整性控制(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)流程和RACI
R(響應):數據工程(DAG'i,Silver/Gold模型),數據平臺(infra,電路寄存器,DQ)。
A (Accountable): Head of Data / Chief Data Officer.
C (Consulted): Compliance/Legal/DPO (PII/retention), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/產品/營銷/運營。
15)實施路線圖
MVP(4-6周):1.Lakehouse Bronze/Silver(ACID格式),CDC/2-3域的增量。
2.DQ代碼:Payments/Gameplay+CI驗證的10-15規則。
3.從SLA到06:00的第一個黃金展示(GGR Daily);報告export+hash。
4.Freshness/Completeness/Cost Dashbords,基本的Alertes。
第二階段(6至12周):- SCD II для users/games/providers;域擴展。
- 語義層度量;與OLTP/提供商進行對賬(accuracy)。
- Backfill/reprocessing,lineage和impact分析,區域化(EEA/UK)程序。
- 更改的自動仿真(dry-run),預算/配額,chargeback。
- 自動文檔(數據產品頁)、DR練習和時間旅行恢復。
- 價值優化(聚類,實現,TTL,真空)。
16)售前支票清單
- Registry中的合同和計劃,兼容性測試是綠色的。
- 增量下載/CDC正在運行,MERGE是偶數。
- DQ規則是活躍的;critical → fail + DLQ;違規報告。
- SLA/dashboard新鮮/完整;Alertes設置。
- PII/DSAR/RTBF/法律保留政策已得到法律/DPO的確認。
- Runbook'和backfill/reprocessing/DR測試。
- 控制成本(成本/查詢、成本/GB、量)。
17)反模式以及如何避免
整體夜間喬巴:分成獨立步驟,按批次平行。
Full reload不需要:使用increment/CDC/mergies。
在分析中混合PII:保持貼片分開,應用CLS/RLS。
缺少DQ/lineage:輸入DQ代碼並跟蹤來源。
「手動」背景:自動化和記錄,限制範圍。
非管理成本:聚類,實現,重建策略。
18)詞匯表(簡短)
CDC-捕獲來自OLTP的更改。
SCD-緩慢變化的測量(I/II/III)。
Lakehouse是數據湖+ACID表。
MERGE/Upsert-等效更新操作。
時間旅行-閱讀表格的歷史版本。
WORM是不可變的工件存儲。
19)結果
批處理是可預測,可復制和兼容流水線的學科。遵循計劃第一,增量/CDC,SCD歷史,DQ編碼,可觀察性和有意識的經濟學原則,您將獲得穩定的黃金店面和報告,並隨時進行核對並準備審核。