Maʼlumot olish interfeyslari
1) Nima uchun puxta o’ylangan interfeys
Tezlik va oldindan aytish mumkin: biznes-metrika va hisobotlar SLAga «qo’lda tushirishlarsiz» joylashtiriladi.
Xavfsizlik va maxfiylik: PII/biometriya nazorat ostida, k-anonimlik, geo-chegaralar.
Moslashuvchanlik: turli mijozlar (BI, servislar, sheriklar, DS/ML) o’zlariga kerak bo’lgan narsani olishadi.
Qayta foydalanish: kontraktlar va versiyalar bilan «mahsulot sifatida ma’lumotlar».
2) Interfeyslar xaritasi (qachon nima)
SQL/ANSI + vendor dialektlari: interaktiv tahlil, BI, ad-hoc.
REST JSON: barqaror agregatlar va operatsion ma’lumotlar, sheriklar bilan integratsiya.
GraphQL: moslashuvchan «tanlangan» oʻqish va navigatsiya grafiklari (oʻlchov/faktlar).
gRPC (protobuf): onlayn-servingning past latentligi (Feature Store, skoring).
Arrow Flight/Parquet over HTTP/S3-presigned: DS/ML uchun tezkor ustunli «damplar».
OData: enterprise vositalari, «xizmat sifatida jadval» modeli.
Streams (Kafka/Pulsar) + CDC/Webhooks: real vaqt voqealari, reaktiv integratsiyalar.
Federation (Trino/Presto): koʻp manbalarga kirishning yagona nuqtasi.
Qoida: agregatlar va barqaror kesmalar → REST/MV, boy ixtiyoriy so’rovlar → SQL, past latentlik/onlayn fichlar → gRPC, moslashuvchan javob shakli → GraphQL, ommaviy ikkilik almashinuv → Arrow/Parquet.
3) Kontraktlar va versiyalar (semver)
`MAJOR. MINOR. Har bir API/sxema/hodisa uchun PATCH’.
MAJOR: mos kelmaydigan oʻzgarishlar (yangi yoʻl/topik/jadval).
MINOR: Mos keladigan maydon/dalil qoʻshish.
PATCH: tavsiflar/limitlarni tuzatish.
Kontraktlar: sxema, filtrlar, limitlar, maxfiylik, SLOni belgilaydi.
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) Tahlildan foydalanish (SQL va federatsiya)
Rolli/niqobli SQL-shlyuzi (row/column-level security).
BI ostidagi vyuxi/proyeksiyalar: barqaror nomlar va semantika; heavy-soʻrovlar oldindan agregatsiyaga oʻtadi.
Federation (Trino/Presto): yagona kirish nuqtasi, lekin siyosatchilar bilan: qanday kataloglar va qanday funksiyalar mavjud.
Lakehouse (Iceberg/Delta/Hudi): time-travel, snapshot-ekstraksiyalar SQL/REST orqali.
Квоты: scanned bytes/query, concurrency, wall-time.
5) GraphQL (moslashuvchan shakl)
Mijozga kerakli maydonni to’plash uchun beramiz, lekin tayyorlangan vyux/proyeksiyalar ustidan, chuqurlik/suyak limitlari bilan bajaramiz.
graphql type Query {
payments(
brand: String!, country: String, from: DateTime!, to: DateTime!,
first: Int = 200, after: String
): PaymentConnection
}
Siyosatlar: depth ≤ 5, total nodes ≤ 5k, ixtiyoriy regex/like satrlarini taqiqlaymiz; tez-tez so’rovlarni keshlaymiz.
6) gRPC/Feature Store (past latentlik)
Anti-frod/tavsiyalar/RG skoringi uchun onlayn fichlar.
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; }
Talablar: p95 ≤ 50-100 ms, onlayn, TTL fich, LRU kesh, idempotency va mTLS.
7) Oqimlar va CDC
Domen voqealari:’payments. deposit_accepted`, `game. round_finished`.
CDC (OLTP dan): near-real-time status/limitlar o’zgarishi.
Hamkorlar uchun Webhooks: agregatlarga obuna (masalan, «PSP nosozliklari> ostona»).
Retraj/tasdiqlash siyosati: tanqidiy uchun exactly-once, monitoring uchun at-least-once.
8) Ko’llar va yirik namunalar
Arrow Flight DS/ML tezkor kolonnali tushirish uchun.
Parquet/Feather uchun Presigned-URL, qisqa TTL va imzolangan so’rov bilan.
Chunked transfer va fayl oʻlchamini boshqarish; yuklab olish jurnali (WORM-audit).
9) Filtrlar, paginatsiya, saralash
Katta toʻplamlar uchun OFFSET oʻrniga keyset-paginatsiya (kursor).
Filterlar: whitelists (’=, IN, BETWEEN, prefix’).
Saralash: cheklangan maydonlarning roʻyxati, default tartibi.
Partial response:’fields = brand, country, amount’foydali yukni kamaytiradi.
http
GET /v2/game-rounds? brand=X&from=...&to=...&first=1000&after=eyJkYXRlIjoi...
10) Keshlash va qiymat
Result cache shablon so’rovlari uchun, yangi token (snapshot id) bo’yicha nogiron.
Edge-kesh/CDN (PIIsiz).
Budget parametrlari: scanned bytes limiti, so’rov vaqti, rps/min kvotalari.
Pullarning ustuvorligi:’bi _ hot’,’adhoc’,’partner _ api’.
11) Xavfsizlik va maxfiylik
AuthN: OAuth2/OIDC (client credentials for services, PKCE for people).
AuthZ: RBAC + ABAC (atributlar: brend, mamlakat, litsenziya, rol).
mTLS xizmatlar oʻrtasida, TLS 1. 2 + tashqariga.
PII-gigiyena: API qatlamidagi niqoblar/tokenizatsiya, ustunli niqoblar, agregatlarning k-anonimligi.
Geo/tenant-izolyatsiya: so’rovlarni litsenziya mintaqasiga yo’naltirish; brend/mintaqaga shifrlash kalitlari.
DSAR/Legal Hold: sub’ekt tokenini qidirish, to’plamlarni muzlatish uchun sirlar.
12) Kuzatish (SLI/SLO) va himoya
SLI: p50/p95/p99 lat, error-rate, rps, bytes scanned, cache hit, kvotalar/limitlar, niqoblangan ustunlar ulushi, avtorizatsiya bo’yicha rad etishlar ulushi.
SLO: p95 latentlik, ma’lumotlarning yangiligi,% muvaffaqiyatli so’rovlar, javoblarda min-group-size.
Alertlar: scanned bytes’ning o’sishi, hit-rate’ning tushishi, 429/5xx’ning ko’tarilishi, PIIga kirishga urinishlar, kursorlarning oqishi.
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) Formatlar va siqish
muvofiqlik uchun JSON; CSV - faqat kichik va murakkab bo’lmagan eksport uchun.
Parquet/Arrow - katta yuklar uchun andoza.
Compression: gzip/zstd (’Accept-Encoding’orqali muzokaralar).
Content-negotiation: `Accept: application/x-parquet`.
14) API sifatida metriklar (Analytics/OLAP-shlyuz)
Yuqori darajali metriklar: GGR/NET, CR, ushlab turish, RG-hodisalar -’brand, country, window, group _ by’parametrli resurslar sifatida.
Approx (HLL/TDigest) для distinct/percentiles.
’(metric, params, snapshot_id)’ kalitli kesh.
15) iGaming xususiyatlari - tayyor endpointlar
’GET/v2/payments/metrics’ - 7/30d oynali PSP/mamlakat/brend bo’yicha rad etishlar/praublar.
’GET/v2/game-rounds/metrics’ - top-o’yinlar/provayderlar, p95 davomiyligi, RTP-derazalar.
’GET/v2/rg/cases’ - faol cheklovlar/o’z-o’zini istisno qilish (k-anonim agregatlar).
’POST/v1/features: get’ (gRPC) - frod/rekommender skoringi uchun onlayn fichlar.
’POST/v1/webhooks/psp-alerts’ - «decline rate> chegara» xabarnomalari.
16) Kontraktlar namunalari
GraphQL soʻrovi: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 (voqea, Yevro):
json
{"event_id":"...","occurred_at":169..., "brand":"X","psp":"Papara","status":"declined","amount":"100. 00","currency":"TRY"}
Arrow Flight (ruchka):
/flight/v1/query? dataset=gold. payments&from=...&to=...&brand=X&format=arrow
17) Yangi interfeysni e’lon qilish jarayoni
1. ADR: muammo/qiymat/mijozlar/xavfsizlik/qiymat.
2. Kontrakt: sxema, filtrlar, limitlar, maxfiylik, SLO, versiyalar.
3. Yuklamali modellashtirish: top-N so’rovlar, p95/skan-baytlar, qiymat.
4. Validatsiya/kesh/kvota: andoza.
5. Hujjatlar va SDK: misollar, limitlar, xatolar, retralar, idempotentlik.
6. Canary: mijozlar%, regress testlar, alertlar.
7. GA: Data Products katalogidagi versiya, effektlar boʻyicha hisobot.
18) Anti-patternlar
«Xom» SQLni hamma uchun ochish - PII oqishi, oldindan aytib bo’lmaydigan qiymat.
OFFSET-paginatsiya va’SELECT’- yashirin va hisoblash og’rig’i.
GraphQL chuqurlik/qiymat chegarasisiz.
’fields =...’ dan ortiqcha ustunlarni qaytaradigan REST.
Agregatlarda k-anonimlik va min-group-size yo’qligi.
Nol kvotalar/limitlar va oʻchirilgan kesh.
Versiyalash/kontraktlar yo’q - har bir o’zgarishda mijozlarni «sindiramiz».
Barcha mamlakatlar/brendlar uchun bir xil interfeys - mintaqaviy qoidalar ignori.
19) Joriy etish yo’l xaritasi
0-30 kun (MVP)
1. Data Products katalogi va ularning OpenAPI/GraphQL shartnomalari.
2. RLS/CLS bilan SQL-shlyuz, agregatlarning k-anonimligi, bazaviy kvotalar.
3. Bitta REST-metrik endpoint (’/payments/metrics’) + kesh + pullar’bi _ hot/adhoc’.
4. gRPC Feature Store: 10-20 ta asosiy onlayn fichni o’qish (p95 ≤ 80 ms).
30-90 kun
1. PSP alertlari/oʻyin tadbirlari uchun strim interfeyslari (Kafka/Webhook).
2. Arrow/Parquet presigned-URL bilan tushirish; snapshotlar katalogi.
3. Federation-shlyuz (Trino/Presto) aniq siyosatchilar bilan.
4. Kuzatilganlik: SLI/SLO dashbord, qiymati/yashirin/PII uchun alertlar.
3-6 oy
1. Retray/idempotent/kvotalar bilan SDK (TypeScript/Python/Go).
2. Mahsulotlar va hamkorlar uchun ingichka GraphQL kesmalari.
3. gRPC/FS ni kengaytirish, onlayn tarzda oflayn rejimda kelishish; shadow → canary relizlari.
4. Maxfiylik auditi/DSAR; kirish bo’yicha komplayens hisobotlari.
20) RACI
Data Platform (R): shlyuzlar, kesh, kvotalar, federatsiya, kuzatuv.
Data Governance (A/R): kontraktlar, versiyalar, maxfiylik/k-anonimlik.
Domain Owners (R): maydon semantikasi, biznes invariantlari, Data Products.
Security/DPO (A/R): AuthN/Z, geo-izolyatsiya, DSAR/Legal Hold.
SRE/Observability (C): SLO/SLI, alertlar, capacity.
Analytics/BI/DS (C): shakl/agregatlarga talablar, SDK.
21) Bog’liq bo’limlar
Tahliliy omborlarni indeksatsiya qilish, Tahliliy so’rovlarni optimallashtirish, Ma’lumotlar sxemalari va ularning evolyutsiyasi, Ma’lumotlarni validatsiya qilish, DataOps-amaliyotlar, Analitik va metrik API, Feature Store, Ma’lumotlar xavfsizligi va shifrlash, Kirish nazorati, Ma’lumotlarni saqlash siyosati.
Jami
Maʼlumotlardan foydalanishning toʻgʻri ishlab chiqilgan interfeyslari omborxonalar va oqimlarni ishonchli «mahsulotga» aylantiradi: bashorat qilinadigan SLA, nazorat qilinadigan qiymat, maxfiylikka rioya qilish va mahsulot jamoalari, tahlillar, komplayens va sheriklar uchun yagona til. iGaming’da bu PSPning nosozliklarini tezroq ushlash, o’yinchilarning xatti-harakatlarini tushunish va regulyatorlarning talablarini qo’lda tushirish va tungi migratsiyalarsiz bajarish demakdir.