データアクセスインターフェイス
1)思慮深いインターフェイスがなぜ
スピードと予測可能性:ビジネスメトリックとレポートは「手動アップロード」なしでSLAに適合します。
セキュリティとプライバシー:制御下のPII/バイオメトリクス、 k-anonymity、 geo-boundaries。
柔軟性:さまざまな顧客(BI、サービス、パートナー、DS/ML)が必要なものを正確に取得します。
契約とバージョンで「データを製品として」再利用します。
2)インターフェイスマップ(when)
SQL/ANSI+ベンダー方言:インタラクティブ分析、BI、アドホック。
REST JSON:安定した集計と運用データ、パートナーとの統合。
GraphQL:柔軟な「選択的」読み取りとナビゲーショングラフ(寸法/事実)。
gRPC (protobuf):オンラインサーフィンの低遅延(フィーチャーストア、スコア)。
HTTP/S3-presigned上の矢印フライト/寄木細工:DS/ML用の高速列ダンプ。
OData:エンタープライズツール、テーブルサービスモデル。
ストリーム(Kafka/Pulsar)+CDC/Webhooks:リアルタイムイベント、リアクティブインテグレーション。
フェデレーション(Trino/Presto):単一のエントリポイントを複数のソースに指定します。
ルール:集計と安定したスライス→REST/MV、豊富な任意のクエリ→SQL、低遅延/オンライン機能→gRPC、柔軟な応答形式→GraphQL、マスバイナリ交換→矢印/Parquet。
3)契約とバージョン(semver)
'MAJOR。マイナー。各API/スキーマ/イベントのPATCH'。
MAJOR:互換性のない変更(新しいパス/トピック/テーブル)。
MINOR:互換性のあるフィールド/引数の追加。
PATCH:説明/制限を編集します。
契約は固定されています:スキーム、フィルター、制限、プライバシー、SLO。
yaml openapi: "3. 0. 3"
info: {title: "Analytics API", version: "2. 4. 0"}
paths:
/v2/payments/metrics:
get:
parameters:
- {name: brand, in: query, schema: {type: string}, required: true}
- {name: country, in: query, schema: {type: string}}
- {name: from, in: query, schema: {type: string, format: date-time}}
- {name: to, in: query, schema: {type: string, format: date-time}}
- {name: group_by, in: query, schema: {type: string, enum: [psp,status,day]}}
- {name: limit, in: query, schema: {type: integer, default: 500}}
responses:
"200": {description: "OK"}
x-slo: {p95_latency_ms: 1200, freshness_max: "PT5M"}
x-privacy: {pii: false, min_group_size: 20}
4)分析(SQLおよびフェデレーション)へのアクセス)
ロール/マスク(行/列レベルのセキュリティ)を持つSQLゲートウェイ。
Blizzards/BI投影:安定した名前と意味;重い要求は事前集計に行きます。
フェデレーション(Trino/Presto):単一のエントリポイント、ポリシー:どのディレクトリとどの機能が利用可能か。
Lakehouse (Iceberg/Delta/Hudi): SQL/REST経由のタイムトラベル、スナップショット検索。
スキャンされたバイト/クエリ、並行性、ウォールタイム。
5) GraphQL(フレキシブルフォーム)
私たちはクライアントに希望のフィールドを収集するように与えますが、準備された吹雪/投影の上で実行します。
graphql type Query {
payments(
brand: String!, country: String, from: DateTime!, to: DateTime!,
first: Int = 200, after: String
): PaymentConnection
}
ポリシー:depth ≤ 5、 total nodes ≤ 5k、任意の正規表現/likeを行で禁止します。頻繁なリクエストをキャッシュします。
6) gRPC/Feature Store(低遅延)
詐欺/勧告/RGを記録するためのオンライン機能。
proto service FeatureStore {
rpc GetFeatures (FeatureRequest) returns (FeatureResponse);
}
message FeatureRequest { string user_tok = 1; repeated string features = 2; }
message FeatureResponse { map<string, FeatureValue> values = 1; int64 ts_micros = 2; }
要件:p95 ≤ 50-100ミリ秒、正確なofflayn↔onlayn整合性、TTL機能、LRUキャッシュ、idempotencyおよびmTLS。
7)流れおよびCDC
ドメインイベント:'支払い。deposit_accepted'、ゲーム。 。 。
CDC (OLTPから):ほぼリアルタイムでのステータス/制限変更。
パートナーのWebhook:集計のサブスクリプション(例:「PSP障害>しきい値」)。
リトレイ/確認ポリシー:重要な場合は正確に1回、監視の場合は最低1回。
8)湖および大きいサンプル
DS/MLへの高速カラム放電のための矢印フライト。
Parquet/Featherへの署名付きURL、短いTTLと署名付きリクエスト。
Chunked転送とファイルサイズ制御。ログダウンロード(WORM監査)
9)フィルター、分類するページ分け
大きなセットのためのOFFSETの代わりにキーセットページネーション(カーソル)。
フィルタ:フィールド、タイプ、演算子によるホワイトリスト('=、IN、 BETWEEN、 prefix')。
並べ替え:フィールドの制限されたリスト、既定の順序。
部分的な応答:'fields=brand、 country、 amount'はペイロードを減らします。
http
GET /v2/game-rounds? brand=X&from=...&to=...&first=1000&after=eyJkYXRlIjoi...
10)キャッシュとコスト
スナップショットIDで無効化されたテンプレートリクエストの結果キャッシュ。
パブリックアグリゲート/セミパブリックアグリゲート(PIIなし)のエッジキャッシュ/CDN。
予算パラメータ:スキャンされたバイト制限、リクエストタイムアウト、rps/minクォータ。
プールの優先順位付け:'bi_hot'、 'adhoc'、 'partner_api'。
11)セキュリティとプライバシー
AuthN: OAuth2/OIDC(サービスのためのクライアント資格情報、人々のためのPKCE)。
AuthZ: RBAC+ABAC(属性:ブランド、国、ライセンス、役割)。
サービス間のmTLS、 TLS 1。2+アウト。
PII衛生:APIレイヤー上のマスク/トークン化、カラムマスク、集計のk-anonymity。
Geo/tenant-isolation:ライセンス領域へのルーティング要求;ブランド/地域ごとの暗号化キー。
DSAR/Legal Hold:サブジェクトトークンで検索します。
12)観察可能性(SLI/SLO)および保護
SLI: p50/p95/p99 lat、 error-rate、 rps、バイトのスキャン、キャッシュのヒット、クォータ/リミット、マスクされた列の共有、承認失敗の共有。
SLO: p95レイテンシ、データの鮮度、%成功リクエスト、応答の最小グループサイズ。
アラート:スキャンされたバイト数の上昇、ヒット率の低下、429/5xxスパイク、PIIアクセス試行、カーソルのリーク。
yaml slo:
p95_latency_ms: 1200 success_rate: 0. 995 freshness_max: "PT5M"
privacy:
pii_allowed: false min_group_size: 20 quotas:
rps: 50 max_scanned_mb: 256
13)フォーマットと圧縮
互換性のためのJSON;CSV-小型でシンプルな輸出用のみ。
Parquet/Arrow-大きなアップロードのデフォルト。
圧縮:gzip/zstd ('Accept-Encoding'によるネゴシエーション)。
コンテンツネゴシエーション:'Accept: application/x-parquet'。
14) APIとしてのメトリック(Analytics/OLAPゲートウェイ)
トップレベルの指標:GGR/NET、 CR、 hold、 RGインシデント-パラメータ'ブランド、国、ウィンドウ、group_by'のリソース。
おおよそ(HLL/TDigest)-異なる/パーセンタイル。
キーキャッシュ:'(メトリック、パラメータ、snapshot_id)'。
15) iGaming特異性-既製のエンドポイント
'GET/v2/payments/metrics'-7/30dウィンドウでPSP/country/brandによる失敗/更新。
'GET/v2/game-rounds/metrics'-トップゲーム/プロバイダ、p95期間、RTPウィンドウ。
'GET/v2/rg/cases'-アクティブな制限/自己除外(k-anonymous aggregates)。
'POST/v1/features: get' (gRPC)-詐欺/推薦を記録するためのオンライン機能。
'POST/v1/webhooks/psp-alerts'-通知「declow rate> threshold」。
16)契約例
GraphQLクエリの薄いスライス:graphql query {
payments(brand:"X", country:"TR", from:"2025-10-01", to:"2025-10-31", first:500) {
edges { node { day totalAmount declines psp } cursor }
pageInfo { hasNextPage endCursor }
}
}
カフカ(event、 Avro):
json
{"event_id":"...","occurred_at":169..., "brand":"X","psp":"Papara","status":"declined","amount":"100. 00","currency":"TRY"}
矢印フライト(ペン):
/flight/v1/query? dataset=gold. payments&from=...&to=...&brand=X&format=arrow
17)新しいインターフェイスパブリッシングプロセス
1.ADR:問題/価値/顧客/セキュリティ/コスト。
2.契約:スキーム、フィルター、制限、プライバシー、SLO、バージョン。
3.ロードモデリング:トップNリクエスト、 p95/スキャンバイト、コスト。
4.Validation/cache/quotas:デフォルトで有効にします。
5.ドキュメントとSDK:例、制限、エラー、リトレイ、idempotency。
6.Canary:クライアントの%、回帰テスト、アラート。
7.GA:データ製品カタログ版、効果レポート。
18)アンチパターン
誰もが「raw」 SQLを開く-PIIリーク、予測不可能なコスト。
OFFSETページネーションと'SELECT'-レイテンシとカウントによる痛み。
GraphQL(深さ/コスト制約なし)
'fields=……'なしの列が多すぎるREST。
k-anonymityとmin-group-sizeが集計されていない。
ゼロクォータ/リミットと無効キャッシュ。
バージョニング/契約なし-変更ごとにクライアントを「壊す」ことはありません。
すべての国/ブランドのための同じインターフェイスは地域の規則のための無視です。
19)実装ロードマップ
0-30日(MVP)
1.データ製品カタログ(メトリック/スライス)とOpenAPI/GraphQL契約。
2.RLS/CLSを使用したSQLゲートウェイ、集計のk-anonymity、基本的なクォータ。
3.1つのRESTメトリックエンドポイント('/payments/metrics')+キャッシュ+プール'bi_hot/adhoc'。
4.gRPC機能ストア:読み取り10-20オンライン機能(p95 ≤ 80ミリ秒)。
30-90日
1.PSPアラート/ゲームイベント用のストリームインターフェイス(Kafka/Webhook)。
2.提示されたURLからの矢印/寄木細工のアップロード;スナップショットカタログ。
3.明示的なポリシーを持つフェデレーションゲートウェイ(Trino/Presto)。
4.可視性:ダッシュボードSLI/SLO、 コスト/レイテンシ/PIIに関するアラート。
3〜6ヶ月
1.SDK (TypeScript/Python/Go)とリトレイ/idempotency/クォータ。
2.製品およびパートナー向けのThin GraphQLスライス。
3.gRPC/FS拡張、offlayn↔onlayn交渉;shadow→canaryリリース。
4.プライバシー監査/DSAR;コンプライアンスレポートにアクセスします。
20) RACI
データプラットフォーム(R):ゲートウェイ、キャッシュ、クォータ、フェデレーション、オブザビリティ。
データガバナンス(A/R):契約、バージョン、プライバシー/k-anonymity。
ドメインオーナー(R):フィールドセマンティクス、ビジネスインバリアント、データ製品。
セキュリティ/DPO (A/R): AuthN/Z、ジオアイソレーション、DSAR/リーガルホールド。
SRE/Observability (C): SLO/SLI、アラート、容量。
アナリティクス/BI/DS (C):フォーム/集計の要件、SDK。
21)関連セクション
分析ストレージインデックス、分析クエリ最適化、データスキーマと進化、データ検証、DataOpsプラクティス、分析とメトリクスAPI、フィーチャーストア、データセキュリティと暗号化、アクセス制御、データ保持ポリシー。
合計
適切に設計されたデータアクセスインターフェイスにより、ストレージとフローが信頼性の高い「製品」になります。予測可能なSLA、制御されたコスト、プライバシーの遵守、製品チーム、分析、コンプライアンス、パートナー向けの単一の言語です。iGamingでは、これはPSPのクラッシュをより速くキャッチし、プレイヤーの行動を理解し、手動アップロードや夜間の移行なしで規制要件を満たすことを意味します。