The Skyline Operator
-
Upload
konstantinos-giannakis -
Category
Technology
-
view
314 -
download
0
description
Transcript of The Skyline Operator
Ιόνιο Πανεπιςτήμιο Τμήμα Πληροφορικήσ – ΠΜΣ Προχωρημζνα θζματα Βάςεων ΔεδομζνωνΕαρινό Εξάμηνο: 2011 – 2012
The Skyline Operator
Έφη ΑποςτόλουΚων/νοσ ΓιαννάκησΒαρβάρα Γαρνέλη
ΜΑΙΟ 2012
SKYLINE OF HOTELS
Δλδηαθεξόκαζηε γηα έλα
μελνδνρείν πνπ είλαη θνληά
ζηελ παξαιία θαη είλαη θαη
θζελό
Σν Skyline πεξηέρεη ηα
μελνδνρεία πνπ δελ
θπξηαξρνύληαη από θάπνην
άιιν
SKYLINE
Δπηζηξέθεη έλα ζύλνιν από ελδηαθέξνπζεο απαληήζεηο
γηα ηα ραξαθηεξηζηηθά πνπ καο ελδηαθέξνπλ.
Οξίδεηαη από εθείλα ηα ζεκεία πνπ δελ θπξηαξρνύληαη
από άιια
Έλα ζεκείν p θπξηαξρεί ελόο ζεκείνπ q αλ ην p δελ είλαη
ρεηξόηεξν ζε θακία δηάζηαζε από ην q θαη είλαη θαιύηεξν
ζε ηνπιάρηζηνλ κηα
SKYLINE EXERCISE
Example 2: List of restaurant in FoodGuide
• S = Service, F= food, and D=décor. Each
scored from 1-30, with 30 as the best.
• QUESTION: What restaurants are in
the Skyline if we want best for service,
food, decor and be the lowest priced ?
• ANSWER: No restaurant better than all others on every criterion individually
• While no one best restaurant, we want to eliminate restaurants which are worse
on all criteria than some other
RESULT
• Skyline Queryselect * from FoodGuide
skyline of S max, F max, D max, price min
• Can we write an SQL query without using Skyline operator?
Answer: Yes, but cumbersome, expensive to evaluate, huge result set
ΔΠEΚΣΑΗ ΣΗ SELECT (SQL) ΜΔ ΜΙΑ ΠΡΟΑΙΡΔΣΙΚΗ
SKYLINE OF CLAUSE
SELECT... FROM... WHERE...
GROUP BY ... HAVING...
SKYLINE OF [DISTINCT] d1 [MIN | MAX | DIFF]... dm [MIN | MAX | DIFF]
ORDER BY ...
d1, d2, …. , dm είλαη νη δηαζηάζεηο ηνπ skyline
ηα MAX, MIN, DIFF νξίδνπλ ζε πνην ζεκείν ε ηηκή κηαο δηάζηαζεο κεγηζηνπνηείηαη, ειαρηζηνπνηείηαη ή απιά είλαη δηαθνξεηηθή
Η επηινγή distinct θαζνξίδεη πώο λα αληηκεησπίζνπκε επαλαιήςεηο.
Δθηειείηαη κεηά από ην SELECT ... FROM ... WHERE ... GROUP BY ... HAVING... ηνπ query αιιά πξηλ από ην ORDER BY
Δπηιέγεη όιεο ηηο interesting πιεηάδεο, ηηο πιεηάδεο δειαδή πνπ δελ θπξηαξρνύληαη από άιιεο
Αλ ην p θπξηαξρεί ζην q θαη ην q ζην r ηόηε ην p θπξηαξρεί θαη ζην r. Η κεηαβαηηθόηεηα είλαη κηα ζεκαληηθή ηδηόηεηα ηνπ skyline.
ΠΑΡΑΓΔΙΓΜΑΣΑ QUERIES
ΔΦΑΡΜΟΓΉ SKYLINE ΣΔΛΔΣΗ
Δπέθηαζε ελόο ζπζηήκαηνο ΒΓ κε έλα ινγηθό
ηειεζηή πνπ ηνλ αλαθέξνπκε σο skyline ηειεζηή
Ο ηειεζηήο απηόο ελζσκαηώλεη ηελ εθαξκνγή ηνπ
skyline of
Καη εθηειείηαη κεηά από ην scan, ην join θαη ην
group by ηειεζηή θαη πξηλ από ηνλ ηειηθό sort
ηειεζηή, αλ ην query πεξηέρεη order by.
SKYLINE ΣΔΛΔΣΗ ΓΤΟ ΓΙΑΣΑΔΩΝ
Έλαο skyline ηειεζηήο δπν δηαζηάζεσλ κπνξεί λα
ππνινγηζηεί κε ηαμηλόκεζε ησλ δεδνκέλσλ.
Ο έιεγρνο αλ κηα πιεηάδα αλήθεη ζην skyline είλαη
πνιύ εύθνινο: απιή ζύγθξηζε κηαο πιεηάδαο κε ηελ
πξνεγνύκελή ηεο
Η ηαμηλόκεζε ίζσο ρξεηάδεηαη λα γίλεη ζε πάλσ
από 1 πεξάζκαηα γηα λα ρσξάεη ζηελ θύξηα κλήκε
Η ηαμηλόκεζε δελ ιεηηνπξγεί ζε πάλσ από 2
δηαζηάζεηο
BLOCK-NESTED-LOOPS ΑΛΓΌΡΙΘΜΟΙ
BASIC BLOCK-NESTED-LOOPS ΑΛΓΌΡΙΘΜΟ
Γηαβάδεη ζπλέρεηα πιεηάδεο.
Κάζε πιεηάδα p πνπ δηαβάδεηαη από ηελ
είζνδν, ζπγθξίλεηαη κε όιεο ηηο πιεηάδεο ηνπ
παξαζύξνπ θαη κε βάζε ηε ζύγθξηζε ή αθαηξείηαη ή
ηνπνζεηείηαη ζην παξάζπξν ή ζε έλα πξνζσξηλό
αξρείν πνπ ζα ειεγρζεί ζηελ επόκελε εθηέιεζε ηνπ
αιγόξηζκνπ
Ο αιγόξηζκνο δνπιεύεη πνιύ θαιά αλ ην skyline
είλαη κηθξό.
MAINTAINING THE WINDOW AS A SELF-
ORGANIZING LIST
Οξγάλσζε ηνπ παξαζύξνπ ζαλ κηα απηννξγαλνύκελε
ιίζηα
Όηαλ κηα πιεηάδα w ηνπ παξαζύξνπ βξίζθεηαη λα
θπξηαξρεί ζε κηα πιεηάδα (θαη θαηά ζπλέπεηα λα ηελ
αθαηξεί) ηόηε πξνσζείηαη ζηελ αξρή ηνπ παξαζύξνπ
Απηή ε παξαιιαγή είλαη ηδηαίηεξα ρξήζηκε αλ ππάξρνπλ
κεξηθέο killer πιεηάδεο πνπ θπξηαξρνύλ ζε πνιιέο άιιεο
θαζώο θαη έλαο ζεκαληηθόο αξηζκόο από νπδέηεξεο
πιεηάδεο πνπ απνηεινύλ κέξνο ηνπ skyline αιιά δελ
θπξηαξρνύλ ζε άιιεο πιεηάδεο.
REPLACING TUPLES IN THE WINDOW
ηόρνο: λα θξαηήζνπκε ην επηθξαηέζηεξν ζύλνιν
πιεηάδσλ ζην παξάζπξν
Απαξαίηεηε κηα πνιηηηθή αληηθαηάζηαζεο
Δπηπιένλ θόζηε επεμεξγαζίαο γηα ηνλ ππνινγηζκό
ηεο λέαο αληηθαηάζηαζεο
Δίλαη πηζαλό δπν πιεηάδεο λα ζπγθξηζνύλ δπν
θνξέο
DIVIDE AND CONQUER ΑΛΓΌΡΙΘΜΟ
Θεσξεηηθά είλαη ν θαιύηεξνο αιγόξηζκνο γηα ηηο
δύζθνιεο πεξηπηώζεηο αιιά όρη θαη γηα ηηο απιέο
Ο ΒΑΙΚΟ ΑΛΓΟΡΙΘΜΟ
Τπνιόγηζε ην κέζν mp ησλ εηζόδσλ γηα κηα δηάζηαζε dp .
Γηαίξεζε ηελ είζνδν ζε δπν κέξε. Σν p1 πεξηέρεη όιεο ηηο
πιεηάδεο ησλ νπνίσλ νη ηηκέο γηα ην ραξαθηεξηζηηθό dp είλαη
θαιύηεξν από ην mp. Σν p2 πεξηέρεη ηηο ππόινηπεο.
Τπνιόγηζε ηα skylines S1 ηνπ p1 θαη S2 ηνπ p2. Απηό γίλεηαη
αλαδξνκηθά κε ηελ εθαξκνγή νιόθιεξνπ ηνπ αιγόξηζκνπ ζην
p1 θαη ζην p2. Έηζη ηα p1, p2 ρσξίδνληαη θαη πάιη. Ο
αλαδξνκηθόο δηαρσξηζκόο ζηακαηάεη αλ έλα ηκήκα πεξηέρεη
κία ή πνιύ ιίγεο πιεηάδεο.
Τπνιόγηζε όιν ην skyline ζαλ απνηέιεζκα ηεο ζπγρώλεπζεο
ησλ S1 , S2. Απηό ζεκαίλεη αθαίξεζε όισλ ησλ πιεηάδσλ ηνπ
S2 πνπ θπξηαξρνύληαη από κηα πιεηάδα ηνπ S1.
M WAY PARTITIONING
Αλ ε είζνδνο δελ ρσξάεη ζηελ θύξηα κλήκε ηόηε ν βαζηθόο αιγόξηζκνο δίλεη άζρεκα απνηειέζκαηα
Η I/O ζπκπεξηθνξά ηνπ αιγόξηζκνπ κπνξεί εύθνια λα βειηησζεί κε δηαίξεζε ζε ηκήκαηα πνπ ρσξάλε ζηε κλήκε. Γει. αληί γηα ηνλ κέζν πξνζδηνξίδνληαη ηα όξηα ηνπ ηκήκαηνο. Αλ θάπνην ηκήκα δελ ρσξάεη ζηε κλήκε μαλαρσξίδεηαη πάιη:
ηελ αξρή δεκηνπξγνύληαη m ηκήκαηα πνπ ρσξάλε ζηε κλήκε.
Δθαξκόδεηαη ε ζπλάξηεζε ζπγρώλεπζεο ζηα αξρηθά ηκήκαηα θαη έηζη ειαρηζηνπνηείηαη ν όγθνο ησλ δεδνκέλσλ πνπ πξέπεη λα μαλαδηαβαζηνύλ θαη λα μαλααπνζεθεπηνύλ αλάκεζα ζηα δηαθνξεηηθά ζηάδηα ζπγρώλεπζεο.
EARLY SKYLINE
Φόξησζε όζεο πεξηζζόηεξεο πιεηάδεο ρσξάλε ζηε
δηαζέζηκε κλήκε
Δθάξκνζε ηνλ βαζηθό δηαίξεη θαη βαζίιεπε αιγόξηζκν ζηηο
πιεηάδεο κε ζθνπό λα αθαηξέζεηο εθείλεο πνπ
θπξηαξρνύληαη από άιιεο.
Υώξηζε ηηο ππόινηπεο πιεηάδεο ζε m ηκήκαηα
Απαηηείηαη επηπιένλ θόζηνο επεμεξγαζίαο αιιά γίλεηαη
νηθνλνκία ζηελ I/O αθνύ ιηγόηεξεο πιεηάδεο ρξεηάδεηαη λα
γξαθηνύλ θαη λα μαλαδηαβαζηνύλ ζηα βήκαηα
δηαρσξηζκνύ.
πκθέξεη αλ ην skyline είλαη selective, αλ δειαδή ην
απνηέιεζκα ηνπ skyline είλαη κηθξό.
ΆΛΛΟΙ ΑΛΓΌΡΙΘΜΟΙ SKYLINE
B-TREES
Έζησ ινηπόλ όηη έρνπκε 2 ηαμηλνκεκέλνπο δείθηεο.
αξώλνπκε ηαπηόρξνλα θαη ηνπο δύν δείθηεο θαη ζηακαηάκε κόιηο βξνύκε ην πξώην ηαίξηαζκα (h2).
Σν h2 είλαη νξηζηηθά ηκήκα ηνπ skyline
Καλέλα μελνδνρείν πνπ δελ έρεη αθόκα ειεγρζεί δελ απνηειεί κέξνο ηνπ skylineγηαηί θπξηαξρείηαη από ην h2
Μέξνο ηνπ skyline απνηεινύλ αθόκα ηα h1, h17, h25 ελώ ην h3 θπξηαξρείηαη από ην h1.
ΠΑΡΑΣΗΡΗΔΙ
Ο αιγόξηζκνο δίλεη θαιά απνηειέζκαηα αλ ην
skyline πνπ ζα πξνθύςεη είλαη πνιύ κηθξό θαη ην
πξώην ηαίξηαζκα κπνξεί λα βξεζεί πνύ γξήγνξα.
Μπνξεί λα γεληθεπζεί γηα skyline πεξηζζόηεξσλ
δηαζηάζεσλ.
Η δπλαηόηεηα εθαξκνγήο απηνύ ηνπ αιγόξηζκνπ
είλαη πεξηνξηζκέλε αλ πξέπεη λα ππνινγηζηεί ην
απνηέιεζκα ηνπ skyline κε έλα join ή έλα group by.
Η ΥΡΉΗ ΔΝΌ R-TREE
Γηα έλα μελνδνρείν h δελ ρξεηάδεηαη ςάμηκν ζηα θιαδηά
ηνπ R-tree πνπ εγγπεκέλα πεξηέρνπλ κόλν μελνδνρεία
πνπ θπξηαξρνύληαη από ην h.
πλεπώο δηαζρίδνπκε ην R-tree πξώηα ζε βάζνο θαη
θιαδεύνπκε ηα θιαδηά ηνπ R-tree γηα θάζε λέν
μελνδνρείν.
SKYLINE ΚΑΙ TOP N
Σαμηλόκεζε σο πξνο ην θξηηήξην ηνπ Top N
άξσζε ηελ ηαμηλνκεκέλε ιίζηα θαη έιεγμε αλ κηα
πιεηάδα παξνπζηάδεη ελδηαθέξνλ ζπγθξίλνληαο κε όιεο
ηηο πιεηάδεο πνπ έρνπλ ηελ ίδηα ή θαη ρακειόηεξε ηηκή.
ηακάηα κόιηο βξεηο Ν
Ο αιγόξηζκνο κπνξεί λα εθαξκνζηεί αλεμάξηεηα από ηηο
δηαζηάζεηο πνπ ρξεζηκνπνηνύληαη ζηνπο Top N θαη
Skyline ηειεζηέο
Απηή ε πξνζέγγηζε βνεζάεη ηδηαίηεξα ζηελ απνθπγή
ρακέλεο δνπιεηάο γηα ηαμηλόκεζε
ΑΠΟΣΔΛΈΜΑΣΑ ΠΔΙΡΑΜΆΣΩΝ
Σα απνηειέζκαηα ηνπ πεηξάκαηνο δείρλνπλ όηη είλαη θαιή
επηινγή ε εθαξκνγή ζε έλα ζύζηεκα ΒΓ ελόο block-
nested-loops αιγόξηζκνπ γηα ηηο θαιέο πεξηπηώζεηο θαη
ελόο divide-and-conquer αιγόξηζκνπ γηα ηηο δύζθνιεο.
Πην ζπγθεθξηκέλα πξνηείλεηαη ε εθαξκνγή ελόο block-
nested loops αιγόξηζκνπ κε έλα παξάζπξν πνπ είλαη
νξγαλσκέλν σο κηα self-organizing list θαη ελόο divide-
and-conquer αιγόξηζκνπ πνπ πινπνηεί m-way
partitioning θαη “Early Skyline” ππνινγηζκνύο.