אנא אפשר JavaScript כדי להשתמש בתכונות הנגישות תכונות נגישות של אתרים על ידי UserWay
top of page
Nissim Elaluf

‖º‖º‖ Vertipaq Engine ‖º‖º‖

עודכן: 24 בפבר׳ 2024




חשבתם פעם למה לפעמים לוקח לשאילתות לרוץ כל כך הרבה זמן ?

שמעתם פעם על המושג Vertipaq ?

בואו נדבר היום על נושא טיפה יותר טכני מאשר שאר המאמרים עד היום – נושא הביצועים

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

נתחיל עם הקדמה קטנה וחשובה

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

מה זאת אומרת ?

בואו נסתכל על MSSQL או Access למשל

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

אבל מה קורה כשאנחנו עובדים על כלי טרנספורמציה והצגת נתונים כמו SSAS Tabular או Power Bi

לרוב אנו “שולפים” נתונים אגרגטיביים – מסוכמים

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

סבבה, אבל מה ההבדל

אוקי עכשיו אני קופץ לרגע להסבר קצרצר

ישנן 2 שיטות של אחסון הנתונים בDB

1)    על פי שורת Rows Storage Layout

2)    על פי עמודות Columnar Storage Layout

בשביל להמחיש את השיטות ניקח לדוגמה טבלה פשוטה של לקוחות




 

אנו יודעים שהאחסון בDB מתבצע בRAM שבו הנתונים נשמרים בעמודים (Pages)

למשל מנוע פותח עמוד חדש כל 8 קילובייט

אז אם יש לי טבלה שכל שורה בה היא 100 בייט אז ישמרו לי בכל עמוד 80 שורות בצורה הבאה :



בעצם הטבלה מתחלקת לעמודים על פי כמות הזיכרון

שימו לב זו חלוקה של שורות

אם אני רוצה למשוך מידע של לקוח מספר 5 זה מצוין ומהיר

המנוע קופץ ישר לעמוד 2 וסורק רק אותו בשביל למצוא את לקוח 5 (על פי אינדקסים עלייהם אסביר בהמשך)

אך מה היה קורה אם הייתי רוצה סכום של עמודת סכום הרכישות ?

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

אז יש שיטה נוספת של אחסון ושליפה של הנתונים לא בעמודי שורות אלא כעמודות – Columnar Storage

הרעיון דומה אך הביצוע שונה

כל עמודה נשמרת כאובייקט שונה – כעת כשנרצה סכום של עמודה מסוימת המנוע ייגש ישירות אליו ויתעלם משאר העמודות

ובאותה צורה אם נרצה את סכום הרכישות לכל עיר מסוימת המנוע ייפנה רק ל2 עמודות רלוונטיות ולא לשאר העמודות כולן

להמחשה




כשאתם משתמשים בVertipq אתם בעצם משתמשים ב Columnar Databaseשמיישם עקרונות אלו

בVertipq המנוע משתמש באלגוריתמים מיוחדים לכיווץ נתונים ומאפשר סריקה ושליפה מאוד מהירה של הנתונים מתצורה של עמודות – בא לידי ביטוי בחישובים ונוסחאות DAX או MDAX שבהם ישנם מדדים וחישובים מורכבים עם אגרגציות ופילטרים רבים.

================================================================= 

אז נסכם

עכשיו אנו מבינים את ההבדל

נסו להגיד איזו שיטה מתאימה לכם ?

מה אתם עושים ביומיום ? מה הצורך שלכם ?

כתבו לי בתגובות וננסה להבין יחד

Commentaires


bottom of page