Βάσεις Δεδομένων (Databases) ΕΠΛ 342 Χειμερινό Εξάμηνο 2011 Διδάσκοντες Καθηγητές Γιώργος Σαμάρας (ΧΩΔ01 109)
Προσεγγίσεις Διαχείρισης Δεδομένων Με Βάση (DB approach) Με Αρχεία (File system approach) Κλασσικά (flat) αρχεία + C (Java,...) προγράμματα που τα χρησιμοποιούν Π.χ., ένα (ή περισσότερα) UNIX/DOS αρχεία, με αρχεία φοιτητών και μαθημάτων Σχεδιασμός δομής για κάθε αρχείο και φάκελο, κ.λπ.
Οργάνωση αρχείων για εγγραφές φοιτητών Πολλές οι επιλογές, π.χ., comma-separated values csv Smith,John,123,cs1555,db,A,99-1 Tompson,Peter,234 Aiken,Mary,395,cs1550,os,A,00-1,math2210,stats,A,99-2 Δεδομένα χωρισμένα σε δύο αρχεία Smith,John,123 Tompson,Peter,234 Aiken,Mary,395 123,cs1555,db,A,99-1 395,cs1550,os,A,00-1 395,math2210,stats,A,99-2
Προβλήματα με τα Αρχεία Πλεονασμός δεδομένων - σπατάλη μνήμης Περιττή προσπάθεια - η ίδια αλλαγή σε πολλά αρχεία Έλλειψη συντονισμού μεταξύ των αρχείων - μη συνεπείς πληροφορίες - οι αλλαγές γίνονται ανεξάρτητα - Π.χ. Jan-19-1974 vs. Jan-29-1974
Βάσεις Δεδομένων Vs. Αρχείων Αφαίρεση (Data Abstraction) Αξιοπιστία (Reliability) Ικανότητα/Απόδοση (Efficiency/Performance)
Αφαίρεση και Μοντέλα Δεδομένων Μοντέλα δεδομένων: Υψηλού επιπέδου θεμελιώδης αναπαράσταση δεδομένων Σχεσιακό, Αντικειμενοστρεφής, Object-Relational, XML Πρώτα μοντέλα: Δικτυακό και Ιεραρχικό Τα δεδομένα είναι δομημένα με λογικό τρόπο για τις εφαρμογές Η φυσική οργάνωση είναι κριμένη, αποθηκευμένη σε κατάλογο Συστατικά μοντέλων δεδομένων: Σύνολο από αξιώματα (εντολές) για ορισμό του σχήματος μιας βάσεως δεδομένων (DDL: data definition language) Σύνολο από αξιώματα (εντολές) για καθορισμό ανακτήσεων και αναβαθμίσεων (retrievals and updates) (DML: data manipulation language)
Μοντέλα δεδομένων Ένα μοντέλο δεδομένων είναι ένα σύνολο εννοιών που μπορούν να χρησιμοποιηθούν για την περιγραφή τις δομής ενός database Δομή ενός database περιλαμβάνει τύπους δεδομένων, σχέσεις και περιορισμούς που υφίστανται μεταξύ των δεδομένων, καθώς και βασικούς τελεστές για ανάκτηση και αλλαγή του database
Κατηγορίες Μοντέλων Υψηλού επιπέδου, εννοιολογικό μοντέλο (high-level or conceptual) Παρέχει έννοιες κοντά στον τρόπο που πολλοί χρήστες καταλαβαίνουν τα διάφορα δεδομένα Π.χ., Entity-Relationship Model Χαμηλού επιπέδου (low-level or physical) Παρέχει έννοιες που περιγράφουν τις λεπτομέρειες του πως τα δεδομένα είναι αποθηκευμένα στη δευτερεύουσα μνήμη Π.χ., Specific Storage Model Αναπαραστατικό Μοντέλο (representational or implementational) Παρέχει έννοιες που είναι μεν κατανοητές από τους χρήστες αλλά όχι πολύ απομακρυσμένες από το τρόπο αποθήκευσης Π.χ., Relational Model and DB Schemas
Αφαίρεση (Data Abstraction) Ανεξαρτησία προγράμματος-δεδομένων (Program-data independence) Μελέτη προσθήκης ενός νέου πεδίου Ανεξαρτησία προγράμματος-λειτουργίας (Program-operation independence) Αφηρημένες λειτουργίες που έχουν οριστεί από τον χρήστη Διάθεση δεδομένων (Data sharing) και ολοκλήρωση (integration)
Κατηγορίες Μοντέλων (Παράδειγμα Εννοιολογικού Μοντέλου) Υψηλού Επίπεδου * Λεπτομέρειες θα μελετηθούν αργότερα στο μάθημα.
Κατηγορίες Μοντέλων (Παράδειγμα Αναπαραστατικού Μοντέλου) Ενδιάμεσου Επίπεδου * Λεπτομέρειες θα μελετηθούν αργότερα στο μάθημα.
Σχήμα και Κατάσταση της Βάσης Δεδομένων Σχήμα της Βάσης: είναι η δομή της βάσης η οποία: Συλλέγει τύπους δεδομένων, σχέσεις, περιορισμούς στα δεδομένα Είναι ανεξάρτητη οποιασδήποτε εφαρμογής Σπάνια αλλάζει Κατάσταση ή Στιγμιότυπο της Βάσης: Είναι τα πραγματικά δεδομένα που υπάρχουν σε μια βάση δεδομένων, μια συγκεκριμένη χρονική στιγμή (DB instance, occurrence or snapshot) Η Κατάσταση μια βάσης αλλάζει συχνά.
Κατάσταση της Βάσης Δεδομένων. Tα δεδομένα ενός database μια δεδομένη στιγμή καλείται database state Περιέχει ένα σύνολο από αντιπροσώπους Ονομάζεται επίσης και Extension του σχήματος Το DBMS είναι υπεύθυνο για τη διατήρηση του database σε σωστό state με βάση τους διάφορους κανόνες ακεραιότητας (integrity constraints)
Παράδειγμα σχεσιακής Βάσης: Αρχεία φοιτητών (Παράδειγμα Αναπαραστατικού Μοντέλου) Διάγραμμα Σχήματος Κατάσταση Σχήματος τη Στιγμή Χ
Αφαίρεση Views Πολλαπλά Views δεδομένων επιτρέπουν σε κάθε χρήστη/εφαρμογή να έχουν διαφορετική προοπτική της βάσης Αρχιτεκτονική τριών επιπέδων v1 v2 v3 view επίπεδο λογικό/θεμελιώδης επίπεδο φυσικό επίπεδο Ανεξαρτησία Δεδομένων: λογικό και φυσικό
Αρχιτεκτονική τριών επιπέδων Τρία Αρχιτεκτονικά Επίπεδα Το Εξωτερικό(ή όψη)επίπεδο (external or view level) Είναι ένα (ιδεατό) υποσύνολο του σχήματος της βάσης δεδομένων και αντιστοιχεί σε ένα πλαίσιο πεδίων που χρησιμοποιεί ο χρήστης ή μια ανεξάρτητη εφαρμογή Το Λογικό Επίπεδο (conceptual level) Περιγράφει τη δομή του database για όλους τους χρήστες Κρύβει τις λεπτομέρειες αποθήκευσης Υψηλού επιπέδου μοντέλο ή Αναπαραστασιακό Μοντέλο Το Εσωτερικό Επίπεδο (internal level) Έχει ένα εσωτερικό σχήμα το οποίο περιγράφει τη δομή της αποθήκευσης των δεδομένων. Περιγράφει τον τρόπο με τον οποίο τα δεδομένα δομούνται και αποθηκεύονται στις φυσικές συσκευές
Αρχιτεκτονική τριών επιπέδων Επίπεδο όψεων (view): CSMajors MathMajors Λογικό επίπεδο: όλο το σχήμα της βάσης Courses (CourseNo,CourseName,Credits,Dept) Student (StudentID,Lname,Name,Class,Major) GradeReport (StudentID,CourseNo,Grade,Term) Φυσικό επίπεδο: v1 v2 v3 how these tables are stored, how many bytes / attribute etc.
Ανεξαρτησία Δεδομένων: φυσική και λογική v1 v2 v3 λογική Α.Δ.: Μπορεί να προσθέσει/αφαιρέσει (add/drop) στήλη; προσθέσει/αφαιρέσει πίνακα φυσική Α.Δ.: Μπορεί να προσθέσει δείκτη (index); Μπορεί να αλλάξει την σειρά των εγγραφών
Βάσεις Δεδομένων Vs. Αρχείων Αφαίρεση (Data Abstraction) Αξιοπιστία (Reliability) Ικανότητα/Απόδοση (Efficiency/Performance)
Αξιοπιστία Επιβολή περιορισμών ακεραιότητας π.χ., τύποι δεδομένων, σχέση μεταξύ τιμών Τα δεδομένα στη βάση πρέπει να ικανοποιούν τους περιορισμούς ακεραιότητας Οι περιορισμοί ακεραιότητας είναι αποθηκευμένοι σε κατάλογο - Π.χ., Επιβολή κανόνα: «Σε κανένα μάθημα δεν μπορούν να εγγραφούν πάνω από 99 φοιτητές» - Παράδειγμα σε SQL-DDL*:, CREATE TABLE COURSE ( CourseID INT NOT NULL DEFAULT 1 Positions INT NOT NULL CHECK (Pos<100).) * Η δηλωτική αυτή γλώσσα θα μελετηθεί αργότερα στο μάθημα
Αξιοπιστία Εξασφάλιση ακεραιότητας δεδομένων παρ όλα τα πιθανά σφάλματα Τα δεδομένα δεν χάνονται όταν το σύστημα σταματά την λειτουργία του για οποιοδήποτε λόγο Συναλλαγές που αποτυγχάνουν, αναιρούν της αλλαγές που κάνανε μέχρι στιγμής (rolled back) Επανάκτησης δεδομένων (recovery) Π.χ., Παροχή Εφεδρικών Αντιγράφων (Backup) και Μηχανισμών Ανάκαμψης (Recovery) Π.χ., Εάν έχουμε διακοπή ρεύματος (χωρίς UPS) δεν θα βρεθεί σε ασυνεπή κατάσταση η βάση δεδομένων
Αξιοπιστία Εξασφάλιση ακεραιότητας δεδομένων Ασφάλεια (Security) Απόκρυψη (Encryption) Πιστοποίηση (Authentication) Έλεγχος πρόσβασης (Access control) Ποιός (user/role), Τι (data), Πως (operations) Άδειες για Views και πρόσβαση φυλάγονται στο κατάλογο
Βάσεις Δεδομένων Vs. Αρχείων Αφαίρεση (Data Abstraction) Αξιοπιστία (Reliability) Ικανότητα/Απόδοση (Efficiency/Performance)
Ικανότητα/Απόδοση Αποδοτικότητα Χώρου (Space efficiency): Ελαχιστοποιεί τον πλεονασμό των δεδομένων αποθηκεύοντάς τα μόνο μια φορά
Ικανότητα/Απόδοση Αποδοτικότητα Χρόνου (Time efficiency - response time): Ελαχιστοποιεί την ανάγκη για πολλαπλές αλλαγές (updates) για την συνέπεια όλων των αντιγράφων Αυξάνει την απόδοση των query με χρήση βελτιστοποίησης και μεθόδους πρόσβασης (optimizations and access methods) Επιτρέπει σε πολλούς χρήστες (συναλλαγές) να έχουν πρόσβαση στη βάση ταυτόχρονα: Ανάγνωση των ίδιων δεδομένων, ενημέρωση διαφορετικών δεδομένων Συνεχόμενες καθυστερήσεις πρόσβασης αυξάνουν σημαντικά το πλήθος των συναλλαγών Έλεγχος Ταυτοχρονίας (Concurrency Control): not to step on each other s toes
Παράδειγμα Παρεμβολής (Interference) Deposit (amount, account#) { } x = read(accounts[account#]); write(accounts[account#], amount + x); Θεωρήστε: Account[7] = $100 T1: Deposit1(100, 7) T2: Deposit2(50, 7) Εκτέλεση 1 Εκτέλεση 2 T1 Read1 Write1 T2 Read2 Write2 T1 Read1 Write1 T2 Read2 Write2
Συναλλαγές Οι συναλλαγές υποστηρίζουν αφαίρεση κινητικότητας (activity abstraction) όπως τα μοντέλα δεδομένων υποστηρίζουν την αφαίρεση (data abstraction) Οι ιδιότητες των συναλλαγών ή QoS εγγυάται την απόδοση και την αξιοπιστία: ACID Οι συναλλαγές είναι το νουκλεϊκό οξύ των βάσεων
ACID Ιδιότητες Atomicity (alias failure atomicity) (Ατομικότητα) Είτε όλες οι λειτουργίες μια συναλλαγής γίνονται είτε καμία Consistency (Συνέπεια) Μια συναλλαγή είναι ένα ορθό κομμάτι κώδικα. Ικανοποιεί τους περιορισμών ακεραιότητας της βάσης στα όρια της συναλλαγής. Isolation (alias concurrency atomicity / serializability) (Απομόνωση) Οι συναλλαγές είναι ανεξάρτητες. Το αποτέλεσμα συναλλαγών που τρέχουν ταυτόχρονα, πρέπει να είναι το ίδιο αν έτρεχαν η μια μετά την άλλη σειριακά. Durability (alias persistence / permanence) (Αντοχή) Τα αποτελέσματα συναλλαγών που τελείωσαν, είναι οριστικά ανεξάρτητα οποιουδήποτε σφάλματος του συστήματος.
Επιπρόσθετα πλεονεκτήματα της προσέγγισης με Βάσης Δεδομένων Επεκτασιμότητα/Ευελιξία (Expandability/Flexibility) Επιτρέπει την εξέλιξη χωρίς να επηρεάζονται υφιστάμενες εφαρμογές Ελάττωση χρόνου υλοποίησης εφαρμογής Νέες εφαρμογές με της χρήση συστημάτων DBMS εκτιμήθηκε ότι θέλουν το 1/6 με 1/4 του χρόνου του συστήματος αρχείων Οικονομία της κλίμακας Ελάττωση του ολικού κόστους με ταυτόχρονη αύξηση της εκμετάλλευσης των τεχνικών και ανθρώπινων πόρων Κεντρικός έλεγχος από τον DBA Ρύθμιση της εσωτερικής δομής για καλύτερη απόδοση Επιβολή πρότυπων μεταξύ των χρηστών της βάσης