Αποθήκες δεδομένων και μοντέλα OLAP
(Τμήμα: Τεχνολογία και Υποδομές)
Σύντομη Περίληψη
Αποθήκη δεδομένων (DWH) - βασικό επίπεδο ανάλυσης του iGaming: εκθέσεις προς τις ρυθμιστικές αρχές, κερδοφορία ανά προϊόν/αγορά, LTV κλάσης, ανάλυση κατά της απάτης, κατάτμηση CRM και ταμπλό σε πραγματικό χρόνο. Η βιώσιμη DWH βασίζεται σε ένα σαφές μοντέλο δεδομένων (Star/Snowflake/Data Vault), ισχυρή ολοκλήρωση (ETL/ELT + CDC), στοχαστική απόδοση (κινητήρες στήλης, μέρη, MV), αυστηρή σημασιολογία μετρήσεων, ασφάλεια/PII και διαχείριση κόστους.
Αρχιτεκτονικές προσεγγίσεις
Classic DWH (Kimball vs Inmon)
Kimball (Διάστατη/Αστρική/Χιονονιφάδα): περιπτώσεις ταχείας αναφοράς. εστίαση σε γεγονότα και διαστάσεις, ιστορικό SCD. Γρήγορη τιμή χρόνου.
Inmon (Εταιρικό Εργοστάσιο Πληροφοριών): κανονικοποιημένος πυρήνας + καταστήματα. βαρύτερο χρόνο, αλλά αυστηρά και κεντρικά.
Θησαυροφυλάκιο δεδομένων 2. 0
Hubs-Links-Satellites: Ένα κλιμακωτό «ακατέργαστο» μοντέλο ολοκλήρωσης πηγής και ελέγχου αλλαγής. Αστρικά καταστήματα χτίζονται στην κορυφή.
Λίμνη δεδομένων/Λίμνη
Λίμνη δεδομένων: ακατέργαστα αρχεία (Parquet/ORC) + καταλόγους (Hive/Glue/Unity/Metastore).
Lakehouse: μονό στρώμα για παρτίδα/ρεύμα, πίνακες ACID (Delta/Iceberg/Hudi), ταξίδι στο χρόνο, upsert/συγχώνευση, συμπαγή αρχεία, Z-order/Clustering.
Μενταγιόν (χάλκινο-ασημένιο-χρυσό)
Χάλκινο: ακατέργαστα δεδομένα (ακατέργαστα) + CDC.
Άργυρος: καθαρισμένος και σύμφωνος.
Χρυσός: επιχειρηματικές υποθέσεις/μετρήσεις/κύβοι.
Κατάλληλο για υβρίδια (Kafka → Bronze. Silver в Lakehouse, Χρυσός в ClickHouse/BigQuery/νιφάδα χιονιού).
Μοντέλα OLAP: Αστέρι, νιφάδα χιονιού, θησαυροφυλάκιο δεδομένων
Star Schema (star)
Πίνακας στοιχείων: συναλλαγές (επιτόκια, καταθέσεις, συνεδριάσεις).
Διαστάσεις: παίκτης, παιχνίδι, πάροχος, ημερομηνία/ώρα, γεω, κανάλι έλξης.
Pros: Απλός Joynes, προβλεπόμενη απόδοση.
Νιφάδα χιονιού
Ομαλοποίηση της διάστασης (ιεραρχίες χώρας/περιφέρειας/πόλης, ιεραρχίες προϊόντων).
Υπέρ: λιγότερη επικάλυψη. μείον - περισσότερα joynes.
Θησαυροφυλάκιο δεδομένων
Προσθέτουμε ωμές αλλαγές στο DV (έλεγχος, πλήρης αναπαραγωγιμότητα), κατασκευάζουμε παράθυρα αναφοράς όπως το Star/Snowflake.
Ολοκλήρωση: ETL/ELT, CDC, αργές αλλαγές
Αγωγός
Outbox/CDC από OLTP (Postgres/MySQL) → Kafka/ → Bronze connectors.
ELT: καθαρισμός, αφαίρεση, ομαλοποίηση στο ασήμι.
Επιχειρηματική λογική και συγκεντρώσεις σε χρυσό/καταστήματα.
SCD (Αργές μεταβαλλόμενες διαστάσεις)
Τύπος 1-Overwrite (για μη ουσιώδη πεδία).
Τύπος 2: ιστορικότητα (χρονολογημένες εκδόσεις) - πρότυπο για προφίλ/κανάλια/τιμές.
Τύπος 3: αποθήκευση ζεύγους τιμών (σπάνια).
sql
-- insert new dimension version
INSERT INTO dim_player (player_sk, player_id, country, valid_from, valid_to, is_current)
SELECT gen_sk(), s. player_id, s. country, now(), '9999-12-31', true
FROM staging_player s
LEFT JOIN dim_player d ON d. player_id = s. player_id AND d. is_current = true
WHERE d. player_id IS NULL OR d. country <> s. country;
-- closing the old version
UPDATE dim_player d
SET valid_to = now(), is_current = false
FROM staging_player s
WHERE d. player_id = s. player_id AND d. is_current = true AND d. country <> s. country;
Σημασιολογικό στρώμα και «αληθείς» μετρήσεις
Εισάγετε ένα μόνο σημασιολογικό στρώμα: GGR, NGR, Καθαρές Καταθέσεις, ARPPU, LTV, Churn, Contention Cohorts ορισμούς.
Μετρήσεις όπως ο κώδικας (dbt metrics/Look ML/Semantic Layer) → τους ίδιους τύπους σε όλες τις αναφορές.
Ημερολόγιο: πίνακας ημερομηνίας/ώρας με χαρακτηριστικά TZ/περιφέρειες/Σαββατοκύριακα/εκστρατείες.
Θησαυροφυλάκια και κινητήρες: επιλογή προφίλ
Στήλη και νέφος DWH
ClickHouse: εξαιρετικά γρήγορες σαρώσεις/συγκεντρώσεις, υλοποιημένες αναπαραστάσεις, προβολές. είναι διαφορετική για εκδηλώσεις/τηλεμετρία και εκθέσεις μάρκετινγκ.
BigQuery: serverless, κλίμακα, αυτόματα caches/clusters. τιμή ανά σάρωση· βολικό για μικτά φορτία και ad-hoc.
Νιφάδα χιονιού: κλάδος υπολογισμού/αποθήκευσης, κατά παραγγελία συμπλέγματα, ταξίδι στο χρόνο. διαφανείς σε διάφορες ομάδες.
Redshift/Vertica/Pinot/Druid: επιλογές για OLAP/σε πραγματικό χρόνο.
Ρύθμιση προφίλ
Διαχωρισμός ανά ημερομηνία/περιφέρεια/κανάλι.
Ομαδοποίηση/διαλογή με φίλτρο/πλήκτρα joyn.
Συμπίεση και κωδικοποίηση με λεξικά.
Προγνώσεις (rollup, κύβοι), υλοποιημένες απόψεις.
Περίπου λειτουργίες (HyperLogLog/approx_distinct) για φτηνές αξιολογήσεις.
Μηχανική επιδόσεων
Κατάτμηση και ομαδοποίηση
Το μέρος είναι το όριο του διαμερίσματος. Πάρτι ημέρας/ώρας για εκδηλώσεις.
Συσπείρωση (ταξινόμηση κλειδιών/σειρά Z) - επιταχύνει εύρος και ενώνει.
Υλοποιημένες απόψεις (MV)
Προκαταρκτική έκθεση GGR/NGR ανά ημέρα/χώρα/προϊόν.
Πρόσθετη ενημέρωση από τη ροή CDC.
sql
CREATE MATERIALIZED VIEW mv_ggr_daily
ENGINE = SummingMergeTree()
PARTITION BY toYYYYMMDD(ts)
ORDER BY (country, product_id, toDate(ts)) AS
SELECT toDate(ts) AS d,
country,
product_id,
sum(stake) AS stake_sum,
sum(win) AS win_sum,
sum(stake - win) AS ggr
FROM bets
GROUP BY d, country, product_id;
Στοιχειώδη μοντέλα (dbt/ELT)
Στρατηγικές 'εισάγετε _ overwrite' by party, 'merge' by CDC keys, 'watermark' by 'updated _ at'.
Ενταξιακές στρατηγικές
Αντίγραφο των μετρήσεων σε κάθε τμήμα παρτίδας (denorm).
Εκπομπή μικρών dims. ανακατεύετε μεγάλα γεγονότα ταξινομημένα ανά κλειδί.
Κόστος: έλεγχος και βελτιστοποίηση
BigQuery/Snowflake: όριο μεγέθους σάρωσης (μέρη σχεδιασμού/συστάδες), ενεργοποιήστε το αποτέλεσμα cache/υλοποιημένη θέα, περιορίστε BI auto-quests.
ClickHouse: μέγεθος παρτίδας, συχνότητα merjey, προϋπολογισμός αποθήκευσης (TTL για πρώτες εκδηλώσεις, οι συγκεντρώσεις είναι ανθεκτικές).
Η σημασιολογία μετρικών μειώνει τον «διπλό» υπολογισμό.
Κλάδεμα δεδομένων: διατήρηση για το χάλκινο, συγκέντρωση για το χρυσό.
Ποιότητα δεδομένων (DQ), κατάλογος, γενεαλογία
Έλεγχοι DQ: πληρότητα, μοναδικότητα, εύρος τιμών, επιχειρηματικοί κανόνες (για παράδειγμα, GGR ≥ 0 σε συγκεντρωτικά μεγέθη).
Κατάλογος δεδομένων & γενεαλογίας: περιγραφές πίνακα/πεδίου, ιδιοκτήτες, ταξινόμηση PII, αναφορά-προς-πηγή ιχνηλάτηση.
Συστήματα ελέγχου: σύμβαση για γεγονότα/CDC, καταχωρίσεις για ασυμβίβαστες αλλαγές.
Ασφάλεια, συμμόρφωση και πολυπλοκότητα
Κατάτμηση PII: μεμονωμένες ζώνες, κάλυψη/ψευδωνυμοποίηση, στήλες με κρυπτογράφηση KMS.
RBAC/ABAC: ρόλοι σε επίπεδο έργου/σχήματος/πίνακα/σειράς (RLS), κύλινδροι για «ανάγκη γνώσης».
Εντοπισμός δεδομένων: περιφερειακοί κουβάδες/αποθήκες (EU/TR/LATAM).
Έλεγχος πρόσβασης: ποιος διάβασε/άλλαξε καταστήματα και μοντέλα.
DR, αντίγραφα ασφαλείας και αναπαραγωγιμότητα
Έκδοση κωδικού δεδομένων (dbt/git), Dev/QA/Prod περιβάλλον.
Στιγμιότυπα μετάστορα/καταλόγου + πίνακες ταξιδιού στο χρόνο.
στρώματα κατακράτησης/TTL Bronze/Silver/Gold· εξαγωγή κρίσιμων καταστημάτων.
Ημέρα παιχνιδιού: αποκατάσταση εκθέσεων, έλεγχος της ακεραιότητας των μετρήσεων.
Σε πραγματικό χρόνο και υβριδικά καταστήματα
Stream-to-OLAP: Kafka-ClickHouse/Pinot/Druid για μικρές προβολές.
Υλοποιημένες προβολές + CDC για επικαιροποιήσεις σχεδόν online (5-15 λεπτά).
Το σημασιολογικό στρώμα παραμένει το ίδιο: οι μετρήσεις είναι πανομοιότυπες σε πραγματικό χρόνο και παρτίδα.
GGR ανά ημέρα και ανά χώρα παράδειγμα επίδειξης (Generic SQL)
sql
CREATE TABLE fact_bets (
bet_id BIGINT,
player_sk BIGINT,
game_sk BIGINT,
country_sk BIGINT,
stake DECIMAL(18,2),
win DECIMAL(18,2),
ts TIMESTAMP
) PARTITION BY DATE(ts);
CREATE TABLE dim_country (
country_sk BIGINT PRIMARY KEY,
iso2 STRING,
region STRING,
valid_from TIMESTAMP,
valid_to TIMESTAMP,
is_current BOOL
);
-- Showcase
CREATE MATERIALIZED VIEW mart_ggr_daily AS
SELECT
DATE(ts) as d,
c. region,
SUM(stake) AS stake_sum,
SUM(win) AS win_sum,
SUM(stake - win) AS ggr
FROM fact_bets f
JOIN dim_country c ON c. country_sk = f. country_sk AND c. is_current
GROUP BY d, c. region;
Κατάλογος ελέγχου εφαρμογής
1. Ορίστε πηγές και πεδία, καθορίστε το μετρικό λεξικό.
2. Επιλέξτε μοντέλο: DV για ακατέργαστα/ελεγμένα στρώματα + Αστέρι για περιπτώσεις απεικόνισης.
3. Μέρη σχεδιασμού/ομάδες για βασικά ερωτήματα και παράθυρα.
4. Ρύθμιση CDC/ELT, πολιτική SCD και υποκατάστατα κλειδιά.
5. Εισάγετε ένα σημασιολογικό στρώμα (μετρήσεις ως κωδικός) και ένα ημερολόγιο ημερομηνίας/ώρας.
6. Δημιουργία MV/προσυναρμολογήσεων για δαπανηρές εκθέσεις.
7. Ενεργοποίηση ελέγχου DQ/καταλόγου/γραμμής και σχήματος.
8. Ορισμός RBAC/PII/τοπικοποίηση, κρυπτογράφηση, έλεγχος.
9. Σύσταση παρακολούθησης p95/p99, κόστος, προειδοποιήσεις για υποβάθμιση και υπέρβαση.
10. Τακτικές ασκήσεις DR και αναπαραγωγιμότητα περιβάλλοντος.
Αντι-μοτίβα
«Ένα γιγαντιαίο γεγονός χωρίς πάρτι» → σαρώσεις τεραμπάιτ και η βαθμολογία αυξάνεται.
Ασυνεπείς ορισμοί των μετρήσεων στα διάφορα ταμπλό.
Έλλειψη SCD2 όπου οι επιχειρήσεις απαιτούν ιστορικότητα.
Πρόωρη ομαλοποίηση των μετρήσεων: περιττές αναφορές και αργές αναφορές.
Ανεπεξέργαστα δεδομένα χωρίς ελέγχους DQ και γενεαλογικές αναφορές → «τίποτα».
Απουσία άδειας/TTL → αποθήκευση απορριμμάτων και έκρηξη κόστους.
Περίληψη
Αξιόπιστο iGaming-DWH είναι ένα σαφές μοντέλο (DV→Star), ένα ενιαίο μετρικό λεξικό, σωστές κατατμήσεις/συστάδες, υλοποιημένα καταστήματα, αυστηρή DQ/γενεαλογία, και RBAC/PII/τοπικοποίηση. Προσθήκη υβριδικής ροής για τη φρεσκάδα, την πειθαρχία με γνώμονα τις ELT και την αξία - και δημιουργία μιας βιώσιμης πλατφόρμας ανάλυσης που θα κλιμακώνεται στα τουρνουά, στις κανονιστικές εκθέσεις και στην ad-hoc έρευνα χωρίς εκπλήξεις στο p99 και στον προϋπολογισμό.