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נניח כלולאה החיצונית.
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
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.הורץ עם שלושה סדרי גודל שונים