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

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

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

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

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

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

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

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

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

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

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

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

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

Lecture 21: Functional Dependencies and Normalization

Red-black δέντρα (Κεφ. 5)

Advanced Data Indexing

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

Advanced Data Indexing

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

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

Βάσεις δεδομένων. (10 ο μάθημα) Ηρακλής Βαρλάμης

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

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

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

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

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

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

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

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

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

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

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

AVL-trees C++ implementation

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

Κεφάλαιο 7. ISAM και B- έντρα Φυσικός Σχεδιασµός για Βάσεις εδοµένων. ΙΒ οµές Ευρετηρίων Φυσικός Σχεδιασµός Β Σελίδα 3.53

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI Δομές Ευρετηρίων και Κατακερματισμός Αρχείων I Β. Μεγαλοοικονόμου Δ. Χριστοδουλάκης (παρουσίαση βασισμένη εν μέρη σε σημειώσεις των Silberchatz, Korth και Sudarshan και του C. Faloutsos)

Σύνοψη Ύλης Σχεσιακό μοντέλο (Relational model) -SQL Επίσημες (Formal) & Εμπορικές γλώσσες επερωτήσεων (commercial query languages) Συναρτησιακές Εξαρτήσεις (Functional Dependencies) Κανονικοποίηση (Normalization) Φυσικός Σχεδιασμός (Physical Design) Ευρετηριοποίηση (Indexing)

Ευρετηριοποίηση (Indexing)- Περιληπτικά Πρωτεύοντα / δευτερεύοντα ευρετήρια Σειριακή μέθοδος προσπέλασης (ISAM) B - trees, B+ - trees Κατακερματισμός Στατικός κατακερματισμός Δυναμικός κατακερματισμός

Βασική ιδέα Οι μεθοδοι ευρετηριοποίησης επιταχύνουν την διαδικασία ανάκτησης των επιθυμητών δεδομένων Π.χ., κατάλογος συγγραφέων των βιβλίων μιας βιβλιοθήκης Κλειδί αναζήτησης (Search Key) γνώρισμα ή σύνολο γνωρισμάτων που χρησιμοποιείται για την εύρεση εγγραφών στο αρχείο Ένα αρχείο ευρετηρίου (index file) αποτελείται από εγγραφές (καταχωρήσεις ευρετηρίου - index entries) της φόρμας Κλειδί αναζήτησης Δείκτης Τα αρχεία ευρετηρίου είναι συνήθως μικρότερα σε μέγεθος από τα αρχεία δεδομένων Δύο βασικά είδη ευρετηρίων : Ταξινομημένα ευρετήρια (Ordered indices): οι εγγραφές του κλειδιού αναζήτησης αποθηκεύονται ταξινομημένα Ευρετήρια Κατακερματισμού (Hash indices): οι εγγραφές των κλειδιών αναζήτησης διανέμονται ομοιόμορφα σε «κάδους» (buckets) με χρήση κάποιας συνάρτησης κατακερματισμού.

Ευρετηριοποίηση Πώς ψάχνουμε αποδοτικά εφόσον οι εγγραφές είναι αποθηκευμένες σε ένα αρχείο; (Π.χ., SSN=123?) Φοιτητής SSN Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 125 Φαντίδη Χίου

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

Ευρετητιοποίηση Βασική ιδέα: 123 125 234 Φοιτητής SSN Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 125 Φαντίδη Χίου

Μέτρηση της αποτελεσματικότητας Χρόνος ανάκτησης; Εισαγωγής / Διαγραφής; Επιβάρυνση χώρου; Αναδιοργάνωση; Ερωτήματα διαστήματος (range queries);

Βασική Ιδέα Τα κλειδιά αναζήτησης αποθηκεύονται στο αρχείο ευρετηρίου και δείχνουν στα πραγματικά δεδομένα Πρωτεύοντα vs. Δευτερεύοντα ευρετήρια (indices) Συσταδοποίηση(Clustering) (αραιά sparse) vs ευρετήρια χωρίς συσταδοποίηση nonclustering (πυκνά - dense) ευρετήρια

Ευρετηριοποίηση 123 234 345 456 567 Ευρετήριο Πρωτεύοντος κλειδιού : Κλειδί αναζήτησης το πρωτεύον κλειδί Δεν περιέχει διπλότυπες εγγραφές Φοιτητής SSN Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 678 Πέτρου Αιόλου 456 Νικολάου Θράκης 345 Σταύρου Θράκης

Ευρετηριοποίηση Θράκης Αιόλου Ευρετήριο διευθύνσεων Ευρετήριο Δευτερεύοντος κλειδιού : Περιέχει διπλότυπες εγγραφές Φοιτητής SSN Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 678 Πέτρου Αιόλου 456 Νικολάου Θράκης 345 Σταύρου Θράκης

Indexing Ευρετήριο Δευτερεύοντος κλειδιού : τυπικά με postings lists Θράκης Αιόλου Postings lists Φοιτητής SSN Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 678 Πέτρου Αιόλου 456 Νικολάου Θράκης 345 Σταύρου Θράκης

Βασική Ιδέα(συνέχεια) Αραιό ευρετήριο: δεν συμπεριλαμβάνονται στο ευρετήριο όλες οι τιμές του πεδίου ευρετηριοποίησης Πυκνό ευρετήριο: το αντίθετο

Ευρετηριοποίηση Αραιά ευρετήρια 123 456 >=456 αραιό ευρετήριο στο γνώρισμα SSN >=123 Φοιτητής SSN Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 678 Πέτρου Αιόλου 456 Νικολάου Θράκης 345 Σταύρου Θράκης

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

Ευρετηριοποίηση Πυκνό ευρετήριο 123 234 345 456 567 Πυκνό ευρετήριο Φοιτητής Ssn Όνομα Διεύθυνση 345 Πετρου Αιόλου 234 Αντωνίου Θράκης 567 Σταύρου Θράκης 456 Νικολάου Θράκης 123 Σταύρου Αιόλου

Σύνοψη Όλοι συνδυασμοί είναι δυνατοί... Πυκνό Αραιό Πρωτεύον Σύνηθες Δευτερεύων Σύνηθες Σπάνιο Αραιό ευρετήριο : το πολύ ένα Πυκνά ευρετήρια : όσα επιθυμούμε Συνήθως: Έναπρωτεύονευρετήριοστοπρωτεύονκλειδί(ίσως αραιό) Μερικά δευτερεύοντα ευρετήρια, σταυπόλοιπαγνωρίσματα(πυκνά ευρετήρια)

Ευρετηριοποίηση Περιληπτικά Πρωτεύοντα / δευτερεύοντα ευρετήρια Σειριακή μέθοδος προσπέλασης (ISAM) B - trees, B+ - trees Κατακερματισμός Στατικός κατακερματισμός Δυναμικός κατακερματισμός

ISAM Τι θα συμβεί εάν το ευρετήριο είναι υπερβολικά μεγάλο για ψάξουμε σ αυτό σειριακά; Θα χρησιμοποιήσουμε ένα πολυεπίπεδο ευρετήριο...

ISAM 123 3,423 123 456 >=123 >=456 block Φοιτητής Ssn Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 345 Πέτρου Αιόλου 456 Νικολάου Θράκης 567 Σταύρου Θράκης

ISAM - Παρατηρήσεις Εάν το ευρετήριο είναι πολύ μεγάλο το αποθηκεύουμε στον δίσκο Διατηρούμε ευρετήριο για το ευρετήριο στην μνήμη Συνήθως δύο επίπεδα δεικτών Το πρώτο επίπεδο θα περιέχει τις πρώτες εγγραφές κάθε block του δίσκου (γιατί;)

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

ISAM - Παρατηρήσεις Τι γίνεται με τις εισαγωγές / διαγραφές; 123 3,423 123 456 >=123 >=456 124; Ανδρέου; Κορίνθου. STUDENT Ssn Name Address 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 345 Πέτρου Αιόλου 456 Νικολάου Θράκης 567 Σταύρου Θράκης

ISAM - Παρατηρήσεις Τι γίνεται με τις εισαγωγές / διαγραφές; 123 3,423 123 456 ΦΟΙΤΗΤΗΣ Ssn Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 345 Πέτρου Αιόλου 456 Νικολάου Θράκης 567 Σταύρου Θράκης υπερχείλιση 124; Ανδρέου; Κορίνθου. Προβλήματα?

ISAM - Παρατηρήσεις Τι γίνεται με τις εισαγωγές / διαγραφές; 123 3,423 123 456 ΦΟΙΤΗΤΗΣ Ssn Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 345 Πέτρου Αιόλου 456 Νικολάου Θράκης 567 Σταύρου Θράκης Οι αλυσίδες υπερχείλισης μπορεί να επεκταθούν υπερβολικά Τι μπορούμε να κάνουμε; υπερχείλιση 124; Ανδρέου; Κορίνθου.

ISAM - Παρατηρήσεις Τι γίνεται με τις εισαγωγές / διαγραφές; 123 3,423 123 456 ΦΟΙΤΗΤΗΣ Ssn Όνομα Διεύθυνση 123 Σταύρου Αιόλου 234 Αντωνίου Θράκης 345 Πέτρου Αιόλου 456 Νικολάου Θράκης 567 Σταύρου Θράκης overflows 124; Ανδρέου; Κορίνθου. Οι αλυσίδες υπερχείλισης μπορεί να επεκταθούν υπερβολικά - Έτσι: σταμάτα την διαδικασία & αναδιοργάνωσε τις εγγραφές άρχισε όταν η χρησιμοποίηση είναι στο ~80%

ISAM - Παρατηρήσεις Εάν το ευρετήριο είναι πολύ μεγάλο το αποθηκεύουμε στον δίσκο διατηρούμε ευρετήριο για το ευρετήριο στην μνήμη Συνήθως δύο επίπεδα ευρετηρίου, για κάθε μπλόκ δίσκου μία εγγραφή στο ευρετήριο του προηγούμενου επιπέδου Τυπικά, blocks: 80% γεμάτα στην αρχική κατάσταση (γιατί; Ποια είναι τα πιθανά προβλήματα/ μη αποδοτικές καταστάσεις;)

Μέχρι τώρα δείκτες (όπως ISAM) πάσχουν λόγω της συχνής αναγκαιότητας για ανανεώσεις δεδομένων Μία σειριακή σάρωση δεδομένων σε ένα πρωτεύον ευρετήριο είναι αποδοτική, αλλά μία σειριακή σάρωση σε ένα δευτερεύον ευρετήριο είναι ακριβή Κάθε προσπάθεια ανάκτησης εγγραφής μπορεί να απαιτήσει την ανάκτηση ενός block από τον δίσκο Εναλλακτικές δομές ευρετηρίου : B - trees

Ευρετηριοποίηση (Indexing)- Περιληπτικά Πρωτεύοντα / δευτερεύοντα ευρετήρια Σειριακή μέθοδος προσπέλασης (ISAM) B - trees, B+ - trees Κατακερματισμός Στατικός κατακερματισμός Δυναμικός κατακερματισμός

B-trees Η οικογένεια των πιο χρήσιμων σχημάτων ευρετηρίων (B-trees, B +- trees, B * -trees) Μπορούν να χρησιμοποιηθούν για την υλοποίηση Πρωτευόντων/ δευτερευόντων ευρετηρίων Πυκνών / αραιών ευρετηρίων Είναι ισοζυγισμένα (balanced) n-way δέντρα αναζήτησης

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

B-trees Π.χ., B-tree τάξης 3 (δηλ: το πολύ 3 δείκτες από κάθε κόμβο): <6 6 >6 <9 9 >9 1 3 7 13

B-tree ιδιότητες: Κάθε κόμβος, σε ένα B-tree τάξης n : Ταξινομημένα με βάση το κλειδί Το πολύ n δείκτες Το ελάχιστο n/2 δείχτες (εκτός από την ρίζα) Όλα τα φύλλα στο ίδιο επίπεδο Εάν ο αριθμός των δεικτών είναι k τότε ο κάθε κόμβος έχει ακριβώς k-1 κλειδιά p1 pn v1 v2 v n-1

ιδιότητες Κόμβοι block aware : κάθε κόμβος σελίδα δίσκου O(log (N)) γιαταπάντα! (ins/del/search) Τυπικά, εάν N = 50-100, τότε 2 3 επίπεδα Χρησιμοποίηση >= 50%, εγγυημένα, κατά μέσο όρο 69%

Ερωτήματα- Queries Αλγόριθμος για ερώτημα ακριβούς ταιριάσματος (exact match query); (Π.χ., ssn=8?) <6 6 >6 <9 9 >9 1 3 7 13

Ερωτήματα- Queries Αλγόριθμος για ερώτημα ακριβούς ταιριάσματος (exact match query); (Π.χ., ssn=8?) <6 6 >6 <9 9 >9 1 3 7 13

Ερωτήματα- Queries Αλγόριθμος για ερώτημα ακριβούς ταιριάσματος (exact match query); (Π.χ., ssn=8?) <6 6 >6 <9 9 >9 1 3 7 13

Ερωτήματα- Queries Αλγόριθμος για ερώτημα ακριβούς ταιριάσματος (exact match query); (Π.χ., ssn=8?) <6 6 >6 <9 9 >9 1 3 7 13

Queries Αλγόριθμος για ερώτημα ακριβούς ταιριάσματος (exact match query); (Π.χ., ssn=8?) <6 6 >6 <9 9 >9 Height βήματα (= προσπελάσεις στο δίσκο) 1 3 7 13

Ερωτήματα- Queries Αλγόριθμος για ερώτημα ακριβούς ταιριάσματος (exact match query); (Π.χ., ssn=8?) <6 6 >6 <9 9 >9 1 3 7 13

Ερωτήματα- Queries Τι γίνεται για ερωτήματα διαστήματος (range queries); (Π.χ., 5<salary<8) Εγγύτητα/ αναζητήσεις κοντινότερου γείτονα; (Π.χ., salary ~ 8 )

Ερωτήματα- Queries Τι γίνεται για ερωτήματα διαστήματος (Π.χ., 5<salary<8) <6 6 >6 <9 9 >9 1 3 7 13

Ερωτήματα- Queries Τι γίνεται για ερωτήματα διαστήματος ;(Π.χ., 5<salary<8) Εγγύτητα/ αναζητήσεις κοντινότερου γείτονα; (Π.χ., salary ~ 8 ) <6 6 >6 <9 9 >9 1 3 7 13

B-trees: Εισαγωγές Εισαγωγή σε Φύλλο(leaf); σε περίπτωση υπερχείλισης προώθησε την μέση τιμή προς τα πάνω (περιοδικά) Διέσπασε : ώστε να διατηρούνται οι ιδιότητες ενός B-tree

B-trees Εύκολη περίπτωση: Tree T0; Εισαγωγή του 8 <6 6 >6 <9 9 >9 1 3 7 13

B-trees Tree T0; Εισαγωγή του 8 <6 6 >6 <9 9 >9 1 3 7 8 13

B-trees Η δυσκολότερη περίπτωση : Tree T0; Εισαγωγή του 2 <6 6 >6 <9 9 >9 1 3 7 13 2

B-trees Η δυσκολότερη περίπτωση : Tree T0; Εισαγωγή του 2 6 9 1 2 3 7 13 Προώθησε την μέση τιμή προς τα πάνω

B-trees Η δυσκολότερη περίπτωση : Tree T0; Εισαγωγή του 2 Υπερχείλιση, προώθησε τη μέση τιμή 22 6 9 1 3 7 13

B-trees Η δυσκολότερη περίπτωση : Tree T0; Εισαγωγή του 2 Τελικό στάδιο 2 6 9 1 3 7 13

B-trees - Εισαγωγή Ερώτηση: τι θα γίνει εάν υπάρχουν μέσες τιμές; (Π.χ., τάξη 4) Απάντηση: λειτουργεί οτιδήποτε από τα δύο

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

Ψευδοκώδικας INSERTION OF KEY K find the correct leaf node L ; if ( L overflows ){ split L, by pushing the middle key upstairs to parent node P ; if ( P overflows){ } else{ repeat the split recursively; add the key K in node L ; /* Διατήρησε την διάταξη των κλειδιών στον κόμβο L */ }

Ευρετηριοποίηση (Indexing)- Περιληπτικά Πρωτεύοντα / δευτερεύοντα ευρετήρια Σειριακή μέθοδος προσπέλασης (ISAM) B - trees, Ορισμός, αναζήτηση, εισαγωγή, διαγραφή B+ - trees Κατακερματισμός Στατικός κατακερματισμός Δυναμικός κατακερματισμός

Διαγραφή Ο αλγόριθμος συνοπτικά : Διέγραψε κλειδί Σε περίπτωση υπερχείλισης μπορεί να προκληθεί συγχώνευση Στην πράξη κάποιοι σχεδιαστές απλά αφήνουν να συμβεί υπερχείλιση...

B-trees Διαγραφή 1 η Περίπτωση: διαγραφή κλειδιού από κόμβο φύλο - χωρίς υπερχείλιση 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος

B-trees Διαγραφή 1 η Περίπτωση: διαγραφή κλειδιού από κόμβο φύλο - χωρίς υπερχείλιση Π.χ.(Διέγραψε το 3 απότοδέντροfrom T0) <6 6 >6 <9 9 >9 1 3 7 13

B-trees Διαγραφή Η ευκολότερη περίπτωση: Tree T0; Διαγραφή του 3 <6 6 >6 <9 9 >9 1 7 13

B-trees Διαγραφή Η ευκολότερη περίπτωση: Tree T0; Διαγραφή του 3 ΤΕΛΙΚΟ ΔΕΝΤΡΟ <6 6 >6 <9 9 >9 1 7 13

B-trees Διαγραφή 1 η Περίπτωση: διαγραφή κλειδιού από κόμβο φύλο - χωρίς υπερχείλιση 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος

B-trees Διαγραφή 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση (Π.χ., διέγραψε το 6 από το T0) <6 6 >6 <9 9 >9 Διέγραψε & προώθησε: 1 3 7 13

B-trees Διαγραφή 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση (Π.χ., διέγραψε το 6 από το T0) <6 >6 <9 9 >9 Διέγραψε & προώθησε: 1 3 7 13

B-trees Διαγραφή 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση (Π.χ., διέγραψε το 6 από το T0) <6 3 >6 <9 9 >9 Διέγραψε & προώθησε: 1 7 13

B-trees Διαγραφή 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση (Π.χ., διέγραψε το 6 από το T0) ΤΕΛΙΚΟ ΔΕΝΤΡΟ <3 3 >3 <9 9 >9 1 7 13

B-trees Διαγραφή 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση (Π.χ., διέγραψε το 6 από το T0) Ερώτηση: Πως προωθούμε? Απάντηση: επέλεξε το μεγαλύτερο κλειδί από το αριστερότερο υποδέντρο (ή το μικρότερο από το δεξί υπόδεντρο) Παρατήρηση: Κάθε διαγραφή οδηγεί τελικά σε διαγραφή κλειδιού από κάποιο κόμβο φύλλο

B-trees Διαγραφή 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση (Π.χ., διέγραψε το 6 από το T0) <6 3 >6 <9 9 >9 Διέγραψε & προώθησε: 1 7 13

B-trees Διαγραφή 1 η Περίπτωση: διαγραφή κλειδιού από κόμβο φύλο - χωρίς υπερχείλιση 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος

B-trees Διαγραφή 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος (Π.χ., διέγραψε το 7 από το T0) <6 6 >6 <9 9 >9 Διέγραψε & δάνεισε: 1 3 7 13

B-trees Διαγραφή 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος (Π.χ., διέγραψε το 7 από το T0) Πλούσιος γείτονας <6 >6 <9 6 9 >9 Διέγραψε & δάνεισε: 1 3 13

3 η B-trees Διαγραφή Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος Πλούσιος γείτονας = μπορεί να δώσει ένα κλειδί χωρίς υπερχείλιση Δανείζει ένα κλειδί : πάντα ΔΙΑΜΕΣΟΥ του ΜΗΤΡΙΚΟΥ ΚΟΜΒΟΥ!

B-trees Διαγραφή 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος (Π.χ., διέγραψε το 7 από το T0) Πλούσιος Γείτονας <6 >6 <9 6 9 >9 Διέγραψε & δάνεισε: 1 3 13 OXI!

B-trees Διαγραφή 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος (Π.χ., διέγραψε το 7 από το T0) <6 >6 <9 6 9 >9 Διέγραψε & δάνεισε: 1 3 13

B-trees Διαγραφή 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος (Π.χ., διέγραψε το 7 από το T0) <6 >6 <9 3 9 >9 Διέγραψε & δάνεισε: 1 6 13

B-trees Διαγραφή 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος (Π.χ., διέγραψε το 7 από το T0) ΤΕΛΙΚΟ ΔΕΝΤΡΟ <3 >3 <9 3 9 >9 Διέγραψε & δάνεισε διαμέσου του μητρικού κόμβου: 1 6 13

B-trees Διαγραφή 1 η Περίπτωση: διαγραφή κλειδιού από κόμβο φύλο - χωρίς υπερχείλιση 2 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - χωρίς υπερχείλιση 3 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και πλούσιος γειτονικός κόμβος 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος

B-trees Διαγραφή 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος (Π.χ., διέγραψε το 13 από το T0) <6 6 >6 <9 9 >9 1 3 7 13

B-trees Διαγραφή 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος (Π.χ., διέγραψε το 13 από το T0) <6 6 >6 <9 9 >9 1 3 7

B-trees Διαγραφή 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος (Π.χ., διέγραψε το 13 από το T0) Συγχώνευσε φτωχό <6 6 9 γείτονα >6 <9 >9 1 3 7

B-trees Διαγραφή 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος (Π.χ., διέγραψε το 13 από το T0) Συγχώνευσε, αποσπώντας ένα κλειδί από τον πατέρα Ακριβώςτοαντίθετοαπότηνεισαγωγή: διέσπασε και προώθησε προς τα επάνω, vs. Συγχώνευσε και προώθησε προς τα κάτω Παράδειγμα:...

B-trees Διαγραφή 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος (Π.χ., διέγραψε το 13 από το T0) Συγχώνευσε φτωχό <6 6 γείτονα 1 3 >6 7 9

B-trees Διαγραφή 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος (Π.χ., διέγραψε το 13 από το T0) ΤΕΛΙΚΟ ΔΕΝΤΡΟ<6 6 1 3 >6 7 9

B-trees Διαγραφή 4 η Περίπτωση: διαγραφή κλειδιού από εσωτερικό κόμβο - υπερχείλιση και φτωχός γειτονικός κόμβος (Π.χ., διέγραψε το 13 από το T0) απέσπασε κλειδί από τον μητρικό κόμβο και συγχώνευσε Ερώτηση: Τι θα συμβεί αν συμβεί υπερχείλιση στον μητρικό κόμβο; Απάντηση: επανέλαβε αναδρομικά

Διαγραφή B-tree Ψευδοκώδικας DELETION OF KEY K locate key K, in node N if( N is a non-leaf node) { delete K from N ; find the immediately largest key K1 ; /* το οποίο εξασφαλίζεται ότι θα είναι στον κόμβο φύλλο L */ copy K1 in the old position of K ; invoke this DELETION routine on K1 from the leaf node L ; else { /*Ο N είναι κόμβος φύλλο */... (next slide..)

Διαγραφή B-tree Ψευδοκώδικας /* Ο N είναι κόμβος φύλλο */ if( N underflows ){ let N1 be the sibling of N ; if( N1 is "rich"){ /* ie.,ο N1 μπορεί να μας δανείσει ένα κλειδί */ borrow a key from N1 THROUGH the parent node; }else{ /* N1 είναι έίναι μακριά από τον κίνδυνο της υπερχείλισης κατά ένα κλειδί */ MERGE: pull the key from the parent P, and merge it with the keys of N and N1 into a new node; if( P underflows){ repeat recursively } } }

B-trees πρακτικά: Πρακτικά: Όχι κενά φύλλα Θεωρία <6 6 >6 <9 9 Δείκτες προς τις εγγραφές >9 1 3 7 13

B-trees πρακτικά: Πρακτικά: Όχι κενά φύλλα πράξη <6 6 >6 <9 9 Δείκτες προς τις εγγραφές >9 1 3 7 13

B-trees πρακτικά: Πρακτικά: <6 6 9 >6 <9 >9 1 3 7 13 ΑΦΜ 3 7 6 9 1

B-trees πρακτικά: Πρακτικά τα πρότυπα είναι: - Κόμβοι φύλλα: (v1, rp1, v2, rp2, vn, rpn) - Εσωτερικοί κόμβοι: (p1, v1, rp1, p2, v2, rp2, ) <6 6 >6 <9 9 >9 1 3 7 13

Ευρετηριοποίηση (Indexing)- Περιληπτικά Πρωτεύοντα / δευτερεύοντα ευρετήρια Σειριακή μέθοδος προσπέλασης (ISAM) B - trees, B+ - trees Κατακερματισμός

B+ trees - κίνητρο B-tree τύπωσε τα κλειδιά σε ταξινομημένη σειρά : <6 6 >6 <9 9 >9 1 3 7 13

B+ trees - κίνητρο B-tree: χρειάζεται να επιστρέφει στον μητρικό κόμβο (back-tracking) Πώς θα το αποφύγουμε; <6 6 >6 <9 9 >9 1 3 7 13

Λύση: B + -trees Διευκόλυνε σειριακές πράξεις Ενώνουν όλους τους κόμβους φύλλα μαζί και Αντιγράφουν κλειδιά των εσωτερικών κόμβων ώστε να βεβαιωθεί ότι κάθε κλειδί εμφανίζεται στο επίπεδο των φύλλων

B+ trees <6 6 >=6 <9 9 >=9 1 3 6 7 9 13

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

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

Κόμβοι φύλλα σε ένα B + -Tree Ιδιότητες Για κάθε i = 1, 2,..., n 1 οδείκτηςp i, είτε δείχνει σε εγγραφές αρχείων με τιμή κλειδιού αναζήτησης K, i είτε σε κάποιο κάδο δεικτών προς εγγραφές αρχείων, όπου κάθε εγγραφή έχει κλειδί αναζήτησης με τιμή K i. Θα χρησιμοποιήσουμε την δομή κάδων μόνο εάν τα κλειδιά αναζήτησης δεν αποτελούν πρωτεύων κλειδί Εάν οι κόμβοι L i,l J είναι φύλλα και i< j, τότε οι τιμές των κλειδιών αναζήτησης του L i είναι μικρότερες από τις τιμές των κλειδιών αναζήτησης του L j ΟδείκτηςP n δείχνει στον επόμενο κόμβο φύλλο κατά την φορά διάταξης των κλειδιών αναζήτησης

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

B-Tree vs B+-Tree B-tree (επάνω) και B+-tree (κάτω) για ίδιο σύνολο δεδομένων

B+ tree Εισαγωγή - Ψευδοκώδικας INSERTION OF KEY K insert search-key value to L such that the keys are in order; if ( L overflows) { split L ; insert (ie., COPY) smallest search-key value of new node to parent node P ; if ( P overflows) { repeat the B-tree split procedure recursively; /* Παρατήρηση: διάσπαση του B-TREE; Όχι το B+ -tree */ } }

B+ tree Εισαγωγή Ψευδοκώδικας (συνέχεια) /* ΠΡΟΣΟΧΗ: Διαχειριζόμαστε μια διάσπαση στο επίπεδο των κόμβων φύλλων με το να αντιγράψουμε το μέσο κλειδί στον κόμβο του ανώτερου επιπέδου. Διαχειριζόμαστε μια διάσπαση σε υψηλότερο επίπεδο με το να προωθούμε το μέσο κλειδί προς τα επάνω */

B+ trees - Εισαγωγή Π.χ., εισαγωγή 8 <6 6 >=6 <9 9 >=9 1 3 6 7 9 13

B+ trees - Εισαγωγή Π.χ., εισαγωγή 8 <6 6 >=6 <9 9 >=9 1 3 6 7 9 13 8

B+ trees - Εισαγωγή Π.χ., εισαγωγή 8 <6 1 3 6 >=6 <9 6 9 >=9 7 8 9 13 Αντέγραψε την μεσαία τιμή επάνω

B+ trees - Εισαγωγή Π.χ., εισαγωγή 8 <6 6 >=6 <9 9 7 >=9 1 3 6 7 8 9 13 Αντέγραψε την μεσαία τιμή επάνω

B+ trees - Εισαγωγή Π.χ., εισαγωγή 8 <6 6 >=6 <9 9 7 Σε περίπτωση υπερχείλισης σε εσωτερικό κόμβο απλά προώθησε την μεσαία τιμή >=9 1 3 6 7 8 9 13 Αντέγραψε την μεσαία τιμή επάνω

B+ trees - Εισαγωγή Π.χ., εισαγωγή 8 <6 <7 7 >=7 6 9 <9 >=6 >=9 1 3 6 7 8 9 13 Τελικό Δέντρο

B-Trees vs B+-Trees Πλεονεκτήματα ευρετηρίων που υλοποιούνται με B-Trees: Μπορεί να χρησιμοποιηθούν λιγότεροι κόμβοι από ένα αντίστοιχο B + -Tree. Μερικές φορές είναι δυνατό να βρούμε την τιμή του κλειδιού αναζήτησης πριν προσπελάσουμε τον κόμβο φύλλο. Μειονεκτήματα ευρετηρίων που υλοποιούνται με B-Trees: Μόνο ένα μικρό κλάσμα των κλειδιών αναζήτησης μπορεί να βρεθούν νωρίς Οι εσωτερικοί κόμβοι είναι συνήθως μεγαλύτεροι, έτσι ο βαθμός διακλάδωσης(fan-out) fo μειώνεται. Έτσι, τα B-Trees έχουν συνήθως μεγαλύτερο βάθος από τα αντίστοιχα B + -Trees. Η εισαγωγή και διαγραφή είναι περισσότερο πολύπλοκη απ ότι στα B + - trees Υλοποίηση δυσκολότερη από ότι για B + -Trees. Τυπικά, τα πλεονεκτήματα των B-Trees δεν καταργούν τα μειονεκτήματα

B*-tree Σε ένα B-tree, χρησιμοποίηση (utilization) χειρότερης περίπτωσης = 50%, εάν διασπάσουμε όλες τις σελίδες Πως θα αυξήσουμε την χρησιμοποίηση στα B - trees? με τα B* - trees!

B-trees και B*-trees Π.χ., Tree T0; Εισαγωγή του 2 <6 6 >6 <9 9 >9 1 3 7 13 2

B*-trees: Αναβληθείς διάσπαση! Αντί να προκληθεί διάσπαση, δάνεισε κλειδί στον γειτονικό κόμβο! (διαμέσου του μητρικού κόμβου, φυσικά!) <6 6 >6 <9 9 >9 1 3 7 13 2

B*-trees: Αναβληθείς διάσπαση! Αντί να προκληθεί διάσπαση, δάνεισε κλειδί στον γειτονικό κόμβο! (διαμέσου του μητρικού κόμβου, φυσικά!) <3 3 >3 <9 9 >9 ΤΕΛΙΚΟ ΔΕΝΤΡΟ 1 2 6 7 13 2

B*-trees: Αναβληθείς διάσπαση! Παρατηρήσεις: μικρότερο ύψος, περισσότερο συμπαγές, ταχύτερο δέντρο Είναι μια από τις σπάνιες περιπτώσεις όπου η χρησιμοποίηση χώρου και η ταχύτητα αυξάνονται ταυτόχρονα Αλλά: τι γίνεται στην περίπτωση που ο γειτονικός κόμβος δεν έχει χώρο για να μας δανείσει ;

B*-trees: Αναβληθείς διάσπαση! Αλλά: τι γίνεται στην περίπτωση που ο γειτονικός κόμβος δεν έχει χώρο για να μας δανείσει ; Απάντηση: Διάσπαση 2-σε-3 : Πάρε τα κλειδιά από τον γειτονικό κόμβο Συγχώνευσέ τα με αυτά του αρχικού κόμβου (και ένα κλειδί από τον πατέρα) Διέσπασέ τα στα τρία Λεπτομέρειες: αρκετά μπερδεμένο (ακόμα χειρότερο στην περίπτωση της διαγραφής)

Συμπεράσματα Όλες οι παραλλαγές ενός B-tree μπορούν να χρησιμοποιηθούν για κάθε είδους ευρετήριο Πρωτεύον/ Δευτερεύον Αραιό/ Πυκνό Όλα έχουν εξαιρετική απόδοση χειρότερης περίπτωσης O(logN) για εισαγωγές/διαγραφές/αναζήτηση Είναι η δομή ευρετηρίου που συνήθως χρησιμοποιείται

Ευρετηριοποίηση (Indexing)- Περιληπτικά Πρωτεύοντα / δευτερεύοντα ευρετήρια Σειριακή μέθοδος προσπέλασης (ISAM) B - trees, B+ - trees Κατακερματισμός Στατικός Δυναμικός