Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

1 Ανικειμενοστραφής & Αντικειμενο-Σχεσιακές Βάσεις Δεδομένων.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "1 Ανικειμενοστραφής & Αντικειμενο-Σχεσιακές Βάσεις Δεδομένων."— Μεταγράφημα παρουσίασης:

1 1 Ανικειμενοστραφής & Αντικειμενο-Σχεσιακές Βάσεις Δεδομένων

2 2 Εισαγωγή Σχεσιακό Μοντέλο (δεκαετία του 70): απλό κατάλληλο για διαχειριστικά δεδομένα όχι το ίδιο καλό για άλλα είδη δεδομένων (π.χ., πολυμέσα, δίκτυα, CAD) Αντικειμενοστραφή Μοντέλα (δεκαετία του 80): περίπλοκα αλλά μερικές σημαντικές ιδέες πολύπλοκοι τύποι δεδομένων ταυτότητα αντικειμένου (object identity)/ αναφορές (references) ADTs (encapsulation, behavior goes with data) κληρονομικότητα (inheritance)

3 3 Εισαγωγή Ιδέα: Κατασκευή Συστημάτων Διαχείρισης Βάσεων Δεδομένων βασισμένα στο αντικειμενοστραφές μοντέλο Δύο τάσεις: αντικειμενο-σχεσιακά μοντέλα (επέκταση σχεσιακού μοντέλου) αντικειμενο-στραφή μοντέλα (επέκταση αντικειμενο- στραφών γλωσσών προγραμματισμού)

4 4 Ένα Παράδειγμα Dinkey Entertainment Corp. προϊόντα: cartoon videos, stills, sounds Οι ταινίες του Herbert προβάλλονται διεθνώς Η Dinkey δίνει άδεια για τα videos, stills, sounds του Herbert για διάφορους σκοπούς action figures video games product endorsements Herbert the Worm

5 5 Ένα Παράδειγμα Μια βάση δεδομένων που θα διαχειρίζεται τα προϊόντα της εταιρίας καθώς και τις εργασίες της

6 6 Παράδειγμα: Γιατί όχι ένα Σχεσιακό ΣΔΒΔ Δυαδικά Μεγάλα Αντικείμενα (Binary Large Objects BLOBs) μπορούν να αποθηκευτούν και να προσπελαστούν Κώδικας χρήστη για την επεξεργασία των BLOBs create table frames (frameno integer, image BLOB, category integer)

7 7 Παράδειγμα: Γιατί όχι ένα Σχεσιακό ΣΔΒΔ Απόδοση Παράδειγμα: ο πελάτης (Μηχανή A) ζητά μικρές εικόνες (“thumbnail”) για όλα τα frames στο ΣΔΒΔ (Μηχανή B) Μη αποδοτικό, η διατύπωση ερωτήσεων είναι πολύ δύσκολη create table frames (frameno integer, image BLOB, category integer)

8 8 Αντικειμενο-Σχεσιακά ΣΔΒΔ Ιδέα: προσθήκη αντικειμενοστραφών χαρακτηριστικών στο σύστημα τύπων της SQL, δηλαδή SQL με προσθήκη: στήλες (γνωρίσματα) ως νέοι τύποι δεδομένων (ADTs) μέθοδοι ορισμένοι από τους χρήστες για τους τύπους δεδομένων οι στήλες μπορεί να ανήκουν σε σύνθετους τύπους τύποι αναφοράς (reference and “deref”)

9 9 Αντικειμενο-Σχεσιακά ΣΔΒΔ Κληρονομικότητα η παλιά SQL επίσης αποδεκτή Τα σχεσιακά προϊόντα επεκτείνονται προς αυτήν την κατεύθυνση (SQL-99).

10 10 Αντικειμενο-Σχεσιακά ΣΔΒΔ create table frames (frameno integer, image jpeg, category integer); create table categories (cid integer, name text, lease_price float, comments text); create type theater_t row (tno integer, name text, address text, phone integer) create table theaters theater_t; create table nowshowing (film integer, theater ref(theater_t), start date, end date); create table films (filmno integer, title text, stars setof(text), director text, budget float); create table countries (name text, boundary polygon, population integer, language text) complex types reference types ADTs

11 11 Αντικειμενο-Σχεσιακά ΣΔΒΔ Χρήση κατασκευαστών τύπων (type constructors) για τη δημιουργία νέων τύπων setof(foo) arrayof(foo) listof(foo) row (n1 t1,..., nk tk) μπορεί να είναι εμφωλευμένοι: setof(arrayof(int)) Σύνθετοι (complex) τύποι

12 12 Αντικειμενο-Σχεσιακά ΣΔΒΔ Οι built-in τύποι στην SQL (int, float, text, etc.) είναι περιορισμένοι αλλά έχουν επίσης απλές μεθόδους (math, LIKE, etc.) Αντικειμενο-σχεσιακά ΣΔΒΔ: επιτρέπουν τον ορισμό νέων τύπων και μεθόδων create type jpeg (internallength = variable, input = jpeg_in, output = jpeg_out); ADTs: Τύποι ορισμένοι από τους χρήστες

13 13 Αντικειμενο-Σχεσιακά ΣΔΒΔ Δεν αποτελούνται από built-in τύπους (όπως οι σύνθετοι τύποι) νέοι απλοί (atomic ) τύποι Χρειάζονται βασικές μεθόδους εισόδου & εξόδου μετατροπή text στην εσωτερική αναπαράσταση και το ανάποδο θα δούμε πως ορίζονται σε λίγο ADTs: Τύποι ορισμένοι από τους χρήστες

14 14 Αντικειμενο-Σχεσιακά ΣΔΒΔ Στα περισσότερα αντικειμενο-σχεσιακά ΣΔΒΔ κάθε αντικείμενο έχει ένα OID Μπορούμε να “δείχνουμε” σε ένα αντικείμενο -- τύποι αναφοράς (reference types)! ref(theater_t) Reference Types & Deref

15 15 Αντικειμενο-Σχεσιακά ΣΔΒΔ Υπάρχει διαφορά ανάμεσα στους σύνθετους τύπους και στην αναφορά mytheater row(tno integer, name text, address text, phone integer) theater ref(theater_t) Το αποτέλεσμα τους φαίνεται το ίδιο, αλλά διαφέρουν διαγραφή, ενημέρωση, μοίρασμα διαφορά αντίστοιχη με αυτήν ανάμεσα στο “by value” και “by reference” στις γλώσσες προγραμματισμού Reference Types & Deref

16 16 Αντικειμενο-Σχεσιακά ΣΔΒΔ create table frames (frameno integer, image jpeg, category integer); -- images from films create table categories (cid integer, name text, lease_price float, comments text); -- pricing create type theater_t tuple(tno integer, name text, address text, phone integer) create table theaters theater_t; -- theaters create table films (filmno integer, title text, stars setof(text), director text, budget float); -- Dinkey films create table nowshowing (film integer, theater ref(theater_t), start date, end date); create table countries (name text, boundary polygon, population integer, language text)

17 17 SQL-99 Τα δημητριακά Clog θέλουν άδεια να χρησιμοποιήσουν την εικόνα του Herbert μπροστά από ένα ηλιοβασίλεμα: η μέθοδος thumbnail επιστρέφει μια μικρή είκονα η μέθοδος Sunrise επιστρέφει T αν υπάρχει ένα ηλιοβασίλεμα στην εικόνα η μέθοδος Herbert επιστρέφει T αν ο Herbert είναι στην εικόνα select F.frameno, thumbnail(F.image), C.lease_price from frames F, categories C where F.category = C.cid and Sunrise(F.image) and Herbert(F.image);

18 18 SQL-99 Εύρεση κινηματογράφων που προβάλλουν ταινίες του Herbert films σε απόσταση έως 100 km από την Andorra: το γνώρισμα theater του nowshowing: αναφέρεται σε ένα αντικείμενο σε άλλο πίνακα. Χρήση του -> ως συντομογραφία του deref(theater).name η σύγκριση μεταξύ γνωρισμάτων τύπου set γίνεται μέσω μεθόδων του τύπου set select N.theater->name, N.theater->address, F.name from nowshowing N, frames F, countries C where N.film = F.filmno and Radius(N.theater->location, 100) || C.boundary and C.name = ‘Andorra’ and `Herbert the Worm’ IN F.stars

19 19 SQL-99 Η συνένωση των N και C είναι περίπλοκη Η Radius επιστρέφει ένα κύκλο ακτίνας με κέντρο το location ο τελεστής || ελέγχει circle,polygon αν τέμνονται select N.theater->name, n.theater->address, F.name from nowshowing N, frames F, countries C where N.film = F.filmno and Radius(N.theater->location, 100) || C.boundary and C.name = ‘Andorra’ and ‘Herbert the Worm’ IN F.stars

20 20 SQL-99 Built-in πράξεις για σύνθετους τύπους π.χ., τις συνηθισμένες μεθόδους για σύνολα (sets), για πίνακες, κλπ συμβολισμός για τύπο πλειάδας Υποστηρίζει τελεστές για τύπους αναφοράς deref(foo) συντομογραφία για το deref(foo).bar: foo->bar. Υποστηρίζει μεθόδους που ορίζονται από τους χρήστες για ADTs. Η σύνταξη εξαρτάται από το προϊόν

21 21 Μέθοδοι Ορισμένοι από τους Χρήστες Χρειάζεται να οριστούν μέθοδοι για το χειρσιμό των ADTs π.χ., για τον τύπο jpeg: thumbnail, crop, rotate, smooth, κλπ. Ο χρήστης γράφει αυτές τις μεθόδους σε κάποια γλώσσα, π.χ., C, και τις μεταγλωτίζει register (εγγραφή) μεθόδων στο σύστημα create function thumbnail(jpeg) returns jpeg as external name ‘/a/b/c/Dinkey.o’ Το σύστημα δυναμικά κάνει link τις συναρτήσεις με τον server.

22 22 Κληρονομικότητα Όπως και στη C++, είναι χρήσιμο να “specialize” τύπους: create type theatercafe_t under theater (menu text); οι μέθοδοι του theater_t ισχύουν επίσης και στους subtypes Ιεραρχίες συλλόγων (“Collection hierarchies”): κληρονομικότητα σε πίνακες create table student_emp under emp (gpa float); οι ερωτήσεις στο emp επιστρέφουν πλειάδες και της σχέσης student_emp (εκτός αν προσδιοριστεί “emp only”)

23 23 Κληρονομικότητα Επεκτάσεις Τύπων (“Type extents”) όλα τα αντικείμενα ενός συγκεκριμένου τύπου μπορούν να επιλεγούν από μία μόνο όψη (e.g., select * from theater_t)

24 24 Απαραίτητες τροποποιήσεις Parsing έλεγχος τύπων (type-checking) για τις μεθόδους ιδιαίτερα περίπλοκος Βελτιστοποίηση Ερωτήσεων χρειάζονται νέοι αλγεβρικοί τελεστές για σύνθετους τύπους οι εκφράσεις στο WHERE μπορεί να είναι ιδιαίτερα ακριβές select pushdown ίσως όχι καλή ιδέα

25 25 Απαραίτητες τροποποιήσεις Εκτέλεση new algebra operators for complex types OID generation & reference handling dynamic linking support “untrusted” methods support objects bigger than 1 page method caching: much like grouping f(x) for each x is like AVG(major) for each major

26 26 Απαραίτητες τροποποιήσεις Μέθοδοι προσπέλασεις ευρετήρια σε μεθόδους ευρετήρια σε συλλογικές ιεραρχίες (collection hierarchies) need indexes for new WHERE clause exprs (not just, =)! GiST can help here. Τοποθέτηση δεδομένων στο δίσκο clustering of nested objects chunking of arrays


Κατέβασμα ppt "1 Ανικειμενοστραφής & Αντικειμενο-Σχεσιακές Βάσεις Δεδομένων."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google