Επεξεργασία παρτίδων
1) Σκοπός και αξία
Οι μεταφορείς παρτίδας σχηματίζουν αξιόπιστα κιβώτια ημερήσιας/ωριαίας απεικόνισης για:- Υποβολή ρυθμιστικών και χρηματοοικονομικών εκθέσεων (GGR/NGR, φόροι, μητρώα RG/AML).
- BI και αναλυτική προϊόντων (ομάδες, LTV, χοάνες μετατροπής).
- Επαλήθευση ακρίβειας (OLTP↔DWH, πάροχοι/PSP), ιστορικοποίηση (SCD).
- Προετοιμασία χαρακτηριστικών και συνόλων κατάρτισης για ML.
Βασικές ιδιότητες: προβλεψιμότητα, πληρότητα, αναπαραγωγιμότητα, χαμηλό κόστος ανά μονάδα δεδομένων.
2) Αρχιτεκτονική (παραπομπή)
1. Κατάποση (ακατέργαστη δέσμευση): HTTP/gRPC, CDC από OLTP, προμηθευτής uploads → Bronze.
2. Lakehouse: Χάλκινο (ακατέργαστο, μόνο προσθήκη) → Ασήμι (καθαρό/σύμφωνο) → Χρυσό (σερβίρισμα).
3. Ενορχήστρωση: Airflow/Dagster/Premect (DAG 'και εξαρτήσεις, retrays, SLA).
4. Επεξεργασία: κινητήρες σπινθήρα/Trino/DBT/SQL. μορφότυποι διαχωρισμού και όξινου οξέος (Delta/Iceberg/Hudi).
5. DQ και συμβάσεις: Schema Registry, DQ rules (YAML/SQL), consumer-tests.
6. Σερβίροντας: BI/σημασιολογικό στρώμα, δηλώσιμες εξαγωγές (CSV/PDF/JSON + hash), API/GraphQL.
7. Παρατηρησιμότητα: μετρήσεις αγωγών, γενεαλογία, κορμοτεμάχια, κόστος (κόστος/GB, κόστος/ερώτημα).
3) Συχνότητες και SLA
Ημερησίως (κλειδαριά D + 1 έως 06:00) : εκθέσεις GGR, ρυθμιστικά φορτία, συμφωνίες.
Ωριαία/οιονεί ώρα: επιχειρησιακές επιτροπές για τις Επιχειρήσεις/Χρηματοδότηση.
Εβδομαδιαία/μηνιαία: finconsolidation, μοντέλα και αναδρομές.
- Οι χρυσές καθημερινές επιδείξεις είναι έτοιμες μέχρι τις 06:00 τοπική ώρα.
- Φρεσκάδα Silver p95 ≤ 15 λεπτά για τα μικρόβια/ ≤ 2 ώρες για την ημέρα.
- Πληρότητα ≥ 99. 5%, ισχύς (καθεστώς) ≥ 99. 9%.
4) Προσαυξημένες λήψεις και CDC
Προσεγγίσεις:- CDC (Change Data Capture): Debezium/log replication → Bronze → adments in Silver.
- Υδατογράφημα ανά ώρα: 'update _ at> max_loaded_ts'.
- Σύγκριση Hash: 'md5 (σειρά)' για ανίχνευση αλλαγής.
- Upsert/Συγχώνευση: Idempotent Silver/Gold ενημερώσεις.
sql
MERGE INTO silver. payments AS s
USING staging. payments_delta AS d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
5) SCD (ιστορικό μέτρησης)
SCD I: αντικατάσταση (ορθογραφία, μικρές διορθώσεις).
SCD II: πλήρες ιστορικό ('έγκυρο _ από/έγκυρο _ έως/είναι _ τρέχον').
SCD III: «πριν/μετά» για σύντομες συγκρίσεις.
sql
MERGE INTO dim. users_scd t
USING stage. users u
ON t. user_pseudo_id = u. user_pseudo_id AND t. is_current = TRUE
WHEN MATCHED AND (t. country <> u. country OR t. rg_status <> u. rg_status)
THEN UPDATE SET t. is_current = FALSE, t. valid_to = CURRENT_TIMESTAMP
WHEN NOT MATCHED
THEN INSERT (user_pseudo_id, country, rg_status, valid_from, valid_to, is_current)
VALUES (u. user_pseudo_id, u. country, u. rg_status, CURRENT_TIMESTAMP, NULL, TRUE);
6) Οπισθοπλήρωση - Επανεπεξεργασία
Backfill: Αρχική πλήρωση/ιστορική πλήρωση.
Επανεπεξεργασία: επανυπολογισμός παραθύρων καταστημάτων μετά την επεξεργασία λογικών/διορθωτικών δεδομένων.
- Idempotency (MERGE/upsert), Bronze αμετάβλητη, λογική έκδοση.
- Time-travel για επαναλαμβανόμενα στιγμιότυπα μεταδεδομένων.
- Guardrails: Περιορισμός του εύρους, των ποσοστώσεων και των ανταγωνιστικών θέσεων εργασίας.
- Τεκμηρίωση: εγχειρίδιο με βήματα και κριτήρια ολοκλήρωσης.
7) Μοντελοποίηση στρώματος
Χάλκινο:- Μόνο ως παράρτημα, «event _ date», «δικαιοδοσία», «ενοικιαστής».
- Αποθηκεύουμε το αρχικό ωφέλιμο φορτίο (για εγκληματολογία), φτιάχνουμε το 'ingested _ a .
- Κανονικοποίηση και τυποποίηση: FK/καταλόγους, dedup, FX/timezones.
- Πίνακες γεγονότων/διαστάσεων (3NF/BCNF), SCD για βασικές διαστάσεις.
- Απομαλοποιημένα καταστήματα για ΔΙ/ρυθμιστικά/οικονομικά, ετοιμότητα SLA.
- Υλοποίηση συγκεντρωτικών μεγεθών. αμετάβλητα τεχνουργήματα εξαγωγής (hash + WORM).
8) Ποιότητα δεδομένων (DQ-as-code)
Παράδειγμα κανόνων YAML για το Silver:yaml table: silver. payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: unique_tx type: unique columns: [transaction_id]
severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical
Πολιτικές αντίδρασης: κρίσιμη → αποτυχημένη εργασία + DLQ· major/minor → tag + report.
9) Σημασιολογικό επίπεδο και υποβολή εκθέσεων
Ενοποιημένοι ορισμοί των μετρήσεων (GGR/NGR, ARPPU, κατακράτηση) στο σημασιολογικό επίπεδο/κατάστημα μετρήσεων.
Μετρήσεις εκδόσεων. Ενσωμάτωση με πακέτα ΔΠ/εξαγωγών
Εκθέσεις: CSV/JSON/PDF + sha256, download log και Legal Hold, εάν είναι απαραίτητο.
10) Προστασία της ιδιωτικής ζωής, διαμονή, ασφάλεια
ελαχιστοποίηση PII: ψευδωνυμοποίηση χρηστών· χαρτογράφηση - σε ξεχωριστό προστατευόμενο βρόχο.
Κατοικία δεδομένων: χωριστοί κατάλογοι/κλειδιά για ΕΟΧ/ΗΒ/BR. απαγόρευση διαπεριφερειακών ενώσεων χωρίς νομικούς λόγους.
Κρυπτογράφηση: TLS κατά τη διαμετακόμιση. KMS/CMK σε ηρεμία· ελέγχους εξαγωγών.
DSAR/RTBF: υπολογίσιμες προβολές, επιλεκτικές επεξεργασίες· πρόσβαση σε λογιστικό έλεγχο.
Νομικό υπόστεγο: αρχεία WORM για ρυθμιστικά αντικείμενα.
11) Επιδόσεις και κόστος
Κατάτμηση ανά ημερομηνία/αγορά/ενοικιαστή· Z-order/cluster με συχνές κατηγορίες.
Μορφότυποι: πίνακες Parquet + ACID. συμπίεση/στατιστικές, ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ/ΚΕΝΟ.
Υλοποίηση: σταθερές συγκεντρώσεις σε χρυσό. αποφυγή «μονολιθικών» θέσεων εργασίας.
Ποσοστώσεις/προϋπολογισμοί: χρέωση ανά ομάδα Όρια οπισθοπλήρωσης/βαριές αιτήσεις.
Προγραμματισμός: παράθυρα χαμηλού φορτίου (νύχτα/Σαββατοκύριακο), προτεραιότητες αναμονής.
12) Παρατηρησιμότητα και διαχείριση
Μετρήσεις αγωγών: διάρκεια, ποσοστό επιτυχίας, επαναλήψεις, επεξεργασμένες σειρές, κόστος/ερώτηση.
Μετρήσεις DQ: πληρότητα, εγκυρότητα, μοναδικότητα, σφάλματα FK, μετατόπιση.
Χάρτης θερμότητας φρεσκάδας: ανά τομέα και αγορά. Ταμπλό SLA.
Καταγωγή από χαλκό σε αναφορές. ανάλυση επιπτώσεων πριν από τις αλλαγές.
Προειδοποιήσεις: προϋπολογισμοί SLO, υποβάθμιση DQ, καθυστερήσεις, αύξηση του κόστους.
13) SQL/Παραδείγματα μοντέλων
Ομαλοποίηση νομίσματος (Silver):sql
CREATE OR REPLACE TABLE silver. payments AS
SELECT p. transaction_id,
p. user_pseudo_id,
p. currency,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
p. market,
CAST(p. event_time AS TIMESTAMP) AS event_time
FROM bronze. payment_events p
JOIN dim. fx_rates r
ON r. date = DATE(p. event_time)
AND r. ccy_from = p. currency AND r. ccy_to = 'EUR';
GGR Daily Showcase (Χρυσός):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
Έλεγχος πληρότητας (DQ SQL):
sql
SELECT market, event_date, COUNT() AS n
FROM silver. fact_bets
GROUP BY market, DATE(event_time) AS event_date
HAVING n = 0;
14) Διαδικασίες και RACI
R (Υπεύθυνη): Μηχανική δεδομένων (μοντέλα DAG, Silver/Gold), Πλατφόρμα δεδομένων (infra, μητρώο κυκλωμάτων, DQ).
A (Υπόλογος): Προϊστάμενος Υπεύθυνου Δεδομένων/Υπεύθυνος Δεδομένων.
C (Ζητήθηκε η γνώμη): Συμμόρφωση/Νομικός/ΥΠΔ (PII/παρακράτηση), Χρηματοδότηση (FX/GGR), Κίνδυνος (RG/AML), SRE (SLO/стоимость).
I (Ενημερωμένο): BI/Προϊόν/Μάρκετινγκ/Δραστηριότητες.
15) Χάρτης πορείας για την εφαρμογή
MVP (4- 6 εβδομάδες):1. Lakehouse Bronze/Silver (μορφή ACID), CDC/προσαυξήσεις για 2-3 τομείς.
2. DQ-παρόμοιος κωδικός: 10-15 κανόνες για πληρωμές/gameplay + επικύρωση CI.
3. First Gold Showcase (GGR Daily) με SLA έως τις 06:00; αναφερθείσα εξαγωγή + χασίς.
4. Φρεσκάδα/πληρότητα/ταμπλό κόστους, βασικές προειδοποιήσεις.
Φάση 2 (6- 12 εβδομάδες):- SCD II - χρήστες/παιχνίδια/πάροχοι· επέκταση τομέα.
- Σημασιολογικό στρώμα μετρήσεων. ελέγχους με OLTP/παρόχους υπηρεσιών (ακρίβεια).
- Διαδικασίες οπισθοπλήρωσης/επανεπεξεργασίας, ανάλυση γενεαλογίας και επιπτώσεων, περιφερειοποίηση (ΕΟΧ/ΗΒ).
- Αυτόματη προσομοίωση μεταβολών (ξηρό), προϋπολογισμών/ποσοστώσεων, χρέωση.
- Αυτόματη τεκμηρίωση (σελίδες προϊόντων δεδομένων), ασκήσεις DR και ανάκτηση χρόνου ταξιδιού.
- Βελτιστοποίηση κόστους (συσπείρωση, υλοποίηση, TTL, κενό).
16) Κατάλογος επιλογών πριν από την πώληση
- Συμβάσεις και σχήματα στο μητρώο, οι δοκιμές συμβατότητας είναι πράσινες.
- Επιπρόσθετες λήψεις/εργασίες CDC, η MERGE είναι ταυτόσημη.
- Οι κανόνες DQ είναι ενεργοί. κρίσιμη βλάβη → + DLQ· έκθεση σχετικά με τις παραβιάσεις.
- ταμπλό SLA/φρεσκάδας/πληρότητας· έχουν συσταθεί καταχωρίσεις.
- PII/DSAR/RTBF/Legal Hold Policies επιβεβαιωμένες από το Legal/DPO.
- Runbook 'και backfill/επανεπεξεργασία/DR που υποβλήθηκαν σε δοκιμή.
- Κόστος υπό έλεγχο (κόστος/ερώτηση, κόστος/GB, ποσοστώσεις).
17) Αντι-πρότυπα και τρόπος αποφυγής
Μονολιθικά νυχτερινά χτυπήματα: χωρίζονται σε ανεξάρτητα βήματα, παράλληλα από τα κόμματα.
Πλήρης επαναφόρτωση χωρίς λόγο: χρήση αυξήσεων/CDC/συγχώνευση.
Ανάμειξη PII στην ανάλυση: διατήρηση χωριστών χαρτογραφήσεων, εφαρμογή CLS/RLS.
No DQ/γενεαλογία: Εισάγετε DQ-as-code και ιχνοστοιχεία προέλευσης.
«Χειροκίνητα» backfills: αυτοματοποίηση και τεκμηρίωση, οριακές κλίμακες.
Μη διαχειρίσιμο κόστος: ομαδοποίηση, υλοποίηση, πολιτικές διατήρησης.
18) Γλωσσάριο (συνοπτικά)
CDC - Αλλαγές δέσμευσης από το OLTP.
SCD - βραδέως μεταβαλλόμενες μετρήσεις (I/II/III).
Lakehouse - data lake + ACID tables.
MERGE/Upsert - idempotent update operations.
Time-travel - ανάγνωση ιστορικών εκδόσεων πινάκων.
WORM - αμετάβλητη αποθήκευση αντικειμένων.
19) Η τελική γραμμή
Η επεξεργασία παρτίδων είναι ένας κλάδος προβλέψιμων, αναπαραγώγιμων και συμπληρωματικών αγωγών. Ακολουθώντας τις αρχές του σχήματος-πρώτα, προσαυξήσεις/CDC, ιστορικοποίηση SCD, DQ-as-code, παρατηρησιμότητα και συνειδητά οικονομικά, θα λάβετε σταθερές Χρυσές εκθέσεις και εκθέσεις, επαληθευμένες από λάμψεις και έτοιμες για έλεγχο ανά πάσα στιγμή.