Architecture
Implementation Issues
Concurrency - OODB's support concurrency,
however this raises the possibility of conflict should multiple
users attempt to amend the same object at the same time. Two common
approaches are used to stop this occurring:
1. Locking: The idea is to make an object
inaccessible to more than one user at a time. Hence, when a user
requests an object it is flagged as 'locked'. Any other user attempting
to request the object must wait until the lock holder relinquishes
the object.
2. Check In-Check Out: The persistence of
objects in OODB's facilitates versioning - creation of a new version
of an object when a request is made to change it.
A new version of an object is 'check-out' when the user requests
to amend it. The version is sent to the users private workspace
effectively setting a write lock against it. Hence, multiple users
can simultaneously access multiple versions of the same object.
When the user is finished the object is 'checked-in' which creates
a new object version [Brown 91].
Check in-check out is the most commonly used approach in OODB's
largely because it greatly improves the concurrency of the system.
Paging - OODB's significantly reduce the
need for paging by loading only those objects that are required
into memory. This is in stark contrast to Relational database's
that loads tables containing required data and unnecessary data
into memory.
Application Development - OODB's are well
integrated with object-orientated programming languages, both
using the same object model. Therefore building an OODB system
with an O-O programming language removes the need for mapping
between database and application language as with relational databases.
This greatly reduces the complexity of the code and the number
of lines of code that need be written.
The use of Object-Oriented Analysis and Object-Oriented Modelling
techniques in the requirements and design phases of the system
development lifecycle can significantly improve the understanding
between analyst, designed and programmer. This can significantly
reduce the number of bugs and implementation errors encountered
in the final system.
Next Page