Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεὈλυσσεύς Κούνδουρος Τροποποιήθηκε πριν 9 χρόνια
1
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 1 Ευρετήρια
2
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 2 Ευρετήρια Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου Δευτερεύον ευρετήριο (secondary index): ορισμένο σε πεδία διαφορετικά του κλειδιού διάταξης Ευρετήριο συστάδων (clustering index): ορισμένο στο πεδίο διάταξης το οποίο όμως δεν είναι κλειδί Η δομή προσπέλασης (access path) συνήθως ορίζεται σε ένα πεδίο του αρχείου που λέγεται πεδίο ευρετηριοποίησης (indexing field) Πόσα ευρετήρια σε ένα αρχείο δεδομένων μπορεί να έχουμε ;
3
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 3 Ευρετήρια Πυκνό ευρετήριο: μια καταχώρηση για κάθε εγγραφή του δίσκου Μη πυκνό ευρετήριο
4
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 4 Πρωτεύον Ευρετήριο Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου Για κάθε block του αρχείου (μη πυκνό ευρετήριο) η εγγραφή i του ευρετηρίου είναι της μορφής ( ) όπου: Κ(i): η τιμή του πρωτεύοντος κλειδιού της πρώτης εγγραφής του block (άγκυρα του block) P(i): δείκτης προς το block
5
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 5 Πρωτεύον Ευρετήριο Το ευρετήριο αρχείου είναι ένα διατεταγμένο αρχείο με σταθερού μήκους εγγραφές Το πρωτεύον ευρετήριο είναι ένα μη πυκνό ευρετήριο Το μέγεθος του αρχείου ευρετηρίου είναι μικρότερο από του αρχείου δεδομένων. Παράδειγμα: Έστω διατεταγμένο αρχείο με r = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R = 100 bytes, όπου το πεδίο κλειδιού διάταξης έχει μέγεθος V = 9 bytes, μη εκτεινόμενη καταχώρηση. Κατασκευάζουμε πρωτεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου: 45 blocks
6
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 6 Πρωτεύον Ευρετήριο Αναζήτηση Δυαδική αναζήτηση στο πρωτεύον ευρετήριο Ανάγνωση του block από το αρχείο δεδομένων Παράδειγμα: Έστω διατεταγμένο αρχείο με r = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R = 100 bytes, όπου το πεδίο κλειδιού διάταξης έχει μέγεθος V = 9 bytes, μη εκτεινόμενη καταχώρηση. Κατασκευάζουμε πρωτεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks - Μέγεθος αρχείου ευρετηρίου: 45 blocks Αναζήτηση χωρίς ευρετήριο: log 3.000 = 12 blocks Αναζήτηση με ευρετήριο: log 45 + 1 = 7 blocks
7
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 7 Πρωτεύον Ευρετήριο Εισαγωγή εγγραφής αλλαγές και στο πρωτεύον ευρετήριο μη διατεταγμένο αρχείο υπερχείλισης συνδεδεμένη λίστα εγγραφών υπερχείλισης Διαγραφή εγγραφής αλλαγές και στο πρωτεύον ευρετήριο χρήση σημαδιών διαγραφής
8
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 8 Ευρετήριο Συστάδων Ευρετήριο συστάδων (clustering index): ορισμένο στο πεδίο διάταξης το οποίο όμως δεν είναι κλειδί Υπάρχει μια εγγραφή για κάθε διακεκριμένη τιμή του πεδίου διάταξης (συστάδας) του αρχείου που περιέχει: την τιμή αυτή ένα δείκτη προς το πρώτο block του αρχείου δεδομένων που περιέχει μια εγγραφή με την τιμή αυτή στο πεδίο συστάδας
9
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 9 Ευρετήριο Συστάδων Το μέγεθος του αρχείου ευρετηρίου είναι μικρότερο από του αρχείου δεδομένων. Παράδειγμα: Έστω διατεταγμένο αρχείο με r = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο διάταξης έχει μέγεθος V = 9 bytes και υπάρχουν 1000 διαφορετικές τιμές και οι εγγραφές είναι ομοιόμορφα κατανεμημένες ως προς τις τιμές αυτές. Υποθέτουμε ότι χρησιμοποιούνται άγκυρες block, κάθε νέα τιμή του πεδίου διάταξης αρχίζει στην αρχή ενός νέου block. Κατασκευάζουμε ευρετήριο συστάδων, μέγεθος δείκτη block P = 6 bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος ευρετηρίου συστάδων: 15 blocks
10
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 10 Ευρετήριο Συστάδων Αναζήτηση Δυαδική αναζήτηση στο ευρετήριο Ανάγνωση block από το αρχείο δεδομένων Μέγεθος αρχείου δεδομένων: 3.000 blocks - Μέγεθος αρχείου ευρετηρίου: 15 blocks Αναζήτηση χωρίς ευρετήριο: log 3.000 + ταιριάσματα ( = 3) 15 blocks Αναζήτηση με ευρετήριο: log 15 + 3 = 7 blocks Παράδειγμα: Έστω διατεταγμένο αρχείο με r = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο διάταξης έχει μέγεθος V = 9 bytes και υπάρχουν 1000 διαφορετικές τιμές και οι εγγραφές είναι ομοιόμορφα κατανεμημένες ως προς τις τιμές αυτές. Υποθέτουμε ότι χρησιμοποιούνται άγκυρες block, κάθε νέα τιμή του πεδίου διάταξης αρχίζει στην αρχή ενός νέου block. Κατασκευάζουμε ευρετήριο συστάδων, μέγεθος δείκτη block P = 6 bytes
11
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 11 Δευτερεύον Ευρετήριο Υπάρχει μια εγγραφή για κάθε εγγραφή του αρχείου που περιέχει: την τιμή του δευτερεύοντος κλειδιού για αυτήν την εγγραφή ένα δείκτη προς το block (ή την εγγραφή) του αρχείου δεδομένων που περιέχει την εγγραφή με την τιμή αυτή Δευτερεύον ευρετήριο (secondary index): ορισμένο σε πεδία διαφορετικά του κλειδιού διάταξης Περίπτωση 1: Το πεδίο ευρετηριοποίησης είναι κλειδί (καλείται και δευτερεύον κλειδί)
12
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 12 Δευτερεύον Ευρετήριο Το ευρετήριο αρχείου είναι ένα διατεταγμένο αρχείο με σταθερού μήκους εγγραφές Το δευτερεύον ευρετήριο είναι ένα πυκνό ευρετήριο Το μέγεθος του δευτερεύοντος ευρετηρίου είναι μικρότερο από του αρχείου δεδομένων (αν και μεγαλύτερο από το πρωτεύον). Παράδειγμα: Έστω αρχείο με r = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο κλειδιού έχει μέγεθος V = 9 bytes αλλά δεν είναι πεδίο διάταξης,. Κατασκευάζουμε δευτερεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου: 442 blocks45 για πρωτεύον
13
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 13 Δευτερεύον Ευρετήριο Αναζήτηση Δυαδική αναζήτηση στο δευτερεύον ευρετήριο Ανάγνωση του block από το αρχείο δεδομένων Μέγεθος αρχείου δεδομένων: 3.000 blocks - Μέγεθος αρχείου ευρετηρίου: 442 blocks Αναζήτηση χωρίς ευρετήριο: 3.000/2 = 1500 blocks Αναζήτηση με ευρετήριο: log 442 + 1 = 10 blocks Παράδειγμα: Έστω αρχείο με r = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο κλειδιού έχει μέγεθος V = 9 bytes αλλά δεν είναι πεδίο διάταξης,. Κατασκευάζουμε δευτερεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes Για πρωτεύον ήταν 45 και 7 blocks αντίστοιχα
14
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 14 Δευτερεύον Ευρετήριο Περίπτωση 2: Το πεδίο ευρετηριοποίησης δεν είναι κλειδί 1. Πυκνό ευρετήριο: μία καταχώρηση για κάθε εγγραφή 2. Μεταβλητού μήκους εγγραφές με ένα επαναλαμβανόμενο πεδίο για το δείκτη 3. Μία εγγραφή ευρετηρίου για κάθε τιμή του πεδίου ευρετηριοποίσης + ένα ενδιάμεσο επίπεδο για την διαχείριση των πολλαπλών δεικτών Αναζήτηση Δυαδική αναζήτηση στο δευτερεύον ευρετήριο Ανάγνωση του block (ή των blocks) από το ενδιάμεσο επίπεδο Ανάγνωση των blocks (συνήθως τόσα όσες οι εγγραφές που ταιριάζουν) από το αρχείο δεδομένων
15
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 15 Δευτερεύον Ευρετήριο Εισαγωγή Πολύ απλή αν δεν αφορά εισαγωγή νέας τιμής στο ευρετήριο Εύκολη η λογική διάταξη των εγγραφών με βάση το πεδίο ευρετηριοποίησης Ανακτήσεις με σύνθετες συνθήκες
16
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 16 Ευρετήρια Πολλών Επιπέδων χτίζουμε ευρετήρια πάνω στα αρχεία ευρετηρίου Έστω ότι το αρχείο ευρετηρίου είναι το πρώτο ή βασικό επίπεδο Έστω ότι ο παράγοντας ομαδοποίησης είναι f 0 και ότι έχει r 1 blocks Το αρχείο είναι διατεταγμένο και το πεδίο διάταξης είναι και κλειδί Δημιουργούμε ένα πρωτεύον ευρετήριο για το ευρετήριο πρώτου επιπέδου - δεύτερο επίπεδο Παράγοντας ομαδοποίησης:f0f0 Αριθμός block (r 1 /f 0 ) Δημιουργούμε ένα πρωτεύον ευρετήριο για το ευρετήριο δεύτερου επιπέδου - τρίτο επίπεδο Παράγοντας ομαδοποίησης:f0f0 Αριθμός block (r 1 /(f 0 ) 2 ) Το f 0 ονομάζεται και παράγοντας διακλάδωσης του ευρετηρίου
17
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 17 Ευρετήρια Πολλών Επιπέδων Μέχρι πόσα επίπεδα: Μέχρι όλες οι εγγραφές του ευρετηρίου να χωρούν σε ένα block Έστω t κορυφαίο επίπεδο (top level) (r 1 /(f 0 ) τ ) = 1 Παράδειγμα: Έστω αρχείο με r = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους R = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο κλειδιού έχει μέγεθος V = 9 bytes αλλά δεν είναι πεδίο διάταξης,. Κατασκευάζουμε δευτερεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου πρώτου επιπέδου: 442 blocks Μέγεθος αρχείου ευρετηρίου δεύτερου επιπέδου: (442 / 68) = 7 blocks f 0 = (1024 / (9 + 6)) = 68 Μέγεθος αρχείου ευρετηρίου τρίτου επιπέδου: (7 / 68) = 1 block Άρα t = 3
18
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 18 Ευρετήρια Πολλών Επιπέδων Αναζήτηση p := διεύθυνση του block του κορυφαίου επιπέδου του ευρετηρίου t := αριθμός επιπέδων του ευρετηρίου for j = t to 1 step -1 do read block με διεύθυνση p του ευρετηρίου στο επίπεδο j αναζήτηση στο block p της εγγραφής i με τιμή Κ j (i) K < K j (i+1) read το block του αρχείου δεδομένων με διεύθυνση p Aναζήτηση στο block p της εγγραφής i με τιμή Κ j (i) K < K j (i+1) Παράδειγμα t + 1 = 4 προσπελάσεις Για το δευτερεύον ήταν 10 και χωρίς ευρετήριο 1500
19
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 19 Ευρετήρια Πολλών Επιπέδων Εισαγωγή/διαγραφή τροποποιήσεις πολλαπλών ευρετηρίων Δυναμικό πολυεπίπεδο ευρετήριο: Β-δέντρα και Β+-δέντρα
20
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 20 Δενδρικά Ευρετήρια Τα πολυεπίπεδα ευρετήρια μπορεί να θεωρηθούν ως δέντρα αναζήτησης Κάθε κόμβος (block) έχει f 0 δείκτες και f 0 τιμές κλειδιού
21
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 21 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ δείκτες ως εξής Υποθέτουμε ότι οι τιμές αναζήτησης είναι μοναδικές Κ 1 < Κ 2 < … Κ q -1 και για όλες τις τιμές X στα υποδέντρα ισχύει Κ j-1 < X < K j για 1 < j < q, X < K j για j =1, και Κ j -1 < Χ για i = q P 1 K 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 < X
22
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 22 Δέντρα Αναζήτησης Πεδίο αναζήτησης - αποθήκευση στο δίσκο Ισοζυγισμένο: όλοι οι κόμβοι-φύλλα στο ίδιο επίπεδο Β-δέντρο: ένα δέντρο αναζήτησης που παραμένει ισοζυγισμένο
23
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 23 Β-δέντρα Ένα Β-δέντρο τάξεως (order) ορίζεται ως εξής: 1. Κάθε εσωτερικός κόμβος είναι της μορφής, P 2,, …, P q >, q < p, όπου P i δείκτης δέντρου, K i τιμή αναζήτησης, Pr i δείκτης δεδομένων 2. Σε κάθε κόμβο Κ 1 < Κ 2 < … Κ q -1 3. Για όλες τις τιμές X στο υποδέντρο που δείχνει το P j ισχύει Κ j-1 < X < K j για 1 < j < q, X < K j για j =1, και Κ j -1 < Χ για i = q 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 X < K 1 K j-1 < X < K j K q-1 < X
24
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 24 Β-δέντρα 7. Όλα τα φύλλα βρίσκονται στο ίδιο επίπεδο. Τα φύλλα έχουν την ίδια δομή εκτός του ότι οι δείκτες δέντρου είναι null. 6. Ένας κόμβος με q δείκτες δέντρου περιέχει q - 1 τιμές πεδίου αναζήτησης (και άρα και q - 1 δείκτες δεδομένων) 4. Κάθε κόμβος έχει το πολύ p δείκτες δέντρου 5. Κάθε κόμβος εκτός της ρίζα και των φύλλων έχει τουλάχιστον (p/2) . Η ρίζα έχει τουλάχιστον 2 εκτός αν είναι ο μόνος κόμβος του δέντρου.
25
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 25 Β-δέντρα Τάξη p ώστε κάθε κόμβος να χωρά σε ένα block Έστω Β μέγεθος block, V μέγεθος πεδίου αναζήτησης, Pr μέγεθος δείκτη δεδομένων (εγγραφής) και P μέγεθος δείκτη δέντρου (block) p * P + (p - 1) * Pr + (p - 1) * V B p * (P + Pr + V) B + V + Pr p (B + V + Pr) / (P + Pr+ V) Παράδειγμα, V = 9 bytes, B = 512, Pr = 7 bytes, P = 6 bytes, τότε p = 23
26
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 26 Β-δέντρα Υπολογισμός επιπέδων Παράδειγμα, V = 9 bytes, B = 512, Pr = 7 bytes, P = 6 bytes, τότε p = 23. έστω ότι κάθε κόμβος είναι γεμάτος κατά 69% και έστω ότι το αρχείο δεδομένων έχει 65.000 εγγραφές Ρίζα1 κόμβος15 (23*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
27
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 27 Ευρετήρια Είδη Ευρετηρίων Πυκνό Ευρετήριο μια καταχώρηση για κάθε εγγραφή του δίσκου Μη Πυκνό Ευρετήριο Ευρετήριο συστάδων (clustered index) στο πεδίο διάταξης το οποίο όμως δεν είναι κλειδί - γενικότερα, όταν η διάταξη των καταχωρήσεων στο ευρετήριο ακολουθεί τη διάταξη των εγγραφών στο αρχείο Ευρετήριο χωρίς συστάδες (unclustered index) Πρωτεύον Δευτερεύον (πλήρως αντεστραμμένο ευρετήριο)
28
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 28 Ευρετήρια Είδη Ευρετηρίων Ευρετήριο ενός επιπέδου ένα διατεταγμένο αρχείο με εγγραφές ( Ευρετήριο πολλών επιπέδων Ευρετήρια δομής δέντρου Ευρετήρια κατακερματισμού
29
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 29 Β-δέντρα Ένα Β-δέντρο τάξεως (order) ορίζεται ως εξής: 1. Κάθε εσωτερικός κόμβος είναι της μορφής, P 2,, …, P q >, q < p, όπου P i δείκτης δέντρου, K i τιμή αναζήτησης, Pr i δείκτης δεδομένων 2. Σε κάθε κόμβο Κ 1 < Κ 2 < … Κ q -1 3. Για όλες τις τιμές X στο υποδέντρο που δείχνει το P j ισχύει Κ j-1 < X < K j για 1 < j < q, X < K j για j =1, και Κ j -1 < Χ για i = q 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 X < K 1 K j-1 < X < K j K q-1 < X
30
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 30 Β-δέντρα 7. Όλα τα φύλλα βρίσκονται στο ίδιο επίπεδο. Τα φύλλα έχουν την ίδια δομή εκτός του ότι οι δείκτες δέντρου είναι null. 6. Ένας κόμβος με q δείκτες δέντρου περιέχει q - 1 τιμές πεδίου αναζήτησης (και άρα και q - 1 δείκτες δεδομένων) 4. Κάθε κόμβος έχει το πολύ p δείκτες δέντρου 5. Κάθε κόμβος εκτός της ρίζα και των φύλλων έχει τουλάχιστον (p/2) . Η ρίζα έχει τουλάχιστον 2 εκτός αν είναι ο μόνος κόμβος του δέντρου.
31
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 31 Β + -δέντρα Αποθηκεύουμε δείκτες δεδομένων μόνο στα φύλλα Δύο τύποι κόμβων: εσωτερικοί κόμβοι φύλλα Κάποιες τιμές του πεδίου αναζήτησης μπορεί να εμφανίζονται παραπάνω από μια φορά
32
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 32 Β + -δέντρα Ένα Β + -δέντρο τάξεως (order) p ορίζεται ως εξής: 1. Κάθε εσωτερικός κόμβος είναι της μορφής <P 1, K 1, P 2, K 2,, … K q-1, P q-1, P q, q p, όπου P i δείκτης δέντρου, K i τιμή αναζήτησης 2. Σε κάθε εσωτερικό κόμβο Κ 1 < Κ 2 < … Κ q -1 3. Για όλες τις τιμές X στο υποδέντρο που δείχνει το P j ισχύει Κ j-1 < X K j για 1 < j < q, X K j για j =1, και Κ j -1 < Χ για i = q 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 < X
33
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 33 Β + -δέντρα 6. Ένας κόμβος με q δείκτες δέντρου περιέχει q - 1 τιμές πεδίου αναζήτησης 4. Κάθε εσωτερικός κόμβος έχει το πολύ p δείκτες δέντρου 5. Κάθε εσωτερικός κόμβος εκτός της ρίζα έχει τουλάχιστον (p/2) . Η ρίζα έχει τουλάχιστον 2 εκτός αν είναι ο μόνος κόμβος του δέντρου.
34
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 34 Β + -δέντρα 1. Κάθε κόμβος-φύλλο είναι της μορφής,, …, P next >, q p leaf, όπου p leaf είναι η τάξη των κόμβων-φύλλων K i τιμή αναζήτησης, Pr i δείκτης δεδομένων που δείχνει στο block (ή στην εγγραφή) με τιμή στο πεδίο αναζήτησης K i (ή σε ένα block ενδιάμεσου επιπέδου αν το πεδίο αναζήτησης δεν είναι κλειδί), P next δείχνει στο επόμενο φύλλο και χρησιμοποιείται για τη γρήγορη ανάγνωση του αρχείου σε διάταξη 2. Σε κάθε κόμβο-φύλλο Κ 1 < Κ 2 < … Κ q K 1 Pr 1... K j Pr j … K q Pr q P next
35
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 35 Β + -δέντρα 3. Κάθε κόμβος-φύλλο έχει το πολύ p leaf τιμές 5. Όλοι οι κόμβοι-φύλλα βρίσκονται στο ίδιο επίπεδο. 4. Κάθε κόμβος-φύλλο έχει τουλάχιστον (p leaf /2) τιμές.
36
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 36 Β + -δέντρα Τάξη 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
37
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 37 Β + -δέντρα Τάξη 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
38
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 38 Β + -δέντρα Υπολογισμός επιπέδων Παράδειγμα, V = 9 bytes, B = 512, Pr = 7 bytes, P = 6 bytes, τότε p = 34. έστω ότι κάθε κόμβος είναι γεμάτος κατά 69% και έστω ότι το αρχείο δεδομένων έχει 65.000 εγγραφές Ρίζα1 κόμβος22 (34*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 για Β-δέντρο
39
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 39 Β + -δέντρα Αναζήτηση (αναδρομική εκδοχή) nodepointer find(keyvalue K): return tree_search(root, K); end; Nodepointer tree_search(nodepointer P, keyvalue K) if P is a leaf return(P); else if K K 1 tree_search(P 1, K) else find i such that K i < K K i+1 return tree_search(P i+1, K) end
40
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 40 Β + -δέντρα Εισαγωγή 1. Αναζήτηση του φύλλου για εισαγωγή: έστω φύλλο P 2. Εισαγωγή τιμής Κ στο κόμβο P Αν ο κόμβος-φύλλο δεν είναι γεμάτος εισαγωγή της τιμής
41
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 41 Β + -δέντρα Εισαγωγή (συνέχεια) Αν ο κόμβος-φύλλο είναι γεμάτος (έχει p leaf εγγραφές) διάσπαση του κόμβου: -- οι πρώτες k = ((p leaf +1)/2) παραμένουν στον κόμβο -- οι υπόλοιπες σε καινούργιο κόμβο -- εισαγωγή (αντιγραφή) της k-οστής τιμής (K k) στον πατέρα Αν ο εσωτερικός κόμβος-φύλλο είναι γεμάτος (έχει p εγγραφές) διάσπαση του κόμβου: έστω k = ((p+1)/2) -- οι εγγραφές μέχρι το P k (μετά την εισαγωγή) παραμένουν στον κόμβο -- η k-οστή K k τιμή μεταφέρεται (δεν αντιγράφεται) στον πατέρα -- οι υπόλοιπες σε καινούργιο κόμβο
42
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 42 Β + -δέντρα Όλες οι τιμές εμφανίζονται στα φύλλα και κάποιες επαναλαμβάνονται και σε εσωτερικούς κόμβους (η τιμή Κ σε ένα εσωτερικό κόμβο εμφανίζεται επίσης ως η δεξιότερη τιμή στο φύλλο του υποδέντρου με ρίζα το δείκτη στα αριστερά του Κ)
43
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 43 Β + -δέντρα Διαγραφή 1. Αναζήτηση του φύλλου που περιέχει το Κ: έστω φύλλο P *** αν η τιμή Κ εμφανίζεται σε κάποιο εσωτερικό κόμβο πρέπει να αντικατασταθεί από την τιμή που βρίσκεται στα αριστερά του Κ στο φύλλο 2. Αν υποχείλιση αν είναι δυνατόν ανακατανομή με τον αριστερό αδελφό (> (n/2) ) αν όχι, προσπάθεια ανακατανομής με το δεξιό αδελφό αν όχι, συγχώνευση και των τριών κόμβων σε δύο κόμβους
44
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 44 Ευρετήρια Κατακερματισμού Εξωτερικός Κατακερματισμός h(k) = i Τιμή του πεδίου κατακερματισμού Σχετική διεύθυνση του κάδου (ποιος κάδος του αρχείου) Κάδος: μια συστάδα από συνεχόμενα blocks του αρχείου π.χ., η εγγραφή με τιμή k στο πεδίο κατακερματισμού βρίσκεται στον i-οστό κάδο
45
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 45 Οργάνωση Αρχείων Εξωτερικός Κατακερματισμός Ένας πίνακας που αποθηκεύεται στην επικεφαλίδα του αρχείου μετατρέπει τον αριθμό κάδου στην αντίστοιχη διεύθυνση block 0διεύθυνση 1ου block του κάδου στο δίσκο 1 διεύθυνση 1ου block του κάδου στο δίσκο 2 διεύθυνση 1ου block του κάδου στο δίσκο …... Μ-1 διεύθυνση 1ου block του κάδου στο δίσκο
46
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 46 Ευρετήρια Κατακερματισμού Εξωτερικός Κατακερματισμός Πρόβλημα: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές
47
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 47 Ευρετήρια Κατακερματισμού Δυναμικός Εξωτερικός Κατακερματισμός Δυαδική αναπαράσταση του αποτελέσματος της συνάρτησης κατακερματισμού, δηλαδή ως μια ακολουθία δυαδικών ψηφίων Κατανομή εγγραφών με βάση την τιμή των αρχικών ψηφίων
48
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 48 Ευρετήρια Κατακερματισμού 1. Δυναμικός Κατακερματισμός Το αρχείο ξεκινά με ένα μόνο κάδο Μόλις γεμίσει ένας κάδος διασπάται σε δύο κάδους με βάση την τιμή του 1ου δυαδικού ψηφίου των τιμών κατακερματισμού -- δηλαδή οι εγγραφές που το πρώτο ψηφίο της τιμής κατακερματισμού τους είναι 1 τοποθετούνται σε ένα κάδο και οι άλλες (με 0) στον άλλο Νέα υπερχείλιση ενός κάδου οδηγεί σε διάσπαση του με βάση το αμέσως επόμενο δυαδικό ψηφίο κοκ
49
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 49 Ευρετήρια Κατακερματισμού 1. Δυναμικός Κατακερματισμός (συνέχεια) Παράδειγμα Έτσι δημιουργείται μια δυαδική δενδρική δομή που λέγεται κατάλογος (dirtectory) ή ευρετήριο (index) με δύο ειδών κόμβους εσωτερικούς: που καθοδηγούν την αναζήτηση εξωτερικούς: που δείχνουν σε ένα κάδο
50
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 50 Ευρετήρια Κατακερματισμού 1. Δυναμικός Κατακερματισμός (συνέχεια) Αλγόριθμος αναζήτησης h := τιμή κατακερματισμού t := ρίζα του δέντρου i := 1 while (t εσωτερικός κόμβος) if (i-οστό bit του h είναι 0) t := αριστερά του t else t := δεξιά του t i := i +1
51
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 51 Ευρετήρια Κατακερματισμού 1. Δυναμικός Κατακερματισμός (συνέχεια) Που αποθηκεύεται ο κατάλογος στη μνήμη, εκτός αν είναι πολύ μεγάλος αν στο δίσκο απαιτούνται επιπρόσθετες προσπελάσεις Δυναμική επέκταση αλλά μέγιστος αριθμός επιπέδων (το πλήθος των δυαδικών ψηφίων της συνάρτησης κατακερματισμού) Ισοζύγιση Συνένωση κάδων (δυναμική συρρίκνωση όταν τα περιεχόμενα δυο γειτονικών κάδων μπορούν να χωρέσουν σε έναν)
52
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 52 Ευρετήρια Κατακερματισμού 2. Επεκτατός Κατακερματισμός Ο κατάλογος (ευρετήριο) είναι ένας πίνακας με 2 d διευθύνσεις κάδων (d: ολικό βάθος του καταλόγου) Τα πρώτα d ψηφία της τιμής κατακερματισμού χρησιμοποιούνται ως δείκτης στον πίνακα Δε χρειάζεται ένας διαφορετικός κάδος για κάθε μία από τις 2 d θέσεις - μπορεί η θέση του πίνακα να δείχνει στη διεύθυνση του ίδιου κάδου αν αυτές χωράνε σε ένα κάδο Για κάθε κάδο, τοπικό βάθος d’ o αριθμός των δυαδικών ψηφίων στα οποία βασίζεται η χρήση του κάδου
53
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 53 Ευρετήρια Κατακερματισμού 2. Επεκτατός Κατακερματισμός (συνέχεια) Η τιμή του d μπορεί να αυξάνεται (μέχρι 2 κ, κ: αριθμός δυαδικών ψηφίων της τιμής κατακερματισμού) ή να μειώνεται Αύξηση της τιμής του d Όταν ένας κάδος με τιμή d’ = d υπερχειλίσει Διπλασιασμός του πίνακα Μείωση της τιμής του d Όταν για όλους τους κάδους d’ < d Μείωση του μεγέθους του πίνακα στο μισό
54
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 54 Ευρετήρια Κατακερματισμού 3. Γραμμικός Κατακερματισμός Αριθμός Διασπάσεων n = 0: Έστω αρχικά Μ κάδους αριθμημένους από 0 έως Μ - 1 και αρχική συνάρτηση κατακερματισμού h 0 (k) = k mod M Αριθμός Διασπάσεων n = 1: Όταν συμβεί μια υπερχείλιση σε έναν οποιοδήποτε κάδο, ο κάδος 0 χωρίζεται σε δύο κάδους: τον αρχικό κάδο 0 και ένα νέο κάδο Μ στο τέλος του αρχείου με βάση την συνάρτηση h 1 (k) = k mod 2M Αριθμός Διασπάσεων n = κ : Όταν συμβεί μια υπερχείλιση σε έναν οποιοδήποτε κάδο, ο κάδος κ - 1 χωρίζεται σε δύο κάδους: τον αρχικό κάδο κ - 1 και ένα νέο κάδο Μ + κ - 1 στο τέλος του αρχείου με βάση την συνάρτηση h 1 (k) = k mod 2M Συνεχίζουμε γραμμικά, διασπώντας με τη σειρά τους κάδους 1, 2, 3,...
55
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 55 Ευρετήρια Κατακερματισμού 3. Γραμμικός Κατακερματισμός (συνέχεια) Έστω n ο αριθμός διασπάσεων και ότι αναζητούμε το k, τότε αν n h 0 (k) o κάδος δεν έχει διασπαστεί ενώ αν n > h 0 (k) o κάδος έχει διασπαστεί και εφαρμόζουμε την h 1 (k) Αλγόριθμος αναζήτησης
56
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 56 Ευρετήρια Κατακερματισμού 3. Γραμμικός Κατακερματισμός (συνέχεια) Όλοι οι κάδοι έχουν διασπαστεί όταν ;n = M Τότε έχουμε 2M κάδους Όταν n = M, μηδενίζουμε το n, n = 0 και για οποιαδήποτε νέα διάσπαση εφαρμόζουμε την h 2 (k) = k mod 4M Γενικά βήμα διάσπασης j - h j (k) = k mod 2 j M, j = 0, 1, 2, … και την h j+1 (k) για διασπάσεις
57
Βάσεις Δεδομένων 1999-2000 Ευαγγελία Πιτουρά 57 Ευρετήρια Κατακερματισμού 3. Γραμμικός Κατακερματισμός (συνέχεια) Αλγόριθμος Αναζήτησης j : βήμα διάσπασηςn : πλήθος διασπάσεων στο βήμα j if (n = 0) then m := h j (k); else { m := h j (k); if (m < n) then m := h j+1 (k) }
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.