GH GambleHub

Interfejsy dostępu do danych

1) Dlaczego przemyślany interfejs

Szybkość i przewidywalność: wskaźniki biznesowe i raporty pasują do SLA, bez „manualnych przesyłek”.
Bezpieczeństwo i prywatność: PII/biometria pod kontrolą, k-anonimowość, geo-granice.
Elastyczność: różni klienci (BI, usługi, partnerzy, DS/ML) otrzymują dokładnie to, czego potrzebują.
Ponowne wykorzystanie „danych jako produktu” z umowami i wersjami.

2) Mapa interfejsu (kiedy co)

SQL/ANSI + dialekty sprzedawcy: interaktywna analityka, BI, ad-hoc.
REST JSON: stabilne agregaty i dane operacyjne, integracja z partnerami.
GraphQL: elastyczny „selektywny” wykres odczytu i nawigacji (wymiary/fakty).
gRPC (protobuf): niskie opóźnienie surfingu online (sklep funkcyjny, punktacja).
Strzałka Lot/Parkiet nad HTTP/S3-presigned: szybkie rzuty kolumn dla DS/ML.
OData: narzędzia dla przedsiębiorstw, model table-as-a-service.
Strumienie (Kafka/Pulsar) + CDC/Webhooks: wydarzenia w czasie rzeczywistym, integracje reaktywne.
Federacja (Trino/Presto): Pojedynczy punkt wejścia do wielu źródeł.

Zasada: kruszywa i stabilne plasterki → REST/MV, bogate arbitralne zapytania → SQL, niskie opóźnienia/funkcje online → gRPC, elastyczny formularz odpowiedzi → GraphQL, masowa wymiana binarna → Arrow/Parkiet.

3) Umowy i wersje (semver)

"MAJOR. DROBNE. PATCH 'dla każdego API/schematu/zdarzenia.
MAJOR: niezgodne ze wspólnym rynkiem zmiany (nowa ścieżka/temat/tabela).
MINOR: Kompatybilne dodatki pola/argumentu.
PATCH: edytuj opisy/limity.
Umowy są stałe: schemat, filtry, limity, prywatność, SLO.

OpenAPI (fragment, mierniki REST):
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) Dostęp do analityki (SQL i federacja)

Brama SQL z rolami/maskami (zabezpieczenie poziomu wiersza/kolumny).
Blizzards/BI projekcje: stabilne nazwy i semantyka; Ciężkie prośby idą do preagregacji.
Federacja (Trino/Presto): pojedynczy punkt wejścia, ale z zasadami: jakie katalogi i jakie funkcje są dostępne.
Lakehouse (Iceberg/Delta/Hudi): podróże w czasie, snapshot-retrievals via SQL/REST.
Квота: skanowane bajty/zapytanie, równoczesność, czas ściany.

5) GraphQL (elastyczna forma)

Dajemy klientowi, aby zebrać pożądane pole, ale wykonać nad przygotowanymi blizzards/projekcje, z głębokości/kości limitów.

graphql type Query {
payments(
brand: String!, country: String, from: DateTime!, to: DateTime!,
first: Int = 200, after: String
): PaymentConnection
}

Zasady: głębokość ≤ 5, całkowite węzły ≤ 5k, zabrania arbitralnego regeksu/podobnie według linii; buforujemy częste prośby.

6) gRPC/Feature Store (niskie opóźnienie)

Funkcje online do oceny przeciwdziałania oszustwom/zalecenia/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; }

Wymagania: p95 ≤ 50-100 ms, dokładna konsystencja offlayn, funkcja TTL, pamięć podręczna LRU, idempotencja i mTLS.

7) Przepływy i CDC

Zdarzenia domeny: 'płatności. deposit_accepted', gra. round_finished'.
CDC (z OLTP): stan/ograniczenie zmian w czasie zbliżonym do rzeczywistego.
Haki dla partnerów: subskrypcja agregatów (np. „Awarie PSP> próg”).
Polityka w zakresie przekwalifikowania/uznawania: dokładnie raz na krytyczne, przynajmniej raz na potrzeby monitorowania.

8) Jeziora i duże próbki

Strzałka Lot dla szybkich zrzutów kolumn do DS/ML.
Podpisany adres URL do parkietu/pióra, z krótkim TTL i podpisanym żądaniem.
Pęknięty transfer i kontrola rozmiaru pliku; Pobierz dziennik (audyt WORM).

9) Filtry, paginacja, sortowanie

Keyset pagination (kursor) zamiast OFFSET dla dużych zestawów.
Filtry: białe listy według pól, typów i operatorów ('=, IN, INTER, prefix').
Sortowanie: ograniczona lista pól, domyślne zamówienie.
Częściowa odpowiedź: 'fields = brand, country, amount' zmniejsza ładunek.

http
GET /v2/game-rounds? brand=X&from=...&to=...&first=1000&after=eyJkYXRlIjoi...

10) Buforowanie i koszt

Pamięć podręczna wyników dla żądań szablonu, wyłączona przez identyfikator migawki.
Pamięć podręczna/CDN krawędzi dla agregatów publicznych/półpublicznych (bez PII).
Parametry budżetu: skanowany limit bajtów, timeout żądania, kontyngenty rps/min.
Priorytety puli: 'bi _ hot', 'adhoc', 'partner _ api'.

11) Bezpieczeństwo i prywatność

AuthN: OAuth2/OIDC (poświadczenia klienta dla usług, PKCE dla osób).
AuthZ: RBAC + ABAC (atrybuty: marka, kraj, licencja, rola).
mTLS między usługami, TLS 1. 2 + out.
Higiena PII: maski/tokenizacja na warstwie API, maski kolumnowe, k-anonimowość kruszyw.
Geo/lokator-izolacja: routing wniosków do regionu licencji; klucze szyfrowania dla marki/regionu.
DSAR/Legal Hold: search by subject token, secrets for freezing sets.

12) Obserwowalność (SLI/SLO) i ochrona

SLI: p50/p95/p99 lat, wskaźnik błędów, rps, skanowane bajty, trafienie pamięci podręcznej, kwoty/limity, udział kolumn zamaskowanych, udział awarii autoryzacji.
SLO: opóźnienie p95, świeżość danych,% udanych żądań, min-grupa-rozmiar odpowiedzi.
Alerty: skanowane bajty wzrastają, spadają, 429/5xx kolce, próby dostępu PII, wycieki kursora.

Polityka przykładowa:
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) Formaty i kompresja

JSON dla kompatybilności; CSV - tylko dla małych i prostych eksportu.
Parkiet/strzałka - domyślnie dla dużych przesyłek.
Kompresja: gzip/zstd (negocjacje za pomocą 'Accept-Encoding').
Negocjacja treści: „Akceptuj: aplikacja/x-parkiet”.

14) Metryki jako API (Analytics/OLAP gateway)

Metryki najwyższego poziomu: GGR/NET, CR, hold, RG incydenty - jako zasoby z parametrami "marka, kraj, okno, grupa _ by '.
Approx (HLL/TDigest) мла distinct/percentiles.
Pamięć podręczna klucza: '(metryczny, params, snapshot_id)'.

15) Specyfika iGaming - gotowe punkty końcowe

"GET/v2/payments/metrics' - awarie/aktualizacje przez PSP/country/brand z oknami 7/30d.
"GET/v2/game-rounds/metrics' - najlepsze gry/dostawcy, czas trwania p95, okna RTP.
„GET/v2/rg/cases” - aktywne ograniczenia/samodzielne wyłączenia (agregaty k-anonimowe).
„POST/v1/features: get” (gRPC) - funkcje online do oceny oszustw/rekomendacji.
„POST/v1/webhooks/psp-alerts” - powiadomienia „wskaźnik spadku> próg”.

16) Przykłady umów

Zapytanie GraphQL cienki plasterek:
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 }
}
}
Kafka (wydarzenie, Avro):
json
{"event_id":"...","occurred_at":169..., "brand":"X","psp":"Papara","status":"declined","amount":"100. 00","currency":"TRY"}
Lot strzałki (długopis):

/flight/v1/query? dataset=gold. payments&from=...&to=...&brand=X&format=arrow

17) Nowy proces publikowania interfejsów

1. ADR: Wydanie/Wartość/Klienci/Bezpieczeństwo/Koszt.
2. Kontrakt: schemat, filtry, limity, prywatność, SLO, wersje.
3. Modelowanie obciążenia: żądania top-N, p95/skanowanie bajtów, koszt.
4. Walidacja/pamięć podręczna/kwoty: domyślnie włączyć.
5. Dokumentacja i SDK: przykłady, limity, błędy, przekładki, idempotencja.
6. Canary:% klientów, testy regresji, alerty.
7. GA: Data Products wersja katalogowa, raport skutków.

18) Anty-wzory

Otwórz „surowy” SQL dla wszystkich - wycieki PII, nieprzewidywalny koszt.
OFFSET pagination i 'SELECT' - ból przez opóźnienie i liczenie.
GraphQL bez ograniczeń głębokości/kosztów.
REST, który zwraca zbyt wiele kolumn bez 'fields =...'.
Brak k-anonimowości i minimalnej wielkości grupy w kruszywach.
Zero kwot/limitów i pamięci podręcznej wyłączonej.
Brak wersji/kontraktów - „zrywamy” klientów z każdą zmianą.
Ten sam interfejs dla wszystkich krajów/marek jest lekceważeniem przepisów regionalnych.

19) Plan działania w zakresie wdrażania

0-30 dni (MVP)

1. Katalog produktów danych (metryki/plasterki) i ich kontrakty OpenAPI/GraphQL.
2. Brama SQL z RLS/CLS, k-anonimowość agregatów, kwoty podstawowe.
3. Jeden metryczny punkt końcowy REST ('/payments/metrics') + cache + pools 'bi _ hot/adhoc'.
4. gRPC Feature Store: czytanie 10-20 kluczowych funkcji online (p95 ≤ 80 ms).

30-90 dni

1. Interfejsy strumieniowe (Kafka/Webhook) dla wpisów PSP/zdarzeń gry.
2. Przesyłanie strzałek/parkietów z prezentowanego adresu URL; katalog migawek.
3. Federacja Gateway (Trino/Presto) z wyraźnymi zasadami.
4. Obserwowalność: deska rozdzielcza SLI/SLO, wpisy dotyczące kosztów/opóźnień/PII.

3-6 miesięcy

1. SDK (ΔScript/Python/Go) z przekładkami/idempotencją/kwotami.
2. Cienkie plasterki GraphQL dla produktów i partnerów.
3. Rozszerzenie gRPC/FS, negocjacje offlayn i onlayn; shadow → kanaryjskie wydania.
4. Audyt prywatności/DSAR; raporty dotyczące zgodności z przepisami.

20) RACI

Platforma danych (R): bramki, pamięć podręczna, kwoty, federacja, obserwacja.
Zarządzanie danymi (A/R): umowy, wersje, prywatność/k-anonimowość.
Właściciele domen (R): semantyka terenowa, niezmienne przedsiębiorstwa, produkty danych.
Bezpieczeństwo/DPO (A/R): AuthN/Z, Geo-izolacja, DSAR/Legal Hold.
SRE/Observability (C): SLO/SLI, alerty, pojemność.
Analityka/BI/DS (C): wymagania dotyczące form/kruszyw, SDK.

21) Sekcje powiązane

Analytical Storage Indexing, Analytical Query Optimization, Data Schemas and Evolution, Data Validation, Praktyki OPS, Analytics and Metrics API, Funkcja Store, Data Security and Encryption, Access Control, Data Retention Policies

Razem

Odpowiednio zaprojektowane interfejsy dostępu do danych zmieniają pamięć masową i wpływają na niezawodny „produkt”: przewidywalne SLA, kontrolowane koszty, zgodność z prywatnością oraz jeden język dla zespołów produktów, analityki, zgodności i partnerów. W iGaming oznacza to szybsze złapanie awarii PSP, zrozumienie zachowania gracza i spełnienie wymogów regulacyjnych - bez ręcznego przesyłania i nocnych migracji.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.