ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ Χειµερινό Εξάµηνο 2002 Αποθήκευση Εγγραφών - Ευρετήρια ρ Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Επίπεδα Αφαίρεσης Σ Β Επίπεδο Όψεων Όψη Όψη 2 Όψη n περιγράφει τα δεδοµένα και τις µεταξύ τους σχέσεις Λογικό Επίπεδο περιγράφει κάποια µέρη της αποθηκευµένης πληροφορίας Φυσικό Επίπεδο περιλαµβάνει σύνθετες δοµές και λεπτοµέρειες αναπαράστασης και αποθήκευσης 2
Ορισµοί Οργάνωση αρχείου (file organisation) οργάνωση ενός αρχείου σε εγγραφές, µπλοκ και δοµές προσπέλασης τρόπος µε τον οποίο οι εγγραφές και τα µπλοκ τοποθετούνται στο µέσο αποθήκευσης και συνδέονται µεταξύ τους Μέθοδος προσπέλασης (access method) προγράµµατα που επιτρέπουν να εφαρµοστούν κάποιες πράξεις σε ένα αρχείο ανάκτηση δεδοµένων (εντοπισµός εγγραφών) ενηµέρωση δεδοµένων (τροποποίηση των τιµών των πεδίων των εγγραφών) Στόχος µιας καλής οργάνωσης αρχείων είναι ο εντοπισµός του µπλοκ που περιέχει τη τη ζητούµενη εγγραφή µε µε ένα ελάχιστο πλήθος µεταφορών µπλοκ Αποθηκευτικές Μονάδες Η βάση δεδοµένων θα πρέπει να αποθηκευτεί σε κάποιο αποθηκευτικό µέσο Ιεραρχία αποθήκευσης πρωτεύουσα αποθήκευση (primary storage) κύρια µνήµη (main memory) - κρυφή µνήµη (cache) άµεση προσπέλαση από την κύρια ΚΜΕ γρήγορη προσπέλαση περιορισµένη χωρητικότητα αποθήκευσης 4 2
Αποθηκευτικές Μονάδες ευτερεύουσα αποθήκευση (µαγνητικοί δίσκο, ταινίες, δισκέτες, κλπ) για την επεξεργασία των δεδοµένων απαιτείται µεταφορά δεδοµένων στην πρωτεύουσα αποθήκευση πιο αργή προσπέλαση µεγάλη χωρητικότητα µικρότερο κόστος (για την ίδια ποσότητα χώρου η κύρια µνήµη 00 φορές ακριβότερη από τη δευτερεύουσα) Μαγνητικοί ίσκοι κτένι Κεφαλή ανάγνωσης/εγγραφής Άξονας περιστροφής βραχίονας
Μαγνητικοί ίσκοι block η µονάδα µεταφοράς από το δίσκο στη κύρια µνήµη χρόνος εντοπισµού (seek time) Τοποθέτηση κεφαλής στη σωστή άτρακτο χρόνος περιστροφής (rotational delay ή latency) ώσπου η αρχή του σωστού block να βρεθεί κάτω από την κεφαλή χρόνος µεταφοράς block (block transfer time) χρόνος µεταφοράς δεδοµένων από το δίσκο στη µνήµη Χρόνος προσπέλασης = χρόνος εντοπισµού + χρόνος περιστροφής + χρόνος µεταφοράς Ο χρόνος προσπέλασης (εγγραφής ή ανάγνωσης) ενός block διαφέρει και εξαρτάται από τη θέση του block Κάθε φορά γίνεται µεταφορά αρκετών γειτονικών block 7 Αρχεία εγγραφών Block: οµάδα από bytes, σταθερού µήκους ανά λειτουργικό σύστηµα και αποθηκευτικό µέσο Αρχείο (file): Σύνολο από blocks (ακέραιος αριθµός) Πεδίο (field): σύνολο από bytes που αντιστοιχεί σε ένα τύπο δεδοµένων (data type) Τύπος εγγραφής (record type): διατεταγµένο σύνολο πεδίων Αρχείο εγγραφών (record file): σύνολο από εγγραφές [Κάθε block του αρχείου περιλαµβάνει ακέραιο αριθµό εγγραφών] 8 4
Αποθηκευτικό µέσο Block Blocks Record Fields Records 9 type εργαζόµενος = record AM: integer; ΕΠΩΝΥΜΟ: string[20]; ΟΝΟΜΑ: string[20]; ΕΤΟΣ_ΓΕΝ: 900984; end; Παράδειγµα Έστω κάθε char byte - integer 4 bytes Κάθε εγγραφή 48 bytes ΑΜ ΕΠΩΝΥΜΟ ΟΝΟΜΑ ΕΤΟΣ_ΓΕΝ Παπαδόπουλος Κων/νος 970 Νικολάου Γεώργιος 97 Τζίµα Μαρία 99 2 ηµοπούλου Ελένη 972 Ανδρέου ήµητρα 970 B L O C K S 0
Τύποι εγγραφών Εγγραφές σταθερού µήκους (fixed length) κάθε εγγραφή έχει ακριβώς το ίδιο µέγεθος Εγγραφές µεταβλητού µήκους (variable length) περιέχουν ένα ή περισσότερα πεδία µεταβλητού µήκους (πχ το ΟΝΟΜΑ του εργαζόµενου µπορεί να είναι πεδίο µεταβλητού µήκους) περιέχουν ένα ή περισσότερα επαναλαµβανόµενα πεδία (repeating fields), δηλ πεδία που µπορεί να έχουν πολλές τιµές για κάθε εγγραφή περιέχουν ένα ή περισσότερα προαιρετικά πεδία Ανάµεικτο αρχείο (mixed file) ένα αρχείο που περιέχει διαφορετικού τύπου (και εποµένως διαφορετικού µεγέθους) εγγραφές συσχετιζόµενες αλλά διαφορετικών τύπων εγγραφές τοποθετούνται µαζί στο ίδιο µπλοκ δίσκου η εγγραφή τύπου ΒΑΘΜΟΛΟΓΙΑ µπορεί να τοποθετηθεί µετά την αντίστοιχη εγγραφή τύπου ΦΟΙΤΗΤΗ Μορφές αποθήκευσης εγγραφών Οι εγγραφές σταθερού µήκους είναι προτιµότερες εύκολος ο εντοπισµός ενός πεδίου Οι εγγραφές µεταβλητού µήκους µπορούν να αποθηκευτούν ως εγγραφές σταθερού µήκους Προαιρετικά πεδία: τιµή null Επαναλαµβανόµενα πεδία: χώρο για κάθε εγγραφή όσο ο µέγιστος αριθµός εγγραφών Πεδία µεταβλητού µήκους Ειδικούς διαχωριστικούς χαρακτήρες Αποθήκευση του µήκους του πεδίου Προαιρετικά πεδία ζεύγη: <όνοµα-πεδίου, τιµή-πεδίου> Επαναλαµβανόµενα πεδία Ένα χαρακτήρα για να διαχωρίζει τις επαναλαµβανόµενες τιµές του πεδίου και ένα για το τέλος της εγγραφής Αρχείο µε εγγραφές διαφορετικού τύπου Ένα πεδίο ενδεικτικό του τύπου της εγγραφής 2
Παράδειγµα (α) σταθερού µήκους ΑΜ ΕΠΩΝΥΜΟ ΟΝΟΜΑ ΕΤΟΣ_ΓΕΝ 2 4 (β) µε 2 πεδία µεταβλητού µήκους ΝΙΚΟΛΑΟΥ ΓΕΩΡΓΙΟΣ 97 διαχωριστικοί χαρακτήρες (γ) εγγραφή µεταβλητών πεδίων ΑΜ= ΕΠΩΝΥΜΟ=ΝΙΚΟΛΑΟΥ ΟΝΟΜΑ=ΓΕΩΡΓΙΟΣ ΕΤΟΣ_ΓΕΝ=97 διαχωρίζει πεδία = διαχωρίζει όνοµα πεδίου από τιµή τερµατίζει µια εγγραφή Οργάνωση εγγραφών (α) µη εκτεινόµενη εγγραφή εγγραφή 2 εγγραφή block i εγγραφή 4 εγγραφή εγγραφή block i+ (β) εκτεινόµενη εγγραφή εγγραφή 2 εγγραφή εγγραφή 4 block i εγγραφή 4 εγγραφή εγγραφή εγγραφή 7 (υπόλοιπο) block i+ 4 7
Τοποθέτηση block αρχείου στο δίσκο συνεχόµενη τοποθέτηση (contiguous allocation) τα block του αρχείου τοποθετούνται σε διαδοχικά blocks του δίσκου γρήγορη ανάγνωση του αρχείου δύσκολη επέκταση συνδεδεµένη τοποθέτηση (linked allocation) κάθε block του αρχείου περιλαµβάνει ένα δείκτη προς το επόµενο block του αρχείου Εύκολη επέκταση - πιο αργή ανάγνωση όλου του αρχείου συστάδες διαδοχικών blocks δίσκου (τµήµατα (segments) ή επεκτάµατα (extents) συνδυασµός των δύο προηγούµενων τεχνικών ευρετηριοποιηµένη τοποθέτηση (indexed allocation) Οι Οι απαραίτητες πληροφορίες για για τον τον προσδιορισµό των των µπλοκ του του αρχείου στο στο δίσκο όσο όσο και και για για την την περιγραφή της της µορφοποίηση των των εγγραφών περιέχονται στην στην επικεφαλίδα του του αρχείου (file (file header) Αρχεία σωρού ή µη-ταξινοµηµένα αρχεία (Heap or pile files) Εισαγωγή εγγραφής στο τέλος του αρχείου πολύ αποτελεσµατική Γραµµική αναζήτηση χρόνος για κλειδί = n/2 (µο), για µη κλειδί = n Σηµάδι διαγραφής (deletion flag) σπατάλη χώρου στο block του δίσκου απαιτείται αναδιοργάνωση µετά από αριθµό διαγραφών Η οργάνωση των εγγραφών µπορεί να είναι εκτεινόµενη ή µη εκτεινόµενη Ο τύπος των εγγραφών µπορεί να είναι σταθερού ή µεταβλητού µήκους η τροποποίηση µεταβλητού µήκους εγγραφής µπορεί να απαιτεί διαγραφή της παλαιάς και εισαγωγή τροποποιηµένης (η τροποποιηµένη εγγραφή δεν χωρά στη θέση της παλαιάς στο δίσκο) 8
Ταξινοµηµένα αρχεία [ως προς ένα πεδίο] (Sequential files) Η οργάνωση των εγγραφών γίνεται µε βάση κάποιο πεδίο διάταξης (ordering field ) στην περίπτωση που το πεδίο παίρνει διαφορετική τιµή για κάθε εγγραφή, ονοµάζεται κλειδί διάταξης ( ordering key) Πολύπλοκη διαδικασία εισαγωγής στη σωστή θέση πρέπει να βρεθεί η σωστή θέση της εγγραφής και µετά να δηµιουργηθεί χώρος στο δίσκο κατά µέσο όρο πρέπει να µετακινήσουµε τις µισές εγγραφές του αρχείου (δηλ να διαβαστούν και να ξαναγραφούν τα µισά block του αρχείου!) υαδική αναζήτηση για το πεδίο ταξινόµησης χρόνος αναζήτησης (µο) = log 2 n Γραµµική αναζήτηση για άλλο πεδίο Αποτελεσµατικότερη διαγραφή εφόσον χρησιµοποιηθεί σηµάδι διαγραφής (deletion flag) απαιτείται αναδιοργάνωση µετά από αριθµό διαγραφών 7 Ευρετήριο (index)( Επιπρόσθετη δοµή για την αποδοτικότερη ανεύρεση εγγραφών σε αρχείο Το ευρετήριο είναι και αυτό αρχείο Κάθε ευρετήριο βασίζεται σε ένα πεδίο του αρχείου εγγραφών, το οποίο καλείται κλειδί αναζήτησης (search key) Συνήθως το κλειδί αναζήτησης είναι το πρωτεύων κλειδί (primary key) του αρχείου 8 9
Γενική αρχιτεκτονική ευρετηρίων Search key 7 είκτες 7 B L O C K S Ευρετήριο Αρχείο (µη ταξινοµηµένο) 9 Κατηγορίες ευρετηρίων Πυκνά (dense): Καταχωρείται µια εγγραφή στο ευρετήριο για κάθε εγγραφή του αρχείου [πλεονέκτηµα: γρήγορη προσπέλαση των εγγραφών του αρχείου] Αραιά (sparse): Καταχωρείται µια εγγραφή στο ευρετήριο ανά οµάδα εγγραφών στο αρχείο (συνήθως ανά block) [πλεονεκτήµατα: λιγότερος χώρος, λιγότερη επιβάρυνση στις τροποποιήσεις] 20 0
Είδη ευρετηρίων Πρωτεύων ευρετήριο (primary index) To search key είναι το ordering key του αρχείου (για ταξινοµηµένα αρχεία) Ευρετήριο συστάδας (clustering index) Το search key είναι το ordering field του αρχείου (για ταξινοµηµένα αρχεία) ευτερεύων ευρετήριο (secondary index) To search key δεν αποτελεί ordering field του αρχείου (δεν υπάρχει ταξινόµηση) 2 Primary index 9 7 8 Άγκυρα (anchor) 9 Ευρετήριο (sparce) Αρχείο (ταξινοµηµένο) 22
Παράδειγµα ΠΕ ΙΟ ΠΡΩΤΕΥΟΝΤΟΣ ΚΛΕΙ ΙΟΥ ΤΙΜΗ ΠΡΩΤ ΚΛΕΙ ΙΟΥ ΕΙΚΤΗΣ BLOCK ΟΝΟΜΑ Aaron, Ed ΑΡ_ΤΑΥΤ ΗΜΕΡ_ΓΕΝ ΕΡΓΑΣΙΑ ΜΙΣΘΟΣ ΦΥΛΟ Aaron, Ed Adams, John Alexander, Ed Abbot, Diane Acost, Marc Adams, John Adams, Robin Akers, Jan ΑΡΧΕΙΟ ΕΥΡΕΤΗΡΙΟΥ Alexander, Ed Alfred, Bob Allen, Sam ΑΡΧΕΙΟ Ε ΟΜΕΝΩΝ 2 Clustering index 2 2 Ευρετήριο (sparce) Αρχείο (ταξινοµηµένο - not key) 24 2
Secondary index Search key = candidate key του αρχείου 2 4 2 4 Ευρετήριο (dense) Αρχείο 2 Secondary index Search key = οποιοδήποτε πεδίο του αρχείο (not key) Ευρετήριο (sparse) Αρχείο 2