GH GambleHub

分析リポジトリのインデックス作成

1) iGamingプラットフォームをインデックス化する理由

分析速度:GGR/NET、変換、RG/AMLおよびA/B実験に関するレポートがSLAに適合しています。
コスト:スキャンするバイト数が少なくなります→計算/倉庫請求書を低くします。
信頼性:安定したp95/p99ダッシュボードのレイテンシとAPIメトリクス。
スケール:「フルスキャン」地獄の価値のないブランド/市場/PSP/プロバイダの数十。

2)ロードモデル(インデックス作成前)

Факты: 'payments'、 'game_rounds'、 'sessions'、' bonus_events'。
寸法:'dim_user' (PIIなし)、'dim_provider'、 'dim_psp'、 'dim_country'。
リクエスト:"last N days'、" brand/country/provider/psp"による集計、statusフィールドによるフィルタ、サロゲートキーによる参加、JSON属性(支払い方法、デバイス)による検索、top-K/percentile。

選択性、カーディナリティ、使用頻度に基づいてインデックスを選択します。

3)インデックスの種類といつ取るか

3.1クラシック

B-tree:選択性の高い列('user_surrogate_id'、 'occuled_at'、 'amount')の等価/範囲。
ハッシュ:純粋な平等;分析では少ない頻度で(弱い範囲に対して)。
ビットマップ:低いカルディナリティと頻繁に接続されたフィルタ('country'、 'kyc_level'、 'rg_state'、 'brand')。マスクの合計のために異なっています。

3.2カラム特異性

Min-max(データスキップ):パーケットストライプ/パーツの自動統計「最小/最大」→エンジンスキップブロック。フィルターされたフィールドによってソートされると、より良い動作します。
Bloomインデックス:ブロック内の値に属することのクイック確率テスト('user_id'、 'transaction_id'、 'psp')。
BRIN (Block Range Index):データが自然に順序付けされている場合に範囲をブロックするための安価な「ポインタ」(時間)。時系列には安価だが効果的。

3.3高度/専門にされる

GiST/GIN(反転):JSON/arrays/text、ネストされた属性('metadata。method='Papara'、 'device。[……]')のos。
Join/Projection (ClickHouse/MPP): join/aggを加速するためのマテリアル(pre-joinキーは事実の隣に格納され、予備集計)。
ベクトル(ANN):類似の埋め込みを検索(推奨/不正防止動作)-IVF/HNSW/Flatを「最寄りの隣人インデックス」として検索します。
Z 順序/Z順序(lakehouse/Databricks)/クラスタキー(Snowflake )/ORDER BY (ClickHouse):ディスク上のデータの多次元クラスタリングにより、データのスキップが向上します。

4)仕切り、分類、クラスタリング

パーティー(日付/国/ブランド):大規模(日/週)"小さなファイルの呪いを避けるために。"WHERE/アクセス権で高い選択性を持つフィールドを選択します。
パーティー内での並べ替え:'ORDER BY (occurred_at、 brand、 psp)'または'(brand、 country、 provider)'によるZ-order-これがmin-maxとbloomの機能の向上です。
Cluster/Recluster:局所性を維持するための定期的な再分類。
TTLと保持:古いパーツ/セグメントの自動削除。

5)マテリアライズされたビューと投影

ホットスライスのMV: 'payments_7d_by_brand_psp'、 'rounds_1d_by_provider'。ストリーミングアップサートをサポートします。
ClickHouse/Aggregate tables-Presets、ロールアップレベル(chas→den→nedelya)。
結果キャッシュ:繰り返し可能なダッシュボードのクエリ結果キャッシュ/ウェアハウス結果キャッシュ(クエリトークンとデータの鮮度で検証)。

6)半構造化データ(JSON/VARIANT)

パスによるインデックス:jsonパスの反転/GINインデックス('$。device。os'、'$。psp。詳細はこちら。method')。
列の重要な属性の具現化:安定したフィルタのために(支払い方法、デバイス、アプリケーションのバージョン)。
主要な統計:選択的な計画のためのディストリビューションの収集。

7)データレイク: 氷山/デルタ/フーディ

マニフェストインデックス:パーケットファイルに関するメタデータ(min-max、 null-count、 bloom)→パーティションのプルーニング+ファイルのスキップ。
ファイル圧縮/マージ:小さなファイルを「最適」サイズ(128-1024 MB)に定期的にマージします。
クラスタリング/Z順序:相関するフィールドのファイルの再パッケージ化(例:'brand、 country、 occurred_at')。
Delete/Updateインデックス:位置deltasとbloomを使用してmerge-on-readを高速化します。

8)インデックスの選び方: 実用的なチェックリスト

1.トップNリクエスト(負荷の90%) →/join/groupフィルタフィールドを収集します。
2.各フィールドについて、選択性'sel=1-distinct (value )/rows'とcardinalityを評価します。
3.時間ごとにバッチ+安定したフィルタ/アクセスで1-2測定。
4.フィルタと結合キーを一致させるためのソート/クラスタキー。
5.点IDにブルームを追加し、ビットマップでカーディナリティを低くします。
6.熱い集計→MV/投影。
7.JSONパス→反転インデックス+実体化。
8.湖で-スケジュールで圧縮とクラスタリング。
9.SLO: p95レイテンシ、スキャン/リクエストのバイト、スキップされたデータレートを入力します。

9)サポートおよび維持

ANALYZE/statistics:カルディナリティとヒストグラムを更新します。そうでなければ、オプティマイザは「盲目」です。
VACUUM/OPTIMIZE/RECLUSTER:最適化と再分類。
インデックスの使用を監視する:「カバー率」、「未使用のインデックスリスト」、「スキャンされたバイト/バイトがスキップされた」。
オートアドバイザー:クラスタキーの定期的な推奨事項とクエリログに基づいたソート。
回帰テスト:新しいキーをデプロイする前に、リクエストプロファイルとコストを比較します。

10)メトリックとSLOインデックス

テクニカル:p95/p99レイテンシ、スキャンされたバイト/クエリ、スキップされたバイト%、タッチされたファイル、キャッシュのヒットレート。
エコノミー:$/リクエスト、$/ダッシュボード、$/TBスキャン。
操作:コンパクション時間、再分類キュー、「小さなファイル」の共有。
計画の質:インデックス/予測を使用したクエリの割合、カーディナリティの正確さ。

11) iGamingケース(既製レシピ)

11.1支払い/PSP:ドロップ/拒否

パーティー:'日によって'。'(ブランド、国、occurred_at)'を並べ替えます。
Bloom: 'transaction_id'、 'user_id'。ビットマップ:'psp'、 'status'。
MV: 'payments_7d_by_brand_psp (status、 decines)'。
検索結果:P95→8。2sから1。1s、スキャンされたバイトは87%です。

11.2ゲームラウンド:プロバイダー/ゲーム

Z-order/ORDER BY: '(provider、 game_id、 occurred_at)'。
投影/agg: 'rounds_1d_by_provider_game'。
BRIN (Postgresのようなストレージの場合):'occular_at'。
結果:トップKゲーム/時間-ホットキャッシュのサブセコンド。

11.3 RG/AML制限/自己除外イベント

ビットマップ:'rg_state'、 'kyc_level'。JSON-path GIN:'$。reason'。
MV: 「30日間のアクティブな制限」+PIIなしのユーザーレベルの実体化。
結果:フルスキャンイベントなしでコンプライアンスのためのクイックサンプル。

11.4 Antifraud:ルートとデバイス

JSON→kolonki:'デバイスを具現化。os'、'デバイス。モデル'、'支払い。メソッド'。
Bloom: 'graph_device_id'。クラスター:'(ブランド、国、デバイス。os)'。
ベクトルインデックス:埋め込み「7d deposit behavior」→同様の異常のための高速k-NN。

12)セキュリティとプライバシー

インデックス付きフィールドとプランログのZero-PII。
ディスク上の暗号化:インデックス/統計はデータと同じ方法で暗号化されます。
集計のK匿名性:MV/投影は≥のNグループによってのみ公開されます。
Geo/tenant-isolation:パーティー/キーには'brand/country/license'が含まれます。
リーガルホールド:インデックス/マニベストも「凍結」に陥ります。

13)アンチパターン

インデックス「all in a row」→volume explosion and write-amplification。
小さなパーティー(時間/分)→板と「小さなファイル」の嵐。
ゼロデータスキップ→フィルタと一致しないキーを並べ替えます。
統計の欠如→悪い計画、フルスキャン。
パスインデックスなしで、ホット属性を実現しないJSON。
2-4週の圧縮およびrecluster→の低下を無視して下さい。

14)テンプレート(使用可能)

14.1クラスタリング/インデックス作成ポリシー(YAML)

yaml dataset: gold. payments partition_by: ["date"]
order_by: ["brand","country","occurred_at"]
indexes:
bloom: ["transaction_id","user_surrogate_id"]
bitmap: ["psp","status","rg_state"]
materialized_views:
- name: mv_payments_7d_brand_psp group_by: ["brand","psp","status"]
window: "7d"
slo:
p95_latency_ms: 1200 scanned_bytes_per_query_max_mb: 256 maintenance:
compact_small_files: true recluster_cron: "0 /6  "
privacy:
pii_in_index: false

14.2湖圧縮計画(氷山/デルタ)

yaml compaction:
target_file_size_mb: 512 small_file_threshold_mb: 64 zorder_by: ["brand","country","occurred_at"]
run_every: "PT6H"
max_concurrency: 4

14.3 JSONフィールドのインデックス

sql
-- GIN/inverted index on device attributes
CREATE INDEX idx_device_json ON gold. sessions
USING GIN ((device_json));
-- Materialization of critical pathways
ALTER TABLE gold. sessions ADD COLUMN device_os TEXT;
UPDATE gold. sessions SET device_os = device_json->>'os';
CREATE BITMAP INDEX idx_device_os ON gold. sessions(device_os);

14.4インデックス監視SLO

yaml monitoring:
skipped_bytes_share_min: 0. 70 index_usage_rate_min: 0. 85 stats_freshness_max_hours: 24 small_files_share_max: 0. 10

15)実装ロードマップ

0-30日(MVP)

1.トップNリクエストを収集し、プロファイルをスキャンします。
2.日付によるパーティショニング+フィルターと一致するソート。
3.データスキップ(min-max)を有効にし、idフィールドのbloomを有効にします。
4.ホットメトリックのための1つのMV(支払い7d)。
5.ダッシュボードSLI: p95、スキャンされたバイト、スキップされた共有、小さなファイル。

30-90日

1.JSONパス:反転インデックス+実体化。
2.レイク:2-3キーによる圧縮とZ順序/クラスタリング。
3.キー/プロジェクションオートアドバイザー;通常の分析。
4.バッチの改訂(日→週)ここで「小さなファイル」。

3〜6ヶ月

1.バージョニングとSLAを備えたMV/投影カタログ。
2.推奨/不正防止のためのベクトルインデックス。
3.統一されたSLOポリシーと予算$/リクエスト;劣化アラート。
4.インデックスのプライバシー監査、地理/テナントの分離。

16) RACI

データプラットフォーム(R):パーティー/インデックス/コンパクト、オートアドバイザー、監視。
アナリティクス/BI (R):ダッシュボードのMV/投影、クエリプロファイリング。
ドメインオーナー(C):ホットスライスとフィルタの基準。
セキュリティ/DPO (A/R):プライバシー、PIIポリシー、地理/テナントキー。
SRE/Observability (C): SLO/アラート、コンパクションのためのkapasiti。
財務(C):予算$/クエリとインデックスからの節約。

17)関連セクション

データスキーマと進化、データバリデーション、DataOpsプラクティス、異常および相関解析、分析とメトリクスAPI、データクラスタリング、ディメンションリダクション、MLOps:モデル搾取。

合計

分析ストレージインデックスは戦略であり「、すべてにインデックスを作成する」わけではありません。"パーティションとソートの修正、データのスキップと開花、思慮深いMV/投影と定期的な圧縮は、プライバシーのリスクなく、管理されたコストで迅速かつ予測可能なクエリを提供します。iGamingの場合、これは支払い、プロバイダー、RG/AMLの運用ソリューションを意味します。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。