ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα

Σχετικά έγγραφα
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΗ ΔΕΥΤΕΡΗ

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ευρετήρια. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια. Ευρετήρια. Ευρετήρια

Ευρετήρια. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια. Ευρετήρια. Ευρετήρια

Κεφ.11: Ευρετήρια και Κατακερματισμός

Το εσωτερικό ενός Σ Β

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

εντρικά Ευρετήρια έντρα Αναζήτησης

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Δεντρικά Ευρετήρια. Δέντρα Αναζήτησης

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

Φροντιστήριο Αποθήκευση σε δίσκο, βασικές οργανώσεις αρχείων κατακερματισμός και δομές ευρετηρίων για αρχεία

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Ευρετήρια. Το ευρετήριο αρχείου είναι ένα διατεταγµένο αρχείο µε σταθερού µήκους εγγραφές

Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρα 1. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια.

Ευρετήρια. Ευρετήρια. Βάσεις εδοµένων :ευρετήρια 1

Άσκηση 1 (15 μονάδες) (Επεκτατός Κατακερματισμός)

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 6: Δομές ευρετηρίων για αρχεία

Κατακερματισμός (Hashing)

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

Βάσεις Δεδομένων ΙΙ Ενότητα 6

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ευρετήρια. Το ευρετήριο αρχείου είναι ένα διατεταγµένο αρχείο µε σταθερού µήκους εγγραφές

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

Βάσεις Δεδομένων. Αποθήκευση σε δίσκο, βασικές οργανώσεις αρχείων, κατακερματισμός και δομές ευρετηρίων για αρχεία. Φροντιστήριο 7 o

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις

Κεφάλαιο 14. οµές Ευρετηρίων για Αρχεία. ιαφάνεια 14-1

Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια.

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

Αλγόριθμοι Ταξινόμησης Μέρος 4

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Βάσεις Δεδομένων 2. Φροντιστήριο Αλγόριθμοι Επεξεργασίας και Βελτιστοποίησης Επερωτήσεων. Ημερ: 27/5/2008 Ακ.Έτος

Επεξεργασία Ερωτήσεων

Κεφάλαιο 14. Δομές Ευρετηρίων για Αρχεία. Copyright 2007 Ramez Elmasri and Shamkant B. Navathe Ελληνική Έκδοση,

Πίνακες Συμβόλων. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση, Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Αποθήκευση Δεδομένων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Οι πράξεις της συνένωσης. Μ.Χατζόπουλος 1

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

Τα δεδομένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο

Δομές Αναζήτησης. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Δυναμικός Κατακερματισμός

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Οργάνωση Αρχείων. Βάσεις Δεδομένων : Οργάνωση Αρχείων 1. Blobs

Οργάνωση Αρχείων. Βάσεις Δεδομένων : Οργάνωση Αρχείων 1. Blobs

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Βάσεις Δεδομένων ΙΙ Ενότητα 5

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

Διάλεξη 18: B-Δένδρα

Ευρετήρια και Κατακερµατισµός

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Διαφάνεια 16-1

ΗΥ460 Συστήµατα Διαχείρισης Βάσεων Δεδοµένων Χειµερινό Εξάµηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης

Advanced Data Indexing

Προηγμένη Ευρετηρίαση Δεδομένων (ΠΜΣ) Ενδεικτικές ερωτήσεις-θέματα για την εξέταση της θεωρίας

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Κατακερματισμός. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

Μάθημα Βάσεις Δεδομένων ΙΙ - Ασκήσεις Επανάληψης. 01 Εκφώνηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Οργάνωση Αρχείων. Διάγραμμα Σχεσιακού σχήματος. Ευρετήρια. Ταξινομημένα ευρετήρια B + δένδρα Ευρετήρια κατακερματισμού

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Διαχρονικές δομές δεδομένων

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΜΑΘΗΜΑ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΑΚΑΔ. ΕΤΟΣ 2011-12 ΔΙΔΑΣΚΟΝΤΕΣ Ιωάννης Βασιλείου Καθηγητής Τιμολέων Σελλής Καθηγητής Άσκηση 1 [25 μονάδες] ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα (olga@dblab.ece.ntua.gr) Θεωρείστε ότι θέλουμε να διαγράψουμε την τιμή 43 στο Β+ δέντρο της Εικόνας 1. Η διαγραφή αυτή προκαλεί μείωση της πληρότητας του φύλλου που περιέχει τα 42*, 43*, κάτω του 50%. Θεωρείστε τις παρακάτω τρεις επιλογές: (1) Συγχώνευση του φύλλου με τον δεξί αδελφό του. (2) Συγχώνευση του φύλλου με τον αριστερό αδελφό του. (3) Ανακατανομή των εγγραφών του φύλλου με τον δεξί αδελφό του. και απαντήστε στις παρακάτω ερωτήσεις (α) Δώστε τα σωστά Β+-δέντρα που προκύπτουν για κάθε μια από τις επιλογές. (β) (γ) Συγκρίνετε τις διαφορετικές επιλογές από άποψη κόστους. Υπάρχουν περιπτώσεις που θα προτιμούσατε τη μια από την άλλη επιλογή και γιατί. (Υπόδειξη: σκεφτείτε διαφορετικά ποσοστά εισαγωγών και διαγραφών, πχ, τι γίνετε αν έχουμε μόνο διαγραφές τιμών και τι αν έχουμε ίδιο ποσοστό διαγραφών και εισαγωγών). Εικόνα 1. Β+ δέντρο για τις Ασκήσεις 1 και 2. Ο μέγιστος αριθμός δεικτών για τους εσωτερικούς κόμβους είναι 5 και για τα φύλλα 4. Τα φύλλα είναι διπλά διασυνδεδεμένα μεταξύ τους (δε φαίνεται στην εικόνα). Τα Α, Β είναι υπο-δέντρα στα οποία δείχνουν οι αντίστοιχοι δείκτες.

Λύση (α) Περίπτωση 1. Περίπτωση 2.

Περίπτωση 3. (β) Στην περίπτωση 1, πρώτα θα διαβαστούν οι κόμβοι από τη ρίζα ως το φύλλο που περιέχει την τιμή 43. Στη συνέχεια θα διαβαστεί ο δεξιός αδελφός του φύλλου. Έτσι θα έχουμε 4 reads. Θα ενημερωθεί ο κόμβος-αδελφός, καθώς και ο κοινός γονέας τους, και θα έχουμε 2 writes. Συνολικά θα γίνουν 6 I/Os. Αντίστοιχα και στην περίπτωση 2 με τον ίδιο τρόπο θα γίνουν 6 I/Os. Στην περίπτωση 3, θα διαβαστούν οι κόμβοι από τη ρίζα ως το φύλλο που περιέχει την τιμή 43, και ο δεξιός αδελφός του (4 reads) και θα ξαναγραφούν αυτοί οι δύο κόμβοι-φύλλα κάνοντας ανακατανομή των τιμών τους (2 writes). Τέλος, θα ενημερωθεί και ο κόμβος γονέας τους, ώστε τα κλειδιά του να ικανοποιούν τις συνθήκες που πρέπει να ισχύουν στα Β+ δένδρα, δηλαδή η μεσαία τιμή κλειδιού θα διορθωθεί στον γονέα (άλλο 1 write). Συνολικά θα γίνουν 7 I/Os. (γ) Αν περιμένουμε ότι θα γίνουν περισσότερες εισαγωγές στο δένδρο από ότι διαγραφές, θα θέλουμε τα φύλλα να έχουν όσο το δυνατόν περισσότερες κενές θέσεις, ώστε να μην χρειάζεται να γίνονται πολύ συχνά διασπάσεις κόμβων. Έτσι, σε αυτό το σενάριο θα προτιμούσαμε την περίπτωση 3. Αν αντίθετα περιμένουμε ότι θα γίνουν περισσότερες διαγραφές, θα θέλουμε να μένουν όσο το δυνατόν πιο γεμάτα τα φύλλα. Σε αυτή την περίπτωση θα προτιμήσουμε τις περιπτώσεις 1 ή 2 επειδή έχουν λιγότερο κόστος ανά διαγραφή και περιμένουμε πολλές διαγραφές, και επειδή αφήνουν πιο γεμάτα τα φύλλα. Μεταξύ των δύο θα προτιμήσουμε την περίπτωση 1, διότι αφήνει πιο ισορροπημένη την κατανομή των τιμών στα φύλλα. Η περίπτωση 3 έχει ένα I/O περισσότερο από τις δύο πρώτες, όμως οι περιπτώσεις 1 και 2 μειώνουν το πλήθος των κλειδιών του γονέα. Αυτό θα προκαλέσει συγχώνευση του γονέα-κόμβου όταν μείνει μισοάδειος, γεγονός που θα επηρεάσει και τον κόμβο γονέα του. Οι συγχωνεύσεις μπορεί να προωθηθούν αναδρομικά προς τα επάνω ως τη ρίζα, μειώνοντας έτσι το ύψος του δένδρου. Αντίστοιχα μετά από κάποιες εισαγωγές μπορεί να χρειαστεί να γίνει διάσπαση των φύλλων και των κόμβων και να αυξηθεί πάλι το ύψος. Συνεπώς, αν περιμένουμε παρόμοια ποσοστά εισαγωγών και διαγραφών προτιμούμε την περίπτωση 3, για να μην αυξομειώνουμε πολύ συχνά το δένδρο προκαλώντας πολλές λειτουργίες Ι/Ο κάθε φορά.

Άσκηση 2 [15 μονάδες] Θεωρείστε το Β+ δέντρο της Εικόνας 1 και υποθέστε ότι τα φύλλα των υπό-δέντρων Α και Β είναι όσο το δυνατόν πιο άδεια. Υποθέστε επίσης ότι το δέντρο ευρετηριοποιεί μια σχέση R, το πεδίο ευρετηριοποίησης είναι υποψήφιο κλειδί και κλειδί διάταξης για την R και ότι κάθε block της R χωράει 20 εγγραφές της. Δώστε μια εκτίμηση για το πόσες πλειάδες έχει η R. Λύση Θεωρούμε ότι τα υποδένδρα Α και Β έχουν ίδιο ύψος με τα άλλα υποδένδρα που φαίνονται στο σχήμα, επομένως έχουν από 3 έως 5 φύλλα το καθένα. Κάθε τέτοιο φύλλο είναι όσο το δυνατόν πιο άδειο, άρα έχει ακριβώς 2 δείκτες προς εγγραφές της σχέσης. Η R είναι ταξινομημένη ως προς το υποψήφιο κλειδί, επομένως αρκεί κάθε δείκτης του ευρετηρίου να δείχνει στην 1 η εγγραφή κάθε block. Κάθε δείκτης από τα φύλλα αντιστοιχεί σε 1 block της σχέσης. Λαμβάνουμε υπ όψιν μας το σχήμα του δένδρου και το πλήθος κλειδιών που περιέχει και όχι τις ακριβείς τιμές των κλειδιών όπως φαίνονται στο σχήμα. Στα 8 φύλλα όπως φαίνονται στο σχήμα περιέχονται 23 δείκτες προς blocks της σχέσης. Στο υποδένδρο Α θα υπάρχουν από 2*3=6 έως 2*5=10 δείκτες προς τη σχέση. Όμοια και για το Β, άλλοι 6 έως 10 δείκτες. Συνολικά από τα φύλλα του ευρετηρίου υπάρχουν από 23+6+6=35 έως 23+10+10=43 δείκτες προς τη σχέση. Επομένως η R έχει από 35 έως 43 blocks, δηλαδή από 700 έως 860 εγγραφές. Άσκηση 3 [40 μονάδες] Θεωρείστε μια σχέση r με σχήμα R(A, Β, C, D, Ε, F) η οποία έχει 6.000.000 πλειάδες (εγγραφές) και κάθε block (σελίδα) της χωράει 10 εγγραφές. Η σχέση είναι αποθηκευμένη σε ένα αρχείο διατεταγμένο σε αύξουσα διάταξη με πεδίο διάταξης το γνώρισμα Α. Το γνώρισμα Α είναι υποψήφιο κλειδί για τη σχέση και παίρνει τιμές από το 0 έως 5.999.999. Για κάθε μια από τις παρακάτω τέσσερεις ερωτήσεις σε σχεσιακή άλγεβρα Ερώτηση (1) σ Α< 60.000 (r) (2) σ Α = 60.000 (r) (3) σ Α > 60.000 AND A<60.010 (r) (4) σ Α<> 60.000 (r) δώστε το κόστος (σε αριθμό προσπελάσεων σελίδων) για τις παρακάτω τρεις διαφορετικές μεθόδους υπολογισμού τους και πείτε ποια μέθοδος είναι η καλύτερη σε κάθε περίπτωση. Μέθοδος υπολογισμού (i) Προσπέλαση του αρχείου δεδομένων απευθείας (χωρίς χρήση ευρετηρίου). (ii) Χρήση ενός Β+ δέντρου στο γνώρισμα Α. Υποθέστε ότι κάθε εσωτερικός κόμβος έχει μέγιστο αριθμό δεικτών 100 και κάθε φύλλο έχει μέγιστο αριθμό κλειδιών 100.

(iii) Χρήση ευρετηρίου κατακερματισμού στο γνώρισμα Α. Θεωρείστε μη δυναμικό κατακερματισμό (δεν υπάρχουν υπερχειλίσεις). Λύση Η σχέση στο δίσκο είναι αποθηκευμένη σε (6.000.000 / 10) = 600.000 blocks. (i) Χωρίς Ευρετήριο (1) Θα πρέπει να διαβαστούν όλα τα blocks της σχέσης που περιέχουν τις πρώτες 60.000 εγγραφές, με τιμές Α=0 έως 59.999. Δηλαδή τα πρώτα (60.000/10) = 6.000 blocks. Το κόστος είναι 6.000 I/Os. (2) Θα πρέπει να διαβαστούν με τη σειρά όλα τα blocks της σχέσης μέχρι το block που περιέχει την 60.001 η εγγραφή με τιμή Α=60.000. Δηλαδή τα πρώτα (60.001/10) = 6.001 blocks. Το κόστος είναι 6.001 I/Os. (3) Θα πρέπει να διαβαστούν με τη σειρά όλα τα blocks της σχέσης που περιέχουν τις πρώτες 60.010 εγγραφές (η 60.011 η έχει τιμή Α=60.010). Δηλαδή τα πρώτα (60.010/10) = 6.001 blocks. Το κόστος είναι 6.001 I/Os. (4) Θα πρέπει να διαβαστούν όλα τα blocks της σχέσης, επομένως το κόστος είναι 600.000 I/Os. (ii) Με Β+ δένδρο Κάθε φύλλο δείχνει σε (το πολύ) 100 blocks της σχέσης. Επομένως το δένδρο χρειάζεται τουλάχιστον [(600.000 blocks) / (100 blocks/φύλλο)] = 6.000 φύλλα. Το επίπεδο κόμβων πάνω από τα φύλλα πρέπει να είναι τουλάχιστον (6.000 / 100) = 60 ενδιάμεσοι κόμβοι. Στο επάνω επίπεδο αρκεί 1 κόμβος ρίζα να δείχνει τους 60 ενδιάμεσους κόμβους. Επομένως το δένδρο έχει 3 επίπεδα. (1) Θα διαβαστούν τα blocks που ανήκουν στο μονοπάτι από τη ρίζα του δένδρου ως το 1 ο φύλλο που δείχνει στο 1 ο block της σχέσης, και ακολούθως θα διαβαστούν τα πρώτα 6.000 blocks της σχέσης. Συνολικά θα γίνουν 3+6.000 = 6.003 I/Os. (2) Θα διαβαστούν τα blocks που ανήκουν στο μονοπάτι από τη ρίζα του δένδρου ως το φύλλο που δείχνει στο ζητούμενο block της σχέσης, και το block αυτό. Συνολικά θα γίνουν 3+1 = 4 I/Os. (3) Η εγγραφή με τιμή Α=60.001 είναι η 60.002 η στη σχέση και βρίσκεται στο (60.002/10)= 6.001 ο block. Η εγγραφή με Α=60.009 είναι η 60.010 η και βρίσκεται επίσης στο (60.010/10)= 6.001 ο block της σχέσης. Θα διαβαστούν τα 3 blocks που ανήκουν στο μονοπάτι από τη ρίζα του δένδρου ως το φύλλο που δείχνει στο block της σχέσης που περιέχει την 60.002 η εγγραφή και στη συνέχεια θα διαβαστεί το block αυτό, που περιέχει της ζητούμενες εγγραφές. Συνολικά θα γίνουν 3+1 = 4 I/Os.

(4) Θα διαβαστούν τα blocks που ανήκουν στο μονοπάτι από τη ρίζα του δένδρου ως το 1 ο φύλλο που δείχνει στο 1 ο block της σχέσης, και ακολούθως θα διαβαστούν όλα τα 600.000 blocks της σχέσης. Συνολικά θα γίνουν 3+600.000 = 600.003 I/Os. (iii) Με ευρετήριο Hash Από το προηγούμενο ερώτημα έχουμε ότι κάθε block χωράει 100 κλειδιά (και 100 δείκτες). Θεωρούμε ότι οι τιμές του κλειδιού κατανέμονται ομοιόμορφα σε (6.000.000 / 100) = 60.000 κάδους, ώστε να μην έχουμε υπερχείλιση με 1 block/κάδο. Αν η συνάρτηση κατακερματισμού είναι λ.χ. η h(x)= x mod 60.000, τότε: (1) range query: Θα πρέπει να διαβαστούν όλα τα 60.000 blocks ευρετηρίου + 6.000 blocks αρχείου που ικανοποιούν τη συνθήκη. Συνολικά 66.000 I/Os. (2) exact query: Εφόσον δεν υπάρχει υπερχείλιση, θα βρεθεί η εγγραφή μέσω δείκτη από το block του αντίστοιχου κάδου με μόνο 2 I/Os (1 block ευρετηρίου + 1 block αρχείου). (3) range query: Θα πρέπει να διαβαστούν όλα τα blocks ευρετηρίου, άρα 60.000 blocks ευρετηρίου + 1 block αρχείου. Συνολικά 60.001 I/Os. (4) Θα πρέπει να προσπελαστούν όλα τα buckets. 60.000 blocks ευρετηρίου + 600.000 blocks αρχείου. Συνολικά 660.000 I/Os. Αν η συνάρτηση κατακερματισμού είναι λ.χ. η h(x)= x div 60.000, τότε: (1) range query: Θα πρέπει να διαβαστούν τα blocks των πρώτων (60.000/100) = 600 buckets του ευρετηρίου + 6.000 blocks αρχείου που ικανοποιούν τη συνθήκη. Συνολικά 6.600 I/Os. (2) exact query: Εφόσον δεν υπάρχει υπερχείλιση, θα βρεθεί η εγγραφή μέσω δείκτη από το block του αντίστοιχου κάδου με μόνο 2 I/Os (1 block ευρετηρίου + 1 block αρχείου). (3) range query: Θα πρέπει να διαβαστούν τα blocks ευρετηρίου από το (60.000/100) = 600 ο bucket ως το (60.010/100) = 601 ο bucket, άρα 2 blocks ευρετηρίου + 1 block αρχείου. Συνολικά 3 I/Os. (4) Θα πρέπει να προσπελαστούν όλα τα buckets. 60.000 blocks ευρετηρίου + 600.000 blocks αρχείου. Συνολικά 660.000 I/Os. (iii) Με ευρετήριο Hash [b τρόπος] Από το προηγούμενο ερώτημα έχουμε ότι κάθε block χωράει 100 κλειδιά (και 100 δείκτες). Θεωρούμε ότι το ευρετήριο έχει δείκτες προς την 1 η εγγραφή κάθε block και οι αντίστοιχες τιμές του κλειδιού κατανέμονται ομοιόμορφα σε (600.000 / 100) = 6.000 κάδους, ώστε να μην έχουμε υπερχείλιση με 1 block/κάδο.

Αν η συνάρτηση κατακερματισμού είναι λ.χ. η h(x)= x mod 6.000, τότε: (1) range query: Θα πρέπει να διαβαστούν όλα τα 6.000 blocks ευρετηρίου + 6.000 blocks αρχείου που ικανοποιούν τη συνθήκη. Συνολικά 12.000 I/Os. (2) exact query: Εφόσον δεν υπάρχει υπερχείλιση, θα βρεθεί η εγγραφή μέσω δείκτη από το block του αντίστοιχου κάδου με μόνο 2 I/Os (1 block ευρετηρίου + 1 block αρχείου). (3) range query: Θα πρέπει να διαβαστούν όλα τα blocks ευρετηρίου, άρα 6.000 blocks ευρετηρίου + 1 block αρχείου. Συνολικά 6.001 I/Os. (4) Θα πρέπει να προσπελαστούν όλα τα buckets. 6.000 blocks ευρετηρίου + 600.000 blocks αρχείου. Συνολικά 606.000 I/Os. Αν η συνάρτηση κατακερματισμού είναι λ.χ. η h(x)= x div 6.000, τότε: (1) Όπως υπολογίστηκε στο ερώτημα (iii), η 60.000 η εγγραφή βρίσκεται στο 6.000 ο block του αρχείου. Ο δείκτης που δείχνει σε αυτό το block του αρχείου βρίσκεται στο (6.000/100) = 60 ο bucket του ευρετηρίου. Θα πρέπει να διαβαστούν τα blocks των πρώτων 60 buckets ευρετηρίου + 6.000 blocks αρχείου που ικανοποιούν τη συνθήκη. Συνολικά 6.060 I/Os. (2) exact query: Εφόσον δεν υπάρχει υπερχείλιση, θα βρεθεί η εγγραφή μέσω δείκτη από το block του αντίστοιχου κάδου με μόνο 2 I/Os (1 block ευρετηρίου + 1 block αρχείου). (3) Όπως υπολογίστηκε στο ερώτημα (iii), οι εγγραφές από την 60.001 η ως την 60.010 η εγγραφή είναι αποθηκευμένες στο (60.001/10) = 6.001 ο block του αρχείου. Ο δείκτης ευρετηρίου που δείχνει στο 6.001 ο block του αρχείου βρίσκεται στο (6.001/100) = 61 ο bucket ευρετηρίου. Συνολικά θα γίνουν 2 I/Os (1 block ευρετηρίου + 1 block αρχείου). (4) Θα πρέπει να προσπελαστούν όλα τα buckets. 6.000 blocks ευρετηρίου + 600.000 blocks αρχείου. Συνολικά 606.000 I/Os. Άσκηση 4 [20 μονάδες] Έστω ότι έχετε μια σχέση με 100.000 εγγραφές. Επιθυμείτε να κατακερματίσετε τη σχέση σε ένα πίνακα κατακερματισμού με 1.000 κάδους. Ένα μπλοκ δίσκου μπορεί να αποθηκεύσει 100 εγγραφές (μαζί με ένα επιπρόσθετο δείκτη προς ένα μπλοκ υπερχείλισης). Θεωρείστε ότι ένα μπλοκ δίσκου δεν μπορεί να αποθηκεύσει εγγραφές από δύο διαφορετικούς κάδους. (α) (β) (γ) Ποιος είναι ο μέγιστος αριθμός από μπλοκ δίσκου που απαιτούνται για την αποθήκευση της σχέσης; Ποιος είναι ο ελάχιστος αριθμός από μπλοκ δίσκου που απαιτούνται για τη σχέση; Ποια είναι η απάντηση στο ερώτημα (α) αν η σχέση είχε 100.099 εγγραφές;

Λύση (α) Στην χειρότερη περίπτωση αποθηκεύεται 1 εγγραφή/κάδο στους 999 κάδους, και όλες οι υπόλοιπες 100.000-999 = 99.001 εγγραφές αποθηκεύονται όλες σε ένα κάδο. Έτσι για τους 999 κάδους δεσμεύεται από 1 block στον καθένα, που θα περιέχει 1 εγγραφή. Συνολικά 999 blocks. Στον τελευταίο κάδο θα έχουμε υπερχείλιση. Επειδή δεν επιτρέπεται κάποιο block δίσκου να περιέχει εγγραφές από διαφορετικούς κάδους, δεν μπορούμε να έχουμε ανοιχτή διευθυνσιοδότηση, ούτε πολλαπλό κατακερματισμό. Έτσι θα έχουμε αλυσιδωτή σύνδεση με blocks υπερχείλισης στον κάδο αυτό. Για να αποθηκευθούν οι υπόλοιπες εγγραφές θα χρειαστούν (99.001 / 100) = 991 blocks. (990 γεμάτα και 1 με μια εγγραφή). Συνολικά για την αποθήκευση της σχέσης θα χρειαστούν το πολύ 999 + 991 = 1.990 blocks. (β) Στην καλύτερη περίπτωση όλες οι εγγραφές μπορούν να κατανεμηθούν ομοιόμορφα στους 1.000 κάδους, θα έχουμε 100.000 / 1.000 = 100 εγγραφές/κάδο. Άρα, αρκεί 1 block ανά κάδο, που θα είναι γεμάτο με 100 εγγραφές. Συνολικά αρκούν 1.000 blocks (όσα και οι κάδοι). (γ) Ομοίως θα αποθηκευθεί 1 εγγραφή/κάδο σε 999 κάδους, και όλες οι υπόλοιπες 100.099-999 = 99.100 εγγραφές αντιστοιχούν όλες σε ένα κάδο. Για τους 999 κάδους δεσμεύεται από 1 block στον καθένα, που θα περιέχει 1 εγγραφή. Συνολικά 999 blocks. Στον τελευταίο κάδο θα έχουμε υπερχείλιση και θα κάνουμε αλυσιδωτή σύνδεση με blocks υπερχείλισης. Για να αποθηκευθούν οι υπόλοιπες εγγραφές θα χρειαστούν (99.100 / 100) = 991 blocks. (όλα γεμάτα με εγγραφές). Συνολικά για την αποθήκευση της σχέσης θα χρειαστούν και σε αυτή την περίπτωση το πολύ 1.990 blocks.