תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד...

51
ללללל9 לללללל לללללללל

Post on 21-Dec-2015

307 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

9תרגול

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

Page 2: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM2

מה ראינו עד עכשיו?•כיצד ניתן לממש פעולות בסיסיות במסדי נתונים:•

הוספת רשומה.–גישה לפי מפתח ראשי ומשני.–מעבר על תת-תחום.––...

מה נראה היום?•כיצד ניתן לממש פעולות מורכבות )שאילתות( במסד –

נתונים רלציוני:פעולות בינאריות, כמו אחוד,חיתוך,מכפלה ...•פעולות אונריות, כמו הטלה, בחירה ...•

Page 3: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM3

המודל הרלציוני:הוא שיטה לתאר את הנתונים מבחינה לוגית )ללא תלות

במימוש הפיזי שלהם(.

)יחסים(:רלציותהן טבלאות שמרכיבות את מסד הנתונים.

-יה(.n או tuple )רשומהכל שורה בטבלה נקראת –(, השדות של attribute )תכונהכל עמודה בטבלה נקראת –

הרשומה.

על רלציות ניתן לבצע שאילתות שהן אוסף של פעולות על יחסים.

את השאילתות נציג ע"י אלגברה רלציונית.

(, אותה רשומה bagהערה: רלציה היא רב-קבוצה עם חזרות )יכולה להופיע מספר פעמים בטבלה )רלציה(.

Page 4: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM4

פעולות על רלציות:

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

לסכום המופעים שלה בשני היחסים.

חיתוך : מספר המופעים של שורה בחיתוך שווה למינימום של מספר המופעים שלה בשני היחסים.

הפרש : מספר המופעים של שורה בהפרש שווה להפרש בין מספר המופעים שלה בשני

(.Rהיחסים. )רק שורות מתוך

R S

R S

\R S

פחות מספרRאם לדייק אז זה מספר הפעמים שרשומה מופיע ב אז היא אל תופיע תוצאה1. אם המספר קטן מ-Sהפעמים שהיא מופיע ב

Page 5: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM5

פעולות על רלציות:

פעולות בינריות עם כל Rמכפלה : שרשור של כל השורות ב-

.Sהשורות ב-

join -ב : join של שני היחסים תופיע שורה ( המקיים:r,sלכל זוג )

– –r -ו s.מסכימים על כל התכונות המשותפות להם

יכיל רק עמודה אחת לכל תכונה משותפת.joinה-

R S

R S

,r R s S

Page 6: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM6

פעולות אונריות Select-בוחר את כל השורות ב : R המקימות

.cאת התנאי

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

a יחזיר יחס שיכיל את עמודה ו- b שתהיה הסכום של העמודות dועמודה חדשה

c-ב R.

distinct הפיכת יחס לקבוצה, משאירה רק שורה : אחת מכל סוג.

c R

R

R

, , ,a b c d R a b c

לשים לב לשתי הפעולות שהטלה יכולה לעשות: חישוב, או החלפת שם...

Page 7: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM7

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

Page 8: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM8

1שאלה

כתוב את כביטוי המורכב מבחירה, הטלה ומכפלה.

תשובה:

, . , , . , . . . .a R b b c R d d e R b S b R d S d R S

, , , , ,R a b c d S b d e

Page 9: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM9

2שאלה

נתונים היחסים הבאים: - לקוח בבנק.• - חשבון בנק.• - הפקדה.• - משיכה.•

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

, , ,Client ID Name Address Phone

, _ ,Account ID Account Number Balance

_ , ,Depositing Account Number Date Amount

_ , ,Withdrawal Account Number Date Amount

Page 10: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM10

כתוב ביטוי באלגברת היחסים עבור כל אחת

מהשאילתות הבאות:

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

ב. שם, תעודת זהות ומספר טלפון של כל

הלקוחות שנמצאים במשיכת יתר.

ג. החשבונות שבוצעו מהם רק משיכות ולא

הפקדות.

_ 0Account Number Balance Account

, , 0Name ID Phone Balance Account Client

_ _\Account Number Account NumberWithdrawal Depositing

Page 11: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM11

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

– מצא idה. עבור לקוח שמס' ת"ז שלו הוא את כל ההפקדות שבוצעו לכל אחד

מחשבונותיו בשבוע האחרון. עבור כל אחת מהן יש לציין את התאריך, שם

הלקוח ומספר החשבון.

_ 14Date Account Number a today Date Withdrawal

, , _

7

Date Name Account Number

today Date ID idDepositing Account Client

Page 12: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM12

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

Depositing Account

Client

, , _Date Name Account Number

7today Date ID id

Page 13: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM13

מימוש פעולות באלגברה רלציונית רלציה, נגדיר את הסימונים הבאים:Rתהי

תופסת.R מספר הבלוקים ש- )מספר השורות R מספר הרשומות של

בטבלה(..R מספר הרשומות השונות של

A מספר הערכים השונים של התכונה .Rביחס

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

B R

T R

V R

,V R A

M

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

למעשה מספר הקריאות שיש לבצע לקריאה סדרתית )לדוגמא(.

Page 14: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM14

שיטות למימוש שאילתות רלציוניות:מעבר יחיד

במעבר max, min, averageקל לבצע פעולות כמו • זיכרון(.O(1)יחיד )דורש

Select: קל לבצע פעולות אונריות המחזירות יחס• זיכרון(. מימוש של במעבר O(1)והטלה )דורש

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

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

S ו- R דרוש שלפחות אחד מהיחסים joinו- )עליהם מתבצעת הפעולה( ייכנס לזיכרון.

R

הוא אחד היחסים, ייכנס לזיכרון, ונניח שאנו מוסיפיםRאנו נסתפק בכך ש כאשר מונה לכל רשומה – כמה פעמים היא מופיעה, בלי לתפוס זיכרון נוסף

R

Page 15: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM15

כדי לאפשר קריאה רציפה של הרלציות, הערה:נזדקק לשני חוצצי קלט. וכדי לאפשר כתיבה

רציפה של הפלט גם כן נשתמש בשני (.double bufferingחוצצים )

אז כדי שהיחס ייכנס בזיכרון נדרוש

ש- . 4B R M

היה יותר מדויק לכתוב: 4B R M

הוא בבלוקים.Mתזכורת שתקל עלינו להבין:

Page 16: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM16

)חיתוך במעבר יחיד(דוגמה:

ושמור בזיכרון Sא. קרא את כל הרשומות ב- הראשי עותק אחד מכל רשומה, ומונה

)נסמן S ב-sהמציין כמה פעמים הרשומה (.s.countאותו ב-

, אם R ב-r, ועבור כל רשומה Rב. קרא את אז s.count>0 ו- s=rקיימת בזיכרון רשומה

באחד.s.count לפלט והורד את rהוצא את

Page 17: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM17

לולאות מקוננות

בין יחסים גדולים:joinיישום עבור

מימוש פשטני:

.s, קרא את S ב- sעבור כל שורה

.r, קרא את R ב- rעבור כל שורה

.r ו- s בין joinבצע

מספר גישות לדיסק:

קוראים רשומה רשומה – סדר גודל

גישות לדיסק.

1T S T R

Page 18: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM18

מימוש משופר המנצל את הזיכרון הפנימי:

בכל פעם קוראים את החוצצים •איטרציות.– סה"כ Sהבאים של

בכל פעם שממלאים את הזיכרון, קוראים • עם כל join בלוק אחרי בלוק ומבצעים Rאת

הרשומות. סה"כ גישות:

4

B S

M

4M

( ) ( )( ) 4 ( ) ( )

4 4

B S B SB R M B R B S

M M

Rקריאה של כל החלפה שלך החלק שבזיכרוןSשל

Page 19: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM19

שיטות מבוססות מיוןאם ממיינים את היחסים ניתן לבצע במעבר

זיכרון את O(1) גישות( ו- יחיד ).joinהפעולות : , חיתוך ו-

B R B S

Page 20: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM20

שיטות מבוססות ערבולהרעיון: הערבול מאפשר לרכז את כל •

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

מבצעים חיתוך

אם הדלי נכנס לזיכרון, נוכל לבצע את •הפעולה במעבר יחיד )לאחר החלוקה

לדליים(. בשלב הראשון נחלק כל יחס לדליים. •

נזדקק לשני חוצצים לכל דלי פלט, ועוד זוג –חוצצים לקלט.

Page 21: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:12 PM21

, יקיים kמספר הדליים המכסימלי

אם גודל הקובץ בלוקים, אז גודל כל דלי יהיה בממוצע

כדי שהדלי ייכנס לזיכרון הראשי צריך להתקיים:

מספר גישות לדיסק:

בשלב החלוקה לדליים של שני היחסים

)קריאה וכתיבה של כל הבלוקים(.

.לאחר מכן עוד מעבר יחיד:

. סה"כ

22 2

2

Mk k M

B R 2

2

B R B R

k M

2 2 4B R M M

2 2B R B S

B R B S

3 3B R B S

Page 22: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:13 PM22

הערות:

נשים לב כי בחישוב זה לא נכללת כתיבת התוצאה הסופית, אשר איננה תלויה

באלגוריתם.

עבור קבצים גדולים יותר ניתן לבצע מעבר ערבול נוסף שבו נחלק כל דלי ל-

דליים. 2 2M

Page 23: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

שוב, איך מבצעים ערבול?

דליים, עד שכל דלי יוכל Kהרעיון הוא כזה: אנחנו צריכים לערבל, כל פעם ל-• ומטה(.M-4להיכנס לזיכרון )כלומר עד שכל דלי יהיה בגודל

דליים וכו'...Kכלומר אם אחרי ערבול ראשון הדלי עדיין גדול מדי, נחלק כל דלי ל•: 52כמה מעברי ערבול זה אומר? הרצאה על רלציות שקופית •

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

באותו שקף(:

וככה מתבצע ערבול.•

הערה חשובה: אנחנו לא צריכים לתת את פונקציית הערבול, לא בעיה שלנו.

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

09:42:13 PM23

Page 24: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

הערה חשובה יותר )ולכן מגיע לה עמוד שלם(

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

החלטה שלכם להחליט מה לבצע ובאיזה סדר. על מה אני מדבר? רלוונטית רק אם אנחנו M-4לדוגמא הדרישה שכל דלי יהיה בגודל •

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

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

כלומר: אנו נותנים לכם ארגז כלים ותנאים לשימוש בהם, זאת •ההחלטה שלכם איזה כלי להפעיל, באיזו קונפיגוריה ובשילוב עם אילו

כלים אחרים.

09:42:13 PM24

( )R

Page 25: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:13 PM25

דוגמה

נתונים היחסים:

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

במקרה זה וגם לכן בהנחה שמשתמשים בחוצצים כפולים

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

, , 4 , ,9 , , 2 , ,5 , ,6

, 1, , 2, , 5, , 7, , 6, , 7, , 2,

S X Y a a a h e

R Y Z a b b e a a b

8M

S R

4 6M B R 4 5M B S

Page 26: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:13 PM26

. מספר הדליים Yנשתמש בערבול על המכסימלי: .

נערבל לפי הפונקציה: , ונקבל את הדליים הבאים:

על הדליים המתאימים:joinכעת נבצע את ה-

2 8 23

2 2

Mk

3h x x mod

210

)a,2),(h,5()a,4()a,9),(e,6(S(X,Y)

)2,b),(2,b), (5,b()1,a),(7,e),(7,a()6,a(R(Y,Z)

0 0

1 1

2 2

: ,6,

:

: , 2, , , 2, , ,5,

S R e a

S R

S R a b a b h b

,6, , , 2, , , 2, , ,5,S R e a a b a b h b

Page 27: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:13 PM27

שאלה:

א. כמה גישות לדיסק היו לנו בדוגמה?

תשובה:

לכן מספר הגישות בשיטת הערבול היה

5 , 7B S T S B R T R

3 3 3 7 3 5 36B R B S

Page 28: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:13 PM28

שאלה:

ב. כמה גישות היו לנו אם היינו משתמשים בשיטת הלולאות המקוננות?

תשובה: בשיטת הלולאות המקוננות קוראים בכל איטרציה את

. R, ועוברים על כל Sהרשומות הבאות של

ו- מס' האיטרציות: מאחר ש-

: S ופעם אחת את Rנקבל שקוראים פעמיים את

: במקרה המסוים הזה, שיטת הלולאות המקוננות מסקנהעדיפה!

4M

5 B S 8M 5

24 8 4

B S

M

2 19B R B S

Page 29: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

09:42:13 PM29

שאלה:

אם joinג. בכמה גישות היינו יכולים לבצע את ה- בלוקים?10גודל הזיכרון היה

תשובה:

join , ולכן ניתן לבצע את ה- אזאם

.B(S)+B(R)=12במעבר אחד:

10M 4B S M

Page 30: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

עיבוד שאילתות

פעולות מעבד השאילתות בביצוע שאילתא:

ניתוח תחבירי של השאילתא )הכתובה בשפת 1.(, ותרגומה לעץ ביטוי SQLשאילתות כגון

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

ביצוע אופטימיזציות על עץ הביטוי ההתחלתי, 2.כדי לקבל עץ ביטוי יעיל יותר לחישוב.

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

Page 31: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

אופטימיזציה של ביטויים

בהינתן עץ ביטוי, נרצה לבצע שינויים שלא ישפיעו •על התוצאה הסופית, אך יהפכו את החישובים

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

, מוקדם ככל האפשר, יכול לייעל את σ ו- δ,πכגון ביצוע השאילתה.

לכן נרצה "להוריד למטה" פעולות אלו )לכיוון •העלים בעץ החישוב(.

על יחס שיש לו אינדקס π ו- δ מצד שני ביצוע •יגרום לאובדן האינדקס, מה שעלול לפגוע ביעילות

המשך החישוב.

Page 32: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תרגיל:

נתון הביטוי

"הורד" את פעולות ההטלה כלפי מטה ככל הוא כל אחד מהביטויים Lהאפשר כאשר

הבאים:

א.

ב.

, , , , ,L R a b c S b c d e

,b c x c d y

, ,a b a d z

Page 33: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תרגיל:

נתון הביטוי

= Lא.

:תשובה•a-ו eאינם משפיעים על המשך החישוב ואינם

מופיעים בפלט. אפשר לוותר עליהם.. y=c+d ב-dאפשר להחליף את • לא ניתן לבצע כי לא נוכל b+cxאת ההחלפה •

. joinהמשתתפים שניהם ב-, c או bלוותר על

, , , , ,L R a b c S b c d e

,b c x c d y

, , , ,, , , , ,b c x y b c b c c d yR a b c S b c d e

Page 34: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תרגיל:

נתון הביטוי

= Lב.

:תשובה.join לפני ה-eניתן להיפטר מ- •יתר התכונות נדרשות להמשך. • join כי לפני ה-a+dzלא ניתן "להוריד" את •

נמצאות ביחסים שונים. d ו-aהתכונות

, , , , ,L R a b c S b c d e

, ,a b a d z

, , , ,, , , , ,a b a d z b c dR a b c S b c d e

Page 35: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

בחירת עץ החישוב באמצעות גודל תוצאות הביניים

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

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

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

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

לקבל אומדן בלבד.

Page 36: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

*T(R)

חןב

מ ל

ורמ

שר ו

זוג

Page 37: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תרגיל

?δ(σE=a(Z)) האפשרי של המקסימאליא. מהו הגודל

תשובה:.451 הוא ))T)σE=a)Zהערך המקסימאלי של • E רשומות עם ערכי 49 ולכן יש לפחות V)Z,E(=50כי •

ושונים זה מזה.aשונים מ-, והן יכולות להיות Eביחס המתקבל לכל הרשומות אותו •

.Dשונות רק ב- .T)δ(σE=a(Z)))=250. ולכן D ערכים שונים ל-250יש רק •

הוא ))σE=a)Z(T הגודל המקסימאלי של 300=)V)Z,Eעבור •, וזה היה החסם העליון.201

X(A,B)Y(B,C,D)Z(D,E)

T300400500

VA:10 B:100B:40 C:25 D:80D:250 E:50

זה מתאר מקרה אחר, לא את השאלה המקורית

Page 38: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תרגיל

ב. נתונים שני ביטויים שקולים.

צייר עבור כל אחד מהם עץ ביטוי

הערך את מחיר החישוב של כל עץ וקבע איזה עדיף.

1 .

2.

X(A,B)Y(B,C,D)Z(D,E)

T300400500

VA:10 B:100B:40 C:25 D:80D:250 E:50

ZY X

ZYX

Page 39: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תרגיל

סה"כ מחיר:

1200+2400=3600

X(A,B)Y(B,C,D)Z(D,E)

T300400500

VA:10 B:100B:40 C:25 D:80D:250 E:50

ZY X

X

300

Y

400

Z

500

δ

300*400/max(100,40) = 1200

1200*500/max(80,250) = 2400

שימו לב שאנו לא סופרים אתהקלט הראשוני שמגיע לשלב הראשון

ולא את הפלט הסופי מהשלב האחרון.

Page 40: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תרגיל

סה"כ מחיר:

150+200+250+200 = 800

X(A,B)Y(B,C,D)Z(D,E)

T300400500

VA:10 B:100B:40 C:25 D:80D:250 E:50

X

300

Y

400

Z

500

δ

200*250/max(80,250) = 200

ZYX

δ δ150 200 250

שימו לב שאנו לא סופרים אתהקלט ואת הפלט!!!

Page 41: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תוכנית ביצוע לשאילתא

הפכנו ביטוי לאלגברה רלציונית•ביצענו אופטמיזציות על הביטוי•כעת נקבע את סדר הביצוע של פעולות אסוציאטיביות •

וקומוטטיביות או לבצע –

נבחר אלגוריתם לביצוע כל פעולה•נקבע את האופן שבו יועברו הנתונים משלב לשלב•

כתיבת תוצאות ביניים לדיסק–pipelineהעברה בזיכרון ב- –

נחליט על פעולות נוספות שיש לבצע•מיון רלציות–

ZSR ZSR

Page 42: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

תרגילנתונות הרלציות•

[ בהתפלגות אחידה.0,1 הוא מספר ממשי בקטע ]Fהנח ש-–

א. הערך את גודל

X(B,C)Y(C,D)Z(D,F)

T6009004000

VB:50C:50D:40

VC:100D:50F~U[0,1]

ZYF XR 01.0

Page 43: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

א. הערך את גודל

נסמן

) הנחנו שמירת ערכים:(

ZYF XR 01.0

YXW

5400

100,50max

900600

CY,V,CX,Vmax

YTXTWT

000,432

40,50max

40005400

DZ,V,DW,Vmax

ZTWTZWT

432001.0000,432XTRT 01.0 ZYF

DY,VDW,V

Page 44: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

20 בלוקים, בני 12עומד לרשותנו זיכרון ראשי בגודל ב. רשומות כל אחד.

?Rמהי הדרך היעילה ביותר לחשב את

מהו מספר גישות הדיסק הנחוץ?

Page 45: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

, ולהתחיל selectהדרך היעילה ביותר היא "להוריד" את ה-•מביצוע , כלומר לחשב את הביטוי

נעריך את גודל התוצאה:

בלוקים.2 יתפוס R1 , אז נסמן לכן נשמור את התוצאה בזיכרון ולא נכתוב לדיסק.

ZY F 01.0X

ZF 01.0

ZF 01.01R

4010001.0 ZTZT F

Z

R1

R1

Page 46: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

בזיכרון(.R1 במעבר יחיד )כי Y עם R1 של joinנבצע

השתמשנו בכך ש-

.נסמן 1RR2 Y

DY,VDZ,VDR1,V

720

50

40900

DR1,V,DY,Vmax

R1TYTR1YT

Y

R1

R1

Y

R2

Page 47: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

נשאר לבצע את

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

2RX

3620

7202RB30

20

600XB

Page 48: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

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

.Y ושני חוצצי קלט כדי לקרוא את R1לשמור את

חוצצים פנויים.8נשארו לנו עוד

מועבר R2 , כאשר R2נוכל להשתמש בהם כדי לבצע ערבול על

, רשומה אחרי רשומה, מהשלב הקודם.pipelineב-

לכן לא נצטרך חוצצי קלט

1RR2 Y

824 kk

Y

R1

R1

Y

R20

Page 49: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

יהיה Xלאחר מעבר ערבול אחד, גודל דלי ממוצע של

חוצצים.

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

. join ואז נבצע את ה-X ואת R2נערבל את

84

30

XX

X0

Page 50: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

: joinביצוע ה-

X0

X0

X0

X0

X0

X0

X0

X0

R20

R20

R

R20

R20

ZYR F 01.0X

R1

R2

R

Page 51: תרגול 9 אלגברה רלציונית. 25.06.20152 מה ראינו עד עכשיו ? כיצד ניתן לממש פעולות בסיסיות במסדי נתונים : – הוספת

: select לזיכרון וביצוע Zקריאת

:Y עם joinביצוע

חלוקת התוצאה לדליים:

)קריאה + כתיבה(:Xערבול

:R2 לדליים של X בין הדליים של joinביצוע

סה"כ )ללא כתיבת תוצאה סופית(:

20020

4000ZB

4520

900YB

36R2B

60302XB2

663630R2BXB

40766603645200