Lec18OODatabase2
Download
Report
Transcript Lec18OODatabase2
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
REMINDER OF THE PROBLEMS
ASSOCIATED WITH AN RDBMS
RELATIONAL DBMSs
PROBLEMS
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’.
WHAT IS AN OODBMS?
OODBMS
OODBMS
WHAT IS AN OODBMS?
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
OOPLs
DBMSs
Complex Objects
Object Identity
Methods & Messages
Inheritance
Polymorphism
Extensibility
Computational Completeness
Persistence
Disc Management
Data Sharing
Reliability
Security
Ad Hoc Querying
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 AND FEATURES
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.
TWO-LEVEL STORAGE MODEL FOR A RDBMS
Main or virtual
memory
Transforming and
type checking
SQL
Secondary
storage
ACCESSING A RECORD USING AN RDBMS
Page
3. Access object
Record
4. Copy modified fields
2. Copy relevant fields
Page
Record
5. Save page
1. Read page
Page
Record
SINGLE-LEVEL STORAGE MODEL
FOR AN OODBMS
Main or virtual
memory
Secondary
storage
ACCESSING AN OBJECT USING AN OODBMS
3. Access object
Page
4. Swizzle pointers
back, etc.
Object
5. Save page
2. Swizzle
pointers, etc.
1. Read page
Page
Object
ADVANTAGES AND DISADVANTAGES OF
AN OODBMS?
OODBMSs
ADVANTAGES
Enriched modelling capabilities
Extensibility
Removal of Impedance Mismatch
Support for schema evolution.
Support for long duration transactions.
Applicable for advanced database applications
Improved performance.
OODBMSs
DISADVANTAGES
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
WHAT IS AN ORDBMS?
ORDBMSs
WHAT IS AN ORDBMS?
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.
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
SQL3
ORDBMSs
WHAT IS SQL3?
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.
HOWEVER, IT SHOULD BE NOTED THAT AS YET
THERE ARE NO IMPLEMENTATIONS OF SQL3!
ORDBMSs
WHAT IS NEW IN SQL3?
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.
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
SQL3 - ROW TYPES
BRANCHNO
10
20
30
ADDRESS
STREET
AREA
CITY
MAIN ST.
HIGH RD.
HIGH ST.
BARKING
LEYTON
MARSDEN
LONDON
LONDON
OXFORD
CREATE TABLE branch (
branchno VARCHAR(3),
address ROW ( street VARCHAR(25),
area VARCHAR(15),
city VARCHAR(15));
COLUMN ATTRIBUTES NO LONGER HAVE TO BE ATOMIC!
ORDBMSs
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;
An example of a User-Defined Routine (UDR)
ORDBMSs
SQL3 - SUB-TYPES & SUPER-TYPES
PERSON-TYPE
date of birth
name
address
tel-no
get_age()
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!
STAFF-TYPE
sno
position
salary
branch
is_manager()
ORDBMSs
SQL3 - SUB-TYPES & SUPER-TYPES
CREATE TYPE staff_type UNDER person_type AS (
sno
position
salary
bno
VARCHAR(5) NOT NULL UNIQUE,
VARCHAR(10) NOT NULL,
NUMBER(7,2),
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;
Another example of a User-Defined Routine (UDR)
ORDBMSs
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!
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);
ORDBMSs
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?
EXAMPLE: FIND ALL MEMBERS OF STAFF!
CREATE TABLE lecturer OF STAFF_TYPE (
PRIMARY KEY sno);
CREATE TABLE admin OF STAFF_TYPE (
PRIMARY KEY sno);
The only way of doing this is to declare the lecturer and
admin tables as sub-tables of a staff super-table!
ORDBMSs
SQL3 - SUB-TABLES & SUPER-TABLES
SUPER-TABLE
CREATE TABLE staff OF STAFF_TYPE (
PRIMARY KEY sno);
SUB-TABLES
CREATE TABLE lecturer OF STAFF_TYPE UNDER staff (
PRIMARY KEY sno);
CREATE TABLE admin OF STAFF_TYPE UNDER staff (
PRIMARY KEY sno);
SOLUTION TO PROBLEM (FIND ALL STAFF):
SQL> SELECT * FROM staff;
ORDBMSs
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:
CREATE TYPE staff_type UNDER person_type AS (
sno
VARCHAR(5) NOT NULL UNIQUE,
position VARCHAR(10) NOT NULL,
salary
NUMBER(7,2),
Could point to a row in ANY
next_of_kin REF(person_type)
table containing a person_type!
bno
VARCHAR(3) NOT NULL)
NOT FINAL;
CREATE TABLE person OF person_type (
oid
REF(person_type) VALUES ARE SYSTEM GENERATED);
ORDBMSs
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!
EXAMPLE:
CREATE TYPE staff_type UNDER person_type AS (
sno
VARCHAR(5) NOT NULL UNIQUE,
position VARCHAR(10) NOT NULL,
salary
NUMBER(7,2),
staff next_of_kin will point
next_of_kin REF(person_type)
to a row in the person table!)
bno
VARCHAR(3) NOT NULL)
NOT FINAL;
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);
ORDBMSs
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
KNOWN AS A ‘BAG’ IN AN OODBMS!
ORDBMSs
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));
THE USE OF COLLECTION TYPES WITHIN
TABLES ENSURE THAT TABLES NO LONGER
HAVE TO BE IN 1NF
REPEATING GROUPS ARE ALLOWED!
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?
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 objectoriented 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).
WHEN TO USE AN OODBMS
OODBMS or ORDBMS
WHEN TO USE AN OODBMS
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 ORDBMS
OODBMS or ORDBMS
WHEN TO USE AN ORDBMS
In applications that process a large number of shortlived (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.