ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΗ ΔΕΥΤΕΡΗ ΜΑΘΗΜΑ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΑΚΑΔ. ΕΤΟΣ 2007-2008 14.02.2008 EΠΙΣΤΡΕΦΕΤΑΙ ΔΙΔΑΣΚΩΝ Ιωάννης Βασιλείου, Καθηγητής, Τομέας Πληροφορικής Άσκηση 1. Θεωρήστε τη σχέση R (a, b, c, d) που περιέχει 1.000.000 εγγραφές, και κάθε σελίδα της σχέσης χωρά 10 εγγραφές. Η R είναι οργανωμένη σε αρχείο σωρού (Heap) με πυκνά δευτερεύοντα ευρετήρια, και οι εγγραφές της είναι τυχαία ταξινομημένες. Υποθέστε πως το γνώρισμα a είναι υποψήφιο κλειδί της R, με διάστημα τιμών από 0 έως 999.999. Για κάθε ένα από τα παρακάτω αιτήματα, προσδιορίστε την τεχνική που θα απαιτούσε τις λιγότερες λειτουργίες I/O για την επεξεργασία του ερωτήματος. Ακολουθούν οι τεχνικές που πρέπει να θεωρήσετε: Σάρωση του αρχείου σωρού R. Χρήση ενός ευρετηρίου Β+δέντρου στο γνώρισμα R.a. Χρήση ενός ευρετηρίου κατακερματισμού στο γνώρισμα R.a. Τα αιτήματα είναι: Βρείτε όλες τις πλειάδες της R. Βρείτε όλες τις πλειάδες της R ώστε a<50. Βρείτε όλες τις πλειάδες της R ώστε a=50. Βρείτε όλες τις πλειάδες της R ώστε a>50 και a<100. Έστω h το ύψος του Β+δέντρου (στην περίπτωσή μας θα είναι είτε 2 ή 3), και Μ ο αριθμός των εγγραφών που χωρούν μέσα σε μία σελίδα (μπλόκ) του ευρετηρίου. Το Μ είναι ΜΕΓΑΛΥΤΕΡΟ του 10 (Μ>10). Επίσης υποθέτουμε ότι αφού έχουμε κάνει πρόσβαση σε μια εγγραφή του ευρετηρίου χρειαζόμαστε μια μόνο πρόσβαση στο δίσκο για να πάρουμε την πλήρη εγγραφή (πλειάδα). Με τα παραπάνω: Πράξ ΑΡΧΕΙΟ Β+ δέντρο Ευρετ. Κατακερματισμού η ΣΩΡΟΥ 1 100000 (=10 5 ) h + (10 6 / M) + 10 6 (10 6 / M )+ 10 6 2 100000 h + (50 / M) + 50 100 3 100000 h + 1 2 4 100000 h + (50 / M) + 49 98 Προφανώς από τον παραπάνω πίνακα προκύπτει ότι: 1. Καλύτερη τεχνική είναι το Αρχείο Σωρού 2. Καλύτερη τεχνική είναι το Β+δέντρο 3. Καλύτερη τεχνική είναι το Ευρετήριο Κατακερματισμού 4. Καλύτερη τεχνική είναι το Β+δέντρο 1
Άσκηση 2. Υποθέστε πως μια σελίδα χωρά το πολύ τέσσερις τιμές δεδομένων και πως όλες οι τιμές είναι ακέραιοι. Χρησιμοποιώντας μόνο Β+δέντρα τάξης 2, δώστε παραδείγματα για κάθε ένα από τα παρακάτω: 1. Ένα Β+δέντρο που η εισαγωγή της τιμής 25 αυξάνει το ύψος του από 2 σε 3. Σχεδιάστε τη δομή σας πριν και μετά την εισαγωγή. 2. Ένα Β+δέντρο που η διαγραφή της τιμής 25 προκαλεί ανακατανομή. Σχεδιάστε τη δομή σας πριν και μετά τη διαγραφή. 3. Ένα Β+δέντρο που η διαγραφή της τιμής 25 προκαλεί τη συγχώνευση δύο κόμβων, χωρίς όμως να αλλάζει το ύψος του δέντρου. 4. Μια δομή ISAM (πολυεπίπεδη, δεντρική δομή) με τέσσερις κάδους, κανένας από τους οποίους δεν έχει σελίδα υπερχείλισης. Επιπλέον, κάθε κάδος έχει χώρο για μια μόνο πρόσθετη καταχώριση. Σχεδιάστε τη δομή σας πριν και μετά την εισαγωγή δύο κατάλληλων επιπρόσθετων τιμών, οι οποίες προκαλούν τη δημιουργία μιας σελίδας υπερχείλισης. 1- Δείτε τις Εικόνες 1.1, 1.2 2- Δείτε τις Εικόνες 2.1, 2.2 3- Δείτε τις Εικόνες 3.1, 3.2 4- Δείτε τις Εικόνες 4.1, 4.2 2
Εικόνα 1.1 Εικόνα 1.2 Εικόνα 2.1 Εικόνα 2.2 Εικόνα 3.2 Εικόνα 3.1 3
Άσκηση 3. Θεωρείστε το σύνδεσμο R JΟΙΝ S (natural join), και τις παρακάτω πληροφορίες για τις υπό σύνδεσμο σχέσεις. Η μετρική κόστους είναι το πλήθος των I/O σελίδων εκτός και αν ορίζεται διαφορετικά, και το κόστος εγγραφής του αποτελέσματος στο δίσκο θα αγνοηθεί σε όλες τις περιπτώσεις. Η σχέση R περιέχει 10.000 πλειάδες και έχει 10 πλειάδες ανά σελίδα. Η σχέση S περιέχει 2.000 πλειάδες και έχει επίσης 10 πλειάδες ανά σελίδα. Το γνώρισμα συνδέσμου της σχέσης S είναι το πρωτεύον κλειδί της. Και οι δύο σχέσεις είναι αποθηκευμένες ως απλά αρχεία σωρού. Καμιά σχέση δεν έχει κάποιο ευρετήριο. Υπάρχουν διαθέσιμες 52 σελίδες ενδιάμεσης μνήμης. 1. Ποιο είναι το κόστος συνδέσμου των R και S αν χρησιμοποιηθεί σύνδεσμος ένθετου βρόχου (nested loop join); Ποιος είναι ο ελάχιστος αριθμός σελίδων ενδιάμεσης μνήμης που απαιτείται για να παραμείνει το κόστος αμετάβλητο; 2. Ποιο είναι το κόστος συνδέσμου των R και S αν χρησιμοποιηθεί σύνδεσμος μπλοκ ένθετου βρόχου (block nested loop join); Ποιος είναι ο ελάχιστος αριθμός σελίδων ενδιάμεσης μνήμης που απαιτείται για να παραμείνει το κόστος αμετάβλητο; 3. Ποιο είναι το κόστος συνδέσμου των R και S αν χρησιμοποιηθεί σύνδεσμος με ταξινόμηση συγχώνευση (sort-merge join); Ποιος είναι ο ελάχιστος αριθμός σελίδων ενδιάμεσης μνήμης που απαιτείται για να παραμείνει το κόστος αμετάβλητο; 4. Ποιο είναι το κόστος συνδέσμου των R και S αν χρησιμοποιηθεί σύνδεσμος με κατακερματισμό (hash); Ποιος είναι ο ελάχιστος αριθμός σελίδων ενδιάμεσης μνήμης που απαιτείται για να παραμείνει το κόστος αμετάβλητο; 5. Ποιο είναι το χαμηλότερο δυνατό κόστος I/O για το σύνδεσμο των R και S χρησιμοποιώντας οποιονδήποτε αλγόριθμο, και πόσος χώρος διαθέσιμης μνήμης χρειάζεται για να επιτευχθεί το κόστος αυτό; Εξηγείστε με συντομία. 6. Πόσες πλειάδες θα παραχθούν το πολύ από το σύνδεσμο των R και S, και πόσες σελίδες θα χρειαστούν το πολύ για να γραφεί το αποτέλεσμα στο δίσκο; Έστω Μ=1000 ο αριθμός των σελίδων (μπλόκ) στην R, και Ν=200 ο αριθμός των σελίδων στη S. Tέλος Β = 52 είναι ο αριθμός των διαθέσιμων σελίδων ενδιάμεσης μνήμης (buffer). 1. Διαβάζοντας την κάθε σελίδα της εξωτερικής σχέσης S (μικρότερη), και για κάθε πλειάδα στη σελίδα ελέγχουμε κάθε σελίδα της εσωτερικής σχέσης για πλειάδες που ικανοποιούν τη συνθήκη συνδέσμου (join) έχουμε: ΣΥΝΟΛΙΚΟΚΟΣΤΟΣ = Ν + (Ν*Μ) = 200.200 κόστος αμετάβλητο είναι 3. 2. Διαβάζοντας την εξωτερικής σχέση S (μικρότερη) ΑΝΑ ΣΕΛΙΔΑ, και για κάθε σελίδα ελέγχουμε την εσωτερική σχέση για σελίδες που περιέχουν πλειάδες που ικανοποιούν τη συνθήκη συνδέσμου (join) έχουμε: 4
ΣΥΝΟΛΙΚΟΚΟΣΤΟΣ = Ν + Μ * (Ν/(Β-2)) = 200 + 1000 *(200/(52-2)) = 200 + 1000 *4= 4.200 κόστος αμετάβλητο είναι 52 (για κάθε μικρότερη τιμή του Β από 50, χρειαζόμαστε περισσότερους ελέγχους από 4 περάσματα, ενδεικτικά, με Β=49, ο μεγαλύτερος ακέραιος του (Ν/(Β-2)) είναι 5.) 3. Στην καλύτερη περίπτωση, το κόστος είναι ΣΥΝΟΛΙΚΟΚΟΣΤΟΣ = 3 * (Μ+Ν) = 3,600 κόστος αμετάβλητο είναι 25. Με 25 buffer σελίδες η αρχική ταξινόμηση θα χωρίσει την R σε 20 περάσματα (runs) μεγέθους 50 και θα χωρίσει την S σε 4 περάσματα μεγέθους 50. Αυτά τα 24 περάσματα μπορούν να συγχωνευτούν σε μια φάση (pass) με μια σελίδα να κρατιέται για την έξοδο (output). Με λιγότερες από 25 σελίδες είναι αδύνατο η συγχώνευση να γίνει σε μια φάση (one-way pass). 4. Στην καλύτερη περίπτωση, το κόστος είναι ΣΥΝΟΛΙΚΟΚΟΣΤΟΣ = 3 * (Μ+Ν) = 3,600 κόστος αμετάβλητο είναι δύσκολο να υπολογιστεί ακριβώς μη γνωρίζοντας τη συνάρτηση κατακερματισμού. Μια καλή εκτίμηση είναι ότι χρειάζεται το Β να είναι μεγαλύτερο της τετραγωνικής ρίζας του Ν. 5. Προφανώς το χαμηλότερο δυνατόν κόστος για το σύνδεσμο επιτυγχάνεται όταν κάθε σχέση διαβάζεται μόνο μια φορά. ΣΥΝΟΛΙΚΟΚΟΣΤΟΣ = Μ+Ν = 1,200 κόστος αμετάβλητο είναι Ν + 1 + 1 = 202. 6. Κάθε πλειάδα της R μπορεί να ταιριαστεί το πολύ με 1 πλειάδα της S (το γνώρισμα για το σύνδεσμο είναι υποψήφιο κλειδί). Άρα ο μέγιστος αριθμός των πλειάδων που θα παραχθούν είναι 10,000 (το μέγεθός της R). Θα χρειαστούν το πολύ 2,000 σελίδες για να γραφεί το αποτέλεσμα στο δίσκο. Αυτό προκύπτει θεωρώντας ότι οι πλειάδες του αποτελέσματος έχουν μέγεθος το μέγεθος μιας πλειάδος του R συν το μέγεθος μιας πλειάδος του S (μείον το μέγεθος των κοινών γνωρισμάτων). Δηλαδή μόνο 5 τέτοιες πλειάδες χωρούν σε μια σελίδα, άρα 10,000 / 5 = 2,000 σελίδες. 5