1.3

1.3 Εξέλιξη της Διαχείρισης Δεδομένων
**Στόχοι / Προσδοκώμενα Αποτελέσματα** Ο μαθητής/τρια πρέπει να είναι ικανός/ή:
 * να αναγνωρίζει τα πλεονεκτήματα της οργάνωσης δεδομένων σε βάσεις δεδομένων αντί αρχείων
 * να αντιλαμβάνεται την έννοια του μοντέλου και των δομικών του στοιχείων
 * να κατανοεί πώς ο κόσμος αναπαριστάνεται από σύνολα οντοτήτων και συσχετίσεων

Τα πρώτα συστήματα εφαρμογών ηλεκτρονικής τήρησης δεδομένων, που χρησιμοποιήθηκαν (και πιθανόν χρησιμοποιούνται ακόμα) για την αποθήκευση και εκμετάλλευση πληροφοριακών δεδομένων, ήταν οργανωμένα σε ανεξάρτητα και μεμονωμένα αρχεία. Τα συστήματα αυτά αναπαράγουν, ως ένα βαθμό, τη λογική οργάνωσης των πληροφοριών των αντίστοιχων χειρογραφικών συστημάτων και ταυτόχρονα την επεκτείνουν, αξιοποιώντας τις τεράστιες δυνατότητες που παρέχει η τεχνολογία των Υπολογιστών. Ο τρόπος αυτός διαχείρισης, αν και δίνει στον προγραμματιστή την ευελιξία να υλοποιήσει τις μεθόδους επεξεργασίας που αυτός επιθυμεί, ωστόσο δημιουργεί προβλήματα καθώς αυξάνεται ο όγκος των δεδομένων και η πολυπλοκότητα της πληροφορίας. Χαρακτηριστικό των εφαρμογών αυτών ήταν ότι για να μπορέσουν να επικοινωνήσουν με τα αρχεία, έπρεπε να γνωρίζουν τον ακριβή τρόπο οργάνωσης των δεδομένων μέσα σ' αυτά. Για να μπορέσει επομένως μια εφαρμογή να διαβάσει τα δεδομένα ενός αρχείου, να εγγράψει νέα δεδομένα, να μεταβάλει ή διαγράψει κάποια από αυτά, πρέπει να περιλαμβάνει στον κώδικά της ένα τμήμα που να περιγράφει με ποια σειρά αποθηκεύονται τα δεδομένα στο αρχείο, πώς αναπαριστάνονται, πόσο χώρο καταλαμβάνει το καθένα στο φυσικό μέσο κτλ. Συμπερασματικά θα μπορούσαμε να ισχυριστούμε ότι υπήρχε ανάγκη συμβατότητας της λογικής συγγραφής του κώδικα της εφαρμογής με τον τρόπο οργάνωσης των δεδομένων των αρχείων με τα οποία επικοινωνεί. Αυτό το είδος της απευθείας επικοινωνίας της εφαρμογής με τα αρχεία δεδομένων, την οποία εξασφαλίζει ο κώδικας της κάθε εφαρμογής ξεχωριστά, ονομάζεται φυσική διεπαφή (interface) της εφαρμογής με το αρχείο. Έτσι, κάθε εφαρμογή μπορεί να επικοινωνήσει μόνο με τα δικά της αρχεία. Από τα παραπάνω γίνεται φανερό ότι στα συστήματα αυτά οι εφαρμογές είναι σε μεγάλο βαθμό εξαρτημένες από τα δεδομένα (data-dependent). Ας εξετάσουμε συνολικά μια περίπτωση που ξεφεύγει από μια απλή διαχείριση αριθμητικών δεδομένων, όπου υπάρχει η ανάγκη για αποθήκευση και διαχείριση μερικών εκατοντάδων αριθμών, πρόβλημα που μπορεί να υλοποιηθεί εύκολα αποθηκεύοντας τους αριθμούς σε ένα αρχείο του λειτουργικού συστήματος, και υλοποιώντας τις απαραίτητες λειτουργίες υπολογισμών (π.χ., μέσος όρος, ελάχιστη τιμή, μέγιστη τιμή) στη λογική της εφαρμογής. Θεωρούμε μία περισσότερο πολύπλοκη εφαρμογή που έχει υλοποιηθεί για να υποστηρίξει την οργάνωση μίας ογκώδους ηλεκτρονικής βιβλιοθήκης. Στην βιβλιοθήκη αυτή απαιτείται η αναζήτηση άρθρων ή βιβλίων με βάση το συγγραφέα, τον τίτλο, την ημερομηνία έκδοσης, ενώ ακόμη απαιτείται η αναζήτηση άρθρων με βάση λέξεις-κλειδιά (keywords) από όλο το κείμενο. Ο προγραμματιστής για την ολοκλήρωση της εφαρμογής χρειάζεται να λάβει υπ’ όψη ότι: Ας εξετάσουμε ποια είναι μερικά από τα βασικά μειονεκτήματα της αποθήκευσης και διαχείρισης των δεδομένων απ’ ευθείας σε αρχεία του λειτουργικού συστήματος.
 * Το πλήθος των άρθρων ή των βιβλίων θα είναι μεγάλο, με αποτέλεσμα να επιβάλλεται η χρήση αποδοτικών μεθόδων αναζήτησης.
 * Η δομή της πληροφορίας είναι περίπλοκη, αφού ένας συγγραφέας μπορεί να έχει συμβάλλει στη συγγραφή πολλών άρθρων, ενώ στη συγγραφή ενός άρθρου μπορεί να έχουν συμβάλλει πολλοί συγγραφείς.
 * Πρέπει να βρεθεί ένας αποτελεσματικός και αποδοτικός τρόπος αναζήτησης των λέξεων μέσα στο κείμενο. Μεγάλο ρόλο για την επιλογή θα έχει στην περίπτωση αυτή το κόστος της εφαρμογής.
 * Υπάρχει η ανάγκη για εισαγωγή νέων στοιχείων, όπως για παράδειγμα η ενημέρωση των δεδομένων όταν υπάρχει ένα νέο άρθρο που πρέπει να καταχωρισθεί.
 * Αναμένεται ότι πολλοί χρήστες θα χρησιμοποιούν την εφαρμογή ταυτόχρονα, με αποτέλεσμα να απαιτούνται ειδικοί μηχανισμοί προσπέλασης και συγχρονισμού των προσπελάσεων από διαφορετικούς χρήστες.
 * Ο ομάδα προγραμματιστών της εφαρμογής είναι υπεύθυνη για τη σωστή ενημέρωση των αρχείων των δεδομένων, αναλόγως με τις εισαγωγές και διαγραφές που πραγματοποιούνται. Για παράδειγμα, έστω ότι στο αρχείο Α1 αποθηκεύονται τα στοιχεία ενός άρθρου (π.χ. τίτλος, αριθμός σελίδων), ενώ στο αρχείο Α2 αποθηκεύονται τα ονόματα των συγγραφέων κάθε άρθρου. Κατά την εισαγωγή ενός νέου άρθρου θα πρέπει να ενημερωθεί το αρχείο Α1 με τα απαραίτητα στοιχεία, ενώ το αρχείο Α2 θα πρέπει να ενημερωθεί με τα στοιχεία των συγγραφέων του άρθρου. Επίσης, κατά την αναζήτηση στοιχείων θα πρέπει σε πρώτο στάδιο να προσδιορισθούν τα απαιτούμενα αρχεία, ενώ σε δεύτερο στάδιο πρέπει να γίνει προσεκτική ανάγνωση των δεδομένων, συνδυάζοντας κατάλληλα τις πληροφορίες που περιέχουν τα διαφορετικά αρχεία. Η κατάσταση δυσκολεύει όσο αυξάνεται ο αριθμός των αρχείων δεδομένων και όσο αυξάνεται η πολυπλοκότητα των ερωτημάτων.
 * Η δομή του κάθε αρχείου καθορίζεται από την ίδια την εφαρμογή. Αυτό έχει ως αποτέλεσμα να είναι δύσκολη η αλλαγή της δομής ενός αρχείου. Πολλές φορές παρουσιάζεται η ανάγκη να προστεθεί ένα νέο χαρακτηριστικό στα δεδομένα. Για παράδειγμα, μπορεί να απαιτηθεί η προσθήκη στο αρχείο Α1 ενός ακόμη πεδίου που να περιέχει το πλήθος των βιβλιογραφικών αναφορών (citations) που περιέχονται στο άρθρο. Σε μία τέτοια περίπτωση πρέπει αφ’ ενός να μεταβληθεί η δομή του αρχείου Α1, έτσι ώστε να δημιουργηθεί χώρος για το νέο πεδίο, και αφ’ ετέρου να μεταβληθεί η λογική της εφαρμογής ώστε να ληφθεί το νέο πεδίο υπ’ όψη κατά την αναζήτηση, εισαγωγή και διαγραφή δεδομένων. Οι αλλαγές αυτές είναι χρονοβόρες και επικίνδυνες για την ακεραιότητα των αποθηκευμένων δεδομένων.
 * Εφ’ όσον ο τρόπος δημιουργίας των αρχείων καθορίζεται από την εφαρμογή, η μορφοποίηση των αρχείων εξαρτάται από την εκάστοτε γλώσσα προγραμματισμού που χρησιμοποιεί ο προγραμματιστής (όπως C, C++, Java, Visual Basic). Το γεγονός αυτό δημιουργεί δυσκολίες όταν απαιτείται η χρήση των αρχείων από διαφορετικές εφαρμογές ή όταν απαιτείται η κατασκευή των αρχείων από άλλους προγραμματιστές που χρησιμοποιούν διαφορετικές γλώσσες προγραμματισμού σε διαφορετικά λειτουργικά συστήματα (όπως Linux, Windows, MacOS)..
 * Σε πολλές περιπτώσεις η εφαρμογή εξυπηρετεί πολλούς χρήστες ταυτόχρονα. Η διασφάλιση της προστασίας και της ακεραιότητας των δεδομένων κατά την ταυτόχρονη αναζήτηση, εισαγωγή και διαγραφή στοιχείων είναι αρκετά περίπλοκη. Επίσης, σε συγκεκριμένες λειτουργίες πρέπει να διασφαλίζεται η ατομικότητα της εκτέλεσης. Με τον όρο "ατομικότητα" εννοούμε ότι ένα σύνολο λειτουργιών είτε θα εκτελεσθεί συνολικά, είτε θα απορριφθεί συνολικά. Χαρακτηριστικό παράδειγμα αποτελεί η ανάληψη χρημάτων από μία τραπεζική αυτόματη ταμειακή μηχανή (ΑΤΜ). Εδώ διακρίνουμε δύο ξεχωριστές λειτουργίες: α) ανάληψη ενός ποσού και β) ενημέρωση του λογαριασμού με το νέο υπόλοιπο. Αν αποτύχει μία από τις δύο λειτουργίες, τότε θα αποτύχει και το σύνολό τους. Σε διαφορετική περίπτωση θα δημιουργηθεί σοβαρό πρόβλημα ακεραιότητας δεδομένων καθώς τα δεδομένα του συστήματος θα είναι λανθασμένα (π.χ., ενώ έγινε η ανάληψη δεν αφαιρέθηκε το ποσό από το υπόλοιπο του λογαριασμού).
 * Στη γενική περίπτωση, κάθε χρήστης της εφαρμογής έχει διαφορετικά δικαιώματα ως προς την προσπέλαση των δεδομένων. Για παράδειγμα, μία ομάδα χρηστών μπορεί να έχει μόνο δικαιώματα ανάγνωσης των δεδομένων, ενώ μία άλλη ομάδα χρηστών μπορεί να έχει δικαιώματα ανάγνωσης και εισαγωγής νέων δεδομένων αλλά όχι διαγραφής. Η εφαρμογή των κανόνων προστασίας των δεδομένων ώστε να αποφεύγονται δυσάρεστες καταστάσεις απώλειας δεδομένων (είτε κατά λάθος, είτε εσκεμμένα), στηριζόμενοι στα εργαλεία του λειτουργικού συστήματος, επιτυγχάνεται δύσκολα. Επιπλέον, είναι πολύ δύσκολο να ορίσουμε διαφορετικά δικαιώματα μέσα στο ίδιο αρχείο.
 * Εφ’ όσον η λογική της αναζήτησης στοιχείων από τα αρχεία δεδομένων υλοποιείται στον κώδικα της εφαρμογής, οι διαφορετικοί τύποι ερωτημάτων που μπορεί να δεχθεί η εφαρμογή είναι περιορισμένοι και πρέπει να υλοποιηθούν εκ των προτέρων. Αυτό αποτελεί αρκετά δεσμευτικό παράγοντα λαμβάνοντας υπ' όψη ότι είναι σχεδόν αδύνατο να προβλέψουμε όλα τα δυνατά ερωτήματα που μπορεί να επιθυμεί να θέσει ένας χρήστης. Η υποστήριξη νέων ερωτημάτων απαιτεί αλλαγή στον κώδικα της εφαρμογής, κάτι που γενικά δεν είναι επιθυμητό διότι οδηγεί σε νέες εκδόσεις (versions) του λογισμικού.

Συνοψίζοντας μπορούμε να πούμε ότι εν γένει τα προβλήματα που ήταν αναπόφευκτο να δημιουργηθούν από την μεθοδολογία και πρακτική της χρήσης αρχείων για την ηλεκτρονική τήρηση δεδομένων είναι τα εξής: Οι **βασικοί παράγοντες** οι οποίοι οδηγούν στους παραπάνω περιορισμούς αναφορικά με την προσέγγιση των συστημάτων που βασίζονται σε αρχεία είναι: Εδώ προκύπτει ένα νέο σημαντικό ερώτημα. **Τι περισσότερο χρειαζόμαστε από αυτά που μας προσφέρει ένα σύστημα αρχείων;** Τα αποτελέσματα των απαντήσεων εστιάζονται στους εξής άξονες: Για μεγαλύτερη αποτελεσματικότητα επομένως σε αυτό το ταχύτατα αναπτυσσόμενο πεδίο υπήρχε η ανάγκη μια νέας προσέγγισης. Το νέο που προέκυψε σαν φυσική εξέλιξη της διαχείρισης δεδομένων με τα αρχεία, απαντώντας ταυτόχρονα με επιτυχία στους παραπάνω άξονες, ήταν οι **Βάσεις Δεδομένων** και τα **Συστήματα Διαχείρισης Βάσεων Δεδομένων** (ΣΔΒΔ) (Database Management Systems (DBMS)). //Μια **Βάση Δεδομένων ή ΒΔ** θα μπορούσε να χαρακτηριστεί ως ένα σύνολο αρχείων τα οποία διαθέτουν υψηλό βαθμό οργάνωσης και είναι συνδεδεμένα μεταξύ τους με λογικές σχέσεις, ώστε να μπορούν να χρησιμοποιούνται από πολλές εφαρμογές και από πολλούς χρήστες.// Τα αρχεία δε δημιουργούνται πλέον ούτε ενημερώνονται από ανεξάρτητες εφαρμογές λογισμικού αλλά από ένα ξεχωριστό σύστημα προγραμμάτων (λογισμικό). Το σύστημα αυτό μεσολαβεί ανάμεσα στα αρχεία δεδομένων και στις εφαρμογές που χρησιμοποιούν οι χρήστες και λέγεται Σύστημα Διαχείρισης Βάσης Δεδομένων ή ΣΔΒΔ (Data Base Management System - DBMS). //To **ΣΔΒΔ** είναι ένα σύνολο προγραμμάτων και ρουτινών, που σκοπό έχουν το χειρισμό της βάσης, όσον αφορά τη δημιουργία, συντήρηση, επεξεργασία στοιχείων, ελέγχους ασφαλείας κτλ., και την εξυπηρέτηση των χρηστών, όσον αφορά την παροχή στοιχείων και πληροφοριών, χωρίς αυτοί να πρέπει να ασχολούνται με το πώς και το πού τα δεδομένα είναι αποθηκευμένα στη βάση. //Θα ασχοληθούμε με μεγαλύτερη λεπτομέρεια στο επόμενο κεφάλαιο με την έννοια του ΣΔΒΔ.////
 * Πλεονασμός των δεδομένων** (data redundancy). Υπάρχει η περίπτωση να έχουμε επανάληψη των ίδιων δεδομένων σε αρχεία διαφορετικών εφαρμογών. Για παράδειγμα στο αρχείο των άρθρων και στο αρχείο των συγγραφέων είναι σχεδόν σίγουρο ότι θα υπάρχουν κάποια κοινά στοιχεία.
 * Ασυνέπεια των δεδομένων** (data inconsistency). Αυτό μπορεί να συμβεί όταν υπάρχουν τα ίδια στοιχεία των συγγραφέων (πλεονασμός) και στο αρχείο άρθρων και στο αρχείο συγγραφέων και χρειασθεί να γίνει κάποια αλλαγή στη διεύθυνση ή στα τηλέφωνα κάποιου συγγραφέα, οπότε είναι πολύ πιθανό να γίνει η διόρθωση μόνο στο ένα αρχείο και όχι και στο άλλο.
 * Αδυναμία μερισμού δεδομένων** (data sharing). Μερισμός δεδομένων σημαίνει δυνατότητα για κοινή χρήση των στοιχείων κάποιων αρχείων. Για παράδειγμα, ο μερισμός δεδομένων θα ήταν χρήσιμος αν με την αναζήτηση ενός άρθρου μπορούμε να έχουμε πρόσβαση την ίδια στιγμή στο αρχείο άρθρων για να δούμε τους συγγραφείς και μετά στο αρχείο των συγγραφέων για να ελέγξουμε αν είναι διαθέσιμα και άλλα άρθρα των ίδιων συγγραφέων. Η αδυναμία μερισμού δεδομένων δημιουργεί καθυστέρηση στη λήψη αποφάσεων και στην εξυπηρέτηση των χρηστών.
 * Αδυναμία προτυποποίησης**. Έχει να κάνει με την ανομοιομορφία και με την διαφορετική αναπαράσταση και οργάνωση των δεδομένων στα αρχεία των εφαρμογών. Η αδυναμία αυτή δημιουργεί προβλήματα προσαρμογής των χρηστών καθώς και προβλήματα στην ανταλλαγή δεδομένων μεταξύ διαφορετικών συστημάτων.
 * 1) 	Ο ορισμός των δεδομένων είναι ενσωματωμένος στα προγράμματα των εφαρμογών, αντί να αποθηκεύεται κάπου ξεχωριστά και ανεξάρτητα.
 * 2) 	Δεν υπάρχει κανένας έλεγχος για την προσπέλαση και τον χειρισμό των δεδομένων, πέρα από αυτόν που επιβάλλεται από τα προγράμματα των εφαρμογών.
 * Απλές και αποδοτικές ερωτήσεις που μπορεί να γίνονται ανάλογα με το θέμα ή πρόβλημα που προκύπτει από την χρήση των δεδομένων.
 * Έλεγχος συγχρονισμού.
 * Γρήγορη ανάκαμψη από κάθε πρόβλημα.
 * Οικειοποίηση από τα οφέλη της μοντελοποίησης.

**Ερωτήσεις / Δραστηριότητες**
 * 1) Ποια θεωρείτε σαν βασικά μειονεκτήματα της αποθήκευσης και διαχείρισης των δεδομένων απ’ ευθείας σε αρχεία του λειτουργικού συστήματος;
 * 2) Ποιοι είναι συνοπτικά οι βασικοί παράγοντες που οδηγούν στους περιορισμούς αναφορικά με την προσέγγιση των συστημάτων που βασίζονται σε αρχεία;
 * 3) Τι περισσότερο χρειαζόμαστε από αυτά που μας προσφέρει ένα σύστημα αρχείων;