440 likes | 783 Views
Object (and Object-Relational) Database Systems (part two) CSS263 Lecture 18. LECTURE PLAN OBJECT DATABASE SYSTEMS PART TWO What is an OODBMS? Advantages and Disadvantages of OODBMSs What is an ORDBMS? What is SQL3? Comparison of OODBMSs and ORDBMSs When to use an OODBMS
E N D
Object (and Object-Relational) Database Systems (part two) CSS263 Lecture 18
LECTURE PLAN OBJECT DATABASE SYSTEMS PART TWO • What is an OODBMS? • Advantages and Disadvantages of OODBMSs • What is an ORDBMS? • What is SQL3? • Comparison of OODBMSs and ORDBMSs • When to use an OODBMS • When to use an ORDBMS
RELATIONAL DBMSs • Poor representation of ‘real world’ entities. • Semantic overloading. • Poor support for integrity and business constraints. • Homogeneous data structure. • Limited operations. • Difficulty handling recursive queries. • Impedance mismatch. • Difficulty with ‘Long Transactions’. PROBLEMS
OODBMS WHAT IS AN OODBMS? OOPLsDBMSs Complex Objects Persistence Object Identity Disc Management Methods & Messages Data Sharing Inheritance Reliability Polymorphism Security Extensibility Ad Hoc Querying Computational Completeness Object Oriented Database Management Systems (OODBMSs) are an attempt at marrying the power of Object Oriented Programming Languages with the persistence and associated technologies of a DBMS. OBJECT ORIENTED DATABASE MANAGEMENT SYSTEM
OODBMS THE OO DATABASE MANIFESTO CHARACTERISTICS THAT ‘MUST BE’ SUPPORTED · Complex objects · Object Identity · Encapsulation · Classes · Inheritance · Overriding and late-binding · Extensibility · Computational completeness · Persistence · Concurrency · Recovery · Ad-hoc querying
OODBMSs Requirements: Transparently add persistence to OO programming languages Ability to handle complex data - i.e., Multimedia data Ability to handle data complexity - i.e., Interrelated data items Add DBMS Features to OO programming languages Features: The host programming language is also the DML. The in-memory and storage models are merged. No conversion code between models and languages is needed. REQUIREMENTS AND FEATURES
TWO-LEVEL STORAGE MODEL FOR A RDBMS Main or virtual memory Transforming and type checking SQL Secondary storage
3. Access object 4. Copy modified fields 2. Copy relevant fields 5. Save page 1. Read page ACCESSING A RECORD USING AN RDBMS Page Application memory Record Page DBMS Cache Record Page Secondary Storage Record
Main or virtual memory Secondary storage SINGLE-LEVEL STORAGE MODEL FOR AN OODBMS
ACCESSING AN OBJECT USING AN OODBMS Page 3. Access object 2. Swizzle pointers, etc. Application memory 4. Swizzle pointers back, etc. Object 5. Save page 1. Read page Page Secondary Storage Object
OODBMSs • Enriched modelling capabilities • Extensibility • Removal of Impedance Mismatch • Support for schema evolution. • Support for long duration transactions. • Applicable for advanced database applications • Improved performance. ADVANTAGES
OODBMSs • Lack of a universal data model • Lack of experience • Lack of standards. • Ad-hoc querying compromises encapsulation. • Locking at object-level impacts performance • Complexity • Lack of support for views • Lack of support for security DISADVANTAGES
ORDBMSs Definition: Object-Relational databases extend the Relational Data Model to address those weaknesses identified previously. An Object-Relational database adds features associated with object-oriented systems to the Relational Data Model. WHAT IS AN ORDBMS? In essence ORDBMSs are an attempt to add OO to Tables!
ORDBMSs MAJOR DIFFERENCE BETWEEN AN ORDBMS AND AN OODBMS OODBMSs try to add DBMS functionality to one or more OO programming languages. REVOLUTIONARY IN THAT THEY ABANDON SQL ORDBMSs try to add richer data types and OO features to a relational DBMS. EVOLUTIONARY IN THAT THEY EXTEND SQL
ORDBMSs SQL3 or SQL/99: SQL3 is a superset of SQL/92, in that it supports all of the constructs supported by that standard, as well as adding new ones of its own. Therefore, whatever worked in an implementation of SQL/92 should also work in an implementation of SQL3. WHAT IS SQL3? HOWEVER, IT SHOULD BE NOTED THAT AS YET THERE ARE NO IMPLEMENTATIONS OF SQL3!
ORDBMSs • Extended Base Types. • Row Types. • User-Defined Types. • User-Defined Routines. • Sub-Types and Super-Types. • Sub-Tables and Super-Tables. • Reference Types and Object Identity. • Collection Types. WHAT IS NEW IN SQL3?
ORDBMSs SQL3 - EXTENDED BASE TYPES ONE OF THE REASONS FOR THE MOVE AWAY FROM RDBMSs IS THE LIMITED BASE TYPE AVAILABILITY: BASE TYPES AVAILABLE IN SQL/92 INCLUDE: NUMBER, CHAR, DATE, ... BASE TYPES IN SQL3 ARE EXTENSIBLE. THEREFORE THE FOLLOWING MUCH NEEDED TYPES COULD BE ADDED (PROVIDED SOMEBODY CREATES THEM!) VIDEO, IMAGE, AUDIO, TEXT, SPATIAL, TEMPORAL, GEOGRAPHIC, WEB-PAGES, ...
ORDBMSs BRANCHNO ADDRESS CITY STREET AREA 10 MAIN ST. BARKING LONDON 20 HIGH RD. LEYTON LONDON 30 HIGH ST. MARSDEN OXFORD • CREATE TABLE branch ( • branchno VARCHAR(3), • address ROW ( street VARCHAR(25), • area VARCHAR(15), • city VARCHAR(15)); SQL3 - ROW TYPES COLUMN ATTRIBUTES NO LONGER HAVE TO BE ATOMIC!
ORDBMSs An example of a User-Defined Routine (UDR) SQL3 - USER-DEFINED TYPES • CREATE TYPE person_type AS ( • PRIVATE • date_of_birth DATE • CHECK (date_of_birth > DATE ‘1900-01-1901’), • PUBLIC • name VARCHAR(15) NOT NULL, • address VARCHAR(50) NOT NULL, • tel_no VARCHAR(13) NOT NULL, • FUNCTION get_age (P person_type) • RETURNS INTEGER • /* code to calculate age from date_of_birth */ • RETURN • END) • NOT FINAL;
ORDBMSs PERSON-TYPE date of birth name address tel-no get_age() STAFF-TYPE sno position salary branch is_manager() SQL3 - SUB-TYPES & SUPER-TYPES Sub-Types and Super-Types are used to allow for INHERITANCE in SQL3 A Sub-Type can inherit from more than one Super-Type. Multiple Inheritance is allowed!
ORDBMSs Another example of a User-Defined Routine (UDR) SQL3 - SUB-TYPES & SUPER-TYPES • CREATE TYPE staff_type UNDER person_type AS ( • sno VARCHAR(5) NOT NULL UNIQUE, • position VARCHAR(10) NOT NULL, • salary NUMBER(7,2), • bno VARCHAR(3) NOT NULL, • CREATE FUNCTION is_manager (s STAFF_TYPE) • RETURNS BOOLEAN • BEGIN • IF s.position = ‘Manager’ THEN • RETURN TRUE; • ELSE • RETURN FALSE; • END IF • END) • NOT FINAL;
ORDBMSs EXAMPLE: In order to create staff instances we first have to do one of the following: • CREATE TABLE staff OF STAFF_TYPE ( • PRIMARY KEY sno); • CREATE TABLE staff ( • info STAFF_TYPE, • PRIMARY KEY sno); SQL3 - TYPES & TABLES In order to remain upwardly compatible with SQL-92, TYPES can ONLY be instantiated through SQL Tables! Therefore, in order to create instances of a type we first have to create a table to store those instances in!
ORDBMSs EXAMPLE: FIND ALL MEMBERS OF STAFF! • CREATE TABLE lecturer OF STAFF_TYPE ( • PRIMARY KEY sno); • CREATE TABLE admin OF STAFF_TYPE ( • PRIMARY KEY sno); SQL3 - SUB-TABLES & SUPER-TABLES PROBLEM - What happens if we create two or more tables for the same TYPE? How do we find all TYPE instances? The only way of doing this is to declare the lecturer and admin tables as sub-tables of a staff super-table!
ORDBMSs • CREATE TABLE lecturer OF STAFF_TYPE UNDERstaff ( • PRIMARY KEY sno); • CREATE TABLE staff OF STAFF_TYPE ( • PRIMARY KEY sno); • CREATE TABLE admin OF STAFF_TYPE UNDERstaff ( • PRIMARY KEY sno); SQL3 - SUB-TABLES & SUPER-TABLES SUPER-TABLE SUB-TABLES SOLUTION TO PROBLEM (FIND ALL STAFF): SQL>SELECT * FROM staff;
ORDBMSs • CREATE TYPE staff_type UNDER person_type AS ( • sno VARCHAR(5) NOT NULL UNIQUE, • position VARCHAR(10) NOT NULL, • salary NUMBER(7,2), • next_of_kin REF(person_type) • bno VARCHAR(3) NOT NULL) • NOT FINAL; Could point to a row in ANY table containing a person_type! • CREATE TABLE person OF person_type ( • oid REF(person_type) VALUES ARE SYSTEM GENERATED); SQL3 - REFERENCE TYPES AND OIDS A Reference Type is the SQL3 equivalent of an OID in an OODBMS. Reference Types allow a row to be shared among multiple tables, and enable users to replace complex join operations with path expressions! EXAMPLE:
ORDBMSs EXAMPLE: • CREATE TYPE staff_type UNDER person_type AS ( • sno VARCHAR(5) NOT NULL UNIQUE, • position VARCHAR(10) NOT NULL, • salary NUMBER(7,2), • next_of_kin REF(person_type) • bno VARCHAR(3) NOT NULL) • NOT FINAL; staff next_of_kin will point to a row in the person table!) • CREATE TABLE person OF person_type ( • oid REF(person_type) VALUES ARE SYSTEM GENERATED); • CREATE TABLE staff OF staff_type ( • PRIMARY KEY sno, • SCOPE FOR next_of_kin IS person); SQL3 - REFERENCE TYPES AND OIDS To ensure that a REFERENCE is limited to a single table, a SCOPE has to be added to the table using the REFERENCE!
ORDBMSs KNOWN AS A ‘BAG’ IN AN OODBMS! SQL3 - COLLECTION TYPES SQL3 COLLECTION TYPES ARE THE EQUIVALENT OF COLLECTION TYPES IN OODBMSs List (base) - ordered collection allows duplicates Array (base) - one-dimensional array, max no. Set (base) - unordered collection, no duplicates Multiset(base) - unordered collection, allows duplicates
ORDBMSs THE USE OF COLLECTION TYPES WITHIN TABLES ENSURE THAT TABLES NO LONGER HAVE TO BE IN 1NF REPEATING GROUPS ARE ALLOWED! SQL3 - COLLECTION TYPES EXAMPLE • CREATE TABLE branch ( • bno NUMBER(3), • address ROW ( street VARCHAR(15), • area VARCHAR(15), • city VARCHAR(15) • staff SET (STAFF_TYPE));
ORDBMSs SQL3 - OTHER ADDITIONS THE MAIN ADDITIONS TO SQL THAT ARE NOT SPECIFICALLY ASSOCIATED WITH ADDING OBJECT-SUPPORT ARE THE FOLLOWING: SQL IS NOW COMPUTATIONALLY COMPLETE PERSISTENT STORED MODULES ARE SUPPORTED TRIGGERS ARE SUPPORTED
OODBMS or ORDBMS CONSIDERATIONS OODBMS - put more emphasis on the role of the client, i.e., Client side caching! This can radically improve long, process intensive, transactions. ORDBMS - SQL is still the language for data definition, manipulation and query – Still have Impedance Mismatch! OODBMSs have been optimised to directly support object-oriented applications and specific OO languages. ORDBMSs are supported by most of the ‘major players’ in the DBMS market place.
OODBMS or ORDBMS CONSIDERATIONS ORDBMS - Most third-party database tools are written for the relational model (SQL-92), and will therefore be backward-compatible with SQL3. ORDBMS - search, access and manipulate complex data types in the database with standard SQL (SQL3), without breaking the rules of the relational data model. OODBMS – The ODMG standard group’s OQL is now the de-facto query language amongst OODBMS vendors. However, in order to use it, collection objects (known as extents) have to first be created for each class.
OODBMS or ORDBMS CONSIDERATIONS OODBMS - In order to realise the value of an OODBMS you must build your application using methods written in one of several object-oriented language (i.e. C++, Java, Smalltalk).
OODBMS or ORDBMS In applications that generally retrieve relatively few (generally physically large) highly complex objects and work on them for fairly long periods of time. This will necessitate the use of client caching, pointer swizzling, and non-locking forms of concurrency control. WHEN TO USE AN OODBMS
OODBMS or ORDBMS In applications that process a large number of short-lived (generally ad-hoc query) transactions on data items that can be arbitrarily complex in structure. Where the main emphasises is on efficient query optimisation to limit disk accesses, and traditional concurrency control is acceptable. WHEN TO USE AN ORDBMS