ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Δαμιανός Χατζηαντωνίου ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ
ΕΙΣΑΓΩΓΗ Ιστορική αναδρομή Σκοπός των Β.Δ. ‘Οψεις των δεδομένων (View of Data) Μοντέλα δεδομένων (Data Models) Γλώσσα ορισμού δεδομένων (Data Definition Language) Γλώσσα χειρισμού δεδομενων (Data Manipulation Language) Διαχείριση συναλλαγών (Transaction Management) Διαχείριση αποθήκευσης δεδομένων (Storage Management) Database Administrator Χρήστες Β.Δ. Συνολική δομή/αρχιτεκτονική ενός συστήματος Β.Δ.
Ιστορική Αναδρομή Δεκαετία του 1950 Κάρτες και ταινίες (σειριακή επεξεργασία) – Batch processing Αρχή του 1960 πρώτο γενικού-σκοπού ΣΔΒΔ: Integrated Data Store (GE) Charles Bachman (Recipient of the 1st Turing Award, 1973) network data model (δικτυωτό) Τέλη του 1960 Information Management System (IMS) IBM hierarchical data model (Ιεραρχικό) SABRE Airline Reservation System (AA+IBM, travelocity!!)
Ιστορική Αναδρομή 1970 Edgar Codd (IBM, San Jose) relational data model (Recipient of the Turing Award, 1981) Ερευνητικά Προγράμματα: System R, INGRES - Γλώσσες: SEQUEL, QBE, QUEL Δεκαετία του 1980 SQL (μέρος του System R) transaction management (Jim Gray, Turing Award, 1999) [Τάσεις: αντικειμενοστραφή, αρχιτεκτονική πελάτη-εξυπηρέτη, κατανεμημένες, έμπειρα]
Ιστορική Αναδρομή Δεκαετία του 1990 εμπορικά αντικειμενοστραφή συστήματα [Τάσεις: πολυβάσεις, χωρικές & χρονικές, πολυμέσα, αποθήκες δεδομένων, συμπερασματικες] Δεκαετία του 2000 [Τάσεις: Asilomar Report http://www.research.microsoft.com/~gray/Asilomar_DB_98.html The Web Changes Everything Unifying Program Logic and Database Systems Hardware Advances: Scale up to MegaServers and Scale Down to Appliances]
Συστήματα Διαχείρισης Β.Δ. (DBMS) Συλλογή αλληλοσυσχετιζόμενων δεδομένων Σύνολο προγραμμάτων που χειρίζονται τα δεδομένα ΣΔΒΔ περιέχουν πληροφορίες για μία συγκεκριμένη επιχείρηση Τα ΣΔΒΔ προσφέρουν ένα περιβάλλον που είναι εύκολο (convenient) και αποτελεσματικό (efficient). Εφαρμογές Β.Δ.: Τραπεζικός χώρος: όλες οι συναλλαγές Αεροπορικές εταιρείες: reservations, schedules Πανεπιστήμια: εγγραφές, βαθμοί Πωλήσεις: πελάτες, προϊόντα, αγορές Μεταποίηση: παραγωγή, αποθήκη, παραγγελίες, supply chain Ανθρώπινοι πόροι: στοιχεία υπαλλήλων, μισθοί, εφορία > Οι Β.Δ. βρίσκονται στην καθημερινή μας ζωή. <
Σκοπός μίας Β.Δ. Στην αρχή, οι εφαρμογές των Β.Δ. «κάθονταν» πάνω σε file systems Προβλήματα των file systems ώστε να αποθηκεύουν δεδομένα: Πλεονασμός (redundancy) των δεδομένων και ασυνέπεια (inconsistency) Πολλαπλά file formats, επανάληψη πληροφοριών σε διαφορετικά files Δυσκολία πρόσβασης στην πληροφορία Συγγραφή προγραμμάτων για κάθε νέα λειτουργία Απομόνωση δεδομένων (data isolation) — πολλαπλά files και formats Προβλήματα ακεραιότητας (Integrity problems) Οι περιορισμόι για την ακεραιότητα (integrity constraints) (π.χ. υπόλοιπο λογαριασμού > 0) ήταν κομμάτια των προγραμμάτων Δύσκολο να προστεθούν νέοι περιορισμοί ή να αλλαχτούν ήδη υπάρχοντες.
Σκοπός μίας Β.Δ. Προβλήματα των file systems ώστε να αποθηκεύουν δεδομένα: Ατομικότητα των αλλαγών (atomicity of updates) Προβλήματα κατα τις αλλαγές μπορέι να αφήσουν μία Β.Δ. σε ασυνεπή κατάσταση, με μερικές από τις αλλαγές να έχουν γίνει και άλλες όχι. Π.χ. η μεταφορά χρημάτων από έναν λογαριασμό σε έναν άλλον θα πρέπει να ολοκληρωθεί ή να μη συμβεί καθόλου. Ταυτόχρονη πρόσβαση πολλαπλών χρηστών (concurrent access) Απαραίτητη για αποδοτικά συστήματα. Ταυτόχρονη πρόσβαση μπορεί να οδηγήσει σε inconsistencies Π.χ. ταυτόχρονη κατάθεση χρημάτων Προβλήματα ασφάλειας Τα Σ.Δ.Β.Δ. προσφέρουν λύσεις σε όλα αυτά τα προβλήματα.
Επίπεδα αφαιρετικότητας (abstraction) Στο φυσικό (physical) επίπεδο περιγράφουμε πως αποθηκευεται μία εγγραφή (record) για παράδειγμα τα στοιχεία ενός υπαλλήλου. Λογικό (logical) επίπεδο: περιγραφή των δεδομένων στη Β.Δ. και των σχέσεων μεταξύ τους. type customer = record name : string; street : string; city : integer; end; Επίπεδο όψεων (view): τα προγράμματα εφαρμογών «καλύπτουν» τις λεπτομέρειες των δεδομένων και των τύπων τους. Επίσης προσφέρουν και – πιθανόν – διαφορετικές όψεις των δεδομένων (π.χ. εγγραφή χωρίς μισθό)
Αφαιρετική δομή μίας Β.Δ. Μια αρχιτεκτονική μιας Β.Δ.
Στιγμιότυπα (Instances) και Schemas Παρεμφερή με τον τύπο και τις μεταβλητές στις γλώσσες προγραμματισμού. Schema – η λογική δομή μίας Β.Δ. π.χ. μια βάση δεδομένων αποτελείται από πληροφορίες για πελάτες και λογαριασμούς, καθώς και τη σχέση μεταξύ των. Παρόμοια με τον τύπο μίας μεταβλητής σε ένα πρόγραμμα. Physical schema: σχεδίαση της Β.Δ. σε φυσικό επίπεδο Logical/Conceptual schema: σχεδίαση της Β.Δ. σε λογικό επίπεδο Στιγμιότυπο – τα περιεχόμενα μίας Β.Δ. σε μια δεδομένη στιγμή. Ανάλογο με την τιμή μιας μεταβλητής κατά τη διάρκεια εκτέλεσης.
Ανεξαρτησία δεδομένων (Data Independency) Ανεξαρτησία Δεδομένων: αλλαγή του σχήματος ενός επιπέδου χωρίς να αλλάξουμε το σχήμα του αμέσως υψηλότερου επιπέδου. Αρχή της ανεξαρτησίας των δεδομένων σε φυσικό επίπεδο: η δυνατότητα να αλλάζει κάποιος το physical schema χωρίς να αλλάζει το logical schema Ανάπτυξη εφαρμογών με βάση το λογικό schema Οι διεπαφές μεταξύ των διαφόρων επιπέδων πρέπει να είναι πολύ καλά ορισμένες. Λογική ανεξαρτησία των δεδομένων: η δυνατότητα να αλλάζει κάποιος το conceptual schema χωρίς να αλλάζει το επιπέδο όψεως.
Μοντέλα δεδομένων Ένα σύνολο από «θεμέλιους λίθους» για την περιγραφή: συσχετίσεων μεταξύ των δεδομένων σημασιολογικού των δεδομένων (data semantics) περιορισμών επί των δεδομένων Μοντέλο Οντοτήτων-Συσχετίσεων (Entity-Relationship) Σχεσιακό Μοντέλο (Relational) ΄Αλλα μοντέλα: αντικειμενοστραφές (object-oriented model) semi-structured data models παλιότερα μοντέλα: network model και hierarchical model Διαφοροποίηση μεταξύ των object-based και value-based μοντέλα.
Μοντέλο Ο-Σ (Ε-R) Παράδειγμα ενός schema στο μοντέλο Ο-Σ
Μοντέλο Ο-Σ (Ε-R) Μοντέλο Ο-Σ στον πραγματικό κόσμο Οντότητες (entities - objects) Π.χ. πελάτης, λογαριασμός, υποκατάστημα Συσχετίσεις μεταξύ των οντοτήτων Π.χ. ο πελάτης Χατζηαντωνίου έχει το λογαριασμό 12-1020-44 Γενικά: συσχέτιση μεταξύ πελατών και λογαριασμών Ευρέως διαδεδομένο στη σχεδίαση Β.Δ. Μια σχεδίαση στο μοντέλο Ο-Σ συνήθως μετατρέπεται σε σχεδίαση στο σχεσιακό μοντέλο που σε δεύτερο επίπεδο, το οποίο μπορεί να χρησιμοποιηθεί για επεξεργασία και αποθήκευση
Σχεσιακό Μοντέλο Παράδειγμα δεδομένων σε μορφή πίνακα Χαρακτηριστικά (Attributes) Παράδειγμα δεδομένων σε μορφή πίνακα customer- name customer- street customer- city account- number Customer-id 192-83-7465 019-28-3746 321-12-3123 Johnson Smith Jones Alma North Main Palo Alto Rye Harrison A-101 A-215 A-201 A-217
Δείγμα Σχεσιακής Β.Δ.
Γλώσσα Ορισμού Δεδομένων - Data Definition Language (DDL) Τρόπος ορισμού του database schema Π.χ. create table account ( account-number char(10), balance integer) Ο μεταφραστής της DDL compiler δημιουργεί ένα σύνολο από πίνακες οι οποίοι αποθηκεύονται στο λεξικό δεδομένων (data dictionary) Τα λεξικά δεδομένων περιέχουν μέτα-δεδομενα (metadata) database schema Data storage and definition language γλώσσα στην οποία περιγράφεται και η δομή αποθήκευσης και οι τρόποι/μέθοδοι πρόσβασης στα δεδομένα (storage structure and access methods) συνήθως μία επέκταση της DDL
Γλώσσα Χειρισμού Δεδομένων - Data Manipulation Language (DML) Γλώσσες για πρόσβαση και χειρισμό των δεδομένων που είναι αποθηκευμένα βάση ενός μοντέλου δεδομένων. Η Γ.Χ.Δ. είναι γνωστή και σαν γλώσσα αιτημάτων ή ερωτημάτων (query language) Δυο ειδών γλώσσες: Διαδικαστικές (procedural) – ο χρήστης ορίζει τι δεδομένα απαιτούνται και πως θα πρέπει να ανακτηθούν (π.χ. πρόγραμμα σε Java) Μη-διαδικαστικές ή Δηλωτικές (declarative) – ο χρήστης ορίζει τι δεδομένα απαιτούνται μόνο – κοντύτερα στη φυσική γλώσσα η SQL (Structured Query Language) είναι η πιο διαδεδομένη γλώσσα ερωτημάτων
SQL SQL: H πιο διαδεδομένη δηλωτική γλώσσα ερωτημάτων π.χ. βρες το όνομα του πελάτη με κωδικό 192-83-7465 select customer.customer-name from customer where customer.customer-id = ‘192-83-7465’ π.χ. βρες το υπόλοιπο όλων των λογαριασμών του πελάτη με κωδικό 192-83-7465 select account.balance from depositor, account where depositor.customer-id = ‘192-83-7465’ and depositor.account-number = account.account-number Τα προγράμματα εφαρμογών έχουν πρόσβαση στις Β.Δ. συνήθως: Ειδικες εντολές της γλώσσας προγραμματισμού που επιτρέπουν ενσωματωμένη (embedded) SQL Μέσω μίας διεπαφής (π.χ. ODBC/JDBC) που επιτρέπουν στα SQL ερωτήματα να σταλθούν σε μία Β.Δ.
Χρήστες Β.Δ. Οι χρήστες διαφοροποιούνται ανάλογα τον τρόπο που επικοινωνούν με το σύστημα. Application programmers – interact with system through DML calls Sophisticated users – form requests in a database query language Specialized users – write specialized database applications that do not fit into the traditional data processing framework Naïve users – invoke one of the permanent application programs that have been written previously E.g. people accessing database over the web, bank tellers, clerical staff
Database Administrator Συντονίζει όλες τις δραστηριότητες ενός συστήματος Β.Δ. Πρεπει να έχει μια καλη γνώση των αναγκών (ΙΤ) και των πόρων της εταιρείας. Τα καθήκοντα ενός database administrator είναι: ορισμός schema ορισμός τρόπων αποθήκευσης και μεθόδων πρόσβασης αλλαγές στο schema και στη φυσική οργάνωση των δεδομένων διανομή επιπέδων security στους χρήστες ορισμός των περιορισμών ακεραιότητας των δεδομένων βοήθεια προς τους χρήστες επίβλεψη απόδοσης του συστήματος
Διαχείριση Συναλλαγών (Transaction) Μία συναλλαγή (transaction) είναι ένα σύνολο από πράξεις (operations) οι οποίες εκτελούν μία απλή λογική λειτουργία σε μια εφαρμογή Β.Δ. Το κομμάτι ενός Σ.Δ.Β.Δ. που διαχειρίζεται τις συναλλαγές (transaction manager) διασφαλίζει ότι η Β.Δ. παραμένει σε μια συνεπή κατάσταση άσχετα από αστοχίες (soft/hard failures) του συστήματος Ο concurrency-control manager ελέγχει την αλληλοεπίδραση ταυτόχρονων συναλλαγών ώστε να διασφαλίσει πάλι τη συνεπή κατάσταση της Β.Δ.
Διαχείριση αποθήκευσης δεδομένων Ο storage manager είναι ένα κομμάτι του Σ.Δ.Β.Δ. που προσφέρει τη διεπαφή μεταξύ των low-level data που είναι αποθηκευμένα στη Β.Δ. και των εφαρμογών και των ερωτημάτων που φτάνουν σε αυτόν. Tα καθήκοντα του storage manager είναι: επικοινωνία με τον file manager του λειτουργικού συστήματος (συνήθως) αποτελεσματική αποθήκευση, ανάκτηση και ενημέρωση των δεδομένων
Συνολική δομή ενός συστήματος Β.Δ.
Αρχιτεκτονική εφαρμογών Αρχιτεκτονική Two-tier: π.χ. client προγράμματ που χρησιμοποιούν ODBC/JDBC για να επικοινωνήσουν με μια Β.Δ. Αρχιτεκτονική Three-tier : π.χ. web-based εφαρμογές και εφαρμογές χρησιμοποιώντας “middleware”