משתמש:DrorO/סכימת כוכב

מתוך ויקיפדיה, האנציקלופדיה החופשית

במדעי המחשב, סכימת כוכב (Star Schema), המכונה גם סכמה רב-מימדית, קוביית מידע או סכימת איחוד - כוכב (star-join schema) היא השיטה הפשוטה ביותר לייצוג מחסן נתונים. סכימת הכוכב מורכבת מטבלת עובדות (fact table) אחת או יותר, והיא מהווה מקרה פרטי של סכימת פתיתי שלג היעילה יותר עבור שאילתות פשוטות.

מודל[עריכת קוד מקור | עריכה]

סכימת כוכב מסווגת מאפייני אירוע מסויים לעובדות (המיוצגות באמצעות משתנים כמותיים המכילים מידע נומרי או משתני זמן), וכן שדות המתארים מימד מסויים של מידע (למשל – "מזהה הלקוח", או "מזהה המוצר"), המאפשרים קישור בין העובדה ליישויות אחרות בבסיס נתונים. העובדות עצמן מאוחסנות ברמת פירוט אחידה במרכז הכוכב, בטבלת העובדות. שדות המימד מסודרים לפי קבוצות זיקה (קבוצת שדות בעלי הקשר דומה) ומאוחסנים במספר מינימלי של טבלאות מימד. לדוגמא – סכימת כוכב עבור נתוני מזג אוויר יכולה לכיל עובדות אודות טמפרטורה, לחץ ברומטרי, מהירות הרוח ועוד. סכמה כזו תכלול גם מימדים שונים כגון אזורים, תאריכים, פרטי החזאי המדווח וכדומה. מבנה סכימת הכוכב נועד לאפשר אופטימיזציה של קלות השימוש (של משתמש הקצה) וקלות ביצועי השליפה על ידי צמצום מספר הטבלאות הנדרשות לייצוג של טרנזקצייה (בדרך כלל עסקית). מקור שמה של סכימת כוכב הוא בדמיון של הסכמה למערכת כוכבים – מספר כוכבים בהירים במרכז (העובדות) מוקפים בכוכבים בהירים פחות (המימדים):

  • טבלת העובדות מרכזת את העובדות המדידות עבור אירוע מסויים ומכילה מספר רב של רשומות (שורות), על מנת לבודד את המידע לרכיבים אטומיים. ישנו דגש על צמצום מספר השדות על מנת לשמור על ביצועי השליפה. ישנם שלושה סוגי טבלאות עובדות עיקריים:
    • טבלת טרנזקציות – עובדות בנוגע לאירוע מסויים, כגון מכירת מוצר.
    • טבלת תמונת מצב – עובדות נכונות לנקודת זמן מסויימת, למשל – נתוני חשבון בנק בסוף חודש.
    • טבלת תמונת מצב מצטברת – עובדות מצטברות לנקודת זמן מסויימת, למשל, מכירות כולל עד לתאריך מסויים.
  • טבלאות מימדים הן בעלות מספר קטן יותר של רשומות מטבלת העובדות אך בעלות מספר רב של שדות, על מנת להרחיב את העובדות במימד מסויים.

לעיתים קרובות ישנם בין עשרות למאות שדות המתארות את ההיבטים השונים של כל עובדה. שדות אלה מאורגנים בטבלאות בעלות קשר קל ביניהן, כאשר בין השדות קיימת זיקה ידועה או בלתי ידועה. למשל, שדות צבע, גודל ומרקם יכולים לתאר מוצר מסויים ויכללו בטבלת מימד המוצר. טבלאות מימד יכילו שדות שבדרך כלל היו מנורמלות לטבלאות שונות (סכימת פתית השלג). למשל, במדינות רבות ניתן למפות כתובת הכוללת עיר רחוב ומספר על פי המיקוד בלבד. בעוד שעל פי כללי הנירמול, יש להפריד תלות זו בטבלה נפרדת (בטבלה המכילה את הכתובת להשאיר רק את השדה שיוצר את התלות), בסכימת כוכב שדות אלו ימופו לטבלה אחת – טבלת מימד המיקום. בטבלאות המימד, המפתח העיקרי יהיה מפתח חלופי, בדרך כלל מספר סידורי, כאשר כל מופע שלו מייצג קומבינציה של השדות המהווים את המפתח העיקרי הטבעי. בטבלת העובדות המפתח גם כן יהיה תחליפי – על מנת לאפשר מצב שבו ישנן שתי רשומות זהות לגמרי, למעט ערך המפתח. סכימת מרבה רגליים היא סכמה המכילה מספר רב של מימדים, כאשר כל מימד מכיל מספר מועט של שדות. בעוד שסכמה כזו היא קלה יחסית לתחזוקה, שליפת המידע עשויה להיות איטית בשל הצורך באיחוד (JOIN) של טבלאות רבות ומקשה על השימוש בסכמה.

יתרונות[עריכת קוד מקור | עריכה]

יתרונה העיקרי של סכימת כוכב היא הפשטות בשליפת מידע רלוונטי. ניתן לכתוב, בצורה פשוטה, שאילתות המאחדות בין טבלת העובדות לבין מספר קטן של טבלאות מימדים. איחוד זה קל יותר בסכמות כוכב מאשר בסכימת פתית שלג כיוון שנדרש סינון על פי השדות הנדרשים לשאילתא בלבד, והאגרגציה היא מהירה יותר.

דוגמה[עריכת קוד מקור | עריכה]

נניח כי קיים בסיס נתונים המחזיק מידע לגבי מכירות של חנות, פרטי החנות והמוצר. התמונה שמשמאל מתארת את סכימת הכוכב המתאימה. עובדות המכירות נשמרות בטבלת העובדות, והמימדים הם: תאריך, חנות ומוצר. לכל טבלת מימד ישנו מזהה משלו, המסומן כ- ID. כל אחד ממזהים אלו מופיע בטבלת העובדות כשדה. השדה הנוסף, שאינו מזהה בטבלת העובדות – שדה "יחידה נמכרת" הינו דוגמה לשדה בעל ערך כמותי שיכול לשמש לניתוח של ביצועי הארגון. שדות שאינם מזהים בטבלאות המימד הם שדות המכילים מידע נוסף – למשל השדה "שנה" בטבלת " מימד_תאריך". דוגמה לשאילתה מתאימה לסכמה המתוארת מוצגת למטה. בשאילתת SQL זו, השאילתה עונה על השאלה: "כמה טלביזיות נמכרו, לכל מותג ולכל מדינה, בשנה 1997":

SELECT
        P.Brand,
        S.Country,
        SUM(F.Units_Sold)
FROM Fact_Sales F
INNER JOIN Dim_Date D    ON F.Date_Id = D.Id
INNER JOIN Dim_Store S   ON F.Store_Id = S.Id
INNER JOIN Dim_Product P ON F.Product_Id = P.Id
WHERE
        D.YEAR = 1997
AND P.Product_Category = 'tv'
GROUP BY
        P.Brand,
        S.Country

ראו גם[עריכת קוד מקור | עריכה]

סכימת פתיתי שלג

מקורות[עריכת קוד מקור | עריכה]

  • DWH Schemas. 2009.
  • Kimball p. 393.

קישורים חיצוניים[עריכת קוד מקור | עריכה]