データストアとOLAPモデル
(セクション: 技術とインフラ)
概要
データウェアハウス(DWH)-iGamingのコアアナリティクスレイヤー:規制当局へのレポート、製品/市場別の収益性、コホートLTV、不正防止分析、CRMセグメンテーション、リアルタイムダッシュボード。持続可能なDWHは、明確なデータモデル(Star/Snowflake/Data Vault)、堅牢な統合(ETL/ELT+CDC)、思慮深いパフォーマンス(列エンジン、パーティー、MV)、厳格なメトリクス意味論、セキュリティ/PII、およびコスト管理に基づいて構築されます。
建築的アプローチ
クラシックDWH(キンボールvsインモン)
キンボール(次元/星/雪片):クイックレポートケース;事実と次元、SCDの歴史に焦点を当てます。クイックタイム値。
Inmon (Corporate Information Factory):ノーマライズされたコア+ストアフロント;時間の重い、しかし厳しくそして中心的に。
Data Vault 2。0
Hubs-Links-Satellites:ソース統合と変更監査のためのスケーラブルな「raw」モデル。星の店は上に建てられています。
データレイク/レイクハウス
Data Lake: rawファイル(Parquet/ORC)+ディレクトリ(Hive/Glue/Unity/Metastore)。
レイクハウス:バッチ/ストリーム用の単層、ACIDテーブル(デルタ/アイスバーグ/フーディ)、タイムトラベル、アップサート/マージ、コンパクトファイル、Z注文/クラスタリング。
メダリオン(ブロンズシルバーゴールド)
ブロンズ:生データ(raw)+CDC。
銀:精製され、conformal。
ゴールド:ビジネスケース/メトリクス/キューブ。
雑種(Kafka→の青銅のために適した;シルバー-Lakehouse;ゴールド-ClickHouse/BigQuery/Snowflake)。
OLAPモデル: Star、 Snowflake、 Data Vault
スタースキーマ(星)
ファクトテーブル:トランザクション(レート、預金、セッション)。
次元:プレーヤー、ゲーム、提供者、日付/時間、地理、魅力チャネル。
長所:単純なジョイン、予測されたパフォーマンス。
スノーフレーク
寸法正規化(国/地域/都市階層、製品階層)。
長所:より少ない重複;マイナス-より多くのジョイン。
Data Vault→Star
DVに生の変更を追加します(監査、完全な再現性)、Star/Snowflakeのようなレポートウィンドウを構築します。
統合: ETL/ELT、 CDC、遅い変更
パイプライン
OLTP (Postgres/MySQL)→Kafka/→ブロンズコネクタからのOutbox/CDC。
ELT:銀のクリーニング、dedup、正規化。
ゴールド/ストアフロントのビジネスロジックと集計。
SCD(ゆっくりと変化する寸法)
タイプ1-Overwrite(必須フィールドではありません)。
タイプ2:歴史性(日付付きバージョン)-プロファイル/チャネル/価格の標準。
タイプ3:値のペアの保存(まれ)。
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;
セマンティックレイヤーと「true」メトリック
単一のセマンティックレイヤーを入力します:GGR、 NGR、 Net Deposits、 ARPPU、 LTV、 Churn、 Retention Cohorts定義。
コードとしてのメトリック(dbt metrics/LookML/Semantic Layer)→すべてのレポートで同じ数式。
カレンダー:TZ/地域/週末/キャンペーンの属性を持つ日付/時間表。
ボルトとエンジン: プロファイルの選択
列とクラウドDWH
ClickHouse:超高速スキャン/集計、具現化された表現、投影;イベント/テレメトリーおよびマーケティングショーケースで異なります。
BigQuery:サーバーレス、スケール、自動キャッシュ/クラスタ;スキャンあたりの価格。混合された負荷およびアドホックのために便利。
スノーフレーク:コンピューティング/ストレージブランチ、オンデマンドクラスタ、タイムトラベル;異なったチームに透明。
Redshift/Vertica/Pinot/Druid: OLAP/リアルタイムのオプション。
プロフィールチューニング
日付/地域/チャンネルごとにパーティションを分割します。
フィルター/ジョインキーによるクラスタリング/ソート。
辞書による圧縮とコーディング。
事前集計(ロールアップ、キューブ)、実体化ビュー。
安い評価のためのおよそ機能(HyperLogLog/approx_distinct)。
パフォーマンスエンジニアリング
パーティショニングとクラスタリング
パーティーはコンパートメントの境界です。イベントのための日/時間のパーティー。
クラスタリング(ソートキー/Z順序)-範囲と結合を加速します。
マテリアライズドビュー(MV)
GGR/NGRは日/国/プロダクトによって事前報告します。
CDCストリームからの差分更新。
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' by party、 'merge' by CDC keys、 'watermark' by 'updated_at'。
参加戦略
各バッチセグメント(デノーム)での測定のレプリカ。
小さいdimsを放送して下さい;キーでソートされた大きな事実をシャッフルします。
コスト: 制御と最適化
BigQuery/Snowflake:リミットスキャンサイズ(デザインパーティー/クラスタ)、結果キャッシュ/実体化ビューを有効にし、BIオートクエストを制限します。
ClickHouse:ロットサイズ、メルジェ周波数、ストレージ予算(生イベントのTTL、集計は耐久性があります)。
メトリクスのセマンティクスは「二重」の計算を減らします。
データ剪定:ブロンズの保持、ゴールドの集計。
データ品質(DQ)、カタログ、系統
DQ-checks:完全性、ユニーク性、範囲、ビジネスルール(例えば、集計中のGGR ≥ 0)。
Data Catalog&Lineage:テーブル/フィールドの説明、所有者、PII分類、レポートからソースへのトレース。
制御スキーム:イベント/CDCのコントラクト、互換性のない変更のアラート。
安全性、コンプライアンス、マルチテナンシー
PIIセグメンテーション:個々のゾーン、マスキング/仮名化、KMS暗号化による列。
RBAC/ABAC: project/schema/table/row (RLS)レベルのロール、「need-to-know」のリール。
データのローカライズ:地域のバケット/倉庫(EU/TR/LATAM)。
アクセス監査:誰が店舗やモデルを読み、変更しましたか。
DR、バックアップ、再現性
データコードバージョニング(dbt/git)、 Dev/QA/Prod環境。
メタスター/カタログスナップショット+タイムトラベルテーブル。
保持/TTLは青銅/銀/金を層にします;重要な店頭の輸出。
ゲームデイ:ショーケースを復元し、メトリックの整合性を確認します。
リアルタイムとハイブリッドストアフロント
Stream-to-OLAP: Kafka→ClickHouse/Pinot/Druidのショーケース。
マテリアライズドビュー+CDC (5-15分)。
セマンティックレイヤーは変わりません。メトリックはリアルタイムとバッチで同一です。
GGR by Day and Countryショーケース例(Generic 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.モデルを選択:raw/auditedレイヤー用のDV+ディスプレイケース用のStar。
3.キークエリとウィンドウのためのパーティー/クラスタを設計します。
4.CDC/ELT、 SCDポリシー、およびサロゲートキーを設定します。
5.セマンティックレイヤー(コードとしてのメトリック)と日付/時間カレンダーを入力します。
6.高価なレポートのためのMV/事前集計を作成します。
7.DQ/directory/lineageとスキーマコントロールを有効にします。
8.RBAC/PII/ローカライズ、暗号化、監査を定義します。
9.p95/p99モニタリング、コスト、劣化とオーバーランに関するアラートを設定します。
10.定期的なDR演習と環境の再現性。
アンチパターン
「パーティーのない1つの巨大な事実」→テラバイトのスキャンとスコアが増加しています。
異なるダッシュボードでのメトリックの一貫性のない定義。
ビジネスが歴史性を必要とするSCD2の欠如。
測定の早期正規化:不要なジョインと遅いレポート。
DQチェックと系統→「nothing」レポートのない生データ。
許可がない/TTL→ゴミの貯蔵とコストの爆発。
概要
信頼できるiGaming-DWHは明確なモデル(DV→Star)、単一のメートル辞書、正しいパーティション/クラスタリング、実体化されたストアフロント、厳密なDQ/lineage、およびRBAC/PII/ローカライズです。新鮮さ、ELT主導、価値規律のためのハイブリッドストリーミングを追加し、p99と予算で驚くことなくトーナメント、規制レポート、アドホックリサーチに拡張する持続可能な分析プラットフォームを提供します。