Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Ανικειμενοστραφής & Αντικειμενο-Σχεσιακές Βάσεις Δεδομένων
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 2 Εισαγωγή zΣχεσιακό Μοντέλο (δεκαετία του 70): απλό yκατάλληλο για διαχειριστικά δεδομένα yόχι το ίδιο καλό για άλλα είδη δεδομένων (π.χ., πολυμέσα, δίκτυα, CAD) zΑντικειμενοστραφή Μοντέλα (δεκαετία του 80): περίπλοκα αλλά μερικές σημαντικές ιδέες yπολύπλοκοι τύποι δεδομένων yταυτότητα αντικειμένου (object identity)/ αναφορές (references) yADTs (encapsulation, behavior goes with data) yκληρονομικότητα (inheritance)
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 3 Εισαγωγή zΙδέα: Κατασκευή Συστημάτων Διαχείρισης Βάσεων Δεδομένων βασισμένα στο αντικειμενοστραφές μοντέλο zΔύο τάσεις: yαντικειμενο-σχεσιακά μοντέλα (επέκταση σχεσιακού μοντέλου) yαντικειμενο-στραφή μοντέλα (επέκταση αντικειμενο- στραφών γλωσσών προγραμματισμού)
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 4 Ένα Παράδειγμα zDinkey Entertainment Corp. yπροϊόντα: cartoon videos, stills, sounds yΟι ταινίες του Herbert προβάλλονται διεθνώς yΗ Dinkey δίνει άδεια για τα videos, stills, sounds του Herbert για διάφορους σκοπούς xaction figures xvideo games xproduct endorsements Herbert the Worm
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 5 Ένα Παράδειγμα yΜια βάση δεδομένων που θα διαχειρίζεται τα προϊόντα της εταιρίας καθώς και τις εργασίες της
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 6 Παράδειγμα: Γιατί όχι ένα Σχεσιακό ΣΔΒΔ zΔυαδικά Μεγάλα Αντικείμενα (Binary Large Objects BLOBs) μπορούν να αποθηκευτούν και να προσπελαστούν zΚώδικας χρήστη για την επεξεργασία των BLOBs create table frames (frameno integer, image BLOB, category integer)
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 7 Παράδειγμα: Γιατί όχι ένα Σχεσιακό ΣΔΒΔ zΑπόδοση yΠαράδειγμα: ο πελάτης (Μηχανή A) ζητά μικρές εικόνες (“thumbnail”) για όλα τα frames στο ΣΔΒΔ (Μηχανή B) zΜη αποδοτικό, η διατύπωση ερωτήσεων είναι πολύ δύσκολη create table frames (frameno integer, image BLOB, category integer)
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 8 Αντικειμενο-Σχεσιακά ΣΔΒΔ zΙδέα: προσθήκη αντικειμενοστραφών χαρακτηριστικών στο σύστημα τύπων της SQL, δηλαδή SQL με προσθήκη: yστήλες (γνωρίσματα) ως νέοι τύποι δεδομένων (ADTs) yμέθοδοι ορισμένοι από τους χρήστες για τους τύπους δεδομένων yοι στήλες μπορεί να ανήκουν σε σύνθετους τύπους yτύποι αναφοράς (reference and “deref”)
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 9 Αντικειμενο-Σχεσιακά ΣΔΒΔ yΚληρονομικότητα yη παλιά SQL επίσης αποδεκτή zΤα σχεσιακά προϊόντα επεκτείνονται προς αυτήν την κατεύθυνση (SQL-99).
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 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
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 11 Αντικειμενο-Σχεσιακά ΣΔΒΔ zΧρήση κατασκευαστών τύπων (type constructors) για τη δημιουργία νέων τύπων ysetof(foo) yarrayof(foo) ylistof(foo) yrow (n1 t1,..., nk tk) zμπορεί να είναι εμφωλευμένοι: ysetof(arrayof(int)) Σύνθετοι (complex) τύποι
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 12 Αντικειμενο-Σχεσιακά ΣΔΒΔ zΟι built-in τύποι στην SQL (int, float, text, etc.) είναι περιορισμένοι yαλλά έχουν επίσης απλές μεθόδους (math, LIKE, etc.) zΑντικειμενο-σχεσιακά ΣΔΒΔ: επιτρέπουν τον ορισμό νέων τύπων και μεθόδων ycreate type jpeg (internallength = variable, y input = jpeg_in, output = jpeg_out); ADTs: Τύποι ορισμένοι από τους χρήστες
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 13 Αντικειμενο-Σχεσιακά ΣΔΒΔ zΔεν αποτελούνται από built-in τύπους (όπως οι σύνθετοι τύποι) yνέοι απλοί (atomic ) τύποι zΧρειάζονται βασικές μεθόδους εισόδου & εξόδου yμετατροπή text στην εσωτερική αναπαράσταση και το ανάποδο yθα δούμε πως ορίζονται σε λίγο ADTs: Τύποι ορισμένοι από τους χρήστες
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 14 Αντικειμενο-Σχεσιακά ΣΔΒΔ zΣτα περισσότερα αντικειμενο-σχεσιακά ΣΔΒΔ κάθε αντικείμενο έχει ένα OID zΜπορούμε να “δείχνουμε” σε ένα αντικείμενο -- τύποι αναφοράς (reference types)! yref(theater_t) Reference Types & Deref
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 15 Αντικειμενο-Σχεσιακά ΣΔΒΔ zΥπάρχει διαφορά ανάμεσα στους σύνθετους τύπους και στην αναφορά ymytheater row(tno integer, name text, address text, phone integer) ytheater ref(theater_t) zΤο αποτέλεσμα τους φαίνεται το ίδιο, αλλά διαφέρουν yδιαγραφή, ενημέρωση, μοίρασμα yδιαφορά αντίστοιχη με αυτήν ανάμεσα στο “by value” και “by reference” στις γλώσσες προγραμματισμού Reference Types & Deref
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 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)
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 17 SQL-99 Τα δημητριακά Clog θέλουν άδεια να χρησιμοποιήσουν την εικόνα του Herbert μπροστά από ένα ηλιοβασίλεμα: yη μέθοδος thumbnail επιστρέφει μια μικρή είκονα yη μέθοδος Sunrise επιστρέφει T αν υπάρχει ένα ηλιοβασίλεμα στην εικόνα yη μέθοδος 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);
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 18 SQL-99 zΕύρεση κινηματογράφων που προβάλλουν ταινίες του Herbert films σε απόσταση έως 100 km από την Andorra: yτο γνώρισμα theater του nowshowing: αναφέρεται σε ένα αντικείμενο σε άλλο πίνακα. Χρήση του -> ως συντομογραφία του deref(theater).name yη σύγκριση μεταξύ γνωρισμάτων τύπου 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
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 19 SQL-99 zΗ συνένωση των N και C είναι περίπλοκη yΗ Radius επιστρέφει ένα κύκλο ακτίνας με κέντρο το location yο τελεστής || ελέγχει 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
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 20 SQL-99 zBuilt-in πράξεις για σύνθετους τύπους yπ.χ., τις συνηθισμένες μεθόδους για σύνολα (sets), για πίνακες, κλπ yσυμβολισμός για τύπο πλειάδας zΥποστηρίζει τελεστές για τύπους αναφοράς yderef(foo) yσυντομογραφία για το deref(foo).bar: foo->bar. zΥποστηρίζει μεθόδους που ορίζονται από τους χρήστες για ADTs. zΗ σύνταξη εξαρτάται από το προϊόν
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 21 Μέθοδοι Ορισμένοι από τους Χρήστες zΧρειάζεται να οριστούν μέθοδοι για το χειρσιμό των ADTs yπ.χ., για τον τύπο jpeg: thumbnail, crop, rotate, smooth, κλπ. yΟ χρήστης γράφει αυτές τις μεθόδους σε κάποια γλώσσα, π.χ., C, και τις μεταγλωτίζει yregister (εγγραφή) μεθόδων στο σύστημα create function thumbnail(jpeg) returns jpeg as external name ‘/a/b/c/Dinkey.o’ yΤο σύστημα δυναμικά κάνει link τις συναρτήσεις με τον server.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 22 Κληρονομικότητα zΌπως και στη C++, είναι χρήσιμο να “specialize” τύπους: create type theatercafe_t under theater (menu text); οι μέθοδοι του theater_t ισχύουν επίσης και στους subtypes zΙεραρχίες συλλόγων (“Collection hierarchies”): κληρονομικότητα σε πίνακες create table student_emp under emp (gpa float); οι ερωτήσεις στο emp επιστρέφουν πλειάδες και της σχέσης student_emp (εκτός αν προσδιοριστεί “emp only”)
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 23 Κληρονομικότητα zΕπεκτάσεις Τύπων (“Type extents”) yόλα τα αντικείμενα ενός συγκεκριμένου τύπου μπορούν να επιλεγούν από μία μόνο όψη (e.g., select * from theater_t)
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 24 Απαραίτητες τροποποιήσεις zParsing yέλεγχος τύπων (type-checking) για τις μεθόδους ιδιαίτερα περίπλοκος zΒελτιστοποίηση Ερωτήσεων yχρειάζονται νέοι αλγεβρικοί τελεστές για σύνθετους τύπους yοι εκφράσεις στο WHERE μπορεί να είναι ιδιαίτερα ακριβές xselect pushdown ίσως όχι καλή ιδέα
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 25 Απαραίτητες τροποποιήσεις zΕκτέλεση ynew algebra operators for complex types yOID generation & reference handling ydynamic linking ysupport “untrusted” methods ysupport objects bigger than 1 page ymethod caching: much like grouping xf(x) for each x is like AVG(major) for each major
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 26 Απαραίτητες τροποποιήσεις zΜέθοδοι προσπέλασεις yευρετήρια σε μεθόδους yευρετήρια σε συλλογικές ιεραρχίες (collection hierarchies) yneed indexes for new WHERE clause exprs (not just, =)! xGiST can help here. xhttp://gist.cs.berkeley.edu zΤοποθέτηση δεδομένων στο δίσκο yclustering of nested objects ychunking of arrays