Professional Documents
Culture Documents
www.di.uoa.gr/~k18
Διδάσκων
Μ.Χατζόπουλος
Σύγγραμματα:
1)Θεμελιώδεις Αρχές Συστημάτων Βάσεων Δεδομένων (Elmasri και
Navathe πέμπτη έκδοση)
2)Συστήματα Διαχειρισης Βάσεων Δεδομένων (Ramakrishnan, R και
Gehrke, δεύτερη έκδοση)
Γιατί θα μιλήσουμε
Τύποι Βάσεων Δεδομένων και Εφαρμογών
Βασικοί Ορισμοί
Τυπική λειτουργία ΣΔΒΔ
Παράδειγμα Βάσης Δεδομένων (ΠΑΝΕΠΙΣΤΗΜΙΟ)
Βασικά Χαρακτηριστικά Προσέγγισης με βάσεις
Δεδομένων
Χρήστες Βάσεων Δεδομένων
Πλεονεκτήματα της Προσέγγισης με Βάσεις Δεδομένων
Πότε δεν χρησιμοποιούνται βάσεις δεδομένων
Βασικοί Ορισμοί
Βάση Δεδομένων:
Μια συλλογή δεδομένων που σχετίζονται.
Δεδομένα:
Γνωστά γεγονότα που μπορούν να καταγραφούν και έχουν μια
εγγενή σημασία.
Μικρόκοσμος:
Τμήμα του πραγματικού κόσμου για το οποίο αποθηκεύονται
δεδομένα στη βάση δεδομένων. Για παράδειγμα βαθμοί φοιτητών
σε μαθήματα.
Σύστημα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ):
Ένα πακέτο/σύστημα λογισμικού που διευκολύνει την δημιουργία
και την διαχείριση μιας βάσης δεδομένων σε υπολογιστή.
Σύστημα Βάσης δεδομένων:
Το λογισμικό του ΣΔΒΔ μαζί με τα δεδομένα. Μερικές φορές
συμπεριλαμβάνονται και οι εφαρμογές.
Κεφάλαιο 2
Έννοιες και Αρχιτεκτονική
Συστημάτων Βάσεων δεδομένων
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 3
Μοντέλα Δεδομένων
Μοντέλο Δεδομένων:
Ένα σύνολο από έννοιες που περιγράφουν τη δομή μιας
βάσης δεδομένων, των πράξεων για διαχείριση αυτών των
δομών, και κάποιοι περιορισμοί που πρέπει να ακολουθεί
η βάση δεδομένων.
Δομή του Μοντέλου Δεδομένων και περιορισμοί:
Τα δομικά στοιχεία χρησιμοποιούνται για τον ορισμό της
δομής της βάσης δεδομένων
Τα δομικά στοιχεία τυπικά περιλαμβάνουν πρωταρχικά
στοιχεία (και τον τύπο δεδομένων τους) καθώς και
ομάδες στοιχείων (πχ. οντότητα, εγγραφή, πίνακας), και
συσχετίσεις μεταξύ τέτοιων ομάδων
Οι περιορισμοί προσδιορίζουν κάποιους περιορισμούς στα
έγκυρα δεδομένα. Αυτοί οι περιορισμοί πρέπει να ισχύουν
κάθε στιγμή.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 4
Μοντέλα Δεδομένων (συνέχεια)
Πράξεις Μοντέλων Δεδομένων :
Οι πράξεις αυτές χρησιμοποιούνται για τον
προσδιορισμό ανακτήσεων και ενημερώσεων στη
βάση δεδομένων με αναφορά στα δομικά στοιχεία
του μοντέλου δεδομένων.
Οι πράξεις στο μοντέλο δεδομένων μπορεί να
περιλαμβάνουν βασικές πράξεις του μοντέλου
(π.χ. εισαγωγή, διαγραφή, τροποποίηση) και
πράξεις οριζόμενες από το χρήστη (π.χ.
compute_student_gpa, update_inventory)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 5
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 6
Σχήματα έναντι Στιγμιοτύπων
Σχήμα Βάσης Δεδομένων:
Η περιγραφή μιας βάσης δεδομένων.
Περιλαμβάνει περιγραφές των δομών βάσεων δεδομένων,
τύπων δεδομένων, και των περιορισμών σε βάσεις
δεδομένων.
Διάγραμμα Σχήματος:
Μια ενδεικτική επίδειξη του σχήματος μιας βάσης
δεδομένων (των περισσοτέρων χαρακτηριστικών).
Δομικό Στοιχείο Σχήματος:
Ένα στοιχείο του σχήματος ή ένα αντικείμενο σε ένα
σχήμα, π.χ., ΦΟΙΤΗΤΗΣ, ΜΑΘΗΜΑ.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 7
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 8
Σχήμα Βάσης Δεδομένων
έναντι Κατάστασης Βάσης δεδομένων
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 9
Διάκριση
Το σχήμα μιας βάσης δεδομένων δεν αλλάζει
συχνά.
Η κατάσταση μιας βάσης δεδομένων αλλάζει
κάθε φορά που τροποποιείται η βάση δεδομένων.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 10
Παράδειγμα Σχήματος Βάσης Δεδομένων
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 11
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 12
Αρχιτεκτονική Τριών Σχημάτων
Προτάθηκε για υποστήριξη των παρακάτω
χαρακτηριστικών ΣΔΒΔ:
Ανεξαρτησία Προγραμμάτων δεδομένων.
Υποστήριξη πολλαπλών όψεων των δεδομένων.
Δεν ακολουθείται κατά γράμμα από εμπορικά
προϊόντα ΣΔΒΔ, αλλά έχει φανεί χρήσιμη για την
εξήγηση της οργάνωσης των συστημάτων
βάσεων δεδομένων.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 13
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 14
Αρχιτεκτονική Τριών Σχημάτων
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 15
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 16
Ανεξαρτησία Δεδομένων
Λογική Ανεξαρτησία Δεδομένων:
Η δυνατότητα να αλλάζει το εννοιολογικό σχήμα χωρίς να
χρειασθεί να αλλάξουν τα εξωτερικά σχήματα και τα σχετικά
προγράμματα.
Φυσική Ανεξαρτησία Δεδομένων:
Η δυνατότητα να αλλάζει το εσωτερικό σχήμα χωρίς να
χρειασθεί αλλαγή του εννοιολογικού σχήματος.
Για Παράδειγμα, το εσωτερικό σχήμα μπορεί να αλλάξει
όταν κάποιες δομές αρχείων αναδιοργανώνται ή
δημιουργούνται νέα ευρετήρια για βελτίωση της απόδοσης.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 17
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 18
Γλώσσες ΣΔΒΔ
Γλώσσα Ορισμού Δεδομένων (ΓΟΔ)
Γλώσσα Χειρισμού Δεδομένων (ΓΧΔ)
Υψηλού επιπέδου ή Μη διαδικαστικές γλώσσες:
Περιλαμβάνουν την σχεσιακή γλώσσα SQL
Μπορούν να χρησιμοποιηθούν από μόνες τους ή
μπορεί να εμφυτευθούν σε μια γλώσσα
προγραμματισμού.
Χαμηλού επιπέδου ή Διαδικαστικές Γλώσσες:
Αυτές πρέπει να εμφυτευθούν σε μια γλώσσα
προγραμματισμού.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 19
Γλώσσες ΣΔΒΔ
Γλώσσα Ορισμού δεδομένων (ΓΟΔ):
Χρησιμοποιείται από τον ΔΒΔ και τους σχεδιαστές βάσεων
δεδομένων για τον ορισμό του εννοιολογικού σχήματος μιας
βάσης δεδομένων.
Σε πολλά ΣΔΒΔ, η ΓΟΔ χρησιμοποιείται για ορισμό
εσωτερικών και εξωτερικών (όψεων) σχημάτων.
Σε μερικά ΣΔΒΔ, υπάρχει ξεχωριστή γλώσσα ορισμού
δεδομένων (ΓΟΔ) (SDL) και γλώσσα ορισμού όψεων
definition (ΓΟΟ) (VDL) για τον ορισμό εσωτερικών και
εξωτερικών σχημάτων.
Ο ορισμός των δεδομένων τυπικά υλοποιείται από τον ΔΒΔ και τους
σχεδιαστές με εντολές στο ΣΔΒΔ
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 20
Γλώσσες ΣΔΒΔ
Γλώσσα Χειρισμού Δεδομένων (ΓΧΔ):
Χρησιμοποιείται για τον προσδιορισμό ανακτήσεων και
ενημερώσεων από τη βάση δεδομένων
Οι εντολές της ΓΧΔ (υπογλώσσα δεδομένων) μπορούν να
εμφυτευθούν σε μια γενικού σκοπού γλώσσα
προγραμματισμού (φιλόξενη γλώσσα), όπως οι COBOL, C,
C++, ή η Java.
Μπορεί επίσης να υποστηρίζεται μια βιβλιοθήκη με
συναρτήσεις για προσπέλαση του ΣΔΒΔ από μια γλώσσα
προγραμματισμού
Εναλλακτικά, μπορούν να εφαρμοσθούν από μόνες τους
άμεσα εντολές της ΓΧΔ (ονομάζεται μια γλώσσα
επερωτήσεων).
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 21
Τύποι ΓΧΔ
Υψηλού Επιπέδου ή μη Διαδικαστικές γλώσσες:
Για παράδειγμα, η σχεσιακή γλώσσα SQL
Βασίζονται σε “σύνολα” και αντί να προσδιορίζουν πως θα
ανακτηθούν τα δεδομένα προσδιορίζουν ποιά δεδομένα θα
ανακτηθούν.
Ονομάζονται επίσης δηλωτικές γλώσσες.
Χαμηλού Επιπέδου ή Διαδικαστικές Γλώσσες :
Ανακτούν τα δεδομένα μια-μια εγγραφή
Για την ανάκτηση πολλαπλών εγγραφών χρειάζονται δομές
επανάληψης μαζί με δείκτες θέσης.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 22
Διεπαφές ΣΔΒΔ
Διεπαφές γλωσσών επερωτήσεων
Παράδειγμα: Εισαγωγή SQL επερωτήσεων σε μια
διαδραστική SQL διεπαφή με το ΣΔΒΔ (π.χ.
SQL*Plus στην ORACLE)
Διεπαφές Προγραμματιστών για εμφύτευση ΓΧΔ
σε γλώσσες προγραμματισμού
Φιλικές στο χρήστη διεπαφές
Βασισμένες σε μενού, βασισμένες σε φόρμες,
βασισμένες σε γραφικά, κλπ.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 23
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 24
Φιλικές στο Χρήστη Διεπαφές ΣΔΒΔ
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 25
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 26
Βοηθητικά Προγράμματα Συστημάτων
Βάσεων Δεδομένων
Για να εκτελούν διάφορες λειτουργίες όπως:
Φόρτωμα δεδομένων στη βάση από δεδομένα που
βρίσκονται σε αρχεία. Συμπεριλαμβάνουν εργαλεία
μετατροπής δεδομένων.
Λήψη περιοδικών αντιγράφων της βάσης
δεδομένων.
Αναδιοργάνωση των δομών αρχείων της βάσης.
Προγράμματα δημιουργίας αναφορών.
Άλλες λειτουργίες, όπως ταξινόμηση,
παρακολούθησης των χρηστών, συμπίεσης
δεδομένων κλπ.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 27
Άλλα Εργαλεία
Λεξικό δεδομένων / αποθήκη:
Χρησιμοποιείται για αποθήκευση περιγραφών του
σχήματος και άλλων πληροφοριών όπως
σχεδιαστικές αποφάσεις, περιραφ΄ς
προγραμμάτων εφαρμογών, πληροφορίες
χρηστών, πρότυπα χρήσης, κλπ.
Η προσπέλαση στο Ενεργό Λεξικό Δεδομένων is
γίνεται από το λογισμικό του ΣΔΒΔ και τους
χρήστες/ΔΒΔ.
Προσπέλαση στο Μη Ενεργό λεξικό δεδομένων
γίνεται μόνο από τους χρήστες/ΔΒΔ.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 28
Άλλα Εργαλεία
Περιβάλλοντα Ανάπτυξης Εφαρμογών και
εργαλεία CASE (computer-aided software
engineering):
Παραδείγματα:
PowerBuilder (Sybase)
JBuilder (Borland)
JDeveloper 10G (Oracle)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 29
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 30
Αρχιτεκτονικές ΣΔΒΔ Κεντρικές και
Πελάτη-Διακομιστή
Κεντρικά ΣΔΒΔ:
Συνδυάζουν τα πάντα σε ένα σύστημα- ΣΔΒΔ
λογισμικό, υλικό, προγράμματα εφαρμογών,
λογισμικό επεξεργασίας διεπαφών χρήστη.
Ο χρήστης μπορεί να συνδεθεί μέσω ενός
απομακρυσμένου τερματικού– ωστόσο, όλη η
επεξεργασία γίνεται στον κεντρικό κόμβο.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 31
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 32
Βασική Αρχιτεκτονική Πελάτη-Διακομιστή
2 Επιπέδων
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 33
Διακομιστής
Διακομιστής Διακομιστής
Εκτύπωσης Αρχείων ΣΔΒΔ
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 34
Πελάτες
Έχουν κατάλληλες διεπαφές μέσω ενός
λογισμικού πελάτη για προσπέλαση και χρήση
των πόρων του διακομιστή.
Οι πελάτες μπορεί να είναι μηχανές χωρίς δίσκο
ή PCs ή σταθμοί εργασίας με δίσκους με μόνο το
λογισμικό του πελάτη εγκατεστημένο.
Συνδέονται με τους διακομιστές μέσω μιας
μορφής δικτύου.
(LAN: τοπικά δίκτυα, ασύρματο δίκτυο, κλπ.)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 35
Διακομιστής ΣΔΒΔ
Υποστηρίζει υπηρεσίες επερωτήσεων και δοσοληψιών στους πελάτες
Οι σχεσιακοί διακομιστές ΣΔΒΔ συχνά ονομάζονται SQL
διακομιστές, διακομιστές επερωτήσεων, ή διακομιστές δοσοληψιών
Οι εφαρμογές που τρέχουν σε πελάτες χρησιμοποιούν μια διεπαφή
πρόγράμματος εφαρμογών (Application Program Interface─API) για
προσπέλαση στη βάση δεδομένων του διακομιστή μέσω τυπικών
διεπαφών όπως:
ODBC: Open Database Connectivity (πρότυπο)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 36
Αρχιτεκτονική Πελάτη-Διακομιστή 2
Επιπέδων
Ένα πρόγραμμα πελάτη μπορεί να συνδεθεί με
διαφορετικά ΣΔΒΔ, που μερικές φορές ονομάζονται
πηγές δεδομένων.
Γενικά, οι πηγές των δεδομένων μπορεί να είναι αρχεία ή
άλλο λογισμικό εκτός από το ΣΔΒΔ που διαχειρίζεται
δεδομένα.
Υπάρχουν άλλες δυνατές παραλλαγές των πελατών: π.χ.,
σε μερικά αντικειμενοστρεφή ΣΔΒΔ, μεταφέρεται
περισσότερη λειτουργικότητα στους πελάτες
συμπεριλαμβανομένων λειτουργιών του λεξικού
δεδομένων, βελτιστοποίηση και ανάκαμψη σε
πολλαπλούς διακομιστές, κλπ.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 37
Αρχιτεκτονική Πελάτη-Διακομιστή 3
Επιπέδων
Συνηθίζεται σε Web εφαρμογές
Υπάρχει ενδιάμεσο Επίπεδο που ονομάζεται Διακομιστής
Εφαρμογών ή Web Διακομιστής:
Αποθηκεύει το λογισμικό σύνδεσης στο web και το τμήμα της
επιχειρηματικής λογικής της εφαρμογής που χρησιμοποιείται για
προσπέλαση των αντίστοιχων δεδομένων από τον διακομιστή
της βάσης δεδομένων
Λειτουργεί σαν αγωγός αποστολής μερικώς επεξεργασμένων
δεδομένων partially μεταξύ του διακομιστή της βάσης δεδομένων
και του πελάτη.
Η αρχιτεκτονική 3 επιπέδων μπορεί να ενισχύσει την ασφάλεια:
Προσπέλαση στο διακομιστή της βάσης δεδομένων μόνο μέσω
του ενδιάμεσου επιπέδου
Οι πελάτες δεν έχουν άμεση προσπέλαση στο διακομιστή της
βάσης δεδομένων.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 38
Αρχιτεκτονική Πελάτη-Διακομιστή 3
Επιπέδων
Διακομιστής
Εφαρμογών ή Προγράμματα Επίπεδο
Web Εφαρμογών Επιχειρηματικής
διακομιστής Web σελίδες Λογικής
Αρχιτεκτονική Πελάτη-Διακομιστή 3
Επιπέδων
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 41
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 42
Θέματα κόστους για ΣΔΒΔ
Κλιμάκωση κόστους: από ελεύθερα ανοικτού κώδικα
συστήματα σε διατάξεις που κοστίζουν εκατομμύρια €
Παραδείγματα ελεύθερων σχεσιακών ΣΔΒΔ : MySQL,
PostgreSQL, άλλα
Εμπορικά ΣΔΒΔ υποστηρίζουν επιπλέον εξειδικευμένες
υπηρεσίες, πχ. χρονοσειρές, χωρικά δεδομένα, διαχείριση
εγγράφων, XML
Υποστηρίζουν επιπλέον εξειδικευμένη λειτουργικότητα όταν
αγορασθούν ξεχωριστά
Μερικές φορές ονομάζονται cartridges (πχ στην Oracle) ή
blades
Διαφορετικές επιλογές αδειών: άδεια κόμβου, μέγιστο
πλήθος ταυτόχρονων χρηστών (άδει θέσης), ένας
χρήστης, κλπ.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 43
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 44
Ιστορικό των Μοντέλων Δεδομένων
Δικτυωτό Μοντέλο:
Το πρώτο δικτυωτό ΣΔΒΔ υλοποιήθηκε από την
Honeywell το 1964-65 (Σύστημα IDS).
Υιοθετήθηκε ευρέως λόγω της υποστήριξης από
την CODASYL (Conference on Data Systems
Languages) (CODASYL - DBTG αναφορά 1971).
Αργότερα υλοποιήθηκε σε μια μεγάλη ποικιλία
συστημάτων - IDMS (Cullinet - σήμερα Computer
Associates), DMS 1100 (Unisys), IMAGE (H.P.
(Hewlett-Packard)), VAX -DBMS (Digital
Equipment Corp., μετά COMPAQ, σήμερα H.P.).
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 45
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 46
Δικτυωτό Μοντέλο
Πλεονεκτήματα:
Το δικτυωτό μοντέλο μπορεί να μοντελοποιήσει
πολύπλοκες συσχετίσεις και να παραστήσει τα
σημασιολογικά προσθήκης/διαγραφής σε συχετήσεις.
Αντιμετωπίζει τις περισσότερες καταστάσεις
μοντελοποίησης χρησιμοποιώντας τύπους εγγραφών και
τύπους συσχετίσεων.
Η γλώσσα υποστηρίζει πλοήγηση· χρησιμοποιεί δομές
όπως FIND, FIND member, FIND owner, FIND NEXT within
set, GET, κλπ.
Οι προγραμματιστές μπορούν να κάνουν βέλτιστη πλοήγηση
στη βάση δεδομένων.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 47
Δικτυωτό Μοντέλο
Μειονεκτήματα:
Η πλοήγηση και η διαδικαστική φύση της
επεξεργασίας
Η βάση δεδομένων περιέχει ένα πολύπλοκο
πίνακα δεικτών που συνδέουν ένα σύνολο
εγγραφών.
Μικρή δυνατότητα αυτόματης “βελτιστοποίησης
επερωτήσεων”
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 48
Ιστορικό των Μοντέλων Δεδομένων
Ιεραρχικό Μοντέλο Δεδομένων:
Αρχικά υλοποιήθηκε σαν κοινή προσπάθειατης
IBM και της North American Rockwell στα 1965.
Είχε σαν αποτέλεσμα την οικογένεια συστημάτων
IMS.
Το προϊόν IMS της IBM είχε (και ακόμη έχει) μια
πολύ μεγάλη βάση πελατών παγκοσμίως
Το ιεραρχικό μοντέλο τυποποιήθηκε με βάση το
σύστημα IMS
Άλλα συστήματα που βασίζονται στο μοντέλο
αυτό: System 2k (SAS inc.)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 49
Ιεραρχικό Μοντέλο
Πλεονεκτήματα:
Απλό στη δόμηση και στη λειτουργία
Αντιστοιχεί σε ένα πλήθος απόμ εραρχικά οργανωμένα από
τη φύση τους πεδία
Η γλώσσα είναι απλή:
Χρησιμοποιεί δομικά στοιχεία όπως GET, GET UNIQUE, GET
NEXT, GET NEXT WITHIN PARENT, κλπ.
Μειονεκτήματα:
Η πλοήγηση και η διαδικαστική φύση της επεξεργασίας
Η βάση δεδομένων εμφανίζεται σαν μια γραμμική διάταξη
εγγραφών
Μικρή δυνατότητα “βελτιστοποίησης επερωτήσεων”
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 50
Ιστορικό των Μοντέλων Δεδομένων
Σχεσιακό Μοντέλο:
Προτάθηκε το 1970 από τον E.F. Codd (IBM), πρώτο
εμπορικό σύστημα 1981-82.
Σήμερα σε πολλά εμπορικά προϊόντα (πχ. DB2, ORACLE,
MS SQL Server, SYBASE, INFORMIX).
Μερικά υλοποιήσεις ανοικτού κώδικα, πχ. MySQL,
PostgreSQL
Σήμερα κυρίαρχο στην ανάπτυξη εφαρμογών βάσεων
δεδομένων.
SQL σχεσιακά πρότυπα: SQL-89 (SQL1), SQL-92 (SQL2),
SQL-99, SQL3, …
Τα κεφάλαια 5 έως 11 περιγράφουν αυτό το μοντέλο
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 51
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 52
Ιστορικό των Μοντέλων Δεδομένων
Σχεσιο-Αντικειμενοσρεφή Μοντέλα:
Η πιο πρόσφατη τάση. Άρχισε με τον Informix Universal
Server.
Τα σχεσιακά συστήματα ενσωματώνουν έννοιες από τις
αντικειμενοστρεφείς βάσεις δεδομένων.
Χαρακτηριστικά παραδείγματα οι τελευταίες εκδόσεις της
Oracle-10i, DB2, και SQL Server και άλλα ΣΔΒΔ.
Τα πρότυπα περιλαμβάνονται στο SQL-99 και αναμένεται
να επεκταθούν σε μελλοντικά SQL πρότυπα.
Το κεφάλαιο 22 περιγράφει αυτό το μοντέλο.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 53
Σύνοψη
Μοντέλα Δεδομένων και Κατηγορίες τους
Ιστορικό των Μοντέλων Δεδομένων
Σχήματα, Στιγμιότυπα, και Καταστάσεις
Αρχιτεκτονική Τριών Σχημάτων
Ανεξαρτησία Δεδομένων
Γλώσσες και Διεπαφές ΣΔΒΔ
Βοηθητικά Προγράμματα και Εργαλεία ΣΔΒΔ
Κεντρικές και Αρχιτεκτονικές Πελάτη/Διακομιστή
Ταξινόμηση ΣΔΒΔ
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Δίαυλος Διαφάνεια 2- 54
Κατακερματισμός
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Με χρήση μιας συνάρτησης που ονομάζεται συνάρτηση
απεικόνισης ή συνάρτηση κατακερματισμού (hash
function) απεικονίζεται η τιμή ενός πεδίου στο χώρο των
διευθύνσεων:
h(K)→A
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Εσωτερικός Κατακερματισμός
0
1
Μ-1
Μ.Χατζόπουλος
temp ← 1 ;
for i ← 1 to 20 do temp ← temp * code(K[i]) mod M ;
hash_address temp mod M ;
i ← hash_address(K); a←i ;
if (η θέση i είναι κατειλημμένη)
then begin i ← (i+1) mod M ;
while (i ≠ a) and (η θέση i είναι κατειλημμένη)
do i ← (i+1) mod M ;
if (i = a) then όλες οι θέσεις είναι γεμάτες
else new_hash_address ← i
end ;
Μ.Χατζόπουλος
Σύγκρουση
Μ.Χατζόπουλος
Επίλυση Συγκρούσεων
Μ.Χατζόπουλος
0 -1
1 Μ
2 -1
3 Μ+2
. Χώρος
Διευθύνσεων
.
-1
-1
M-2 Μ+1
M-1 -1
Μ Μ+5
Μ+1 -1 Χώρος
Μ+2 -1 Υπερχείλισης
-1
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Συναρτήσεις Κατακερματισμού
• Μέσου Τετραγώνου
• Διαίρεση
• Αναδίπλωση
Μ.Χατζόπουλος
Εξωτερικός Κατακερματισμός
Διεύθυνση
Μπλοκ
στο δίσκο
0
1
Μ-2
Μ-1
Κάδος
Μ.Χατζόπουλος
Στατικός Εξωτερικός Κατακερματισμός
0
1
κλειδί
h
M-1
Μ.Χατζόπουλος
δείκτης null
κάδος 1
δείκτης
…
κάδος Μ-1
null
δείκτης
Μ.Χατζόπουλος
Το σχήμα αυτό ονομάζεται στατικός κατακερματισμός επειδή
διατίθεται ένας σταθερός αριθμός από κάδους M. Αυτό μπορεί
να είναι σοβαρό μειονέκτημα για δυναμικά αρχεία. Αν
διαθέτουμε M κάδους για το χώρο διευθύνσεων και ότι m είναι
το μέγιστο πλήθος εγγραφών που χωρούν σε έναν κάδο· τότε,
το πολύ (m*M) εγγραφές θα χωρούν στο χώρο που διατέθηκε.
Aν τελικά το πλήθος των εγγραφών είναι σημαντικά μικρότερο
από (m*M), τότε έχουμε πολύ αχρησιμοποίητο χώρο. Aπό την
άλλη πλευρά, αν το πλήθος των εγγραφών μεγαλώσει πολύ
περισσότερο από (m*M), θα προκληθούν πολλές συγκρούσεις
και η ανάκτηση θα επιβραδυνθεί λόγω της εμφάνισης
μεγάλων λιστών από εγγραφές υπερχείλισης.
Μ.Χατζόπουλος
Τι γίνεται με
Μ.Χατζόπουλος
Δυναμικά Σχήματα Κατακερματισμού
Τα σχήματα αυτά επιτρέπουν την δυναμική
επέκταση και συρρίκνωση των αρχείων
κατακερματισμού.
Ο μετασχηματισμός στηρίζεται στην δυαδική
αναπαράσταση την τιμής κατακερματισμού.
Τα πιο γνωστά σχήματα είναι:
Ο επεκτατός κατακερματισμός και
Ο γραμμικά Επεκτατός Κατακερματισμός
Μ.Χατζόπουλος
01
Κάδοι
10 Δεδομένων
11
Βάθος 2
Μ.Χατζόπουλος
000
001
010
011
100
101
110
111
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Η επέκταση γίνεται εκθετικά μόνο στο ευρετήριο
000
001
010
011
100
111
Βάθος 3
Μ.Χατζόπουλος
000
d’=2
001
010
d’=2
011
100
d’=2
101
110 d’=3
111
Μ.Χατζόπουλος
Τοπικό βάθος σε όλα 2
Ολικό Κάδος Α
4 12 32 16 Για παράδειγμα
βάθος 2 το h(K)=16
00 Κάδος Β
15 21
01
10 Κάδος C
10
11
15 7 19 Κάδος D
Μ.Χατζόπουλος
Ολικό Κάδος Α
4 12 32 16
βάθος 2
00 Κάδος Β
15 21 13
01
10 Κάδος C
10
11
15 7 19 Κάδος D
Ολικό Κάδος Α
32 16
βάθος 2
00 Κάδος Β
15 21 13
01
10 Κάδος C
10
11
15 7 19 Κάδος D
Μ.Χατζόπουλος
Ολικό
βάθος 3
Κάδος Α
32 16 Τοπικό βάθος 3
000
001
Κάδος Β
010 15 21 13 Τοπικό βάθος 2
011
Κάδος C
100
10 Τοπικό βάθος 2
101
15 7 19 Κάδος D Τοπικό βάθος 2
110
111 Κάδος Α2
4 12 20 Τοπικό βάθος 3
011
Κάδος C
100
10 Τοπικό βάθος 2
101
15 7 19 Κάδος D Τοπικό βάθος 2
110
111 Κάδος Α2
4 12 20 Τοπικό βάθος 3
Κάδος Β2
5 21 13 Τοπικό βάθος 3
Μ.Χατζόπουλος
Ερώτηση
Αν το ολικό βάθος του ευρετηρίου είναι d bits και το τοπικό
βάθος ενός κάδου είναι l bits πόσες καταχωρήσεις
ευρετηρίου δείχνουν στον κάδο αυτό;
Μ.Χατζόπουλος
Για διαγραφές εντοπίζεται ο κάδος που περιέχει
το δεδομένο και ακολουθεί διαγραφή. Αν η
διαγραφή οδηγεί σε κενό κάδο τότε μπορεί να
συγχωνευθεί με τον κάδο από τον οποίο προήλθε
από την διάσπαση. Η συγχώνευση των κάδων
μειώνει το τοπικό βάθος.
Αυτό μπορεί να οδηγήσει και σε μείωση του
ευρετηρίου στο μισό.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Γραμμικός Κατακερματισμός
Ο γραμμικός κατακερματισμός είναι μια τεχνική που
προσαρμόζεται με επιτυχία σε εισαγωγές και
διαγραφές.
H ιδέα στην οποία βασίζεται ο γραμμικός
κατακερματισμός είναι να επιτρέπουμε σε ένα
αρχείο κατακερματισμού να επεκτείνει ή να
συρρικνώνει τους κάδους του δυναμικά χωρίς
να χρειάζεται κάποιον κατάλογο.
Με την μέθοδο αυτή υπάρχει μια ακολουθία
συναρτήσεων κατακερματισμού h0, h1, h2,.. με
την ιδιότητα το πεδίο τιμών καθεμιάς να είναι
διπλάσιο από αυτό της προηγουμένης της.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Μπορούμε να θεωρήσουμε γύρους κατακερματισμού.
Κατά τον γύρο i χρησιμοποιούνται μόνο οι συναρτήσεις hi
και hi+1. Όπως γεμίζουν οι κάδοι διαχωρίζονται ένας ένας
από τον πρώτο στον τελευταίο.
Μ.Χατζόπουλος
h1 h0 h1 h0
000 00 32 44 36 _ 000 00 32 _ _ _
001 01 9 25 5 _ 001 01 9 25 5 _
010 10 14 18 10 30 010 10 14 18 10 30
011 11 31 35 7 11 011 11 31 35 7 11 43
100 00 44 36
Μ.Χατζόπουλος
Διάσπαση συμβαίνει όταν γίνει επέκταση στην υπερχείλιση
Εισαγωγή 37
h1 h0
000 00 32 _ _ _
001 01 9 25 5 37
010 10 14 18 10 30
011 11 31 35 7 11 43
100 00 44 36
Μ.Χατζόπουλος
Εισαγωγή 29
h1 h0
000 00 32 _ _ _
001 01 9 25 _ _
010 10 14 18 10 30
011 11 31 35 7 11 43
100 00 44 36 _ _
101 01 5 37 29
Μ.Χατζόπουλος
Εισαγωγή των 22 66 και 34
h1 h0
000 00 32 _ _ _
001 01 9 25 _ _
010 10 66 18 10 34
011 11 31 35 7 11 43
100 00 44 36 _ _
101 01 5 37 29 _
110 10 14 30 22 _
Μ.Χατζόπουλος
Εισαγωγή 50
h1 h0
000 00 32 _ _ _
001 01 9 25 _ _
010 10 66 18 10 34 50
011 11 43 35 11 _
100 00 44 36 _ _
101 01 5 37 29 _
110 10 14 30 22 _
111 11 31 7 _ _
Μ.Χατζόπουλος
Aλγόριθμος H διαδικασία αναζήτησης για γραμμικό
κατακερματισμό.
if (n = 0)
then m ← hj(K) (* το m είναι η τιμή κατακερματισμού της
εγγραφής με κλειδί κατακερματισμού K *)
else begin
m ← hj(K) ;
if (m < n) then m ← hj+1(K)
end;
αναζήτησε τον κάδο που η τιμή κατακερματισμού του είναι m
(και την υπερχείλισή του, αν έχει) ;
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Αν υποθέσουμε ότι κάθε κάδος έχει 3 θέσεις και παράγοντα φόρτωσης
του αρχείου 67%
56=0111000
00 00 56 64 12 67=1000011
56 64
43=0101011
01 01 33
79=1001111
10 10 15=0001111
27=0011011
67 43 79 11 67 43 79 19=0010011
11 64=1000000
12=0001100
15 27 19 15 27 19 33=0100001
57=0111101
65=1000001
Μ.Χατζόπουλος
000 56 64
000 56 64
01 33 57 65 001 33 57 65
10 Για την επόμενη
εισαγωγή 10
11 67 43 79 Θα χρειασθεί διάσπαση
11 67 43 79
100 12
100 12
101
15 27 19
15 27 19
Μ.Χατζόπουλος
Γενικά μπορούμε να εφαρμόσουμε και την αντίστροφη διαδικασία
συρρίκνωσης του αρχείου όταν διαπιστώσουμε μεγάλο
αχρησιμοποίητο χώρο. Για παράδειγμα αν ο παράγοντας φόρτωσης
πέσει κάτω από μια τιμή.
Μ.Χατζόπουλος
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση,
∆ίαβλος, Επιµ. Μ.Χατζόπουλος ∆ιαφάνεια 13- 1
Κεφάλαιο 13
Αποθήκευση σε ∆ίσκους, Βασικές
∆οµές Αρχείων, και
Κατακερµατισµός
1
Γιατί θα µιλήσουµε
Μονάδες Αποθήκευσης ∆ίσκων
Αρχεία Εγγραφών
Πράξεις σε αρχεία
Αρχεία Σωρού
Ταξινοµηµένα Αρχεία Αρχεία
Αρχεία Κατακερµατισµού
Τεχνικές ∆υναµικού και Επεκτατού
Κατακερµατισµού
Τεχνολογία RAID
2
Αποθηκευτικές Μονάδες ∆ίσκων(συν.)
Μια άτρακτος χωρίζεται σε µικρότερα µπλοκ ή τοµείς
επειδή συνήθως περιέχει µεγάλη ποσότητα πληροφοριών
Ο διαµερισµός µιας ατράκτου σε τοµείς στην επιφάνεια
του δίσκου είναι µόνιµα κωδικοποιηµένος και δεν µπορεί
να αλλάξει.
Ένας τύπος οργάνωσης τοµέων είναι αυτός που αποτελούν
ένα τµήµα ατράκτου που εκτείνεται σε µια σταθερή γωνία
στο κέντρο του τοµέα.
Μια άτρακτος χωρίζεται σε µπλοκ.
Το µέγεθος του µπλοκ B είναι σταθερό για κάθε σύστηµα.
Τυπικά µεγέθη µπλοκ ποικίλουν από B=512 bytes µέχρι
B=4096 bytes.
Μεταξύ δίσκου και κύριας µνήµης µεταφέρονται για
επεξεργασία ολόκληρα µπλοκ.
Άτρακτος Τοµέας
3
Αποθηκευτικές Μονάδες ∆ίσκων(συν.)
Μια ανάγνωσης-γραφής µετακινείται προς την άτρακτο που περιέχει
το µπλοκ για µεταφορά.
Η περιστροφική κίνηση του δίσκου µεταφέρει το µπλοκ κάτω από
την κεφαλή ανάγνωσης/γραφής για διάβασµα ή γράψιµο.
Μια φυσική διεύθυνση µπλοκ (hardware) αποτελείται από:
τον αριθµό κυλίνδρου (υποθετική συλλογή ατράκτων της ίδιας
ακτίνας από όλες τις επιφάνειες)
τον αριθµό ατράκτου ή τον αριθµό της επιφάνειας (στον κύλινδρο)
4
Τυπικές παράµετροι δίσκων
Εγγραφές
Εγγραφές σταθερού και µεταβλητού µήκους
Οι εγγραφές περιέχουν πεδία που έχουν τιµές
συγκεκριµένου τύπου
Π.χ., amount, date, time, age
Τα πεδία µπορεί να είναι σταθερού ή µεταβλητού µήκους
may be fixed
Τα πεδία µεταβλητού µήκους µπορεί να αναµειγνύονται
σε µια εγγραφή:
Για να γίνει επεξεργασία της εγγραφής χρησιµοποιούνται
διαχωριστικοί χαρακτήρες ή µήκος πεδίου
5
Οµαδοποίηση (blocking)
Οµαδοποίηση:
Αφορά την αποθήκευση ενός πλήθους εγγραφών σε ένα
µπλοκ του δίσκου.
Παράγοντας οµαδοποίησης (bfr) είναι το πλήθος των
εγγραφών ανά µπλοκ.
Σε ένα µπλοκ µπορεί να υπάρχει κενός χώρος αν δεν
χωράει στο µπλοκ ένα ακέραιο πλήθος εγγραφών.
Εκτεινόµενες (Spanned) Εγγραφές:
Είναι οι εγγραφές που ξεπερνούν τι µέγεθος ενός ή
περισσότερων µπλοκ και εποµένως εκτείνονται σε ένα
πλήθος από µπλοκ.
Αρχεία Εγγραφών
Ένα αρχείο είναι µια ακολουθία εγγραφών, ΄που κάθε
εγγραφή είναι µια συλλογή από τιµές δεδοµένων.
Ένας περιγραφές αρχείου (ή επικεφαλίδα αρχείου)
περιλαµβάνει πληροφορίες που περιγράφουν το αρχείο,
όπως τα ονόµατα των πεδίων και τους τύπους
δεδοµένων, και τις διευθύνσεις των µπλοκ του αρχείου
στο δίσκο.
Οι εγγραφές αποθηκεύονται σε µπλοκ του δίσκου.
Ο παράγοντας οµαδοποίησης bfr ενός αρχείου είναι (το
µέσο) πλήθος εγγραφών του αρχείου που αποθηκεύονται
σε ένα µπλοκ.
Ένα αρχείο µπορεί να έχει εγγραφές σταθερού µήκους ή
µεταβλητού µήκους.
6
Αρχεία Εγγραφών(συνεχ.)
Οι εγγραφές των αρχείων µπορεί να είναι µη εκτεινόµενες ή
εκτεινόµενες
Μη εκτεινόµενες: καµιά εγγραφή δεν µπορεί να εκτείνεται σε δύο
µπλοκ
Εκτεινόµενες: µια εγγραφή µπορεί να αποθηκευθεί σε
περισσότερα από ένα µπλοκ
Τα φυσικά µπλοκ του δίσκου που διατίθενται για τις εγγραφές ενός
αρχείου µπορεί να είναι συνεχόµενα, συνδεδεµένα, ή µε ευρετήριο.
Σε ένα αρχείο µε σταθερού µεγέθους εγγραφές, όλες οι εγγραφές
έχουν την ίδια µορφοποίηση. Συνήθως, για τέτοια αρχεία
χρησιµοποιείται µη εκτεινόµενη οµαδοποίηση.
Αρχεία µε µεταβλητού µήκους εγγραφές απαιτούν την αποθήκευση
επιπλέον πληροφοριών σε κάθε εγγραφή, όπως χαρακτήρες
διαχωρισµού και τύποι πεδίων.
Συνήθως, για τέτοια αρχεία χρησιµοποιείται εκτεινόµενη
οµαδοποίηση.
Πράξεις σε αρχεία
Οι τυπικές πράξεις στα αρχεία περιλαµβάνουν:
OPEN: Ετοιµάζει το αρχείο για προσπέλαση, και δηµιουργεί ένα δείκτη που αναφέρεται
σε µια τρέχουσα του αρχείου κάθε χρονική στιγµή.
FIND: Αναζητεί την πρώτη εγγραφή ενός αρχείου που ικανοποιεί µια συνθήκη, και την
καθιστά τρέχουσα εγγραφή του αρχείου.
FINDNEXT: Αναζητεί την επόµενη εγγραφή του αρχείου (από την τρέχουσα) που
ικανοποιεί κάποια συνθήκη, και την καθιστά τρέχουσα εγγραφή του αρχείου.
READ: Αντιγράφει την τρέχουσα εγγραφή του αρχείου σε µια µεταβλητή του
προγράµµατος.
INSERT: Εισάγει µια νέα εγγραφή στο αρχείο & και την καθιστά τρέχουσα.
DELETE: ∆ιαγράφει την τρέχουσα εγγραφή από το αρχείο, συνήθως σηµαδεύοντας την
εγγραφή για να δείξει ότι δεν ισχύει πλέον.
MODIFY: Τροποποιεί τις τιµές κάποιων πεδίων της τρέχουσας εγγραφής.
CLOSE: Τερµατίζει την προσπέλαση στο αρχείο.
REORGANIZE: Αναδιοργανώνει τις εγγραφές του αρχείου.
Για παράδειγµα, διαγράφονται φυσικά από το αρχείο οι εγγραφές που έχουν σηµαδευτεί
σαν διαγραµµένες ή δηµιουργείται µια νέα οργάνωση των εγγραφών του αρχείου.
READ_ORDERED: ∆ιάβασε τα µπλοκ του αρχείου µε σειρά τιµής συγκεκριµένου
πεδίου.
7
Μη Ταξινοµηµένα Αρχεία
Ονοµάζονται επίσης αρχεία σωρού (heap ή pile).
Οι νέες εγγραφές προστίθενται στο τέλος του αρχείου.
Για την αναζήτηση µιας εγγραφής είναι απαραίτητη µια
γραµµική αναζήτηση των εγγραφών του αρχείου.
Αυτό κατά µέσο όρο απαιτεί διάβασµα και
αναζήτηση των µισών µπλοκ του αρχείου, και
εποµένως έχει µεγάλο κόστος.
Η εισαγωγή εγγραφών είναι πολύ αποτελεσµατική.
Η ανάγνωση των εγγραφών µε συγκεκριµένη σειρά
κάποιου πεδίου απαιτεί ταξινόµηση του αρχείου
Ταξινοµηµένα Αρχεία
Λέγονται και σειριακά αχεία.
Οι εγγραφές στο αρχείο ταξινοµηµένες µε βάση την τιµή ενός πεδίου
διάταξης.
Η εισαγωγή είναι ακριβή: οι εγγραφές πρέπει να εισαχθούν στη σωστή σειρά.
Για βελτίωση της απόδοσης της εισαγωγής συνηθίζεται να υπάρχει ένα
µη ταξινοµηµένο αρχείο για τις νέες εγγραφές, αρχείο υπερχείλισης ή
δοσοληψιών (overflow ή transaction)· αυτό περιοδικά συγχωνεύεται µε το
κυρίως ταξινοµηµένο αρχείο.
Για αναζήτηση µιας εγγραφής µε τιµή του πεδίου διάταξης µπορεί να
χρησιµοποιηθεί δυαδική αναζήτηση.
Αυτό απαιτεί, κατά µέσο όρο, ανάγνωση και αναζήτηση log2 των µπλοκ
του αρχείου, µια βελτίωση σε σχέση µε τη γραµµική αναζήτηση.
Η ανάγνωση των εγγραφών µε την σειρά του πεδίου διάταξης είναι πολύ
αποτελεσµατική.
8
Ταξινοµηµένα Αρχεία(συν.)
9
Αρχεία Κατακερµατισµού
Ο κατακερµατισµός για αρχεία στο δίσκο ονοµάζεται Εξωτερικός
Κατακερµατισµός
Τα µπλοκ του αρχείου χωρίζονται σε M ίσου µεγέθους κάδους,
αριθµηµένους κάδος0, κάδος1, ..., κάδοςM-1.
Τυπικά, ένας κάδος αντιστοιχεί σε ένα (ή καθορισµένο πλήθος) µπλοκ
δίσκου.
Ένα από τα πεδία του αρχείου καθορίζεται να είναι το κλειδί
κατακερµατισµού του αρχείου.
Η εγγραφή µε κλειδί κατακερµατισµού K αποθηκεύεται στον κάδο i, όπου
i=h(K), και h είναι η συνάρτηση κατακερµατισµού.
Η αναζήτηση στο κλειδί κατακερµατισµού είναι πολύ αποδοτική.
Συµβαίνουν συγκρούσεις όταν µια νέα εγγραφή απεικονίζεται σε ένα κάδο
που είναι ήδη γεµάτος.
Για αποθήκευση τέτοιων εγγραφών υπάρχει ένα αρχείο υπερχείλισης.
Αρχεία Κατακερµατισµού(συν.)
Υπάρχουν διάφοροι µέθοδοι επίλυσης των συγκρούσεων,
συµπεριλαµβανοµένων των:
Ανοικτή διεθυνσιοδότηση: Ξεκινώντας από την κατειληµµένη θέση που
προσδιορίζεται από τη διεύθυνση κατακερµατισµού, το πρόγραµµα
ελέγχει τις διαδοχικές θέσεις στη σειρά µέχρι να βρεθεί µια
αχρησιµοποίητη (κενή) θέση.
Αλυσιδωτή σύνδεση: Για τη µέθοδο αυτή διατηρούµε περιοχές θέσεων
υπερχείλισης, συνήθως επεκτείνοντας τον πίνακα µε έναν αριθµό θέσεων
υπερχείλισης. Eπιπλέον, σε κάθε θέση εγγραφής προστίθεται ένα πεδίο
δείκτη. Mια σύγκρουση επιλύεται τοποθετώντας τη νέα εγγραφή σε µια
αχρησιµοποίητη θέση υπερχείλισης και θέτοντας ως τιµή του δείκτη της
κατειληµµένης θέσης κατακερµατισµού τη διεύθυνση αυτής της θέσης
υπερχείλισης.
Πολλαπλός κατακερµατισµός: ο πρόγραµµα εφαρµόζει µια δεύτερη
συνάρτηση κατακερµατισµού αν η πρώτη οδηγεί σε σύγκρουση. Aν
συµβεί πάλι σύγκρουση το πρόγραµµα χρησιµοποιεί ανοικτή
διευθυνσιοδότηση ή εφαρµόζει µια τρίτη συνάρτηση κατακερµατισµού και
στη συνέχεια χρησιµοποιεί ανοικτή διευθυνσιοδότηση αν είναι απαραίτητο
.
10
Αρχεία Κατακερµατισµού(συν.)
Αρχεία Κατακερµατισµού(συν.)
Για ελάττωση των εγγραφών υπερχείλισης, τυπικά ένα
αρχείο κατακερµατισµού διατηρείται hash κατά 70-80%
γεµάτο.
Η συνάρτηση κατακερµατισµού h θα πρέπει να κατανέµει
οµοιόµορφα τις εγγραφές στους κάδους
∆ιαφορετικά, θα αυξάνει ο χρόνος αναζήτησης επειδή θα
υπάρχουν πολλές εγγραφές υπερχείλισης.
Τα βασικά µειονεκτήµατα του στατικού εξωτερικού
κατακερµατισµού:
Ο προκαθορισµένος αριθµός κάδων M είναι πρόβληµα αν
το πλήθος των εγγραφών µεγαλώνει ή συρρικνώνεται.
Προσπέλαση µε βάση τη διάταξη στο κλειδί
κατακερµατισµού είναι µη αποτελεσµατική (απαιτεί
ταξινόµηση των εγγραφών).
11
Αρχεία Κατακερµατισµού - ∆ιαχείριση
Υπερχείλισης
12
∆υναµικά και επεκτεινόµενα αρχεία
κατακερµατισµού(συν.)
Τα ευρετήρια µπορούν να αποθηκευθούν στο δίσκο,
επεκτείνονται ή συρρικνώνονται δυναµικά.
Οι καταχωρήσεις ευρετηρίου δείχνουν σε µπλοκ δίσκου που
περιέχουν τις αποθηκευµένες εγγραφές.
Μια εισαγωγή σε γεµάτο µπλοκ δίσκου προκαλεί
διάσπαση του µπλοκ σε δύο και οι εγγραφές
αναδιανέµονται µεταξύ των δύο µπλοκ.
Γίνεται κατάλληλη ενηµέρωση του ευρετηρίου.
Ο δυναµικός και ο επεκτατός κατακερµατισµός δεν
χρειάζονται περιοχή υπερχείλισης.
Ο γραµµικός κατακερµατισµός χρειάζεται περιοχή
υπερχείλισης αλλά δεν χρειάζεται και ευρετήριο.
Τα µπλοκ διασπώνται µε γραµµική σειρά όπως επεκτείνεται
το αρχείο.
Επεκτατός κατακερµατισµός
13
Παραλληλισµός στην προσπέλαση
των δίσκων µε τεχνολογία RAID.
Η τεχνολογία των µονάδων αποθήκευσης πρέπει να κάνει
βήµατα για να προφθάσει σε απόδοση και αξιοπιστία την
τεχνολογία των επεξεργαστών.
Μια σηµαντική πρόοδο στην τεχνολογία των
δευτερευουσών µονάδων αποθήκευσης εκπροσωπεί η
ανάπτυξη RAID, που αρχικά σήµαινε Redundant Arrays
of Inexpensive Disks.
Ο βασικός στόχος του RAID είναι να αντισταθµίσει την
τεράστια διαφορά βελτίωσης της απόδοσης των δίσκων
έναντι αυτής της µνήµης και των µικροεπεξεργαστών.
14
RAID Τεχνολογία (συν.)
Έχουν ορισθεί διάφορες οργανώσεις raid που βασίζονται σε
διαφορετικούς συνδυασµούς των δύο παραγόντων της λεπτότητας
διαχωρισµού των δεδοµένων και του πρότυπου που χρησιµοποιείται
για τον υπολογισµό των πλεοναζουσών πληροφοριών.
Το Raid επιπέδου 0 δεν έχει πλεονάζοντα δεδοµένα και εποµένως έχει
την καλύτερη απόδοση εγγραφής µε κίνδυνο απώλειας δεδοµένων.
Το Raid επιπέδου 1 χρησιµοποιεί κατοπτρικούς δίσκους.
Το Raid επιπέδου 2 χρησιµοποιεί πλεονασµούς µνήµης
χρησιµοποιώντας κώδικες Hamming, που περιέχουν δυαδικά ψηφία
ισοτιµίας για διακριτά υποσύνολα επικαλυπτόµενων συνιστωσών . Το
επίπεδο 2 περιλαµβάνει και εξακρίβωση και διόρθωση λαθών.
Το Raid επιπέδου 3 χρησιµοποιεί ένα δίσκο ισοτιµίας και βασίζεται στον
ελεγκτή του δίσκου για να βρει ποιος δίσκος έχει αποτύχει.
Τα Raid επίπεδα 4 και 5 χρησιµοποιούν διαχωρισµό επιπέδου µπλοκ, µε
το επίπεδο 5 να κατανέµει τα δεδοµένα και τις πληροφορίες ισοτιµίας σε
όλους τους δίσκους.
Το Raid επίπεδο 6 εφαρµόζει το αποκαλούµενο P + Q σχήµα
πλεονασµού χρησιµοποιώντας τους Reed-Soloman κώδικές για
προστασία επιτρέποντας µέχρι το πολύ δύο δίσκοι να είναι σε αποτυχία
χρησιµοποιώντας δύο πλεονάζοντες δίσκους.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση,
∆ίαβλος, Επιµ. Μ.Χατζόπουλος ∆ιαφάνεια 13- 29
15
Χρήση της RAID
Τεχνολογίας (συν.)
16
∆ίκτυα Περιοχών Αποθήκευσης (SAN)
Οι απαιτήσεις για µεγάλους χώρους αποθήκευσης έχουν αυξηθεί
σηµαντικά τελευταία.
Οι οργανισµοί αισθάνονται την ανάγκη να περάσουν από τη
λειτουργία ενός στατικού καθορισµένου κέντρου δεδοµένων σε πιο
ευέλικτες και δυναµικές υποδοµές για την επεξεργασία πληροφοριών.
Εποµένως προσανατολίζονται σε of Storage Area Networks (SANs).
Σε ένα SAN, οι περιφερειακές µονάδες αποθήκευσης
διαµορφώνονται σαν κόµβοι σε ένα δίκτυο υψηλής ταχύτητας και
µπορούν να προσαρτώνται και να αποπροσαρτώνται από
διακοµιστές κατά πολύ ευέλικτο τρόπο.
Αυτό επιτρέπει σε συστήµατα αποθήκευσης να βρίσκονται σε
µεγαλύτερες αποστάσεις από διακοµιστές να υποστηρίζουν
διαφορετικές επιλογές απόδοσης και διασύνδεσης.
17
Σύνοψη
Μονάδες Αποθήκευσης ∆ίσκων
Αρχεία Εγγραφών
Πράξεις σε Αρχεία
Μη ταξινοµηµένα Αρχεία
Ταξινοµηµένα Αρχεία
Αρχεία Κατακερµατισµού
Τεχνικές επεκτατού και δυναµικού
κατακερµατισµού
RAID Τεχνολογία
18
Κεφάλαιο 14
Δομές Ευρετηρίων για Αρχεία
Θα μιλήσουμε για
Τύποι Ταξινομημένων Ευρετηρίων ενός επιπέδου
Πρωτεύοντα Ευρετήρια
Ευρετήρια Συστάδες
Δευτερεύοντα Ευρετήρια
Ευρετήρια Πολλών Επιπέδων
Δυναμικά Ευρετήρια Πολλών Επιπέδων με χρήση
B-Δένδρων και B+-Δένδρων
Ευρετήρια σε Πολλαπλά Κλειδιά
Πρωτεύον Ευρετήριο
Ευρετήριο Συστάδων
Δευτερεύον Ευρετήριο
YEA1412 …
YEΑ1412 FIAT PUNTO
YYZ5667 SEAT IBIZA
…
XXB2468 OPEL OMEGA
Ένα ευρετήριο
συστάδα στο
πεδίο
ταξινόμησης
ΚΩΔ_ΤΜΗΜ που
δεν είναι κλειδί
στο αρχείο
ΕΡΓΑΖΟΜΕΝΟΣ.
Ευρετήριο Α122122
Α122122
A122122 Α122156
Α122156
Β345345 Α122156
Β345345
Β345345
Β345345
Ευρετήριο Α122122
Α122122
A122122 δείκτης μπλοκ null
Α122156
Α122156
Α122156
Α122156
δείκτης μπλοκ
Α122156
Δομή Ευρετηρίου
Καταχωρήσεις
Ευρετηρίου
Καταχωρήσεις
Ευρετηρίου
Επαναλαμβανόμενο
πεδίο με τις
διευθύνσεις
Τιμή_Πεδίου Διευθύνσεις_Μπλοκ
Τιμή Δείκτης
Πεδίο Μπλοκ
1
2
1 μπλοκ
Στη μνήμη 1-1000000
100
μπλοκ 1-10000 10001-20000 … 999001-1000000
10000
μπλοκ 1-100 101-200 … 9999901-10000000
Αρχείο δεδομένων
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση,
Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14- 32
p0 k1 p1 k2 p2 … km pm
(ki, pi)
Σελίδες δεδομένων
Σελίδες Ευρετηρίου
Σελίδες Υπερχείλισης
Ρίζα
40
51 63
20 33
10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*
Ενδιάμεσοι 40
κόμβοι
51 63
20 33
10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*
Υπερχείλιση
Ενδιάμεσοι 40
κόμβοι
51 63
20 33
10 15 20 27 33 37 40 46 55 63
48 41
23
Υπερχείλιση
K1, k2 kn
Αρχείο δεδομένων
Ενδιάμεσοι κόμβοι
...
... ...
... ... ... ...
Μ.Χατζόπουλος 1
Α
Δ
Β Γ
Η Θ Ι
Ε Ζ
Λ
Κ
Μ.Χατζόπουλος 2
Μ.Χατζόπουλος 3
K1<K2<…<K q-1
P1 K1 … Ki-1 Pi Ki … K q-1 Pq
X X X
Μ.Χατζόπουλος 4
50 70
55 60 90
20 40
75 85 95 100
8 10 25 35 45
Μ.Χατζόπουλος 5
Εισαγωγή 48
50 70
55 60 90
20 40
75 85 95 100
8 10 25 35 45 48
Μ.Χατζόπουλος 6
Εισαγωγή 74
50 70
55 60 90
20 40
75 85 95 100
8 10 25 35 45 48
74
Μ.Χατζόπουλος 7
Όμως έτσι μπορεί να μην έχουμε καλή απόδοση ενώ θα μπορούσαμε
να έχουμε
50 70
55 60 75 90
20 40
8 10 25 35 45 48 74 85 95 100
Μ.Χατζόπουλος 8
(m-1)+m(m-1)+m2(m-1)+…mh-1(m-1)=(m-1)(1+m+m2+…+mh-1)
=mh-1
h=logm(N+1)
Μ.Χατζόπουλος 9
Όμως επειδή η χρήση είναι δυναμική δεν είναι πρακτικό με κάθε
εισαγωγή και διαγραφή να γίνεται αναδιοργάνωση του δένδρου ώστε να
έχω την καλλίτερη δυνατή απόδοση
Μ.Χατζόπουλος 10
Β-δένδρο τάξεως p
Μ.Χατζόπουλος 11
Κόμβος του Β-δένδρου
Δείκτης δείκτης
Δείκτης
δεδομένων δεδομένων
δεδομένων
X
Δείκτης X
X δένδρου
Kq-1<X
Ki-1<X<Ki
X<K1
Μ.Χατζόπουλος 12
50
30 80
60 70 90 100
10 20 40
Μ.Χατζόπουλος 13
50
30 80
60 70 90 100
10 20 40 45 48
Μ.Χατζόπουλος 14
50
80 90 130
30
Μ.Χατζόπουλος 15
50
80 90
30 48
60 70 85 100
10 20 40
Μ.Χατζόπουλος 16
Μ.Χατζόπουλος 17
50
30 80
60 70 90 100
10 20 40
Μ.Χατζόπουλος 18
Εισαγωγή του 75
50
30 70 80
60 75 90 100
10 20 40
Μ.Χατζόπουλος 19
Εισαγωγή του 55
50
30 70 80
55 60 75 90 100
10 20 40
Μ.Χατζόπουλος 20
Εισαγωγή του 57
50 70
30 57 80
75 90 100
10 20 40 55 60
70
57 57 70 80
55 57 60
57 80
55 60
Μ.Χατζόπουλος 21
Εισαγωγή του 95
50 70
30 57 80 95
40 55 60 75 90 100
10 20
Μ.Χατζόπουλος 22
Εισαγωγή του 85
50 70
30 57 80 95
40 55 60 75 85 90 100
10 20
Μ.Χατζόπουλος 23
Εισαγωγή του 87 70
50 87
30 57 80 95
10 20 40 55 60 75 85 90 100
87 50 70 87
85 87 90 87 80 87 95
70
85 90 80 95
50 87
Μ.Χατζόπουλος 24
Μ.Χατζόπουλος 25
Έστω το Β-δένδρο τάξεως 5 (δηλαδή από 2 μέχρι 4 κλειδιά σε κάθε
κόμβο εκτός της ρίζας)
90
10 20 40 50 70 75 80 100 110 130 140 150 170 180 200 210 230 240 250
Μ.Χατζόπουλος 26
10 20 40 50 70 75 80 100 110 130 140 150 170 180 200 210 230 240
Μ.Χατζόπουλος 27
Διαγραφή του 50
90
10 20 40 60 75 80 100 110 130 140 150 170 180 200 210 230 240
Μ.Χατζόπουλος 28
Διαγραφή του 20
120
10 30 40 60 75 80 100 110 130 140 150 170 180 200 210 230 240
10 30 40 60 75 80
Μ.Χατζόπουλος 29
Διαγραφή από εσωτερικό κόμβο
Μ.Χατζόπουλος 30
10 30 40 60 75 80 100 110 130 140 170 180 200 210 230 240
Μ.Χατζόπουλος 31
Διαγραφή του 90
120
10 30 40 70 75 100 110 130 140 170 180 200 210 230 240
Μ.Χατζόπουλος 32
190 220
60 110
Μ.Χατζόπουλος 33
Διαγραφή του 190
Μ.Χατζόπουλος 34
Μ.Χατζόπουλος 35
Όμως έχουμε h≥logm(N+1)
Μ.Χατζόπουλος 36
(p*P)+((p-1)*(Pr+V))≤B
Μ.Χατζόπουλος 37
Με αυτά τα δεδομένα για ένα αρχείο με 1000000 εγγραφές
το ύψος του δένδρου είναι 2 ή 3.
Ή ακόμη 94143178827
3<=h<=8
Μ.Χατζόπουλος 38
Β+δένδρα
Τα Β+δένδρα και οι παραλλαγές τους είναι η κυρίως δομή που
χρησιμοποιούν τα εμπορικά συστήματα διαχείρισης βάσεων
δεδομένων. Σε αντίθεση με τα Β-δένδρα όπου κάθε τιμή του
πεδίου αναζήτησης μια φορά σε κάποιο επίπεδο του δένδρου στα
Β+δένδρα οι δείκτες δεδομένων αποθηκεύονται μόνο στα φύλα.
Επομένως οι κόμβοι φύλα διαφέρουν από τους εσωτερικούς
κόμβους.
Μ.Χατζόπουλος 39
Ορισμός Β+δένδρου
(Εσωτερικοί κόμβοι)
Μ.Χατζόπουλος 40
Ορισμός Β+δένδρου
(Κόμβοι φύλα)
Μ.Χατζόπουλος 41
Καταχωρήσεις ευρετηρίου
Μ.Χατζόπουλος 42
P1 K1 … Ki-1 Pi Ki … Kq-1 Pq
δείκτης δένδρου
Μ.Χατζόπουλος 43
Δομή κόμβου φύλου
Μ.Χατζόπουλος 44
13 17 24 30
2 3 5 7 14 16 19 20 22 24 27 29 33 34 38 39
Μ.Χατζόπουλος 45
Υπολογισμός της τάξης p του Β+δένδρου
(p*P)+((p-1)*V)≤B
Μ.Χατζόπουλος 46
Θα πρέπει να ισχύει:
(pleaf*(Pr+V))+P ≤B
(pleaf*(7+9))+6 ≤512
(16pleaf) ≤506
Δηλαδή pleaf=31
Μ.Χατζόπουλος 47
Β+δένδρο βαθμού 5 έστω ότι και ο κόμβος φύλο είναι τάξεως 5
14 52 79 102
2 9 11 14 15 17 52 55 56 60 79 80 83 104 110
Μ.Χατζόπουλος 48
Εισαγωγή του 66
60
14 52 79 102
2 9 11 14 15 17 52 55 56 60 66 79 80 83 104 110
Μ.Χατζόπουλος 49
Η διαγραφή από ένα Β+δένδρο είναι αρκετά πολύπλοκη
γιατί έχουμε τους περιορισμούς τόσο στα φύλα όσο και
στους εσωτερικούς κόμβους να μην πέσουμε κάτω από
την επιτρεπόμενη χρήση του κόμβου.
Μ.Χατζόπουλος 50
72 83
Μ.Χατζόπουλος 51
Διαγραφή 102
72 83
Μ.Χατζόπουλος 52
Διαγραφή 83
63 83
Μ.Χατζόπουλος 53
Διαγραφή 160
63 83
60 63 66 79 110 115
Μ.Χατζόπουλος 54
Διαγραφή 79
66
60 63 66 110 115
Μ.Χατζόπουλος 55
Τα Β-δένδρα μπορούν να χρησιμοποιηθούν και σαν
δευτερεύοντα ευρετήρια (σε πεδία που δεν είναι κλειδιά).
Στην περίπτωση αυτή μπορούμε να χρησιμοποιήσουμε
μια τεχνική όμοια με αυτή της υπερχείλισης. Κάθε τιμή
στο φύλο δείχνει σε μια λίστα με τις διευθύνσεις των
εγγραφών με αυτή την τιμή.
Συνήθως όμως γίνεται μια διαφορετική υλοποίηση. Τις
διπλές τιμές τις αντιμετωπίζουμε σαν απλές τιμές και για
την ανάκτηση μιας τιμής ξεκινάμε από την πιο αριστερή
τιμή και ακολουθούμε τα φύλα και πιθανόν και τους
δείκτες επόμενου.
Επίσης μπορεί να χρησιμοποιηθεί συνδυασμός κλειδιού
διεύθυνσης. Η λύση αυτή οδηγεί σε ευρετήρια μοναδικών
τιμών.
Μ.Χατζόπουλος 56
Προθεματικά Β-δένδρα
Μ.Χατζόπουλος 57
Ν
Μ.Χατζόπουλος 58
Μ.Χατζόπουλος 59
Βήματα ομαδικής φόρτωσης
• Ταξινόμηση των εγγραφών που θα εισαχθούν με βάση
το κλειδί αναζήτησης k (εφόσον είναι ζεύγος κλειδί,
δείκτης ταξινόμηση δεν σημαίνει ταξινόμηση του
αρχείου)
• Ξεκινάμε με μια κενή σελίδα σαν ρίζα και εισάγουμε
ένα δείκτη στην πρώτη σελίδα των ταξινομημένων
καταχωρήσεων. Η καταχώρηση είναι ελάχιστη τιμή
κλειδιού στη σελίδα και δείκτης σελίδας.
• Συνεχίζουμε μέχρι να γεμίσει η ρίζα.
• Στη συνέχεια έχουμε διάσπαση της ρίζας κοκ.
Μ.Χατζόπουλος 60
Μ.Χατζόπουλος 61
6 10
Μ.Χατζόπουλος 62
10
6 12
Μ.Χατζόπουλος 63
VSAM (Virtual Storage Access Method) αρχεία
Μ.Χατζόπουλος 64
Μ.Χατζόπουλος 65
Ομάδα καταλόγων
Μ.Χατζόπουλος 66
Μ.Χατζόπουλος 67
Υποθέστε ότι η περιοχή ελέγχου χωράει 4 εγγραφές
Ομάδα
Καταλόγων 125 156 203 …
Περιοχές Ελέγχου
Μ.Χατζόπουλος 68
Εισαγωγή 105
125 156 203 …
Περιοχές Ελέγχου
Μ.Χατζόπουλος 69
Εισαγωγή 108
125 156 203 …
Περιοχές Ελέγχου
Μ.Χατζόπουλος 70
Διαγραφή 120
125 156 203 …
Περιοχές Ελέγχου
Μ.Χατζόπουλος 71
Τα εμπορικά συστήματα
Μ.Χατζόπουλος 72
Μ.Χατζόπουλος 73
Ευρετήρια σε πολλαπλά κλειδιά
και το c σταθερά
Μ.Χατζόπουλος 74
Τι μπορούμε να κάνουμε
Μ.Χατζόπουλος 75
• Αν υπάρχει ευρετήριο και στα δύο πεδία τότε μπορούμε
να χρησιμοποιήσουμε και τα δύο ευρετήρια και η τομή
τους είναι οι εγγραφές που αναζητούμε. Εναλλακτικά
μπορούμε να χρησιμοποιήσουμε το ευρετήριο που θα
δώσει το μικρότερο σύνολο εγγραφών και στη συνέχεια
να εξετάσουμε τις εγγραφές αυτές αν πληρούν και την
άλλη συνθήκη.
• Τέλος μπορούμε να συντηρούμε ευρετήρια σε
συνδυασμό κλειδιών (σύνθετα κλειδιά).
Μ.Χατζόπουλος 76
Δικτυωτό Αρχείο
y
Μ.Χατζόπουλος 77
Μ.Χατζόπουλος 78
Μ.Χατζόπουλος 79
Εξωτερική Ταξινόμηση
Μ.Χατζόπουλος 1
Μ.Χατζόπουλος 3
2,3 1,2
4,4 3,5
6,7 6
8,9
1,2
2,3
3,4
4,5
6,6
7,8
Μ.Χατζόπουλος
9 4
function rmerge(X, l, m, n);
// (Xl,.. Xm) και (Xm+1,…Xn) είναι ταξινομημένα (με κλειδιά τα xi) και
// η συγχώνευση παράγει στο Ζ στις θέχσεις (Ζι,…Ζn)
{ k ← l; i ← l; j ← m+1;
while ((i<=m) && (j<=n)) {
if xi<= xj {Zk=Xi; i++}
else {Zk=Xj; j++}
k++ }
if i>m { (Zk,…Zn)←(Xj,…Xn) }
else {(Zk,…Zn)←(Xj,…Xm) }
(Xl,…Xn)←(Zl,…Zn)
}
Μ.Χατζόπουλος 5
Μ.Χατζόπουλος 6
function msort(X, n)
declare Y(n)
{l=1; /* το μέγεθος των υποαρχείων */
while (l<n) {mpass(X,Y,n, l);
l=2*l;
mpass(Y,X,n.l);
l=2*l }
}
Μ.Χατζόπουλος 7
Φάση Ταξινόμησης
set i←1;
j←b; {το μέγεθος του αρχείου σε μπλοκ}
k←nb; {το μέγεθος του μπαφερ σε μπλοκ}
m←(j/k);
{φάση της ταξινόμησης}
while (i<=m)
do {
διάβασε τα επόμενα k μπλοκ του αρχείου στο μπαφερ ή αν απομένουν
λιγότερα από k μπλοκ διάβασε τα μπλοκ που απομένουν
ταξινόμησε τις εγγραφές στο μπαφερ και να γραφούν σαν προσωρινό
υποαρχείο;
i←i+1;
}
Μ.Χατζόπουλος 8
Φάση Συγχώνευσης
set i←1;
p←logk-1m;
j←m;
while (i<=p)
do {
n←1;
q←(j/(k-1)); {πλήθος υποαρχείων που θα γραφούν στο πέρασμα αυτό}
while (n<=q)
do {
διάβασε τα επόμενα k-1 υποαρχεία (από το προηγούμενο πέρασμα) ένα μπλοκ τη
φορά;
συνένωση και γράψιμο σαν νέο υποαρχείο;
n←n+1;
} j←q;
i←i+1;
}
Μ.Χατζόπουλος 9
INPUT 1
OUTPUT
INPUT 2
Μ.Χατζόπουλος 10
Εξωτερική ταξινόμηση
INPUT 1
INPUT 2
. OUTPUT
.
INPUT Β-1
Μ.Χατζόπουλος 12
Φάση Ταξινόμησης
nR=(b/ nB)
Μ.Χατζόπουλος 13
(logd(nR))
Και στην περίπτωση δυαδικής συγχώνευσης:
(log2(nR))
Μ.Χατζόπουλος 14
Συνολικό κόστος
Το κόστος για την δημιουργία των ταξινομημένων
σειρών θα είναι:
2*b
Για την συγχώνευση:
2*b*(logd(nR))
Επομένως συνολικά:
2*b+2*b*(logd(nR))
Μ.Χατζόπουλος 15
Πλήθος συγχωνεύσεων
b nB=3 nB=5 nB=9 nB=17 nB=129 nB=257
100 7 4 3 2 1 1
1000 10 5 4 3 2 2
10000 13 7 5 4 2 2
100000 17 9 6 5 3 3
1000000 20 10 7 5 3 3
10000000 23 12 8 6 4 3
100000000 26 14 9 7 4 4
1000000000 30 15 10 8 5 4
Μπορώ να κάνω κάτι καλλίτερο;
Μ.Χατζόπουλος 17
12 12
18 22 18 22
34 25 26 38 34 28 26 38
42 55 35 27 42 55 35 27
Αυτό είναι
Αυτό δεν είναι
Μ.Χατζόπουλος 18
Έστω ο πίνακας Α που έχει την ιδιότητα του σωρού ταξινόμησης από
το στοιχείο i+1 μέχρι το τέλος m
procedure pilesort(A, i, n)
{
if i<=n/2 then
{
j:=2*i; if j<n then
{if A[j+1]<A[j] then j:=j+1}
if A[i]>A[j] then {A[i]↔]A[j]; pilesort(A,j,n)}
}
else exit
}
Μ.Χατζόπουλος 19
ΜΠΛΟΚ ΕΞΟΔΟΥ
last
m θέσεις μνήμης
ΜΠΛΟΚ ΕΙΣΟΔΟΥ
Μ.Χατζόπουλος 20
Αρχική εισαγωγή στοιχείων (δημιουργία αρχικού σωρού
ταξινόμησης
Μ.Χατζόπουλος 21
Μ.Χατζόπουλος 23
Τελευταίο 24
24
Έξοδος
24
28
26
30 40
35 32
42
52 37 44
38 42 36 38
41 12 18 49 Είσοδος
Μ.Χατζόπουλος 24
Τελευταίο 24 26
26
Έξοδος
26
28
32
30 40
35 36
42
52 37 44
38 42 41 38
12 18 49 Είσοδος
Μ.Χατζόπουλος 25
Τελευταίο 24 26 28
28
Έξοδος
28
30
32
37 40
35 36
12
52 42 44
38 42 41 38
18 49 Είσοδος
Μ.Χατζόπουλος 26
Τελευταίο 24 26 28 30
30
Έξοδος
30
37
32
42 40
35 36
12
52 44 18
38 42 41 38
49 Είσοδος
Μ.Χατζόπουλος 27
Τελευταίο 32
32
Έξοδος
32
37
35
42 40
38 36
12
52 44 18
49 42 41 38
22 27 55 29 Είσοδος
Μ.Χατζόπουλος 28
Τελευταίο 32 35
35
Έξοδος
35
37
36
42 40
38 38
12
52 22 18
49 42 41 44
27 55 29 Είσοδος
Μ.Χατζόπουλος 29
Τελευταίο 32 35 36
36
Έξοδος
36
37
38
42 40
42 38
12
27 22 18
49 52 41 44
55 29 Είσοδος
Μ.Χατζόπουλος 30
Τελευταίο 32 35 36 37
37
Έξοδος
37
40
38
42 55
42 38
12
27 22 18
49 52 41 44
29 Είσοδος
Μ.Χατζόπουλος 31
Τελευταίο 38
38
Έξοδος
38
40
38
42 55
42 41
12
27 22 18
49 52 44 29
35 45 19 27 Είσοδος
Μ.Χατζόπουλος 32
Τελευταίο 38 38
38
Έξοδος
38
40
42
42 55
42 44
12
27 22 18
49 52 35 29
45 19 27 Είσοδος
Μ.Χατζόπουλος 33
Τελευταίο 38 38 40
40
Έξοδος
40
42
42
45 55
42 44
12
27 22 18
49 52 35 29
19 27 Είσοδος
Μ.Χατζόπουλος 34
Τελευταίο 38 38 40 42
42
Έξοδος
42
42
42
45 55
49 44
12
27 22 18
52 19 35 29
27 Είσοδος
Μ.Χατζόπουλος 35
Τελευταίο 42
42
Έξοδος
42
42
44
45 55
49 52
12
27 22 18
27 19 35 29
38 68 41 32 Είσοδος
Μ.Χατζόπουλος 36
Τελευταίο 42 42
42
Έξοδος
42
45
44
55 12
49 52
38
27 22 18
27 19 35 29
68 41 32 Είσοδος
Μ.Χατζόπουλος 37
Τελευταίο 42 42 44
44
Έξοδος
44
45
49
55 12
68 52
38
27 22 18
27 19 35 29
41 32 Είσοδος
Μ.Χατζόπουλος 38
Τελευταίο 42 42 44 45
45
Έξοδος
45
55
49
22 12
68 52
38
27 41 18
27 19 35 29
32 Είσοδος
Μ.Χατζόπουλος 39
Τελευταίο 49
49
Έξοδος
49
55
52
22 12
68 29
38
27 41 18
27 19 35 32
54 8 39 Είσοδος
Μ.Χατζόπουλος 40
Τελευταίο 49 52
52
Έξοδος
52
55
54
22 12
68 29
38
27 41 18
27 19 35 32
8 39 Είσοδος
Μ.Χατζόπουλος 41
Τελευταίο 49 52 54
54
Έξοδος
54
55
68
22 12
8 29
38
27 41 18
27 19 35 32
39 Είσοδος
Μ.Χατζόπουλος 42
Τελευταίο 49 52 54 55
55
Έξοδος
55
12
68
22 18
8 29
38
27 41 39
27 19 35 32
59 95 34 57 Είσοδος
Μ.Χατζόπουλος 43
Τελευταίο 59
59
Έξοδος
59
12
68
22 18
8 29
38
27 41 37
27 19 35 32
95 34 57 Είσοδος
Μ.Χατζόπουλος 44
Τελευταίο 59 68
68
Έξοδος
68
12
95
22 18
8 29
38
27 41 37
27 19 35 32
34 57 Είσοδος
Μ.Χατζόπουλος 45
Τελευταίο 59 68 95
95
Έξοδος
95
12
8
22 18
19 29
38
27 41 37
27 34 35 32
57 Είσοδος
Μ.Χατζόπουλος 46
Τελευταίο 59 68 95
95
Έξοδος
8
12
19
22 18
27 29
38
27 41 37
57 34 35 32
57 Είσοδος
Μ.Χατζόπουλος 47
Τελευταίο 59 68 95
95
12
19
22 18
27 29
38
27 41 37
57 34 35 32
14 7 36 56 Είσοδος
Μ.Χατζόπουλος 48
Τελευταίο 8
12
Έξοδος
12
14
19
22 18
27 29
38
27 41 37
57 34 35 32
7 36 56 Είσοδος
Μ.Χατζόπουλος 49
Τελευταίο 8 12
14
Έξοδος
14
18
19
22 37
27 29
7
27 41 38
57 34 35 32
36 56 Είσοδος
Μ.Χατζόπουλος 50
• Όσο λιγότερες ταξινομημένες σειρές υπάρχουν τόσο είναι
λιγότερες οι επαναλήψεις
• Για λιγότερες ταξινομημένες σειρές χρειαζόμαστε μεγάλες
αρχικές ταξινομημένες σειρές
• Αποδεικνύεται ότι κατά μέσο όρο ο παραπάνω αλγόριθμος
φτιάχνει αρχικές σειρές μεγέθους 2* nB
• Άλλες τεχνικές για ελαχιστοποίηση του Ι/Ο χρόνου είναι η
χρήση διπλού μπαφερ (που βέβαια μειώνει τον διαθέσιμο
χώρο)
INPUT 1
INPUT 1’
INPUT 2
INPUT 2
OUTPUT
. OUTPUT’
.
INPUT K
INPUT K’
Μ.Χατζόπουλος 52
Η ταξινόμηση αρχείων γενικά κοστίζει
Καταχωρήσεις
Ευρετηρίου
Δομή Ευρετηρίου
Καταχωρήσεις
Ευρετηρίου
Θα μιλήσουμε για
Έννοιες του Σχεσιακού Μοντέλου
Περιορισμοί του Σχεσιακού Μοντέλου και
Σχήματα Σχεσιακών Βάσεων Δεδομένων
Πράξεις Ενημέρωσης και Αντιμετώπιση της
Παραβίασης των Περιορισμών
Κάθε στήλη έχει μια επικεφαλίδα στήλης που δίνει μια ένδειξη της
σημασίας των δεδομένων στη στήλη
Στο τυπικό μοντέλο, η επικεφαλίδα της στήλης ονομάζεται όνομα του
γνωρίσματος (ή απλά γνώρισμα)
Σύνοψη Ορισμών
Μη τυπικοί όροι Τυπικοί όροι
Πίνακας Σχέση
Επικεφαλίδα Σχέσης Γνώρισμα
Όλες οι πιθανές τιμές Πεδίο ορισμού
στήλης
Γραμμή Πλειάδα
ΦΟΙΤΗΤΗΣ
Πλειάδες
Key1 = {ΑρΚυκλοφοριας}
Key2 = {ΑρΠλαισιου}
Και τα δύο είναι υπερκλειδιά της ΑΥΤΟΚΙΝΗΤΟ
Το {ΑρΠλαισιου, Κατασκευαστής} είναι υπερκλειδί αλλά δεν είναι
ένα κλειδί.
Γενικά:
Κάθε κλειδί είναι ένα υπερκλειδί (αλλά δεν ισχύει το αντίστροφο)
Αναφορική Ακεραιότητα
Ένας περιορισμός μεταξύ δύο σχέσεων
Οι προηγούμενοι περιορισμοί αναφέρονται σε μια
σχέση.
Χρησιμοποιούνται για τον προσδιορισμό μιας
συσχέτισης μεταξύ των πλειάδων δύο σχέσεων:
Τη σχέση που αναφέρει και την σχέση που
αναφέρεται.
Περιορισμός Αναφορικής
ακεραιότητας (ή ξένου κλειδιού)
Δήλωση του περιορισμού
Η τιμή στη στήλη (ή τις στήλες) ξένου κλειδιού FK
της σχέσης που αναφέρει R1 μπορεί να είναι
είτε:
(1) μια υπάρχουσα τιμή πρωτεύοντος κλειδιού μιας
αντίστοιχης τιμής πρωτεύοντος κλειδιού PK στην
αναφερόμενη σχέση R2, ή
(2) είναι null.
Στην περίπτωση (2), το FK στην R1 δεν πρέπει
να είναι μέρος του πρωτεύοντος κλειδιού.
Κεφάλαιο 6
Σχεσιακή Άλγεβρα και Σχεσιακός
Λογισμός
σ ΑΡΙΘΤ = 4 (ΕΡΓΑΖΟΜΕΝΟΣ)
Επιλογή των πλειάδων εργαζόμενος με μισθό μεγαλύτερο από
€30,000:
σ ΜΙΣΘΟΣ > 30,000 (ΕΡΓΑΖΟΜΕΝΟΣ)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση,
Διαυλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 6- 8
πολλαπλές πράξεις
Απαραίτητο σε μερικές περιπτώσεις (βλ. την
πράξη JOIN)
Μοναδιαίες σχεσιακές
πράξεις:Μετονομασία (συν.)
Η γενική πράξη μετονομασίας ρ μπορεί να
εκφρασθεί με οποιαδήποτε από τις παρακάτω
μορφές:
ρS (B1, B2, …, Bn )(R) αλλάζει και τα δύο:
Το όνομα της σχέσης σε S, και
Τα ονόματα B1, B1, …..Bn της στήλης(γνώρισμα)
ρS(R) αλλάζει:
Μόνο το όνομα της σχέσης σε S
ρ(B1, B2, …, Bn )(R) αλλάζει:
Μόνο τα ονόματα B1, B1, …..Bn των στηλών
(γνωρισμάτων)
Η τομή συμβολίζεται με ∩
Το αποτέλεσμα της πράξης R ∩ S, είναι μια
σχέση που περιέχει όλες τις πλειάδες που
ανήκουν και στην R και στην S
Τα ονόματα των γνωρισμάτων του
αποτελέσματος θα είναι τα ίδια με τα
ονόματα των γνωρισμάτων της R
Οι δύο σχέσεις τελεστέοι R και S πρέπει να
είναι “συμβατοί προς τον τύπο”
ΠΡΑΓΜ_ΕΞΑΡΤ ← σΑΡ_ΤΑΥΤ=Ε_ΑΡΤΑΥΤ(ΕΞΑΡΤ_ΕΡΓΑΖ )
Παράδειγμα Διαίρεσης
Τ.ΔΙΕΥΘΥΝΤΗΣ=Ε.ΑΡ_ΤΑΥΤ
P.Κ_ΤΜΗΜΑ=Τ.ΚΩΔ_ΤΜΗΜ
E ΕΡΓΑΖΟΜΕΝΟΣ
P.ΤΟΠ_ΕΡΓΟΥ=‘Stafford’ T ΤΜΗΜΑ
EP ΕΡΓΟ
QBE Παραδείγματα
Η παρακάτω ερώτηση λογισμού πεδίων μπορεί να
ελαχιστοποιηθεί διαδοχικά από τον χρήστη όπως :
Ερώτηση :
{uv | (∃ q) (∃ r) (∃ s) (∃ t) (∃ w) (∃ x) (∃ y) (∃ z)
(ΕΡΓΑΖΟΜΝΕΟΣ(qrstuvwxyz) and q=‘John’ and r=‘B’
and s=‘Smith’)}
Σύνοψη Κεφαλαίου
Σχεσιακή Άλγεβρα
Μοναδιαίες σχεσιακές πράξεις
Πράξεις σχεσιακής άλγεβρας από την θεωρία
συνόλων
Δυαδικές σχεσιακές πράξεις
Επιπλέον σχεσιακές πράξεις
Παραδείγματα ερωτήσεων σε σχεσιακή άλγεβρα
Σχεσιακός λογισμός
Σχεσιακός λογισμός πλειάδων
Σχεσιακός λογισμός πεδίων ορισμού
Μ.Χατζόπουλος
Τελικοί Χρήστες
ΕΞΩΤΕΡΙΚΟ ••• Εξωτερική Όψη n
Εξωτερική Όψη 1
ΕΠΙΠΕΔΟ
ΕΝΝΟΙΟΛΟΓΙΚΟ
ΕΝΝΟΙΟΛΟΓΙΚΟ ΣΧΗΜΑ
ΕΠΙΠΕΔΟ
ΕΣΩΤΕΡΙΚΟ
ΕΣΩΤΕΡΙΚΟ ΣΧΗΜΑ
ΕΠΙΠΕΔΟ
Μ.Χατζόπουλος
Έννοιες του Σχεσιακού Μοντέλου
Μ.Χατζόπουλος
31 Πέτρου 8 Πάτρα
ΠΑΡΑΓΓΕΛΙΑ
58 Παππάς 7 Αθήνα
Κ_Προμ Κ_Πρ Ποσοτ
22 Π35 200
Γνωρίσματα
ΠΡΟΙΟΝ 31 Π35 100
31 Π76 150
Κ_Πρ Πρ_Ονομα Χρώμα Βάρος
22 Π14 200
Π35 Οθόνη Γκρι 8
Μ.Χατζόπουλος
Ορισμοί (1)
Μ.Χατζόπουλος
Ορισμοί (2)
Μ.Χατζόπουλος
Εναλλακτικός Ορισμός
Mια σχέση r(R) είναι μια μαθηματική σχέση βαθμού n στα πεδία
ορισμού dom(A1), dom(A2)...,dom(An), που είναι ένα υποσύνολο
του καρτεσιανού γινομένου των πεδίων ορισμού που ορίζουν
την R:
Μ.Χατζόπουλος
Σχήμα Βάσης Δεδομένων
ΠΡΟΜΗΘΕΥΤΗΣ
ΠΡΟΙΟΝ
Κ_Πρ Πρ_Ονομα Χρώμα Βάρος
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ
Μ.Χατζόπουλος
Τύποι Περιορισμών στο Σχεσιακό Μοντέλο
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Περιορισμός Πεδίου Ορισμού
Oι περιορισμοί πεδίου ορισμού καθορίζουν ότι η
τιμή κάθε γνωρίσματος A πρέπει να είναι μία
ατομική τιμή από το πεδίο ορισμού dom(A) αυτού
του γνωρίσματος. Oι τύποι δεδομένων που
συνδέονται με τα πεδία ορισμού συνήθως
περιλαμβάνουν τους καθιερωμένους τύπους
αριθμητικών δεδομένων για ακέραιους (όπως
short integer, integer, long integer) και
πραγματικούς αριθμούς (float και double precision
float). Eπίσης είναι διαθέσιμοι τύποι δεδομένων για
χαρακτήρες, συμβολοσειρές σταθερού και
μεταβλητού μήκους καθώς επίσης και για
ημερομηνία, ώρα, χρονικά σημεία και χρηματικά
ποσά.
Μ.Χατζόπουλος
t1[SK] ≠ t2[SK]
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Περιορισμοί Ακεραιότητας-Αναφορική Ακεραιότητα
Ο περιορισμός αναφορικής ακεραιότητας (referential
integrity constraint) ορίζεται μεταξύ δύο σχέσεων και
χρησιμοποιείται για την διατήρηση της συνέπειας μεταξύ
των πλειάδων των δύο σχέσεων. Ο περιορισμός
αναφορικής ακεραιότητας ορίζει ότι μια πλειάδα μιας
σχέσης που αναφέρεται σε μια άλλη σχέση πρέπει να
αναφέρεται σε μια υπαρκτή πλειάδα της άλλης σχέσης
αυτής.
Για πιο αυστηρό ορισμό χρησιμοποιούμε την έννοια του ξένου
κλειδιού.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Σχήμα Βάσης Δεδομένων
ΠΡΟΜΗΘΕΥΤΗΣ
ΠΡΟΙΟΝ
Κ_Πρ Πρ_Ονομα Χρώμα Βάρος
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Πράξεις Ενημέρωσης
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Εισαγωγή (Insert)
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ
Μ.Χατζόπουλος
Προσοχή η διαγραφή μπορεί να προκαλέσει παραβίαση
της αναφορικής ακεραιότητας και επομένως να μην
εκτελεσθεί ή να γίνει διάδοση.
Μ.Χατζόπουλος
Διαγραφή (Delete)
Μ.Χατζόπουλος
H πράξη της τροποποίησης (Modify) χρησιμοποιείται
για να αλλάξουν οι τιμές ενός ή περισσοτέρων
γνωρισμάτων σε μία (ή σε κάποιες) πλειάδες μιας
σχέσης R. Για την επιλογή της πλειάδας (ή των
πλειάδων) που θα τροποποιηθούν είναι απαραίτητο να
προσδιοριστεί μια συνθήκη πάνω στα γνωρίσματα της
σχέσης R.
H τροποποίηση ενός γνωρίσματος που δεν είναι ούτε
πρωτεύον ούτε ξένο κλειδί συνήθως δεν προκαλεί
προβλήματα· το ΣΔBΔ αρκεί μόνο να επιβεβαιώσει ότι η
νέα τιμή είναι του σωστού τύπου δεδομένων και πεδίου
ορισμού. H τροποποίηση της τιμής του πρωτεύοντος
κλειδιού είναι παρόμοια με την διαγραφή μιας πλειάδας
και την εισαγωγή μιας άλλης στη θέση της, διότι
χρησιμοποιούμε το πρωτεύον κλειδί για να
αναγνωρίζουμε τις πλειάδες.
Μ.Χατζόπουλος
Τροποποίηση (Modify)
Μ.Χατζόπουλος
Σχεσιακή Άλγεβρα
Μ.Χατζόπουλος
• Ένωση (∪)
• Τομή (∩)
• Διαφορά (-)
• Καρτεσιανό Γινόμενο (Χ)
• Διαίρεση (÷)
Μ.Χατζόπουλος
Πράξεις της Σχεσιακής Άλγεβρας
Πράξεις Ειδικά για Σχεσιακές Βάσεις
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Συνθήκη επιλογής
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Προβολή ή κατακόρυφη επιλογή
Μ.Χατζόπουλος
Όμως τι θα γίνει για την
π Είδος, Πόλη (ΠΡΟΜΗΘΕΥΤΗΣ)
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Συνδυασμός Πράξεων
Να βρεθούν τα ονόματα των προμηθευτών από την Λάρισα
Π_Ονομα
Δέδες
Αντύπας
Μ.Χατζόπουλος
π Π_Ονομα (Τ1)
Π_Ονομα
Δέδες
Αντύπας
Μ.Χατζόπουλος
Μετονομασία Γνωρισμάτων
ΠΡΟΜ_ΑΘ←σΠόλη=Αθήνα (ΠΡΟΜΗΘΕΥΤΗΣ)
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Συνολοθεωρητικές Πράξεις
• Ένωση
• Τομή
• Διαφορά
• Καρτεσιανό Γινόμενο
Μ.Χατζόπουλος
Ένωση
ΠΡΟΜΗΘΕΥΤΗΣ
ΠΡΟΙΟΝ
Αποτέλεσμα(City) ← Τ1∪Τ2 Τ2
Τοποθ
Άργος
Αποτέλεσμα
Αθήνα
City
Πάτρα
Λάρισα
Άργος
Αθήνα
Μ.Χατζόπουλος
Τομή
ΠΡΟΜΗΘΕΥΤΗΣ
ΠΡΟΙΟΝ
Αποτέλεσμα(City) ← Τ1∩Τ2 Τ2
Τοποθ
Άργος
Αποτέλεσμα
Αθήνα
City
Αθήνα
Μ.Χατζόπουλος
Διαφορά
ΠΡΟΜΗΘΕΥΤΗΣ
ΠΡΟΙΟΝ
Αποτέλεσμα(City) ← Τ1-Τ2 Τ2
Τοποθ
Άργος
Αποτέλεσμα
Αθήνα
City
Λάρισα
Πάτρα
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Καρτεσιανό Γινόμενο (CARTESIAN PRODUCT)
ή ΧΙΑΣΤΙ ΓΙΝΟΜΕΝΟ (CROSS PRODUCT)
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ
Μ.Χατζόπουλος
Έστω ότι για κάθε προμηθευτή από την Αθήνα θέλουμε τον κωδικό
του το όνομα του, τον κωδικό και την ποσότητα κάθε παραγγελίας
Τ1 ← σ Πολη=Αθήνα (ΠΡΟΜΗΘΕΥΤΗΣ)
Τ2← Τ1 Χ ΠΑΡΑΓΓΕΛΙΑ
Τ3 ← σ Τ1.Κ.Προμ=ΠΑΡΑΓΕΛΙΑ. Κ.Προμ(Τ2)
Μ.Χατζόπουλος
Τ1
Κ_Προμ Π_Ονομα Είδος Πόλη
22 Ανδρέου 7 Αθήνα
58 Παππάς 7 Αθήνα
Μ.Χατζόπουλος
Τ2
Μ.Χατζόπουλος
Τ3
Τ
Κ_Προμ Π_Ονομα Κ_Πρ Ποσοτ
22 Ανδρέου Π35 200
Μ.Χατζόπουλος
Πράξεις Συνένωσης
Μ.Χατζόπουλος
Έστω ότι για κάθε προμηθευτή από την Αθήνα θέλουμε τον κωδικό
του το όνομα του, τον κωδικό προϊόντος και την ποσότητα κάθε
παραγγελίας
Τ1 ← σ Πολη=Αθήνα (ΠΡΟΜΗΘΕΥΤΗΣ)
Μ.Χατζόπουλος
Τ1
Κ_Προμ Π_Ονομα Είδος Πόλη
22 Ανδρέου 7 Αθήνα
58 Παππάς 7 Αθήνα
Τ2
Τ
Κ_Προμ Π_Ονομα Κ_Πρ Ποσοτ
22 Ανδρέου Π35 200
Μ.Χατζόπουλος
R <συνθήκη συνένωσης> S
Μ.Χατζόπουλος
Συνθήκη Επιλογής
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Έστω ότι για κάθε προμηθευτή από την Αθήνα θέλουμε τον κωδικό
του το όνομα του, τον κωδικό προϊόντος και την ποσότητα κάθε
παραγγελίας
Τ1 ← σ Πολη=Αθήνα (ΠΡΟΜΗΘΕΥΤΗΣ)
Τ2← Τ1 *ΠΑΡΑΓΓΕΛΙΑ
Μ.Χατζόπουλος
Τ1
Κ_Προμ Π_Ονομα Είδος Πόλη
22 Ανδρέου 7 Αθήνα
58 Παππάς 7 Αθήνα
Τ2
Τ
Κ_Προμ Π_Ονομα Κ_Πρ Ποσοτ
22 Ανδρέου Π35 200
Μ.Χατζόπουλος
Ένας πιο γενικός αλλά μη τυπικός ορισμός της
φυσικής συνένωσης είναι ο:
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ
Μ.Χατζόπουλος
Έστω ότι για κάθε προμηθευτή θέλουμε τον κωδικό του το όνομα
του, τον κωδικό και το όνομα προϊόντος και την ποσότητα κάθε
παραγγελίας
Τ1← (ΠΡΟΜΗΘΕΥΤΗΣ*ΠΑΡΑΓΓΕΛΙΑ)*ΠΡΟΙΟΝ
Μ.Χατζόπουλος
Το σύνολο των πράξεων της σχεσιακής άλγεβρας
{σ, π, ∪, -, Χ}είναι ένα πλήρες (complete) σύνολο,
κατά την έννοια ότι κάθε άλλη πράξη της σχεσιακής
άλγεβρας μπορεί να εκφραστεί ως μια ακολουθία
πράξεων από το σύνολο αυτό.
R ∩ S ≡ (R ∪ S) - ((R - S) ∪ (S - R))
Μ.Χατζόπουλος
Διαίρεση
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ
Μ.Χατζόπουλος
Τ ←Τ2÷Τ1
Μ.Χατζόπουλος
Τ1 Τ2
Κ_Πρ Κ_Προμ Κ_Πρ
Π35 22 Π35
Π76 31 Π35
Π14 31 Π76
28 Π14
22 Π76
22 Π14
Κ_Προμ
22
Μ.Χατζόπουλος
T1←πY(R)
T2←πY((S Χ T1) - R)
T←T1 -T2
Μ.Χατζόπουλος
Ένας τύπος πράξης που, γενικά, δεν μπορεί να οριστεί στη
σχεσιακή άλγεβρα, είναι η αναδρομική κλειστότητα (recursive
closure). Aυτή η πράξη εφαρμόζεται σε μια αναδρομική
συσχέτιση (recursive relationship) μεταξύ πλειάδων του ίδιου
τύπου, όπως η συσχέτιση μεταξύ ενός εργαζομένου και του
προϊσταμένου του.
ΕΡΓΑΖΟΜΕΝΟΣ
Μ.Χατζόπουλος
Τ2 ←σΠροιστ=22 (Τ1)
Τ3 ←π Προιστ(Τ2)
Τ1 Τ2
Κωδ Προιστ Κωδ Προιστ
Τ3
22 null 31 22
31 22 Κωδ
58 22
28 31 31
46 null 58
68 46
58 22
Μ.Χατζόπουλος
T4←T2 |><| T2.Kωδ=Τ1.Προιστ T1
Τ5 ←π Τ1.Κωδ Τ4
Κωδ
28
ΑΠΟΤΕΛΕΣΜΑ ←Τ3∪Τ5
Μ.Χατζόπουλος
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ
Μ.Χατζόπουλος
R←ΠΡΟΜΗΘΕΥΤΗΣ
S ←ΠΑΡΑΓΓΕΛΙΑ
T1 ←R |><| R.Κ_ΠΡΟΜ=S.Κ_ΠΡΟΜ S
ΑΠΟΤΕΛΕΣΜΑ ←π Π_Ονομα Τ1
Μ.Χατζόπουλος
Εξωτερική Ένωση
H πράξη της EΞΩTEPIKHΣ ENΩΣHΣ (OUTER UNION)
αναπτύχθηκε για να παράγεται η ένωση πλειάδων από
μη συμβατές προς την ένωση σχέσεις. Aυτή η πράξη θα
δημιουργήσει την ένωση πλειάδων δύο σχέσεων που
είναι μερικά συμβατές (partially compatible), κατά την
έννοια ότι κάποια μόνο από τα γνωρίσματά τους είναι
συμβατά ως προς την ένωση.Tα γνωρίσματα που δεν
είναι συμβατά ως προς την ένωση και από τις δύο
σχέσεις διατηρούνται στο αποτέλεσμα, και οι πλειάδες
που δεν έχουν τιμές για τα γνωρίσματα αυτά
συμπληρώνονται με τιμές null.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ (ΠΡΜ)
Μ.Χατζόπουλος
σ(ΠΡ)
Μ.Χατζόπουλος
Όλα τα στοιχεία των προμηθευτών από την Αθήνα
σ Πόλη =‘Αθήνα’ (ΠΡΜ)
Μ.Χατζόπουλος
Τ ←π Κ_Προμ (Τ1)
Κ_Προμ
22
31
Μ.Χατζόπουλος
Τα στοιχεία των παραγγελιών που η ποσότητα είναι
μεταξύ 150 και 300
Μ.Χατζόπουλος
Τ2 ←π Κ_Πρ (Τ1)
Τ3 ←π Κ_Πρ (ΠΡ)
Τ ←Τ3-Τ2
Μ.Χατζόπουλος
Οι κωδικοί των προϊόντων για τα οποία υπάρχει
παραγγελία σε προμηθευτή από την Λάρισα
Τ1 ←σ Πόλη=‘Λάρισα’ (ΠΡΜ)
Τ2 ←π Κ_Προμ (Τ1)
Τ3 ←Τ2*ΠΑΡ
Τ ←π Κ_Πρ (Τ3)
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ (ΠΡΜ)
Κ_Προμ Π_Ονομα Είδος Πόλη ΠΑΡΑΓΓΕΛΙΑ (ΠΑΡ)
Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ
22 Ανδρέου 7 Αθήνα
31 Πέτρου 8 Πάτρα 22 Π35 Ε25 200
Τ1←ΠΡΜ*ΕΡ
Τ2 ←π Κ_Προμ,Κ_Ερ (Τ1)
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Τα ζεύγη κωδικών προϊόντων για τα οποία υπάρχει
παραγγελία στον ίδιο προμηθευτή
Τ1 ←π Κ_Προμ,Κ_Πρ (ΠΑΡ)
Τ2 (ΧΚ_Προμ, ΧΚ_Πρ)← π Κ_Προμ,Κ_Πρ (ΠΑΡ)
Τ3 ←Τ1 |><|Κ_Προμ=ΧΚ_Προμ and Κ_Πρ<ΧΚ_Πρ Τ2
Τ ←π Κ_πρ,ΧΚ_Πρ (Τ3)
Μ.Χατζόπουλος
Τ1 ←σ Πόλη=‘Αθήνα’ (ΕΡ)
Τ2 ←π Κ_ΕΡ (Τ1)
Τ3 ←Τ2*ΠΑΡ
Τ ←π Κ_Πρ (Τ3)
Μ.Χατζόπουλος
Οι κωδικοί των έργων με προϋπολογισμό μικρότερο από
αυτόν του Ε68
Τ1 (ΧΚ_Ερ, ΧΠρουπ)←π Κ_Ερ, Προυπ (ΕΡ)
Τ2 (ΥΚ_Ερ, ΥΠρουπ)←π Κ_Ερ, Προυπ (ΕΡ)
Τ3 ←Τ1 Χ Τ2
Τ4 ←σ ΧΚ_Ερ=Ε68 and Χπρουπ>Υπρουπ (Τ3)
Τ5 ←π ΥΚ_Ερ (Τ4)
Μ.Χατζόπουλος
Τ1 ←σ Κ_Προμ=22 (ΠΑΡ)
Τ2 ←π Κ_Ερ (Τ1)
Τ3 ← σ Κ_Προμ≠22 (ΠΑΡ)
Τ4 ←π Κ_Ερ (Τ3)
Τ ←Τ2-Τ4
Μ.Χατζόπουλος
Οι κωδικοί των προϊόντων για τα οποία υπάρχει
παραγγελία για όλα τα έργα στο Άργος
Τ1 ←σ Πόλη=‘Άργος’ (ΕΡ)
Τ2 ←π Κ_Ερ (Τ1)
Τ3 ←π Κ_Πρ, Κ_Ερ (ΠΑΡ)
Τ ←Τ3÷Τ2
Μ.Χατζόπουλος
Τ1 ←π Κ_Ερ (ΕΡ)
Τ2 ←π Κ_Προμ,Κ_Πρ,Κ_Ερ (ΠΑΡ)
Τ3 ←Τ2÷Τ1
Τ4 ←π Κ_Προμ (Τ3)
Μ.Χατζόπουλος
Οι κωδικοί των προϊόντων για τα οποία είτε υπάρχει
παραγγελία σε προμηθευτή από την Αθήνα ή για έργο
στην Αθήνα
Τ1 ←σ Πόλη=‘Αθήνα’ (ΠΡΜ)
Τ2 ←π Κ_Προμ (Τ1)
Τ3 ←Τ1*ΠΑΡ
Τ4 ←π Κ_Πρ (Τ3)
Τ5 ← σ Πόλη=‘Αθήνα’ (ΕΡ)
Τ6 ←π Κ_Ερ (Τ5)
Τ7 ←Τ6*ΠΑΡ
Τ8 ←π Κ_Πρ (Τ7)
Τ ←Τ8∪Τ4
Μ.Χατζόπουλος
ΕΡΓΑΖΟΜΕΝΟΣ
ΤΜΗΜΑ
Τ_ΟΝΟΜΑ ΚΩΔ_ΤΜΗΜ ΔΙΕΥΘΥΝΤΗΣ ΗΜΕΡ_ΕΝΑΡΞΗΣ
ΤΟΠΟΘ_ΤΜΗΜΑ ΑΠΑΣΧΟΛΗΣΗ
ΕΡΓΟ
Ε_ΟΝΟΜΑ ΚΩΔ_ΕΡΓΟΥ Κ_ΤΜΗΜΑ ΤΟΠ_ΕΡΓΟΥ
ΕΞΑΡΤΩΜΕΝΟΣ
Ε_ΑΡΤΑΥΤ ΟΝΟΜΑ_ΕΞΑΡΤΩΜΕΝΟΥ ΗΜ_ΓΕΝ ΦΥΛΟ ΣΧΕΣΗ
Μ.Χατζόπουλος
Bρες τα ονόματα και τις διευθύνσεις όλων των
εργαζομένων που δουλεύουν στο τμήμα ‘Research’.
Μ.Χατζόπουλος
Για κάθε έργο στο ‘Stafford’, δώσε μια λίστα με τον κωδικό του
έργου, το τμήμα στο οποίο υπάγεται, και το επίθετο, τη
διεύθυνση και την ημερομηνία γέννησης του διευθυντή του
τμήματος στο οποίο υπάγεται το έργο.
Μ.Χατζόπουλος
Δώσε μια λίστα κωδικών των έργων όπου εμπλέκονται είτε
ως απασχολούμενοι είτε ως διευθυντές των τμημάτων που τα
ελέγχουν εργαζόμενοι με επίθετο ‘Smith’.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Mια απλή επερώτηση στο σχεσιακό λογισμό πλειάδων είναι
της μορφής:
{t | COND(t)}
όπου t είναι μια μεταβλητή πλειάδων και COND(t) είναι μια έκφραση
συνθήκης που περιλαμβάνει το t. Tο αποτέλεσμα μιας τέτοιας
επερώτησης είναι ένα σύνολο πλειάδων t που ικανοποιούν την
COND(t).
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Nα ανακτηθούν η ημερομηνία γέννησης και η διεύθυνση του
εργαζομένου (ή των εργαζομένων) με ονοματεπώνυμο 'John B.
Smith'.
Μ.Χατζόπουλος
{t1.A1, t2.A2, ..., tn.An | COND(t1, t2, ..., tn, tn+1, tn+2, ..., tn+m)}
Μ.Χατζόπουλος
Άτομα
1. Ένα άτομο της μορφής R(ti), όπου R είναι το όνομα μιας
σχέσης και ti είναι μια μεταβλητή πλειάδων. Tο άτομο
αυτό προσδιορίζει ως πεδίο τιμών της μεταβλητής
πλειάδων ti τη σχέση με όνομα R.
2. Ένα άτομο της μορφής ti.A op tj.B όπου op είναι ένας
από τους τελεστές σύγκρισης στο σύνολο {=, >, ≥, <, ≤, ≠},
και ti, tj είναι μεταβλητές πλειάδων. Tο A είναι ένα
γνώρισμα της σχέσης τιμών της ti, και το B είναι ένα
γνώρισμα της σχέσης τιμών της tj.
3. Ένα άτομο της μορφής ti.A op c ή c op ti.B, όπου op είναι
ένας από τους τελεστές σύγκρισης στο σύνολο {=, >, ≥, <,
≤, ≠}, και ti, tj είναι μεταβλητές πλειάδων, το A είναι ένα
γνώρισμα της σχέσης τιμών της ti, το B είναι ένα
γνώρισμα της σχέσης τιμών της tj και το c είναι μια
σταθερή τιμή.
Μ.Χατζόπουλος
Τύποι
Μ.Χατζόπουλος
Στους τύπους μπορούν να εμφανιστούν δύο ειδικά σύμβολα που
λέγονται ποσοδείκτες (quantifiers). Aυτά είναι ο καθολικός
ποσοδείκτης (universal quantifier) (∀) και ο υπαρξιακός ποσοδείκτης
(existential quantifier) (∃).
Μ.Χατζόπουλος
Μ.Χατζόπουλος
F1 : d.T_ONOMA ='Research'
F2 : (∃ t) (d.KΩΔ_TMHM=t.APIΘ_T)
F3 : (∀ t) (d.ΔΙΕΥΘΥΝΤΗΣ=’333445555’)
Μ.Χατζόπουλος
Τύποι (συν.)
Μ.Χατζόπουλος
Nα βρεθούν το όνομα και η διεύθυνση όλων των εργαζομένων στο
τμήμα 'Research'.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Nα βρεθεί το ονοματεπώνυμο κάθε εργαζόμενου που εργάζεται σε
κάποια από τα έργα που ελέγχονται από το τμήμα 5.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Υλοποίηση των Σχεσιακών Τελεστών
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Δρόμοι Προσπέλασης (Access Paths)
Απόδοση
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ (ΠΡΜ)
Κ_Προμ Π_Ονομα Είδος Πόλη ΠΑΡΑΓΓΕΛΙΑ (ΠΑΡ)
Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ
22 Ανδρέου 7 Αθήνα
31 Πέτρου 8 Πάτρα 22 Π35 Ε25 200
σ R.Aθc (R)
Μ.Χατζόπουλος
Δεν υπάρχει ευρετήριο και τα δεδομένα δεν είναι
ταξινομημένα στο γνώρισμα Α
Μ.Χατζόπουλος
Δεν υπάρχει ευρετήριο στο γνώρισμα της επιλογής αλλά
το αρχείο είναι φυσικά ταξινομημένο στο γνώρισμα της
επιλογής
Μ.Χατζόπουλος
ΠΑΡΑΓΓΕΛΙΑ (ΠΑΡ)
σ Ποσοτ>200 (ΠΑΡ) Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ
31 Π35 Ε25 100
Μ.Χατζόπουλος
Χρήση Πρωτεύοντος ευρετηρίου ή κλειδιού
κατακερματισμού
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Πολύπλοκες Συνθήκες Επιλογής
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Διαζευκτική Συνθήκη
Μ.Χατζόπουλος
Αν κάθε όρος της διάζευξης έχει ευρετήριο μπορούμε να
αποφύγουμε την σάρωση της σχέσης. Χρησιμοποιούμε το
ευρετήριο κάθε συνθήκης. Βρίσκουμε έτσι την λίστα των
διευθύνσεων που ικανοποιούν κάθε συνθήκη και στη
συνέχεια βρίσκουμε την ένωση τους.
Μ.Χατζόπουλος
ORACLE
Μ.Χατζόπουλος
Οι πράξεις της συνένωσης
Μ.Χατζόπουλος
ΠΡΟΜΗΘΕΥΤΗΣ (ΠΡΜ)
Κ_Προμ Π_Ονομα Είδος Πόλη ΠΑΡΑΓΓΕΛΙΑ (ΠΑΡ)
Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ
22 Ανδρέου 7 Αθήνα
31 Πέτρου 8 Πάτρα 22 Π35 Ε25 200
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Συνενώσεις σε Εμπορικά Συστήματα
Sybase ASE:Υποστηρίζει εμφωλευμένους βρόγχους με ευρετήριο
και συνένωση με ταξινόμηση και συγχώνευση.
Sybase ASIQ: Υποστηρίζει εμφωλευμένους βρόγχους σε σελίδες,
εμφωλευμένους βρόγχους με ευρετήριο, κατακερματισμό, και
συνένωση με ταξινόμηση και συγχώνευση.
Oracle: Υποστηρίζει εμφωλευμένους βρόγχους σε σελίδες, μια
παραλλαγή της συνένωσης του υβριδικού κατακερματισμού, και
συνένωση με ταξινόμηση και συγχώνευση.
DB2: Υποστηρίζει εμφωλευμένους βρόγχους σε σελίδες,
εμφωλευμένους βρόγχους με ευρετήριο, και συνένωση υβριδικού
κατακερματισμού.
SQL Server: Υποστηρίζει εμφωλευμένους βρόγχους σε σελίδες,
εμφωλευμένους βρόγχους με ευρετήριο, συνένωση με ταξινόμηση
και συγχώνευση, και συνένωση με κατακερματισμό
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Η χειρότερη περίπτωση είναι αν εξετάζουμε μια μια τις
πλειάδες της R με αυτές της S.
Αν bR και bS είναι οι σελίδες αντίστοιχα των σχέσεων και
pR και pS οι πλειάδες ανά σελίδα τότε το κόστος είναι:
bR+ pR * bR * bS.
bR+ bR * bS.
1000+1000*500=501000
Ή 1.4 ώρες
Μ.Χατζόπουλος
Από τους τύπους αυτούς παρατηρούμε ότι έχει σημασία
ποια σχέση θα διαλέξουμε σαν εξωτερική στο βρόγχο. Η
εξωτερική θα πρέπει να είναι η μικρότερη από τις δυο.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Σχέση R
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Μπορούμε επίσης να βελτιώσουμε κάπως το CPU κόστος
αν για την σχέση R κρατήσουμε ένα πίνακα
κατακερματισμού στην κύρια μνήμη
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Συνένωση απλού βρόγχου (χρήση μιας δομής
προσπέλασης για ανάκτηση των εγγραφών που
ικανοποιούν τη συνθήκη)
Αν υπάρχει ευρετήριο (ή κλειδί
κατακερματισμού) για ένα από τα δύο
γνωρίσματα της συνένωσης -έστω το j της
σχέσης S- ανακτώνται όλες οι εγγραφές r της
σχέσης R, μία προς μία, και χρησιμοποιείται η
δομή προσπέλασης για να ανακτηθούν άμεσα
όλες οι εγγραφές της σχέσης S που
ικανοποιούν τη συνθήκη sj=ri
foreach tuple r∈R do Η αναζήτηση στο S
foreach tuple s∈S where με χρήση του
ri==sj then output <r,s> ευρετηρίου
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Για κάθε πλειάδα της R το κόστος αναζήτησης της S
είναι:
Μ.Χατζόπουλος
Παράδειγμα
Έστω ΠΑΡ*ΠΡΜ
Μ.Χατζόπουλος
Συνένωση ταξινόμησης-συγχώνευσης
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Η βασική ιδέα του αλγόριθμου είναι να ταξινομηθούν οι
δυο σχέσεις στο γνώρισμα συνένωσης και στη συνέχεια να
γίνει έλεγχος για τις πλειάδες που αντιστοιχούν.
Για την ταξινόμηση μπορεί να χρησιμοποιηθεί μια
μέθοδος εξωτερικής ταξινόμησης.
Μ.Χατζόπουλος
ΠΑΡ
Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ
22 Π35 Ε25 200
Μ.Χατζόπουλος
ΠΑΡ
Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ
22 Π35 Ε25 200
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Συνένωση με κατακερματισμό
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Hash table for block Rj
(k<B-10
Μ.Χατζόπουλος
Μ.Χατζόπουλος
//Διαμέριση της R
foreach tuple r∈R
read r και πρόσθεσε την στην σελίδα εξόδου h(ri)
//Διαμέριση της S
foreach tuple s∈S
read r και πρόσθεσε την στην σελίδα εξόδου h(si)
//Φάση συνένωσης
for l=1,…,k do {
//Δημιουργία του πίνακα κατακερματισμού για την Ri, με χρήση της h2
foreach tuple r ∈Rl do
read r και εισαγωγή στον πίνακα κατακερματισμού με χρήση της h2(rl);
//Σάρωση της Sl για αντίστοιχες πλειάδες στην Rl
foreach tuple s∈ στη διαμέριση Sl do {
read s και απεικόνισε με χρήση της h2;
Για τις πλειάδες r της R που αντιστοιχούν output <r,s> };
Καθαρισμός του πίνακα κατακερματισμού;
}
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Υβριδικός Αλγόριθμος Συνένωσης με Κατακερματισμό
Αν διαθέτουμε περισσότερη μνήμη μπορεί να χρησιμοποιήσουμε
μια παραλλαγή του αλγόριθμου κατακερματισμού. Έστω ότι
B>f*(bR/k) για κάποιο ακέραιο k. Δηλαδή αν διαμερίσουμε την R
σε k διαμερίσεις μεγέθους bR/k μπορούμε να έχουμε ένα πίνακα
κατακερματισμού στη μνήμη. Για την διαμέριση της R (και της S)
σε k σελίδες εξόδου και μια σελίδα εισόδου, δηλαδή k+1 σελίδες.
Επομένως έχουμε B-(k+1) επιπλέον σελίδες κατά την φάση της
διαμέρισης.
Έστω ότι B-(k+1)>f*(bR/k). Τότε έχουμε επιπλέον μνήμη κατά την
φάση της διαμέρισης για να χωρέσει και μια διαμέριση της R. Η
ιδέα είναι να κρατήσουμε στη μνήμη την πρώτη διαμέριση της R.
Επίσης κατά της διαμέριση της S η πρώτη διαμέριση δεν
γράφεται αλλά συγκρίνεται άμεσα με την πρώτη της R. Το κέρδος
είναι ότι δεν θα ξαναδιαβαστούν οι πρώτες διαμερίσεις των R και
S.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Σύγκριση Συνένωσης με κατακερματισμό με συνένωση
συγχώνευσης ταξινόμησης
Αν B>√bR όπου bR το μέγεθος της μικρότερης σχέσης, και
υποθέσουμε ομοιόμορφη κατανομή στις διαμερίσεις το κόστος
του κατακερματισμού είναι 3(bR+bS).
Αν B>√bS όπου bS το μέγεθος της μεγαλύτερης σχέσης, τότε το
πλήθος των ταξινομημένων σειρών κάθε σχέσης είναι μικρότερο
του √bS και αν υποθέσουμε ότι οι διαθέσιμες σελίδες για την
συγχώνευσης είναι περισσότερες από 2√bS δηλαδή περισσότερες
από το συνολικό πλήθος των ταξινομημένων σειρών, μπορούμε να
διαθέσουμε μια σελίδα για κάθε σειρά της R και της S. Τότε
μπορεί να γίνει ταυτόχρονα η συγχώνευση των σειρών της R και
της S. Βέβαια χρειαζόμαστε μνήμη B>2√bS .
Συνολικό κόστος 3(bR+bS).
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Γενικότερες Συνθήκες Συνένωσης περιλαμβάνουν ισότητα σε
περισσότερα από ένα γνωρίσματα και συνθήκες άλλες εκτός από
ισότητα.
• Για ισότητα σε περισσότερα από ένα γνωρίσματα στον αλγόριθμο
εμφωλευμένων βρόγχων με ευρετήριο μπορούμε να χτίσουμε ένα
ευρετήριο στο συνδυασμό των γνωρισμάτων της R και να την
χρησιμοποιήσουμε σαν εσωτερική σχέση ή μπορούμε να
χρησιμοποιήσουμε υπάρχον ευρετήριο σ’ αυτό τον συνδυασμό
γνωρισμάτων.
• Για ισότητα σε περισσότερα από ένα γνωρίσματα στον αλγόριθμο
ταξινόμησης συγχώνευσης μπορούμε να ταξινομήσουμε στον
συνδυασμό των γνωρισμάτων. Επίσης στην συνένωση με
κατακερματισμό, ο κατακερματισμός γίνεται στο συνδυασμό των
γνωρισμάτων.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Συνολοθεωρητικές Πράξεις
Από άποψη υλοποίησης το Καρτεσιανό γινόμενο και η
τομή μπορούν να θεωρηθούν ειδικές περιπτώσεις της
συνένωσης. Για την τομή συνένωση με ισότητα για όλα
τα γνωρίσματα και το Καρτεσιανό γινόμενο συνένωση
χωρίς συνθήκη συνένωσης.
Το βασικό πρόβλημα για για την πράξη της ένωσης είναι
η απαλοιφή των διπλότυπων.Μια παραλλαγή της
μεθόδου απαλοιφής των διπλότυπων μπορεί να
χρησιμοποιηθεί και για την διαφορά.
Μ.Χατζόπουλος
Μ.Χατζόπουλος
Κατακερματισμό για Ένωση και Διαφορά
Μ.Χατζόπουλος
Μ.Χατζόπουλος
,649 15
61?:43µ94 14 B8:1/
:>.>7 54 0649B9/22
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 1 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 3 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 4
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 5 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 6
1
2.
µ
µ
(1) Algorithms for External Sorting (2)
µ
:
Refers to sorting algorithms that are suitable for large files
of records stored on disk that do not fit entirely in main
memory, such as most database files.
Sort-Merge strategy:
Starts by sorting small subfiles (runs) of the main file and
then merges the sorted runs, creating larger sorted subfiles
that are merged in turn.
Sorting phase: nR = (b/nB)
Merging phase: dM = Min (nB-1, nR); nP = (logdM(nR))
nR: number of initial runs; b: number of file blocks;
nB: available buffer space; dM: degree of merging;
nP: number of passes.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 7 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 8
3. Algorithms for SELECT and JOIN Algorithms for SELECT and JOIN
Operations (1) Operations (2)
Implementing the SELECT Operation Implementing the SELECT Operation (contd.):
Search Methods for Simple Selection:
S1 Linear search (brute force):
Examples: Retrieve every record in the file, and test whether its attribute
(OP1): SSN='123456789' (EMPLOYEE) values satisfy the selection condition.
S2 Binary search:
(OP2): DNUMBER>5(DEPARTMENT)
If the selection condition involves an equality comparison on a
(OP3): DNO=5(EMPLOYEE) key attribute on which the file is ordered, binary search (which
is more efficient than linear search) can be used. (See OP1).
(OP4): DNO=5 AND SALARY>30000 AND SEX=F(EMPLOYEE)
S3 Using a primary index or hash key to retrieve a
(OP5): ESSN=123456789 AND PNO=10(WORKS_ON) single record:
If the selection condition involves an equality comparison on a
key attribute with a primary index (or a hash key), use the
primary index (or the hash key) to retrieve the record.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 9 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 10
Algorithms for SELECT and JOIN Algorithms for SELECT and JOIN
Operations (3) Operations (4)
Implementing the SELECT Operation (contd.): Implementing the SELECT Operation (contd.):
Search Methods for Simple Selection:
S4 Using a primary index to retrieve multiple records:
Search Methods for Simple Selection:
If the comparison condition is >, , <, or on a key field with a S7 Conjunctive selection:
primary index, use the index to find the record satisfying the If an attribute involved in any single simple condition in the
corresponding equality condition, then retrieve all subsequent records
in the (ordered) file. conjunctive condition has an access path that permits the use
S5 Using a clustering index to retrieve multiple records: of one of the methods S2 to S6, use that condition to retrieve
If the selection condition involves an equality comparison on a non-
the records and then check whether each retrieved record
key attribute with a clustering index, use the clustering index to satisfies the remaining simple conditions in the conjunctive
retrieve all the records satisfying the selection condition. condition.
S6 Using a secondary (B+-tree) index: S8 Conjunctive selection using a composite index
On an equality comparison, this search method can be used to
retrieve a single record if the indexing field has unique values (is a If two or more attributes are involved in equality conditions in
key) or to retrieve multiple records if the indexing field is not a key. the conjunctive condition and a composite index (or hash
In addition, it can be used to retrieve records on conditions involving structure) exists on the combined field, we can use the index
>,>=, <, or <=. (FOR RANGE QUERIES) directly.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 11 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 12
2
Algorithms for SELECT and JOIN Algorithms for SELECT and JOIN
Operations (5) Operations (7)
Implementing the SELECT Operation (contd.): Implementing the SELECT Operation (contd.):
Search Methods for Complex Selection: Whenever a single condition specifies the selection, we
S9 Conjunctive selection by intersection of record can only check whether an access path exists on the
pointers: attribute involved in that condition.
This method is possible if secondary indexes are available on If an access path exists, the method corresponding to that
all (or some of) the fields involved in equality comparison access path is used; otherwise, the “brute force” linear search
conditions in the conjunctive condition and if the indexes approach of method S1 is used. (See OP1, OP2 and OP3)
include record pointers (rather than block pointers).
Each index can be used to retrieve the record pointers that For conjunctive selection conditions, whenever more
satisfy the individual condition. than one of the attributes involved in the conditions have an
The intersection of these sets of record pointers gives the access path, query optimization should be done to choose
record pointers that satisfy the conjunctive condition, which are the access path that retrieves the fewest records in the most
then used to retrieve those records directly. efficient way.
If only some of the conditions have secondary indexes, each
retrieved record is further tested to determine whether it Disjunctive selection conditions
satisfies the remaining conditions.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 13 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 14
Algorithms for SELECT and JOIN Algorithms for SELECT and JOIN
Operations (8) Operations (9)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 15 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 16
Algorithms for SELECT and JOIN Algorithms for SELECT and JOIN
Operations (10) Operations (11)
Implementing the JOIN Operation (contd.): Implementing the JOIN Operation (contd.):
Methods for implementing joins: Methods for implementing joins:
J3 Sort-merge join: J4 Hash-join:
If the records of R and S are physically sorted (ordered) by The records of files R and S are both hashed to the
value of the join attributes A and B, respectively, we can
same hash file, using the same hashing function on
implement the join in the most efficient way possible.
the join attributes A of R and B of S as hash keys.
Both files are scanned in order of the join attributes, matching
the records that have the same values for A and B. A single pass through the file with fewer records
In this method, the records of each file are scanned only once
(say, R) hashes its records to the hash file buckets.
each for matching with the other file—unless both A and B are A single pass through the other file (S) then hashes
non-key attributes, in which case the method needs to be each of its records to the appropriate bucket, where
modified slightly. the record is combined with all matching records
from R.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 17 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 18
3
Algorithms for SELECT and JOIN Algorithms for SELECT and JOIN
Operations (12) Operations (13)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 19 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 20
Algorithms for SELECT and JOIN Algorithms for SELECT and JOIN
Operations (14) Operations (15)
Implementing the JOIN Operation (contd.): Implementing the JOIN Operation (contd.):
Other types of JOIN algorithms
Factors affecting JOIN performance Partition hash join
Available buffer space Partitioning phase:
Each file (R and S) is first partitioned into M partitions using a
Join selection factor partitioning hash function on the join attributes:
R1 , R2 , R3 , ...... Rm and S1 , S2 , S3 , ...... Sm
Choice of inner VS outer relation
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 21 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 22
Algorithms for SELECT and JOIN Algorithms for SELECT and JOIN
Operations (16) Operations (17)
Implementing the JOIN Operation (contd.): Implementing the JOIN Operation (contd.):
Partitioned Hash Join Procedure: Cost analysis of partition hash join:
1. Reading and writing each record from R and S during the
Assume Ri is smaller than Si. partitioning phase:
1. Copy records from Ri into memory buffers. (bR + bS), (bR + bS)
2. Read all blocks from Si, one at a time and each 2. Reading each record during the joining phase:
record from Si is used to probe for a matching (bR + bS)
record(s) from partition Si. 3. Writing the result of join:
3. Write matching record from Ri after joining to the bRES
record from Si into the result file. Total Cost:
3* (bR + bS) + bRES
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 23 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 24
4
Algorithms for SELECT and JOIN
Operations (18)
Implementing the JOIN Operation (contd.):
Hybrid hash join:
Same as partitioned hash join except:
Joining phase of one of the partitions is included during the
partitioning phase.
Partitioning phase:
Allocate buffers for smaller relation- one block for each of the
M-1 partitions, remaining blocks to partition 1.
Repeat for the larger relation in the pass through S.)
Joining phase:
M-1 iterations are needed for the partitions R2 , R3 ,
R4 , ......Rm and S2 , S3 , S4 , ......Sm. R1 and S1 are joined
during the partitioning of S1, and results of joining R1 and S1
are already written to the disk by the end of partitioning phase.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 25 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 26
Algorithms for PROJECT and SET Algorithms for PROJECT and SET
Operations (2) Operations (3)
Algorithm for SET operations Algorithm for SET operations (contd.)
Set operations: UNION (See Figure 15.3c)
UNION, INTERSECTION, SET DIFFERENCE and Sort the two relations on the same attributes.
CARTESIAN PRODUCT Scan and merge both sorted files concurrently, whenever
CARTESIAN PRODUCT of relations R and S include all the same tuple exists in both relations, only one is kept in
possible combinations of records from R and S. The the merged results.
attribute of the result include all attributes of R and S. INTERSECTION (See Figure 15.3d)
Cost analysis of CARTESIAN PRODUCT Sort the two relations on the same attributes.
If R has n records and j attributes and S has m records and Scan and merge both sorted files concurrently, keep in the
k attributes, the result relation will have n*m records and j+k merged results only those tuples that appear in both
attributes. relations.
CARTESIAN PRODUCT operation is very expensive and SET DIFFERENCE R-S (See Figure 15.3e)
should be avoided if possible. Keep in the merged results only those tuples that appear in
relation R but not in relation S.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 27 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 28
index node from the root to a leaf. What if we have Clustering index on the grouping attributes?
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 29 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 30
5
Implementing Aggregate Operations and Implementing Aggregate Operations and
Outer Joins (3) Outer Joins (4)
Implementing Outer Join:
Outer Join Operators:
Implementing Outer Join (contd.):
LEFT OUTER JOIN Modifying Join Algorithms:
RIGHT OUTER JOIN
FULL OUTER JOIN. Nested Loop or Sort-Merge joins can be modified to
The full outer join produces a result which is equivalent to the union of the implement outer join. E.g.,
results of the left and right outer joins.
For left outer join, use the left relation as outer relation and
Example:
SELECT FNAME, DNAME
construct result from every tuple in the left relation.
FROM (EMPLOYEE LEFT OUTER JOIN DEPARTMENT If there is a match, the concatenated tuple is saved in the
ON DNO = DNUMBER); result.
Note: The result of this query is a table of employee names and their
associated departments. It is similar to a regular join result, with the exception However, if an outer tuple does not match, then the tuple is
that if an employee does not have an associated department, the employee's still included in the result but is padded with a null value(s).
name will still appear in the resulting table, although the department name
would be indicated as null.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 31 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 32
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 33 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 34
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 35 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 36
6
Using Heuristics in Query Optimization (2) Using Heuristics in Query Optimization (3)
Query tree: Example:
For every project located in ‘Stafford’, retrieve the project number,
A tree data structure that corresponds to a relational algebra
expression. It represents the input relations of the query as the controlling department number and the department manager’s
last name, address and birthdate.
leaf nodes of the tree, and represents the relational algebra
operations as internal nodes. Relation algebra:
An execution of the query tree consists of executing an PNUMBER, DNUM, LNAME, ADDRESS, BDATE
internal node operation whenever its operands are (((PLOCATION=‘STAFFORD’(PROJECT))
(DEPARTMENT)) (EMPLOYEE))
available and then replacing that internal node by the DNUM=DNUMBER MGRSSN=SSN
Using Heuristics in Query Optimization (4) Using Heuristics in Query Optimization (5)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 39 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 40
Using Heuristics in Query Optimization (6) Using Heuristics in Query Optimization (7)
Heuristic Optimization of Query Trees:
The same query could correspond to many different
relational algebra expressions — and hence many different
query trees.
The task of heuristic optimization of query trees is to find a
final query tree that is efficient to execute.
Example:
Q: SELECT LNAME
FROM EMPLOYEE, WORKS_ON, PROJECT
WHERE PNAME = ‘AQUARIUS’ AND
PNMUBER=PNO AND ESSN=SSN
AND BDATE > ‘1957-12-31’;
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 41 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 42
7
Using Heuristics in Query Optimization (8) Using Heuristics in Query Optimization (9)
General Transformation Rules for Relational Algebra Operations:
1. Cascade of : A conjunctive selection condition can be broken up into
a cascade (sequence) of individual operations:
c1 AND c2 AND ... AND cn(R) = c1 (c2 (...(cn(R))...) )
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 43 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 44
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 45 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 46
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 47 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 48
8
Using Heuristics in Query Optimization Using Heuristics in Query Optimization
(14) (15)
Outline of a Heuristic Algebraic Optimization Algorithm: Summary of Heuristics for Algebraic Optimization:
1. Using rule 1, break up any select operations with conjunctive conditions into
a cascade of select operations. 1. The main heuristic is to apply first the operations that
2. Using rules 2, 4, 6, and 10 concerning the commutativity of select with other reduce the size of intermediate results.
operations, move each select operation as far down the query tree as is
permitted by the attributes involved in the select condition. 2. Perform select operations as early as possible to reduce
3. Using rule 9 concerning associativity of binary operations, rearrange the leaf the number of tuples and perform project operations as
nodes of the tree so that the leaf node relations with the most restrictive early as possible to reduce the number of attributes. (This
select operations are executed first in the query tree representation.
is done by moving select and project operations as far
4. Using Rule 12, combine a Cartesian product operation with a subsequent
select operation in the tree into a join operation. down the tree as possible.)
5. Using rules 3, 4, 7, and 11 concerning the cascading of project and the 3. The select and join operations that are most restrictive
commuting of project with other operations, break down and move lists of should be executed before other similar operations. (This is
projection attributes down the tree as far as possible by creating new project
operations as needed. done by reordering the leaf nodes of the tree among
6. Identify subtrees that represent groups of operations that can be executed by themselves and adjusting the rest of the tree
a single algorithm. appropriately.)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 49 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 50
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 51 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 52
Using Selectivity and Cost Estimates in Using Selectivity and Cost Estimates in
Query Optimization (2) Query Optimization (3)
Cost Components for Query Execution Catalog Information Used in Cost Functions
1. Access cost to secondary storage Information about the size of a file
number of records (tuples) (r),
2. Storage cost record size (R),
3. Computation cost number of blocks (b)
4. Memory usage cost blocking factor (bfr)
Information about indexes and indexing attributes of a file
5. Communication cost
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 53 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 54
9
Using Selectivity and Cost Estimates in Using Selectivity and Cost Estimates in
Query Optimization (4) Query Optimization (5)
Examples of Cost Functions for SELECT Examples of Cost Functions for SELECT (contd.)
S1. Linear search (brute force) approach S4. Using an ordering index to retrieve multiple records:
CS1a = b;
For an equality condition on a key, CS1a = (b/2) if the record For the comparison condition on a key field with an ordering
is found; otherwise CS1a = b. index, CS4 = x + (b/2)
S2. Binary search: S5. Using a clustering index to retrieve multiple records:
CS2 = log2b + (s/bfr) –1 CS5 = x + ┌ (s/bfr) ┐
For an equality condition on a unique (key) attribute, CS2
=log2b S6. Using a secondary (B+-tree) index:
S3. Using a primary index (S3a) or hash key (S3b) to For an equality comparison, CS6a = x + s;
retrieve a single record For an comparison condition such as >, <, >=, or <=,
CS3a = x + 1; CS3b = 1 for static or linear hashing; CS6a = x + (bI1/2) + (r/2)
CS3b = 1 for extendible hashing;
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 55 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 56
Using Selectivity and Cost Estimates in Using Selectivity and Cost Estimates in
Query Optimization (6) Query Optimization (7)
Examples of Cost Functions for SELECT (contd.) Examples of Cost Functions for JOIN
S7. Conjunctive selection: Join selectivity (js)
Use either S1 or one of the methods S2 to S6 to solve.
js = | (R C S) | / | R x S | = | (R C S) | / (|R| * |S
For the latter case, use one condition to retrieve the records
|)
and then check in the memory buffer whether each retrieved
record satisfies the remaining conditions in the conjunction. If condition C does not exist, js = 1;
S8. Conjunctive selection using a composite index: If no tuples from the relations satisfy condition C, js
Same as S3a, S5 or S6a, depending on the type of index. = 0;
Usually, 0 <= js <= 1;
Examples of using the cost functions. Size of the result file after join operation
| (R C S) | = js * |R| * |S |
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 57 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 58
Using Selectivity and Cost Estimates in Using Selectivity and Cost Estimates in
Query Optimization (8) Query Optimization (9)
Examples of Cost Functions for JOIN (contd.) Examples of Cost Functions for JOIN (contd.)
J1. Nested-loop join: J2. Single-loop join (contd.)
For a secondary index,
CJ1 = bR + (bR*bS) + ((js* |R|* |S|)/bfrRS) CJ2a = bR + (|R| * (xB + sB)) + ((js* |R|* |S|)/bfrRS);
(Use R for outer loop) For a clustering index,
J2. Single-loop join (using an access structure to retrieve CJ2b = bR + (|R| * (xB + (sB/bfrB))) + ((js* |R|* |S|)/bfrRS);
the matching record(s)) For a primary index,
CJ2c = bR + (|R| * (xB + 1)) + ((js* |R|* |S|)/bfrRS);
If an index exists for the join attribute B of S with index If a hash key exists for one of the two join attributes — B of
levels xB, we can retrieve each record s in R and then use S
the index to retrieve all the matching records t from S that CJ2d = bR + (|R| * h) + ((js* |R|* |S|)/bfrRS);
satisfy t[B] = s[A]. J3. Sort-merge join:
The cost depends on the type of index. CJ3a = CS + bR + bS + ((js* |R|* |S|)/bfrRS);
(CS: Cost for sorting files)
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 59 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 60
10
Using Selectivity and Cost Estimates in 9. Overview of Query Optimization in
Query Optimization (10) Oracle
Multiple Relation Queries and Join Ordering Oracle DBMS V8
A query joining n relations will have n-1 join operations, and Rule-based query optimization: the optimizer chooses
hence can have a large number of different join orders when execution plans based on heuristically ranked operations.
we apply the algebraic transformation rules. (Currently it is being phased out)
Current query optimizers typically limit the structure of a Cost-based query optimization: the optimizer examines
(join) query tree to that of left-deep (or right-deep) trees. alternative access paths and operator algorithms and
chooses the execution plan with lowest estimate cost.
Left-deep tree: The query cost is calculated based on the estimated usage of
resources such as I/O, CPU and memory needed.
A binary tree where the right child of each non-leaf node is
Application developers could specify hints to the ORACLE
always a base relation.
query optimizer.
Amenable to pipelining
The idea is that an application developer might know more
Could utilize any access paths on the base relation (the right
child) when executing the join.
information about the data.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 61 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 62
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 63 Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 15- 64
11