GH GambleHub

תהליכי ETL/ELT

1) מטרה והקשר

צינורות ETL/ELT מספקים טעינה, טרנספורמציה ופרסום של נתונים לדיווח (GGR/NGR, רגולטורים), אנליטיקה/ML ופאנלים מבצעיים.

ETL: להפוך לפני הטעינה ל DWH/Lakehouse (לעתים פחות קרובות בערימות מודרניות).
העומס הראשון לתוך בית לייקהאוס (ברונזה/כסף), לאחר מכן להפוך SQL/מנועים (מומלץ).

2) ארכיטקטורת התייחסות

1. Innight/Edge: HTTP/gRPC/Batch, CDC מ-OLTP, ספק להעלות S3/FTP.
2. ברונזה (raw, apend-only): תשלום בלתי משתנה, מסיבות לפי תאריך/שוק/דייר.
3. כסף (נקי/קונפורם): נורמליזציה, dedup, ספריות, SCD, FX/timezones.
4. גולד (הגשה): חנויות מוכללות עבור דגמי BI/רגולטור/.
5. תזמור: Airflow/Dagster/Prefect (DAG 'i, SLA, Retrai, Shifts).
6. DQ/Contractions: Schema Registry + DQ-tacture-action, בדיקות המונעות על ידי צרכנים.
7. תצפית: מדדי צינור, שושלות, יומנים, לוחות מחוונים-עלות.

3) ETL נגד בחירת ELT

קריטריוןETLELT (מומלץ)
גמישות ההקצאותנמוך יותר(מסע בזמן, עיבוד מחדש)
עלותיקר יותר כאשר גדלאופטימלי בעת הדירוג
בקרת איכותעל בלעלכסף/זהב + DQ-as-code
היסטוריוגרפיה/זיהוי פלילימוגבלת(ברונזה מלאה תופס בלבד)

תרגול: ב ־ iGaming - ELT + CDC: טעינה מהירה, ואז תקן וספור.

4) עליות ומרכז לבקרת מחלות

גישות דלתא:
  • CDC (שכפול דבזיום/לוג): OLTP משנה * BRONZE # MERGE IN SILVER.
  • סימן מים בזמן: 'עדכן _ at> max_loaded_ts'.
  • Hash diff: 'md5 (שורה)' השוואה לזיהוי שינוי.
  • אימפוטנציה של הורדות.
מיזוג לדוגמה (דלתא/קרחון):
sql
MERGE INTO silver. payments s
USING stage. payments_delta d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;

5) חוזים ותוכניות

Schema-first: JSON/Avro/Protobuf in Registry; 'shema _ גרסה' באירועים/קבצים.
אבולוציה: התאמה אחורית (תוספות חסרות ערך); פריצה '/v2 '+ כניסה כפולה.
שדות נדרשים הם "event _ time" (UTC), "event _ id'," trace _ id', "user _ pseudo _ id'," market ".

6) DQ-as-code (סט מינימלי)

yaml table: silver. payments owner: data-payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: unique_tx # uniqueness of transactions type: unique columns: [transaction_id]
severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical

7) תזמור: DAG "ו, תלויות, SLA

עיצוב DAG: ממקורות לחנויות; תלות מפורשת בין משימות.
רטריי ואידמפוטנטיות: לסגת, ”לנקות” הילוכים חוזרים, נקודות ביקורת.
תפיסה מסודרת של תקופות שלא נענו.
זהב, למשל. היומי מוכן לפני השעה 06:00 לפי שעון מקומי; התראות על הפרות.
פרמטריזציה: שווקים/דיירים/תאריכים באמצעות וארס; תבנית עבודה אחת.

8) אידמפוטנטיות ובדיוק-פעם אחת

בלע: שכפולים אפשריים * dedup by '(event_id, מקור).
בעיבוד: Upsert/למזג; פונקציות ”טרנספורמציה” טהורות.
בכיור: התחייבויות עסקיות או אידמפוטנטים כותבים; שליטה על ”ספירה כפולה”.
Outbox/Inbox: הוצאה לאור של אירועי דומיין מ ־ OLTP.

9) עיבוד חוזר מלא

מילוי אחורי: טווחים עיקריים/היסטוריים.
עיבוד מחדש - חישוב מחדש כאשר הלוגיקה משתנה/תיקונים.
מעקות בטיחות: גבולות טווח, מכסות, חלונות זמן, יבש לרוץ עם השוואה מטרית.
סימון: ”logic _ version”, ”recalc _ version”.

10) דוגמנות כסף/זהב

כסף (3NF/BCNF): עובדות 'עובדה _ הימורים/תשלומים/תשלומים', ממדים 'dim _ users/games/spects/markets (SCD II)', סטנדרטיזציה/timezones.
זהב: חנויות מוכללות עבור מודלים BI/רגולטור/BI; חבילות יצוא ללא רבב (תולעת) + חתימה.

דוגמה זהב: GGR Daily

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;

11) פרטיות ותושבות

מזעור PII: tokenization; מפות של תעודות זהות אמיתיות בלולאה המבודדת.
RLS/CLS: מדיניות גישה לפי תפקיד/סמכות שיפוט, מיסוך.
תושבות: ספריות/מפתחות נפרדים עבור EEA/UK/BR; לאסור מצטרפים צולבים-אזוריים ללא סיבה.
DSAR/RTBF & Legal Hold: עריכות סלקטיביות, ארכיון תולעת לדיווח, ביקורות ייצוא.

12) יכולת תצפית ו ־ SLO

ספסל SLI/SLO:
  • רעננות סילבר p95 על 15 דקות; זהב יומי מוכן עד 06:00 מנעול. זמן.
  • שלמות ב-99. 5%, תוקף (מזימה) ו-99. 9%.
  • ההצלחה של עבודות 99. 0%, תקריות MTTR צוין 24-48 h.

לוחות מחוונים: מפת חום טרייה, משפך אובדן DQ, עלות/שאילתה ועלות/GB, גרף שושלת.

13) ביצועים ועלות

מחיצה: תאריך/שוק/דייר; קיבוצים/הזמנה-Z על ידי פילטרים.
פורמטים: Parquet + ACID (דלתא/קרחון/האדי), דחיסה וסטטיסטיקה.
דחיפה: לחימה בקבצים קטנים (אופטימיזציה/ואקום).
התממשות: אגרגטים יציבים; הימנע ענק על לעוף מצטרף.
צ 'רג' בק: תקציבים, הפעלה חוזרת של מכסות/הילוך אחורי; לוח זמנים בחלונות עמוסים נמוכים.

14) דוגמאות של משימות DAG טיפוסיות (פסאודוקודה בזרימת אוויר)

python with DAG("elt_payments_daily", schedule="@daily", start_date=..., catchup=True) as dag:
extract = BashOperator(task_id="extract_cdc", bash_command="run_cdc_to_bronze. sh {{ ds }}")
load  = BashOperator(task_id="load_to_silver", bash_command="sql/run_merge_silver. sql {{ ds }}")
dq   = BashOperator(task_id="dq_checks", bash_command="dq/run_checks. sh silver. payments {{ ds }}")
gold  = BashOperator(task_id="build_gold_ggr", bash_command="sql/build_gold_ggr. sql {{ ds }}")
export = BashOperator(task_id="export_regulator", bash_command="export/run_worm_pack. sh {{ ds }}")

extract >> load >> dq >> gold >> export

15) תהליכים ו ־ RACI

R (אחראי): הנדסת נתונים (DAG, Silver/Gold models), פלטפורמת נתונים (Infra, Registry, DQ).
א '(אחראי): ראש הנתונים/CDO.
C (ייעוץ): ציות/משפטי/DPO (PII/תושבות/Legal Hold), פיננסים (FX/GGR), סיכון (RG/AML), SRE (SLO/GGR).
אני (מושכל): BI/מוצר/שיווק/מבצעים.

16) מימוש מפת דרכים

MVP (3-5 שבועות):

1. Lakehouse Bronze/Silver (חומצה) + CDC/Curments for Professions/Gameplay.

2. DQ-like-code (כללים 10-15) ולוחות מחוונים בסיסיים של רעננות/שלמות.

3. תצוגת זהב ראשונה (GGR Daily) עם SLA ”עד 06:00”, יצוא תולעת עם חתימה.

4. DAG ותזמור התראה על SLA/DQ.

שלב 2 (5-10 שבועות):
  • סיומת Domain, SCD II למשתמשים/משחקים/ספקים.
  • שכבה סמנטית של מדדים; ניתוח שושלת/השפעה; הליכי גיבוי/עיבוד מחדש.
  • Regionalization (EEA/UK), RLS/CLS, בקרת עלות (מכסות/שארג 'בק).
שלב 3 (שבועות 10-16):
  • הילוך חוזר של סימולטור (מה-אם), דור אוטומטי של תצוגה/מדידות תיעוד.
  • אופטימיזציה עלויות (התקבצות, התממשות, TTL, דחיסה).
  • תרגילי ד "ר והחלמת מסע בזמן.

17) רשימת בדיקות לפני המכירה

[ חוזים/תוכניות ] ברישום, בדיקות תאימות ירוקות.
[ ] CDC/CURGE ו-MERGE הם אידמפוטנטים; Dedup לבלוע.
[ כללי DQ ] פעילים (קריטיים = כשל + DLQ), לוחות מחוונים של SLA מוגדרים.
[ ] תצוגות זהב מתועדות, נוסחאות מטריות בשכבה הסמנטית.
[ ] RBAC/ABAC, הצפנה, תושבות, DSAR/RTBF/Legal Hold מאומת.
[ ] כיווץ/אופטימיזציה/ואקום בלוח זמנים; מגבלות הילוך אחורי/הילוך חוזר.
[ ] Runbook "ותקריות ועיבוד מחדש, ביקורת ייצוא (תולעת + חשיש).

18) אנטי דפוסים וסיכונים

טעינה מלאה ”ליתר ביטחון”: השתמש במרכז לבקרת מחלות/שינויים.
מערבב מידע גולמי ומדווח, להפריד בין ברונזה לכסף וזהב.
חוסר די-קיו ושושלות: אין פרנסה ורבייה.
PII בשכבות אנליטיות: לבודד מפיות, ליישם CLS/RLS.
דקירות ”לילה” מונוליטיות: למחוץ, מקביל בחבורות.
התעלם מהעלות: לפקוח עין על קבצים קטנים, לממש אגרגטים, להציג מכסות.

19) גלוסרי (קצר)

ETL/ELT - מיצוי/טרנספורמציה/טעינה (לפני/אחרי טעינה).
המרכז לבקרת מחלות, שינוי תפיסה.
SCD - מדידה היסטורית (I/II/III).
תולעת - אחסון בלתי משתנה של חבילות דיווח.
מסע בזמן - קריאת גרסאות היסטוריות של שולחנות.

20) השורה התחתונה

ETL/ELT מודרני אינו תסריטים, אלא פלטפורמה מנוהלת: חוזים ו-DQ, שינויים אידמפוטנטיים/CDC, דיסציפלינת שכבות ברונזה/כסף/זהב, תצפית ו-SLO, פרטיות וכלכלה. אם תעקוב אחר מדריך זה, תוכל לקבל צינורות ראויים לשחזור ושומעים שעקביים דיווח כוח, מוצר ומודלים בקנה מידה וללא הפתעות.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

Telegram
@Gamble_GC
התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.