Οι επεκτάσεις του έργου TOOBIS στις γλώσσες ορισμού και ερωτήσεων του ODMG Κ. Βασιλάκης
Στόχοι επέκτασης λειτουργικότητας Πρόσθεση νέων χαρακτηριστικών στο σύστημα Εμπλουτισμός του σχήματος της τρέχουσας βάσης με τα νέα χαρακτηριστικά Δημιουργία νέων εφαρμογών που θα αξιοποιήσουν την πρόσθετη λειτουργικότητα Προστασία των υπαρχουσών εφαρμογών
Η Ανάγκη Επέκτασης των Γλωσσών Δημιουργία ενός επιπέδου αφαίρεσης »για τον τρόπο μοντελοποίησης των δεδομένων »για τον τρόπο υλοποίησης των πράξεων »για τις πράξεις που ενέχονται σε μία ερώτηση integer valid_time_integer transaction_time_integer bitemporal_integer ODMG “literal” ΔεδομέναΔεδομένα με πρόσθετη λειτουργικότητα ODMG “class”
Η Ανάγκη Επέκτασης των Γλωσσών Οι πράξεις που ενέχονται σε μία ερώτηση interface employee { attribute string Name; attribute long Salary; } interface employee { attribute string Name; attribute long Salary with valid time; } select Salary from Employees where Name = "John"
Η Ανάγκη Επέκτασης των Γλωσσών Δυνατότητα αυτοματοποίησης λειτουργιών »ορισμός κλάσεων »αυτόματη παραγωγή μεθόδων Υπάρχουσες κλάσεις Employee Student Department Αίτημα για χρήση κλάσης με πρόσθετη λειτουργικότητα Employee με χρόνο εγκυρότητας
Η Ανάγκη Επέκτασης των Γλωσσών Πιο ευκολονόητες εντολές/ερωτήσεις με σαφέστερη σημασιολογία where (an_employee.vt.intersect( GregorianCalendar.create_period("[1994, 1995]")) = 1) where valid(an_employee) intersect period "[1994, 1995]"
Σχεδιαστικοί Στόχοι Επεκτάσεων Συμβατότητα με την επεκτεινόμενη γλώσσα »σε συντακτικό επίπεδο χρήση των υπαρχόντων συντακτικών δομών, όπου είναι δυνατόν χρήση νέων συντακτικών δομών για εισαγωγή ειδικών σημασιολογικών στοιχείων »σε λειτουργικό επίπεδο Πλήρης λειτουργικότητα Προοπτική για μελλοντικές επεκτάσεις
Η Γλώσσα Ορισμού Αντικειμένων Εισαγωγή χρονικής λειτουργικότητας »σε επίπεδο αντικειμένου »σε επίπεδο γνωρίσματος »σε επίπεδο παραμέτρου πράξεως
Η Γλώσσα Ορισμού Δεδομένων Παραμετρικοί τύποι »attribute valid_time Salary; Προτάσεις (clauses) »attribute long Salary valid calendar Gregorian granularity month »interface Employee valid granularity month {...
Επέκταση της έννοιας του κλειδιού Τμήματα εταιρείας Χρόνος ΠροσλήψειςΔιεύθυνση προσωπικού Διάθεση προσωπικού Διεύθυνση προσωπικού Α.Φ.Μ. Χρόνος
Επέκταση της έννοιας του κλειδιού key (dept_name point) key (irs_no extent) key (something period)
Η Γλώσσα Ορισμού Αντικειμένων interface Employee (extent Employees, key Name) { attribute string Name; attribute long salary valid granularity month; relationship Department works_in transaction inverse Department::employees; }; interface Department (extent Departments, key Name) transaction { attribute string Name; relationship Set employees inverse Employee::works_in; };
Η Γλώσσα Ερωτήσεων - Βασική Ανάκτηση Ανάκτηση γνωρισμάτων με χρονικά χαρακτηριστικά »εξ ορισμού συμπεριφορά: μετατροπή στην τρέχουσα τιμή »χρήση των δεσμευμένων λέξεων valid, transaction και bitemporal για αναίρεση της μετατροπής Ανάκτηση αντικειμένων με χρονικά χαρακτηριστικά »καμία αυτόματη μετατροπή »επανορισμός του τελεστή “.”
Η Γλώσσα Ερωτήσεων - Βασική Ανάκτηση select Salary from Employees where Name = "John" select valid Salary from Employees where Name = "John" select d from Departments as d where d.Name = "Παιχνίδια"
Η Γλώσσα Ερωτήσεων - Χρονική Επιλογή Χρόνος Μισθός εργαζομένου t1t1 t2t2 t0t0 (valid e.salary)[instant t 0 ] (valid e.salary)[period ‘[t 1, t 2 ]’] (valid e.salary)[0] (valid e.salary)[0:3]
Επιλογή Βάσει Τιμών Δυνατότητα ορισμού μεταβλητών που διατρέχουν τα χρονικά δεδομένα select e.Name, s as salary, valid(s) as when from Employees as e, valid e.salary as s where e.name like "J*" and s > and valid(s) > instant " " »exists s in valid e.salary: συνθήκη »for all s in valid e.salary: συνθήκη
Μετατροπές από/προς Χρονικούς Τύπους Δημιουργία στιγμιοτύπων χρονικών τύπων »Χρόνος δοσοληψίας: μόνο η τρέχουσα τιμή »Χρόνος εγκυρότητας: σύνολο ζευγών (τιμή, χρονόσημο) (transaction)a_department (valid granularity month)set( struct(value: , vt: period("[ , )")), struct(value: , vt: period("[ , )"))) Μετατροπή στιγμιοτύπων χρονικών τύπων σε σύνολα τιμών > any snapshot e.salary
Συνάθροιση σε Χρονικά Δεδομένα Χρόνος Μισθός ε1ε1 ε2ε2 ε3ε select timeslice,sum(select weighted s.value from partition as s) as PMth, sum(select duration(s.VT) from partition as s) as NumPMth from (select valid e.salary from Employees as e) group by partition valid interval '1' granularity year trailing interval '6' granularity month as timeslice
Συμπεράσματα Ο εμπλουτισμός της λειτουργικότητας πιθανόν να απαιτεί γλωσσικές επεκτάσεις Οι γλωσσικές επεκτάσεις οφείλουν να σέβονται »την επεκτεινόμενη γλώσσα »την προϋπάρχουσα εργασία »όσους μελλοντικά θα προσπαθήσουν να επεκτείνουν τη γλώσσα Χρονικές επεκτάσεις »δήλωση χρονικών δεδομένων »ερωτήσεις σε χρονικά δεδομένα