חנויות נתונים ומודלים של OLAP
(סעיף: טכנולוגיה ותשתיות)
תקציר
מחסן נתונים (DWH) - שכבת האנליטיקה של iGaming: דיווחים לרגולטורים, רווחיות על ידי מוצר/שוק, Cohort LTV, אנליטיקה נגד הונאה, קטעי CRM ולוחות מחוונים בזמן אמת. DWH בר קיימא בנוי על מודל נתונים ברור (Star/Snowflake/Data Vault), אינטגרציה חזקה (ETL/ELT + CDC), ביצועים מתחשבים (מנועי עמודים, מסיבות, MVS), סמנטיקה מדעית קפדנית, אבטחה/PII I I I.
גישות ארכיטקטוניות
קלאסי DWH (קימבל נגד אינמון)
קימבל (ממדי/כוכב/פתית שלג): דיווחים מהירים; להתמקד בעובדות ומימדים, היסטוריית SCD. זמן-ערך מהיר.
Inmon (מפעל מידע תאגידי): מנורמל ליבה + חנויות; כבד יותר בזמן, אבל באופן מוחלט ומרכזי.
כספת נתונים 2. 0
Hubs-Links-Satellites: מודל ”גולמי” עבור שילוב מקורות וביקורת שינויים. חנויות כוכבים נבנות על גבי.
Data Lake/Lakehouse
אגם נתונים: קבצים גולמיים (Parquet/ORC) + ספריות (כוורת/דבק/אחדות/מטסטורה).
Lakehouse: שכבה יחידה עבור אצווה/זרם, טבלאות ACID (דלתא/קרחון/האדי), זמן נסיעה, אופסרט/מיזוג, קבצים קומפקטיים, Z-order/Clustring.
מדליון (ברונזה-כסף-זהב)
ברונזה: מידע גולמי (גולמי) + CDC.
כסף: מטוהר וקונפורמלי.
זהב: ארגזים עסקיים/מדדים/קוביות.
מתאים להכלאה (Kafka # Bronze; סילבר לייקהאוס (באנגלית: Silver Lakehouse; Gold ClickHouse/BigQuery/Snowflake).
דגמים: כוכב, פתית שלג, כספת נתונים
סכמת כוכבים (כוכב)
טבלאות עובדות: עסקאות (תעריפים, הפקדות, הפעלות).
ממדים: שחקן, משחק, ספק, תאריך/זמן, גיאו, ערוץ משיכה.
מקצוענים: ג 'ונים פשוטים, ביצועים צפויים.
פתית שלג
נורמליזציה ממדית (מדינה/אזור/היררכיות עיר, היררכיות מוצר).
מקצוענים: פחות שכפול; מינוס - יותר ג 'ונים.
כספת נתונים # Star
אנחנו מוסיפים שינויים גולמיים ל DV (ביקורת, רבייה מלאה), לבנות חלונות דיווח כמו כוכב/פתית שלג.
אינטגרציה: ETL/ELT, CDC, שינויים איטיים
צינור
Outbox/CDC מ ־ OLTP (Postgres/MySQL) @ Kafka/ec Bronze מחברים.
ניקיון, דה-אפ, נורמליזציה בסילבר.
היגיון עסקי והצטברות בגולד/חנויות.
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, Net Deposits, ARPU, LTV, Churn, Retitation Cohorts.
Metrics as code (dbt metrics/BatchML/Semantic Layer).
לוח שנה: שולחן תאריך/שעה עם תכונות של TZ/אזורים/סופי שבוע/קמפיינים.
כספות ומנועים: בחירת פרופיל
טור וענן DWH
בית ClickHouse: סריקות אולטרה-פאסט/צבירה, ייצוגים ממשיים, תחזיות; שונה עבור אירועים/טלמטריה ושיווק תצוגות.
Bigquery: Serverless, scale, automatic caps/clusters; מחיר לכל סריקה; נוח לעומסים מעורבים ואד-הוק.
פתית שלג: ענף חישוב/אחסון, אשכולות לפי דרישה, מסע בזמן; שקוף לצוותים שונים.
הילוך מחדש/ורטיקה/פינו/דרואיד: אפשרויות ל ־ OLAP/בזמן אמת.
כוונון פרופיל
מחלקים לפי תאריך/אזור/ערוץ.
התקבצות/מיון על ידי מסנן/מקשי ג 'וין.
דחיסה וקידוד על ידי מילונים.
קוביות (preaggregations), תצוגות ממשיות.
פונקציות (HyperLogLog/approx_distinct) עבור דירוגים זולים.
הנדסת ביצועים
מחיצות וקיבוצים
המסיבה היא הגבול של התא. מסיבות יום/שעה לאירועים.
התקבצות (סוג מפתחות/סדר Z) - מאיצה את הטווחים ומצטרפת.
צפיות ממשיות (MVs)
GGR/NGR טרום דיווח ביום/בארץ/מוצר.
עדכון מצטבר מזרם המרכז לבקרת מחלות.
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)
אסטרטגיות ”הוסף _ overrite 'by party”, התמזג' על ידי מפתחות CDC, 'watermark' by 'updated _ at.
להצטרף-אסטרטגיות
העתק של מדידות בכל מקטע אצווה (denorm).
שידור מטבעות קטנים; לערבב עובדות גדולות ממויין על ידי מפתח.
עלות: שליטה ואופטימיזציה
BigQuery/Snowflake: הגבלת גודל הסריקה (progress parties/clusters), לאפשר תצוגות מטמון/ממשות תוצאה, להגביל ביקושים אוטומטיים BI.
ClickHouse: גודל רב, תדר מרג 'י, תקציב אחסון (TTL לאירועים גולמיים, צבירה היא עמידה).
סמנטיקה מדידה מפחיתה חישוב ”כפול”.
גיזום נתונים: שמירה על הברונזה, צבירה עבור זהב.
איכות נתונים (DQ), קטלוג, שושלות
DQ-checks: שלמות, ייחודיות, טווחים, כללי עסקים (לדוגמה, GGR-0 בצבירים).
קטלוג נתונים ושושלת: תיאורי טבלה/שדה, בעלים, סיווג PII, איתור דו "ח למקור.
תוכניות בקרה: חוזה לאירועים/מרכז לבקרת מחלות, התראות לשינויים לא מתאימים.
בטיחות, ציות וריבוי דירות
מקטע PII: אזורים בודדים, מיסוך/פסאודונימיזציה, עמודות עם הצפנת KMS.
RBAC/ABAC: תפקידים במיזם/סכימה/טבלה/שורה (RLS), סלילים ל ”צורך לדעת”.
לוקליזציה של נתונים: דליים/מחסנים אזוריים (EU/TR/LATAM).
ביקורת גישה: מי קרא/שינה חנויות ומודלים.
DR, גיבויים ורבייה
קוד נתונים versioning (dbt/git), סביבת Dev/QA/Prod.
מטסטור/קטלוג תמונות + טבלאות מסע בזמן.
שימור/שכבות TTL ברונזה/כסף/זהב; יצוא של חנויות קריטיות.
יום המשחק: לשחזר תצוגות, לבדוק את שלמות המדדים.
זמן אמת וחנויות היברידיות
זרם ל-OLAP: Kafka # ClickHouse/Pinot/Druid עבור תצוגות דקות.
תצוגות ממשיות + CDC לעדכונים כמעט מקוונים (5-15 דקות).
השכבה הסמנטית נשארת זהה: המדדים זהים בזמן אמת ואצווה.
GGR ביום וקאנטרי Showcase Example (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 לשכבות גולמיות/מבוקרות + Star לתיקי תצוגה.
3. צדדים/אשכולות עיצוב לשאילתות מפתח וחלונות.
4. הגדרות CDC/ELT, מדיניות SCD, ומפתחות פונדקאית.
5. הזן שכבה סמנטית (מדדים כקוד) ולוח שנה של תאריך/שעה.
6. צור MVs/pregregations לדיווחים יקרים.
7. אפשר DQ/directory/lineage ו ־ schema control.
8. הגדר RBAC/PII/localization, הצפנה, ביקורת.
9. הגדרת p95/p99 ניטור, עלות, התראות על השפלה וצפה.
10. תרגילי ד "ר רגילים והתרבות של סביבות.
אנטי דפוסים
”עובדה אחת ענקית ללא מסיבות” = טרה בייט סורק ואת הציון גדל.
הגדרות לא עקביות של מדדים בלוחות מחוונים שונים.
חוסר SCD2 שבו העסק דורש היסטוריה.
נורמליזציה מוקדמת של מדידות: ג 'ונים מיותרים ודיווחים איטיים.
נתונים גולמיים ללא בדיקות DQ ודיווחי שושלת = ”כלום”.
העדר אישור/TTL # אחסון אשפה ופיצוץ של עלות.
תקציר
iGaming-DWH אמין הוא מודל ברור (DV # Star), מילון מטרי יחיד, מחיצות/קיבוצים נכונים, חנויות ממומשות, DQ/lineage קפדני, ו-RBAC/PII/localization. הוסף זרימה היברידית לטריות, מונע ELT ומשמעת ערך - וקבל פלטפורמת אנליטיקה בת קיימא המאזנת טורנירים, דו "חות רגולטוריים ומחקר ad-hoc ללא הפתעות בp99 ותקציב.