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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Υλοποίηση των Σχεσιακών Τελεστών. 6/16/2009 Μ.Χατζόπουλος 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

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

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

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

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

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

Κεφάλαιο 13. Αποθήκευση σε Δίσκους, Βασικές Δομές Αρχείων, και Κατακερματισμός

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

Advanced Data Indexing

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

9. Φυσική Οργάνωση Αρχείων στο Δίσκο & Ευρετήρια

Ενδεικτικές Ερωτήσεις Θεωρίας

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

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

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

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Transcript:

Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-1

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

Θα μιλήσουμε για Τύποι Ταξινομημένων Ευρετηρίων ενός επιπέδου Πρωτεύοντα Ευρετήρια Ευρετήρια Συστάδες Δευτερεύοντα Ευρετήρια Ευρετήρια Πολλών Επιπέδων Δυναμικά Ευρετήρια Πολλών Επιπέδων με χρήση B-Δένδρων και B+-Δένδρων Ευρετήρια σε Πολλαπλά Κλειδιά Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-3

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

Μετρικές Αποτίμησης των Ευρετηρίων Οι τύποι προσπελάσεων που υποστηρίζονται αποτελεσματικά. Π.χ., εγγραφές με συγκεκριμένη τιμή στο πεδίο Ή εγγραφές με τιμή πεδίου σε συγκεκριμένο διάστημα τιμών. Χρόνος Προσπέλασης Χρόνος εισαγωγής Χρόνος Διαγραφής Επιπλέον απαιτούμενος χώρος Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-5

Ευρετήρια σαν Μέθοδοι Προσπέλασης Ένα ευρετήριο ενός επιπέδου είναι ένα βοηθητικό αρχείο που κάνει πιο αποτελεσματική την αναζήτηση μιας εγγραφής σε ένα αρχείο δεδομένων. Το ευρετήριο συνήθως ορίζεται σε ένα πεδίο του αρχείου (αν και μπορεί να ορισθεί σε πολλά πεδία) Μια μορφή ευρετηρίου είναι ένα αρχείο με καταχωρήσεις <τιμή πεδίου, δείκτης στην εγγραφή>, που είναι ταξινομημένο με τιμή πεδίου Το ευρετήριο λέγεται δρόμος προσπέλασης στο πεδίο. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-6

Ευρετήρια σαν Μέθοδοι Προσπέλασης(συν.) Το αρχείο του ευρετηρίου συνήθως καταλαμβάνει σημαντικά μικρότερο πλήθος μπλοκ από ότι το αρχείο δεδομένων επειδή οι καταχωρήσεις του είναι κατά πολύ μικρότερες Μια δυαδική αναζήτηση στο ευρετήριο παράγει ένα δείκτη στην εγγραφή του αρχείου Τα ευρετήρια μπορούν επίσης να χαρακτηρισθούν σαν πυκνά ή αραιά Ένα πυκνό ευρετήριο έχει μια καταχώρηση ευρετηρίου για κάθε αναζήτηση τιμής κλειδιού (και επομένως κάθε εγγραφή) στο αρχείο δεδομένων. Ένα αραιό (ή μη πυκνό) ευρετήριο, από την άλλη, έχει καταχωρήσεις ευρετηρίου μόνο για κάποιες από τις τιμές αναζήτησης. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-7

Ευρετήρια σαν Μέθοδοι Προσπέλασης(συν.) Παράδειγμα: Έστω το αρχείο δεδομένων ΕΡΓΑΖΟΜΕΝΟΣ(ΟΝΟΜΑ, ΑΡ_ΤΑΥΤ, ΔΙΕΥΘΥΝΣΗ, ΕΡΓΑΣΙΑ, ΜΙΣΘΟΣ,... ) Υποθέστε ότι: μέγεθος εγγραφής R=150 bytes μέγεθος μπλοκ B=512 bytes r=30000 εγγραφές Τότε, έχουμε: παράγοντας ομαδοποίησης Bfr= B div R= 512 div 150= 3 εγγραφές/μπλοκ πλήθος μπλοκ αρχείου b= (r/bfr)= (30000/3)= 10000 μπλοκ Για ένα ευρετήριο στο πεδίο ΑΡ_ΤΑΥΤ, υποθέστε μέγεθος πεδίου V ΑρΤΑΥΤ =9 bytes, υποθέστε μέγεθος δείκτη εγγραφής P R =7 bytes. Τότε: μέγεθος καταχώρησης ευρετηρίου R I =(V SSN + P R )=(9+7)=16 bytes παράγοντας ομαδοποίησης ευρετηρίου Bfr I = B div R I = 512 div 16= 32 κατχ/μπλοκ πλήθος μπλοκ ευρετηρίου b= (r/ Bfr I )= (30000/32)= 938 μπλοκ η δυαδική αναζήτηση απαιτεί log 2 bi= log 2 938= 10 μπλοκ προσπελάσεις Σε σχέση με το κόστος της μέσης γραμμικής αναζήτησης που είναι: (b/2)= 10000/2= 5000 μπλοκ προσπελάσεις Αν οι εγγραφές του αρχείου είναι ταξινομημένες, η δυαδική αναζήτηση θα ήταν: log 2 b= log 2 10000= 14 μπλοκ προσπελάσεις Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-8

Τα ευρετήρια ορίζονται σε ένα ή περισσότερα πεδία που ονομάζονται πεδίο(α) ή γνώρισμα(τα) ευρετηριοποίησης. Πρωτεύον Ευρετήριο Ευρετήριο Συστάδων Δευτερεύον Ευρετήριο Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-9

Τύποι Ευρετηρίων ενός Επιπέδου Πρωτεύον Ευρετήριο Ορίζεται σε ένα ταξινομημένο αρχείο δεδομένων Το αρχείο δεδομένων είναι ταξινομημένο σε ένα πεδίο κλειδί Περιλαμβάνει μια καταχώρηση ευρετηρίου για κάθε μπλοκ στο αρχείο δεδομένων η καταχώρηση ευρετηρίου έχει την τιμή του πεδίου κλειδιού για την πρώτη εγγραφή στο μπλοκ, που ονομάζεται άγκυρα του μπλοκ Ένα παρόμοιο σχήμα μπορεί να χρησιμοποιεί την τελευταία εγγραφή σε ένα μπλοκ. Ένα πρωτεύον ευρετήριο είναι ένα μη πυκνό (αραιό) ευρετήριο, αφού έχει μ ια καταχώρηση για κάθε μπλοκ του αρχείου δεδομένων στο δίσκο και στα κλειδιά των εγγραφών άγκυρα παρά για κάθε τιμή αναζήτησης. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-10

Πρωτεύον ευρετήριο στο πεδίο κλειδί ταξινόμησης Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-11

ΑΡ_ΚΥΚΛ ΜΑΡΚΑ ΜΟΝΤΕΛΟ Ευρετήριο AAA1212 BBA1212 ΑΑΑ1212 FIAT PUNTO AAB2343 FORD ESCORT BAA2356 OPEL ASTRA BBΑ2112 FIAT STYLO BBB2343 FORD MONDEO EAA2256 CITROEN SAXO YEA1412 YEΑ1412 FIAT PUNTO YYZ5667 SEAT IBIZA XXB2468 OPEL OMEGA Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-12

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

Ένα παράδειγμα ευρετηρίου συστάδας Ένα ευρετήριο συστάδα στο πεδίο ταξινόμησης ΚΩΔ_ΤΜΗΜ που δεν είναι κλειδί στο αρχείο ΕΡΓΑΖΟΜΕΝΟΣ. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-14

ΑΡ_ΤΑΥΤ ΑΡΚΥΚΛ ΠΟΣΟΣΤ_ΙΔ Ευρετήριο A122122 Α122156 Β345345 Α122122 Α122122 Α122122 Α122156 Α122156 Β345345 Β345345 Β345345 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-15

ΑΡ_ΤΑΥΤ ΑΡΚΥΚΛ ΠΟΣΟΣΤ_ΙΔ Ευρετήριο A122122 Α122156 Α122122 Α122122 Α122122 Α122156 Α122156 Α122156 δείκτης μπλοκ null δείκτης μπλοκ Α122156 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-16

Ένα ακόμη παράδειγμα ευρετηρίου συστάδας Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-17

Τύποι Ευρετηρίων ενός Επιπέδου Δευτερεύον Ευρετήριο Ένα δευτερεύον ευρετήριο υποστηρίζει ένα δευτερεύοντα τρόπο προσπέλασης ενός αρχείου για το οποίο υπάρχει ήδη πρωτεύουσα οργάνωση. Το δευτερεύον ευρετήριο μπορεί να είναι σε ένα πεδίο που είναι υποψήφιο κλειδί και έχει μοναδική τιμή σε κάθε εγγραφή, ή ένα πεδίο που δεν είναι κλειδί με διπλές τιμές. Το ευρετήριο είναι ένα ταξινομημένο αρχείο με δύο πεδία. Το πρώτο πεδίο είναι ίδιου τύπου δεδομένων με κάποιο πεδίο που δεν είναι κλειδί του αρχείου δεδομένων και είναι το πεδίο ευρετηρίου. Το δεύτερο πεδίο είναι ή δείκτης μπλοκ ή δείκτης εγγραφής. Μπορεί να υπάρχουν πολλά δευτερεύοντα ευρετήρια (και επομένως, πεδία ευρετηρίασης) για το ίδιο αρχείο. Περιλαμβάνει μια καταχώρηση για κάθε εγγραφή στο αρχείο δεδομένων επομένως, είναι ένα πυκνό ευρετήριο. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-18

Παράδειγμα ενός Πυκνού Πρωτεύοντος Ευρετηρίου Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-19

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

Αρχεία Πυκνών Ευρετηρίων (συν.) πυκνό ευρετήριο στο ονομ_τμημ με ταξινόμηση του αρχείου στο ονομ_τμημ Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-21

Αραιά αρχεία ευρετηρίων Αραιό Ευρετήριο: περιέχει καταχωρήσεις εγγραφών ευρετηρίου μόνο για μερικές τιμές του κλειδιού αναζήτησης. Εφαρμόζεται όταν οι εγγραφές είναι διατεταγμένες σειριακά στο κλειδί αναζήτησης Για τον εντοπισμό μιας εγγραφής με τιμή κλειδιού αναζήτησης K: Βρίσκουμε την εγγραφή ευρετηρίου με τη μεγαλύτερη τιμή κλειδιού αναζήτησης < K Σειριακή αναζήτηση αρχίζοντας από την εγγραφή που δείχνει η εγγραφή ευρετηρίου Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-22

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

Ένα Παράδειγμα Δευτερεύοντος Ευρετηρίου Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-24

Ιδιότητες Τύπων Ευρετηρίων Τύπος Ευρετηρίου Πλήθος Καταχωρήσεων του Ευρετηρίου (Πρώτου Επιπέδου) Πυκνό η Μη Πυκνό Άγκυρες μπλοκ στο Αρχείο Δεδομένων Πρωτεύον Ευρετήριο Πλήθος μπλοκ του αρχείου δεδομένων Μη πυκνό Ναι Ευρετήριο Συστάδων πλήθος διαφορετικών τιμών του πεδίου Μη Πυκνό Ναι/όχι α ευρετηρίασης Δευτερεύον Ευρετήριο πάνω σε πεδίο-κλειδί Πλήθος εγγραφών αρχείου δεδομένων Πυκνό όχι Δευτερεύον Ευρετήριο πάνω σε πεδίο-μη κλειδί Πλήθος εγγραφών β η πλήθος διαφορετικών τιμών του πεδίου ευρετηριοποίησης γ Πυκνό ή μη πυκνό όχι Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-25

Ευρετήρια Πολλών Επιπέδων Επειδή ένα ευρετήριο ενός επιπέδου είναι ένα ταξινομημένο αρχείο, μπορούμε να δημιουργήσουμε ένα πρωτεύον ευρετήριο στο ίδιο το ευρετήριο Στην περίπτωση αυτή, το αρχικό αρχείο ευρετηρίου ονομάζεται πρώτο επίπεδο ευρετηρίου και το ευρετήριο του ευρετηρίου ονομάζεται δεύτερο επίπεδο ευρετηρίου. Μπορούμε να επαναλάβουμε τη διαδικασία αυτή, δημιουργώντας ένα τρίτο, τέταρτο... επίπεδο, μέχρι που όλες οι καταχωρήσεις στο ψηλότερο επίπεδο να χωράνε σε ένα μπλοκ μνήμης. Ένα ευρετήριο πολλών επιπέδων μπορεί να δημιουργηθεί οποιοδήποτε τύπο ευρετηρίου πρώτου επιπέδου (πρωτεύον, δευτερεύον, συστάδα) όσο το πρώτο επίπεδο ευρετηρίου αποτελείται από περισσότερα από ένα μπλοκ δίσκου Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-26

Πρωτεύον Ευρετήριο δύο επιπέδων Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-27

Ευρετήριο πολλών επιπέδων Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-28

Ευρετήρια Πολλών Επιπέδων Ένα τέτοιο ευρετήριο πολλών επιπέδων είναι μια μορφή δένδρου αναζήτησης Ωστόσο, η εισαγωγή και η διαγραφή καταχωρήσεων στο ευρετήριο αποτελεί σοβαρό πρόβλημα επειδή κάθε επίπεδο του ευρετηρίου είναι ένα ταξινομημένο αρχείο. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-29

Δομή Ευρετηρίου Καταχωρήσεις Ευρετηρίου Εγγραφές Αρχείου σε συστάδα Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-30

Δομή Ευρετηρίου Καταχωρήσεις Ευρετηρίου Εγγραφές Αρχείου δενδρικό ευρετήριο χωρίς συστάδα Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-31

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

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

Παράδειγμα Δευτερευόντων Ευρετηρίων πρωτεύον κλειδί Η εγγραφή ευρετηρίου δείχνει σε ένα κάδο που περιέχει δείκτες σε όλες τις εγγραφές με αυτήν την τιμή κλειδιού αναζήτησης Τα δευτερεύοντα ευρετήρια πρέπει να είναι πυκνά δευτερεύον κλειδί Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-34

Μπορούμε να κατασκευάσουμε ευρετήρια σε δευτερεύοντα πεδία. Στην περίπτωση αυτή έχουμε διαφορετικούς τρόπους υλοποίησης Πυκνό ευρετήριο. Μια καταχώρηση για κάθε εγγραφή. Μεταβλητού μήκους εγγραφές που για κάθε τιμή του πεδίου περιέχουν μια λίστα από διευθύνσεις. Χρησιμοποίηση ενδιάμεσου επιπέδου ευρετηρίου (που χρησιμοποιείται και πιο συχνά). Υπάρχει μια καταχώρηση για κάθε διαφορετική τιμή του πεδίου με δείκτη σε δεύτερο επίπεδο που υπάρχει μια λίστα από διευθύνσεις Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-35

Τιμή_Πεδίου Διευθ_Μπλοκ Ξεχωριστή καταχώρηση για κάθε εγγραφή Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-36

Επαναλαμβανόμενο πεδίο με τις διευθύνσεις Τιμή_Πεδίου Διευθύνσεις_Μπλοκ Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-37

Μπλοκ με Δείκτες εγγραφών Αρχείο Δεδομένων Τιμή Πεδίο 1 2 Δείκτης Μπλοκ Χρήση Ενδιάμεσου Επιπέδου Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-38

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

Ένας κόμβος σε ένα δένδρο αναζήτησης με δείκτες στα υποδένρα του Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-40

Ένα δένδρο αναζήτησης τάξεως p = 3. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-41

ISAM αρχεία (Indexed Sequential Access Method) Δημιουργούμε ένα δεύτερο αρχείο με μια εγγραφή για κάθε σελίδα του αρχικού αρχείου, της μορφής <πρώτο κλειδί στη σελίδα, δείκτης στη σελίδα> ταξινομημένο προς το κλειδί Το ζευγάρι <key, pointer> αναφέρονται σαν καταχώρηση. Κάθε κλειδί στο ευρετήριο αποτελεί διαχωριστή για τα περιεχόμενα των σελίδων που δείχνουν οι δείκτες. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-42

Πολυεπίπεδα Ευρετήρια 1 μπλοκ Στη μνήμη 1-1000000 100 μπλοκ 1-10000 10001-20000 999001-1000000 10000 μπλοκ 1-100 101-200 9999901-10000000 1-10 11-20 21-30 9999991-10000000 Αρχείο δεδομένων Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-43

Αρχεία ISAM (Indexed Sequential Access Method) p 0 k 1 p 1 k 2 p 2 k m p m Σελίδα του ευρετηρίου Το ζεύγος κλειδί, δείκτης αποτελεί μια καταχώρηση του ευρετηρίου (k i, p i ) Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-44

Αντί να γίνεται αναζήτηση στο αρχείο δεδομένων η αναζήτηση γίνεται στο ευρετήριο. Εκεί μπορεί να γίνει δυαδική αναζήτηση σε μικρότερο αρχείο. Η ιδέα είναι αν μπορώ να μεταφέρω την οργάνωση του ευρετηρίου αναδρομικά μέχρι το αρχικό βοηθητικό αρχείο να χωράει στη μνήμη. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-45

Σελίδες δεδομένων Σελίδες Ευρετηρίου Σελίδες Υπερχείλισης Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-46

Εναλλακτικά μπορούμε να υλοποιήσουμε την μέθοδο θέτοντας στα φύλα μόνο τιμή κλειδιού και διεύθυνση στο αρχείο. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-47

Ρίζα 40 20 33 51 63 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-48

Ρίζα Εισαγωγή 23, 48, 41, 42 Πρωτεύουσες Σελίδες Ενδιάμεσοι κόμβοι 40 20 33 51 63 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* 23* 48* 41* 42* Υπερχείλιση Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-49

Ρίζα Διαγραφή 42, 51, 97 Πρωτεύουσες Σελίδες Ενδιάμεσοι κόμβοι 40 20 33 51 63 10 15 20 27 33 37 40 46 55 63 23 48 41 Υπερχείλιση Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-50

Το κόστος της αναζήτησης σε προσπελάσεις στο δίσκο είναι όσο και το ύψος του ευρετηρίου συν την προσπέλαση στη σελίδα των δεδομένων συν τις προσπελάσεις στην υπερχείλιση. Όταν δημιουργηθεί το ISAM αρχείο οι διαγραφές και οι εισαγωγές επηρεάζουν τα φύλα. Σαν αποτέλεσμα δημιουργούνται μακρές λίστες από σελίδες υπερχείλισης. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-51

Η αναζήτηση στο ευρετήριο εξαρτάται από το ύψος του. Αν επομένως το πλήθος των πεδίων ανά σελίδα ευρετηρίου είναι F (λέγεται fun out) και αν N το πλήθος των πρωτευόντων σελίδων φύλων τότε η αναζήτηση απαιτεί log F N προσπελάσεις. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-52

Σαν μια λύση στο πρόβλημα αυτό είναι η φόρτωση των φύλων μόνο σε ένα ποσοστό (80% για παράδειγμα). Μια τέτοια οργάνωση είναι τα VSAM (Virtual Storage Access Method) αρχεία που αναπτύχθηκαν από την IBM και θεωρούνται προκάτοχοι των Β-δένδρων. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-53

ISAM αρχεία (συν) K1, k2 kn Αρχείο ευρετηρίου Σελ. 1 Σελ. 2 Σελ. 3 Σελ. Ν Αρχείο δεδομένων Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-54

ISAM αρχεία (συν). Το προηγούμενο βήμα μπορεί να επεκταθεί στο κτίσιμο ενός ευρετηρίου πολλών επιπέδων Ενδιάμεσοι κόμβοι..................... Σελίδα υπερχείλισης Σελίδες φύλα Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-55

Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-56

Δένδρο αναζήτησης είναι ένας ειδικός τύπος δένδρου που χρησιμοποιείται για να καθοδηγήσει την αναζήτηση μιας εγγραφής όταν δίνεται η τιμή ενός πεδίου της. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-57

K 1 <K 2 < <K q-1 P 1 K 1 K i-1 P i K i K q-1 P q X X X X<K 1 K i-1 <X<K i K q-1 <X Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-58

50 70 20 40 55 60 90 8 10 25 35 45 75 85 95 100 Έστω ότι ο κόμβος χωράει 2 κλειδιά Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-59

Εισαγωγή 48 50 70 20 40 55 60 90 8 10 25 35 45 48 75 85 95 100 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-60

Εισαγωγή 74 50 70 20 40 55 60 90 8 10 25 35 45 48 75 85 95 100 74 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-61

Όμως έτσι μπορεί να μην έχουμε καλή απόδοση ενώ θα μπορούσαμε να έχουμε 50 70 20 40 55 60 75 90 8 10 25 35 45 48 74 85 95 100 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-62

Αν το δένδρο είναι τάξεως m σε κάθε κόμβο μπορεί να περιέχει το μέγιστο m-1 κλειδιά. Επομένως ένα δένδρο αναζήτησης ύψους h περιέχει το μέγιστο (m-1)+m(m-1)+m 2 (m-1)+ m h-1 (m-1)=(m-1)(1+m+m 2 + +m h-1 ) =m h -1 Επομένως για N κλειδιά το καλλίτερο δένδρο που μπορεί να δημιουργηθεί είναι N= m h -1 δηλαδή το πιο κοντό θα έχει ύψος h=log m (N+1) Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-63

Όμως επειδή η χρήση είναι δυναμική δεν είναι πρακτικό με κάθε εισαγωγή και διαγραφή να γίνεται αναδιοργάνωση του δένδρου ώστε να έχω την καλλίτερη δυνατή απόδοση Θέλουμε να μπορεί να γίνεται εύκολα η εισαγωγή αλλά ταυτόχρονα το δένδρο που δημιουργείται να είναι όσο το δυνατόν ισοζυγισμένο με την έννοια οι κόμβοι φύλα να είναι στο ίδιο επίπεδο. Το να γέρνει προς μια πλευρά το δένδρο οδηγεί σε απόδοση που πλησιάζει αυτήν του ταξινομημένου αρχείου. Επίσης θέλουμε να γίνεται η καλλίτερη δυνατή χρήση του χώρου. Οι διαγραφές δημιουργούν κενά στους κόμβους που μπορεί να αφήσουν το δένδρο με σχεδόν κενούς κόμβους. Το Β-δένδρο (και οι παραλλαγές του) αντιμετωπίζει με επιτυχία αυτά τα δύο προβλήματα Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-64

Β-δένδρο τάξεως p 1. Κάθε εσωτερικός κόμβος είναι της μορφής <P 1,<k 1,Pr 1 >,P 2,<K 2,Pr 2 >,,<k q-1,pr q-1 >,P q > q p. Τα P i είναι δείκτες δένδρου ενώ τα Pr i δείκτες δεδομένων. 2. Σε κάθε κόμβο ισχύει: K 1 <K 2 < K q-1. 3. Για όλα τα κλειδιά X στο υποδένδρο που δείχνει το Pi ισχύει Κ i-1 <X<K i 1<i<q, X<K i για i=1 και K i-1 <X για i=q 4. Κάθε κόμβος έχει το πολύ p δείκτες δένδρου. 5. Κάθε κόμβος εκτός της ρίζας και των φύλων έχει τουλάχιστον p/2 δείκτες δένδρου. Ο κόμβος της ρίζας έχει τουλάχιστον δύο δείκτες δένδρου εκτός αν είναι ο μοναδικός κόμβος του δένδρου. 6. Ένας κόμβος με q δείκτες δένδρου περιέχει q-1 κλειδιά. 7. Όλοι οι κόμβοι φύλα είναι στο ίδιο επίπεδο. Οι κόμβοι φύλα έχουν την ίδια δομή με τους εσωτερικούς κόμβους μόνο που οι δείκτες δένδρου έχουν τιμή null. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-65

Κόμβος του Β-δένδρου P 1 K 1 Pr 1 P 2 K i-1 Pr i-1 P i K i Pr i K q-1 Pr q-1 P q X Δείκτης δεδομένων Δείκτης δένδρου Δείκτης δεδομένων X δείκτης δεδομένων X K q-1 <X X<K 1 K i-1 <X<K i Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-66

50 30 80 10 20 40 60 70 90 100 Το δένδρο τάξεως 3 που σημαίνει ότι κάθε κόμβος έχει 1 ή 2 κλειδιά και 2 ή 3 παιδιά Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-67

50 30 80 10 20 40 45 48 60 70 90 100 Αυτό όμως δεν είναι Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-68

50 30 80 90 130 10 20 40 60 70 85 100 95 100 140 150 Ούτε αυτό είναι Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-69

50 30 48 80 90 10 20 40 60 70 85 100 Ούτε αυτό είναι Β Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-70

Εισαγωγή του κλειδιού Χ στο Β-δένδρο Σαρώνουμε το Β-δένδρο μέχρι που ή θα βρούμε την τιμή Χ ήθα φθάσουμε σε ένα φύλο που θα έπρεπε να βρίσκεται η τιμή Χ. Αν ο κόμβος αυτός έχει λιγότερα από p-1 κλειδιά τότε προσθέτουμε το κλειδί στον κόμβο αυτό και τελείωσε η εισαγωγή. Αν ο κόμβος έχει ήδη p κλειδιά τότε δεν μπορεί να προστεθεί στον κόμβο αυτό. Στην περίπτωση αυτή χωρίζουμε τα p κλειδιά (K 1 <K 2 <K 3 < <K q )σε δύο κόμβους όπου ο πρώτος έχει τα πρώτα q/2 ο δεύτερος τα τελευταία q/2 και το μεσαίο στοιχείο ανεβαίνει στον κόμβο γονέα σαν διαχωριστικό. Αν ο κόμβος γονέας έχει χώρο τότε τελειώσαμε. Αν δεν έχει τότε χωρίζεται με τον ίδιο τρόπο και αυτός και προχωράμε προς τη ρίζα. Στην χειρότερη περίπτωση θα διασπασθεί και η ρίζα και θα ανέβουμε ένα επίπεδο (θα ψηλώσει το δένδρο). Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-71

50 30 80 10 20 40 60 70 90 100 Το δένδρο τάξεως 3 που σημαίνει ότι κάθε κόμβος έχει 1 ή 2 κλειδιά και 2 ή 3 παιδιά Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-72

Εισαγωγή του 75 50 30 70 80 10 20 40 60 75 90 100 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-73

Εισαγωγή του 55 50 30 70 80 10 20 40 55 60 75 90 100 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-74

Εισαγωγή του 57 50 70 30 57 80 10 20 40 55 60 75 90 100 70 55 57 60 57 57 70 80 57 80 55 60 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-75

Εισαγωγή του 95 50 70 30 57 80 95 10 20 40 55 60 75 90 100 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-76

Εισαγωγή του 85 50 70 30 57 80 95 10 20 40 55 60 75 85 90 100 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-77

Εισαγωγή του 87 70 50 87 30 57 80 95 10 20 40 55 60 75 85 90 100 85 87 90 87 80 87 95 85 90 87 50 70 87 70 80 95 50 87 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-78

Διαγραφή ενός κλειδιού από ένα τερματικό κόμβο Εντοπίζεται ο κόμβος. Αν με την διαγραφή το πλήθος των κλειδιών του κόμβου παραμένει επιτρεπτό τότε έχουμε τελειώσει. Αν ο κόμβος πέφτει κάτω από το επιτρεπόμενο τότε ανατρέχουμε στους κόμβους άμεσα αδέλφια ώστε να βρεθεί κόμβος να δανείσει ένα στοιχείο και μεταφέρουμε το στοιχείο από τον αδελφό στο γονέα και από τον γονέα στον κόμβο που έχει πρόβλημα και τελειώνουμε. Αν δεν μπορεί να δανείσει και ο αδελφός τότε οι δύο κόμβοι είναι οριακοί και μπορούμε να τους συμπτύξουμε σε έναν. Στην περίπτωση αυτή αν ο γονέας δεν έχει λιγότερα από τα επιτρεπόμενα στοιχεία τελειώσαμε. Αν έχει λιγότερα τότε επαναλαμβάνουμε την διαδικασία προς τη ρίζα. Στην περίπτωση αυτή μπορεί να φτάσουμε μέχρι τη ρίζα και μπορεί να κοντύνει το δένδρο κατά ένα επίπεδο. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-79

Έστω το Β-δένδρο τάξεως 5 (δηλαδή από 2 μέχρι 4 κλειδιά σε κάθε κόμβο εκτός της ρίζας) 90 30 60 120 160 190 220 10 20 40 50 70 75 80 100 110 130 140 150 170 180 200 210 230 240 250 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-80

Διαγραφή του 250 90 30 60 120 160 190 220 10 20 40 50 70 75 80 100 110 130 140 150 170 180 200 210 230 240 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-81

Διαγραφή του 50 90 30 70 120 160 190 220 10 20 40 60 75 80 100 110 130 140 150 170 180 200 210 230 240 Έχει να δανείσει ο διπλανός επομένως πάει το 60 στη θέση του 50 και το 70 αναβαίνει στον γονέα. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-82

Διαγραφή του 20 120 70 90 160 190 220 10 30 40 60 75 80 100 110 130 140 150 170 180 200 210 230 240 70 Τώρα όμως αυτός έχει λιγότερα και δανείζεται από τον αδελφό του 10 30 40 60 75 80 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-83

Διαγραφή από εσωτερικό κόμβο Στην περίπτωση αυτή πρέπει να βρεθεί το αμέσως επόμενο(ή προηγούμενο) από το στοιχείο που θέλουμε να διαγράψουμε. Το αμέσως επόμενο (ή προηγούμενο βρίσκεται πάντα σε φύλο). Στην περίπτωση αυτή το αμέσως προηγούμενο (ή επόμενο) καταλαμβάνει την θέση του προς διαγραφή στοιχείου και η διαγραφή ανάγεται στην προηγούμενη περίπτωση διαγραφής από φύλο. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-84

Διαγραφή του 160 120 70 90 150 190 220 10 30 40 60 75 80 100 110 130 140 170 180 200 210 230 240 Στην περίπτωση αυτή πάει στη θέση του το αμέσως προηγούμενο δηλαδή το 150. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-85

Διαγραφή του 90 120 60 80 150 190 220 10 30 40 70 75 100 110 130 140 170 180 200 210 230 240 Στην περίπτωση αυτή πάει στη θέση του το αμέσως προηγούμενο δηλαδή το 80 αλλά ο κόμβος που είχε το 80 θα πέσει κάτω από το επιτρεπτό και θα ακολουθηθεί ότι και στην περίπτωση διαγραφής από φύλο Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-86

Διαγραφή του 120 150 60 110 190 220 10 30 40 70 75 80 100 130 140 170 180 200 210 230 240 Στην περίπτωση αυτή είναι σαν να διαγράφουμε το 110 και ακολουθούμε την διαδικασία διαγραφής από φύλο Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-87

Διαγραφή του 190 60 110 150 220 10 30 40 70 75 80 100 130 140 170 180 200 210 230 240 Στην περίπτωση αυτή το 180 αναβαίνει στο 220 γονέα. Ο κόμβος με μόνο το φύλο 170 έχει πρόβλημα. Θα ενωθεί με τον αδελφό 170 180 200 210 230 240 Ο κόμβος με το 220 έχει πρόβλημα και θα συνενωθεί με τον αδελφό και τη ρίζα μειώνοντας το ύψος κατά 1 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-88

Θα προσπαθήσουμε να βρούμε το μέγιστο ύψος ενός Β-δένδρου ύψος ενός δένδρου με τάξεως m για Ν στοιχεία. 1+2( m/2-1)+2 ( m/2-1)( m/2 ) + 2 ( m/2-1)( m/2 ) h-2 =2 ( m/2 ) h-1-1 h-1= log m/2 ((N+1)/2) Επομένως h log m/2 ((N+1)/2) Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-89

Όμως έχουμε h log m (N+1) Άρα log m (N+1) h log m/2 ((N+1)/2) Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-90

Μήκος κλειδιού V=9 byte Μέγεθος block B=512byte Μήκος δείκτη υποδένδρου P=6byte Μήκος δείκτη εγγραφής Pr=7byte Για την τάξη p του δένδρου πρέπει να ισχύει (p*p)+((p-1)*(pr+v)) B Δηλαδή στην περίπτωση μας (p*6)+((p-1)*(7+9)) 512 22*p 521 p=23 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-91

Με αυτά τα δεδομένα για ένα αρχείο με 1000000 εγγραφές το ύψος του δένδρου είναι 2 ή 3. Ή ακόμη 94143178827 3<=h<=8 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-92

Ευρετήρια B + -Δένδρα Τα ευρετήρια B + -δένδρα είναι μια εναλλακτική στα ISAM. Μειονεκτήματα των σειριακών αρχείων με δείκτη πέφτει η απόδοση όσο μεγαλώνει το αρχείο επειδή δημιουργούνται μπλοκ στην υπερχείλιση. Απαιτείται περιοδική αναδιοργάνωση όλου του αρχείου. Πλεονεκτήματα των of B + -δένδρων: Αυτόματη αναδιοργάνωση με μικρές, τοπικές αλλαγές, σε περίπτωση εισαγωγών και διαγραφών. Δεν απαιτείται αναδιοργάνωση ολόκληρου του αρχείου για διατήρηση της απόδοσης. (Όχι σοβαρό) μειονέκτημα των B + -δένδρων: επιπλέον χώρος και φόρτος στις εισαγωγές και τις διαγραφές. Τα πλεονεκτήματα των B + -δένδρων υπερκεράζουν τα μειονεκτήματα Τα B + -δένδρα έχουν ευρεία χρήση Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-93

Παράδειγμα B + -Δένδρου Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-94

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

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

Κόμβοι φύλλα σε B + -δένδρα Ιδιότητες των κόμβων φύλλων: Για i = 1, 2,..., n 1, ο δείκτης P i δείχνει σε μια εγγραφή στο αρχείο με τιμή κλειδιού αναζήτησης K i, Αν τα L i, και L j είναι κόμβοι φύλλα και i < j, οι τιμές των κλειδιών αναζήτησης του L i είναι μικρότερες ή ίσες από τις τιμές αναζήτησης του L j P n δείχνει στον επόμενο κόμβο φύλλο στη διάταξη του κλειδιού αναζήτησης Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-97

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

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

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

Αναζητήσεις σε B + -δένδρα Αναζήτηση της εγγραφής με τιμή κλειδιού αναζήτησης V. 1. C=root 2. While C is not a leaf node { 1. Έστω i η μικρότερη τιμή ώστε V K i. 2. Αν δεν υπάρχει τέτοια, C = lο τελευταίος μη κενός δείκτης στη C 3. Διαφορετικά { αν (V= K i ) θέσε C = P i +1 διαφορετικά θέσε C = P i } } 3. Έστω i η μικρότερη τιμή ώστε K i = V 4. Αν υπάρχει μια τέτοια τιμή i, ακολούθησε τον δείκτη P i ζητούμενη εγγραφή. στην 5. Διαφορετικά δεν υπάρχει εγγραφή με τιμή κλειδιού αναζήτησης k. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-101

Περίπτωση μη πρωτεύοντος κλειδιού Με διπλά κλειδιά αναζήτησης Τόσο στα φύλλα όσο και στους εσωτερικούς κόμβους, δεν μπορούμε να εξασφαλίσουμε ότι K 1 < K 2 < K 3 <... < K n 1 αλλά μπορούμε K 1 K 2 K 3... K n 1 Τα κλειδιά αναζήτησης στο υποδένδρο που δείχνει ο P i είναι K i,, αλλά όχι απαραίτητα < K i, Ο λόγος: υποθέστε ότι η ίδια τιμή αναζήτησης V βρίσκεται σε δύο κόμβους φύλλα L i και L i+1. Τότε στον κόμβο γονέα το K i πρέπει να είναι ίσο με V Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-102

Περίπτωση μη πρωτεύοντος κλειδιού Τροποποιούμε την αναζήτηση διάσχιση του P i eακόμη και αν V = K i Μόλις φθάσουμε σε ένα κόμβο φύλλο C ελέγχουμε αν ο C έχει μόνο τιμές κλειδιού αναζήτησης μικρότερες από V αν ισχύει θέσε C = το δεξιό υποδένδρο του C πριν ελέγξεις αν ο C περιέχει το V Εκτύπωση όλων τροποποίηση της διαδικασίας αναζήτησης της πρώτης εγγραφής με τιμή V διάσχιση των διαδοχικών φύλλων για εύρεση όλων των εμφανίσεων της τιμής V Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-103

Αναζητήσεις σε B +- δένδρα (συν.) Αν υπάρχουν K sτιμές κλειδιού αναζήτησης στο αρχείο, το ύψος του δένδρου δεν ξεπερνά το log n/2 (K). Γενικά ένας κόμβος έχει το ίδιο μέγεθος με ένα μπλοκ δίσκου, τυπικά 4 kilobytes και το n είναι τυπικά περίπου 100 (40 bytes ανά καταχώρηση ευρετηρίου). με 1 εκατομμύριο κλειδιά αναζήτησης και n = 100 Σε μια αναζήτηση οι προσπελάσεις είναι το πολύ log 50 (1,000,000) = 4. Σε αντίθεση σε ένα ισοζυγισμένο δυαδικό δένδρο με 1 εκατομμύριο κλειδιά αναζήτησης απαιτούνται 20 προσπελάσεις η διαφορά είναι σημαντική Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-104

Υπολογισμός της τάξης p του Β+δένδρου Μήκος κλειδιού V=9 byte Μέγεθος block B=512byte Μήκος δείκτη υποδένδρου P=6byte Μήκος δείκτη εγγραφής P r =7byte Για την τάξη p του δένδρου πρέπει να ισχύει (p*p)+((p-1)*v) B Δηλαδή στην περίπτωση μας (p*6)+((p-1)*9 512 15*p 521 P=34 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-105

Ο κόμβος φύλο μπορεί να είναι άλλης τάξης Θα πρέπει να ισχύει: (p leaf *(P r +V))+P B (p leaf *(7+9))+6 512 (16p leaf ) 506 Δηλαδή p leaf =31 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-106

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

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

Ενημερώσεις σε B + -Δένδρα: Εισαγωγή (συν.) B + -Δένδρο πριν και μετά την εισαγωγή του Adams Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-109

Ενημερώσεις σε B + -Δένδρα: Εισαγωγή (συν.) B + -Δένδρο πριν και μετά την εισαγωγή του Lamport Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-110

Ενημερώσεις σε B + -Δένδρα: Εισαγωγή (συν.) Διάσπαση εσωτερικού κόμβου : όταν εισάγεται το (k,p) σε έναν ήδη γεμάτο εσωτερικό κόμβο N Αντιγράφεται ο N σε μια περιοχή της της μνήμης M με χώρο για n+1 δείκτες και n κλειδιά Εισάγεται το (k,p) στην M Αντιγραφή των P 1,K 1,, K n/2-1,p n/2 από την M στον κόμβο N Αντιγραφή των P n/2 +1,K n/2 +1,,K n,p n+1 από την M στο νέο κόμβο N Εισαγωγή του (K n/2,n ) στον γονέα N (στο βιβλίο υπάρχει ψευδοκώδικας) Califieri Adams Brandt Califieri Crick Adams Brandt Crick Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-111

Β+δένδρο βαθμού 5 15 55 80 104 2 9 11 14 15 17 52 55 56 60 79 80 83 104 110 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-112

Εισαγωγή του 66 66 15 55 70 104 2 9 11 14 15 17 52 55 56 60 66 79 80 83 104 110 55 56 60 66 79 15 55 66 80 104 55 56 60 66 79 66 15 55 70 104 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-113

Ενημερώσεις σε B + -Δένδρα: Διαγραφή Βρες την εγγραφή που θα διαγραφεί, και διάγραψέ την από το κυρίως αρχείο (αν υπάρχει) Διάγραψε το ζεύγος (τιμή κλειδιού_αναζήτησης, δείκτης) από τον κόμβο φύλλο node if there is no bucket or if the bucket has become empty Αν ο κόμβος έχει, λόγω της διαγραφής, λιγότερες από το επιτρεπτό καταχωρήσεις, και οι καταχωρήσεις στον κόμβο και σε έναν αδελφό κόμβο χωράνε σε ένα κόμβο, τότε συνένωσε τους αδελφούς : Εισαγωγή όλων των τιμών σε έναν κόμβο (τον αριστερό), και διαγραφή του άλλου κόμβου. Διαγραφή του ζεύγους (K i 1, P i ), όπου P i είναι ο δείκτης από τον γονέα στον κόμβο που διαγράφθηκε, αναδρομική χρήση της διαδικασίας αυτής. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-114

Ενημερώσεις σε B + -Δένδρα: Διαγραφή (συν.) Διαφορετικά, αν ο κόμβος έχει λιγότερες καταχωρήσεις λόγω τα διαγραφής, αλλά ο κόμβος με τον αδελφό του δεν χωράνε σε ένα κόμβο, τότε γίνεται ανακατανομή των δεικτών: Ανακατανέμονται οι δείκτες μεταξύ του κόμβου και ενός αδελφού έτσι που και οι δύο να έχουν περισσότερες από τις ελάχιστες καταχωρήσεις. Ενημερώνεται η αντίστοιχη τιμή, που τους διαχωρίζει στον κόμβο γονέα. Οι διαγραφές κόμβων να διαδοθούν προς τα πάνω μέχρι να βρεθεί κόμβος με n/2 ή περισσότερους δείκτες. Αν μετά τη διαγραφή η ρίζα έχει μόνο ένα δείκτη, διαγράφεται και το μοναδικό παιδί γίνεται ρίζα. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-115

Παράδειγμα B + -Δένδρα: Διαγραφή Πριν και μετά την διαγραφή του Srinivasan Η διαγραφή του Srinivasan προκαλεί συνένωση φύλλων Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-116

Παράδειγμα B + -Δένδρα: Διαγραφή Διαγραφή των Singh και Wu από το προηγούμενο παράδειγμα Το φύλλο που περιέχει τους Singh και Wu έχει λιγότερα από το επιτρεπόμενο, και δανείσθηκε την τιμή Kim από το αριστερό αδελφό Αλλάζει η τιμή του κλειδιού στο γονέα Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-117

Παράδειγμα B + -Δένδρα: Διαγραφή Πριν και μετά την διαγραφή του Gold Ο κόμβος με τους Gold και Katz έπεσε κάτω από το επιτρεπόμενο και συγχωνεύθηκε με τον αδελφό του Ο γονέας επίσης έπεσε κάτω από το επιτρεπόμενο και συγχωνεύεται με τον αδελφό του Η τιμή που χωρίζει τους δύο κόμβους nodes (στο γονέα) και πάει κάτω Η ρίζα έχει ένα μόνο παιδί και διαγράφεται Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-118

79 102 60 63 66 79 83 102 110 115 160 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-119

Διαγραφή 102 79 102 60 63 66 79 83 110 115 160 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-120

Διαγραφή 83 79 115 60 63 66 79 110 115 160 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-121

Διαγραφή 160 79 60 63 66 79 110 115 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-122

Διαγραφή 79 79 60 63 66 110 115 Διαγραφή 110 66 60 63 66 115 Διαγραφή 66 60 63 115 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-123

Μη μοναδικά κλειδιά αναζήτησης Εναλλακτικά σχήματα Κάδοι σε διαφορετικά μπλοκ (κακή ιδέα) Λίστα από δείκτες σε κάθε εγγραφή Επιπλέον διαχείριση μεγάλων λιστών Η διαγραφή μιας εγγραφής μπορεί να κοστίζει αν υπάρχουν πολλά διπλά Δεν απαιτεί πολύ επιπλέον χώρο Κάθε κλειδί αναζήτησης να γίνεται μοναδικό με την προσθήκη ενός προσδιοριστή εγγραφής Επιπλέον αποθήκευση για τα κλειδιά Απλούστερος κώδικας για εισαγωγή/διαγραφή Χρησιμοποιείται ευρέως Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-124

B + -Δένδρο σαν Οργάνωση Αρχείου Το πρόβλημα της σταδιακά κακής απόδοσης των ευρετηρίων λύνεται με χρήση ευρετηρίων B + -Δένδρων. Το πρόβλημα της κακής απόδοσης κυρίως αρχείου μπορεί να λυθεί με οργάνωση B + -Δένδρου. Οι κόμβοι φύλλα σε μια οργάνωση αρχείου B + -δένδρου αποθηκεύουν εγγραφές αντί για δείκτες. Οι κόμβοι φύλλα εξακολουθούν να ακολουθούν την αρχή του μισο γεμάτου Εφόσον οι εγγραφές έχουν μεγαλύτερο μήκος από ότι οι δείκτες, το μέγιστο πλήθος εγγραφών που μπορούν να αποθηκευθούν σε ένα κόμβο φύλλο είναι μικρότερο από το πλήθος των δεικτών σε ένα εσωτερικό κόμβο. Οι εισαγωγές και οι διαγραφές αντιμετωπίζονται με τον ίδιο τρόπο όπως οι εισαγωγές και διαγραφές σε ένα B + -δένδρο ευρετήριο. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-125

B + -Δένδρο σαν Οργάνωση Αρχείου Παράδειγμα οργάνωσης αρχείου σαν B + -δένδρο Καλή αξιοποίηση του χώρου που είναι σημαντική αφού οι εγγραφές χρησιμοποιούν περισσότερο χώρο από ότι οι δείκτες. Για καλύτερη αξιοποίηση του χώρου, στην ανακατανομή στις διασπάσεις και τις συγχωνεύσεις κάνουμε χρήση περισσοτέρων αδελφών Αν χρησιμοποιήσουμε 2 αδελφούς στην ανακατανομή (για αποφυγή πιθανής διάσπασης / συγχώνευσης) έχει σαν αποτέλεσμα κάθε κόμβος να έχει τουλάχιστον 2n/3 καταχωρήσεις Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-126

Δυναμικά Πολυεπίπεδα Ευρετήρια με Χρήση B-Δένδρων και B+-Δένδρων Τα περισσότερα ευρετήρια πολλών επιπέδων χρησιμοποιούν δομές δεδομένων B-δένδρων ή B+δένδρων λόγω του προβλήματος εισαγωγής και διαγραφής Αυτό αφήνει σε κάθε κόμβο του δένδρου (μπλοκ στο δίσκο) ελεύθερο χώρο για νέες καταχωρήσεις Αυτές οι δομές δεδομένων αποτελούν παραλλαγές των δένδρων αναζήτησης που υποστηρίζουν αποτελεσματική εισαγωγή και διαγραφή νέων τιμών αναζήτησης. Στις δομές δεδομένων B-δένδρων και B+-δένδρων, κάθε κόμβος αντιστοιχεί σε ένα μπλοκ του δίσκου Κάθε κόμβος είναι από γεμάτος ή μέχρι τη μέση Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-127

Δυναμικά Πολυεπίπεδα Ευρετήρια με Χρήση B-Δένδρων και B+-Δένδρων(συν.) Η εισαγωγή σε ένα κόμβο που δεν είναι γεμάτος είναι πολύ αποδοτική Αν ένας κόμβος είναι γεμάτος η εισαγωγή προκαλεί διάσπαση σε δύο κόμβους Η διάσπαση μπορεί να διαδοθεί σε άλλα επίπεδα του δένδρου Μια διαγραφή είναι πολύ αποδοτική αν ένας κόμβος δεν πέφτει κάτω από το μισό Αν μια διαγραφή οδηγήσει σε κόμβο με λιγότερες από μισές καταχωρήσεις, πρέπει να συνενωθεί με γειτονικούς κόμβους Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-128

Διαφορά μεταξύ B-δένδρου και B+δένδρου Σε ένα Β-δένδρου, υπάρχουν δείκτες προς εγγραφές δεδομένων σε όλα τα επίπεδα του δένδρου Σε ένα B+-δένδρο, όλοι οι δείκτες προς τις εγγραφές δεδομένων υπάρχουν στους κόμβους φύλα Ένα B+-δένδρο μπορεί να έχει λιγότερα επίπεδα (ή μεγαλύτερη χωρητικότητα τιμών αναζήτησης) από το αντίστοιχο B-δένδρο Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-129

Άλλα θέματα ευρετηρίασης Μετατόπιση εγγραφών και δευτερεύοντα ευρετήρια Αν μια εγγραφή μετακινηθεί στο δίσκο, πρέπει να ενημερωθούν όλα τα δευτερεύοντα ευρετήρια που αποθηκεύουν δείκτες εγγραφών Οι διασπάσεις κόμβων σε οργανώσεις αρχείων B + -δένδρα γίνονται πολύ ακριβές Λύση: αντί στο δευτερεύον να χρησιμοποιούμε δείκτη εγγραφής χρησιμοποιούμε πρωτεύον κλειδί αναζήτησης Απαιτείται βέβαια επιπλέον σάρωσης του πρωτεύοντος ευρετηρίου για εντοπισμό της εγγραφής Υψηλότερο κόστος ερωτήσεων, αλλά φθηνότερες διασπάσεις Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-130

Ευρετηρίαση Strings Strings μεταβλητού μεγέθους σαν κλειδιά Variable fanout Χρησιμοποιείται η αξιοποίηση του χώρου σαν κριτήριο διάσπασης και όχι το πλήθος των δεικτών Προθεματική συμπίεση (Prefix compression) Οι τιμές των κλειδιών στους εσωτερικούς κόμβους μπορεί να είναι προθέματα του πλήρους κλειδιού Κρατάμε αρκετούς χαρακτήρες για τον διαχωρισμό των καταχωρήσεων στα υποδένδρα Π.χ. Παπαδάκης and Παπαδόπουλος μπορούν να διαχειρισθούν με το Παπαδο Τα κλειδιά στα φύλλα μπορεί να έχουν συμπιεσθεί με κοινό πρόθεμα Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-131

Μαζική φόρτωση και προς τα πάνω χτίσιμο Η εισαγωγή καταχωρήσεων ένα-ένα σε ένα B + -δένδρο απαιτεί 1 IO ανά καταχώρηση υποθέτοντας ότι τα φύλα δεν χωράνε στη μνήμη Μπορεί να είναι εντελώς αναποτελεσματικό σε φόρτωση μεγάλου πλήθους καταχωρήσεων (μαζική φόρτωση) Αποτελεσματικός τρόπος 1: ταξινόμηση των καταχωρήσεων (με μια αποτελεσματική μέθοδο από αυτές που θα εξετάσουμε) εισαγωγή με ταξινομημένη σειρά Η εισαγωγή θα γίνεται στην τρέχουσα σελίδα (ή θα προκαλεί διάσπαση) Βελτιώνει κατά πολύ την IO απόδοση, αλλά τα περισσότερα φύλλα είναι μισογεμάτα Αποτελεσματικός τρόπος 2: Προς τα πάνω κατασκευή του B + -δένδρου Όπως και πριν ταξινόμηση των καταχωρήσεων Στη συνέχεια δημιουργία του δένδρου ανά επίπεδο ξεκινώντας σε επίπεδο φύλλων Υλοποιείται από τα περισσότερα ΣΔΒΔ Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-132

Σύγκριση Διατεταγμένης Ευρετηρίασης και Κατακερματισμού Κόστος περιοδικής αναδιοργάνωσης Σχετική συχνότητα εισαγωγών και διαγραφών Τι θέλουμε να βελτιώσουμε το μέσο χρόνο προσπέλασης ή τον χειρότερο? Αναμενόμενο είδος ερωτήσεων: Ο κατακερματισμός είναι γενικά καλύτερος στην ανάκτηση εγγραφών με συγκεκριμένη τιμή κλειδιού. Αν έχουμε συχνές ερωτήσεις διαστήματος, τα διατεταγμένα ευρετήρια είναι προτιμητέα Στην πράξη: Το PostgreSQL υποστηρίζει κατακερματισμό αλλά αποθαρρύνει τη χρήση του λόγω απόδοσης Η Oracle υποστηρίζει στατικό κατακερματισμό Ο SQLServer υποστηρίζει B + -δένδρα Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-133

Προσπέλαση με Πολλαπλά Κλειδιά Χρήση πολλαπλών ευρετηρίων για κάποιους τύπους ερωτήσεων. Example: Βρες τον Αριθμό Μητρώου των φοιτητών που είναι στο τμήμα Πληροφορικής και κατάγονται από τη Λάρισα Πιθανές στρατηγικές για εκτέλεση της ερώτησης με χρήση ευρετηρίων σε απλά πεδία : 1. Χρήση ευρετηρίου στο όνομα τμήματος για να βρεθούν οι φοιτητές του τμήματος πληροφορικής έλεγχος αν η καταγωγή αυτών είναι από τη Λάρισα 2. Χρήση ευρετηρίου στον τόπο καταγωγής για να βρεθούν οι φοιτητές από τη Λάρισα έλεγχος αν φοιτούν στο τμήμα πληροφορικής. 3. Χρήση ευρετηρίου για εύρεση των φοιτητών του τμήματος πληροφορικής, χρήση ευρετηρίου για εύρεση όσων κατάγονται από τη Λάρισα. Παίρνουμε την τομή των αποτελεσμάτων. Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-134

Ευρετήρια σε πολλαπλά κλειδιά Τα σύνθετα κλειδιά αναζήτησης είναι κλειδιά αναζήτησης που περιλαμβάνουν περισσότερα από ένα Π.χ. (τμήμα, τόπος_καταγωγής) Λεξικογραφική διάταξη : (a 1, a 2 ) < (b 1, b 2 ) αν a 1 < b 1, ή a 1 =b 1 και a 2 < b 2 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-135

Ευρετήρια σε πολλαπλά κλειδιά Υποθέστε ότι έχουμε ευρετήριο στο σύνθετο κλειδί αναζήτησης (τμήμα, τόπος_καταγωγής). στην Βρες τον Αριθμό Μητρώου των φοιτητών που είναι στο τμήμα Πληροφορικής και κατάγονται από τη Λάρισα μπορεί να χρησιμοποιηθεί το σύνθετο ευρετήριο (τμήμα, τόπος_καταγωγής). Η χρήση ξεχωριστών ευρετηρίων είναι λιγότερο αποτελεσματική μπορεί να φέρνει πολλές εγγραφές που να ικανοποιούν μόνο τη μια συνθήκη. Μπορεί να είναι αποτελεσματική η τμήμα = Πληροφορική and τόπος_καταγωγής < Λάρισα Αλλά όχι η τμήμα < Πληροφορική and τόπος_καταγωγής = Λάρισα Μπορεί να φέρνει πολλές εγγραφές που ικανοποιούν την μια συνθήκη αλλά όχι την άλλη Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-136

Bitmap Ευρετήρια Τα Bitmap ευρετήρια αποτελούν ειδική περίπτωση ευρετηρίων που έχουν σχεδιασθεί για αποτελεσματικές ερωτήσεις σε πολλαπλά κλειδιά Υποθέτουμε ότι οι εγγραφές έχουν αριθμηθεί σειριακά, έστω από το, 0 Όταν δίδεται ένας αριθμός n it mη ανάκτηση της εγγραφής n πρέπει να είναι εύκολη Ιδιαίτερα εύκολη αν οι εγγραφές είναι σταθερού μεγέθους Εφαρμόζεται κυρίως σε πεδία με σχετικά μικρό πλήθος διακριτών τιμών Π.χ. φύλο, χώρα,, Π.χ. επίπεδο εισοδήματος (χωρισμένο σε διατήματα όπως 0-9999, 10000-19999, 20000-50000, >50000) Ένα bitmap είναι απλά ένας πίνακας με bits Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-137

Bitmap Ευρετήρια (συν.) Στην απλούστερη μορφή του ένα bitmap ευρετήριο σε ένα πεδίο έχει ένα bitmap για κάθε τιμή του πεδίου Το Bitmap έχει τόσα bits όσες οι εγγραφές Σε ένα για την τιμή v, το bit ιας εγγραφής είναι1 αν η εγγραφή έχει τιμή v για το πεδίο, διαφορετικά 0 Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-138

Bitmap Ευρετήρια (συν.) Τα Bitmap ευρετήρια είναι χρήσιμα για ερωτήσεις σε πολλαπλά πεδία δεν είναι ιδιαίτερα χρήσιμα για ερωτήσεις ενός πεδίου Η απάντηση στις ερωτήσεις γίνεται με χρήση bitmap πράξεων Intersection (and) Union (or) Complementation (not) Κάθε πράξη παίρνει δύο bitmaps ίδιου μεγέθους και εφαρμόζει την πράξη στα αντίστοιχα bits για να δώσει σαν αποτέλεσμα ένα bitmap Π.χ. 100110 AND 110011 = 100010 100110 OR 110011 = 110111 NOT 100110 = 011001 Αρένες με εισόδημα επιπέδου L1: 10010 AND 10100 = 10000 Στη συνέχεια έχουμε προσπέλαση στις αντίστοιχες εγγραφές. Αν θέλουμε μόνο το πλήθος στο αποτέλεσμα είναι ακόμη πιο γρήγορο Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-139

Bitmap Ευρετήρια (συν.) Τα Bitmap ευρετήρια είναι συνήθως πολύ μικρά σε σχέση με το μέγεθος του αρχείου Π.χ. αν μια εγγραφή είναι 100 bytes, ο χώρος για ένα είναι 1/800 του χώρου του αρχείου. Αν οι διακριτές τιμές είναι 8, το bitmap είναι μόνο το 1% του μεγέθους του αρχείου Οι διαγραφές θέλουν κατάλληλη αντιμετώπιση Υπαρξιακό (Existence) bitmap για να δηλώνει ότι υπάρχει εγγαρφή σε μια θέση Χρειάζεται σε περίπτωση συμπληρώματος not(a=v): (NOT bitmap-a-v) AND ExistenceBitmap Απαιτούνται bitmaps για όλες τις τιμές, ακόμη και τις null Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-140

Αποτελεσματική Υλοποίηση των of Bitmap Πράξεων Τα Bitmaps πακετάρονται σε λέξεις μια λέξη και (μια βασική CPU εντολή) υπολογίζει 32 ή 64 bits με την μια Π.χ. 1-million-bit maps μπορεί να τελεσθεί το AND σε 31,250 εντολές Το μέτρημα των 1 μπορεί να γίνει: Χρήση κάθε byte για ευρετηρίαση ενός προϋπολογισμένου πίνακα από 256 στοιχεία που το καθένα αποθηκεύει τον μετρητή 1 στη δυαδική αναπαράσταση Μπορεί να χρησιμοποιηθούν ζεύγη από bytes για περαιτέρω επιτάχυνση με κόστος περισσότερη μνήμη. Πρόσθεση των μετρητών που ανακτώνται Τα Bitmaps μπορούν να χρησιμοποιηθούν σαν ταυτότητες εγγραφών σε επίπεδο φύλλου σε B + -δένδρα, για τιμές με μεγάλο πλήθος εγγραφών Αξίζει αν > 1/64 έχουν την τιμή αυτή, υποθέτοντας ταυτότητα εγγραφής 64 bits Η τεχνική αυτή συνδυάζει τα πλεονεκτήματα των bitmap και των ευρετηρίων B + -δένδρων Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-141

Σύνοψη Τύποι διατεταγμένων ευρετηρίων ενός επιπέδου Πρωτεύοντα ευρετήρια Ευρετήρια Συστάδες Δευτερεύοντα Ευρετήρια Ευρετήρια πολλών επειπέδων Δυναμικά ευρετήρια πολλών επιπέδων με χρήση B-δένδρων και B+-δένδρων Ευρετήρια σε πολλά κλειδιά Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-142