GH GambleHub

נורמליזציה של נתונים

1) מטרה

נורמליזציה מבטלת שכפולים וחריגות של עדכונים, קובעת ספריות ומפתחות אחידים, הופכת את הנתונים לעקביים וזולים לתחזוקה. ב-iGaming, זה קריטי עבור GGR/NGR, ניתוח AML/RG, דיווח רגולטורי, אנטי-פראוד, ו-ML.

2) איפה אנחנו לנרמל

ברונזה (גולמי): לא מנורמל - אחסון כפי שהוא (אפנד בלבד) לזיהוי פלילי.
כסף (נקי/קונפורם): נורמליזציה בסיסית (3NF/BCNF, ספריות, מפתחות, SCD).
גולד (Serve): מחסני מטרה - דחייה מבוקרת לקריאה/BI אפשרית.

3) עקרונות בסיסיים

1. לסכימה לכל השולחנות יש תרשימים ומפתחות מפורשים.
2. זיהוי יחיד: "user _ pseudo _ id'," session _ id', "game _ id'," spective _ id', "transaction _ id'.
3. ספריות נפוצות: מטבעות, שווקים/תחומי שיפוט, סטטוסים של KYC/RG, ספקי משחקים, ערוצי תנועה.
4. זמן ומטבע: לאחסן ”event _ time” (UTC) ולנרמל ”כמות _ base” + ”fx _ source”.
5. אבולוציה: גרסאות סמנטיות, רק שינויים תואמים ללא הפסקות ”שקט”.
6. מזעור PII: משתמש - באמצעות פסאודו-זיהוי; מיפוי מאוחסן בנפרד, הגישה מוגבלת.

4) צורות רגילות במהירות

1NF: ערכים אטומיים, אין מערכים בטורים (מערכים = שולחנות ילדים).
2NF-Attributes תלוי במפתח המתחם כולו.
3NF: אין תלות טרנזיטיבית (תכונה תלויה רק במפתח).
BCNF: כל דטרמיננטה היא מפתח. השתמש ב ”גרעין” (תשלומים/משחק).

תרגול: מודלים כסופים של תשלומים ופעילות משחקים שומרים על 3NF לפחות; יותר מחוספס של BCNF לספרי עיון ולוחות עיון.

5) מודל תחום התייחסות (כסף)

5. 1 ספרי עיון

'Dim'. משתמשים (פסאודו-זיהוי, מדינה, טווח גילאים, סטטוסים אר-ג 'י).
'Dim'. משחקים (game_id, provider_id, ז 'אנר, RTP, תנודתיות).
'Dim'. ספקים "(provider_id, סוג, רישיון).
'Dim'. שווקים "(קוד שיפוט, רגולטור).

'Dim'. (תאריך, , , שיעור,

5. 2 עובדות (טבלאות אירוע/עסקה צרות)

act '. תשלומים ( , , , מטבע, , שוק,

act '. הימורים ( , , , , תוצאה, .
act '. ( , , , .

קישורים: עובדות ↔ מדריכים על מפתחות יציבים. אנו משכפלים את כל הסכומים ב ”מטבע המקור” וב ”בסיס” (amount_base), תיקון ”fx _ source”.

6) לאט לאט משתנה מדידות (SCD)

סוג I (שכתוב יתר): איות/תיקונים לא קריטיים.
Type II (היסטוריה): ”תקפה _ מ/תקפה _ to/is _ עכשווית”, הביקורת משתנה (לדוגמה, סטטוס RG משתנה).
סוג III (טור אלטרנטיבי): ”לפני/אחרי” להשוואות קצרות.

המלצה: עבור ערוץ השיווק RG/KYC - SCD II; לספרי עיון למשחק (RTP) - SCD II עם אימות השפעה.

דוגמה של SCD II (מפושט):
sql
CREATE TABLE dim. users_scd (
user_pseudo_id STRING,
country STRING,
rg_status STRING,
valid_from TIMESTAMP,
valid_to  TIMESTAMP,
is_current BOOLEAN
);

7) שכפול ומפתחות

מפתחות פונדקאית (BIGINT/UUID) לקישורים פנימיים.
מפתחות טבעיים (לדוגמה, "transaction _ id' מ-PSP) - להיות מאוימים ומאוחסנים בנפרד.
Dedup by '(event_id, מקור) "לבלוע + על ידי מפתחות עסקים בסילבר.

ניכוי תשלומים (דוגמה):
sql
CREATE TABLE silver. payments AS
SELECT EXCEPT(rn) FROM (
SELECT p., ROW_NUMBER() OVER (PARTITION BY transaction_id ORDER BY event_time) rn
FROM bronze. payment_events p
)
WHERE rn = 1;

8) תקן מטבע ואזורי זמן

event _ time '- תמיד UTC; עבור חלונות ראווה, הוסף את אזור המיקום/זמן של השוק.
זרמים: ”כמות _ orig” ו- ”כמות _ בסיס” (לדוגמה, EUR) + ”fx _ source”, ”fx _ rate _ used”.
תיקון יומי של קורסים, עמום, fx_rates' עם מקור וחתימת חשיש.

נורמליזציה של כמויות (דוגמה):
sql
SELECT t. transaction_id,
t. amount_orig,
t. currency,
r. rate AS fx_rate_used,
t. amount_orig r. rate AS amount_base
FROM bronze. payment_events t
JOIN dim. fx_rates r
ON r. date = DATE(t. event_time) AND r. ccy_from = t. currency AND r. ccy_to = 'EUR';

9) עקביות של ספרי עיון

רשימות ספריות מאוחדות (משחקים, ספקים, שווקים, מטבעות).
מאשרים DQ: 'in _ set', אזכורי FK, ייחודיות, עקביות של SCD.
דימנסיה ”דקה” ממקורות חיצוניים (ספקי משחקים, מדינות, PSP).

10) מתי להכחיש

הדנורמליזציה מותרת בגולד עבור:
  • דיווחים יציבים ”רחבים” (GGR, תצוגות סיכון);
  • האצה של שאילתות BI/לוחות מחוונים
  • חנויות ריאליטי (ClickHouse/Pinot) תחת קריאות SLA.
כללים:
  • כסף נשאר מקור האמת.
  • שדות מוכחשים - מחושבים/מועתקים מכסף; לוגיקה מדומה.
  • כל הדנורמליזציה מתועדת ונבדק לתקן.

11) כוכב ודגם פתית שלג

כוכב: עובדה אחת + מדידות שטוחות - קריאה קלה ומהירה יותר, כתיבה/התאמה יקרה יותר.
פתית שלג: המדידות מנורמלות (תת-כיוונים מחוברים) - פחות כפילויות, שאילתות מורכבות יותר.

המלצה: בגולד לעתים קרובות יותר ”כוכב” ב ”פתיתי שלג” מנורמלים בכסף.

12) התפתחות מזימות (שינויים בטוחים)

התאמה אחורית: הוספת טורים סתמיים; ערכי התייחסות חדשים עם דגלים.
שבירה: שינוי שם/הקלדה/משמרות סמנטיות - רק דרך '/v2 'וכניסה כפולה לתקופת הנדידה.
חוזים: תוכניות JSON/Avro ברישום, בדיקות צרכנים לתאימות.

13) בקרת DQ לנורמליזציה

סט מינימלי:
  • מפתחות ייחודיים: ”transfaction _ id',” bet _ id'.
  • יושר התייחסות: FK על 'dim'.
  • מטבעות: ”מטבע” מלוויטליסט, ”fx _ rate _ used” not NULL, ”sume _ base> = 0”.
  • זמן: ”אירוע _ זמן” בחלון סביר; בלי אירועים ”עתידיים”.
  • SCD-נכון: רכסים שאינם חופפים ”תקפים _ מ/תקפים _ to”.

14) דוגמאות למודלים של SQL

קצב בפועל (3NF):
sql
CREATE TABLE silver. fact_bets (
bet_id STRING PRIMARY KEY,
user_pseudo_id STRING NOT NULL,
game_id STRING NOT NULL,
stake_ccy DECIMAL(18,2) NOT NULL,
currency CHAR(3) NOT NULL,
stake_base DECIMAL(18,2) NOT NULL,
market CHAR(2) NOT NULL,
event_time TIMESTAMP NOT NULL
);
כוכב עבור GGR (זהב):
sql
CREATE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
m. 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. markets m ON m. code = b. market
JOIN dim. games g  ON g. game_id = b. game_id
GROUP BY 1,2,3;

15) פרטיות וציות

חייג משתמש בכסף; קשר עם זיהוי אמיתי במעגל מוגן נפרד.
RLS/CLS ומיסוך שדה (דואר אלקטרוני/PAN לא זמין באנליטיקה).
Regionalization של ספריות/מפתחות, DPO control עבור סכימה הרחבה.

16) יכולת תצפית ושושלת

Data lineage מברונזה # Silver # Gold, גרסה של טרנספורמציות וחוזים.
מדדים: שלמות, תוקף, שגיאות FK, שכפולים, ”חורים” בזמן, עלות בקשה.
התראות בהפסקות בספריות ומקורות FX.

17) ראסי

R: Data Engineering (מודלים של כסף/זהב), Data Platform (רשימות מעגלים, DQ).
א ': ראש מחלקת נתונים/ארכיטקטורה.
C: Complication/DPO (PII/Reservation), Finance (FX/GGR), Risk (RG/AML).
אני: BI/מוצר/שיווק/מבצעים.

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

MVP (2-4 שבועות):

1. רשימות ספריות (שווקים, מטבעות, ספקים, משחקים).

2. עובדה של דוגמניות כסף. תשלומים ", עובדה. הימורים ',' Dim' (3HF), SCD II עבור 'Dim. משתמשים ".

3. נורמליזציה/אזור זמן, כללי DQ בסיסיים (FK/uniqueness/in_set).

4. תצוגת זהב ראשונה (GGR Daily) ומבחני פיוס.

שלב 2 (שבועות 4-8):
  • הרחבת SCD, כיסוי אירועי משחק, מודלים קונפורמליים מספקים.
  • סכימה תאימות אוטומטית, סימולטור נדידה, קטלוג metadata.
  • אופטימיזציית מפתח/צד, התקבצות/הזמנת Z.
שלב 3 (8-12 שבועות):
  • מדיניות הדנורמליזציה של זהב, SLA/value; תבנית כוכב/פתיתי שלג.
  • דור אוטומטי של תיעוד, גרף שושלת בלוחות מחוונים.
  • ספריות אזוריות ומפתחות הצפנה, תרגילי ד "ר.

19) רשימת בדיקות איכות

[ ] מפתחות רווקים וספריות מאושרים.
[ ] סילבר בשנת 3NF, SCD פנה למדידות ”איטיות”.
[ מטבעות ]/אזורי זמן מנורמלים; 'fx _ מקור' הוא קבוע.
[ ] חוקי DQ (FK/uniqueness/range/in_set) פעילים.
[ ] דנורמליזציות מתועדות, בדיקות תקינות עברו.
[ ] שושלת ורעננות/מדדים מלאים גלויים על לוחות מחוונים.

20) טעויות תכופות וכיצד להימנע מהן

PII משתלב באנליטיקה: מפיות נפרדות, להשתמש CLS/RLS.
לא מספיק נורמליזציה של כסף: להוביל 3NF, תמיכה יקרה אחרת ושגיאות פיוס.
FX ”לכל דיווח”: קצב צריך להילכד באירוע, לא ”תארוך לאחור”.
אין SCD עבור ממדי מפתח: אבד RG/KYC/channel history.
renormalization זהב: מיותר מצטרף = = denormalization מנוהל.
אבולוציה אטומה של מזימות: שימוש במרשם ובבדיקות צרכניות.

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

נורמליזציה היא משמעת ברמת כסף: מפתחות אחידים וספרי עיון, 3NF/BCNF לעובדות ומדידות, היסטוריה נכונה (SCD) וסטנדרטיזציה של זמן/מטבעות. עם ”שלד” כזה, תיקים מזהב נעשים צפויים, דיווחים דומים, ועלות הבעלות מבוקרת.

Contact

צרו קשר

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

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

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

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

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