תרגול 9 אלגברה רלציונית.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

ממיבחניםC שאלות ++.
מבוא למדעי המחשב לתעשייה וניהול
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
Presentation by Dudu Yanay and Elior Malul 1.  מה משותף לכל אלגוריתם המשתמש ב -Bucket Elimination: ◦ נתון מודל הסתברותי ורשת ביסיאנית מתאימה. ◦ נתונה.
מכונת מצבים תרגול מס' 4 Moshe Malka.
אופטימיזציה של שאילתות
מתמטיקה בדידה תרגול 3.
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
תרגול 8 עצי B+ אינדקס משני.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
חישוב ואופטימיזציה של שאילתות חלק 1
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תרגול 7 עצי B
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
A. Frank File Organization Transfer Time/Rate Parameters.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts SQL n מבנה שאילתה n פונקציות צבירה.
Remember Remember The 5 th of November. תרגול 2 קובץ סדרתי.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
עקרון ההכלה וההדחה.
1 חישוב ואופטימיזציה של שאילתות חלק 1 Query Evaluation and Optimization Part 1.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
תרגול 3 RAID. 7/14/20152 עובדה : בעת שכלל החומרה מתקדם בצעדי ענק, התקדמות הדיסקים מבחינת זמן גישה ונפח איטית יותר. פיתרון : לעבוד עם מספר גדול של דיסקים,
1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
Tirgul 12 Trees 1.
מבוא למדעי המחשב סיבוכיות.
אינדקסינג והשינג (indexing & hashing)
SQL בסיסי – הגדרה אינדוקטיבית
עבודה עם נתונים באמצעות ADO.NET
ממשקים - interfaces איך לאפשר "הורשה מרובה".
Marina Kogan Sadetsky –
Based on the lecture notes of Prof. Sagiv
תוכנה 1 תרגול 13 – סיכום.
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

תרגול 9 אלגברה רלציונית

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

הוא שיטה לתאר את הנתונים מבחינה לוגית (ללא תלות במימוש הפיזי שלהם). המודל הרלציוני: הוא שיטה לתאר את הנתונים מבחינה לוגית (ללא תלות במימוש הפיזי שלהם). רלציות (יחסים): הן טבלאות שמרכיבות את מסד הנתונים. כל שורה בטבלה נקראת רשומה (tuple או n-יה). כל עמודה בטבלה נקראת תכונה (attribute), השדות של הרשומה. על רלציות ניתן לבצע שאילתות שהן אוסף של פעולות על יחסים. את השאילתות נציג ע"י אלגברה רלציונית. הערה: רלציה היא רב-קבוצה עם חזרות (bag), אותה רשומה יכולה להופיע מספר פעמים בטבלה (רלציה). 17.04.2017

פעולות על רלציות: פעולות בינריות איחוד : מספר המופעים של שורה באיחוד שווה לסכום המופעים שלה בשני היחסים. חיתוך : מספר המופעים של שורה בחיתוך שווה למינימום של מספר המופעים שלה בשני היחסים. הפרש : מספר המופעים של שורה בהפרש שווה להפרש בין מספר המופעים שלה בשני היחסים. (רק שורות מתוך R). אם לדייק אז זה מספר הפעמים שרשומה מופיע בR פחות מספר הפעמים שהיא מופיע בS. אם המספר קטן מ-1 אז היא אל תופיע תוצאה 17.04.2017

פעולות על רלציות: פעולות בינריות מכפלה : שרשור של כל השורות ב-R עם כל השורות ב-S. join : ב-join של שני היחסים תופיע שורה לכל זוג (r,s) המקיים: r ו- s מסכימים על כל התכונות המשותפות להם. ה-join יכיל רק עמודה אחת לכל תכונה משותפת. 17.04.2017

פעולות אונריות Select : בוחר את כל השורות ב-R המקימות את התנאי c. הטלה (projection): בחירת חלק מהעמודות. מאפשר חישוב תכונות ושינוי שם: לדוגמה, הביטוי יחזיר יחס שיכיל את עמודה a ועמודה חדשה d שתהיה הסכום של העמודות b ו- c ב-R. distinct : הפיכת יחס לקבוצה, משאירה רק שורה אחת מכל סוג. לשים לב לשתי הפעולות שהטלה יכולה לעשות: חישוב, או החלפת שם... 17.04.2017

פעולות שאינן מחזירות יחס חדש max, min, average – מחזירות מספר. 17.04.2017

כתוב את כביטוי המורכב מבחירה, הטלה ומכפלה. שאלה 1 כתוב את כביטוי המורכב מבחירה, הטלה ומכפלה. תשובה: 17.04.2017

לכל חשבון יכול להיות רק בעלים אחד, אך ללקוח יכולים להיות מספר חשבונות. שאלה 2 נתונים היחסים הבאים: - לקוח בבנק. - חשבון בנק. - הפקדה. - משיכה. לכל חשבון יכול להיות רק בעלים אחד, אך ללקוח יכולים להיות מספר חשבונות. 17.04.2017

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

ד. באילו תאריכים בשבועיים האחרונים בוצעו משיכות מחשבון a. ה. עבור לקוח שמס' ת"ז שלו הוא id – מצא את כל ההפקדות שבוצעו לכל אחד מחשבונותיו בשבוע האחרון. עבור כל אחת מהן יש לציין את התאריך, שם הלקוח ומספר החשבון. 17.04.2017

צייר עץ עבור הביטוי שקיבלת בסעיף ה. Depositing Account Client 17.04.2017

מימוש פעולות באלגברה רלציונית תהי R רלציה, נגדיר את הסימונים הבאים: מספר הערכים השונים של התכונה A ביחס R. מספר הבלוקים העומדים לרשותנו בזיכרון הראשי. ניתן (ואף רצוי) לחשוב על בלוק בתור היחידה שבה אנו כותבים וקוראים רלציות. כלומר בלוק הוא מספר הרשומות שאנו יכולים לקרוא ולכתוב בבת אחת ולכן B(R) הוא למעשה מספר הקריאות שיש לבצע לקריאה סדרתית (לדוגמא). 17.04.2017

שיטות למימוש שאילתות רלציוניות: מעבר יחיד קל לבצע פעולות כמו max, min, averageבמעבר יחיד (דורש O(1) זיכרון). פעולות אונריות המחזירות יחס: קל לבצע Select והטלה (דורש O(1) זיכרון). מימוש של במעבר יחיד דורש ש- ייכנס כולו בזיכרון הראשי. פעולות בינאריות על יחסים: קל לבצע איחוד (כותבים לפלט את שני היחסים אחד אחרי השני). כדי לבצע את יתר הפעולות: חיתוך,הפרש, מכפלה ו- join דרוש שלפחות אחד מהיחסים R ו- S (עליהם מתבצעת הפעולה) ייכנס לזיכרון. אנו נסתפק בכך ש כאשר R הוא אחד היחסים, ייכנס לזיכרון, ונניח שאנו מוסיפים מונה לכל רשומה – כמה פעמים היא מופיעה, בלי לתפוס זיכרון נוסף 17.04.2017

אז כדי שהיחס ייכנס בזיכרון נדרוש ש- . הערה:כדי לאפשר קריאה רציפה של הרלציות, נזדקק לשני חוצצי קלט. וכדי לאפשר כתיבה רציפה של הפלט גם כן נשתמש בשני חוצצים (double buffering). אז כדי שהיחס ייכנס בזיכרון נדרוש ש- . היה יותר מדויק לכתוב: תזכורת שתקל עלינו להבין: M הוא בבלוקים. 17.04.2017

דוגמה: (חיתוך במעבר יחיד) א. קרא את כל הרשומות ב- S ושמור בזיכרון הראשי עותק אחד מכל רשומה, ומונה המציין כמה פעמים הרשומה s ב-S (נסמן אותו ב-s.count). ב. קרא את R, ועבור כל רשומה r ב-R, אם קיימת בזיכרון רשומה s=r ו- s.count>0 אז הוצא את r לפלט והורד את s.count באחד. 17.04.2017

יישום עבור join בין יחסים גדולים: מימוש פשטני: לולאות מקוננות יישום עבור join בין יחסים גדולים: מימוש פשטני: עבור כל שורה s ב- S, קרא את s. עבור כל שורה r ב- R, קרא את r. בצע join בין s ו- r. מספר גישות לדיסק: קוראים רשומה רשומה – סדר גודל גישות לדיסק. 17.04.2017

מימוש משופר המנצל את הזיכרון הפנימי: בכל פעם קוראים את החוצצים הבאים של S – סה"כ איטרציות. בכל פעם שממלאים את הזיכרון, קוראים את R בלוק אחרי בלוק ומבצעים join עם כל הרשומות. סה"כ גישות: קריאה של כל R החלפה שלך החלק של S שבזיכרון 17.04.2017

שיטות מבוססות מיון אם ממיינים את היחסים ניתן לבצע במעבר יחיד ( גישות) ו- O(1) זיכרון את הפעולות : , חיתוך ו-join. 17.04.2017

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

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

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

שוב, איך מבצעים ערבול? הרעיון הוא כזה: אנחנו צריכים לערבל, כל פעם ל-K דליים, עד שכל דלי יוכל להיכנס לזיכרון (כלומר עד שכל דלי יהיה בגודל M-4 ומטה). כלומר אם אחרי ערבול ראשון הדלי עדיין גדול מדי, נחלק כל דלי לK דליים וכו'... כמה מעברי ערבול זה אומר? הרצאה על רלציות שקופית 52: ואז עבור כל מעבר שכזה אנחנו צריכים לבצע קראה וכתיבה, ובסוף גם את הפעולה עצמה שזה עוד מעבר, לכן סיבוכיות הזמן היא (שורה אחת מתחת באותו שקף): וככה מתבצע ערבול. הערה חשובה: אנחנו לא צריכים לתת את פונקציית הערבול, לא בעיה שלנו. מניחים שקיימת פונקציית ערבול מתאימה, וסחטיין על מי שהמציא אותה. 17.04.2017

הערה חשובה יותר (ולכן מגיע לה עמוד שלם) הערה חשובה יותר (ולכן מגיע לה עמוד שלם) עליכם להבין שאנחנו נותנים לכם את התנאים שבהם צריכות להתבצע פעולות מסוימות, או לפחות את התנאים לכל דרך לבצע אותם, וזאת החלטה שלכם להחליט מה לבצע ובאיזה סדר. על מה אני מדבר? לדוגמא הדרישה שכל דלי יהיה בגודל M-4 רלוונטית רק אם אנחנו מבצעים קריאה וכתיבה בו זמנית עם שני דיסקים ואז יש צורך בחוצצים כפולים. אם עובדים רק עם דיסק אחד אז אין צורך בחוצצים, ואם לדוגמא אנו רוצים רק לחשב את אז ניתן להסתפק בM-2 כי אין צורך בפלט (זה בהנחה שהפלט הזה נכנס לזיכרון. כלומר: אנו נותנים לכם ארגז כלים ותנאים לשימוש בהם, זאת ההחלטה שלכם איזה כלי להפעיל, באיזו קונפיגוריה ובשילוב עם אילו כלים אחרים. 17.04.2017

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

נשתמש בערבול על Y. מספר הדליים המכסימלי: . נערבל לפי הפונקציה: , ונקבל את הדליים הבאים: כעת נבצע את ה- join על הדליים המתאימים: 1 2 S(X,Y) (a,9),(e,6) (a,4) (a,2),(h,5) R(Y,Z) (6,a) (1,a),(7,e),(7,a) (2,b),(2,b) ,(5,b) 17.04.2017

א. כמה גישות לדיסק היו לנו בדוגמה? תשובה: שאלה: א. כמה גישות לדיסק היו לנו בדוגמה? תשובה: לכן מספר הגישות בשיטת הערבול היה 17.04.2017

ב. כמה גישות היו לנו אם היינו משתמשים בשיטת הלולאות המקוננות? תשובה: שאלה: ב. כמה גישות היו לנו אם היינו משתמשים בשיטת הלולאות המקוננות? תשובה: בשיטת הלולאות המקוננות קוראים בכל איטרציה את הרשומות הבאות של S, ועוברים על כל R. מאחר ש- ו- מס' האיטרציות: נקבל שקוראים פעמיים את R ופעם אחת את S: מסקנה: במקרה המסוים הזה, שיטת הלולאות המקוננות עדיפה! 17.04.2017

אם אז , ולכן ניתן לבצע את ה-join במעבר אחד: B(S)+B(R)=12. שאלה: ג. בכמה גישות היינו יכולים לבצע את ה- join אם גודל הזיכרון היה 10 בלוקים? תשובה: אם אז , ולכן ניתן לבצע את ה-join במעבר אחד: B(S)+B(R)=12. 17.04.2017

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

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

תרגיל: נתון הביטוי "הורד" את פעולות ההטלה כלפי מטה ככל האפשר כאשר L הוא כל אחד מהביטויים הבאים: א. ב.

תרגיל: נתון הביטוי א.L = תשובה: a ו-e אינם משפיעים על המשך החישוב ואינם מופיעים בפלט. אפשר לוותר עליהם. אפשר להחליף את d ב-y=c+d . את ההחלפה b+cx לא ניתן לבצע כי לא נוכל לוותר על b או c, המשתתפים שניהם ב-join.

תרגיל: נתון הביטוי ב. L = תשובה: ניתן להיפטר מ- e לפני ה-join. יתר התכונות נדרשות להמשך. לא ניתן "להוריד" את a+dz כי לפני ה- join התכונות a ו- d נמצאות ביחסים שונים.

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

גזור ושמור למבחן *T(R)

א. מהו הגודל המקסימאלי האפשרי של δ(σE=a(Z)) ? תשובה: תרגיל א. מהו הגודל המקסימאלי האפשרי של δ(σE=a(Z)) ? תשובה: הערך המקסימאלי של T(σE=a(Z)) הוא 451. כי V(Z,E)=50 ולכן יש לפחות 49 רשומות עם ערכי E שונים מ-a ושונים זה מזה. ביחס המתקבל לכל הרשומות אותו E, והן יכולות להיות שונות רק ב-D. יש רק 250 ערכים שונים ל-D. ולכן T(δ(σE=a(Z)))=250 . עבור V(Z,E)=300 הגודל המקסימאלי של T(σE=a(Z)) הוא 201, וזה היה החסם העליון. Z(D,E) Y(B,C,D) X(A,B) 500 400 300 T D:250 E:50 B:40 C:25 D:80 A:10 B:100 V זה מתאר מקרה אחר, לא את השאלה המקורית

ב. נתונים שני ביטויים שקולים. צייר עבור כל אחד מהם עץ ביטוי תרגיל ב. נתונים שני ביטויים שקולים. צייר עבור כל אחד מהם עץ ביטוי הערך את מחיר החישוב של כל עץ וקבע איזה עדיף. 1. 2. Z(D,E) Y(B,C,D) X(A,B) 500 400 300 T D:250 E:50 B:40 C:25 D:80 A:10 B:100 V

תרגיל סה"כ מחיר: 1200+2400=3600 Z(D,E) Y(B,C,D) X(A,B) 500 400 300 T V שימו לב שאנו לא סופרים את הקלט הראשוני שמגיע לשלב הראשון ולא את הפלט הסופי מהשלב האחרון. δ 1200*500/max(80,250) = 2400 300*400/max(100,40) = 1200 X 300 Y 400 Z 500

תרגיל סה"כ מחיר: 150+200+250+200 = 800 Z(D,E) Y(B,C,D) X(A,B) 500 400 300 T D:250 E:50 B:40 C:25 D:80 A:10 B:100 V שימו לב שאנו לא סופרים את הקלט ואת הפלט!!! 200*250/max(80,250) = 200 δ δ δ 150 200 250 X 300 Y 400 Z 500

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

תרגיל Z(D,F) Y(C,D) X(B,C) 4000 900 600 T D:40 C:50 B:50 V F~U[0,1] נתונות הרלציות הנח ש-F הוא מספר ממשי בקטע [0,1] בהתפלגות אחידה. א. הערך את גודל Z(D,F) Y(C,D) X(B,C) 4000 900 600 T D:40 C:50 B:50 V F~U[0,1] D:50 C:100

א. הערך את גודל נסמן )הנחנו שמירת ערכים:(

ב. עומד לרשותנו זיכרון ראשי בגודל 12 בלוקים, בני 20 רשומות כל אחד. ב. עומד לרשותנו זיכרון ראשי בגודל 12 בלוקים, בני 20 רשומות כל אחד. מהי הדרך היעילה ביותר לחשב את R? מהו מספר גישות הדיסק הנחוץ?

הדרך היעילה ביותר היא "להוריד" את ה-select, ולהתחיל מביצוע , כלומר לחשב את הביטוי נעריך את גודל התוצאה: נסמן , אז R1 יתפוס 2 בלוקים. לכן נשמור את התוצאה בזיכרון ולא נכתוב לדיסק. R1 R1 Z

Y Y נבצע join של R1 עם Y במעבר יחיד (כי R1 בזיכרון). השתמשנו בכך ש- נסמן . R1 R2 R1 Y Y

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

Y Y כדי לבצע את השתמשנו בשני חוצצים כדי כדי לבצע את השתמשנו בשני חוצצים כדי לשמור את R1 ושני חוצצי קלט כדי לקרוא את Y. נשארו לנו עוד 8 חוצצים פנויים. נוכל להשתמש בהם כדי לבצע ערבול על R2 , כאשר R2 מועבר ב- pipeline, רשומה אחרי רשומה, מהשלב הקודם. לכן לא נצטרך חוצצי קלט  R1 R20 R1 Y Y

X X לאחר מעבר ערבול אחד, גודל דלי ממוצע של X יהיה חוצצים. נערבל את R2 ואת X ואז נבצע את ה-join . X0 X X

ביצוע ה-join : R1 R2 R R X0 X0 X0 X0 R20 R20 X0 X0 X0 X0 R20 R20

קריאת Z לזיכרון וביצוע select : ביצוע join עם Y: חלוקת התוצאה לדליים: ערבול X (קריאה + כתיבה): ביצוע join בין הדליים של X לדליים של R2: סה"כ (ללא כתיבת תוצאה סופית):