64
OBJECT DATABASE SYSTEMS PART ONE Advanced database application areas Problems associated with RDBMSs Third Generation DBMSs What is Object Orientation? What is an OODBMS?

OBJECT DATABASE SYSTEMS PART ONE Advanced database application areas Problems associated with RDBMSs Third Generation DBMSs What is Object Orientation?

Embed Size (px)

Citation preview

OBJECT DATABASE SYSTEMSPART ONE

Advanced database application areas

Problems associated with RDBMSs

Third Generation DBMSs

What is Object Orientation?

What is an OODBMS?

ADVANCED APPLICATION AREAS

DATABASES

Computer-Aided Design (CAD).

Computer-Aided Manufacturing (CAM).

Computer-Aided Software Engineering (CASE).

Multimedia Systems.

Digital Publishing.

Geographic Information Systems (GIS).

Scientific and Medical Systems.

RELATIONAL DBMSs

Poor representation of ‘real world’ entities.

Semantic overloading.

Homogeneous data structure.

Difficulty handling recursive queries.

Impedance mismatch.

PROBLEMS

RELATIONAL DBMSsPROBLEMS - REAL-WORLD OBJECTS

CAR

C#

WHEEL

W#

SEAT

S#

TRIM

T#

C#

W#

C#

HasPart of

Part ofHas

Part of Has

ER Diagram - CarER Diagram - Car

RELATIONAL DBMSsPROBLEMS - REAL-WORLD OBJECTS

Select * From Car, Wheel, Trim, SeatWhere Car.C# = Wheel.C# And Car.C# = Seat.C# And Wheel.W# = Trim.W#;

To find out all details about a Car we would have to carry out a large number of (expensive) JOIN operations.

Car {C#, Chassis#, NoWheels, NoSeats, etc…}

Wheel {W#, C#, Size, Pressure, etc…}

Trim {T#, W#, Material, Cost, etc…}

Seat {S#, C#, Material, Size, Cost,, etc…}

NORMALISATION

RELATIONAL DBMSsPROBLEMS - SEMANTIC OVERLOADING

ER DiagramER Diagram

Doctor {D#, Name, Surgery, etc…}

Patient {P#, D#, Name, Address, DOB, etc…}

DOCTOR

D#

PATIENT

P# D#Oversees

Overseen by

DOCTOR

D#

PATIENT

P# D#Kills

Killed by

We do not record the nature of the

relationship between doctor and patient!

RELATIONAL DBMSsPROBLEMS - HOMOGENEOUS DATA STRUCTURE

333.00STRATFORDKHAN456

500.00BARKINGONO400

340.14BARKINGGREEN350

23.17STRATFORDSMITH345

200.00BARKINGGRAY324

1000.00STRATFORDJONES200

BALANCEBRANCHCUSTOMERACCOUNT

ACCOUNT TABLE

ALL ROWS HAVE THE SAME NUMBER OF ATTRIBUTESALL VALUES IN A COLUMN ARE OF THE SAME TYPEALL ATTRIBUTE VALUES ARE ATOMIC

RELATIONAL DBMSsPROBLEMS - RECURSIVE QUERIES

Question - Who does SMITH work for?

SMITH

Select E2.ENAME From EMP E1, EMP E2Where E1.MGR = E2.EMPNO And E1.ENAME = “SMITH”;

First Level Answer – SMITH works for FORD

FORD

JONESSelect E3.ENAME From EMP E1, EMP E2, EMP E3Where E1.MGR = E2.EMPNO And E2.MGR = E3.EMPNO And E1.ENAME = “SMITH”;

Second Level Answer - SMITH works for JONES

KING

Select E4.ENAME From EMP E1, EMP E2, EMP E3, EMP E4Where E1.MGR = E2.EMP And E2.MGR = E3.EMPNO And E3.MGR = E4.EMPNO And E1.ENAME = “SMITH”;

Third Level Answer – SMITH works for KING

?

RELATIONAL DBMSsPROBLEMS - IMPEDANCE MISMATCH

SQL is a declarative, set-based language that is not computationally complete!

This is expensive in terms of application processing time and programming effort, accounting for around 30% of some projects!

We therefore have to map sets of data into records using memory structures such as cursors.

Database applications require the use of a computationally complete, record-based, procedural language such as C, C++, Java, and PL/SQL.

• Support Complex Active Objects

Allow both data and its associated behaviour to be modelled to any level of complexity.

• Improve Extensibility

Allow for the dynamic extension of both allowable data types and the behaviour associated with these types.

• Reduce the Impedance Mismatch

Ensure that there is a seamless integration between the DBMS data model and that of the programming language accessing the data.

THIRD GENERATION DBMSsMAIN AIMS

Object ModelWHAT IS AN ATOMIC (LITERAL) OBJECT?

An atomic object is a container for a fixed value and serves the same purpose as a constant in a programming language.

An atomic object cannot change its own state.

Examples of atomic types and atomic objects 

Integer - e.g. 1, 2, 3, -5, -45, etc.....Float - e.g. 1.52, -0.3456, 2.000, etc...Boolean - i.e. True or FalseChar - e.g. a, b, c, @, #, !, etc...String - e.g. “Mark”, “Database Systems”

Object ModelWHAT IS A (MUTABLE) OBJECT?

I am anobject!

UNIQUE OBJECT IDENTIFIER (OID)

NAME MARKDOB 14/02/1964JOB LECTURER

ATTRIBUTES

State

RELATIONSHIPS

CHANGE JOBGET AGE

BEHAVIOUR

Methods

Object ModelWHAT IS A CLASS?

I am anobject!

MARK I am alsoan object!

IAN

Object ModelWHAT IS A CLASS?

MARK I am aPerson! So am I! IAN

PERSON CLASS

PERSONNAMEDOBJOBCHANGE JOBGET AGE

Object ModelWHAT IS AN OBJECT IDENTIFIER (OID)?

Each object is uniquely identifiable from all other objects. When an object is first created it is assigned a value to identify it. This value is called its Object Identifier.

System generated. Unique to that object. Invariant in that it cannot be altered. Independent of its attribute values. Invisible to the user.

Object ModelWHAT IS ENCAPSULATION?

GE

T A

GE

ME

TH

OD

CH

AN

GE

JOB

ME

TH

OD

NAME: MARKDOB: 14/02/64JOB: LECTURER

GET AGE

CHANGE JOB

OBJECTOBJECT

Object ModelWHAT IS A COMPLEX OBJECT?

Yes, it’s an object that is made up of other objects!

Wheels, Seats, Chassis, Exhaust, Steering Wheel, etc, etc...

Is a Car a Complex Object?

And… a wheel itself is also a complex object!

Tire, Trim, Hub Cap, etc, etc...

Object ModelWHAT IS A COMPLEX OBJECT?

CAR

TIRE

HUBCAP

TRIM

TIRE

HUBCAP

TRIM

TIRE

HUBCAP

TRIM

TIRE

HUBCAP

TRIM

CHASSIS

WHEEL

WHEEL WHEEL

WHEEL

SEAT SEAT

SEATSEAT

REGISTRATIONNUMBER

Object ModelWHAT IS A COMPLEX OBJECT?

CAR

TIRE

HUBCAP

TRIM

TIRE

HUBCAP

TRIM

TIRE

HUBCAP

TRIM

TIRE

HUBCAP

TRIM

CHASSIS

WHEEL

WHEEL WHEEL

WHEEL

REGISTRATIONNUMBER

SEAT SEAT

SEATSEAT

A Wheel IS-PART-OF a Car

A Car has a COLLECTION of Wheels

Object Model

CARREG-NUMBER: STRINGCHASSIS: STRINGWHEELS: SET<WHEEL>SEATS: SET<SEAT>

WHEELTIRE: STRINGHUB CAP: STRINGTRIM: STRING

WHEELTIRE: STRINGHUB CAP: STRINGTRIM: STRING

WHEELTIRE: STRINGHUB CAP: STRINGTRIM: STRING

WHEELTIRE: STRINGHUB CAP: STRINGTRIM: STRING

SEATTIRE: STRINGHUB CAP: STRINGTRIM: STRING

SEATTIRE: STRINGHUB CAP: STRINGTRIM: STRING

SEATTIRE: STRINGHUB CAP: STRINGTRIM: STRING

SEATTYPE: STRINGCOLOUR: STRINGPOSITION: STRING

WHAT IS A COMPLEX OBJECT?

Object ModelWHAT IS A COLLECTION - SET?

SET - An unordered collection of distinct objects of the same type

e.g, Customers : SET <Customer>;

BILL MARK

HILDA

MARIE

CAROLINE

An instance of CUSTOMERS

Object ModelWHAT IS A COLLECTION - BAG?

555-9999 444-3333

555-9999

111-3333

444-3333

An instance of PHONE_CALLS

BAG - An unordered collection of objects of the same type

e.g, Phone_calls : BAG <TelephoneNumber>;

Object ModelWHAT IS A COLLECTION - LIST?

LIST - An ordered collection of objects of the same type

e.g, MachineFaults : LIST <Fault>;

An instance of MachineFaults

Fault at 11:00:01

Fault at 11:00:20

Fault at 11:31:00

Fault at 11:44:33

Fault at 12:00:00

Object ModelWHAT IS A COLLECTION - ARRAY?

ARRAY – Each object is stored at a particular position

e.g, StudySchedule : ARRAY <Task>;

0 1 2 3 4 5 6 7 8 9 10 11 12 13

TA

SK

#1

TA

SK

#2

TA

SK

#4

TA

SK

#1

TA

SK

#3

TA

SK

#3

TA

SK

#1

An instance of StudySchedule

Object ModelWHAT IS A STRUCTURE?

A fixed number of named slots, each of which can contain an object of a particular type.

e.g, CustomersDetails : STRUCTURE < forenames : List < String>, family_name : String, customer_no : Integer >

Marie

Rebecca

CarolineCampbell 9603456

forenames family_name customer_no

An instance of CustomerDetails

Object ModelWHAT IS INHERITANCE?

Personnameaddresstelephone_nochange_name (...)change_address (...)

Employeeemployee_nopromote(...)pay_employee (...)

Customercustomer_noplace_order(...)make_payment(...)

TradeCustomertrade_discount%place_order(...)make_payment(...)

IS-AIS-A

IS-A

Object ModelWHAT IS MULTIPLE INHERITANCE?

Personnameaddresstelephone_nochange_name (...)change_address (...)

Employeeemployee_nopromote(...)pay_employee (...)

Customercustomer_noplace_order(...)make_payment(...)

Employee_Customerstaff_discount_cardplace_order(...)make_payment(...)

TradeCustomertrade_discount%place_order(...)make_payment(...)

IS-AIS-A

Object ModelWHAT ARE OBJECT RELATIONSHIPS?

Child ........

Mother ........

* child_of 1

mother_of

one-to-many

Husband ........

Wife ........

1 husband_of 1

wife_of

one-to-one

Child ........

Parent ........

* child_of *

parent_of

many-to-many

Object ModelWHAT ARE METHODS AND MESSAGES?

GE

T A

GE

ME

TH

OD

B

OD

Y

CH

AN

GE

JOB

ME

TH

OD

B

OD

Y

NAME: MARKDOB: 14/02/64JOB: LECTURER

GET AGE MESSAGE

CHANGE JOB MESSAGE

US

ER

PR

OG

RA

M

OBJECTOBJECT

DISK

Object ModelWHAT IS POLYMORPHISM?

CLOCK . . .

SetTime ()SetAlarm ()ShowTime ()

ANALOGUECLOCK

. . .

SetTime ()SetAlarm ()ShowTime ()

DIGITALCLOCK

. . .

SetTime ()SetAlarm ()ShowTime ()

11:00 PM

DIFFERENT TYPES OF OBJECT RESPOND

DIFFERENTLY TO THE SAME MESSAGE

Object ModelWHAT IS OVERIDING?

When a sub-class’s method body is used rather than the body of the super-class’s method it is known as overriding.

CUSTOMER

Customer No.

PlaceOrder()MakePayment()

TRADE CUSTOMER

TradeDiscount%

PlaceOrder()

METHOD BODY1. Create order details2. Calculate total cost

METHOD BODY1. Create order details2. Calculate total cost3. Apply Trade Discount

SUP

ER

-CL

ASS

SUB

-CL

AS

S

IS-A

Object ModelWHAT IS LATE BINDING?

Late or dynamic binding is the ability of the runtime system to determine which method body to execute depending on the type of an object.

CUSTOMERTIRE: STRINGHUB CAP: STRINGTRIM: STRING

Trade CustomerTIRE: STRINGHUB CAP: STRINGTRIM: STRING

CUSTOMERTIRE: HUB CAP: TRIM: STRIN

Trade CustomerCUSTOMER NOPLACE_ORDERMAKE_PAYMENT

Customers := SET <Customer>

FOR x IN CustomersDO x.PLACE_ORDEREND

Where x := an individual Customer Object!

It doesn’t matter if a customer is a trade customer, late binding ensures the appropriate PLACE_ORDER method body is called!

OODBMSWHAT 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.

OOPLs DBMSs 

Complex Objects PersistenceObject Identity Disc ManagementMethods & Messages Data SharingInheritance ReliabilityPolymorphism SecurityExtensibility Ad Hoc QueryingComputational Completeness

OBJECT ORIENTED DATABASE MANAGEMENT SYSTEM

OODBMSWHAT AN OODBMS SHOULD SUPPORT?

     Atomic and complex objects     Methods and messages     Object Identity     Single inheritance     Polymorphism - overloading and late-binding     Persistence     Shared Objects 

In addition an OODBMS can optionally support 

     Multiple inheritance     Exception messages     Distribution     Versioning

LECTURE PLAN

OBJECT DATABASE SYSTEMSPART 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

REQUIREMENTS AND FEATURES

OODBMSs

Requirements:

Transparently add persistence to OO programming languagesAbility to handle complex data - i.e., Multimedia dataAbility to handle data complexity - i.e., Interrelated data itemsAdd 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

SQL

Transforming andtype checking

Main or virtual memory

Secondarystorage

Record

Record

Record

3. Access object

4. Copy modified fields 2. Copy relevant fields

5. Save page 1. Read page

Page

Page

Page

Ap

pli cation

m

emory

DB

MS

Cach

eS

econd

aryS

torage

ACCESSING A RECORD USING AN RDBMS

Main or virtual memory

Secondarystorage

SINGLE-LEVEL STORAGE MODELFOR AN OODBMS

3. Access object

5. Save page 1. Read page

Page

Page

Ap

pli cation

m

emory

Secon

dary

Storage

Object

Object

4. Swizzle pointers back, etc.

2. Swizzle pointers, etc.

ACCESSING AN OBJECT USING AN OODBMS

ADVANTAGES

OODBMSs

Enriched modelling capabilities

Extensibility

Removal of Impedance Mismatch

Support for schema evolution.

Applicable for advanced database applications

Improved performance.

DISADVANTAGES

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

WHAT IS AN ORDBMS?

In essence ORDBMSs are an attempt to add OO to Tables!

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.

MAJOR DIFFERENCE BETWEEN AN ORDBMS AND AN OODBMS

OODBMSs try to add DBMS functionality to one or more OO programming languages.

ORDBMSs

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

WHAT IS SQL3?

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.

HOWEVER, IT SHOULD BE NOTED THAT AS YET THERE ARE NO IMPLEMENTATIONS OF SQL3!

WHAT IS NEW IN 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.

SQL3 - EXTENDED BASE TYPES

ORDBMSs

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, ...

SQL3 - ROW TYPES

ORDBMSs

CITYAREASTREET

ADDRESS

OXFORDMARSDENHIGH ST.30

LONDONLEYTONHIGH RD.20

LONDONBARKINGMAIN ST.10

BRANCHNO

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!

SQL3 - USER-DEFINED TYPES

ORDBMSs

CREATE TYPE person_type AS (PRIVATE

date_of_birth DATECHECK (date_of_birth > DATE ‘1900-01-

1901’),

PUBLICname 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

*/RETURNEND)

NOT FINAL; An example of a User-Defined Routine (UDR)

SQL3 - SUB-TYPES & SUPER-TYPES

ORDBMSs

PERSON-TYPE

date of birthnameaddresstel-no

get_age()

STAFF-TYPE

snopositionsalarybranch

is_manager()

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!

SQL3 - SUB-TYPES & SUPER-TYPES

ORDBMSs

Another example of a User-Defined Routine (UDR)

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

BEGINIF s.position = ‘Manager’ THEN

RETURN TRUE; ELSE

RETURN FALSE; END IFEND)

NOT FINAL;

SQL3 - TYPES & TABLES

ORDBMSs

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!

CREATE TABLE staff OF STAFF_TYPE (PRIMARY KEY sno);

EXAMPLE:

In order to create staff instances we first have to do one of the following:

CREATE TABLE staff (info STAFF_TYPE,PRIMARY KEY sno);

SQL3 - SUB-TABLES & SUPER-TABLES

ORDBMSs

PROBLEM - What happens if we create two or more tables for the same TYPE? How do we find all TYPE instances?

CREATE TABLE lecturer OF STAFF_TYPE (PRIMARY KEY sno);

EXAMPLE: FIND ALL MEMBERS OF STAFF!

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!

SQL3 - SUB-TABLES & SUPER-TABLES

ORDBMSs

CREATE TABLE lecturer OF STAFF_TYPE UNDER staff (PRIMARY KEY sno);

CREATE TABLE admin OF STAFF_TYPE UNDER staff (PRIMARY KEY sno);

CREATE TABLE staff OF STAFF_TYPE (PRIMARY KEY sno);

SUPER-TABLE

SUB-TABLES

SOLUTION TO PROBLEM (FIND ALL STAFF):

SQL> SELECT * FROM staff;

SQL3 - REFERENCE TYPES AND OIDS

ORDBMSs

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!

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;

CREATE TABLE person OF person_type (oid REF(person_type) VALUES ARE SYSTEM

GENERATED);

EXAMPLE:

Could point to a row in ANY table containing a person_type!

SQL3 - REFERENCE TYPES AND OIDS

ORDBMSs

To ensure that a REFERENCE is limited to a single table, a SCOPE has to be added to the table using the REFERENCE!

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;

CREATE TABLE person OF person_type (oid REF(person_type) VALUES ARE SYSTEM

GENERATED);

EXAMPLE:

CREATE TABLE staff OF staff_type (PRIMARY KEY sno,SCOPE FOR next_of_kin IS person);

staff next_of_kin will point to a row in the person table!)

SQL3 - COLLECTION TYPES

ORDBMSs

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

SQL3 COLLECTION TYPES ARE THE EQUIVALENT OF COLLECTION TYPES IN OODBMSs

KNOWN AS A ‘BAG’ IN AN OODBMS!

SQL3 - COLLECTION TYPES

ORDBMSs

CREATE TABLE branch (bno NUMBER(3),address ROW ( street

VARCHAR(15),area

VARCHAR(15),city

VARCHAR(15)staff SET (STAFF_TYPE));

EXAMPLE

THE USE OF COLLECTION TYPES WITHIN TABLES ENSURE THAT TABLES NO LONGER

HAVE TO BE IN 1NF

REPEATING GROUPS ARE ALLOWED!REPEATING GROUPS ARE ALLOWED!

SQL3 - OTHER ADDITIONS

ORDBMSs

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 ORDBMSCONSIDERATIONS

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 ORDBMSCONSIDERATIONS

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 ORDBMSCONSIDERATIONS

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

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

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.