ΠΑΝΔΠΙΣΗΜΙΟ ΠΑΣΡΩΝ - ΣΜΗΤΠ ΒΑΔΙ ΓΔΓΟΜΔΝΩΝ Ι Β. Μεγαιννηθνλόκνπ Γ. Υξηζηνδνπιάθεο Δομές Εσρετηρίων και Κατακερματισμός Αρτείων II (παξνπζίαζε βαζηζκέλε ελ κέξε ζε ζεκεηώζεηο ησλ Silberchatz, Korth θαη Sudarshan θαη ηνπ C. Faloutsos)
ύλνςε Ύιεο ρεζηαθό κνληέιν (Relational model) - SQL & Δκπνξηθέο γιώζζεο Δπίζεκεο (Formal) επεξσηήζεσλ (commercial query languages) πλαξηεζηαθέο Δμαξηήζεηο (Functional Dependencies) Καλνληθνπνίεζε (Normalization) Φπζηθόο ρεδηαζκόο (Physical Design) Εσρετηριοποίηση (Indexing)
Ευρετηριοποίηση - Περιληπτικά ISAM and B-trees Καηαθεξκαηηζκόο(Hashing) Hashing ή B-trees; Δπξεηήξηα ζηελ SQL Πξνρσξεκέλα ζέκαηα: Γπλακηθόο θαηαθεξκαηηζκόο Δπξεηεξηνπ νίεζε π νιιαπ ιώλ γλσξηζκάησλ (multi-attribute indexing)
(Στατικός) Κατακερματισμός Πξόβιεκα: Βξεο ηελ εγγξαθή ηνπ ΥΠΑΛΛΗΛΟΥ κε ΑΦΜ=123 Δξώηεζε: Τη ζα γηλόηαλ εάλ ην θόζηνο απνζήθεπζεο ζηνλ δίζθν δελ ήηαλ ζεκαληηθό θαη ν ρξόλνο πνιύ ζεκαληηθόο;
Κατακερματισμός Απάληεζε: Δθπιεθηηθή ηδέα: αληηζηνίρεζε θιεηδηνύ ζε δηεύζπλζε : #0 ζελίδα 123; Smith; Main str #123 ζελίδα #999,999,999
Κατακερματισμός Καζώο όκσο ο τώρος κοζηίζει : Φξεζηκνπνίεζε M, αληί γηα 999,999,999 ζρηζκέο Σπλάξηεζε Καηαθεξκαηηζκνύ: h(key) = slot-id #0 page 123; Smith; Main str #123 page #999,999,999
Κατακερματισμός Τππηθά : Κάζε θάδνο θαηαθεξκαηηζκνύ είλαη κηα ζειίδα πνπ δηαηεξεί πνιιέο εγγξαθέο: #0 page 123; Smith; Main str #h(123) M
Κατακερματισμός Παξαηήξεζε: κπνξεί λα ππάξμνπλ νκαδνπνηεκέλεο (clustering), ή απιέο (nonclustering) εθδνρέο: #0 page 123; Smith; Main str. #h(123) M
Κατακερματισμός Παξαηήξεζε: κπνξεί λα ππάξμνπλ νκαδνπνηεκέλεο (clustering), ή απιέο (non-clustering) εθδνρέο: #0 page... Αρτείο ΤΠΑΛΛΗΛΟΙ #h(123) M... 123 234; Johnson; Forbes ave 123; Smith; Main str. 345; Tompson; Fifth ave......
Ευρετηριοποίηση- Περίληψη ISAM θαη B-trees Καηαθεξκαηηζκνύ Σπλαξηήζεηο θαηαθεξκαηηζκνύ Μέγεζνο ηνπ πίλαθα θαηαθεξκαηηζκνύ Δπίιπζε ζπγθξνύζεσλ Καηαθεξκαηηζκόο ή B-trees; Δπξεηήξηα ζε SQL Πξνρσξεκέλα ζέκαηα:
Επιλογές σχεδιασμού 1) h() σο ζπλάξηεζε θαηαθεξκαηηζκνύ (hashing function) 2) Μέγεζνο πίλαθα θαηαθεξκαηηζκνύ M 3) Μέζνδνο Δπίιπζεο ζπγθξνύζεσλ (collision resolution method)
Επιλογές σχεδιασμού Συναρτήσεις ηόρνο: Ο ομοιόμορυος δηακνηξαζκόο ησλ θιεηδηώλ ζηνπο θάδνπο θαηαθεξκαηηζκνύ Γεκνθηιήο Δπηινγέο: Καηαθεξκαηηζκόο κε δηαίξεζε (Division hashing) Καηαθεξκαηηζκόο κε πνιιαπιαζηαζκό (Multiplication hashing)
Κατακερματισμός με διαίρεση h(x) = (a*x+b) mod M Π.ρ., h(ssn) = (ssn) mod 1,000 Γίλεη ηα ηξία ηειεπηαία ςεθία ηνπ ssn M : κέγεζνο ηνπ πίλαθα θαηαθεξκαηηζκνύ Δπηιέγνπκε ακπληηθά, έλαλ πξώην αξηζκό (Γηαηί;)
Κατακερματισμός με διαίρεση Π.ρ., M=2; Καηαθεξκαηηζκό ζην πεδίν αξηζκόο-δηπιώκαηνο νδεγνύ (driver-license number) dln, ηνπ νπνίνπ ην ηειεπηαίν ςεθίν είλαη ην θύιν (0/1 = M/F) ε κηα ζηξαηησηηθή κνλάδα όπνπ ε πιεηνςεθία είλαη άλδξεο ζηξαηηώηεο Έηζη: γηα λα απνθύγνπκε πεξηπηώζεηο όπνπ ην Μ θαη ηα θιεηδηά έρνπλ θνηλνύο δηαηξέηεο επηιέγνπκε Μ πξώην αξηζκό!
Κατακερματισμός με πολλαπλασιασμό h(x) = [ fractional-part-of ( x * φ ) ] * M υ: ρξπζή αλαινγία (golden ratio) ( 0.618... = ( sqrt(5)-1)/2 ) Γεληθά, επηζπκνύκε άξξεηνπο αξηζκνύο Πιενλέθηεκα: Σν Μ δελ ρξεηάδεηαη λα είλαη πξώηνο Αιιά ν υ πξέπεη λα είλαη άξξεηνο
Άλλες συναρτήσεις κατακερματισμού Καηαθεξκαηηζκόο δεπηέξνπ βαζκνύ (quadratic hashing) -θαθή ηερληθή... πκπέξαζκα: ρξεζηκνπνηείζηε θαηαθεξκαηηζκό κε δηαίξεζε
Επιλογές σχεδιασμού 1) h() σο ζπλάξηεζε θαηαθεξκαηηζκνύ (hashing function) 2) Μέγεζνο πίλαθα θαηαθεξκαηηζκνύ M 3) Μέζνδνο επίιπζεο ζπγθξνύζεσλ (collision resolution method)
Μέγεθος του πίνακα κατακερματισμού Πρ., 50,000 ππάιιεινη, 10 εγγξαθέο ππαιιήισλ αλά ζειίδα Δξώηεζε: M=?? ζειίδεο/θάδνη/ζρηζκέο
Μέγεθος του πίνακα κατακερματισμού Πρ., 50,000 ππάιιεινη, 10 εγγξαθέο ππαιιήισλ αλά ζειίδα Δξώηεζε: M=?? ζειίδεο/θάδνη/ζρηζκέο Απάληεζε: Υξεζηκνπνίεζε ~ 90% θαη M: πξώηνο αξηζκόο Π.ρ., ζηελ πεξίπησζε πνπ εμεηάδνπκε : M= ν εγγύηεξνο πξώηνο ζην 50,000/10/0.9 = 5,555
Επιλογές σχεδιασμού 1) h() σο ζπλάξηεζε θαηαθεξκαηηζκνύ (hashing function) 2) Μέγεζνο πίλαθα θαηαθεξκαηηζκνύ M 3) Μέζνδνο επίιπζεο ζπγθξνύζεσλ (collision resolution method)
Επίλυση συγκρούσεων Δξώηεζε: Πόηε ζπκβαίλεη κία ζύγθξνπζε ; Απάληεζε: ;;;
Επίλυση Συγκρούσεων #0 page 123; Smith; Main str. #h(123) M
Επίλυση Συγκρούσεων Δξώηεζε: Πόηε ζπκβαίλεη κία ζύγθξνπζε ; Απάληεζε: ;;; Δξώηεζε: Γηαηί λα αλεζπρνύκε γηα ζπγθξνύζεηο/ ππεξρεηιίζεηο; (ζπκεζείηε όηη νη θάδνη είλαη ~90% γεκάηνη) Απάληεζε: Π.ρ. Καηαζέζεηο ηξαπεδηθνύ ινγαξηαζκνύ κεηαμύ $0 θαη $10,000 θαη κεηαμύ $90,000 θαη $100,000
Επίλυση Συγκρούσεων Αλνηρηή δηεπζπλζηνδόηεζε (Open addressing) linear probing (δει., ειέγρνπκε δηαδνρηθέο ζέζεηο (θάδνπο / ζρηζκέο) από ηελ αξρηθή ζέζε πνπ πξνζδηόξηζε ε ζπλάξηεζε θαηαθεξκαηηζκνύ κέρξη λα βξεζεί ειεύζεξε ζέζε) re-hashing Αιπζηδσηή ζύλδεζε (separate chaining) (δει., ρξεζηκνπνηνύκε ζπλδέζεηο πξνο ζειίδεο ππεξρείιηζεο )
Επίλυση Συγκρούσεων linear probing: #0 page 123; Smith; Main str. #h(123) M
Επίλυση Συγκρούσεων re-hashing #0 page h1() 123; Smith; Main str. #h(123) h2() M
Επίλυση Συγκρούσεων separate chaining (Αιπζηδσηή ζύλδεζε) 123; Smith; Main str.
Επιλογές σχεδιασμού - Συμπεράσματα πλάξηεζε : θαηαθεξκαηηζκόο κε δηαίξεζε h(x) = ( a*x+b ) mod M Μέγεζνο M: ~90% ρξεζηκνπνίεζε. Πξώηνο αξηζκόο. Δπίιπζε ζπγθξνύζεσλ: Αιπζηδσηή ζύλδεζε Δπθνιόηεξε πινπνίεζε (δηαγξαθέο!); Γελ ππάξρεη θίλδπλνο λα γεκίζεη ν θάδνο
Ευρετηριοποίηση - Περίληψη ISAM θαη B-trees Καηαθεξκαηηζκόο Καηαθεξκαηηζκόο ή B-trees; Δπξεηήξηα Indices in SQL Πξνρσξεκέλα ζέκαηα: Γπλακηθόο θαηαθεξκαηηζκόο Δπξεηεξηνπ νίεζε π νιιαπ ιώλ γλσξηζκάησλ (multi-attribute indexing)
Κατακερματισμός ή B-trees; Ο θαηαθεξκαηηζκόο πξνζθέξεη: ΤΑΦΥΤΗΤΑ! ( O(1) ρξόλνο αλαδήηεζεο ΜΕΗ π εξίπ ησζεο) αιιά ηα B-trees πξνζθέξνπλ:
Κατακερματισμός ή B-trees; αιιά ηα B-trees πξνζθέξνπλ: Γηάηαμε θιεηδηώλ: Ερωηήμαηα διαζηημάηων (range queries) Προζεγγιζηικά ερωηήμαηα (proximity queries) ειριακή ζάρωζη (sequential scan) O(log(N)) εγγύεζε γηα αλαδήηεζε/εηζαγσγή/δηαγξαθή Οκαιή επαύμεζε / ζπξξίθλσζε
Κατακερματισμός ή B-trees; Έηζη: Τα B-trees ρξεζηκνπνηνύληαη ζηα πεξηζζόηεξα ζπζηήκαηα Σεκείσζε: Ο θαηαθεξκαηηζκόο όρη (Γηαηί?)
Ευρετηριοποίηση- Περίληψη ISAM θαη B-trees Καηαθεξκαηηζκνύ Καηαθεξκαηηζκόο ή B-trees; Δπξεηήξηα ζε SQL Πξνρσξεκέλα ζέκαηα:
Ευρετηριοποίηση σε SQL create index <index-name> on <relation-name> (<attribute-list>) create unique index <index-name> on <relation-name> (<attribute-list>) (Σηην περίπηωζη ποσ ηο κλειδί αναζήηηζης είναι σποψήθιο κλειδί (candidate key) drop index <index-name>
Ευρετηριοποίηση σε SQL Π.ρ., create index ssn-index on STUDENT (ssn) ή (π.ρ., ζηνλ πίλαθα TAKES (ssn,cid, grade)) : create index sc-index on TAKES (ssn, c-id)
Ευρετηριοποίηση - Περιληπτικά ISAM and B-trees Καηαθεξκαηηζκόο (Hashing) Hashing ή B-trees; Δπξεηήξηα ζηελ SQL Πξνρσξεκέλα ζέκαηα: (ζεσξεηηθό ελδηαθέξνλ) Γπλακηθόο θαηαθεξκαηηζκόο Δπξεηεξηνπ νίεζε π νιιαπ ιώλ γλσξηζκάησλ (multi-attribute indexing)
Πρόβλημα με τον στατικό Κατακερματισμό Πξόβιεκα: ππ εξρείιηζε; Πξόβιεκα: Υπ νρείιηζε; (ρακειό π νζνζηό ρξεζηκνπ νίεζεο (under-utilization))
Λύση: Δυναμικός/ επεκτατός Κατακερματισμός Ιδέα: Σπξξίθλσζε / επαύμεζε ηνλ πίλαθα θαηαθεξκαηηζκνύ θαη απαίηεζε..... Γπλακηθόο θαηαθεξκαηηζκόο Λεπηνκέξεηεο : Πώο ζα κεγαιώζεη νκαιά ζε πεξίπησζε ππεξρείιηζεο ; Πνιιέο ιύζεηο Μία από απηέο : Δπεθηαηόο θαηαθεξκαηηζκόο (extendible hashing)
Επεκτατός Κατακερματισμός (Extendible hashing) #0 page 123; Smith; Main str. #h(123) M
Επεκτατός Κατακερματισμός Λύζη: #0 page Διέζπαζε ηον κάδο ζε δύο κάδοσς 123; Smith; Main str. #h(123) M
Επεκτατός Κατακερματισμός Λεπηνκεξώο: Γηαηήξεζε επξεηήξην, κε δείθηεο πνπ δείρλνπλ ζε θάδνπο θαηαθεξκαηηζκνύ Δξώηεζε: Πσο ζα δηαηξέζνπκε ηα πεξηερόκελα ελόο θάδνπ ζηα δύν; Απάληεζε: αληηζηνίρεζε θάζε θιεηδί ζε κία κεγάινπ κήθνπο αθνινπζία bits. Κξάηεζε κόλν όζα bits είλαη απαξαίηεην Σειηθά:
Επεκτατός Κατακερματισμός Εσρεηήριο 00... 01... 10... 11... 0001... 0111... 10101... 10011... 10110... 1101... 101001...
Επεκτατός Κατακερματισμός directory 00... 01... 10... 11... 0001... 0111... 10101... 10011... 10110... 1101... 101001...
Επεκτατός Κατακερματισμός directory 00... 01... 10... 11... 0001... 0111... 10101... 10011... 10110... 101001... 1101... Διάζπαζη ζηο ηρίηο bit
Επεκτατός Κατακερματισμός directory 00... 01... 10... 11... 0001... 0111... 10011... 1101... 10101... 101001... 10110... Νέα ζελίδα / κάδος
Επεκτατός Κατακερματισμός 000... 001... 010... 011... 100... 101... 110... 111... directory (doubled) 0001... 0111... 10011... 1101... 10101... 101001... 10110... Νέα ζελίδα / κάδος
Επεκτατός Κατακερματισμός 00... 01... 10... 11... 0001... 0111... 10101... 10011... 10110... 101001... 1101... 0001... 0111... 10011... 1101... 10101... 101001... 10110... 000... 001... 010... 011... 100... 101... 110... ΠΡΙΝ ΜΕΣΑ 111...
Επεκτατός Κατακερματισμός Σύλνςε: Τν επξεηήξην (directory) δηπιαζηάδεηαη θαη απαίηεζε... ή κεηώλεηαη ζην κηζό, ζε αξρεία πνπ ζπξξηθλώλνληαη Απαηηεί πίλαθα κε 2 d δηεπζύλζεηο d: νιηθό (global-depth) Κάζε θάδνο δηαηεξεί ηνπηθό (local-depth) d Πξνζδηνξίδεη ηνλ αξηζκό ησλ δπαδηθώλ ςεθίσλ ζηα νπνία βαζίδεηαη ε ρξήζε ηνπ θάδνπ. Κπξίσο ζεσξεηηθό ελδηαθέξνλ ην ίδην γηα Γξακκηθόοθαηαθεξκαηηζκό (linear hashing) ηνπ Litwin Οrder preserving Τέιεην θαηαθεξκαηηζκό (perfect hashing) (ρσξίο ζπγγξνύζεηο!)
Ευρετηριοποίηση - Περιληπτικά ISAM and B-trees Καηαθεξκαηηζκόο(Hashing) Hashing ή B-trees; Δπξεηήξηα ζηελ SQL Πξνρσξεκέλα ζέκαηα: (ζεσξεηηθό ελδηαθέξνλ) Γπλακηθόο θαηαθεξκαηηζκόο Δπξεηεξηνπνίεζε πνιιαπιώλ γλσξηζκάησλ (multiattribute indexing)
Προσπέλαση με βάση πολλαπλά κλειδιά (multiple-key access) Πσο ζα ππνζηεξίμνπκε εξσηήκαηα ζε πνιιαπιά γλσξίζκαηα, όπσο grade>=3 and course= 415 Βαζηθό θίλεηξν: Γεσγξαθηθά ζπζηήκαηα πιεξνθνξηώλ (GIS)
Προσπέλαση με βάση πολλαπλά κλειδιά y x
Προσπέλαση με βάση πολλαπλά κλειδιά Σππηθό εξώηεκα: Βξεο ηηο πόιεηο πνπ βξίζθνληαη ην πνιύ ζε απόζηαζε x ρηιηνκέηξσλ από ηελ Αζήλα Έηζη επηζπκνύκε λα απνζεθεύζνπκε θνληηλέο πόιεηο ζηελ ίδηα ζειίδα δίζθνπ:
Προσπέλαση με βάση πολλαπλά κλειδιά y x
Προσπέλαση με βάση πολλαπλά κλειδιά y x
Προσπέλαση με βάση πολλαπλά κλειδιά - R-trees y x
Προσπέλαση με βάση πολλαπλά κλειδιά - R-trees R-trees: πνιύ επηηπρή γηα GIS...ζε ζπλδπαζκό κε ηελ θαηά z-δηάηαμε (zordering ) Πεξηζζόηεξεο ιεπηνκέξεηεο... ζην Βάζεηο 2
Δπξεηεξηνπνίεζε - Σύλνςε ISAM θαη B-trees Καηαθεξκαηηζκόο Καηαθεξκαηηζκόο ή B-trees Δπξεηήξηα ζηελ SQL Πξνρσξεκέλα ζέκαηα: Γπλακηθόο θαηαθεξκαηηζκόο industry workhorse Δπξεηεξηνπ νίεζε π νιιαπ ιώλ γλσξηζκάησλ (multi-attribute indexing)