GH GambleHub

數據存儲和OLAP模型

(部分: 技術和基礎設施)

簡短摘要

數據倉庫(DWH)是iGaming分析的參考層:向監管機構報告,產品/市場盈利能力,隊列LTV,反欺詐分析,CRM細分和實時儀表板。可持續的DWH建立在清晰的數據模型(Star/Snowflake/Data Vault),強大的集成(ETL/ELT+CDC),深思熟慮的性能(柱式引擎,分期,MVs),嚴格的度量,安全性/PII和成本管理語義上。

架構方法

經典DWH (Kimball vs Inmon)

Kimball (Dimensional/Star/Snowflake):快速報告展示;專註於事實和維度,SCD歷史。快速超時。
Inmon(企業信息工廠):規範化核心+店面;時間更重,但嚴格和集中。

Data Vault 2.0

Hubs-Links-Satellites:用於源集成和更改審核的可擴展的「原始」模型。在上面建造了Star店面。

Data Lake / Lakehouse

數據湖:原始文件(Parquet/ORC)+目錄(Hive/Glue/Unity/Metastore)。
Lakehouse:用於擊打/流的單個層,ACID表(Delta/Iceberg/Hudi),時間旅行,upsert/merge,緊湊文件,Z命令/集群。

Medallion (Bronze–Silver–Gold)

青銅:原始數據(raw)+CDC。
Silver:純化和保形。
黃金:商業展示/度量/立方體。

適用於混合動力車(Kafka → Bronze;Silver в Lakehouse;Gold в ClickHouse/BigQuery/Snowflake).

OLAP型號: Star、Snowflake、Data Vault

Star Schema(明星)

表的事實:交易(利率、存款、會話)。
Dimensions:玩家,遊戲,提供商,日期/時間,地理,吸引渠道。
優點:簡單的joynes,可預測的性能。

Snowflake

測量標準化(國家/地區/城市層次結構,產品層次結構)。
優點:減少重復;減去-更多的joynes。

Data Vault → Star

原始更改堆疊在DV(審計,完全可重復性)中,報告店面以Star/Snowflake的形式構建。

整合: ETL/ELT,CDC,緩慢變化

Pipline

來自OLTP的Outbox/CDC(Postgres/MySQL)→ Kafka/連接器 →青銅。
ELT:在Silver清洗,去除,正常化。
黃金/店面中的業務邏輯和聚合。

SCD (Slowly Changing Dimensions)

類型1:重寫(對於非必要字段)。
類型2:歷史性(日期版本)-配置文件/頻道/價格的標準。
類型3:存儲一對值(很少)。

示例SCD2(SQL,通用表示):
sql
-- insert new dimension version
INSERT INTO dim_player (player_sk, player_id, country, valid_from, valid_to, is_current)
SELECT gen_sk(), s. player_id, s. country, now(), '9999-12-31', true
FROM staging_player s
LEFT JOIN dim_player d ON d. player_id = s. player_id AND d. is_current = true
WHERE d. player_id IS NULL OR d. country <> s. country;

-- closing the old version
UPDATE dim_player d
SET valid_to = now(), is_current = false
FROM staging_player s
WHERE d. player_id = s. player_id AND d. is_current = true AND d. country <> s. country;

語義層和「真實」度量

輸入單一度量層(semantic layer): GGR、NGR、Net Deposits、ARPPU、LTV、Churn、Retention Cohorts定義。
度量標準作為代碼(dbt metrics/LookML/Semantic Layer)在所有報告中→相同的公式。
日歷:具有TZ/區域/周末/活動屬性的日期/小時表。

存儲和引擎: 選擇配置文件

🚨 Check Alignment of PH>結腸和雲DWH

ClickHouse:超快速掃描/聚合,實例化表示,投影;不同於活動/遙測和營銷展示。
BigQuery:服務器文件,縮放,自動緩存/群集;掃描的價格;方便混合載荷和臨時載荷。
Snowflake:compute/storage部門,按需群集,時間旅行;對不同的團隊透明。
Redshift/Vertica/Pinot/Druid:OLAP/real-time下的變體。

調諧到配置文件

按日期/地區/頻道參加。
聚類/分類過濾鍵/joins。
用字典壓縮和編碼。
預聚集(rollup,cubes),實例化表示。
Approx功能(HyperLogLog/approx_distinct)用於廉價評分。

性能設計

參與和聚類

派對是隔間的邊界。活動白天/小時分期付款。
聚類(sort keys/Z-order)-加快範圍並加入。

實例化視圖(MV)

GGR/NGR按天/國家/產品進行預估。
從CDC流進行增量更新。

ClickHouse示例(持有MV):
sql
CREATE MATERIALIZED VIEW mv_ggr_daily
ENGINE = SummingMergeTree()
PARTITION BY toYYYYMMDD(ts)
ORDER BY (country, product_id, toDate(ts)) AS
SELECT toDate(ts) AS d,
country,
product_id,
sum(stake) AS stake_sum,
sum(win)  AS win_sum,
sum(stake - win) AS ggr
FROM bets
GROUP BY d, country, product_id;

增量模型(dbt/ELT)

分批使用「insert_overwrite」策略,CDC密鑰使用「merge」策略,「updated_at」使用「watermark」策略。

聯合戰略

每個分段中的測量副本(denorm)。
Broadcast small dims;按鍵排序的shuffle large事實。

成本: 控制和優化

BigQuery/Snowflake:限制掃描尺寸(設計parts/Clusters),包括結果cache/materialized views,限制BI自動任務。
ClickHouse:分期付款的大小、商品的頻率、存儲預算(原始事件的TTL,聚合耐用)。
度量的語義減少了「雙重」計算。
Data pruning: Bronze的續集,Gold的聚合。

數據質量(DQ),目錄,lineage

DQ支票:完整性(完整性),唯一性,範圍,業務規則(例如,聚合中的GGR ≥ 0)。
Data Catalog&Lineage:表/字段說明、所有者、PII分類、從報告到源的跟蹤。
電路控制:事件/CDC合同,不兼容更改的變量。

安全性、合規性和多重性

PII分段:單獨區域,掩碼/別名,帶有KMS加密的列。
RBAC/ABAC:項目/電路/表/字符串(RLS)級別的角色,「需要知道」的角色。
數據本地化:區域buckets/warehouses (EU/TR/LATAM)。
訪問審核:誰閱讀/更改了店面和模型。

DR、備用和可重復性

數據代碼驗證(dbt/git), Dev/QA/Prod環境。
轉移器/目錄快照+表格轉換(時間旅行)。
Bronze/Silver/Gold 重組/TTL層;出口關鍵店面。
遊戲日:恢復店面,檢查指標的完整性。

實時和混合店面

流到OLAP:Kafka → ClickHouse/Pinot/Druid用於分鐘展示。
Materialized views+CDC用於近乎在線的更新(5-15分鐘)。
語義層保持相同:度量標準在實時和測試中相同。

「GGR by Days and Country」展示示例(由SQL概括)

sql
CREATE TABLE fact_bets (
bet_id   BIGINT,
player_sk BIGINT,
game_sk  BIGINT,
country_sk BIGINT,
stake   DECIMAL(18,2),
win    DECIMAL(18,2),
ts     TIMESTAMP
) PARTITION BY DATE(ts);

CREATE TABLE dim_country (
country_sk BIGINT PRIMARY KEY,
iso2    STRING,
region   STRING,
valid_from TIMESTAMP,
valid_to  TIMESTAMP,
is_current BOOL
);

-- Showcase
CREATE MATERIALIZED VIEW mart_ggr_daily AS
SELECT
DATE(ts) as d,
c. region,
SUM(stake) AS stake_sum,
SUM(win)  AS win_sum,
SUM(stake - win) AS ggr
FROM fact_bets f
JOIN dim_country c ON c. country_sk = f. country_sk AND c. is_current
GROUP BY d, c. region;

實施支票

1.定義源和域,記錄指標字典。
2.選擇模型:用於原始/審核層的DV+用於店面的Star。
3.根據關鍵查詢和窗口設計批次/群集。
4.配置CDC/ELT、SCD策略和surrogate鍵。
5.輸入語義層(度量作為代碼)和日期/小時日歷。
6.為昂貴的報告創建MVs/預聚合。
7.啟用DQ/目錄/lineage和模式控制。
8.定義RBAC/PII/本地化、加密、審核。
9.定制p95/p99監控、成本、降解差異和超支。
10.常規的DR演習和周圍環境的可重復性。

反模式

「一個沒有派對的巨大事實」→ TB掃描和計數正在增長。
不同行列中的度量定義不一致。
在企業需要歷史性的地方缺乏SCD2。
過早的測量標準化:多余的喬因和緩慢的報告。
沒有DQ支票和線性的原始數據→無關緊要的報告。
缺乏退縮/TTL →垃圾儲存和成本爆炸。

結果

可靠的iGaming-DWH是清晰的模型(DV→Star),單一度量詞典,正確的分期/聚類,實例化店面,嚴格的DQ/線性以及 RBAC/PII/本地化。添加混合流媒體以實現新鮮度、ELT驅動和價值紀律-並獲得一個可持續的分析平臺,可擴展到錦標賽、監管報告和臨時研究,而p99和預算中沒有驚喜。

Contact

與我們聯繫

如有任何問題或支援需求,歡迎隨時聯絡我們。我們隨時樂意提供協助!

開始整合

Email 為 必填。Telegram 或 WhatsApp 為 選填

您的姓名 選填
Email 選填
主旨 選填
訊息內容 選填
Telegram 選填
@
若您填寫 Telegram,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。