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

Slides:



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

Indexing.
Συνάφεια Κρυφής Μνήμης σε Επεκτάσιμα Μηχανήματα. Συστήματα με Κοινή ή Κατανεμημένη Μνήμη  Σύστημα μοιραζόμενης μνήμης  Σύστημα κατανεμημένης μνήμης.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Κατακερματισμός Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Δυναμικός Κατακερματισμός.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια.
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
Ευρετήρια. 2 Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου Δευτερεύον ευρετήριο (secondary index): ορισμένο σε πεδία διαφορετικά.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Ευρετήρια.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Ευρετήρια.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Ευρετήρια.
Διαχείριση μνήμης Υπόβαθρο Εναλλαγή Συνεχής κατανομή Σελιδοποίηση
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Αποθήκευση Δεδομένων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακό Μοντέλο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακό Μοντέλο.
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Κατακερματισμός – Hashing (1 ο Μέρος)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Οργάνωση Αρχείων.
Παράδειγμα B + -Tree Υποθέτουμε B + -Tree τάξης 3 (α=2, b=3)  Κάθε φύλλο θα έχει 2 ως 3 το πολύ στοιχεία  Κάθε εσωτερικός κόμβος θα έχει 2 ως 3 το πολύ.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Λογικός Σχεδιασμός Σχεσιακών Σχημάτων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Οργάνωση Αρχείων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Αποθήκευση Δεδομένων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή Σχεδιασμός μιας ΒΔ ανάλυση ποιας πληροφορίας και της σχέσης ανάμεσα στα στοιχεία της περιγραφή.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακό Μοντέλο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Αποθήκευση Δεδομένων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Αποθήκευση Δεδομένων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Οργάνωση Αρχείων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Αποθήκευση Δεδομένων.
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
1 Είδη μέσων αποθήκευσης Πρωτεύοντα μέσα αποθήκευσης κεντρική μνήμη και όλες οι υπόλοιπες μνήμες (π.χ καταχωρητές, cache memory) Δευτερεύοντα μέσα αποθήκευσης.
Ευρετήρια.
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Δυναμικός Κατακερματισμός
Δεντρικά Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Βάσεις Δεδομένων ΙΙ 7η διάλεξη
Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Δεντρικά Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Αποθήκευση Δεδομένων Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Αποθήκευση Δεδομένων Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
Αποθήκευση Δεδομένων Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης
Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Εξωτερική Αναζήτηση Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

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

Τα δεδομένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Αρχεία Τα δεδομένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούμε τα δεδομένα θα πρέπει αυτά να βρίσκονται στη μνήμη. Η μεταφορά δεδομένων από το δίσκο στη μνήμη και από τη μνήμη στο δίσκο γίνεται σε μονάδες blocks Το διάβασμα ή γράψιμο ενός block ονομάζεται λειτουργία Εισόδου/Εξόδου (Input/Output – I/O) Βασικός στόχος η ελαχιστοποίηση της επικοινωνίας με το δίσκο: ελαχιστοποίηση του αριθμού των blocks που μεταφέρονται μεταξύ της πρωτεύουσας (κύριας μνήμης, cache – ενδιάμεση μνήμη – buffers-καταχωρητές) και της δευτερεύουσας αποθήκευσης (δίσκος) Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Οργάνωση Αρχείων (επανάληψη) Ένα αρχείο είναι λογικά οργανωμένο σε μια ακολουθία από εγγραφές Παραδοσιακά, Κάθε σχέση/πίνακας (το στιγμιότυπο της) αποθηκεύεται σε ένα αρχείο Η αποθήκευση είναι οριζόντια: κάθε πλειάδα της σχέσης αντιστοιχεί σε μια εγγραφή του αρχείου Δηλαδή, ένα αρχείο είναι μια ακολουθία από πλειάδες Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Οργάνωση Αρχείων (επανάληψη) Οργάνωση Αρχείων (επανάληψη) Μη εκτεινόμενη (unspanned) οργάνωση: οι εγγραφές δεν επιτρέπεται να διασχίζουν τα όρια ενός block (-) Αχρησιμοποίητος χώρος (+) Πιο εύκολη η προσπέλαση Έστω Β μέγεθος block σε byte και R μέγεθος εγγραφής σε bytes Παράγοντας ομαδοποίησης (blocking factor), όταν Β  R bfr =  (B / R)  Πόσες εγγραφές χωρούν σε ένα block b: Αριθμός blocks για την αποθήκευση ενός αρχείου r εγγραφών: b =  (r/bfr)  Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Σωρός Ταξινομημένο Κατακερματισμένο Οργάνωση Αρχείων Κόστος: μεταφορά blocks (I/O) Σωρός Ταξινομημένο Κατακερματισμένο Ανάγνωση του αρχείου Β B 1.25B Αναζήτηση με συνθήκη ισότητας 0.5 B logB 1 περιοχής B logB + ταιριάσματα 1.25 Β Εισαγωγή 2 αναζήτηση + B 2 Διαγραφή αναζήτηση + 1 αναζήτηση + Β αναζήτηση + 1 Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

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

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

Πυκνό ευρετήριο: μια καταχώρηση για κάθε εγγραφή του αρχείου Ευρετήρια Πυκνό ευρετήριο: μια καταχώρηση για κάθε εγγραφή του αρχείου Μη πυκνό ευρετήριο Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

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

Πρωτεύον Ευρετήριο Αρχείο Ευρετηρίου Αρχείο Δεδομένων Ποιο είναι το μέγεθος του ευρετηρίου (πόσα blocks); Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

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

Δυαδική αναζήτηση στο πρωτεύον ευρετήριο Πρωτεύον Ευρετήριο Αναζήτηση Δυαδική αναζήτηση στο πρωτεύον ευρετήριο Ανάγνωση του block από το αρχείο δεδομένων Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Παράδειγμα (υπολογισμός κόστους αναζήτησης) Δεδομένα όπως πριν Πρωτεύον Ευρετήριο Παράδειγμα (υπολογισμός κόστους αναζήτησης) Δεδομένα όπως πριν (Έστω διατεταγμένο αρχείο με rA = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους RA = 100 bytes, όπου το πεδίο κλειδιού διάταξης έχει μέγεθος VA = 9 bytes, μη εκτεινόμενη καταχώρηση. Κατασκευάζουμε πρωτεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes) bfrA = 10 bfrE = 68 Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου: 45 blocks Δυαδική γιατί το αρχείο ταξινομημένο Αναζήτηση χωρίς ευρετήριο: log 3.000 = 12 blocks Αναζήτηση με ευρετήριο: log 45 + 1 = 7 blocks block ευρετηρίου block αρχείου Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

αλλαγές και στο πρωτεύον ευρετήριο μη διατεταγμένο αρχείο υπερχείλισης Πρωτεύον Ευρετήριο Εισαγωγή εγγραφής αλλαγές και στο πρωτεύον ευρετήριο μη διατεταγμένο αρχείο υπερχείλισης συνδεδεμένη λίστα εγγραφών υπερχείλισης Διαγραφή εγγραφής αλλαγές και στο πρωτεύον ευρετήριο χρήση σημαδιών διαγραφής Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Access paths (μονοπάτια προσπέλασης) Ευρετήρια Access paths (μονοπάτια προσπέλασης) Το ευρετήριο αρχείου είναι (πάντα) ένα διατεταγμένο αρχείο με σταθερού μήκους εγγραφές Το αρχείο ευρετηρίου καταλαμβάνει μικρότερο χώρο από το ίδιο το αρχείο δεδομένων (οι καταχωρήσεις είναι μικρότερες και λιγότερες) Κάνοντας δυαδική αναζήτηση στο ευρετήριο (γιατί το ευρετήριο είναι διατεταγμένο αρχείο) βρίσκουμε τον δείκτη στο block όπου αποθηκεύεται η εγγραφή που θέλουμε Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο Συστάδων Ευρετήριο συστάδων (clustering index): ορισμένο στο πεδίο διάταξης [το οποίο όμως δεν είναι κλειδί] Υπάρχει μια εγγραφή για κάθε διακεκριμένη τιμή του πεδίου διάταξης (συστάδας) του αρχείου που περιέχει: την τιμή αυτή ένα δείκτη προς το πρώτο block του αρχείου δεδομένων που περιέχει μια εγγραφή με την τιμή αυτή στο πεδίο συστάδας Το ευρετήριο στο πεδίο διάταξης (+ όχι κλειδί) είναι ένα μη πυκνό ευρετήριο Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο συστάδων ή συγκροτημένο ευρετήριο Ευρετήριο Συστάδων Ευρετήριο συστάδων ή συγκροτημένο ευρετήριο Όταν η διάταξη του ευρετηρίου ακολουθεί αυτή του αρχείου δεδομένων Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Παράδειγμα (υπολογισμός μεγέθους ευρετηρίου) Ευρετήριο Συστάδων Παράδειγμα (υπολογισμός μεγέθους ευρετηρίου) Έστω διατεταγμένο αρχείο με rA = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους RA = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο διάταξης έχει μέγεθος VA = 9 bytes και υπάρχουν 1000 διαφορετικές τιμές και οι εγγραφές είναι ομοιόμορφα κατανεμημένες ως προς τις τιμές αυτές. Υποθέτουμε ότι χρησιμοποιούνται άγκυρες block, κάθε νέα τιμή του πεδίου διάταξης αρχίζει στην αρχή ενός νέου block. Κατασκευάζουμε ευρετήριο συστάδων, μέγεθος δείκτη block P = 6 bytes bfrA = 10 bfrE = 68 Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος ευρετηρίου συστάδων: 15 blocks Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δυαδική αναζήτηση στο ευρετήριο Ευρετήριο Συστάδων Αναζήτηση (όπως πριν) Δυαδική αναζήτηση στο ευρετήριο Ανάγνωση blocks (τώρα μπορεί να είναι παραπάνω από ένα) από το αρχείο δεδομένων Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Παράδειγμα (υπολογισμός κόστους αναζήτησης) Ευρετήριο Συστάδων Παράδειγμα (υπολογισμός κόστους αναζήτησης) (στοιχεία όπως πριν) Έστω διατεταγμένο αρχείο με 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 Αναζήτηση χωρίς ευρετήριο: log 3.000 + ταιριάσματα (= 3)  15 blocks Αναζήτηση με ευρετήριο: log 15 + 3 = 7 blocks Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δευτερεύον Ευρετήριο Δευτερεύον ευρετήριο (secondary index): ορισμένο σε πεδίο διαφορετικό του πεδίου διάταξης Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

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

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

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

Περίπτωση 2: Το πεδίο ευρετηριοποίησης δεν είναι κλειδί Δευτερεύον Ευρετήριο Περίπτωση 2: Το πεδίο ευρετηριοποίησης δεν είναι κλειδί 1. Πυκνό ευρετήριο: μία καταχώρηση για κάθε εγγραφή 2. Μεταβλητού μήκους εγγραφές με ένα επαναλαμβανόμενο πεδίο για το δείκτη 3. Μία εγγραφή ευρετηρίου για κάθε τιμή του πεδίου ευρετηριοποίησης + ένα ενδιάμεσο επίπεδο για την διαχείριση των πολλαπλών δεικτών Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δευτερεύον Ευρετήριο Συστάδων Παράδειγμα (υπολογισμός μεγέθους ευρετηρίου) Έστω μη διατεταγμένο αρχείο (αρχείο σωρού) με rA = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους RA = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο ευρετηριοποίησης (δηλαδή, το πεδίο στο οποίο θα κατασκευάσουμε το ευρετήριο) έχει μέγεθος VA = 9 bytes. Υπάρχουν 1000 διαφορετικές τιμές και οι εγγραφές είναι ομοιόμορφα κατανεμημένες ως προς τις τιμές αυτές. Κατασκευάζουμε ευρετήριο συστάδων χρησιμοποιώντας την επιλογή (3), μέγεθος δείκτη block P = 6 bytes κόστος αναζήτησης; Ευρετήριο bfr Ε = 68 bE = 15 Ενδιάμεσο επίπεδο -- Ποια είναι η οργάνωση του; bfr ΕE = 170 bEE = 177 blocks Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δυαδική αναζήτηση στο δευτερεύον ευρετήριο Δευτερεύον Ευρετήριο Αναζήτηση Δυαδική αναζήτηση στο δευτερεύον ευρετήριο Ανάγνωση του block (ή των blocks) από το ενδιάμεσο επίπεδο Ανάγνωση των blocks (συνήθως τόσα όσες οι εγγραφές που ταιριάζουν) από το αρχείο δεδομένων Εισαγωγή Απλή αν δεν αφορά εισαγωγή νέας τιμής στο ευρετήριο Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

… Αρχείο Ευρετηρίου Αρχείο δεδομένων 4 7 12 14 25 27 33 36 36 38 49 51 66 69 74 80 86 100 103 108 111 125 129 133 136 142 144 158 Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Εύκολη η λογική διάταξη των εγγραφών με βάση το πεδίο ευρετηριοποίησης Ευρετήρια Επιπρόσθετες δομές για την πιο αποδοτική εκτέλεση ερωτήσεων/αναζητήσεων – προκαλούν όμως επιβάρυνση στις τροποποιήσεις Εύκολη η λογική διάταξη των εγγραφών με βάση το πεδίο ευρετηριοποίησης Ανακτήσεις με σύνθετες συνθήκες, μπορεί να γίνουν χρησιμοποιώντας τα blocks του ευρετηρίου Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο Πολλών Επιπέδων Ιδέα: Τα ευρετήρια είναι αρχεία - χτίζουμε ευρετήρια πάνω στα αρχεία ευρετηρίου Το αρχείο είναι διατεταγμένο και το πεδίο διάταξης είναι και κλειδί (άρα πρωτεύον ευρετήριο!) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

… Αρχείο δεδομένων Ευρετήριο 3ου επιπέδου Ευρετήριο 2ου επιπέδου 4 Αρχείο δεδομένων 7 12 14 25 27 33 … 36 36 38 4 49 14 51 4 33 66 49 49 69 108 69 74 86 80 Ευρετήριο 3ου επιπέδου 108 86 129 100 142 103 108 Ευρετήριο 2ου επιπέδου 111 125 129 133 136 142 144 Ευρετήριο 1ου επιπέδου (αρχικό ευρετήριο) 158 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο Πολλών Επιπέδων Έστω ότι το αρχείο ευρετηρίου είναι το πρώτο ή βασικό επίπεδο Έστω ότι ο παράγοντας ομαδοποίησης είναι f0 και ότι έχει r1 blocks Το αρχείο ευρετηρίου είναι διατεταγμένο και το πεδίο διάταξης είναι και κλειδί Δημιουργούμε ένα πρωτεύον ευρετήριο για το ευρετήριο πρώτου επιπέδου - δεύτερο επίπεδο f0 Αριθμός block Παράγοντας ομαδοποίησης:  (r1/f0)  Δημιουργούμε ένα πρωτεύον ευρετήριο για το ευρετήριο δεύτερου επιπέδου - τρίτο επίπεδο Παράγοντας ομαδοποίησης: f0 Αριθμός block  (r1/(f0)2)  Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο Πολλών Επιπέδων Μέχρι πόσα επίπεδα: Μέχρι όλες οι εγγραφές του ευρετηρίου να χωρούν σε ένα block Έστω t κορυφαίο επίπεδο (top level)  (r1/(f0)t)  = 1 Το f0 ονομάζεται και παράγοντας διακλάδωσης του ευρετηρίου Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

… Αρχείο δεδομένων FO = 3 Ευρετήριο 3ου επιπέδου 4 Αρχείο δεδομένων 7 12 FO = 3 14 25 27 Επίπεδο Ρίζα (1 Block) 33 … 36 36 38 4 49 14 51 4 33 66 49 49 69 108 69 74 86 80 Ευρετήριο 3ου επιπέδου 108 86 129 100 142 103 108 Ευρετήριο 2ου επιπέδου 111 125 129 133 136 142 144 Ευρετήριο 1ου επιπέδου (αρχικό ευρετήριο) 158 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο 3ου επιπέδου (επίπεδο ρίζας) 108 49 4 Δείκτης στο αρχείο δεδομένων (ή στην περίπτωση αρχείου ενδιάμεσου επιπέδου σε αυτό) Ευρετήριο 2ου επιπέδου 142 129 108 86 69 49 33 14 4 158 144 142 136 133 129 125 111 108 103 100 86 80 74 69 66 51 49 38 36 33 27 25 14 12 7 4 Ευρετήριο 1ου επιπέδου (αρχικό ευρετήριο) Σημείωση: στο αρχικό ευρετήριο μπορεί να βάζουμε μία τιμή για κάθε εγγραφή του αρχείου δεδομένων (πυκνό ευρετήριο) ή μια εγγραφή για κάθε διακριτή τιμή κλπ ανάλογα με το τύπο του πεδίου ευρετηριοποίησης (κλειδί/πεδίο ταξινόμησης) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο Πολλών Επιπέδων Αναζήτηση p := διεύθυνση του block του κορυφαίου επιπέδου του ευρετηρίου t := αριθμός επιπέδων του ευρετηρίου for j = t to 1 step -1 do read block με διεύθυνση p του ευρετηρίου στο επίπεδο j αναζήτηση στο block p της εγγραφής i με τιμή Κj(i)  K < Kj(i+1) read το block του αρχείου δεδομένων με διεύθυνση p Aναζήτηση στο block p της εγγραφής i με τιμή Κj(i)  K < Kj(i+1) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

… Αρχείο δεδομένων FO = 3 36 Ευρετήριο 3ου επιπέδου (επίπεδο ρίζας) 4 Αρχείο δεδομένων 7 12 FO = 3 14 25 27 33 … 36 36 36 38 4 49 14 51 4 33 66 49 49 69 108 69 74 86 80 Ευρετήριο 3ου επιπέδου (επίπεδο ρίζας) 108 86 129 100 142 103 108 Ευρετήριο 2ου επιπέδου 111 125 129 133 136 142 144 Ευρετήριο 1ου επιπέδου (αρχικό ευρετήριο) 158 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο Πολλών Επιπέδων Εισαγωγή/διαγραφή τροποποιήσεις πολλαπλών ευρετηρίων Δυναμικό πολυεπίπεδο ευρετήριο: Β-δέντρα και Β+-δέντρα Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο Πολλών Επιπέδων Παράδειγμα (υπολογισμός μεγέθους ευρετηρίου) Έστω αρχείο με rA = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους RA = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο κλειδιού έχει μέγεθος VA = 9 bytes αλλά δεν είναι πεδίο διάταξης. Κατασκευάζουμε δευτερεύον ευρετήριο στο πεδίο κλειδιού, μέγεθος δείκτη block P = 6 bytes f0 =  (1024 / (9 + 6))  = 68 Μέγεθος αρχείου δεδομένων: 3.000 blocks Μέγεθος αρχείου ευρετηρίου πρώτου επιπέδου: 442 blocks Μέγεθος αρχείου ευρετηρίου δεύτερου επιπέδου: (442 / 68)  = 7 blocks Μέγεθος αρχείου ευρετηρίου τρίτου επιπέδου: (7 / 68)  = 1 block Άρα t = 3 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ευρετήριο Πολλών Επιπέδων Παράδειγμα (υπολογισμός κόστους αναζήτησης) Έστω αρχείο με rA = 30.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους RA = 100 bytes, μη εκτεινόμενη καταχώρηση, όπου το πεδίο κλειδιού έχει μέγεθος VA = 9 bytes αλλά δεν είναι πεδίο διάταξης,. Κατασκευάζουμε δευτερεύον ευρετήριο, μέγεθος δείκτη block P = 6 bytes Άρα t = 3 Παράδειγμα t + 1 = 4 προσπελάσεις Για το δευτερεύον ήταν 10 και χωρίς ευρετήριο 1500 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Πολύ-επίπεδα Ευρετήρια Τα αρχεία ευρετηρίων είναι απλά αρχεία, άρα και σε αυτά μπορούν να οριστούν ευρετήρια Καταλήγουμε λοιπόν σε μια ιεραρχία δομών ευρετηρίων (πρώτο επίπεδο, δεύτερο επίπεδο, κλπ.) Κάθε επίπεδο του ευρετηρίου είναι ένα διατεταγμένο αρχείο, συνεπώς, εισαγωγές/διαγραφές εγγραφών απαιτούν επιπλέον δουλειά Ένα πολύ-επίπεδο ευρετήριο αποτελεί ένα Δέντρο Αναζήτησης Όπου κάθε κόμβος (block) έχει f0 δείκτες και f0 τιμές κλειδιού Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

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

Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ δείκτες ως εξής P1 K1 … Pj Kj … Pq-1 Kq-1 Pp δείκτης σε block του αρχείου δεδομένων Συμβολισμός: Ki* Kp-1 < X X < K1 Kj-1< X < Kj Κ1 < Κ2 < … Κ q -1 και για όλες τις τιμές X στα υποδέντρα ισχύει Κj-1 < X < Kj για 1 < j < p, X < Kj για j =1, και Κj -1 < Χ για j = p Σημείωση: Γενικά στα ευρετήρια, ζεύγη <τιμή, προσδιοριστής εγγραφής> Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Κάθε κόμβος του δέντρου είναι ένα block στο δίσκο Δέντρα Αναζήτησης Κάθε κόμβος του δέντρου είναι ένα block στο δίσκο Ισοζυγισμένο: όλοι οι κόμβοι-φύλλα στο ίδιο επίπεδο Β-δέντρο: ένα δέντρο αναζήτησης που παραμένει ισοζυγισμένο και χωρίς «πολύ αδειανούς» κόμβους Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ένα Β-δέντρο τάξεως (order) p ορίζεται ως εξής: Β-δέντρα Ένα Β-δέντρο τάξεως (order) p ορίζεται ως εξής: 1. Κάθε εσωτερικός κόμβος είναι της μορφής <P1, <K1, Pr1>, P2, <K2, Pr2>, … <Kq-1, Prq-1>, Pq>, q < p, όπου Pi δείκτης δέντρου, Ki τιμή αναζήτησης, Pri δείκτης δεδομένων P1 K1 Pr1 ... Kj-1 Prj-1 Pj … Pq-1 Kq-1 Prq-1 P q Συμβολισμός Ki* X < K1 Kq-1 < X Kj-1< X < Kj 2. Σε κάθε κόμβο Κ1 < Κ2 < … Κ q -1 3. Για όλες τις τιμές X στο υποδέντρο που δείχνει το Pj ισχύει Κj-1 < X < Kj για 1 < j < q, X < Kj για j =1, και Κj -1 < Χ για j = q Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα 4. Κάθε κόμβος έχει το πολύ p δείκτες δέντρου 6. Ένας κόμβος με q δείκτες δέντρου περιέχει q - 1 τιμές πεδίου αναζήτησης (και άρα και q - 1 δείκτες δεδομένων). 7. Όλα τα φύλλα βρίσκονται στο ίδιο επίπεδο. Τα φύλλα έχουν την ίδια δομή εκτός του ότι οι δείκτες δέντρου είναι null. Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα (παράδειγμα) τάξη ρ = 3 (2 τιμές ανά κόμβο, 3 δείκτες block ευρετηρίου) Δείκτης σε block ευρετηρίου (null για κόμβους φύλλα) 5* 8* 5 5* Δείκτης στο block αρχείου δεδομένων που περιέχει το 5 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα Αναζήτηση Διαβάζουμε το block της ρίζας Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα Εισαγωγή τιμής Αρχικά ένας μόνο κόμβος (ρίζα) στο Επίπεδο 0 Όταν ο κόμβος ρίζα γεμίσει (p – 1 τιμές κλειδιού), νέα εισαγωγή οδηγεί στην διάσπαση του κόμβου σε δύο κόμβους στο Επίπεδο 1: η μεσαία τιμή στη ρίζα, οι υπόλοιπες μοιράζονται εξίσου σε δύο κόμβους του Επιπέδου 1 Όταν ένας κόμβος εκτός της ρίζας γεμίσει, νέα εισαγωγή οδηγεί σε διάσπαση του κόμβου σε δύο κόμβους στο ίδιο επίπεδο και μεταφορά της μεσαίας τιμής στον γονέα του κόμβου ΠΡΟΣΟΧΗ: η εισαγωγή της μεσαίας τιμής στο γονέα αν ο γονέας είναι γεμάτος μπορεί να οδηγήσει σε διάσπαση του γονέα. Η διάσπαση μπορεί να οδηγήσει ως τη ρίζα, οπότε δημιουργείται και νέο επίπεδο. Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα (παράδειγμα) τάξη ρ = 3 (2 τιμές ανά κόμβο, 3 δείκτες block ευρετηρίου) - Εισαγωγή 5, 8, 7, 14, 19, 6, 10 Δείκτης σε block ευρετηρίου (null για κόμβους φύλλα) 5* 8* 5 5* Δείκτης στο block αρχείου δεδομένων που περιέχει το 5 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα (παράδειγμα) Τάξης p = 5 -- το πολύ 4, τουλάχιστον 2 τιμές ανά κόμβο (εκτός της ρίζας) 5 10 3 18 16 22 7 25 30 2 9 33 40 29 19 20 13 1 35 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα Διαγραφή τιμής Τιμή προς διαγραφή ανήκει σε φύλλο -> ok Τιμή προς διαγραφή ανήκει σε εσωτερικό κόμβο -> Αν σβήσουμε το Ki, τότε το μικρότερο κλειδί του υποδέντρου Pi+1 πρέπει να το αντικαταστήσει (δηλαδή το μικρότερο κλειδί του κόμβου στα δεξιά του κλειδιού που διαγράφεται) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα Διαγραφή τιμής Αν υποχείλιση αν είναι δυνατόν ανακατανομή με τον αριστερό αδελφό αν όχι, προσπάθεια ανακατανομής με το δεξιό αδελφό αν όχι ανακατανομή, συγχώνευση των κόμβων σε περίπτωση συγχώνευσης: διαγράφουμε και την αντίστοιχη εγγραφή στον γονέα (πιθανή υποχείλιση και στο γονέα) Σε κάθε περίπτωση (ανακατανομή και συγχώνευση) κατεβάζουμε και την τιμή του γονέα – και στο γονέα ανεβαίνει η νέα μεσαία τιμή Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β-δέντρα: παράδειγμα ρίζα 18* 10* 5* 22* 30* 1* 2* 29* 25* 3* 16* 13* 35* 33* 40* 9* 7* 20* 19* Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 13

Β-δέντρα (παράδειγμα) Τάξης p = 5 -- το πολύ 4, τουλάχιστον 2 τιμές ανά κόμβο (εκτός της ρίζας) 5 10 3 18 16 22 7 25 30 2 9 33 40 29 19 20 13 1 35 Διαγραφή τιμής σε φύλλο χωρίς υποχείλιση 1 Διαγραφή τιμής σε εσωτερικό κόμβο χωρίς υποχείλιση 30 Διαγραφή τιμής σε φύλλο με υποχείλιση και δανεισμό 7 Διαγραφή τιμής σε φύλλο με υποχείλιση και συγχώνευση 7 και μετά 5 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Β-δέντρα Κάθε κόμβος του 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 Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Ποιες εγγραφές βάζουμε στο Β-δέντρο Β-δέντρα Ποιες εγγραφές βάζουμε στο Β-δέντρο (πεδίο διάταξης – κλειδί, πεδίο διάταξης – όχι κλειδί, όχι πεδίο διάταξης – κλειδί, όχι πεδίο διάταξης – όχι κλειδί) Αναζήτηση διαστήματος τιμών Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Παράδειγμα (υπολογισμός μεγέθους ευρετηρίου) Β-δέντρο Παράδειγμα (υπολογισμός μεγέθους ευρετηρίου) Έστω διατεταγμένο αρχείο με rA = 300.000 εγγραφές, μέγεθος block B = 1024 bytes, σταθερού μεγέθους εγγραφές μεγέθους RA = 100 bytes, μη εκτεινόμενη καταχώρηση. Κατασκευάζουμε ευρετήριο Β-δέντρο πάνω στο πεδίο διάταξης που είναι και κλειδί. Το πεδίο ευρετηριοποίησης έχει μέγεθος VA = 8 bytes. Μέγεθος δείκτη block (και για το αρχείο δεδομένων και για τους κόμβους του ευρετηρίου είναι) P = 6 bytes Ποιος είναι ο (ελάχιστος) αριθμός επιπέδων για ένα Β-δέντρο Τι μπορείτε να πείτε για το μέγεθος του (σε αριθμό block); Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β-δέντρα Υπολογισμός επιπέδων Έστω όπως πριν, 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) Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα Διαφορά Β+ από Β-δέντρο: Αποθηκεύουμε δείκτες δεδομένων (στο αρχείο δεδομένων) μόνο στα φύλλα Δύο τύποι κόμβων: εσωτερικοί κόμβοι φύλλα Όλες οι τιμές του πεδίου αναζήτησης εμφανίζονται στα φύλλα. Κάποιες τιμές μπορεί να εμφανίζονται παραπάνω από μια φορά Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Ένα Β+-δέντρο τάξεως (order) p ορίζεται ως εξής: Β+-δέντρα Ένα Β+-δέντρο τάξεως (order) p ορίζεται ως εξής: 1. Κάθε εσωτερικός κόμβος είναι της μορφής <P1, K1, P2, K2, , … Kq-1, Pq-1, Pq> q  p, όπου Pi δείκτης δέντρου, Ki τιμή αναζήτησης P1 K1 ... Kj-1 Pj Kj … Pq-1 Kq-1 P q (*) Kq-1  X X < K1 Kj-1  X < Kj 2. Σε κάθε εσωτερικό κόμβο Κ1 < Κ2 < … Κ q -1 3. Για όλες τις τιμές X στο υποδέντρο που δείχνει το Pj ισχύει Κ  X < Kj για 1 < j < q, X < Kj για j =1, και Κj -1  Χ για j = q (*) σύμβαση, θα μπορούσε και Kj-1 < X  Kj Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα 4. Κάθε εσωτερικός κόμβος έχει το πολύ p δείκτες δέντρου 6. Ένας κόμβος με q δείκτες δέντρου περιέχει q - 1 τιμές πεδίου αναζήτησης Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα K1 Pr1 ... Kj Prj … Kq Prq Pnext 1. Κάθε κόμβος-φύλλο είναι της μορφής <<K1, Pr1>, <K2, Pr2>, … <Kq, Prq>, Pnext>, q  pleaf, όπου pleaf είναι η τάξη των κόμβων-φύλλων Ki τιμή αναζήτησης, Pri δείκτης δεδομένων που δείχνει στο block (ή στην εγγραφή) με τιμή στο πεδίο αναζήτησης Ki (ή σε ένα block ενδιάμεσου επιπέδου αν το πεδίο αναζήτησης δεν είναι κλειδί), Pnext δείχνει στο επόμενο φύλλο και χρησιμοποιείται για τη γρήγορη ανάγνωση του αρχείου σε διάταξη K1 Pr1 ... Kj Prj … Kq Prq Pnext 2. Σε κάθε κόμβο-φύλλο Κ1 < Κ2 < … Κ q Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

3. Κάθε κόμβος-φύλλο έχει το πολύ pleaf τιμές Β+-δέντρα 3. Κάθε κόμβος-φύλλο έχει το πολύ pleaf τιμές 4. Κάθε κόμβος-φύλλο έχει τουλάχιστον (pleaf /2) τιμές. 5. Όλοι οι κόμβοι-φύλλα βρίσκονται στο ίδιο επίπεδο. Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα Η αναζήτηση ξεκινά από τη pίζα, και οι συγκρίσεις των κλειδιών μας οδηγούν στα φύλλα Αναζήτηση για τα 5*, 15*, όλες οι καταχωρήσεις >= 24* ... ΡΙΖΑ 13 17 24 30 2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 10

Nodepointer tree_search(nodepointer P, keyvalue K) Β+-δέντρα: Αναζήτηση Nodepointer tree_search(nodepointer P, keyvalue K) if P is a leaf return(P); else if K < K1 tree_search(P1, K) find i such that Ki  K < Ki+1 return tree_search(Pi, K) end Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Αναζήτηση (αναδρομική εκδοχή) Β+-δέντρα: Αναζήτηση Αναζήτηση (αναδρομική εκδοχή) nodepointer find(keyvalue K): return tree_search(root, K); end; Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

1. Αναζήτηση του φύλλου για εισαγωγή: έστω φύλλο P Β+-δέντρα: Εισαγωγή Εισαγωγή 1. Αναζήτηση του φύλλου για εισαγωγή: έστω φύλλο P 2. Εισαγωγή τιμής Κ στο κόμβο P Αν ο κόμβος-φύλλο δεν είναι γεμάτος εισαγωγή της τιμής Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Αν ο κόμβος-φύλλο είναι γεμάτος (έχει pleaf εγγραφές) Β+-δέντρα: Εισαγωγή Αν ο κόμβος-φύλλο είναι γεμάτος (έχει pleaf εγγραφές) διάσπαση του κόμβου: -- οι πρώτες k = (pleaf+ 1)/2 παραμένουν στον κόμβο -- οι υπόλοιπες σε καινούργιο κόμβο -- εισαγωγή (αντιγραφή) της k+1-οστής τιμής (Kk+1) στο γονέα Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Αν ένας εσωτερικός κόμβος είναι γεμάτος (έχει p εγγραφές) Β+-δέντρα: Εισαγωγή Αν ένας εσωτερικός κόμβος είναι γεμάτος (έχει p εγγραφές) διάσπαση του κόμβου: έστω k =  ((p+1)/2)  -- οι εγγραφές μέχρι το Pk (μετά την εισαγωγή) παραμένουν στον κόμβο -- η k+1-οστή Kk+1 τιμή μεταφέρεται (δεν αντιγράφεται) στον πατέρα -- οι υπόλοιπες σε καινούργιο κόμβο Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα: Εισαγωγή Οι διασπάσεις κόμβων (εκτός ρίζας) “μεγαλώνουν” το δέντρο Η διάσπαση της ρίζας “ υψώνει ” το δέντρο Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 6

Β+-δέντρα (παράδειγμα) 5, 9, 7, 14, 6, 19, 10 και τάξη ρ = 3 (2 τιμές ανά κόμβο, 3 δείκτες block ευρετηρίου) και pleaf = 2 Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

8 Β+-δέντρα: Εισαγωγή Εισαγωγή της καταχώρησης 8* ΡΙΖΑ 13 17 24 30 2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 10

Β+-δέντρα: Εισαγωγή Καταχώρηση στον κόμβο γονέα (αντιγραφή) 5 Το 5 ανεβαίνει επάνω, αλλά παραμένει και στο φύλλο 2* 3* 5* 7* 8* Καταχώρηση στον κόμβο γονέα (μεταφορά) Το 17 ανεβαίνει επάνω και παρουσιάζεται μόνο μία φορά στο ευρετήριο (σε αντίθεση με τα φύλλα) 17 5 13 24 30 Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 12

Η ρίζα διασπάστηκε οδηγώντας σε αύξηση του ύψους. Β+-δέντρα: Εισαγωγή 2* 3* ρίζα 17 24 30 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* 13 5 7* 5* 8* Η ρίζα διασπάστηκε οδηγώντας σε αύξηση του ύψους. Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά 13

Β+-δέντρα Όλες οι τιμές εμφανίζονται στα φύλλα και κάποιες επαναλαμβάνονται και σε εσωτερικούς κόμβους (η τιμή Κ σε ένα εσωτερικό κόμβο μπορεί επίσης να εμφανίζεται ως η πιο αριστερή τιμή στο φύλλο του υποδέντρου με ρίζα το δείκτη στα δεξιά του Κ) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

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

1. Αναζήτηση του φύλλου που περιέχει το Κ: έστω φύλλο P Β+-δέντρα: Διαγραφή Διαγραφή 1. Αναζήτηση του φύλλου που περιέχει το Κ: έστω φύλλο P 2. Αν υποχείλιση αν είναι δυνατόν ανακατανομή με τον αριστερό αδελφό (> (n/2) ) αν όχι, προσπάθεια ανακατανομής με το δεξιό αδελφό αν όχι, συγχώνευση και των τριών κόμβων σε δύο κόμβους Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα: Διαγραφή 2. Αν υποχείλιση (αναλυτικά) 2. Αν υποχείλιση (αναλυτικά) <ανακατανομή εγγραφών> Αν είναι δυνατόν, ανακατανομή με τον αριστερό αδελφό (> (n/2) ) αν όχι, προσπάθεια ανακατανομής με το δεξιό αδελφό ανακατανομή εγγραφών σε κάθε κόμβο βρείτε την εγγραφή στο γονέα του δεξιού κόμβου Ν αντικατάσταση της τιμής κλειδιού στο γονέα τους με τη μικρότερη τιμή του κόμβου Ν <συγχώνευση κόμβων> Αν δεν είναι δυνατή η ανακατανομή συγχώνευση κόμβων οδηγεί σε διαγραφή στο παραπάνω επίπεδο, σβήνεται η εγγραφή που δείχνει στον κόμβο (πιθανότητα νέας υποχείλισης) Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα: Διαγραφή Εσωτερικοί κόμβοι Ειδική περίπτωση στη συγχώνευση εσωτερικών κόμβων, όταν συγχωνεύεται ο ακραίος αριστερός δείκτης ενός εσωτερικού κόμβου (ο οποίος δεν έχει τιμή) Τότε, πρέπει να συμβουλευτούμε τον γονέα των δύο κόμβων που συγχωνεύονται -> χρήση της τιμής του δείκτη που δείχνει σε αυτόν τον κόμβο «Κατεβάζουμε» την τιμή από τον γονέα ως πιο αριστερή τιμή στον προς συγχώνευση κόμβο Ειδικά για την ανακατανομή εσωτερικών κόμβων Πάλι μέσω του γονέα τους Δηλαδή θεωρούμε και την τιμή του γονέα στην ανακατανομή Η τιμή αυτή αλλάζει στο γονέα Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα: Παράδειγμα 2* 3* ρίζα 17 24 30 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39* 13 5 7* 5* 8* Διαγραφή 19, 20 Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 13

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

Τέλος, η διαγραφή του 24* (συγχώνευση) Β+-δέντρα: Διαγραφή Τέλος, η διαγραφή του 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* Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 16

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

Β+-δέντρα: Διαγραφή ρίζα 17 5 13 20 22 30 22* 27* 29* 33* 34* 38* 39* 5* 7* 8* 14* 16* 17* 18* 20* 21* Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 15

Β+-δέντρα γενικά Εισαγωγή/Διαγραφή με κόστος logF N --- κρατούν το δέντρο σε ισορροπημένη μορφή. (F = διακλάδωση, N = αριθμός των φύλλων) Ελάχιστη πληρότητα 50% (εκτός της ρίζας). Εξαιρετική δομή ΚΑΙ για ερωτήσεις ισότητας ΚΑΙ για ερωτήσεις διαστήματος (range queries). Το αρχείο δεδομένων μπορεί να είναι ή όχι ταξινομημένο Καταχωρήσεις Ευρετηρίου Καταχωρήσεις Δεδομένων («Σύνολο ακολουθίας») (Άμεση Αναζήτηση) Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά 9

Β+-δέντρα Κάθε κόμβος του 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 Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα Τάξη pleaf ώστε κάθε φύλλο να χωρά σε ένα block Έστω Β μέγεθος block, V μέγεθος πεδίου αναζήτησης, Pr μέγεθος δείκτη δεδομένων (εγγραφής) και P μέγεθος δείκτη δέντρου (block) pleaf * (Pr + V) + P  B pleaf * (Pr + V)  B - P pleaf  (B - P) / (Pr + V) Παράδειγμα, V = 9 bytes, B = 512, Pr = 7 bytes, P = 6 bytes, τότε pleaf = 31 Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Θεωρείστε ένα Β+ δέντρο τάξης n. Β+-δέντρα Θεωρείστε ένα Β+ δέντρο τάξης n. (α) Ποιος είναι ο ελάχιστος αριθμός τιμών που μπορεί να δεικτοδοτεί αυτό το δέντρο, όταν έχει 2 επίπεδα (με αυτό της ρίζας) (β) Ποιος είναι ο ελάχιστος αριθμός τιμών που μπορεί να δεικτοδοτεί αυτό το δέντρο, όταν έχει k επίπεδα (με αυτό της ρίζας). (γ) Ποιος είναι ο μέγιστος αριθμός τιμών που μπορεί να δεικτοδοτεί αυτό το δέντρο, όταν έχει 2 επίπεδα (με αυτό της ρίζας) (δ) Ποιος είναι ο μέγιστος αριθμός τιμών που μπορεί να δεικτοδοτεί αυτό το δέντρο, όταν έχει k επίπεδα (με αυτό της ρίζας) Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα Υπολογισμός επιπέδων Παράδειγμα, 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 για το Β-δέντρο Σημείωση: εγγραφές μόνο στα φύλλα Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Β+-δέντρα Παρατηρήσεις Τυπική Τάξη: 100. Τυπικός Παράγοντας Πληρότητας: 67%. Μέση τιμή διακλάδωσης (fan out) = 133 Τυπικές Δυνατότητες: Ύψος 4: 1334 = 312,900,700 εγγραφές Ύψος 3: 1333 = 2,352,637 εγγραφές Μπορεί να κρατά τα υψηλότερα επίπεδα στη μνήμη (buffer): Επίπεδο 1 = 1 block = 8 Kbytes Επίπεδο 2 = 133 blocks = 1 Mbyte Επίπεδο 3 = 17,689 blocks = 133 MBytes Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Ευρετήρια (ανακεφαλαίωση) Είδη Ευρετηρίων Ευρετήριο ενός επιπέδου ένα διατεταγμένο αρχείο με εγγραφές (<Κ(i), P(i)> Ευρετήριο πολλών επιπέδων Ευρετήρια δομής δέντρου (B-δέντρα, Β+-δέντρα) Ευρετήρια κατακερματισμού h(τιμή) -> στο κάδο οι εγγραφές είναι εγγραφές ευρετηρίου, δηλαδή ζεύγη (τιμή, δείκτης-στο-block(s)-του-αρχείου-δεδομένων που-είναι-η εγγραφή-με-αυτήν-την-τιμή) Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Ευρετήρια (επανάληψη) Ορισμοί Πρωτεύον: όταν το πεδίο ευρετηριοποίησης είναι πρωτεύον κλειδί και πεδίο διάταξης του αρχείου Δευτερεύον: αλλιώς Συστάδων (clustered index) αν η διάταξη των εγγραφών στο ευρετήριο όμοια ή παρόμοια αυτής των εγγραφών στο αρχείο δεδομένων (συμβαίνει, πχ όταν το ευρετήριο κτίζεται στο πεδίο ταξινόμησης του αρχείου δεδομένων) Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Ευρετήρια (επανάληψη) Το πολύ ένα ευρετήριο συστάδων – δηλαδή ένα ευρετήριο στο πεδίο διάταξης του αρχείου Range scan (αναζήτηση περιοχής) Συστάδων: #σελίδων στο αρχείο που ταιριάζουν Μη συστάδων: αριθμός εγγραφών στο ευρετήριο που ταιριάζουν – για κάθε τέτοια εγγραφή -> μια σελίδα αρχείου Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Ευρετήρια (επανάληψη) Οι εγγραφές στο ευρετήριο Κ* Η πραγματική εγγραφή (πλειάδα) με τιμή Κ στο κλειδί οργάνωση αρχείου <K, rid> <K, list of rids> Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Φυσικός Σχεδιασμός Βάση Δεδομένων Ανεξάρτητα του ΣΔΒΔ Εξαρτώμενο του επιλεγμένου ΣΔΒΔ . (π.χ., με Σχεσιακό Μοντέλο) Λογικό Μοντέλο -- Σχήματα/Όψεις Μικρόκοσμος Λογικός Σχεδιασμός Βάσης Συλλογή Απαιτήσεων και Ανάλυση Φυσικός Σχεδιασμός Βάσης Απαιτήσεις ΒΔ Φυσικό Μοντέλο Εσωτερικό Σχήμα Εννοιολογικός Σχεδιασμός Βάσης Πλήρωση Βάσης Εννοιολογικό Μοντέλο (Σχήμα) Διάγραμμα Ο/Σ Βάση Δεδομένων Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Φυσικός Σχεδιασμός Μετά τον σχεδιασμό Ο/Σ και το λογικό σχεδιασμό (σχεσιακό μοντέλο), έχουμε τα εννοιολογικά και λογικά (με τις όψεις) σχήματα για τη Βάση Δεδομένων. Το επόμενο βήμα είναι ο Φυσικός Σχεδιασμός, δηλαδή η επιλογή των δομών αποθήκευσης των σχέσεων, η επιλογή των ευρετηρίων, οι αποφάσεις για συστάδες - γενικά ότι είναι απαραίτητο για να επιτευχθούν οι προσδοκώμενες επιδόσεις χρήσης της ΒΔ. Η υλοποίηση μιας (φυσικής) Σχεσιακής Βάσης Δεδομένων περιλαμβάνει τη δημιουργία ΚΑΤΑΛΟΓΩΝ ΣΥΣΤΗΜΑΤΟΣ (directory system tables) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά 10

create [unique] index <index_name> Ευρετήρια H SQL-92 δεν περιλαμβάνει εντολές για τη δημιουργία ευρετηρίων. Τα περισσότερα εμπορικά ΣΔΒΔ το υποστηρίζουν create [unique] index <index_name> on <table_name> (<attr_list>); Η <attr_list> μπορεί να περιέχει παραπάνω από ένα γνωρίσματα. Προαιρετικό UNIQUE σημαίνει ότι το <attr_list> είναι κλειδί του <table_name>. Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

drop index <index_name> Ευρετήρια drop index <index_name> H Oracle δημιουργεί αυτόματα ευρετήρια για κάθε UNIQUE ή PRIMARY KEY ορισμό. select <index_name> from user_indexes Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Ποιες είναι οι σημαντικές ερωτήσεις και πόσο συχνά εμφανίζονται. Φυσικός Σχεδιασμός Για να κάνουμε όσο το δυνατόν καλύτερο τον Φυσικό Σχεδιασμό πρέπει να : Κατανοήσουμε το Φόρτο Εργασίας (workload) Ποιες είναι οι σημαντικές ερωτήσεις και πόσο συχνά εμφανίζονται. Ποιες είναι οι πιο σημαντικές τροποποιήσεις και πόσο συχνά εμφανίζονται. Ποια είναι η επιθυμητή επίδοση για την εκτέλεση αυτών των ερωτήσεων και τροποποιήσεων. Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Επιπλέον, απαιτεί και χώρο στον δίσκο Φυσικός Σχεδιασμός Πριν δημιουργήσουμε ένα ευρετήριο, πρέπει να συνυπολογίσουμε και την επίδρασή του σε ενημερώσεις του φορτίου εργασίας! Ένα ευρετήριο κάνει τις ερωτήσεις ΠΙΟ ΓΡΗΓΟΡΕΣ και τις ενημερώσεις ΠΙΟ ΑΡΓΕΣ Επιπλέον, απαιτεί και χώρο στον δίσκο Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά 13

Σε ποιες σχέσεις έχει πρόσβαση? Ποια γνωρίσματα ανακαλεί? Φυσικός Σχεδιασμός Για κάθε ερώτηση (query) το φόρτο εργασίας: Σε ποιες σχέσεις έχει πρόσβαση? Ποια γνωρίσματα ανακαλεί? Ποια γνωρίσματα υπεισέρχονται στις συνθήκες για selection/join? Πόσο επιλεκτικές είναι αυτές οι συνθήκες? Για κάθε ενημέρωση (insert/delete/update ): Ο τύπος της ενημέρωσης (INSERT/DELETE/UPDATE), και τα γνωρίσματα που θα επηρεασθούν Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά 11

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

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

Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Αρχεία Σωρού Ταξινομημένα Αρχεία Φυσική διάταξη των εγγραφών ενός αρχείου με βάση την τιμή ενός από τα πεδία του το οποίο λέγεται πεδίο διάταξης (ordering field) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Αρχεία Κατακερματισμού Οργάνωση Αρχείων Αρχεία Κατακερματισμού Βασική ιδέα: η τοποθέτηση των εγγραφών στα blocks του αρχείου γίνεται εφαρμόζοντας μια συνάρτηση κατακερματισμού σε κάποιο από τα πεδία της εγγραφής Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Εσωτερικός Κατακερματισμός Εσωτερικός Κατακερματισμός (τα δεδομένα είναι στη μνήμη, όπως στις δομές δεδομένων) Πίνακας κατακερματισμού με Μ θέσεις - κάδους (buckets) h: συνάρτηση κατακερματισμού h(k) = i Σε ποιο κάδο - τιμή από 0 έως Μ-1 Πεδίο αναζήτησης - Πεδίο κατακερματισμού Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Αρχεία Κατακερματισμού Εξωτερικός Κατακερματισμός (εφαρμογή σε δεδομένα αποθηκευμένα σε αρχεία) Στόχος h(k) = i Διεύθυνση (αριθμός) block του αρχείου που είναι αποθηκευμένη Τιμή του πεδίου κατακερματισμού Η εγγραφή με τιμή στο πεδίο κατακερματισμού k αποθηκεύεται στο i-οστο block (κάδο) του αρχείου Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

h: συνάρτηση κατακερματισμού Κατακερματισμός h: συνάρτηση κατακερματισμού Ομοιόμορφη κατανομή των κλειδιών στους κάδους (blocks) Συνηθισμένη συνάρτηση κατακερματισμού: h(k) = k mod M Συχνά M πρώτος Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

-- όταν χρησιμοποιείται η mod τότε είναι καλύτερα το Μ να είναι πρώτος Κατακερματισμός Σύγκρουση (collision): όταν μια νέα εγγραφή κατακερματίζεται σε μία ήδη γεμάτη θέση Καλή συνάρτηση κατακερματισμού: κατανέμει τις εγγραφές ομοιόμορφα στο χώρο των διευθύνσεων (ελαχιστοποίηση συγκρούσεων και λίγες αχρησιμοποίητες θέσεις) Ευριστικοί: -- αν r εγγραφές, πρέπει να επιλέξουμε το Μ ώστε το r/M να είναι μεταξύ του 0.7 και 0.9 -- όταν χρησιμοποιείται η mod τότε είναι καλύτερα το Μ να είναι πρώτος Βάσεις Δεδομένων 2011-2012 Ευαγγελία Πιτουρά

Κατακερματισμός Επίλυση Συγκρούσεων 1. Ανοιχτή Διευθυνσιοδότηση (open addressing): χρησιμοποίησε την επόμενη κενή θέση 2. Αλυσιδωτή Σύνδεση (chaining): για κάθε θέση μια συνδεδεμένη λίστα με εγγραφές υπερχείλισης 3. Πολλαπλός Κατακερματισμός (multiple hashing): εφαρμογή μιας δεύτερης συνάρτησης κατακερματισμού Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Εξωτερικός Κατακερματισμός Κάδος: μια συστάδα από συνεχόμενα blocks του αρχείου Σχετική διεύθυνση του κάδου (ποιος κάδος του αρχείου) h(k) = i Τιμή του πεδίου κατακερματισμού Ο κατακερματισμός είναι πολύ αποδοτικός για επιλογές ισότητας Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Εξωτερικός Κατακερματισμός Ένας πίνακας που αποθηκεύεται στην επικεφαλίδα του αρχείου μετατρέπει τον αριθμό κάδου στην αντίστοιχη διεύθυνση block 0 διεύθυνση 1ου block του κάδου στο δίσκο 1 διεύθυνση 1ου block του κάδου στο δίσκο 2 διεύθυνση 1ου block του κάδου στο δίσκο … ... Μ-1 διεύθυνση 1ου block του κάδου στο δίσκο Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Εξωτερικός Κατακερματισμός Συγκρούσεις - αλυσιδωτή σύνδεση - εγγραφές υπερχείλισης ανά κάδο 1. Ανάγνωση όλου του αρχείου (scan) Έστω ότι διατηρούμε κάθε κάδο γεμάτο κατά 80% άρα ένα αρχείο με μέγεθος Β blocks χρειάζεται 1.25 Β blocks 1.25 * Β * (ΤD + R * ΤC) 2. Αναζήτηση Συνθήκη ισότητας και μόνο ένα block ανά κάδο: ΤD + R * C Αν συνθήκη περιοχής (διαστήματος): scan! Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Σωρός Ταξινομημένο Κατακερματισμένο Οργάνωση Αρχείων Κόστος: μεταφορά blocks (I/O) Σωρός Ταξινομημένο Κατακερματισμένο Ανάγνωση του αρχείου Β B 1.25B Αναζήτηση με συνθήκη ισότητας 0.5 B logB 1 περιοχής B logB + ταιριάσματα 1.25 Β Εισαγωγή 2 αναζήτηση + B 2 Διαγραφή αναζήτηση + 1 αναζήτηση + Β αναζήτηση + 1 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Εξωτερικός Κατακερματισμός Στατικός Κατακερματισμός Πρόβλημα: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης) Δυναμικός Κατακερματισμός Επεκτατός Γραμμικός Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δυναμικός Εξωτερικός Κατακερματισμός Δυαδική αναπαράσταση του αποτελέσματος της συνάρτησης κατακερματισμού, δηλαδή ως μια ακολουθίας δυαδικών ψηφίων Κατανομή εγγραφών με βάση την τιμή των αρχικών (ή τελικών) ψηφίων Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δυναμικός Εξωτερικός Κατακερματισμός Το αρχείο ξεκινά με ένα μόνο κάδο Μόλις γεμίσει ένας κάδος διασπάται σε δύο κάδους με βάση την τιμή του 1ου (ή τελευταίου) δυαδικού ψηφίου των τιμών κατακερματισμού -- δηλαδή οι εγγραφές που το πρώτο (τελευταίο) ψηφίο της τιμής κατακερματισμού τους είναι 1 τοποθετούνται σε ένα κάδο και οι άλλες (με 0) στον άλλο Νέα υπερχείλιση ενός κάδου οδηγεί σε διάσπαση του με βάση το αμέσως επόμενο δυαδικό ψηφίο κοκ Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δυναμικός Εξωτερικός Κατακερματισμός Έτσι δημιουργείται μια δυαδική δενδρική δομή που λέγεται κατάλογος (dirtectory) ή ευρετήριο (index) με δύο ειδών κόμβους εσωτερικούς: που καθοδηγούν την αναζήτηση εξωτερικούς: που δείχνουν σε ένα κάδο Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δυναμικός Εξωτερικός Κατακερματισμός (Παράδειγμα) Χρήση των τελευταίων 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 εγγραφές ανά κάδο Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δυναμικός Εξωτερικός Κατακερματισμός Αλγόριθμος αναζήτησης h := τιμή κατακερματισμού t := ρίζα του δέντρου i := 1 while (t εσωτερικός κόμβος) if (i-οστό bit του h είναι 0) t := αριστερά του t else t := δεξιά του t i := i +1 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Δυναμικός Εξωτερικός Κατακερματισμός Που αποθηκεύεται ο κατάλογος στη μνήμη, εκτός αν είναι πολύ μεγάλος τότε στο δίσκο – οπότε θα απαιτούνται επιπρόσθετες προσπελάσεις Δυναμική επέκταση αλλά μέγιστος αριθμός επιπέδων (το πλήθος των δυαδικών ψηφίων της συνάρτησης κατακερματισμού) Ισοζύγιση Συνένωση κάδων (δυναμική συρρίκνωση) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Επεκτατός Εξωτερικός Κατακερματισμός Extendible hashing Ο κατάλογος είναι ένας πίνακας με 2d διευθύνσεις κάδων (d: ολικό βάθος του καταλόγου) Κάδος για τις εγγραφές με τιμές κατακερματισμού που τελειώνουν σε 000 000 001 010 011 100 101 110 111 Τα τελευταία d ψηφία της τιμής κατακερματισμού χρησιμοποιούνται ως δείκτης στον πίνακα Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Επεκτατός Εξωτερικός Κατακερματισμός Δε χρειάζεται ένας διαφορετικός κάδος για κάθε μία από τις 2d θέσεις - μπορεί η θέση του πίνακα να δείχνει στη διεύθυνση του ίδιου κάδου αν αυτές χωράνε σε ένα κάδο Κάδος για τις εγγραφές με τιμές κατακερματισμού που τελειώνουν από 00 000 001 010 011 100 101 110 111 Για κάθε κάδο, τοπικό βάθος d’ o αριθμός των δυαδικών ψηφίων στα οποία βασίζεται η χρήση του κάδου Παράδειγμα: 2 εγγραφές ανά κάδο εισαγωγή 2, 4, 3, 10, 7, 9 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Επεκτατός Εξωτερικός Κατακερματισμός (Παράδειγμα) Χρήση των τελευταίων 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 εγγραφές ανά κάδο Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Επεκτατός Εξωτερικός Κατακερματισμός (Παράδειγμα) Χρήση των τελευταίων 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 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Επεκτατός Εξωτερικός Κατακερματισμός Η τιμή του d μπορεί να αυξάνεται (μέχρι 2κ, κ: αριθμός δυαδικών ψηφίων της τιμής κατακερματισμού) ή να μειώνεται Αύξηση της τιμής του d Όταν ένας κάδος με τιμή d’ = d υπερχειλίσει Δε χρειάζεται rehash (επανα-κερματισμό), διασπάμε κάθε κάδο Επίσης, κάθε φορά μόνο τον κάδο που υπερχείλισε Διπλασιασμός του πίνακα Μείωση της τιμής του d Όταν για όλους τους κάδους d’ < d Μείωση του μεγέθους του πίνακα στο μισό Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

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

Επεκτατός Εξωτερικός Κατακερματισμός 1 000001 4 000100 5 000101 7 000111 10 001010 12 001100 15 001111 16 010000 19 010011 21 010101 32 100000 001101 20 010100 4 12 32 16 20 -> διάσπαση Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

ΠΡΟΣΟΧΗ – ΓΕΝΙΚΗ ΠΑΡΑΤΗΡΗΣΗ Κατακερματισμός ΠΡΟΣΟΧΗ – ΓΕΝΙΚΗ ΠΑΡΑΤΗΡΗΣΗ Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή; (οργάνωση αρχείου) μέγεθος κάδου -> 1 block Τιμή του πεδίου κατακερματισμού (+δείκτη στο υπόλοιπο της εγγραφής); Τι γίνεται αν το πεδίο κατακερματισμού δεν είναι κλειδί (παραπάνω από μια εγγραφή με την ίδια τιμή) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Γραμμικός Κατακερματισμός Θέλουμε να αποφύγουμε τη χρήση καταλόγου + Διπλασιασμό μεγέθους του καταλόγου Αυτή η μέθοδος: Διατηρεί λίστες υπερχείλισης Δε χρησιμοποιεί τη δυαδική αναπαράσταση Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Χρησιμοποιεί μια οικογένεια από συναρτήσεις κατακερματισμού h0(k), h1(k), …, hd(k) Κάθε συνάρτηση διπλάσιους κάδους από την προηγούμενη: h0(k) = k mod M, h1(k) = k mod 2M, h2(k) = k mod 4M, …, hj(k) = k mod 2j M Όταν συμβαίνει η πρώτη υπερχείλιση ενός κάδου, πάμε στην επόμενη συνάρτηση μέχρι να διασπαστούν όλοι οι κάδοι με αυτήν τη συνάρτηση ΠΡΟΣΟΧΗ: δε διασπάμε τον κάδο που υπερχειλίζει, αλλά έναν-έναν τον κάδο με τη σειρά! Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Βασικά σημεία Πολλές συναρτήσεις κατακερματισμού (άλλη σε κάθε βήμα) Οι κάδοι σε κάθε βήμα διασπώνται με τη σειρά (ο ένας μετά τον άλλο – ανεξάρτητα αν έχουν ή όχι υπερχειλίσει) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Αρχικά: Βήμα Διάσπασης (ποια συνάρτηση χρησιμοποιούμε) αρχικά j = 0: Πλήθος Διασπάσεων (στο τρέχον βήμα) αρχικά n = 0, j -> ποια συνάρτηση χρησιμοποιούμε n -> ποιο κάδο διασπάμε Έστω αρχικά Μ κάδους αριθμημένους από 0 έως Μ - 1 και αρχική συνάρτηση κατακερματισμού h0(k) = k mod M Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

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

Γραμμικός Εξωτερικός Κατακερματισμός Βήμα διάσπασης (ποια συνάρτηση χρησιμοποιούμε) j = 1: Πλήθος Διασπάσεων n = m -1 : Όταν συμβεί μια υπερχείλιση σε έναν οποιοδήποτε κάδο, ο κάδος m -1 χωρίζεται σε δύο κάδους: τον αρχικό κάδο m - 1 και ένα νέο κάδο m + k - 1 στο τέλος του αρχείου με βάση την συνάρτηση h1(k) = k mod 2M Δηλαδή, σε κάθε υπερχείλιση χωρίζουμε όλους τους κάδους με τη σειρά ξεκινώντας από τον πρώτο κάδο Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Συνεχίζουμε ... Όλοι οι κάδοι έχουν διασπαστεί όταν: n = M Τότε έχουμε 2M κάδους Όταν n = M, μηδενίζουμε το n, n = 0 και για οποιαδήποτε νέα διάσπαση εφαρμόζουμε την h2(k) = k mod 4M Διασπώντας πάλι τον κάδο 0, 1, ... κ.τ.λ Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Γενικά βήμα διάσπασης j (j = 0, 1, 2, …) hj(k) = k mod 2j M, και την hj+1(k) για διασπάσεις Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός 32 9 44 31 25 5 35 7 36 14 18 10 11 30 Κάθε κάδος 4 εγγραφές Αρχικά 4 κάδους (M = 4) ΠΡΟΣΟΧΗ: Δε χρησιμοποιούμε τη δυαδική αναπαράσταση Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός (παράδειγμα) Για μη διασπασμένους κάδους: παλιά συνάρτηση Για διασπασμένους κάδους: νέα συνάρτηση h0(k) = k mod 4 h1(k) = k mod 8 37 29 43 22 66 34 Διασπάμε τον πρώτο κάδο Βήμα διάσπασης 0 (χρήση h0) Πλήθος διασπάσεων = 0 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός (παράδειγμα) 50 Βήμα διάσπασης 0 (χρήση h0) Πλήθος διασπάσεων = 0 Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Αναζήτηση Εγγραφής (γενικά) Τι χρειάζεται να ξέρουμε για να βρεθεί ο κάδος της εγγραφής k που ψάχνουμε; ποια συνάρτηση χρησιμοποιούμε (δηλαδή, το j) σε ποια διάσπαση βρισκόμαστε (δηλαδή το n) Έστω ότι είμαστε στο βήμα j, Τότε θα πρέπει να κοιτάξουμε είτε το hj(k) αν ο κάδος δεν έχει διασπαστεί ή το hj+1(k) αν έχει διασπαστεί Πως θα ελέγξουμε αν ο κάδος έχει διασπαστεί ή όχι Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Αναζήτηση Εγγραφής Δύο περιπτώσεις ο κάδος στον οποίο είναι (1) έχει ή (2) δεν έχει διασπαστεί Κρατάμε μια μεταβλητή το πλήθος n των διασπάσεων Έστω n ο αριθμός διασπάσεων και ότι αναζητούμε το k, βρίσκεται στον κάδο h0(k) τότε αν n  h0(k) o κάδος δεν έχει διασπαστεί ενώ αν n > h0(k) o κάδος έχει διασπαστεί και εφαρμόζουμε την h1(k) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Γραμμικός Εξωτερικός Κατακερματισμός Αλγόριθμος Αναζήτησης j : βήμα διάσπασης n : πλήθος διασπάσεων στο βήμα j if (n = 0) then m := hj(k); else { m := hj(k); if (m < n) then m := hj+1(k) } σημαίνει ότι ο κάδος έχει διασπαστεί Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Αποθήκευση Δεδομένων (σύνοψη) Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Παραδοσιακά, μία σχέση (πίνακας/στιγμιότυπο) αποθηκεύεται σε ένα αρχείο Αρχείο δεδομένων Η αποθήκευση είναι οριζόντια: δηλαδή, κάθε πλειάδα της σχέσης αντιστοιχεί σε μια εγγραφή του αρχείου Δηλαδή, ένα αρχείο είναι μια ακολουθία από εγγραφές (πλειάδες) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Οργάνωση Αρχείων (σύνοψη) Οι εγγραφές μπορεί να βρίσκονται αποθηκευμένες σε πολλές σελίδες (pages) θα θεωρούμε page (σελίδα) = block Μη εκτεινόμενη (unspanned) οργάνωση: οι εγγραφές δεν επιτρέπεται να διασχίζουν τα όρια ενός block (-) Αχρησιμοποίητος χώρος (+) Πιο εύκολη η προσπέλαση Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Οργάνωση Αρχείων (σύνοψη) Οργάνωση Αρχείων (σύνοψη) Έστω Β μέγεθος block σε byte και R μέγεθος εγγραφής σε bytes Παράγοντας ομαδοποίησης (blocking factor), όταν Β  R bfr =  (B / R)  Πόσες εγγραφές χωρούν σε ένα block b: Αριθμός blocks για την αποθήκευση ενός αρχείου r εγγραφών: b =  (r/bfr)  Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Αρχεία (σύνοψη) Οργάνωση αρχείων: πως πρέπει να οργανώσουμε (τοποθετήσουμε) τις εγγραφές σε ένα αρχείο για αποδοτική επεξεργασία ερωτήσεων Βασικές λειτουργίες: Εντοπισμός (αναζήτηση) μια συγκεκριμένης εγγραφής με βάση συνθήκη ισότητας ή διαστήματος τιμών σε ένα γνώρισμα (πεδίο) της εγγραφής (σε ποιο block βρίσκεται) Αν το γνώρισμα είναι κλειδί Αν το γνώρισμα δεν είναι κλειδί Εισαγωγή/διαγραφή/τροποποίηση εγγραφής Διάσχιση (scan) όλων των εγγραφών του αρχείου Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά

Οργάνωση Αρχείων (σύνοψη) Βασικός στόχος η ελαχιστοποίηση του αριθμού των blocks που μεταφέρονται Θεωρούμε ότι η πληροφορία για τη θέση στο δίσκο ενός block υπάρχει (π.χ., στην επικεφαλίδα του αρχείου) Σε πραγματικά συστήματα Ίσως και άλλοι τύποι κόστους (πχ κόστος CPU) Πρόσβασης κατά block (διάβασμα γειτονικών block με μια μόνο αίτηση I/O: αναζήτηση 1ου block + μεταφορά όλων των επόμενων) Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά