28
1 Peter J. Hass Joseph M. Hellerstein IBM Research Division Computer Science Division University of California Presented By: Michal Ozery

1 Peter J. Hass Joseph M. Hellerstein IBM Research Division Computer Science Division University of California Presented By: Michal Ozery

  • View
    217

  • Download
    2

Embed Size (px)

Citation preview

1

Peter J. Hass Joseph M. HellersteinIBM Research Division Computer Science Division

University of California

Presented By: Michal Ozery

2

:Ripple Joinאלגוריתמי

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

COUNT, AVG).., עיבודOnline

3

מוטיבציה:

מערכות תומכות החלטה בסביבהאינטראקטיבית.

.שאילתות על טבלאות גדולות מאוד המטרה לרוב היא לקבל “תמונה גדולה” ולוא

דווקא תשובה מדויקת.

4

רגילים Joinהשוואה בין אלגוריתמי :Ripple Joinלאלגוריתמי

: תוצאה: קירוב סביר לתשובה[X-h, X+h )אינטרוול וודאות( ]

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

הריצה. )הקטנת אינטרוול הוודאות(

מטרה : הקטנת זמן הריצה שלהשאילתא עד לקבלת תשובה

מקורבת.

תוצאה: התשובההמדויקת של ערך

השאילתא. פלט - בסיום

הריצה. מטרה: הקטנת זמן

הריצה הכולל של השאילתא.

Ripple Join Joinרגיל

5

רגילים Joinהשוואה בין אלגוריתמי המשך( )Ripple Joinלאלגוריתמי

- תלוי אינוזמן ריצה בגודל רלציות הבסיס.

אופן החישוב משתנהבאופן אדפטיבי, בהתאם

לתכונות הסטטיסטיות של הנתונים. )תוחלת,

שונות, …(

זמן ריצה - תלוי בגודלרלציות הבסיס.

( אופן החישובplan )נקבע מראש.

Joinרגיל Ripple Join

6

הנחה:

( מעובדים בסדר tupplesאיברי הרלציות )אקראי :

איברים מסוימים Kההסתברות לבחור רלציות שווה ל-Kמתוך

||

1

1 iK R

התפלגות )אחידה(

7

אלגוריתמים קודמים:

.Nested Loopsאלגוריתם

(COUNT)דוגמא לחישוב

for I1 = 1 to |R1|

for I2 = 1 to |R2|

….

for IK = 1 to |RK|

sum += Join_Condition)R1]I1[, ... RK]IK[(

- מעדכנים את התוצאה ואת R1לאחר כל דגימה מ- אינטרוול הוודאות.

8

: Nested Loopsחסרונות השימוש ב- )א(

בכל שלב דגימה צריך לסרוק את כל R >== הזמן בין העדכונים עלול להיות ארוך!

ייתכן כי אורך האינטרוול לא יקטן “מספיק” בכלשלב דגימה .

Joinדוגמא: אם הפונקציה שמחושבת על ה-. Sמושפעת בעיקר מאברי

יבחר S|. בד”כ R| > |S| שתי רלציות. R, Sנניח כלולאה החיצונית.

9

: Nested Loopsחסרונות השימוש ב- )ב(

10

Ripple Join:”הגרסה ה”קלאסית -

R -ו S .שתי רלציות

ומחשבים את ערך R וגם מ-Sבכל שלב דוגמים גם מ- השאילתא עם כל הדגימות הקודמות.

==< אופן סריקת המכפלה הקרטזית הוא כ”גלים ריבועיים”.

(Rectangles of Increasing Perimeter Lengthפירוש שני: )

11

יחסי דגימה שונים: חידוש עיקרי במאמר - קצבי דגימה שונים יספקו אורך

אינטרוול קטן יותר! )מתכנסים מהר יותר לתוצאה(

. יתאים יחס דגימה Riלכל רלציה

||1 ii R i

אלגוריתם Nested Loops :מקיים ,.i > 1 לכל

11

|| ii R

יהיה Ri שלבים - סך כל הדגימות מרלציה nלאחר .

in

12

:Ripple Joinווריאציות של

Block Ripple Join יחידות הדגימה הן בלוקים ולא :(.I/Oאיברים בודדים. )חסכון ב-

Hash Ripple Join כל הערכים שדגמנו עד כה - (equi-join בזיכרון. )Hashנשמרים בטבלאות

Index Ripple Join -אם ב :Ri יש אינדקס על - מאפשר סריקה של כל הטבלה Joinתכונות ה-

בזמן קצר יחסית. ==< נבחר . .(Index עם Nested Loops)שקול ל-

|| ii R

13

אינטרוול וודאות

קונסרבטיבי - מכיל אתX >= בהסתברותp.“Large Sample מכיל את - ”X ~ בהסתברות

p( מבוסס על משפט הגבול המרכזי .Central Limit Theorem .)

14

אינטרוול וודאות - המשך

CLT אם ישנם -n אזי התפלגות שווי התפלגות ב”ת משתנים סכומם מתכנסת להתפלגות נורמלית.

(1,0)~ Nn

nESn

n

in XS1

ושונות Eב”ת בעלי תוחלת Xiכלומר, אם 2

אזי - נגדיר :

1()2(|)|

xxn

nESP n

ומתקיים:

15

Ripple Join עבור COUNT( )א

RRRf כלהלן נגדיר פונקציה 21:

0

||{('',') 21 RR

ttf

אם מתקיים תנאי ה-

Join.

אחרת.

ומההתפלגות האחידה של f. מהגדרת X = fנגדיר משתנה מקרי XEE()המרחב נובע ש- הוא תוצאת השאילתא. f

ע”י חישוב Efבסיום כל שלב דגימה אנו ננסה לקרב את .Tnהתוחלת על המדגם שבידינו. נקרא לקירוב זה

16

Ripple Join עבור COUNT( )ב

n

i

n

jjin ttf

nBT

'

1

''

12

('',')()

1

'','

גודל בלוק

יחסי דגימה

'''B

מכאן:

pzzETn

Pn

zETP pp

f

fnfpfn

1()2(|

())|(|)|

n

z fpn

נגדיר:

Ef מתפלג נורמלית עם תוחלת Tnמשפט:

ושונות )נגדיר את בהמשך.(

n

f2

f

17

Ripple Join עבור COUNT( )ג

. Tnנותר רק למצוא את השונות של ''

(2,)

'

(1,)2

ff

f

כאשר הוא השונות של המ”מ )תוחלת מותנה(

(,) kf(/) kk tfEX

בעיה: כדי לחשב את עלינו לעבור על כל ה- Join.

(,) kfפתרון: נקרב את ע”י חישוב השונות של

הערכים:(,) kf

(,,)(,...,,,) ()()1 ()

k

nnk

n kvkfTvkfT

(/)(,,) ()() ki

kkin vtfEvkfT - ביחס Eכאשר

לנתוני הדגימות עד

כה

18

Ripple Join עבור COUNT( )ד

את ניתן Rkלעדכן בכל שלב דגימה כאשר דוגמים מהרלציה

איבר חדש.

(/)(,,) ()() ki

kkin vtfEvkfT

כמה זה עולה לנו?

() 1 KK nBO =I/Oסיבוכיות

(()_*) nsizeoutputKO

לכל רלציה צריך לשמור את ערכי סיבוכיות מקום =(. לכן סה”כ:0 ==< נשמור אותם בצורה דלילה )רק אלו ששונים מ-

(,,) ()kin vkfT

19

Ripple Join:עבור פונקציות אחרות

('',')*('',')('',') ttfttvalttg

SUM זהה לחישוב - COUNT החלפת >= f-ב

AVG הקירוב הוא . - f

g

E

E

fE

gEh

()

()()

()

fT

gTY

n

nn

משפט: מתפלג נורמלית עם תוחלת ושונות

2

22(1,1)2 2

f

ffgg

nE

f

g

E

E ()

()

fT

gT

n

n

20

קביעת יחסי הדגימה )א(

המשתמש בוחר קצב עדכון =< צריך למצוא יחסי דגימה שיתנו אינטרוול קצר ביותר תחת ההגבלה של עמידה בקצב העדכון

שנבחר. ()1קצב עדכון מקסימלי . קצב עדכון מינימלי i

||() ii R

n

z fpn

''

(2,)

'

(1,)2

ff

f

השפעה על גודל אינטרוול הוודאות )יחס דגימה גדול =< אינטרוול קצר(

השפעה על קצב עדכון )מספר פעולותI/O )יחס דגימה גדול =< קצב עדכון איטי(() 1 KK nBO

21

קביעת יחסי הדגימה )ב(

למעשה לפנינו בעיית אופטימיזציה:

''

(2,)

'

(1,)2

ff

f מצא מינימום ל-

תחת האילוצים הבאים:

||

1

()

()

1

ii

K

R

qcB

שלם, ()i qהמשתמש בוחר ערך )מינימום 0בין

1עדכונים( ל- )מקסימום עדכונים(

1(1)(

||)() Kq

Ki

K

hRqc

22

קביעת יחסי הדגימה )ג(

מכיוון שערך הקירוב ל- מתעדכן בכל שלב ==< יחסי הדגימה האופטימליים ישתנו אף הם

==< אופן חישוב השאילתא אדפטיבי ביחס לתכונות הסטטיסטיות של הנתונים.

''

(2,)

'

(1,)2

ff

f

)!( יש ל”סנכרן” את מלבן הדגימה )השלמה לכפולות המתאימות(:

(6,4)Re

2

3'',2'

c

n

(7,7)Re

7

1'',1'

c

n

23

ביצועים:

בסיס נתוניםPostgreSQL . : שתי טבלאותstudent( 60,300 - רשומה לכל תלמיד )

enroll רשומה לכל השתתפות תלמיד בקורס - (1,547,606)

SELECT student.honors_code, AVG)last.grade(FROM enroll, studentWHERE enroll.sid = student.sidGROUP BY student.honors_code

24

השוואת קצב התכנסות האינטרוול

שניות !446 רץ כ- Optimizerהאלגוריתם שנבחר ע”י ה-

25

קצב עדכון תוצאות.

26

קביעת סדרי דגימה מתאימים )א(.

SELECT ONLINE AVG)later.grade(

FROM enroll first, enroll later

WHERE first.sid = later.sid

AND first.crseid = later.crseid

AND later.passfail = ‘t’

AND first.year > later.year

Hash Ripple Join.הורץ עם שלושה סדרי גודל שונים

27

קביעת סדרי דגימה מתאימים )ב(.

25 בחר רץ כ- Optimizerהאלגוריתם שה- דקות!

28

סוף דבר.

:Ripple Joinsסקרנו משפחת אלגוריתמים בשם

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

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

עדכון התשובות(