Αντικειμενοστρεφείς βάσεις δεδομένων: Διαφορά μεταξύ των αναθεωρήσεων
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μ Ο Kalogeropoulos μετακίνησε τη σελίδα Αντικειμενοστραφείς βάσεις δεδομένων στη Αντικειμενοστρεφείς βάσεις δεδομένων πάνω από την ανακατεύθυνση |
Χωρίς σύνοψη επεξεργασίας |
||
Γραμμή 1:
Οι αντικειμενοστρεφείς βάσεις δεδομένων είναι συστήματα [[Βάση δεδομένων|βάσεων δεδομένων]] που κρατούν τα δεδομένα τους σαν αντικείμενα, κατά τις αρχές του [[
== Βάσεις δεδομένων και
Γύρω στα 1986, η προσπάθεια συσχετισμού αντικειμένων και βάσεων δεδομένων, ήταν συναρπαστική. Από την πλευρά των βάσεων δεδομένων υπήρχε η τάση επέκτασης του σχεσιακού μοντέλου, που μόλις πριν από λίγο καιρό είχε καθιερωθεί. Από την πλευρά των γλωσσών προγραμματισμού υπήρχε η τάση πρόσθεσης χαρακτηριστικών όπως διάρκεια στα δεδομένα. Από τη συνάντηση των δύο τάσεων προέκυψε μια ποικιλία απόψεων: κάποιοι πίστευαν ότι ο συνδυασμός χαρακτηριστικών από τις [[
διαφορετικές αυτές προσεγγίσεις κατέληξαν στη δημιουργία των
σύνθετων συστημάτων από ξεχωριστά συστατικά" [Kh93]. Τι είναι "Αντικείμενο" (Object); "Αντικείμενο είναι μια ξεχωριστή οντότητα, που προσπαθεί να μοντελοποιήσει και να προσεγγίσει όσον το δυνατό καλύτερα, το φυσικό κόσμο." [CK86]. Ένα αντικείμενο μπορεί να διενεργήσει ένα σύνολο δραστηριοτήτων. Το σύνολο, αυτό, των δραστηριοτήτων του, καθορίζει και τη συμπεριφορά του (object's behaviour). Ο ορισμός της συμπεριφοράς ενός αντικειμένου αποτελείται από τρία μέρη:
Γραμμή 17:
Ο κώδικας του κάθε μηνύματος εκτελείται κάθε φορά που ένα αντικείμενο λαμβάνει το εν λόγω μήνυμα. Ο κώδικας που σχετίζεται με κάθε μήνυμα ονομάζεται μέθοδος. Όταν ένα αντικείμενο λαμβάνει ένα μήνυμα, καθορίζει ποια μέθοδος πρέπει να εκτελεστεί και της περνάει τον έλεγχο. Ένα αντικείμενο έχει τόσες μεθόδους, όσα και μηνύματα. Εν γένει, το όνομα της μεθόδου είναι το ίδιο με το όνομα του μηνύματος. Τα δεδομένα ενός αντικειμένου χρησιμοποιούνται για να διατηρούν την πληροφορία γύρω από αυτό. Τα αντικείμενα διατηρούν μεταβλητές, οι οποίες υλοποιούν τα δεδομένα και ονομάζονται μεταβλητές στιγμιότυπου (instance variables).<ref>Το όνομα instance variables είναι σύμβαση της Smalltalk. Στη C++ οι μεταβλητές αυτές ονομάζονται data members.</ref> Είναι σαφές ότι αυτού του είδους οι μεταβλητές ζουν όσο και το αντικείμενο.
Ένα από τα χαρακτηριστικά του
Είναι χαρακτηριστικό φαινόμενο, το γεγονός ότι πολλά αντικείμενα επιδεικνύουν την ίδια ακριβώς συμπεριφορά και διαφέρουν μόνο στην τιμή των μεταβλητών στιγμιοτύπου. Για να μην επαναλαμβάνουμε τη συγγραφή του κώδικα για τις μεθόδους, τα δεδομένα και το interface, φροντίζουμε να ομαδοποιήσουμε τα αντικείμενα σε κλάσεις. Κλάση είναι μια ομάδα από αντικείμενα με παρόμοια σημασιολογία και, εν γένει, παρόμοια δομή και λειτουργίες. Είναι χαρακτηριστικό, ότι στον
Τέλος, άλλο ένα χαρακτηριστικό του
* Ένα αντικείμενο αποτελείται από δεδομένα, λογική και το interface που τα ενθυλακώνει και που καθορίζει τη συμπεριφορά του αντικειμένου.
Γραμμή 30:
* Δύο αντικείμενα μπορεί να υλοποιούν το ίδιο μήνυμα μέσω διαφορετικών μεθόδων.
== Βασικές αρχές ενός
Σύμφωνα με το [Mai89] η έννοια μοντέλο δεδομένων (data model) έχει διττή σημασία:
σημαίνει αφενός ένα συγκεκριμένο σχήμα ή γενικά, περιγραφή των μεταδεδομένων (metadata) σε μια εφαρμογή,
Γραμμή 46:
παρατηρεί «...(σ.σ. ένα μοντέλο) είναι λιγότερο ένα μοντέλο αυτό καθεαυτό, και περισσότερο ένα πλαίσιο για να συλλάβουμε μοντέλα....»</ref>
Η ενότητα αυτή αφορά ζητήματα του
Η γενική ιδέα είναι ότι ένα
=== Δομή των Δεδομένων ===
Ένα
Σύμφωνα με το [Di93], ένα αντικείμενο μπορεί να θεωρηθεί σαν μία τετράδα: '''<OID, τιμή, κατάσταση, κλάση>''' και μια κλάση σαν μία εντεκάδα:
Γραμμή 118:
Η μεταφορά της έννοιας της ενθυλάκωσης στις Βάσεις Δεδομένων καθορίζει ότι ένα αντικείμενο ενσωματώνει πρόγραμμα και δεδομένα. Στις σχεσιακές βάσεις, κάθε οντότητα παριστάνεται με μια πλειάδα (tuple), ενώ οι εφαρμογές τρέχουν χρησιμοποιώντας κάποια προστακτική γλώσσα με ενσωματωμένες DML εντολές (ή μια γλώσσα τέταρτης γενεάς). Οι εφαρμογές είναι αποθηκευμένες σε ένα σύστημα αρχείων, ανεξάρτητο της βάσης.
Σε ένα
Ένα καλό παράδειγμα, για τη διαφορά ανάμεσα στο σχεσιακό και το
ενθυλάκωσης. Ο μόνος τρόπος για να αποταθούμε στα διάφορα αντικείμενα, και στις μεταβλητές στιγμιοτύπου τους, είναι μέσω των μηνυμάτων που δηλώθηκαν στο τμήμα διαπροσωπείας.
Γραμμή 140:
=== Περιορισμοί Ακεραιότητας ===
Οι περιορισμοί σκοπό έχουν να εξασφαλίσουν την ακεραιότητα των δεδομένων. Στις
* Περιορισμοί ακεραιότητας κλειδιού (Key constraints).
* Υπαρξιακός περιορισμός ακεραιότητας (Existential constraint) (όταν σε κάποιο σύνθετο αντικείμενο, υπάρχει αναφορά σε κάποιο άλλο αντικείμενο, τότε το αντικείμενο στο οποίο γίνεται η αναφορά, υπάρχει).
* Περιορισμοί ακεραιότητας μη κενού χαρακτηριστικού (NOT NULL constraints).
* Περιορισμός δομικής συνέπειας (structural consistency) (το σχήμα μιας
* Περιορισμός συνέπειας συμπεριφοράς (Behavioral consistency) (μια βάση είναι συνεπής στη συμπεριφορά της αν κάθε μέθοδος σέβεται την υπογραφή της και αν ο κώδικάς της δεν παράγει λάθη στο χρόνο εκτέλεσης (run-time errors) ή ανεπιθύμητα αποτελέσματα).
* Περιορισμός διατήρησης της συνέπειας του αντίστροφου δείκτη (Inverse link consistency).
Γραμμή 154:
Η επιτυχία των σχεσιακών συστημάτων διαχείρισης βάσεων δεδομένων βασίστηκε αφενός στην απλότητα του σχεσιακού μοντέλου δεδομένων και στην ανεξαρτησία των δεδομένων από τις εφαρμογές, και αφετέρου στην τυποποίηση. Η αποδοχή του [[SQL|SQL standard]], το οποίο βασίστηκε στο μοντέλο δεδομένων και τη γλώσσα που πρότεινε η ΙΒΜ (η μεγαλύτερη εταιρεία που αναμίχθηκε από νωρίς στην ανάπτυξη τέτοιων συστημάτων), πρόσφερε μεταφερσιμότητα των δεδομένων και των εφαρμογών, γεγονός που έκανε το σχεσιακό μοντέλο δεδομένων και την SQL τόσο δημοφιλή.
Στην περίπτωση των
Με βάση τα παραπάνω, ήταν φανερή η ανάγκη για την ύπαρξη τουλάχιστον ενός κοινού παρονομαστή, που να επιτρέπει τη μεταφερσιμότητα εφαρμογών και δεδομένων. Το Object Database Management Group (ODMG) είναι μια επιτροπή που, στις αρχές της δεκαετίας του 1990, πρότεινε ένα κοινό interface (ODMG-93) στους διάφορους κατασκευαστές
Το ODMG δεν είναι μια επίσημη επιτροπή τυποποίησης. Συμμετέχουν όμως, σ’ αυτήν, εταιρείες που κατέχουν το 80% της αγοράς των
Το 1993, τα επτά μέλη του ODMG με δικαίωμα ψήφου ήταν οι εταιρείες Object Design (ObjectStore), Objectivity, ONTOS, O2 Technology, POET Software, Servio Corporation (GemStone), και Versant Technology. Επιπλέον όλες οι εταιρείες που συμμετέχουν ως Reviewer Members έχουν δεσμευτεί να υλοποιήσουν το ODMG-93. Σήμερα, στα 1997, οι εταιρείες αυτές έχουν παραμείνει σχεδόν οι ίδιες (αν και πολλές έχουν αλλάξει τα ονόματά τους) και είναι οι εξής: GemStone Systems, IBEX Computing, O2 Technology, Object Design, Objectivity, POET Software, UniSQL, Versant Object Technology. Πρακτικά, αποχώρησε η Ontos και προσχώρησε η IBEX Computing (που διακινεί το Itasca) και η UniSQL. Στην παρουσίαση του ODMG-93 standard θα βασιστούμε κυρίως στο [Ca95] και κατά δεύτερο λόγο στα [Ki94], [ODMG94]. Όλα τα σχήματα και τα παραδείγματα είναι από το [Ca94] και το [Ca95].
Γραμμή 169:
* Language Bindings ([[C plus plus|C++]], [[Smalltalk]])
Η περιγραφή του ODMG-93 περιλαμβάνει ένα μοντέλο αντικειμένων που είναι μια επέκταση στο μοντέλο αντικειμένων του OMG [OMG97], μια γλώσσα ορισμού αντικειμένων (ODL) που παρέχει ένα μηχανισμό ανεξάρτητο από τις γλώσσες προγραμματισμού για να εκφράσει κανείς το σχήμα μιας βάσης, μια γλώσσα ερωταποκρίσεων αντικειμένων (OQL) που παρέχει ένα δηλωτικό τρόπο προσπέλασης των δεδομένων, σαν μια επέκταση της SQL, και δυο επεκτάσεις
Στην παρακάτω εικόνα φαίνεται ο τρόπος, με βάση τον οποίο θα χρησιμοποιείται ένα
μεταφράζονται, δημιουργείται ένα εκτελέσιμο αρχείο της εφαρμογής, το οποίο αφού συνδυαστεί με τη μηχανή του
=== Το Μοντέλο Αντικειμένων του ODMG ===
Γραμμή 185:
=== Γλώσσα Ορισμού Αντικειμένων (Object Definition Language - ODL) ===
Η ODL είναι μια γλώσσα που χρησιμοποιείται για να δηλώσει διαπροσωπείες (interfaces) σε τύπους αντικειμένων που ακολουθούν το μοντέλο αντικειμένων του ODMG-93 και έχει σκοπό να παρέχει μεταφερσιμότητα των σχημάτων των βάσεων δεδομένων. Η ODL αποτελεί την DDL για τύπους αντικειμένων. Καθορίζει τα χαρακτηριστικά των τύπων και τις υπογραφές των μεθόδων. Για τη διαχείριση των στιγμιότυπων των τύπων, και την υλοποίηση των μεθόδων, υπάρχουν οι γλώσσες διαχείρισης αντικειμένων (Object Manipulation Languages - OMLs). Το ODMG-93 δεν καθορίζει κάποια συγκεκριμένη OML. Περιγράφει, όμως, δύο interfaces για τη σύνδεση των
Δεδομένου ότι δεν είναι σαφές που θα υλοποιηθεί το σχήμα που θα καθοριστεί στην ODL, η ODL πρέπει να είναι ανεξάρτητη από την οποιαδήποτε γλώσσα προγραμματισμού. Επιπλέον, πρέπει να μπορεί να ενσωματωθεί με ομαλό τρόπο σε γλώσσες όπως η Smalltalk και η C++, πράγμα που καθορίζεται στα αντίστοιχα bindings. Ακολουθεί το παράδειγμα ενός υποτυπώδους σχήματος σε ODL (με έντονα γράμματα φαίνονται οι δεσμευμένες λέξεις της ODL):
Γραμμή 295:
'''Ref'''<Professor> profP;
Στην παραπάνω εικόνα φαίνεται ο τρόπος με τον οποίο παράγεται μια εφαρμογή, χρησιμοποιώντας το C++ binding για ODL/OML. Ένας διαχειριστής της βάσης γράφει δηλώσεις για το σχήμα της, οι οποίες συγγράφονται στην C++ ODL, η οποία είναι μια επέκταση της C++. Ο προγραμματιστής εφαρμογών γράφει και ένα πρόγραμμα που υλοποιεί την εφαρμογή σε C++, η οποία επεκτείνεται για να αποτελέσει την γλώσσα προγραμματισμού μιας βάσης δεδομένων. Οι δηλώσεις περνούν από κάποιο προεπεξεργαστή (preprocessor), ο οποίος αφενός παράγει το σχήμα της βάσης και αφετέρου φτιάχνει μια περιγραφή του σχήματος στη C++. Ο κώδικας της εφαρμογής και η περιγραφή αυτή μεταφράζονται, δημιουργείται ένα εκτελέσιμο αρχείο της εφαρμογής, το οποίο αφού συνδυαστεί με τη μηχανή του
Όπως προαναφέρθηκε, η ODL καθορίζει το σχήμα μιας βάσης, ενώ η OML καθορίζει τη διαχείριση των αντικειμένων, των σχέσεων μεταξύ των κλάσεων, καθώς και των συλλογών (set, bag, list, array). Σε ότι αφορά τις [[Συναλλαγές (βάσεις δεδομένων)|δοσοληψίες ή συναλλαγές]] (transactions), είναι υποχρεωτικό, κάθε λειτουργία διαχείρισης αντικειμένων να γίνεται μέσα από μια δοσοληψία. Οι δοσοληψίες αποτελούν στιγμιότυπα της ομώνυμης κλάσης και διαθέτουν λειτουργίες commit, abort και checkpoint. Δεν υποστηρίζονται μακρές συναλλαγές, υποστηρίζονται όμως, εμφωλευμένες. Επιπλέον, η OML είναι υπεύθυνη και για τις λειτουργίες σύνδεσης και αποσύνδεσης με μία βάση.
Γραμμή 301:
Υπάρχει και μια απεικόνιση της OQL για C++. Οι ερωτήσεις μπορούν να δηλωθούν μέσα σε ένα πρόγραμμα μέσω μιας συναρτήσεως για ερωτήσεις, η οποία παίρνει συμβολοσειρές για ορίσματα. Τα ορίσματα αυτά πρέπει να είναι έγκυρες ερωτήσεις, οι οποίες μεταφράζονται και εκτελούνται στο run-time. Το αποτέλεσμα επιστρέφεται στην παράμετρο "result".
==
Εδώ θα εξετάσουμε τον τρόπο με τον οποίο οι παρουσία των
συστημάτων. Διάφορα σχεσιακά ΣΔΒΔ ([[Oracle Database|Oracle]], Informix κλπ.) άρχισαν σιγά σιγά, στα μέσα
της δεκαετίας του '90 να παρέχουν
βασική, όμως, έκφανση της επίδρασης που είχε η ύπαρξη των
ήταν η υιοθέτηση
* Εισαγωγή τύπων που ορίζονται από το χρήστη -UDTs
* Κατηγορήματα για την κατασκευή τους -Type Predicate
Γραμμή 706:
[[Κατηγορία:Βάσεις δεδομένων]]
[[Κατηγορία:
|