אנליטיקה וצינורות ETL
(סעיף: טכנולוגיה ותשתיות)
תקציר
הצינור האנליטי הופך אירועים מבצעיים של iGaming (הימורים, מרבצים, ספרי אינטרנט של PSP, יומני משחק) לאותות ראווה מטריים יציבים (GGR/NGR, LTV, שימור, אותות נגד הונאה). עקרונות תומכים: מודל שכבות יחיד (ברונזה/כסף/זהב), דיסציפלינה אינסטרומנטלית DQ/שושלת, אינסטרומנטליות ואידמפוטנטיות, יכולת תצפית ו-SLO, שליטה בעלויות. החלטות נעשות תוך התחשבות בפרופיל העומס (פסגות טורניר), רגולציה (PII/localization) ודרישות עסקיות לטריות נתונים.
1) ארכיטקטורות: ETL נגד ELT, אצווה נגד זרם
Securt Transform # Load-Transforms לפני הטעינה לתוך DWH. מתאים שבו שינויים דורשים סביבה/סודות מבוקרים לפני ”הענן”.
ELT (Extract Load # Transform): חומרי גלם באגם/לייקהאוס/DWH, ואז SQL/מנוע (תסריטי DbT/SQL). נוח למנועי עמודים וחזרות גמישות.
אצווה: חלונות מתוכננים (כל 5/15/60 דקות, כל לילה). זול וצפוי.
זרם: OLAP (ראשי תיבות של: Kafka = Flink/ksqLDB. לחלונות כמעט בזמן אמת (5-60 שניות) ואותות נגד הונאה/CRM.
ברונזה מתמלאת בנחל, כסף/זהב - דגמי אצווה מצטברים.
המלצה: ב-iGaming שומרים על הזרמת ELT +: אירועים באמצעות CDC/outbox # Bronze (רעננות דקה), שינויים מצטברים ב-Silver/Gold.
2) מדליון
אירועים גולמיים ללא היגיון עסקי. פורמטים של פרקט/ORC, סכימות כמו, אימות מינימלי.
כסף (קונפורמציה): ניקוי, שכפול, נורמליזציה של זיהוי, מימד SCD, איחוד אזורי מטבע/זמן.
זהב (מארטס): מקרים עסקיים (עובדות/ממדים, קוביות), השקפות ממשיות, פרגמנטים (ימים/מדינות/מוצרים).
יתרונות: רבייה, אבולוציה שקופה, סל "ד שונים וטי-טי-אל בשכבה.
3) מקורות וטעינה: CDC, יוצא, קבצים
CDC (Change Data Capture): שינוי זורם מ-OLTP (Postgres/MySQL) עם סדר ואידמפוטנטיות מובטחת.
תבנית Outbox: אירועים נכתבים לשולחן היוצא/אוסף בעסקת השירות = = המחבר מפרסם לאוטובוס/אגם.
העלאת קבצים: העלאות PSP, דוחות שותף; השתמש במניפסטים, צ 'קסום, ולקבל ספריות.
מנהגים: מקורות מבוססים (סכימה גרסה), לכל מקור - חוזה של שדות וציפיות איכות.
4) תזמור: DAG, תלות, פריסה
DAGs: תלות מפורשת (graw staging ach dims # works ac.marts).
אידמפוטנטיות משימה: שידור חוזר ללא תופעות לוואי (חלוקה-שכתוב, 'MERGE '/upsert).
הפרדת סביבות: Dev/Stage/Prod, קידום חפצים, ”אישור ידני” למילוי גב יקר.
תזמון: cron/time windows + event progress (בהתאם להגעת קבצים/צדדים).
סודות: ממנהל סודי; מלבד סודות בקוד DAG.
python with DAG("dwh_daily", schedule="0 ") as dag:
bronze = ingest_cdc(source="payments", partition=hour())
silver = dedup_normalize(input=bronze)
dims = build_dimensions(input=silver)
facts = build_facts(input=silver, dims=dims)
marts = build_marts(input=facts)
bronze >> silver >> [dims, facts] >> marts
5) איכות נתונים (DQ) ושושלת
DQ-checks: שלמות (ספירה, הגעה מאוחרת), ייחודיות של מפתחות, כללי טווס/דומיין (כמות 0, מטבע בספרייה).
סף ההדק: עצירה קשה/רכה-נכשלת עם התראה בהתאם לביקורתיות של השולחן.
לינאז '/קטלוג: מדיווח למקור (טבלאות, עמודות, מטריצות), בעלים, תיעוד, סיווג PII.
סכימה בקרה: מבחני תאימות אוטומטיים (backward-/forward-actable), התראה לשינויים ”שבירה”.
6) הדמיה: SCD, מפתחות פונדקאית, נורמליזציה
SCD2 לממדים הם 'תקף _ מ/תקף _ to/is _ הנוכחי', מפתח פונדקאי (_ sk) ומפתח טבעי (_ id).
SCD1-Overwrites לתכונות שוליות (למשל, ממשק מקומי).
מפתחות פונדקאית: stable '_ sk' עבור הצטרפות, מפתחות טבעיים עבור ייחודיות.
נורמליזציה ממדית: פתית שלג היכן שההיררכיות עמוקות; אחרת כוכב למהירות.
7) מודלים מצטברים ומחלקים
סימן מים ("updated _ at", "inbleget _ ts'): קרא רק שורות חדשות/שונות.
אסטרטגיות מצטברות: ”מיזוג” על ידי מפתחות עסקיים, ”הכנס שכתוב יתר” על ידי המון, ”מחק + הכנס” עבור מגרשים קטנים.
מחיצה: לפי תאריך/שעה/אזור; על ידי סינון והצטרפות מפתחות.
השקפות ממשיות: GGR/NGR pregeration, מטמון של חלקים פופולריים.
יחידות אישור: HLL/approx_distinct לתצוגות זולות.
sql
MERGE INTO fact_deposits f
USING staging_deposits s
ON (f. deposit_id = s. deposit_id)
WHEN MATCHED THEN UPDATE SET amount = s. amount, status = s. status, updated_at = s. updated_at
WHEN NOT MATCHED THEN INSERT (...)
VALUES (...);
8) הילוך אחורי, עיבוד מחדש וניהול סיפורים
Backfill: DAGs בודדים עם מגבלות משאבים וחלונות; ”חלון ברור של אמת” (למשל. 2024-01-01.. 2025-11-05).
עיבוד חוזר: שינוי דטרמיניסטי = ריצות חוזרות נותנות את אותה התוצאה. רישום גרסאות של קוד מודל.
זמן נסיעה/גרסאות שולחן: נוח לחקירות וד "ר" שגיאות לוגיות ".
חזרה: לסגת (למחוק/לתקן) מדיניות עם רישום.
9) מסוע CLO/SLA/SLO
רעננות: Bronza lood 1-5 min, Silver lood 15 min, Gold lood 60 min (דוגמה).
אמינות: DAG/99 שיעור מעבר x%.
ביצועים: p95/p99 קודקוד; תקציב זמן המפלגה.
ניטור לאג: פיגור בזרם הבולע, עומק התור, נתח של ”נתונים מאוחרים”.
התראות: הפרה של רעננות/נפח, קבצי DQ, עלייה במחיר הסריקות, הידרדרות של MV.
10) עלות: חיזוי ואופטימיזציה
מחיצות ואשכולות למזער נפח סריקה.
התממשות סמנים חמים (ימים/מדינות/מוצרים).
תוצאות מטמון/MVs עבור לוחות מחוונים בשימוש תדיר.
צג תדר הפעלה מחדש (לא ”כל 5 דקות” ללא סיבה).
TTL: שימור ברונזה אגרסיבי, כסף בינוני, זהב ארוך (אגרגטים בלבד).
תכנון קיבולת: מדדי קטלוג, תחזית לפסגות טורניר/קמפיין.
11) בטיחות, מח "ש ומיקום
סיווג נתונים: PII/פיננסי/תפעולי.
הצפנה: במנוחה ובמעבר; גישה מבוססת תפקידים של KMS.
דה-זיהוי: חשיש/מיסוך, עמודות נפרדות עם מפתחות.
RLS/SLABARDS עבור רב-דיירים (by 'tenant _ id).
לוקליזציה: אזורי אחסון ועיבוד לפי אזור (EU/TR/LATAM); לייצא רק למקומות מותרים.
ביקורת: קריאה/כתיבה לטבלאות קריטיות, גישה לספרייה.
12) יכולת תצפית: מדדים, בולי עץ, שבילים
מדדי צינור: משך משימה, תור, שגיאות, מגשים מחדש, בייטים/שורות מעובדים, עלות.
יומנים: מובנים; קורלציה על ”trace _ id'/” run _ id'.
התחקות: ממקור למופע ראווה (inneathing _ transformation # load # BI).
לוחות מחוונים: רעננות שכבות, הצלחה של DAGS, בקשות יקרות ביותר, p95/p99.
13) מכשירים (סימני תפקידים)
תזמור: תזמורות DAG (עם לוח זמנים, מגשים מחדש, התראות, סודות).
טרנספורמציות: מודל SQL (”מודלים כקוד”), בדיקות יחידה של מודלים, תיעוד.
DQ/חוזים: מסגרות אימות ו-SLAs על נתונים.
לינאז '/קטלוג: גרף תלות אוטומטי, מצא בעלים.
הזרמה: מעבדי חלונות/צבירה, מחברי כיור/מקור.
(ספקים ספציפיים נבחרים לערימה של החברה ודרישות אבטחה.)
14) תבניות לדוגמה
תבנית תצוגה GGR (Generic SQL)
sql
CREATE OR REPLACE TABLE mart_ggr_daily AS
SELECT
DATE(b. ts) AS d,
c. country_code,
SUM(b. stake) AS stake_sum,
SUM(b. win) AS win_sum,
SUM(b. stake - b. win) AS ggr
FROM fact_bets b
JOIN dim_country c ON c. country_sk = b. country_sk AND c. is_current
WHERE b. ts >= DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY)
GROUP BY d, c. country_code;
מודל סימון מים מצטבר
sql
INSERT INTO fact_bets PARTITION (dt)
SELECT
FROM staging_bets
WHERE updated_at > (SELECT COALESCE(MAX(watermark), '1970-01-01') FROM _meta_watermarks WHERE table='fact_bets');
-- then update watermark
DQ בודק (רעיון)
sql
-- 1) key uniqueness
SELECT deposit_id FROM fact_deposits GROUP BY deposit_id HAVING COUNT()>1;
-- 2) negative amounts (error)
SELECT FROM fact_deposits WHERE amount < 0;
15) רשימת מימושים
1. הגדר את המילון המטרי (GGR/NGR/LTV/Retition) והבעלים.
2. תקליט רעננות SLO על פני שכבות ברונזה/כסף/זהב.
3. חוזי מקור סטנדרטיים (תרשימים, DQ, SLA).
4. לבנות גרף DAG עם צעדים אידמפוטנטים וסודות מבודדים.
5. יישום אינקרמנטליות (MERGE/overwite by party) וסימני מים.
6. כלל DQ (בדיקות קריטיות/רכות), שושלות וספריית נתונים.
7. הגדרת יכולת תצפית (מדדים, יומנים, שבילים) והתראות.
8. הזן מדיניות שימור/TTL ומילוי אחורי/עיבוד מחדש.
9. לספק בקרת מח "ש, הצפנה, RLS ומיקום.
10. לבלות יום משחק: חיקוי של טיפת מקור, ”שבירת” מזימות, הילוך אחורי המוני.
16) תרופות אנטי ־ פטריות
”לילה אחד ETL לכל דבר” ללא מפלגות וללא הדרגתיות.
חוסר די-קיו ושושלות. דו "חות סותרים וציד רוחות.
שינוי מוחלט של השולחנות בכל שיגור (פיצוץ של עלות).
צרור קשה בזמן אמת ללא חוצץ/חוזר.
מיזוג מח "ש וחנויות ציבוריות ללא קטגוריות ומיסוך.
אין מדיניות חזרה/מחיקה (לא ניתן לתקן שגיאות).
תקציר
צינור האנליטיקה החזק ב-iGaming הוא ALT + הזרמת טעינה לתוך מודל שכבתי עם DQ/lineage קשיח, מודלים אינקרמנטליים, תזמור שקוף, ו-SLOS מדיד. הוסף בקרת עלות, מדיניות PII/localization, תרגילי הילוך אחורי/DR רגילים - והפלטפורמה האנליטית שלכם תקטן באופן אמין לפסגות טורניר,