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

Σχετικά έγγραφα
Δυναμικός Κατακερματισμός

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

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

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

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

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

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

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

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

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

Ευρετήρια. Βάσεις Δεδομένων. Διδάσκων: Μαρία Χαλκίδη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ. Επίπεδα Αφαίρεσης Σ Β. Αποθήκευση Εγγραφών - Ευρετήρια. ρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, Επίπεδο Όψεων.

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων

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

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

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

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

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

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

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

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

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

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

Διάλεξη 14: Δέντρα IV - B-Δένδρα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

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

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

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

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

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

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

Έλεγχος Ταυτοχρονισμού

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

R-Trees, kd-trees, QuadTrees. Εαρινό Εξάμηνο Τμήμα Μηχανικών Η/Υ και Πληροϕορικής Πολυτεχνική Σχολή, Πανεπιστήμιο Πατρών

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

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

Advanced Data Indexing

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

Διδάσκων: Κωνσταντίνος Κώστα

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

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

Δομές Δεδομένων. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

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

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

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

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Εξωτερική Ταξινόμηση. Μ.Χατζόπουλος 1

Διδάσκων: Παναγιώτης Ανδρέου

Advanced Data Indexing

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

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 7: Αλγόριθμοι για επεξεργασία ερωτήσεων και βελτιστοποίηση

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing)

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Transcript:

Κεφ.11: Ευρετήρια και Κατακερματισμός Database System Concepts, 6 th Ed. See www.db-book.com for conditions on re-use

Κεφ. 11: Ευρετήρια-Βασική θεωρία Μηχανισμοί ευρετηρίου χρησιμοποιούνται για την επιτάχυνση της πρόσβασης στα επιθυμητά δεδομένα. Π.χ., κατάλογος συγγραφέων στη βιβλιοθήκη Κλειδί αναζήτησης -χαρακτηριστικό ή σύνολο χαρακτηριστικών που χρησιμοποιούνται για την αναζήτηση πλειάδων σε ένα αρχείο. Ένα αρχείο Ευρετηρίου αποτελείται από εγγραφές (index entries) της μορφής Κλειδί-αναζήτησης Τα αρχεία ευρετηρίου είναι συνήθως πολύ μικρότερα από το αρχικό αρχείο (ίσως μπορούμε να τα κρατήσουμε στην κύρια μνήμη) Δύο βασικοί τύποι ευρετηρίου: δείκτης Διατεταγμένα ευρετήρια: τα κλειδιά αποθηκεύονται σε ταξινομημένη σειρά Ευρετήρια κατακερματισμού: τα κλειδιά κατανέμονται ομοιόμορφα σε υποδοχές ( buckets ) μέσω συνάρτησης hash. 11.2

Μετρικές αξιολόγησης ευρετηρίου Τύποι πρόσβασης που υποστηρίζονται αποτελεσματικά. Π.χ., Εγγραφές με μια καθορισμένη τιμή στο χαρακτηριστικό ή εγγραφές με μια τιμή χαρακτηριστικού που εμπίπτει σε ένα συγκεκριμένο εύρος τιμών. Χρόνος πρόσβασης Χρόνος εισαγωγής Χρόνος διαγραφής Κόστος σε χώρο 11.3

Διατεταγμένα (ή ταξινομημένα) Ευρετήρια Σε ένα ταξινομημένο ευρετήριο, οι καταχωρίσεις ευρετηρίου αποθηκεύονται ταξινομημένες στην τιμή κλειδιού αναζήτησης. Π.χ., κατάλογος συγγραφέων στη βιβλιοθήκη. Πρωτεύον ευρετήριο(primary index): σε ένα σειριακά ταξινομημένο αρχείο, το ευρετήριο του οποίου το κλειδί αναζήτησης καθορίζει τη σειριακή σειρά του αρχείου Ονομάζεται και clustering index (ευρετήριο συμπλέγματος) Το κλειδί αναζήτησης ενός πρωτεύοντος ευρετηρίου είναι συνήθως - αλλά όχι απαραίτητα - το πρωτεύον κλειδί. Δευτερεύον Ευρετήριο: ένα ευρετήριο του οποίου το κλειδί αναζήτησης καθορίζει μια σειρά διαφορετική από τη σειριακή σειρά που ακολουθεί το αρχείο. Αναφέρεται και ως non-clustering index. Αρχείο σειριακού ευρετηρίου (Index-sequential file): ταξινομημένο σειριακό αρχείο με πρωτεύον ευρετήριο. 11.4

Πυκνό ευρετήριο Dense index Η εγγραφή ευρετηρίου εμφανίζεται για κάθε τιμή κλειδιού αναζήτησης στο αρχείο. Π.χ. Ευρετήριο στο ID της instructor 11.5

Πυκνό ευρετήριο Πυκνό ευρετήριο στο dept_name, με το αρχείο instructor ταξινομημένο κατά το dept_name 11.6

Αραιό Ευρετήριο Sparse Index: Περιέχει εγγραφές ευρετηρίου μόνο για κάποιες τιμές του κλειδιού αναζήτησης. Ισχύει όταν οι εγγραφές είναι σειριακά ταξινομημένες ως προς το κλειδί αναζήτησης Για να εντοπίσουμε μια εγγραφή με τιμή κλειδιού αναζήτησης K: Βρίσκουμε την εγγραφή ευρετηρίου με τη μεγαλύτερη τιμή κλειδιού <=K Αναζητούμε στο αρχείο σειριακά ξεκινώντας από την εγγραφή που δείχνει ο δείκτης 11.7

Αραιό Ευρετήριο Σε σύγκριση με τα πυκνά ευρετήρια: Λιγότερος χώρος και λιγότερα έξοδα συντήρησης για εισαγωγές και διαγραφές. Γενικά βραδύτερο από τα πυκνά για εντοπισμό εγγραφών. Καλός συμβιβασμός: αραιό ευρετήριο με μια εγγραφή για κάθε block του αρχείου, που αντιστοιχεί στη μικρότερη τιμή κλειδιού αναζήτησης στο block. 11.8

Παράδειγμα δευτερεύοντος ευρετηρίου 2 ον ευρετήριο στη στήλη salary της σχέσης instructor Η εγγραφή του ευρετηρίου οδηγεί σε έναν κάδο (bucket) που περιέχει δείκτες σε όλες τις πραγματικές εγγραφές με τη συγκεκριμένη τιμή κλειδιού αναζήτησης. Οι δευτερεύοντες δείκτες πρέπει να είναι πυκνοί 11.9

Πρωτεύοντα και Δευτερεύοντα Ευρετήρια Τα ευρετήρια προσφέρουν σημαντικά οφέλη κατά την αναζήτηση αρχείων. ΑΛΛΑ: Η ενημέρωσή τους επιβάλλει γενικά την τροποποίηση της βάσης δεδομένων - όταν τροποποιηθεί ένα αρχείο, πρέπει να ενημερωθεί κάθε ευρετήριο του αρχείου. Η συνεχόμενη σάρωση με πρωτεύον ευρετήριο είναι αποτελεσματική, αλλά μια συνεχόμενη σάρωση χρησιμοποιώντας δευτερεύον ευρετήριο είναι δαπανηρή Κάθε πρόσβαση εγγραφής μπορεί να ανακτά ένα νέο μπλοκ από το δίσκο. Η ανάκτηση ενός μπλοκ απαιτεί περίπου 5 έως 10 χιλιοστά του δευτερολέπτου, έναντι περίπου 100 νανοδευτερόλεπτα για πρόσβαση στη μνήμη 11.10

Πολυεπίπεδα Ευρετήρια Εάν το πρωτεύον ευρετήριο δεν χωράει στη μνήμη, η πρόσβαση καθίσταται δαπανηρή. Λύση: θεωρούμε το πρωτεύον ευρετήριο που διατηρείται στο δίσκο ως ένα σειριακό αρχείο και κατασκευάζουμε ένα αραιό ευρετήριο σε αυτό. Εξωτερικό ευρετήριο - ένα αραιό ευρετήριο για το πρωτεύον ευρετήριο Εσωτερικό ευρετήριο το αρχείο του πρωτεύοντος ευρετηρίου Εάν και το εξωτερικό ευρετήριο είναι πολύ μεγάλο για να χωρέσει στην κύρια μνήμη, μπορεί να δημιουργηθεί ένα άλλο επίπεδο ευρετηρίου, κ.ο.κ. Τα ευρετήρια σε όλα τα επίπεδα πρέπει να ενημερώνονται κατά την εισαγωγή ή τη διαγραφή από το αρχείο. 11.11

Πολυεπίπεδα ευρετήρια 11.12

Ενημέρωση ευρετηρίου: Διαγραφή Εάν η διαγραμμένη εγγραφή ήταν η μοναδική στο αρχείο με την τιμή κλειδιού αναζήτησης, το κλειδί αναζήτησης διαγράφεται και από το ευρετήριο. Διαγραφή καταχώρησης ευρετηρίου σε ένα επίπεδο: Πυκνά ευρετήρια - η διαγραφή του κλειδιού αναζήτησης είναι παρόμοια με τη διαγραφή εγγραφής αρχείου. Αραιά εάν υπάρχει καταχώρηση για το κλειδί αναζήτησης στο ευρετήριο, διαγράφεται αντικαθιστώντας την καταχώρηση στο ευρετήριο με την επόμενη τιμή του κλειδιού αναζήτησης στο αρχείο Εάν η επόμενη τιμή κλειδιού αναζήτησης έχει ήδη μια καταχώρηση ευρετηρίου, η καταχώρηση διαγράφεται αντί να αντικατασταθεί. 11.13

Ενημέρωση ευρετηρίου: Εισαγωγή Εισαγωγή σε μονοεπίπεδο ευρετήριο: Πραγματοποιούμε μια αναζήτηση χρησιμοποιώντας την τιμή του κλειδιού αναζήτησης που εμφανίζεται στην εγγραφή που εισάγουμε. Πυκνά ευρετήρια εάν η τιμή κλειδιού αναζήτησης δεν εμφανίζεται στο ευρετήριο, την εισάγουμε. Αραιά αν το ευρετήριο αποθηκεύει μια καταχώρηση για κάθε μπλοκ του αρχείου, δεν χρειάζεται να γίνει καμία αλλαγή στο ευρετήριο αν δεν δημιουργηθεί νέο μπλοκ. Εάν δημιουργηθεί ένα νέο μπλοκ, η πρώτη τιμή κλειδιού αναζήτησης που εμφανίζεται στο νέο μπλοκ εισάγεται στο ευρετήριο. Εισαγωγή και διαγραφή σε πολυεπίπεδα ευρετήρια: οι αλγόριθμοι είναι απλές επεκτάσεις των αλγορίθμων ενός επιπέδου 11.14

Δευτερεύοντα ευρετήρια Συχνά, κάποιος θέλει να βρει όλες τις εγγραφές των οποίων οι τιμές σε ένα συγκεκριμένο πεδίο (που δεν είναι το κλειδί αναζήτησης του κύριου ευρετηρίου) ικανοποιούν κάποια συνθήκη. Παράδειγμα 1: στη σχέση instructor αποθηκευμένη σειριακά με το ID, ίσως να θέλουμε να βρούμε όλους τους εκπαιδευτές σε ένα συγκεκριμένο τμήμα Παράδειγμα 2: όπως παραπάνω, αλλά όπου θέλουμε να βρούμε όλους τους εκπαιδευτές με συγκεκριμένο μισθό ή με μισθό σε συγκεκριμένο εύρος τιμών Μπορούμε να έχουμε ένα δευτερεύον ευρετήριο με μια εγγραφή ευρετηρίου για κάθε τιμή κλειδιού αναζήτησης 11.15

Αρχεία δεικτοδότησης B + -Δέντρων Τα ευρετήρια B + -δέντρων είναι η εναλλακτική στα σειριακά ευρετήρια Μειονέκτημα των σειριακών ευρετηρίων η απόδοση υποβαθμίζεται καθώς αυξάνεται το αρχείο, καθώς δημιουργούνται πολλά μπλοκ υπερχείλισης. Απαιτείται περιοδική αναδιοργάνωση ολόκληρου του αρχείου. Πλεονεκτήμα αρχείων ευρετηρίου B + -tree: αυτόματα αναδιοργανώνεται με μικρές, τοπικές, αλλαγές ενόψει εισαγωγών και διαγραφών. Δεν απαιτείται αναδιοργάνωση ολόκληρου του αρχείου για τη διατήρηση της απόδοσης. (μικρό) μειονέκτημα των B + -δέντρων: επιπλέον έξοδα εισαγωγής και διαγραφής, χώρου Τα πλεονεκτήματα των B + -trees είναι περισσότερα 11.16

Παράδειγμα ενός B + -Δέντρου 11.17

B + -Δέντρα Ένα B+ δέντρο είναι ένα δέντρο με ρίζα που ικανοποιεί τις ακόλουθες ιδιότητες: Όλα τα μονοπάτια από τη ρίζα σε φύλλο έχουν το ίδιο μήκος Κάθε κόμβος που δεν είναι ρίζα ή φύλλο έχει μεταξύ n/2 και n παιδιά. Ένα φύλλο έχει μεταξύ (n 1)/2 και n 1 τιμές Ειδικές περιπτώσεις: Εάν η ρίζα δεν είναι φύλλο, έχει τουλάχιστον 2 παιδιά. Εάν η ρίζα είναι φύλλο (δηλαδή, δεν υπάρχουν άλλοι κόμβοι στο δέντρο), μπορεί να έχει μεταξύ 0 και (n-1) τιμές 11.18

Δομή κόμβου B + -Δέντρου Τυπικός κόμβος K i είναι οι τιμές του κλειδιού αναζήτησης P i είναι δείκτες σε παιδιά (για κόμβους μη-φύλλα) ή δείκτες σε εγγραφές ή κάδους εγγραφών (για κόμβους φύλλων). Τα κλειδιά αναζήτησης σε έναν κόμβο είναι διατεταγμένα K 1 < K 2 < K 3 <... < K n 1 (Αρχικά υποθέτουμε χωρίς διπλότυπα κλειδιά, αργότερα το αντιμετωπίζουμε) 11.19

Φύλλα σε B + -Trees Ιδιότητες ενός κόμβου φύλλου: Για i = 1, 2,..., n 1, ο δείκτης P i δείχνει σε μια εγγραφή αρχείου με τιμή κλειδιού αναζήτησης K i, Αν L i, L j είναι φύλλα και i < j, τότε οι τιμές του L i είναι μικρότερες ή ίσες από τις τιμές του L j Ο δείκτης P n δείχνει στο επόμενο φύλλο κατά σειρά κλειδιού 11.20

Κόμβοι μη-φύλλα σε B + -Trees Οι κόμβοι μη φύλλων σχηματίζουν ένα αραιό πολυ-επίπεδο ευρετήριο στους κόμβους των φύλλων. Για έναν κόμβο που δεν είναι φύλλο με m δείκτες: Όλα τα κλειδιά αναζήτησης στο υποδέντρο στο οποίο δείχνει ο P 1 είναι μικρότερα από K 1 Για 2 i n 1, όλα τα κλειδιά αναζήτησης στο υποδέντρο που δείχνει ο P i έχουν τιμές μεγαλύτερες ή ίσες με K i 1 και μικρότερες από K i Όλα τα κλειδιά αναζήτησης στο υποδέντρο στο οποίο δείχνει ο P n έχουν τιμές μεγαλύτερες ή ίσες με K n 1 11.21

Παράδειγμα B + -tree για το αρχείο instructor (n = 6) Οι κόμβοι φύλλων πρέπει να έχουν μεταξύ 3 και 5 τιμές ( (n 1)/2 και n 1, με n = 6). Οι κόμβοι μη-φύλλα, εκτός από ρίζα, πρέπει να έχουν μεταξύ 3 και 6 παιδιά ( (n/2 και n, με n =6). Η ρίζα πρέπει να έχει τουλάχιστον 2 παιδιά. 11.22

Παρατηρήσεις σχετικά με τα B + -trees Δεδομένου ότι οι συνδέσεις μεταξύ κόμβων γίνονται με δείκτες, τα "λογικά" κοντινά μπλοκ δεν χρειάζεται να είναι και κοντά στο φυσικό μέσο. Τα επίπεδα μη φύλλων του B + -δέντρου σχηματίζουν μια ιεραρχία αραιών δεικτών. Το B + -tree περιέχει σχετικά μικρό αριθμό επιπέδων Το επίπεδο κατώ από τη ρίζα έχει τουλάχιστον 2* n/2 τιμές Το επόμενο επίπεδο έχει τουλάχιστον 2* n/2 * n/2 τιμές, κλπ Αν υπάρχουν K τιμές κλειδιού αναζήτησης στο αρχείο, το ύψος δεν είναι μεγαλύτερο από log n/2 (K) Άρα αποδοτικές αναζητήσεις. Εισαγωγές και διαγραφές γίνονται σε λογαριθμικό χρόνο 11.23

Ερωτήματα σε B + -Trees Βρείτε την εγγραφή με την τιμή κλειδιού αναζήτησης V. 1. C=root 2. Ενόσω το C δεν είναι φύλλο { 1. Έστω i η μικρότερη τιμή ώστε V K i. 2. Αν δεν υπάρχει τέτοια, C = τελευταίος non-null pointer στο C 3. Αλλιώς{ αν (V= K i ) C = P i +1 αλλιώς C = P i } } 3. Έστω i η μικρότερη τιμή ώστε K i = V 4. Αν υπάρχει τέτοια τιμή i, ακολουθούμε τον δείκτη P i στη σωστή εγγραφή. 5. Αλλιώς δεν υπάρχει εγγραφή με τιμή κλειδιού V 11.24

Διπλότυπα Με διπλότυπα κλειδιά αναζήτησης: Και στα φύλλα και στους εσωτερικούς κόμβους, Δεν μπορούμε να εγγυηθούμε ότι K 1 < K 2 < K 3 <... < K n 1 Αλλα μπορούμε ότι K 1 K 2 K 3... K n 1 Τα κλειδιά στο υποδέντρο που δείχνει ο P i είναι K i,, αλλά όχι απαραίτητα < K i, 11.25

Αντιμετώπιση Διπλοτύπων Τροποποιούμε τη διαδικασία εύρεσης ως εξής Διασχίζουμε τον P i ακόμη και αν V = K i Μόλις φτάσουμε σε ένα φύλλο C, ελέγχουμε εάν το C έχει μόνο τιμές κλειδιού μικρότερες από V Αν ναι, θέτουμε C = δεξί αδερφό του C πριν ελέγξουμε αν το C περιέχει το V Συνάρτηση printall Χρησιμοποιεί την τροποποιημένη διαδικασία εύρεσης για να βρει την πρώτη εμφάνιση του V Διασχίζουμε διαδοχικά φύλλα για όλες τις εμφανίσεις του V ** Errata note: modified find procedure missing in first printing of 6 th edition 11.26

Ερωτήματα σε B + -Trees Αν υπάρχουν K τιμές κλειδιού αναζήτησης στο αρχείο, το ύψος δεν είναι μεγαλύτερο από log n/2 (K) Ο κόμβος είναι γενικά όσο ένα disk block, τυπική τιμή 4 kilobytes Το n συνήθως γύρω στο 100 (40 bytes ανά εγγραφή ευρετηρίου). Με 1 εκατ. κλειδιά αναζήτησης και n = 100 Το πολύ log 50 (1,000,000) = πρόσβαση σε 4 κόμβους σε μια αναζήτηση. Σε αντιδιαστολή με ένα ισοζυγισμένο δυαδικό δέντρο με 1 εκατ. τιμές περίπου 20 κόμβοι ανά αναζήτηση η παραπάνω διαφορά είναι σημαντική καθώς κάθε πρόσβαση κόμβου μπορεί να χρειαστεί I/O στο δίσκο, κοστίζοντας περίπου 20msec 11.27

Ενημερώσεις σε B + -Trees: Εισαγωγή 1. Βρείτε το φύλλο στο οποίο θα εμφανιστεί η τιμή του κλειδιού αναζήτησης 2. Εάν η τιμή κλειδιού υπάρχει ήδη στο φύλλο 1. Προσθέτουμε την εγγραφή στο αρχείο 2. Αν χρειαστεί προσθέτουμε ένα δείκτη στον κάδο. 3. Εάν δεν υπάρχει η τιμή του κλειδιού αναζήτησης, τότε 1. προσθέστε την εγγραφή στο κύριο αρχείο (και δημιουργήστε έναν κάδο, αν είναι απαραίτητο) 2. Εάν υπάρχει χώρος στο φύλλο, εισάγετε (κλειδί-τιμή, δείκτης) στο φύλλο 3. Διαφορετικά, διαιρέστε τον κόμβο (μαζί με τη νέα καταχώρηση (τιμή-κλειδί, δείκτης)) όπως αναλύεται στην επόμενη διαφάνεια. 11.28

Ενημερώσεις σε B + -Trees: Εισαγωγή Διαίρεση κόμβου φύλλων: πάρτε τα n ζεύγη (τιμή κλειδιού, δείκτη) συμπεριλαμβανομένης της εισαγόμενης με ταξινομημένη σειρά. Τοποθετήστε τα πρώτα n/2 στον αρχικό κόμβο και τα υπόλοιπα σε έναν νέο κόμβο. Έστω ο νέος κόμβος είναι ο p, και k το μικρότερο κλειδί στον p. Εισαγάγετε (k, p) στον πατέρα του κόμβου που χωρίζεται Αν ο γονέας είναι γεμάτος, διαιρέστε τον και μεταδώστε τη διαίρεση αναδρομικά προς τα πάνω. Ο διαχωρισμός των κόμβων προχωράει προς τα πάνω μέχρι να βρεθεί ένας κόμβος που δεν είναι γεμάτος. Στη χειρότερη περίπτωση η ρίζα μπορεί να χωριστεί αυξάνοντας το ύψος του δέντρου κατά 1. Αποτέλεσμα διάσπασης του κόμβου που περιέχει Brandt, Califieri και Crick με την εισαγωγή του Adams Επόμενο βήμα: Εισάγουμε την καταχώρηση (Califieri, pointer-to-new-node) στο γονιό 11.29

B + -Tree εισαγωγή B + -Tree πριν και μετά την εισαγωγή του Adams 11.30

B + -Tree εισαγωγή B + -Tree πριν και μετά την εισαγωγή του Lamport 11.31