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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επεξεργασία ερωτημάτων

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

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

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

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

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

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

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

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

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

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

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

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

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

Advanced Data Indexing

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

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

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

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

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

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

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

Σχεδιασμός μιας εφαρμογής ΒΔ: Βήματα. 1. Συλλογή και Ανάλυση Απαιτήσεων(requirement analysis)

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

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

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

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

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

Αποθήκευση εδομένων. Μαγνητικοί ίσκοι. Μαγνητικές ταινίες για. Εισαγωγή

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

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

Union Find, Λεξικό. Δημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

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

Αποθήκευση εδοµένων. Μαγνητικοί ίσκοι. Μαγνητικές ταινίες για. Εισαγωγή

Transcript:

Ευρετήρια 1 Ευρετήρια Ένα ευρετήριο (index) είναι μια βοηθητική δομή αρχείου που κάνει πιο αποδοτική την αναζήτηση μιας εγγραφής σε ένα αρχείο Το ευρετήριο καθορίζεται (συνήθως) σε ένα γνώρισμα του αρχείου που καλείται πεδίο ευρετηριοποίησης(indexing field) τιµή γνωρίσµατος Αρχείο Ευρετηρίου τιµή γνωρίσµατος υπόλοιπα γνωρίσµατα Αρχείο Δεδομένων Εγγραφή στο ευρετήριο: Τιμή Πεδίου Ευρετηριοποίησης Δείκτης στο block της εγγραφής 2 Βάσεις εδοµένων2012-2013:ευρετήρια 1

Ευρετήρια Στόχος: αποδοτικές λειτουργίες αναζήτησης Οι λειτουργίες ενημέρωσης γίνονται γενικά πιο αργές, γιατί απαιτούν ενημέρωση και του ευρετηρίου Διαφορετικού τύπου εγγραφές ανάλογα με το πεδίο ευρετηριοποίησης: (α)πεδίοδιάταξηςτουαρχείουήόχι (β)κλειδίήόχι (πρωτεύον/δευτερεύον) διαφορετικοί ορισμοί στα βιβλία 3 Ευρετήρια Πυκνό ευρετήριο: μια καταχώρηση για κάθε εγγραφή του αρχείου Μη πυκνό ευρετήριο 4 Βάσεις εδοµένων2012-2013:ευρετήρια 2

Πρωτεύον Ευρετήριο Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου Για κάθε block του αρχείου (μη πυκνό ευρετήριο) η εγγραφή i του ευρετηρίου είναι της μορφής(<κ(i), P(i)>) όπου: Κ(i): η τιμή του πρωτεύοντος κλειδιού της πρώτης εγγραφής του block (άγκυρα του block) P(i):δείκτηςπροςτοblock Το ευρετήριο στο πεδίο διάταξης(+ κλειδί) είναι ένα μη πυκνό ευρετήριο 5 Πρωτεύον Ευρετήριο Αρχείο Ευρετηρίου Αρχείο Δεδομένων Ποιο είναι το μέγεθος του ευρετηρίου (πόσα blocks); 6 Βάσεις εδοµένων2012-2013:ευρετήρια 3

Πρωτεύον Ευρετήριο Παράδειγμα(υπολογισμός μεγέθους αρχείου ευρετηρίου) Έστω διατεταγμένο αρχείο με r A = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R A = 100 bytes, όπου το πεδίο κλειδιού διάταξης έχει μέγεθος V A = 9 bytes, μη εκτεινόμενη καταχώρηση. Κατασκευάζουμε πρωτεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου: 45 blocks 7 Πρωτεύον Ευρετήριο Αναζήτηση Δυαδική αναζήτηση στο πρωτεύον ευρετήριο Ανάγνωση του block από το αρχείο δεδομένων 8 Βάσεις εδοµένων2012-2013:ευρετήρια 4

Παράδειγμα(υπολογισμός κόστους αναζήτησης) Δεδομένα όπως πριν Πρωτεύον Ευρετήριο (Έστωδιατεταγμένοαρχείομε r A = 30.000εγγραφές,μέγεθοςblockB=1024 bytes,σταθερού μεγέθουςεγγραφέςμεγέθουςr A = 100 bytes, όπου το πεδίο κλειδιού διάταξης έχει μέγεθος V A = 9 bytes, μη εκτεινόμενη καταχώρηση. Κατασκευάζουμε πρωτεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes) Μέγεθος αρχείου δεδομένων:3.000 blocks Μέγεθος αρχείου ευρετηρίου: 45 blocks Αναζήτηση χωρίς ευρετήριο: log 3.000 = 12 blocks Αναζήτηση με ευρετήριο: log 45 + 1 = 7 blocks bfr A = 10 bfr E = 68 Δυαδική γιατί το αρχείο ταξινομημένο block ευρετηρίου block αρχείου 9 Πρωτεύον Ευρετήριο Εισαγωγή εγγραφής αλλαγές και στο πρωτεύον ευρετήριο μη διατεταγμένο αρχείο υπερχείλισης συνδεδεμένη λίστα εγγραφών υπερχείλισης Διαγραφή εγγραφής αλλαγές και στο πρωτεύον ευρετήριο χρήση σημαδιών διαγραφής 10 Βάσεις εδοµένων2012-2013:ευρετήρια 5

Ευρετήρια Access paths(μονοπάτια προσπέλασης) Το ευρετήριο αρχείου είναι (πάντα) ένα διατεταγμένο αρχείο με σταθερού μήκους εγγραφές Το αρχείο ευρετηρίου καταλαμβάνει μικρότερο χώρο από το ίδιο το αρχείο δεδομένων(οι καταχωρήσεις είναι μικρότερες και λιγότερες) Κάνοντας δυαδική αναζήτηση στο ευρετήριο (γιατί το ευρετήριο είναι διατεταγμένο αρχείο) βρίσκουμε τον δείκτη στο block όπου αποθηκεύεται η εγγραφή που θέλουμε 11 Ευρετήριο Συστάδων Ευρετήριο συστάδων (clustering index): ορισμένο στο πεδίο διάταξης [το οποίο όμως δεν είναι κλειδί] Υπάρχει μια εγγραφή για κάθε διακεκριμένη τιμή του πεδίου διάταξης (συστάδας) του αρχείου που περιέχει: τηντιμήαυτή ένα δείκτη προς το πρώτο block του αρχείου δεδομένων που περιέχει μιαεγγραφήμετηντιμήαυτήστοπεδίοσυστάδας Τοευρετήριοστοπεδίοδιάταξης(+όχικλειδί)είναιένα μηπυκνόευρετήριο 12 Βάσεις εδοµένων2012-2013:ευρετήρια 6

Ευρετήριο Συστάδων Ευρετήριο συστάδων ή συγκροτημένο ευρετήριο Όταν η διάταξη του ευρετηρίου ακολουθεί αυτή του αρχείου δεδομένων 13 Παράδειγμα(υπολογισμός μεγέθους ευρετηρίου) Ευρετήριο Συστάδων Έστω διατεταγμένο αρχείο με r A = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R A =100 bytes, μηεκτεινόμενηκαταχώρηση, όπου το πεδίο διάταξης έχει μέγεθος V A = 9 bytes και υπάρχουν 1000 διαφορετικές τιμές και οι εγγραφές είναι ομοιόμορφα κατανεμημένες ως προς τις τιμές αυτές. Υποθέτουμε ότι χρησιμοποιούνται άγκυρες block, κάθε νέα τιμή του πεδίου διάταξης αρχίζει στην αρχή ενός νέου block. Κατασκευάζουμε ευρετήριο συστάδων, μέγεθος δείκτηblockp=6bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος ευρετηρίου συστάδων: 15 blocks bfr A = 10 bfr E = 68 14 Βάσεις εδοµένων2012-2013:ευρετήρια 7

Ευρετήριο Συστάδων Αναζήτηση(όπως πριν) Δυαδική αναζήτηση στο ευρετήριο Ανάγνωση blocks (τώρα μπορεί να είναι παραπάνω από ένα) από το αρχείο δεδομένων 15 Ευρετήριο Συστάδων Παράδειγμα(υπολογισμός κόστους αναζήτησης) (στοιχεία όπως πριν) Έστω διατεταγμένο αρχείο με r Α = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R Α = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο διάταξης έχει μέγεθος V Α = 9 bytes και υπάρχουν 1000 διαφορετικές τιμές και οι εγγραφές είναι ομοιόμορφα κατανεμημένες ως προς τις τιμές αυτές. Υποθέτουμε ότι χρησιμοποιούνται άγκυρες block, κάθε νέα τιμή του πεδίου διάταξης αρχίζει στην αρχή ενός νέου block. Κατασκευάζουμε ευρετήριο συστάδων,μέγεθοςδείκτηblock P=6bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου: 15 blocks Αναζήτηση χωρίς ευρετήριο: log 3.000 + ταιριάσματα(= 3) 15 blocks Αναζήτηση με ευρετήριο: log 15 + 3= 7 blocks 16 Βάσεις εδοµένων2012-2013:ευρετήρια 8

Δευτερεύον Ευρετήριο Δευτερεύον ευρετήριο (secondary index): ορισμένο σε πεδίο διαφορετικό του πεδίου διάταξης 17 Δευτερεύον Ευρετήριο Περίπτωση 1: Το πεδίο ευρετηριοποίησης είναι κλειδί (καλείται και δευτερεύον κλειδί) Υπάρχει μια εγγραφή για κάθε εγγραφή του αρχείου που περιέχει: τηντιμήτουκλειδιούγιααυτήντηνεγγραφή ένα δείκτη προς το block (ή την εγγραφή) του αρχείου δεδομένων πουπεριέχειτηνεγγραφήμετηντιμήαυτή Το ευρετήριο σε πεδίο ΟΧΙ διάταξης(+ κλειδί) είναι ένα πυκνό ευρετήριο 18 Βάσεις εδοµένων2012-2013:ευρετήρια 9

Δευτερεύον Ευρετήριο Παράδειγμα(υπολογισμός μεγέθους ευρετηρίου) Έστω αρχείο με r Α = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R Α = 100 bytes, μη εκτεινόμενη καταχώρηση,όπουτοπεδίοκλειδιούέχειμέγεθοςv Α =9bytesαλλάδενείναι πεδίο διάταξης. Κατασκευάζουμε δευτερεύον ευρετήριο, μέγεθος δείκτη blockp=6bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου: 442 blocks 45 για πρωτεύον 19 Δευτερεύον Ευρετήριο Παράδειγμα(υπολογισμός κόστους αναζήτησης) Στοιχεία όπως πριν (Έστωαρχείομεr Α =30.000εγγραφές,μέγεθοςblockB=1024bytes,σταθερούμεγέθουςεγγραφέςμεγέθουςR Α =100bytes,μη εκτεινόμενη καταχώρηση, όπου το πεδίο κλειδιού έχει μέγεθος V Α = 9 bytes αλλά δεν είναι πεδίο διάταξης. Κατασκευάζουμε δευτερεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes) Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου: 442 blocks bfr A = 10 bfr E = 68 Αναζήτηση χωρίς ευρετήριο (σειριακή αναζήτηση, γιατί το αρχείο δεδομένων δεν είναι ταξινομημένο): 3.000/2 = 1500 blocks(κατά μέσο όρο) Αναζήτηση με ευρετήριο: log 442 + 1 = 10blocks Για πρωτεύον ήταν 45 και 7 blocks αντίστοιχα 20 Βάσεις εδοµένων2012-2013:ευρετήρια 10

Δευτερεύον Ευρετήριο Περίπτωση 2: Το πεδίο ευρετηριοποίησης δεν είναι κλειδί 1. Πυκνό ευρετήριο: μία καταχώρηση για κάθε εγγραφή 2. Μεταβλητού μήκους εγγραφές με ένα επαναλαμβανόμενο πεδίο για το δείκτη 3. Μία εγγραφή ευρετηρίου για κάθε τιμή του πεδίου ευρετηριοποίησης + ένα ενδιάμεσο επίπεδο για την διαχείριση των πολλαπλών δεικτών 21 Δευτερεύον Ευρετήριο Συστάδων Παράδειγμα(υπολογισμός μεγέθους ευρετηρίου) Έστωμηδιατεταγμένοαρχείο(αρχείοσωρού)μεr A =30.000εγγραφές,μέγεθοςblock B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R A = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο ευρετηριοποίησης (δηλαδή, το πεδίο στο οποίο θα κατασκευάσουμε το ευρετήριο) έχει μέγεθος V A = 9 bytes. Υπάρχουν 1000 διαφορετικές τιμές και οι εγγραφές είναι ομοιόμορφα κατανεμημένες ως προς τις τιμές αυτές. Κατασκευάζουμε ευρετήριο συστάδων χρησιμοποιώντας την επιλογή(3), μέγεθοςδείκτηblockp=6bytes Ευρετήριο bfr Ε = 68 b E = 15 κόστος αναζήτησης; Ενδιάμεσο επίπεδο-- Ποια είναι η οργάνωση του; bfr ΕE = 170 b EE = 177 blocks 22 Βάσεις εδοµένων2012-2013:ευρετήρια 11

Δευτερεύον Ευρετήριο Αναζήτηση Δυαδική αναζήτηση στο δευτερεύον ευρετήριο Ανάγνωση του block(ή των blocks) από το ενδιάμεσο επίπεδο Ανάγνωση των blocks (συνήθως τόσα όσες οι εγγραφές που ταιριάζουν) από το αρχείο δεδομένων Εισαγωγή Απλή αν δεν αφορά εισαγωγή νέας τιμής στο ευρετήριο 23 Αρχείο Ευρετηρίου 4 7 12 14 25 27 33 36 38 49 51 66 69 74 80 86 100 103 108 111 125 129 133 136 142 144 158 Αρχείο δεδομένων 36 24 Βάσεις εδοµένων2012-2013:ευρετήρια 12

Ευρετήρια Επιπρόσθετες δομές για την πιο αποδοτική εκτέλεση ερωτήσεων/αναζητήσεων προκαλούν όμως επιβάρυνση στις τροποποιήσεις Εύκολη η λογική διάταξη των εγγραφών με βάση το πεδίο ευρετηριοποίησης Ανακτήσεις με σύνθετες συνθήκες, μπορεί να γίνουν χρησιμοποιώντας τα blocks του ευρετηρίου 25 Ευρετήριο Πολλών Επιπέδων Ιδέα: Τα ευρετήρια είναι αρχεία -χτίζουμε ευρετήρια πάνω στα αρχεία ευρετηρίου Το αρχείο είναι διατεταγμένο και το πεδίο διάταξης είναι και κλειδί (άρα πρωτεύον ευρετήριο!) 26 Βάσεις εδοµένων2012-2013:ευρετήρια 13

Παράγοντας ομαδοποίησης f O = 3 Επίπεδο Ρίζα (1 Block) 4 49 108 Ευρετήριο 3ου επιπέδου 4 14 33 49 69 86 108 129 142 Ευρετήριο 2ου επιπέδου 4 7 12 14 25 27 33 36 38 49 51 66 69 74 80 86 100 103 108 111 125 129 133 136 142 144 158 36 Αρχείο δεδομένων Ευρετήριο 1ου επιπέδου (αρχικό ευρετήριο) 27 Ευρετήριο Πολλών Επιπέδων Έστω ότι το αρχείο ευρετηρίου είναι το πρώτο ή βασικό επίπεδο Έστω ότι ο παράγοντας ομαδοποίησης είναι f 0 και ότι έχει r 1 blocks Το αρχείο ευρετηρίου είναι διατεταγμένο και το πεδίο διάταξης είναι και κλειδί Δημιουργούμε ένα πρωτεύον ευρετήριο για το ευρετήριο πρώτου επιπέδου - δεύτερο επίπεδο Παράγοντας ομαδοποίησης: f 0 Αριθμός block (r 1 /f 0 ) Δημιουργούμε ένα πρωτεύον ευρετήριο για το ευρετήριο δεύτερου επιπέδου - τρίτο επίπεδο Παράγοντας ομαδοποίησης: f 0 Αριθμός block (r 1 /(f 0 ) 2 ) 28 Βάσεις εδοµένων2012-2013:ευρετήρια 14

Ευρετήριο Πολλών Επιπέδων Μέχρι πόσα επίπεδα: Μέχρι όλες οι εγγραφές τουευρετηρίου να χωρούν σε ένα block Έστω t κορυφαίο επίπεδο (top level) (r1 /(f 0 ) t ) = 1 Το f 0 ονομάζεται και παράγοντας διακλάδωσηςτου ευρετηρίου 29 Ευρετήριο Πολλών Επιπέδων Παράδειγμα(υπολογισμός μεγέθους ευρετηρίου) Έστω αρχείο με r A = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R A = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο κλειδιού έχει μέγεθος V A = 9 bytes αλλά δεν είναι πεδίο διάταξης. Κατασκευάζουμε δευτερεύον ευρετήριο στο πεδίο κλειδιού, μέγεθος δείκτη block P = 6bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου πρώτου επιπέδου: 442 blocks f 0 = (1024 / (9 + 6)) = 68 Μέγεθος αρχείου ευρετηρίου δεύτερου επιπέδου: (442 / 68) = 7 blocks Μέγεθος αρχείου ευρετηρίου τρίτουεπιπέδου: (7 / 68) = 1 block Άρα t = 3 30 Βάσεις εδοµένων2012-2013:ευρετήρια 15

Ευρετήριο Πολλών Επιπέδων Αναζήτηση p:= διεύθυνση του block του κορυφαίου επιπέδου του ευρετηρίου t:= αριθμός επιπέδων του ευρετηρίου forj=tto1step-1do/*απότηρίζαμέχριτοευρετήριο1 ου επιπέδου */ readblockμεδιεύθυνσηpτουευρετηρίουστοεπίπεδο j αναζήτησηστοblockpτηςεγγραφήςiμετιμήκ j (i) K<K j (i+1) read το block του αρχείου δεδομένων με διεύθυνση p AναζήτησηστοblockpτηςεγγραφήςiμετιμήΚ j (i) K<K j (i+1) 31 4 49 108 f O = 3 25 Ευρετήριο 3ου επιπέδου (επίπεδο ρίζας) 4 14 33 49 69 86 108 129 142 Ευρετήριο 2ου επιπέδου 4 7 12 14 25 27 33 36 38 49 51 66 69 74 80 86 100 103 108 111 125 129 133 136 142 144 158 25 Ευρετήριο 1ου επιπέδου (αρχικό ευρετήριο) Αρχείο δεδομένων 32 Βάσεις εδοµένων2012-2013:ευρετήρια 16

Ευρετήριο Πολλών Επιπέδων Παράδειγμα(υπολογισμός κόστους αναζήτησης) Έστω αρχείο με r A = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R A = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο κλειδιού έχει μέγεθος V A = 9 bytes αλλά δεν είναι πεδίο διάταξης,. Κατασκευάζουμε δευτερεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes Άρα t = 3 Παράδειγμα t + 1 = 4 προσπελάσεις Για το δευτερεύον ήταν 10 και χωρίς ευρετήριο 1500 33 Ευρετήριο Πολλών Επιπέδων Εισαγωγή/διαγραφή τροποποιήσεις πολλαπλών ευρετηρίων Δυναμικό πολυεπίπεδο ευρετήριο: Β-δέντρα και Β+-δέντρα 34 Βάσεις εδοµένων2012-2013:ευρετήρια 17

Πολύ-επίπεδα Ευρετήρια Τα αρχεία ευρετηρίων είναι απλά αρχεία, άρα και σε αυτά μπορούν να οριστούν ευρετήρια Καταλήγουμε λοιπόν σε μια ιεραρχία δομών ευρετηρίων (πρώτο επίπεδο, δεύτερο επίπεδο, κλπ.) Κάθε επίπεδο του ευρετηρίου είναι ένα διατεταγμένο αρχείο, συνεπώς, εισαγωγές/διαγραφές εγγραφών απαιτούν επιπλέον κόστος Ένα πολύ-επίπεδο ευρετήριο αποτελεί ένα Δέντρο Αναζήτησης Όπουκάθεκόμβος(block)έχειf 0 δείκτεςκαιf 0 τιμέςκλειδιού 35 Ευρετήριο 3ου επιπέδου (επίπεδο ρίζας) 108 49 4 Ευρετήριο 2ου επιπέδου 142 129 108 86 69 49 33 14 4 Δείκτης στο αρχείο δεδομένων (ή στην περίπτωση αρχείου ενδιάμεσου επιπέδου σε αυτό) 4 7 12 14 25 27 33 36 38 49 51 66 69 74 80 86 100 103 108 111 125 129 133 136 142 144 158 Ευρετήριο 1ου επιπέδου (αρχικό ευρετήριο) Σημείωση: στο αρχικό ευρετήριο μπορεί να βάζουμε μία τιμή για κάθε εγγραφή του αρχείου δεδομένων(πυκνό ευρετήριο) ή μια εγγραφή για κάθε διακριτή τιμή κλπ ανάλογα με το τύπο του πεδίου ευρετηριοποίησης(κλειδί/πεδίο ταξινόμησης) 36 Βάσεις εδοµένων2012-2013:ευρετήρια 18

Στη συνέχεια: Β-δέντρα, Β+-δέντρα 37 Δεντρικά Ευρετήρια 38 Βάσεις εδοµένων2012-2013:ευρετήρια 19

Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβοςτουπεριέχειτοπολύp-1τιμέςαναζήτησηςκαιρδείκτεςωςεξής P 1 K 1 P j K j P q-1 K q-1 P p δείκτης σε block του αρχείου δεδομένων Συμβολισμός: K i * X < K 1 Kj-1 < X < K j K p-1 < X Κ 1 < Κ 2 < Κ q -1 και για όλες τις τιμές X στα υποδέντρα ισχύει Κ j-1 < X < K j για 1 < j < p, X < K j για j =1, και Κ j -1 < Χ για j = p Σημείωση: Γενικά στα ευρετήρια, ζεύγη <τιμή, προσδιοριστής εγγραφής> 39 Δέντρα Αναζήτησης Κάθε κόμβος του δέντρου είναι ένα block στο δίσκο Ισοζυγισμένο: όλοι οι κόμβοι-φύλλα στο ίδιο επίπεδο Β-δέντρο: ένα δέντρο αναζήτησης που παραμένει ισοζυγισμένοκαι χωρίς «πολύ αδειανούς» κόμβους 40 Βάσεις εδοµένων2012-2013:ευρετήρια 20

Β-δέντρα Ένα Β-δέντρο τάξεως(order) 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 δείκτης δέντρου, K i τιμή αναζήτησης,pr i δείκτηςδεδομένων P 1 K 1 Pr 1... K j-1 Pr j-1 P j P q-1 K q-1 Pr q-1 P q Συμβολισμός K i * X < K 1 K j-1 < X < K j K q-1 < X 2. Σε κάθε κόμβο Κ 1 < Κ 2 < Κ q -1 3. Για όλες τις τιμές X στο υποδέντρο που δείχνει το P j ισχύει Κ j-1 < X < K j για 1 < j < q, X < K j για j =1, και Κ j -1 < Χ για j = q 41 Β-δέντρα 4. Κάθε κόμβος έχει το πολύp δείκτεςδέντρου 5. Κάθε κόμβος εκτός της ρίζας και των φύλλων έχει τουλάχιστον (p/2) δείκτες. Η ρίζα έχει τουλάχιστον 2 εκτός αν είναι ο μόνος κόμβος του δέντρου. 6. Ένας κόμβος με q δείκτες δέντρου περιέχει q - 1 τιμές πεδίου αναζήτησης (και άρα καιq-1δείκτεςδεδομένων). 7. Όλα τα φύλλα βρίσκονται στο ίδιο επίπεδο. Τα φύλλα έχουν την ίδια δομή εκτός του ότι οι δείκτες δέντρου είναι null. 42 Βάσεις εδοµένων2012-2013:ευρετήρια 21

Β-δέντρα (παράδειγµα) τάξηρ=3(2τιμέςανάκόμβο,3δείκτεςblockευρετηρίου) Δείκτης σε block ευρετηρίου (null για κόμβους φύλλα) 5* 8* 5* 5 Δείκτης στο block αρχείου δεδομένωνπου περιέχει το 5 43 Β-δέντρα Αναζήτηση Διαβάζουμε το block της ρίζας Αν η εγγραφή δεν υπάρχει στο κόμβο διαβάζουμε το αντίστοιχο block στο επόμενο πεδίο Εισαγωγή Αναζήτηση του κατάλληλου φύλλου και εισαγωγή της τιμής σε αυτό Τι γίνεται αν είναι«γεμάτος»;-> διάσπαση! 44 Βάσεις εδοµένων2012-2013:ευρετήρια 22

Β-δέντρα Εισαγωγή τιμής Αρχικά ένας μόνο κόμβος(ρίζα) στο Επίπεδο 0 Όταν ο κόμβος ρίζα γεμίσει (p 1 τιμές κλειδιού), νέα εισαγωγή οδηγεί στην διάσπαση του κόμβου σε δύο κόμβους στο Επίπεδο 1: η μεσαία τιμή πηγαίνει στη ρίζα, οι υπόλοιπες μοιράζονται εξίσου σε δύο κόμβους του Επιπέδου 1 Όταν ένας κόμβος εκτός της ρίζας γεμίσει, νέα εισαγωγή οδηγεί σε διάσπαση του κόμβου σε δύο κόμβους στο ίδιο επίπεδο και μεταφορά της μεσαίας τιμής στον γονέα του κόμβου ΠΡΟΣΟΧΗ: η εισαγωγή της μεσαίας τιμής στο γονέα αν ο γονέας είναι γεμάτος μπορεί να οδηγήσει σε διάσπασητου γονέα. Η διάσπαση μπορεί να οδηγήσει ως τη ρίζα, οπότε δημιουργείται και νέο επίπεδο. 45 Β-δέντρα (παράδειγµα) τάξηρ=3(2τιμέςανάκόμβο,3δείκτεςblockευρετηρίου)-εισαγωγή5,8,7,14,19,6,10 Δείκτης σε block ευρετηρίου (null για κόμβους φύλλα) 5* 8* 5* 5 Δείκτης στο block αρχείου δεδομένωνπου περιέχει το 5 46 Βάσεις εδοµένων2012-2013:ευρετήρια 23

Β-δέντρα Διαγραφή τιμής Τιμή προς διαγραφή ανήκει σε φύλλο->ok Τιμή προς διαγραφή ανήκει σε εσωτερικό κόμβο-> Αν σβήσουμε το K i, τότε το μικρότερο κλειδί του υποδέντρου P i+1 πρέπει να το αντικαταστήσει (δηλαδή το μικρότερο κλειδί του κόμβου στα δεξιά του κλειδιού που διαγράφεται) Τι γίνεται αν ο κόμβος «αδειάσει»; 47 Β-δέντρα Διαγραφή τιμής Αν υποχείλιση αν είναι δυνατόν ανακατανομή με τον αριστερό αδελφό αν όχι, προσπάθεια ανακατανομής με το δεξιό αδελφό αν όχι ανακατανομή, συγχώνευση των κόμβων σε περίπτωση συγχώνευσης: διαγράφουμε και την αντίστοιχη εγγραφή στον γονέα (πιθανή υποχείλιση και στο γονέα) Σε κάθε περίπτωση(ανακατανομή και συγχώνευση) κατεβάζουμε και την τιμή του γονέα καιστογονέαανεβαίνειηνέαμεσαίατιμή 48 Βάσεις εδοµένων2012-2013:ευρετήρια 24

Β-δέντρα (παράδειγµα) Τάξηςp=5--τοπολύ4,τουλάχιστον2τιμέςανάκόμβο(εκτόςτηςρίζας) 51031816227253029334029192013135 49 Β-δέντρα: παράδειγµα ρίζα 18* 5* 10* 22* 30* 1* 2* 3* 13* 16* 25* 29* 7* 9* 19* 20* 33* 35* 40* 50 Βάσεις εδοµένων2012-2013:ευρετήρια 25

Β-δέντρα (παράδειγµα) Τάξηςp=5--τοπολύ4,τουλάχιστον2τιμέςανάκόμβο(εκτόςτηςρίζας) 51031816227253029334029192013135 Διαγραφή τιμής σε φύλλο χωρίς υποχείλιση 1 Διαγραφή τιμής σε εσωτερικό κόμβο χωρίς υποχείλιση 30 Διαγραφή τιμής σε φύλλο με υποχείλιση και δανεισμό 7 Διαγραφήτιμήςσεφύλλο μευποχείλισηκαισυγχώνευση7καιμετά5 51 Β-δέντρα Κάθε κόμβος του B-δέντρου καταλαμβάνει μια σελίδα (block) Υπολογισμός τάξης p(ώστε κάθε κόμβος να χωρά σε ένα block) Έστω Β μέγεθος block, V μέγεθος πεδίου αναζήτησης (δηλαδή του πεδίου ευρετηριοποίησης), Pr μέγεθος δείκτη δεδομένων (εγγραφής) και P μέγεθος δείκτη δέντρου(block) p*p+(p-1)*(pr+v) B p*(p+pr+v) B+V+Pr p (B+V+Pr)/(P+Pr+V) Παράδειγμα, V = 9 bytes, B = 512 bytes, Pr = 7 bytes, P = 6 bytes, τότε p = 23 52 Βάσεις εδοµένων2012-2013:ευρετήρια 26

Β-δέντρα Υπολογισμός επιπέδων Έστωόπωςπριν,p=23.Έστωότικάθεκόμβοςείναιγεμάτοςκατά69%. Πόσα επίπεδα χρειαζόμαστε για να ευρετηριοποιήσουμε 65.000 τιμές; (p-1)*0,69=22*0,69=15κλειδιάκαι15+1=16δείκτεςανάκόμβο #κόμβων #τιμές #δείκτες Ρίζα 1 κόμβος 15 (22*0,69) καταχωρήσεις 16 δείκτες Επίπεδο 1: 16 κόμβοι 240 (16*15) καταχωρήσεις 256 δείκτες Επίπεδο 2: 256 κόμβοι 3.840 (256*15) καταχωρήσεις 4.096 δείκτες Επίπεδο 3: 4.096 κόμβοι 61.440 Σύνολο: 61.440 + 3.840 + 240 + 15 (65.535) 53 Β-δέντρα Ποιες εγγραφές βάζουμε στο Β-δέντρο; (όπως και στα ευρετήρια που είδαμε σε προηγούμενα μαθήματα αυτό εξαρτάται από το πεδίο δεικτοδότησης, δηλαδή αν είναι: πεδίο διάταξης κλειδί, πεδίο διάταξης όχι κλειδί, όχι πεδίο διάταξης κλειδί, όχι πεδίο διάταξης όχι κλειδί) Αναζήτηση με βάση διάστημα τιμών; 54 Βάσεις εδοµένων2012-2013:ευρετήρια 27

Β+-δέντρα Διαφορά Β + από Β-δέντρο: Αποθηκεύουμε δείκτες δεδομένων (στο αρχείο δεδομένων) μόνο στα φύλλα Δύο τύποι κόμβων: εσωτερικοί κόμβοι φύλλα Όλες οι τιμές του πεδίου αναζήτησης εμφανίζονται στα φύλλα. Οι τιμές που εμφανίζονται σε εσωτερικούς κόμβους πληροφορία μόνο για τη διάσχιση του δέντρου Κάποιες τιμές μπορεί να εμφανίζονται παραπάνω από μια φορά 55 Β+-δέντρα Ένα Β + -δέντρο τάξεως (order) p για τους εσωτερικούς κόμβους και p leaf για τα φύλλα ορίζεται ως εξής: 1. Κάθε εσωτερικός κόμβος είναι της μορφής <P 1,K 1,P 2,K 2,, K q-1,p q-1, P q >q p,όπουp i δείκτηςδέντρου,k i τιμήαναζήτησης P 1 K 1... K j-1 P j K j P q-1 K q-1 P q (*) X < K 1 K j-1 X < K j Χ K q-1 2. Σε κάθε εσωτερικό κόμβο Κ 1 < Κ 2 < Κ q -1 3. Για όλες τις τιμές X στο υποδέντρο που δείχνει το P j ισχύει Κ X < K j για 1 < j < q, X <K j για j =1, και Κ j -1 Χ για j = q (*) σύµβαση, θα µπορούσε και K j-1 < X K j 56 Βάσεις εδοµένων2012-2013:ευρετήρια 28

Β+-δέντρα 4. Κάθε εσωτερικός κόμβος έχει το πολύ p δείκτες δέντρου 5. Κάθε εσωτερικός κόμβος εκτός της ρίζας έχει τουλάχιστον (p/2). Η ρίζα έχει τουλάχιστον 2 εκτός αν είναι ο μόνος κόμβος του δέντρου. 6.Έναςκόμβοςμεqδείκτεςδέντρουπεριέχει q-1τιμέςπεδίουαναζήτησης 57 1. Κάθε κόμβος-φύλλο είναι της μορφής <<K 1,Pr 1 >, <K 2,Pr 2 >, <K q,pr q >, P next >, p leaf είναιητάξητωνκόμβων-φύλλων K i τιμήαναζήτησης, q p leaf,όπου Β+-δέντρα Pr i δείκτηςδεδομένωνπουδείχνειστοblock(ήστηνεγγραφή)μετιμήστοπεδίοαναζήτησης K i (ήσεέναblockενδιάμεσουεπιπέδουαντοπεδίοαναζήτησηςδενείναικλειδί), P next δείχνει στο επόμενο φύλλο και χρησιμοποιείται για τη γρήγορη ανάγνωση του αρχείου σε διάταξη K 1 Pr 1... K j Pr j K q Pr q P next 2. Σε κάθε κόμβο-φύλλο Κ 1 < Κ 2 < Κ q 58 Βάσεις εδοµένων2012-2013:ευρετήρια 29

Β+-δέντρα 3. Κάθε κόμβος-φύλλο έχει το πολύp leaf τιμές 4.Κάθεκόμβος-φύλλο έχειτουλάχιστον (p leaf /2) τιμές. 5. Όλοι οι κόμβοι-φύλλα βρίσκονται στο ίδιο επίπεδο. 59 Β+-δέντρα Η αναζήτηση ξεκινά από τη pίζα, και οι συγκρίσεις των κλειδιών μας οδηγούν στα φύλλα Αναζήτηση για τα 5*, 15*, όλες οι καταχωρήσεις>= 24*... ΡΙΖΑ 13 17 24 30 2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* 60 Βάσεις εδοµένων2012-2013:ευρετήρια 30

Β+-δέντρα: Αναζήτηση Nodepointer tree_search(nodepointer P, keyvalue K) if P is a leaf return(p); else if K < K 1 tree_search(p1, K) else end find i such that K i K < K i+1 return tree_search(p i, K) 61 Β+-δέντρα: Αναζήτηση Αναζήτηση (αναδρομική εκδοχή) nodepointer find(keyvalue K): end; return tree_search(root, K); 62 Βάσεις εδοµένων2012-2013:ευρετήρια 31

Β+-δέντρα: Εισαγωγή Εισαγωγή 1. Αναζήτηση του φύλλου για εισαγωγή: έστω φύλλο P 2. Εισαγωγή τιμής Κ στο κόμβο P Αν ο κόμβος-φύλλο δεν είναι γεμάτος εισαγωγή της τιμής 63 Β+-δέντρα: Εισαγωγή Αν ο κόμβος-φύλλο είναι γεμάτος (έχει p leaf εγγραφές) διάσπαση του κόμβου: --οι πρώτες k = (p leaf + 1)/2 παραμένουν στον κόμβο -- οι υπόλοιπες σε καινούργιο κόμβο --εισαγωγή (αντιγραφή) της k+1-οστής τιμής (K k+1 ) στο γονέα 64 Βάσεις εδοµένων2012-2013:ευρετήρια 32

Β+-δέντρα: Εισαγωγή Αν ένας εσωτερικός κόμβος είναι γεμάτος(έχει p εγγραφές) διάσπαση τουκόμβου: έστωk= ((p+1)/2) --οιεγγραφέςμέχριτοp k (μετάτηνεισαγωγή) παραμένουν στον κόμβο --ηk+1-οστήk k+1 τιμήμεταφέρεται(δεναντιγράφεται) στον πατέρα -- οι υπόλοιπες σε καινούργιο κόμβο 65 Β+-δέντρα: Εισαγωγή Οι διασπάσεις κόμβων (εκτός ρίζας) μεγαλώνουν το δέντρο Η διάσπαση της ρίζας υψώνει το δέντρο 66 Βάσεις εδοµένων2012-2013:ευρετήρια 33

Β+-δέντρα (παράδειγµα) 5, 9, 7, 14, 6, 19, 10 και τάξη ρ = 3 (2 τιμές ανά κόμβο, 3 δείκτες block ευρετηρίου) καιp leaf =2 67 Β+-δέντρα: Εισαγωγή Εισαγωγή της καταχώρησης 8* ΡΙΖΑ 8 13 17 24 30 2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* 68 Βάσεις εδοµένων2012-2013:ευρετήρια 34

Β+-δέντρα: Εισαγωγή Καταχώρηση στον κόµβο γονέα (αντιγραφή) 5 Το 5 ανεβαίνει επάνω, αλλά παραµένει και στο φύλλο 2* 3* 5* 7* 8* Καταχώρηση στον κόµβο γονέα (µεταφορά) 17 Το 17 ανεβαίνει επάνω και παρουσιάζεται µόνο µία φορά στο ευρετήριο (σε αντίθεση µε τα φύλλα) 5 13 24 30 69 Β+-δέντρα: Εισαγωγή ρίζα 17 5 13 24 30 2* 3* 5* 7* 8* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* Η ρίζα διασπάστηκε οδηγώντας σε αύξηση του ύψους. 70 Βάσεις εδοµένων2012-2013:ευρετήρια 35

Β+-δέντρα Όλες οι τιμές εμφανίζονται στα φύλλα και κάποιες επαναλαμβάνονται και σε εσωτερικούς κόμβους (η τιμή Κ σε ένα εσωτερικό κόμβο μπορεί επίσης να εμφανίζεται ως η πιο αριστερήτιμήστοφύλλοτουυποδέντρουμερίζατοδείκτηστα δεξιάτουκ) 71 Β+-δέντρα: Διαγραφή Διαγραφή 1.Αναζήτησητουφύλλου πουπεριέχειτοκ:έστωφύλλοp 2. Αν υποχείλιση αν είναι δυνατόν ανακατανομή με τον αριστερό αδελφό (> (n/2) ) αν όχι, προσπάθεια ανακατανομής με το δεξιό αδελφό αν όχι, συγχώνευση και των τριών κόμβων σε δύο κόμβους 72 Βάσεις εδοµένων2012-2013:ευρετήρια 36

2. Αν υποχείλιση (αναλυτικά) <ανακατανομή εγγραφών> Αν είναι δυνατόν ανακατανομή με τον αριστερό αδελφό (> (n/2) ) αν όχι, προσπάθεια ανακατανομής με το δεξιό αδελφό ανακατανομή εγγραφών σε κάθε κόμβο βρείτε την εγγραφή στο γονέα του δεξιού κόμβου Ν Β+-δέντρα: Διαγραφή αντικατάσταση της τιμής κλειδιούστο γονέα τους με τη μικρότερη τιμή του κόμβου Ν Αν δεν είναι δυνατή η ανακατανομή συγχώνευση κόμβων <συγχώνευση κόμβων> οδηγεί σε διαγραφή στο παραπάνω επίπεδο, σβήνεταιη εγγραφή που δείχνει στον κόμβο (πιθανότητα νέας υποχείλισης) 73 Β+-δέντρα: Διαγραφή Εσωτερικοί κόμβοι Ειδική περίπτωση στη συγχώνευση εσωτερικών κόμβων, όταν συγχωνεύεται ο ακραίος αριστερός δείκτης ενός εσωτερικού κόμβου (ο οποίος δεν έχει τιμή) Τότε, πρέπει να συμβουλευτούμε τον γονέα των δύο κόμβων που συγχωνεύονται -> χρήση της τιμής του δείκτη που δείχνει σε αυτόν τον κόμβο «Κατεβάζουμε» την τιμή από τον γονέα ως πιο αριστερή τιμή στον προς συγχώνευση κόμβο Ειδικά για την ανακατανομή εσωτερικών κόμβων Πάλι μέσω του γονέα τους Δηλαδή θεωρούμε και την τιμή του γονέα στην ανακατανομή Η τιμή αυτή αλλάζει στο γονέα 74 Βάσεις εδοµένων2012-2013:ευρετήρια 37

Β+-δέντρα: Παράδειγµα ρίζα 17 5 13 24 30 2* 3* 5* 7* 8* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* Διαγραφή 19, 20 75 Β+-δέντρα: Διαγραφή ρίζα 17 5 13 27 30 2* 3* 5* 7* 8* 14* 16* 22* 24* 27* 29* 33* 34* 38* 39* Το παράδειγμα μετά τη διαγραφή του 19* και του 20* (ανακατανομή με δεξί αδελφό και αντικατάσταση του 24 με 27) ιαγραφή του 24 -> 76 Βάσεις εδοµένων2012-2013:ευρετήρια 38

Β+-δέντρα: Διαγραφή Τέλος, η διαγραφή του 24* (συγχώνευση) 30 ρίζα 22* 27* 29* 33* 34* 38* 39* 5 13 17 30 2* 3* 5* 7* 8* 14* 16* 22* 27* 29* 33* 34* 38* 39* 77 Β+-δέντρα: Διαγραφή Παράδειγμα ανακατανομής Έστω στο παρακάτω δέντρο μετά από συγχώνευση φύλλων ρίζα 22 ανακατανομή 5 13 17 20 30 2* 3* 5* 7* 8* 14* 16* 17* 18* 20* 21* 22* 27* 29* 33* 34* 38* 39* 78 Βάσεις εδοµένων2012-2013:ευρετήρια 39

Β+-δέντρα: Διαγραφή ρίζα 17 5 13 20 22 30 2* 3* 5* 7* 8* 14* 16* 17* 18* 20* 21* 22* 27* 29* 33* 34* 38* 39* 79 Β+-δέντρα γενικά Εισαγωγή/Διαγραφή με κόστος log F N --- κρατούν το δέντρο σε ισορροπημένη μορφή. (F=διακλάδωση,N=αριθμόςτωνφύλλων) Ελάχιστη πληρότητα 50%(εκτός της ρίζας). Εξαιρετική δομή ΚΑΙ για ερωτήσεις ισότητας ΚΑΙ για ερωτήσεις διαστήματος (range queries). Το αρχείο δεδομένων μπορεί να είναι ή όχι ταξινομημένο Καταχωρήσεις Ευρετηρίου (Άµεση Αναζήτηση) Καταχωρήσεις εδοµένων («Σύνολο ακολουθίας») 80 Βάσεις εδοµένων2012-2013:ευρετήρια 40

Β+-δέντρα Κάθε κόμβος του B+-δέντρου καταλαμβάνει μια σελίδα (block) Τάξη p ώστε κάθε εσωτερικός-κόμβος να χωρά σε ένα block Έστω Β μέγεθος block, V μέγεθος πεδίου αναζήτησης, Pr μέγεθος δείκτη δεδομένων (εγγραφής) και P μέγεθος δείκτη δέντρου(block) p*p+(p-1)*v B p*(p+v) B+V p (B+V)/(P+V) Παράδειγμα, V = 9 bytes, B = 512, Pr = 7 bytes, P = 6 bytes, τότε p = 34 Για Β-δέντρο, p = 23 81 Β+-δέντρα Τάξη p leaf ώστε κάθε φύλλο να χωρά σε ένα block Έστω Β μέγεθος block, V μέγεθος πεδίου αναζήτησης, Pr μέγεθος δείκτη δεδομένων (εγγραφής) και P μέγεθος δείκτη δέντρου (block) p leaf * (Pr + V) + P B p leaf * (Pr + V) B -P p leaf (B -P) / (Pr + V) Παράδειγμα, V = 9 bytes, B = 512, Pr = 7 bytes, P = 6 bytes, τότε p leaf = 31 82 Βάσεις εδοµένων2012-2013:ευρετήρια 41

Β+-δέντρα Υπολογισμός επιπέδων Παράδειγμα, V = 9 bytes, B = 512, Pr = 7 bytes, P = 6 bytes, τότε p = 34. Έστω ότι κάθε κόμβος είναι γεμάτος κατά 69%. Πόσες καταχωρήσεις(τιμές) χωρά αν έχει 3 επίπεδα Ρίζα 1 κόμβος 22 (33*0,69) καταχωρήσεις 23 δείκτες Επίπεδο 1: 23 κόμβοι 506 (23*22) καταχωρήσεις 529 δείκτες Επίπεδο 2: 529κόμβοι 11.638 (529*22) καταχωρήσεις 12.167 δείκτες Επίπεδο φύλλων: 12.167 κόμβοι 255.507 (12.167 * 31 * 0.69) δείκτες δεδομένων Σε 3 επίπεδα 255.507 εγγραφές έναντι 65.535 για το Β-δέντρο Σημείωση: εγγραφές μόνο στα φύλλα 83 Β+-δέντρα Παρατηρήσεις Τυπική Τάξη (order): 100. Τυπικός Παράγοντας Πληρότητας: 67%. Μέση τιμή διακλάδωσης (fan out)= 133 Τυπικές Δυνατότητες: Ύψος 4: 133 4 = 312,900,700 εγγραφές Ύψος 3: 133 3 = 2,352,637 εγγραφές Μπορεί να κρατά τα υψηλότερα επίπεδα στη μνήμη (buffer): Επίπεδο1 = 1 block = 8 Kbytes Επίπεδο 2 = 133 blocks = 1 Mbyte Επίπεδο3 = 17,689 blocks = 133 MBytes 84 Βάσεις εδοµένων2012-2013:ευρετήρια 42

Ευρετήρια (ανακεφαλαίωση) Είδη Ευρετηρίων Ευρετήριο ενός επιπέδου ένα διατεταγμένο αρχείο με εγγραφές (<Κ(i), P(i)> Ευρετήριο πολλών επιπέδων Ευρετήρια δομής δέντρου(b-δέντρα, Β+-δέντρα) Ευρετήρια κατακερματισμού h(τιμή) -> στο κάδο οι εγγραφές είναι εγγραφές ευρετηρίου, δηλαδή ζεύγη (τιμή, δείκτης-στο-block(s)-του-αρχείου-δεδομένων που-είναι-η εγγραφή-με-αυτήν-την-τιμή) 85 Ευρετήρια (επανάληψη) Ορισμοί Πρωτεύον: όταν το πεδίο ευρετηριοποίησης είναι πρωτεύον κλειδί και πεδίο διάταξης του αρχείου Δευτερεύον: αλλιώς Συστάδων (clustered index) αν η διάταξη των εγγραφών στο ευρετήριο όμοια ή παρόμοια αυτής των εγγραφών στο αρχείο δεδομένων (συμβαίνει, πχ όταν το ευρετήριο κτίζεται στο πεδίο ταξινόμησης του αρχείου δεδομένων) 86 Βάσεις εδοµένων2012-2013:ευρετήρια 43

Ευρετήρια (επανάληψη) Το πολύ ένα ευρετήριο συστάδων δηλαδή ένα ευρετήριο στο πεδίο διάταξης του αρχείου Range scan(αναζήτηση περιοχής) Συστάδων:#σελίδων στο αρχείο που ταιριάζουν Μη συστάδων: αριθμός εγγραφών στο ευρετήριο που ταιριάζουν για κάθε τέτοια εγγραφή-> μια σελίδα αρχείου 87 Φυσικός Σχεδιασµός (γενική εικόνα) Μετά τον σχεδιασμό Ο/Σ και το λογικό σχεδιασμό (σχεσιακό μοντέλο), έχουμε τα εννοιολογικά και λογικά (με τις όψεις) σχήματα για τη Βάση Δεδομένων. Το επόμενο βήμα είναι ο Φυσικός Σχεδιασμός, δηλαδή η επιλογή των δομών αποθήκευσης των σχέσεων, η επιλογή των ευρετηρίων, οι αποφάσεις για συστάδες - γενικά ότι είναι απαραίτητο για να επιτευχθούν οι προσδοκώμενες επιδόσεις χρήσης της ΒΔ. Η υλοποίηση μιας (φυσικής) Σχεσιακής Βάσης Δεδομένων περιλαμβάνει τη δημιουργία ΚΑΤΑΛΟΓΩΝ ΣΥΣΤΗΜΑΤΟΣ(directory system tables) 88 Βάσεις εδοµένων2012-2013:ευρετήρια 44

Φυσικός Σχεδιασµός Ανεξάρτητα. του ΣΔΒΔ Εξαρτώμενο του επιλεγμένου ΣΔΒΔ Μικρόκοσµος Απαιτήσεις Β Συλλογή Απαιτήσεων και Ανάλυση Εννοιολογικό Μοντέλο (Σχήµα) Εννοιολογικός Σχεδιασμός Βάσης (π.χ., µε Σχεσιακό Μοντέλο) Διάγραµµα Ο/Σ Λογικός Σχεδιασμός Βάσης Βάση εδοµένων Λογικό Μοντέλο -- Σχήµατα/Όψεις Φυσικός Σχεδιασμός Βάσης Φυσικό Μοντέλο Εσωτερικό Σχήµα Πλήρωση Βάσης 89 Ευρετήρια H SQL-92 δεν περιλαμβάνει εντολές για τη δημιουργία ευρετηρίων. Τα περισσότερα εμπορικά ΣΔΒΔ το υποστηρίζουν create[unique] index <index_name> on <table_name> (<attr_list>); Η <attr_list> μπορεί να περιέχει παραπάνω από ένα γνωρίσματα. Προαιρετικό UNIQUE σημαίνει ότι το <attr_list> είναι κλειδί του <table_name>. 90 Βάσεις εδοµένων2012-2013:ευρετήρια 45

Ευρετήρια drop index <index_name> H Oracle δημιουργεί αυτόματα ευρετήρια για κάθε UNIQUE ή PRIMARY KEY ορισμό. select <index_name> from user_indexes 91 Φυσικός Σχεδιασµός Πριν δημιουργήσουμε ένα ευρετήριο, πρέπει να συνυπολογίσουμε και την επίδρασή του σε ενημερώσεις του φορτίου εργασίας! Ένα ευρετήριο κάνει τις ερωτήσεις ΠΙΟ ΓΡΗΓΟΡΕΣ και τις ενημερώσεις ΠΙΟ ΑΡΓΕΣ Επιπλέον, απαιτεί και χώρο στον δίσκο 92 Βάσεις εδοµένων2012-2013:ευρετήρια 46

Φυσικός Σχεδιασµός Για να κάνουμε όσο το δυνατόν καλύτερο τον Φυσικό Σχεδιασμό πρέπει να: Κατανοήσουμε το Φόρτο Εργασίας(workload) Ποιες είναι οι σημαντικές ερωτήσεις και πόσο συχνά εμφανίζονται. Ποιες είναι οι πιο σημαντικές τροποποιήσειςκαι πόσο συχνά εμφανίζονται. Ποια είναι η επιθυμητή επίδοση για την εκτέλεση αυτών τωνερωτήσεων και τροποποιήσεων. 93 Φυσικός Σχεδιασµός Για κάθε ερώτηση (query) το φόρτο εργασίας: Σε ποιες σχέσεις έχει πρόσβαση? Ποια γνωρίσματα ανακαλεί? Ποια γνωρίσματα υπεισέρχονται στις συνθήκες για selection/join? Πόσο επιλεκτικές είναι αυτές οι συνθήκες? Για κάθε ενημέρωση (insert/delete/update): Ποια γνωρίσματα υπεισέρχονται στις συνθήκες για selection/join? Πόσο επιλεκτικές είναι αυτές οι συνθήκες? Ο τύπος της ενημέρωσης (INSERT/DELETE/UPDATE), και τα γνωρίσματα που θα επηρεασθούν 94 Βάσεις εδοµένων2012-2013:ευρετήρια 47

Φυσικός Σχεδιασµός Αποφάσεις που Απαιτούνται Τι ευρετήρια πρέπει να δημιουργηθούν; Ποιες σχέσεις πρέπει να έχουν ευρετήρια; Ποια γνωρίσματα χρησιμοποιούνται για αναζήτηση; Πρέπει να ορίσουμε πολλαπλά ευρετήρια; Για κάθε ευρετήριο, τι είδους ευρετήριο πρέπει να είναι; Συστάδες; Δέντρο/Κατακερματισμός; Δυναμικό/Στατικό; Πυκνό/Μη-πυκνό; Χρειάζονται αλλαγές και στο εννοιολογικό/λογικό Σχήμα; Διαφορετικό κανονικοποιημένο σχήμα; Denormalization(μήπως χρειάζεται από-κανονικοποίηση;) Όψεις, Επανάληψη Δεδομένων(replication) 95 Βάσεις εδοµένων2012-2013:ευρετήρια 48