Upload
britton-todd
View
229
Download
4
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?
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
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.