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

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

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

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

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

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

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

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

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

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

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

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

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

Αποθήκευση εδομένων. Μαγνητικές ταινίες για. Εισαγωγή. Μέχρι σήμερα, είδαμε το σχεδιασμό και υλοποίηση μιας βάσης δεδομένων χρησιμοποιώντας ένα Σ Β

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις

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

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

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

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

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

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

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

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

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

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

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

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

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

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

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

Πίνακες Συμβόλων. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

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

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

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

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

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

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

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

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

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

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

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

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

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

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n

ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING)

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

Αποθήκευση Δεδοµένων

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Advanced Data Indexing

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Κατακερµατισµός Κεφάλαιο 14. Ε. Μαρκάκης Επίκουρος Καθηγητής

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

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

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

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

Δοµές Δεδοµένων. 15η Διάλεξη Δέντρα Δυαδικής Αναζήτησης και Κατακερµατισµός. Ε. Μαρκάκης

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

Δομές Αναζήτησης. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

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

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

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

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

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

Αποθήκευση Δεδοµένων

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 6 : Δομές αρχείων. Δρ. Γκόγκος Χρήστος

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

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

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

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

Transcript:

Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών ενός αρχείου µε βάση την τιµή ενός από τα πεδία του το οποίο λέγεται πεδίο διάταξης (ordering field) 2 : Κατακερµατισµός 1

Οργάνωση Αρχείων Αρχεία Κατακερµατισµού Βασική ιδέα: η τοποθέτηση των εγγραφών στα blocks του αρχείου γίνεται εφαρµόζοντας µια συνάρτηση κατακερµατισµού σε κάποιο από τα πεδία της εγγραφής 3 Εσωτερικός Κατακερµατισµός Εσωτερικός Κατακερµατισµός (τα δεδοµένα είναι στη µνήµη, όπως στις δοµές δεδοµένων) Πίνακας κατακερµατισµού µε Μ θέσεις - κάδους (buckets) h: συνάρτηση κατακερµατισµού h(k) = i Πεδίο αναζήτησης - Πεδίο κατακερµατισµού Σε ποιο κάδο - τιµή από 0 έως Μ-1 4 : Κατακερµατισµός 2

Αρχεία Κατακερµατισµού Εξωτερικός Κατακερµατισµός (εφαρµογή σε δεδοµένα αποθηκευµένα σε αρχεία) Στόχος h(k) = i Τιµή του πεδίου κατακερµατισµού Διεύθυνση (αριθµός) block του αρχείου που είναι αποθηκευµένη Η εγγραφή µε τιµή στο πεδίο κατακερµατισµού k αποθηκεύεται στο i-οστο block (κάδο) του αρχείου 5 Κατακερµατισµός h: συνάρτηση κατακερµατισµού Οµοιόµορφη κατανοµή των κλειδιών στους κάδους (blocks) Συνηθισµένη συνάρτηση κατακερµατισµού: Συχνά M πρώτος h(k) = k mod M 6 : Κατακερµατισµός 3

Κατακερµατισµός Σύγκρουση (collision): όταν µια νέα εγγραφή κατακερµατίζεται σε µία ήδη γεµάτη θέση Καλή συνάρτηση κατακερµατισµού: κατανέµει τις εγγραφές οµοιόµορφα στο χώρο των διευθύνσεων (ελαχιστοποίηση συγκρούσεων και λίγες αχρησιµοποίητες θέσεις) Ευριστικοί: -- αν r εγγραφές, πρέπει να επιλέξουµε το Μ ώστε το r/m να είναι µεταξύ του 0.7 και 0.9 -- όταν χρησιµοποιείται η mod τότε είναι καλύτερα το Μ να είναι πρώτος 7 Κατακερµατισµός Επίλυση Συγκρούσεων 1. Ανοιχτή Διευθυνσιοδότηση (open addressing): χρησιµοποίησε την επόµενη κενή θέση 2. Αλυσιδωτή Σύνδεση (chaining): για κάθε θέση µια συνδεδεµένη λίστα µε εγγραφές υπερχείλισης 3. Πολλαπλός Κατακερµατισµός (multiple hashing): εφαρµογή µιας δεύτερης συνάρτησης κατακερµατισµού 8 : Κατακερµατισµός 4

Εξωτερικός Κατακερµατισµός Κάδος: µια συστάδα από συνεχόµενα blocks του αρχείου h(k) = i Σχετική διεύθυνση του κάδου (ποιος κάδος του αρχείου) Τιµή του πεδίου κατακερµατισµού Ο κατακερµατισµός είναι πολύ αποδοτικός για επιλογές (ερωτήσεις) ισότητας 9 Εξωτερικός Κατακερµατισµός Ένας πίνακας που αποθηκεύεται στην επικεφαλίδα του αρχείου µετατρέπει τον αριθµό κάδου στην αντίστοιχη διεύθυνση block 0 διεύθυνση 1ου block του κάδου στο δίσκο 1 διεύθυνση 1ου block του κάδου στο δίσκο 2 διεύθυνση 1ου block του κάδου στο δίσκο... Μ-1 διεύθυνση 1ου block του κάδου στο δίσκο 10 : Κατακερµατισµός 5

Εξωτερικός Κατακερµατισµός Συγκρούσεις - αλυσιδωτή σύνδεση - εγγραφές υπερχείλισης ανά κάδο 1. Ανάγνωση όλου του αρχείου (scan) Έστω ότι διατηρούµε κάθε κάδο γεµάτο κατά 80% άρα ένα αρχείο µε µέγεθος Β blocks χρειάζεται 1.25 Β blocks 2. Αναζήτηση 1.25 * Β * (Τ D + R * Τ C ) Συνθήκη ισότητας και µόνο ένα block ανά κάδο: Τ D + R * C Αν συνθήκη περιοχής (διαστήµατος): scan! 11 Οργάνωση Αρχείων Κόστος: µεταφορά blocks (I/O) Σωρός Ταξινοµηµένο Κατακερµατισµένο Ανάγνωση του αρχείου Β B 1.25B Αναζήτηση µε συνθήκη ισότητας 0.5 B logb 1 Αναζήτηση µε συνθήκη περιοχής B logb + ταιριάσµατα 1.25 Β Εισαγωγή 2 αναζήτηση + B 2 Διαγραφή αναζήτηση + 1 αναζήτηση + Β αναζήτηση + 1 12 : Κατακερµατισµός 6

Εξωτερικός Κατακερµατισµός Πρόβληµα: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς µεγάλες αλυσίδες υπερχείλισης) Δυναµικός Κατακερµατισµός Στατικός Κατακερµατισµός Επεκτατός Γραµµικός 13 Δυναµικός Εξωτερικός Κατακερµατισµός Δυναµικός Εξωτερικός Κατακερµατισµός Δυαδική αναπαράσταση του αποτελέσµατος της συνάρτησης κατακερµατισµού, δηλαδή ως µια ακολουθίας δυαδικών ψηφίων Κατανοµή εγγραφών µε βάση την τιµή των αρχικών (ή τελικών) ψηφίων 14 : Κατακερµατισµός 7

Δυναµικός Εξωτερικός Κατακερµατισµός Το αρχείο ξεκινά µε ένα µόνο κάδο Μόλις γεµίσει ένας κάδος διασπάται σε δύο κάδους µε βάση την τιµή του 1ου (ή τελευταίου) δυαδικού ψηφίου των τιµών κατακερµατισµού -- δηλαδή οι εγγραφές που το πρώτο (τελευταίο) ψηφίο της τιµής κατακερµατισµού τους είναι 1 τοποθετούνται σε ένα κάδο και οι άλλες (µε 0) στον άλλο Νέα υπερχείλιση ενός κάδου οδηγεί σε διάσπαση του µε βάση το αµέσως επόµενο δυαδικό ψηφίο κοκ 15 Δυναµικός Εξωτερικός Κατακερµατισµός Έτσι δηµιουργείται µια δυαδική δενδρική δοµή που λέγεται κατάλογος (dirtectory) ή ευρετήριο (index) µε δύο ειδών κόµβους εσωτερικούς: που καθοδηγούν την αναζήτηση εξωτερικούς: που δείχνουν σε ένα κάδο 16 : Κατακερµατισµός 8

Δυναµικός Εξωτερικός Κατακερµατισµός (Παράδειγµα) Χρήση των τελευταίων bits της δυαδικής αναπαράστασης Αποτέλεσµα συνάρτησης κατακερµατισµού 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 20 010100 4 εγγραφές ανά κάδο 17 Δυναµικός Εξωτερικός Κατακερµατισµός Αλγόριθµος αναζήτησης h := τιµή κατακερµατισµού t := ρίζα του δέντρου i := 1 while (t εσωτερικός κόµβος) if (i-οστό bit του h είναι 0) t := αριστερά του t else t := δεξιά του t i := i +1 18 : Κατακερµατισµός 9

Δυναµικός Εξωτερικός Κατακερµατισµός Που αποθηκεύεται ο κατάλογος στη µνήµη, εκτός αν είναι πολύ µεγάλος τότε στο δίσκο οπότε θα απαιτούνται επιπρόσθετες προσπελάσεις Δυναµική επέκταση αλλά µέγιστος αριθµός επιπέδων (το πλήθος των δυαδικών ψηφίων της συνάρτησης κατακερµατισµού) Ισοζύγιση Συνένωση κάδων (δυναµική συρρίκνωση) 19 Επεκτατός Εξωτερικός Κατακερµατισµός Extendible hashing Ο κατάλογος είναι ένας πίνακας µε 2 d κάδων (d: ολικό βάθος του καταλόγου) διευθύνσεις 000 001 010 011 100 101 110 111 Κάδος για τις εγγραφές µε τιµές κατακερµατισµού που τελειώνουν σε 000 Τα τελευταία d ψηφία της τιµής κατακερµατισµού χρησιµοποιούνται ως δείκτης στον πίνακα Στις διαφάνειες, χρησιµοποιούµε τα τελευταία bits της δυαδικής αναπαράστασης 20 : Κατακερµατισµός 10

Επεκτατός Εξωτερικός Κατακερµατισµός Δε χρειάζεται ένας διαφορετικός κάδος για κάθε µία από τις 2 d θέσεις - µπορεί η θέση του πίνακα να δείχνει στη διεύθυνση του ίδιου κάδου αν αυτές χωράνε σε ένα κάδο 000 001 010 011 100 101 110 111 Κάδος για τις εγγραφές µε τιµές κατακερµατισµού που τελειώνουν από 00 Για κάθε κάδο, τοπικό βάθος d o αριθµός των δυαδικών ψηφίων στα οποία βασίζεται η χρήση του κάδου Παράδειγµα: 2 εγγραφές ανά κάδο εισαγωγή 2, 4, 3, 10, 7, 9 21 Επεκτατός Εξωτερικός Κατακερµατισµός (Παράδειγµα) Χρήση των τελευταίων bits της δυαδικής αναπαράστασης 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 4 εγγραφές ανά κάδο 22 : Κατακερµατισµός 11

Επεκτατός Εξωτερικός Κατακερµατισµός (Παράδειγµα) Χρήση των τελευταίων bits της δυαδικής αναπαράστασης 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 23 Επεκτατός Εξωτερικός Κατακερµατισµός Η τιµή του d µπορεί να αυξάνεται (µέχρι 2 κ, κ: αριθµός δυαδικών ψηφίων της τιµής κατακερµατισµού) ή να µειώνεται Αύξηση της τιµής του d Όταν ένας κάδος µε τιµή d = d υπερχειλίσει Διπλασιασµός του πίνακα Μείωση της τιµής του d Όταν για όλους τους κάδους d < d Μείωση του µεγέθους του πίνακα στο µισό Δε χρειάζεται rehash (επανακερµατισµό), διασπάµε κάθε κάδο Επίσης, κάθε φορά µόνο τον κάδο που υπερχείλισε 24 : Κατακερµατισµός 12

Επεκτατός Εξωτερικός Κατακερµατισµός (Παράδειγµα) 20 010100 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 Διάσπαση -> Ολικό βάθος 3 25 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 13 001101 20 010100 Επεκτατός Εξωτερικός Κατακερµατισµός 4 12 32 16 20 -> διάσπαση 26 : Κατακερµατισµός 13

Κατακερµατισµός ΠΡΟΣΟΧΗ ΓΕΝΙΚΗ ΠΑΡΑΤΗΡΗΣΗ Τι αποθηκεύουµε στους κάδους; Στα παραδείγµατα δείχνουµε µόνο την τιµή του πεδίου κατακερµατισµού Την ίδια την εγγραφή; (οργάνωση αρχείου) µέγεθος κάδου -> 1 block (ή συστοιχία από συνεχόµενα blocks) Τιµή του πεδίου κατακερµατισµού (+δείκτη στο υπόλοιπο της εγγραφής); Τι γίνεται αν το πεδίο κατακερµατισµού δεν είναι κλειδί (παραπάνω από µια εγγραφή µε την ίδια τιµή) 27 Γραµµικός Εξωτερικός Κατακερµατισµός Γραµµικός Κατακερµατισµός Θέλουµε να αποφύγουµε τη χρήση καταλόγου + Διπλασιασµό µεγέθους του καταλόγου Προσοχή! Αυτή η µέθοδος: Διατηρεί λίστες υπερχείλισης Δε χρησιµοποιεί τη δυαδική αναπαράσταση 28 : Κατακερµατισµός 14

Γραµµικός Εξωτερικός Κατακερµατισµός Χρησιµοποιεί µια οικογένεια από συναρτήσεις κατακερµατισµού h 0 (k), h 1 (k),, h d (k) Κάθε συνάρτηση διπλάσιους κάδους από την προηγούµενη: h 0 (k) = k mod M, h 1 (k) = k mod 2M, h 2 (k) = k mod 4M,, h j (k) = k mod 2 j M Όταν συµβαίνει η πρώτη υπερχείλιση ενός κάδου, πάµε στην επόµενη συνάρτηση µέχρι να διασπαστούν όλοι οι κάδοι µε αυτήν τη συνάρτηση ΠΡΟΣΟΧΗ: δε διασπάµε τον κάδο που υπερχειλίζει, αλλά έναν-έναν τον κάδο µε τη σειρά! 29 Γραµµικός Εξωτερικός Κατακερµατισµός Βασικά σηµεία Πολλές συναρτήσεις κατακερµατισµού (άλλη σε κάθε βήµα) Οι κάδοι σε κάθε βήµα διασπώνται µε τη σειρά (ο ένας µετά τον άλλο ανεξάρτητα αν έχουν ή όχι υπερχειλίσει) Επίσης, υποθέτουµε ότι κάθε υπερχείλιση, οδηγεί σε διάσπαση 30 : Κατακερµατισµός 15

Γραµµικός Εξωτερικός Κατακερµατισµός Αρχικά: Βήµα Διάσπασης (ποια συνάρτηση χρησιµοποιούµε) αρχικά j = 0: Πλήθος Διασπάσεων (στο τρέχον βήµα) αρχικά n = 0, j -> ποια συνάρτηση χρησιµοποιούµε n -> ποιο κάδο διασπάµε Έστω αρχικά Μ κάδους αριθµηµένους από 0 έως Μ - 1 και αρχική συνάρτηση κατακερµατισµού h 0 (k) = k mod M 31 j -> ποια συνάρτηση χρησιµοποιούµε n -> ποιο κάδο διασπάµε Γραµµικός Εξωτερικός Κατακερµατισµός Όταν συµβεί µια υπερχείλιση σε έναν οποιοδήποτε κάδο, ο κάδος 0 χωρίζεται σε δύο κάδους: τον αρχικό κάδο 0 και ένα νέο κάδο Μ στο τέλος του αρχείου µε βάση την συνάρτηση h 1 (k) = k mod 2M Βήµα Διάσπασης (ποια συνάρτηση χρησιµοποιούµε) j = 1 Πλήθος Διασπάσεων n = 1 Συνεχίζουµε γραµµικά, διασπώντας µε τη σειρά τους κάδους 1, 2, 3,... µέχρι να διασπαστούν όλοι οι «παλιοί» κάδοι η µεταβλητή n («Πλήθος Διασπάσεων») κρατάει ποιος κάδος έχει σειρά για διάσπαση 32 : Κατακερµατισµός 16

Γραµµικός Εξωτερικός Κατακερµατισµός Βήµα διάσπασης (ποια συνάρτηση χρησιµοποιούµε) j = 1: Πλήθος Διασπάσεων n = m -1 : Όταν συµβεί µια υπερχείλιση σε έναν οποιοδήποτε κάδο, ο κάδος m -1 χωρίζεται σε δύο κάδους: τον αρχικό κάδο m - 1 και ένα νέο κάδο m + k - 1 στο τέλος του αρχείου µε βάση την συνάρτηση h 1 (k) = k mod 2M Δηλαδή, σε κάθε υπερχείλιση χωρίζουµε όλους τους κάδους µε τη σειρά ξεκινώντας από τον πρώτο κάδο 33 Συνεχίζουµε... Όλοι οι κάδοι έχουν διασπαστεί όταν: Τότε έχουµε 2M κάδους Όταν n = M, µηδενίζουµε το n, n = 0 Γραµµικός Εξωτερικός Κατακερµατισµός n = M και για οποιαδήποτε νέα διάσπαση εφαρµόζουµε την h 2 (k) = k mod 4M Διασπώντας πάλι τον κάδο 0, 1,... κ.τ.λ 34 : Κατακερµατισµός 17

Γραµµικός Εξωτερικός Κατακερµατισµός Γενικά βήµα διάσπασης j (j = 0, 1, 2, ) h j (k) = k mod 2 j M, και την h j+1 (k) για διασπάσεις 35 32 9 44 31 25 5 35 7 36 14 18 10 11 30 Γραµµικός Εξωτερικός Κατακερµατισµός Κάθε κάδος 4 εγγραφές Αρχικά 4 κάδους (M = 4) ΠΡΟΣΟΧΗ: Δε χρησιµοποιούµε τη δυαδική αναπαράσταση 36 : Κατακερµατισµός 18

Γραµµικός Εξωτερικός Κατακερµατισµός (παράδειγµα) h 0 (k) = k mod 4 h 1 (k) = k mod 8 Για µη διασπασµένους κάδους: παλιά συνάρτηση Για διασπασµένους κάδους: νέα συνάρτηση 37 29 Βήµα διάσπασης 0 (χρήση h 0 ) Πλήθος διασπάσεων = 0 43 Διασπάµε τον πρώτο κάδο 22 66 34 37 Γραµµικός Εξωτερικός Κατακερµατισµός (παράδειγµα) 50 Βήµα διάσπασης 0 (χρήση h 0 ) Πλήθος διασπάσεων = 0 38 : Κατακερµατισµός 19

Αναζήτηση Εγγραφής (γενικά) Γραµµικός Εξωτερικός Κατακερµατισµός Τι χρειάζεται να ξέρουµε για να βρεθεί ο κάδος της εγγραφής k που ψάχνουµε; ποια συνάρτηση χρησιµοποιούµε (δηλαδή, το j) σε ποια διάσπαση βρισκόµαστε (δηλαδή το n) Έστω ότι είµαστε στο βήµα j, Τότε θα πρέπει να κοιτάξουµε είτε το ή το h j (k) αν ο κάδος δεν έχει διασπαστεί h j+1 (k) αν έχει διασπαστεί Πως θα ελέγξουµε αν ο κάδος έχει διασπαστεί ή όχι 39 Γραµµικός Εξωτερικός Κατακερµατισµός Αναζήτηση Εγγραφής Δύο περιπτώσεις ο κάδος στον οποίο είναι (1) έχει ή (2) δεν έχει διασπαστεί Κρατάµε µια µεταβλητή το πλήθος n των διασπάσεων Έστω n ο αριθµός διασπάσεων και ότι αναζητούµε το k, βρίσκεται στον κάδο h 0 (k) τότε αν n h 0 (k) o κάδος δεν έχει διασπαστεί ενώ αν n > h 0 (k) o κάδος έχει διασπαστεί και εφαρµόζουµε την h 1 (k) 40 : Κατακερµατισµός 20

Γραµµικός Εξωτερικός Κατακερµατισµός Αλγόριθµος Αναζήτησης j : βήµα διάσπασης if (n = 0) else { } then m := h j (k); m := h j (k); n : πλήθος διασπάσεων στο βήµα j if (m < n) then m := h j+1 (k) σηµαίνει ότι ο κάδος έχει διασπαστεί 41 : Κατακερµατισµός 21