340 likes | 350 Views
Explore OO and OR DBMSs, complex data types, inheritance, UDFs, Oracle extensions, and why they are essential beyond RDBMSs.
E N D
Temple University – CIS Dept.CIS616– Principles of Data Management V. Megalooikonomou Object-Oriented and Object-Relational DBMSs (based on notes by Silberchatz,Korth, and Sudarshan and notes by C. Faloutsos at CMU)
Detailed outline • OO DBMSs • OR DBMS • complex data types • inheritance • UDFs • ORACLE-specific extensions • Conclusions
Why more than RDBMSs? • RDBMS: tuples, of numbers + strings • What apps need only those?
Why more than RDBMSs? • RDBMS: tuples, of numbers + strings • What apps need only those? • Banks • Airlines • Retailer stores • ... • Q: Other apps, with more req’s?
Why more than RDBMS’s • Q: Other apps, with more req’s? • A: • text • multimedia; financial apps/forecasting • Geographic Inf. Sys. • CAD/CAM • Network management
Their specs? • complex objects (sets/vectors) • inheritance • new data types (image, video, ...) and user defined functions (UDFs)
Two solutions: • Object Oriented DBMSs • Object Relational DBMSs
OO DBMS • roughly, ‘C++’ with persistence • commercial systems: • O2; ObjectStore; Objectivity • Object Database Management Group (ODMG): defined standards • BUT: OODBMS have small market share • Hence: OR-DBMSs
OR DBMSs traditional DBMS with attempts to provide • enriched data types • user defined data types • support for large / complex objects • inheritance
SQL-3 proposed extensions • complex types (sets, lists, multisets) • inheritance (IS-A hierarchies) • User Defined Functions (UDFs)
Complex types sample syntax e.g., create type MyDate ( day decimal(2), month char(3), year decimal (4) );
Complex types sample syntax e.g., Row Types: create row type Doc ( callnum varchar2(10), title char(20), authors list(varchar2(20)) ); create table document oftype Doc;
Complex types sample syntax DML - insertions: insertinto document values (‘QA123.45’, ‘DB systems’, set(‘Smith’, ‘Johnson’) );
Inheritance sample syntax single inheritance: create type Person ( ssn varchar2(10), name char(20)); create type Student (major varchar2(5)) under Person;
Inheritance sample syntax multiple inheritance: create type Teacher ( salary integer) under Person; create type TA under Student, Teacher;
Inheritance sample syntax multiple inheritance: constraints: one TA record corresponds to exactly one ‘Teacher’ and ‘Student’ record insertions/deletions/updates: appropriately propagated.
Object Ids and references can define ‘object ids’ for each object, and use them, effectively as pointers.
Query language extensions sample syntax (recall:) create row type Doc ( callnum varchar2(10), title char(20), authors list(varchar2(20)) ); create table document oftype Doc; find titles, (co-)authored by ‘Smith’
Query language extensions sample syntax select title from document where ‘Smith’ in authors;
SQL-3 proposed extensions - overview • complex types (sets, lists, multisets) • inheritance (IS-A hierarchies) • User Defined Functions (UDFs)
UDFs sample syntax createfunctionauthor-count (adoc document) returns integer as selectcount (authors) from adoc; select title from document d whereauthor-count(d) > 1
UDFs UDFs: stay within the DBMS, for everybody to use!
Detailed outline • OO DBMSs • OR DBMS • complex data types • inheritance • UDFs • ORACLE-specific extensions • Conclusions
ORACLE-specific • Large objects • PL/SQL and UDFs
ORACLE-specific • Large objects, e.g., video, images, 3d-MRI scans • new data types:
ORACLE-specific • Large objects, e.g., video, images, 3d-MRI scans • new data types: LOB (=Large OBject) • BLOB: (up to 4Gb; binary: jpeg, mpeg, ...) • CLOB: (up to 2Gb; character: english text) • NCLOB:(..............; multi-byte characters) • (LONG: similar, for backwards compatibility)
ORACLE-specific • stored procedures • PL/SQL: a ‘C’-like language • too large to describe here… • example of a stored procedure:
ORACLE-specific SQL> create or replace procedure del-st-rec (s-id number) as begin deletefrom student where s-id = ssn; end del-st-rec; SQL> execute del-st-rec ( 123 );
IllustraInformixIBM’s Informix Dynamic Server • Illustra • Informix Dynamic Server (Universal Data Option) • IBM DB2 Universal Database – Informix Product family
IllustraInformixIBM’s Informix Dynamic Server • Datablades technology - extensions for specific data domains • Image • Text • Geodetic • Spatial • Time series • Video • Web
Informix - Sample SQL queries • COMPUTE VOLUME OF A GIVEN STRUCTURE • return volume((select unique image from structures • where side='Left' and atlas='Brodmann' and name='17')) ; • DISPLAY GIF OF ALL LESIONS SUMMED UP • insert into temp_image_1 values(permanent(map_image(sum_images(( • select image from patient_images where image.description='All Lesions')), 'redgreenscale'))) ; • select TS.SliceNo, slice(TS.SliceNo,overlay.image)::GIF as LesionDensity • from TalairachSlices TS, temp_image_1 overlay order by SliceNo ;
Detailed outline • OO DBMSs • OR DBMS • complex data types • inheritance • UDFs • ORACLE-specific extensions • Informix • Conclusions
Conclusions • OO and OR DBMS strive for • complex data types • inheritance • UDFs • OR DBMSs: overwhelming market share (why?)
Conclusions • OR DBMSs: overwhelming market share (why?) • SQL is more standardized than OO query languages • legacy data are in SQL • more SQL programmers are available