Διεπαφές πρόσβασης σε δεδομένα
1) Γιατί μια στοχαστική διεπαφή
Ταχύτητα και προβλεψιμότητα: οι μετρήσεις και οι αναφορές των επιχειρήσεων εντάσσονται στις SLA, χωρίς «χειροκίνητες μεταφορτώσεις».
Ασφάλεια και προστασία της ιδιωτικής ζωής: PII/βιομετρικά στοιχεία υπό έλεγχο, k-ανωνυμία, γεωγραφικά όρια.
Ευελιξία: διαφορετικοί πελάτες (BI, υπηρεσίες, εταίροι, DS/ML) λαμβάνουν ακριβώς αυτό που χρειάζονται.
Επαναχρησιμοποίηση «δεδομένων ως προϊόντος» με συμβάσεις και εκδόσεις.
2) Χάρτης διεπαφής (πότε)
Διαλέκτους SQL/ANSI + πωλητών: διαδραστική ανάλυση, BI, ad-hoc.
REST JSON: σταθερά συγκεντρωτικά μεγέθη και επιχειρησιακά δεδομένα, ενσωμάτωση με εταίρους.
Διάγραμμα GraphQL: ευέλικτο «επιλεκτικό» διάγραμμα ανάγνωσης και πλοήγησης (διαστάσεις/γεγονότα).
gRPC (protobuf): χαμηλή καθυστέρηση του online surfing (Feature Store, scoring).
Πτήση βέλους/Parquet πάνω από HTTP/S3-presigned: χωματερές ταχείας στήλης για DS/ML.
OData: επιχειρηματικά εργαλεία, επιτραπέζιο μοντέλο.
Ροές (Kafka/Pulsar) + CDC/Webhooks: εκδηλώσεις σε πραγματικό χρόνο, αντιδραστικές ενοποιήσεις.
Ομοσπονδία (Trino/Presto): Ενιαίο σημείο εισόδου σε πολλαπλές πηγές.
Κανόνας: συγκεντρωτικά στοιχεία και σταθερές φέτες → REST/MV, πλούσια αυθαίρετα ερωτήματα → SQL, χαμηλή καθυστέρηση/online χαρακτηριστικά → gRPC, ευέλικτη μορφή απόκρισης → GraphQL, μαζική δυαδική ανταλλαγή → Arrow/Parquet.
3) Συμβάσεις και εκδόσεις (semper)
'MAJOR. MINOR. PATCH 'για κάθε API/σχήμα/συμβάν.
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): time-travel, snapshot-retrievals via SQL/REST.
: σαρωμένες ψηφιολέξεις/ερώτηση, νόμισμα, χρόνος τοίχου.
5) GraphQL (ευέλικτη μορφή)
Δίνουμε στον πελάτη να συλλέξει το επιθυμητό πεδίο, αλλά εκτελούμε πάνω από τις προετοιμασμένες χιονοθύελλες/προβολές, με όρια βάθους/οστών.
graphql type Query {
payments(
brand: String!, country: String, from: DateTime!, to: DateTime!,
first: Int = 200, after: String
): PaymentConnection
}
Πολιτικές: βάθος ≤ 5, συνολικοί κόμβοι ≤ 5k, απαγόρευση αυθαίρετων regex/ομοειδών ανά γραμμή. εμείς κρύπτουμε συχνά αιτήματα.
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 ms, ακριβής offlayn↔onlayn συνέπεια, χαρακτηριστικό TTL, μνήμη LRU, ταυτότητα και mTLS.
7) Ροές και CDC
Εκδηλώσεις τομέα: "πληρωμές. , 'παιχνίδι. .
CDC (από OLTP): μεταβολές κατάστασης/περιορισμού σε σχεδόν πραγματικό χρόνο.
Webhooks για τους εταίρους: συνδρομή σε συγκεντρωτικά μεγέθη (π.χ. «αστοχίες PSP> κατώτατο όριο»).
Πολιτικές επαναπροσδιορισμού/αναγνώρισης: ακριβώς μία φορά για κρίσιμη, τουλάχιστον μία φορά για παρακολούθηση.
8) Λίμνες και μεγάλα δείγματα
Πτήση βέλους για εκκενώσεις ταχείας στήλης στο DS/ML.
Υπογεγραμμένο URL στο Parquet/Feather, με σύντομο TTL και υπογεγραμμένο αίτημα.
Chunked transfer and file size control, Καταγραφή λήψης (έλεγχος WORM).
9) Φίλτρα, σελιδοποίηση, διαλογή
Πληκτρολόγηση (δρομέας) αντί του OFFSET για μεγάλα σύνολα.
Φίλτρα: whitelists ανά πεδία, τύπους και χειριστές ('=, IN, BETWEN, πρόθεμα').
Ταξινόμηση: περιορισμένος κατάλογος πεδίων, προκαθορισμένη εντολή.
Μερική απάντηση: «πεδία = εμπορικό σήμα, χώρα, ποσότητα» μειώνει το ωφέλιμο φορτίο.
http
GET /v2/game-rounds? brand=X&from=...&to=...&first=1000&after=eyJkYXRlIjoi...
10) Αποθήκευση και κόστος
Αποθήκευση αποτελεσμάτων για αιτήματα προτύπων, απενεργοποιημένα από το snapshot id.
Edge cache/CDN για δημόσια/ημι-δημόσια συγκεντρωτικά στοιχεία (χωρίς PII).
Παράμετροι του προϋπολογισμού: περιορισμός σαρωμένων ψηφιολέξεων, χρονοδιάγραμμα αίτησης, ποσοστώσεις rps/min.
Προτεραιότητα στις πισίνες: 'bi _ hot', 'adhoc', 'partner _ api'.
11) Ασφάλεια και ιδιωτικότητα
AuthN: OAuth2/OIDC (διαπιστευτήρια πελατών για υπηρεσίες, PKCE για άτομα).
AuthZ: RBAC + ABAC (χαρακτηριστικά: εμπορικό σήμα, χώρα, άδεια, ρόλος).
mTLS μεταξύ υπηρεσιών, TLS 1. 2 + έξω.
PII υγιεινή: μάσκες/μαρκαρισμός σε στρώμα API, μάσκες στήλης, k-ανωνυμία των μεγεθών.
Γεωγραφική απομόνωση/απομόνωση ενοικιαστών: αιτήσεις δρομολόγησης προς την περιοχή αδειοδότησης. κλειδιά κρυπτογράφησης ανά εμπορικό σήμα/περιοχή.
DSAR/Legal Hold: αναζήτηση ανά υποκείμενο, μυστικά για σύνολα κατάψυξης.
12) Παρατηρησιμότητα (SLI/SLO) και προστασία
SLI: p50/p95/p99 lat, ποσοστό σφάλματος, rps, bytes scanned, cache hit, ποσοστώσεις/όρια, μερίδιο των μασκοφόρων στηλών, μερίδιο των αστοχιών αδειοδότησης.
SLO: p95 καθυστέρηση, φρεσκάδα δεδομένων,% επιτυχημένες αιτήσεις, min-group-size για απαντήσεις.
Ειδοποιήσεις: σαρωμένες ψηφιολέξεις, πτώση του ρυθμού επιτυχίας, 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 - μόνο για μικρές και απλές εξαγωγές.
Παρκέτα/Βέλος - προεπιλογή για μεγάλες αποστολές.
Συμπίεση: gzip/zstd (διαπραγμάτευση μέσω 'Accept-Encoding').
Διαπραγμάτευση περιεχομένου: «Αποδοχή: εφαρμογή/x-parquet».
14) Μετρήσεις ως API (πύλη Analytics/OLAP)
Μετρήσεις ανωτάτου επιπέδου: GGR/NET, CR, hold, RG περιστατικά - ως πόροι με το σήμα των παραμέτρων, χώρα, παράθυρο, ομάδα _ by '.
Περίπου (HLL/TDiest) для διακριτά/εκατοστημόρια.
Μνήμη κλειδιού: '(μετρικό, params, snapshot_id)'.
15) Εξειδίκευση iGaming - έτοιμα τελικά σημεία
'GET/v2/πληρωμές/μετρήσεις' - αποτυχίες/επικαιροποιήσεις από PSP/χώρα/μάρκα με 7/30d παράθυρα.
'GET/v2/γύροι παιχνιδιών/μετρήσεις' - κορυφαία παιχνίδια/πάροχοι, διάρκεια p95, παράθυρα RTP.
«GET/v2/rg/cases» - ενεργοί περιορισμοί/αυτοαποκλεισμοί (k-ανώνυμα μεγέθη).
'POST/v1/χαρακτηριστικά: get' (gRPC) - επιγραμμικά χαρακτηριστικά για τη βαθμολόγηση της απάτης/σύστασης.
«POST/v1/webhooks/psp-alerts» - κοινοποιήσεις «ποσοστό μείωσης> κατώτατο όριο».
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 }
}
}
Kafka (εκδήλωση, 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. ΕΕΔ: Έκδοση/Αξία/Πελάτες/Ασφάλεια/Κόστος.
2. Σύμβαση: σύστημα, φίλτρα, όρια, ιδιωτικότητα, SLO, εκδόσεις.
3. Μοντελοποίηση φορτίου: top-N αιτήματα, p95/scan bytes, κόστος.
4. Επικύρωση/μνήμη/ποσοστώσεις: ενεργοποιήστε εξ ορισμού.
5. Τεκμηρίωση και SDK: παραδείγματα, όρια, σφάλματα, retrays, idempotency.
6. Κανάριος:% των πελατών, δοκιμές παλινδρόμησης, προειδοποιήσεις.
7. GA: Έκδοση καταλόγου προϊόντων δεδομένων, έκθεση επιπτώσεων.
18) Αντι-μοτίβα
Άνοιγμα του «ακατέργαστου» SQL σε όλους - διαρροές PII, απρόβλεπτο κόστος.
Σελιδοποίηση OFFSET και «SELECT» - πόνος λόγω καθυστέρησης και καταμέτρησης.
GraphQL χωρίς περιορισμούς βάθους/κόστους.
REST, η οποία επιστρέφει πάρα πολλές στήλες χωρίς 'πεδία =...'.
Έλλειψη k-ανωνυμίας και min-group-size σε συγκεντρωτικά μεγέθη.
Μηδενικές ποσοστώσεις/όρια και κρυφή μνήμη με αναπηρία.
Καμία έκδοση/σύμβαση - «σπάμε» τους πελάτες με κάθε αλλαγή.
Η ίδια διεπαφή για όλες τις χώρες/εμπορικά σήματα αποτελεί αδιαφορία για τους περιφερειακούς κανόνες.
19) Χάρτης πορείας για την εφαρμογή
0- 30 ηµέρες (MVP)
1. Κατάλογος προϊόντων δεδομένων (μετρήσεις/φέτες) και οι συμβάσεις τους OpenAPI/GraphQL.
2. Πύλη SQL με RLS/CLS, k-ανωνυμία συγκεντρωτικών στοιχείων, βασικές ποσοστώσεις.
3. Ένα τελικό σημείο REST-μέτρησης ('/πληρωμές/μετρήσεις ') + cache + pool bi _ hot/adhoc.
4. GRPC Feature Store: ανάγνωση 10-20 βασικών διαδικτυακών χαρακτηριστικών (p95 ≤ 80 ms).
30- 90 ηµέρες
1. Διεπαφές ροής (Kafka/Webhook) για ειδοποιήσεις PSP/εκδηλώσεις παιχνιδιού.
2. Μεταφορτώσεις βέλους/παρκέτας από το παρουσιαζόμενο URL. κατάλογος στιγμιότυπων.
3. Πύλη της Ομοσπονδίας (Trino/Presto) με σαφείς πολιτικές.
4. Παρατηρησιμότητα: ταμπλό SLI/SLO, προειδοποιήσεις σχετικά με το κόστος/καθυστέρηση/PII.
3-6 μήνες
1. SDK (TypeScript/Python/Go) με retrays/idempotency/ποσοστώσεις.
2. Λεπτές φέτες GraphQL για προϊόντα και εταίρους.
3. επέκταση gRPC/FS, offlayn↔onlayn διαπραγμάτευση· κυκλοφορίες.
4. Έλεγχος της ιδιωτικής ζωής/DSAR· την πρόσβαση στις εκθέσεις συμμόρφωσης.
20) RACI
Πλατφόρμα δεδομένων (R): πύλες, κρύπτη, ποσοστώσεις, ομοσπονδία, παρατηρησιμότητα.
Διακυβέρνηση δεδομένων (A/R): συμβάσεις, εκδόσεις, ιδιωτικότητα/k-ανωνυμία.
Ιδιοκτήτες τομέα (R): σημασιολογία πεδίου, επιχειρηματικές αναλλοίωτες, προϊόντα δεδομένων.
Ασφάλεια/ΥΠΔ (A/R): AuthN/Z, γεωγραφική απομόνωση, DSAR/Legal Hold.
SRE/Παρατηρησιμότητα (C): SLO/SLI, καταχωρίσεις, χωρητικότητα.
Analytics/BI/DS (C): απαιτήσεις για έντυπα/συγκεντρωτικά στοιχεία, SDK.
21) Συναφή τμήματα
Αναλυτική ευρετηρίαση αποθήκευσης, βελτιστοποίηση αναλυτικών ερωτημάτων, συστήματα δεδομένων και εξέλιξη, επικύρωση δεδομένων, πρακτικές DataOps, API ανάλυσης και μέτρησης, αποθήκευση χαρακτηριστικών, ασφάλεια δεδομένων και κρυπτογράφηση, έλεγχος πρόσβασης, πολιτικές διατήρησης δεδομένων.
Σύνολο
Οι κατάλληλα σχεδιασμένες διεπαφές πρόσβασης στα δεδομένα μετατρέπουν την αποθήκευση και τις ροές σε αξιόπιστο «προϊόν»: προβλέψιμες SLA, ελεγχόμενο κόστος, συμμόρφωση με την ιδιωτική ζωή και ενιαία γλώσσα για ομάδες προϊόντων, αναλυτική, συμμόρφωση και εταίρους. Στο iGaming, αυτό σημαίνει ότι η σύλληψη PSP καταρρέει γρηγορότερα, κατανοώντας τη συμπεριφορά του παίκτη και ικανοποιώντας τις κανονιστικές απαιτήσεις - χωρίς χειροκίνητες μεταφορτώσεις και νυχτερινές μεταναστεύσεις.