2.4

2.4 Αρχιτεκτονική και Συστατικά ΣΔΒΔ
**Στόχοι / Προσδοκώμενα Αποτελέσματα** Ο μαθητής/τρια πρέπει να είναι ικανός/ή:
 * να περιγράφει την αρχιτεκτονική των **τριών επιπέδων (ANSI/SPARC)**
 * να απαριθμεί τις διάφορες κατηγορίες χρηστών ενός ΣΔΒΔ
 * να διακρίνει τα σημαντικότερα υποσυστήματα ενός ΣΔΒΔ
 * να αντιλαμβάνεται τη σημασία ύπαρξης του υλικού (hardware) ενός ΣΔΒΔ

Όπως είδαμε σε προηγούμενη παράγραφο ένα ΣΔΒΔ έχει σαν αποστολή τη διαχείριση των δεδομένων των αρχείων της βάσης, δηλ. την προσθήκη, διαγραφή, τροποποίηση εγγραφών, την αναζήτηση μέσα στις εγγραφές κ.ά.). Το ΣΔΒΔ δέχεται αιτήσεις από τους χρήστες των εφαρμογών και επικοινωνεί με τα αρχεία της βάσης δεδομένων για να τις διεκπεραιώσει. Αυτή η κοινή διεπαφή (interface) των εφαρμογών με τα αρχεία ονομάζεται λογική διεπαφή. Οι εφαρμογές που δημιουργούμε δεν απασχολούνται με τον τρόπο που είναι αποθηκευμένα τα δεδομένα, πόσο χώρο καταλαμβάνουν κ.λπ. Αυτό αποτελεί και τον ορισμό της ανεξαρτησίας δεδομένων. Πρακτικά σημαίνει ότι οποιαδήποτε αλλαγή στον τρόπο οργάνωσης των αρχείων της βάσης δεδομένων δεν θα συνεπάγεται και αλλαγή στις εφαρμογές. Ακόμη, η προσθήκη, η κατάργηση ή και η τροποποίηση κάποιων εφαρμογών δεν θα έχει καμία επίπτωση στον τρόπο οργάνωσης των αρχείων της βάσης δεδομένων. Στα ΣΔΒΔ έχει επικρατήσει η αρχιτεκτονική των εξής **τριών επιπέδων (ANSI/SPARC)**: Οι δυνατότητες του ΣΔΒΔ αξιοποιούνται από διάφορες κατηγορίες χρηστών. Οι κατηγορίες αυτές έχουν ως εξής: Ένα ακόμη συστατικό προς μελέτη αποτελεί η **γλώσσα Βάσεων Δεδομένων.** Αποτελείται από δυο τμήματα που είναι σχεδιασμένα για διαφορετικούς σκοπούς. Η **γλώσσα ορισμού δεδομένων** (Data Definition Language, DDL) χρησιμοποιείται για τον ορισμό των οντοτήτων και των μεταξύ τους σχέσεων. Με τη γλώσσα αυτή δηλώνουμε τα χαρακτηριστικά που έχει κάθε οντότητα και τους αντίστοιχους τύπους δεδομένων (π.χ., ακέραιος αριθμός, σειρά χαρακτήρων). Η **γλώσσα χειρισμού δεδομένων** (Data Manipulation Language, DML) χρησιμοποιείται για την επεξεργασία, την ενημέρωση, την εισαγωγή και τη διαγραφή δεδομένων. Αξίζει να επισημανθεί ότι μία γλώσσα Βάσεων Δεδομένων έχει τεράστια διαφορά από μία γλώσσα προγραμματισμού. Ενώ η γλώσσα προγραμματισμού είναι ενισχυμένη με πολλές δυνατότητες για τη διευκόλυνση του προγραμματιστή εφαρμογών, μία γλώσσα Βάσεων Δεδομένων είναι απλούστερη στη σύνταξή της και κατά κύριο λόγο είναι δηλωτική (declarative). Αυτό σημαίνει ότι δεν προσδιορίζουμε τον τρόπο εκτέλεσης μίας εργασίας, αλλά απλώς δηλώνουμε τι θέλουμε στην απάντηση. Η μετάφραση, αξιολόγηση και επεξεργασία των ερωτημάτων είναι άλλη μια ευθύνη του ΣΔΒΔ. Να σημειωθεί εδώ ότι το ΣΔΒΔ δεν είναι απόλυτο και άκαμπτο λογισμικό. Αποτελείται από πολλά υποσυστήματα που συνεργάζονται αρμονικά μεταξύ τους προκειμένου να πετύχουν αποτελεσματική και αποδοτική διαχείριση των δεδομένων της βάσης. Μερικές από τις βασικές απαιτήσεις του ΣΔΒΔ καλύπτονται από τις λειτουργίες του λειτουργικού συστήματος. Οι πιο σύνθετες και πολύπλοκες όμως διεργασίες υποστηρίζονται από το ΣΔΒΔ χρησιμοποιώντας ως βάση τις λειτουργίες του λειτουργικού συστήματος. Επομένως, η σωστή σχεδίαση ενός ΣΔΒΔ προϋποθέτει τη μελέτη της επικοινωνίας μεταξύ ΣΔΒΔ και λειτουργικού συστήματος. Τα σημαντικότερα υποσυστήματα είναι τα παρακάτω: Αξίζει να αναφέρουμε επιπλέον και τα υποσυστήματα που ασχολούνται με: Κλείνουμε την ενότητα με το **υλικό** (hardware) ενός ΣΔΒΔ, τα μηχανήματα δηλαδή που είναι εγκατεστημένο το λογισμικό. Αυτό αποτελείται από το σύνολο των φυσικών ηλεκτρονικών συσκευών όπως υπολογιστές συνοδευόμενοι με τις απαραίτητες συσκευές εισόδου/εξόδου όπως π.χ. μονάδες δίσκου, συσκευές αποθήκευσης, πιθανά κανάλια εισόδου/εξόδου, και γενικά οποιεσδήποτε συσκευές ή συστήματα που μπορούν να υλοποιήσουν διασύνδεση μεταξύ υπολογιστών και πραγματικού κόσμου κ.ο.κ.
 * **Εσωτερικό επίπεδο** (internal level), έχει να κάνει με την αποθήκευση των αρχείων στον σκληρό δίσκο, δηλ. την πραγματική ή φυσική κατάστασή τους.
 * **Εξωτερικό επίπεδ**ο (external level), έχει να κάνει με τους χρήστες είτε αυτοί είναι απλοί χειριστές, είτε προγραμματιστές ή και οι διαχειριστές της βάσης δεδομένων.
 * **Εννοιολογικό επίπεδο** (conceptual level), είναι το ενδιάμεσο επίπεδο που συνδέει τα δύο άλλα και έχει να κάνει με τη λογική σχεδίαση των αρχείων της βάσης δεδομένων.
 * **Τελικοί Χρήστες**. Στην ουσία οι πελάτες της ΒΔ. **Διακρίνονται** σε:
 * **Απλούς χρήστες**. Στην κατηγορία αυτή ανήκουν οι χρήστες που χρησιμοποιούν κάποιο πρόγραμμα εφαρμογής για να αποκτήσουν πρόσβαση στα δεδομένα της βάσης. Τα δικαιώματα των απλών χρηστών είναι περιορισμένα, ενώ οι λειτουργίες που επιτρέπεται να πραγματοποιήσουν είναι προκαθορισμένες και ρυθμίζονται αναλόγως με τη λειτουργία του συστήματος. Για παράδειγμα, ένας χρήστης του φορολογικού συστήματος TAXIS, ο οποίος έχει υποβάλλει ηλεκτρονικά τη φορολογική του δήλωση, μπορεί να διαβάσει και να τροποποιήσει μόνο τα δικά του δεδομένα και όχι άλλων χρηστών. Οι απλοί χρήστες τις περισσότερες φορές αγνοούν την ύπαρξη του ΣΔΒΔ.
 * **Προχωρημένοι Χρήστες**. Στην κατηγορία αυτή ανήκουν οι χρήστες που έχουν επίγνωση της ύπαρξης του ΣΔΒΔ καθώς και της δομής της βάσης. Έχουν τη δυνατότητα να χρησιμοποιούν τη Δομημένη Γλώσσα ερωτημάτων (SQL) για να επικοινωνούν με τη βάση, ενώ σε πολλές περιπτώσεις γράφουν τα δικά τους προγράμματα εφαρμογής.
 * **Προγραμματιστές Εφαρμογών**. Ο προγραμματιστής εφαρμογών καλείται να υλοποιήσει τμήματα λογισμικού, τα οποία επικοινωνούν με το ΣΔΒΔ για προσπέλαση και ενημέρωση δεδομένων. Οι εφαρμογές υλοποιούνται χρησιμοποιώντας μία γλώσσα προγραμματισμού (π.χ. C++, Java) ή χρησιμοποιώντας κάποιο περιβάλλον ανάπτυξης εφαρμογών, το οποίο παρέχει ο κατασκευαστής του ΣΔΒΔ.
 * **Σχεδιαστές Βάσεων Δεδομένων**. Η αναπαράσταση του πραγματικού κόσμου απαιτεί την προσεκτική σχεδίαση της Βάσης Δεδομένων. Αρχικά θα πρέπει να προσδιορισθούν οι απαραίτητες οντότητες και οι συσχετίσεις που υπάρχουν μεταξύ τους. Στη συνέχεια, η πληροφορία αυτή χρησιμοποιείται για την κατασκευή της εσωτερικής αναπαράστασης της πληροφορίας στη Βάση Δεδομένων του συστήματος. Η διαδικασία αυτή εκτελείται από εξειδικευμένους αναλυτές και σχεδιαστές Βάσεων Δεδομένων, οι οποίοι καλούνται να περιγράψουν τα αντικείμενα του πραγματικού κόσμου με αντικείμενα της Βάσης Δεδομένων. Οι σχεδιαστές έχουν στη διάθεσή τους εργαλεία λογισμικού με τα οποία αυτοματοποιείται η διαδικασία περιγραφής των δεδομένων.
 * **Διαχειριστές Βάσεων Δεδομένων.** Στην κατηγορία αυτή ανήκουν οι χρήστες που έχουν επιπλέον δικαιώματα που αφορούν στον τρόπο οργάνωσης των δεδομένων, στον τρόπο λειτουργίας του ΣΔΒΔ, στη διαχείριση των χρηστών και στην αποκατάσταση των δεδομένων σε περιπτώσεις απώλειας δεδομένων λόγω βλαβών του υλικού του συστήματος. Οι διαχειριστές έχουν στη διάθεσή τους εξειδικευμένες εφαρμογές με τις οποίες ελέγχουν την ορθότητα των δεδομένων και φροντίζουν για τη βέλτιστη λειτουργία του συστήματος.
 * **Διαχειριστής Αρχείων** (file manager). Σε ένα αρχείο αποθηκεύονται δεδομένα, βοηθητικές δομές δεδομένων, το λεξικό δεδομένων και άλλες πληροφορίες απαραίτητες για το ΣΔΒΔ. Ο τρόπος οργάνωσης των αρχείων αυτών ορίζεται από το διαχειριστή αρχείων.
 * Τα **ευρετήρια** (index files) είναι επιπλέον βοηθητικές δομές προσπέλασης ενός αρχείου εγγραφών. Αποτελούν δευτερεύοντες δρόμους αναζήτησης σε αρχεία εγγραφών, που προσφέρουν στους χρήστες εναλλακτικούς τρόπους προσπέλασης χωρίς να επηρεάζουν την φυσική τοποθέτηση των εγγραφών στο δίσκο
 * **Διαχειριστής Αποθήκης** (storage manager). Το υποσύστημα αυτό είναι υπεύθυνο για τον τρόπο φυσικής αποθήκευσης των δεδομένων στη δευτερεύουσα μνήμη και για τον έλεγχο της μετακίνησης δεδομένων από και προς την κύρια μνήμη του συστήματος. Καθορίζει τη θέση αποθήκευσης των δεδομένων.
 * **Διαχειριστής Συναλλαγών** (transaction manager). Μία συναλλαγή αποτελείται από μία ή περισσότερες λειτουργίες που πρέπει να ολοκληρωθούν. Αν μία από τις λειτουργίες αποτύχει, τότε πρέπει να ακυρωθεί ολόκληρη η συναλλαγή. Χαρακτηριστικό παράδειγμα είναι η ανάληψη ενός ποσού από έναν τραπεζικό λογαριασμό. Η συναλλαγή αυτή αποτελείται από δύο λειτουργίες: α) ανάληψη χρημάτων και β) ενημέρωση του υπολοίπου. Αν αποτύχει οποιαδήποτε από τις δύο λειτουργίες πρέπει να ακυρωθεί και η άλλη.
 * **Μεταγλωττιστής Ερωτημάτων** Data Manipulation Language (DML query compiler). Πρόκειται για το υποσύστημα που είναι υπεύθυνο για τη μεταγλώττιση του ερωτήματος του χρήστη. Το ερώτημα δίνεται σε γλώσσα χειρισμού δεδομένων και μετατρέπεται σε εσωτερική αναπαράσταση κατάλληλη για επεξεργασία. Οι μεταγλωττισμένες εντολές προωθούνται στη μηχανή εκτέλεσης.
 * **Μεταγλώττιση Εντολών** Data Definition Language (DDL compiler).
 * **Έλεγχο Ταυτοχρονισμού** (concurrency control manager).
 * **Διαχείριση Επανάκτησης και Ημερολογίου** (logging and recovery manager).
 * **Διαχείριση προσωρινής μνήμης** (buffer manager).
 * **Διαχείριση Αποθήκευσης δεδομένων** (storage manager).

**Ερωτήσεις / Δραστηριότητες**
 * 1) Ποια είναι τα επίπεδα στην αρχιτεκτονική των τριών επιπέδων;
 * 2) Σχολιάστε τις διαφορετικές κατηγορίες χρηστών σε ένα ΣΔΒΔ.
 * 3) Ποια είναι τα τμήματα που αποτελούν την **γλώσσα Βάσεων Δεδομένων**.
 * 4) Αναφέρατε τα σημαντικότερα υποσυστήματα που συνεργάζονται μεταξύ τους προκειμένου να πετύχουν αποτελεσματική και αποδοτική διαχείριση των δεδομένων της βάσης