An example of this is XML. XML (extensible mark up language) is able to demonstrate pages and programs using Browsers such as I.E.2 onwards and Netscape, This enables distribution and availability to users across networks with different media.
Another example is Java. Java is the latest, fully capable, object-oriented language. It has become the ‘vogue’ due to its compatibility with the Internet and Web browsers. It is designed as a portable language that can run on any web-enabled computer via that computer's Web browser. As such, it is fast becoming, the standard Internet and Intranet programming language to date.
The commercial world has taken up EJB (Enterprise Java Beans) which allows for server and client-side transaction processing, access to data stores, directory services and remote objects and has grown in popularity as the e-commerce and small database market has expanded.
3) So, what is an object-oriented database?
An object-oriented database system is a database system that is based on an object-oriented data model, i.e. it is a database and it is also an object-oriented system.
The Object Oriented Database System Manifesto (OODBMS) is a consortium made up of various major organisations, who have a view to developing a common set of rules as to the definition of a true object-oriented database. They list 3 main characteristics for the classification of a true object-oriented database:
The system must have the following, to enable it to be an OO database:
Complex Objects, Object Identity, Encapsulation, Types or Classes, Inheritance, Overriding combined with late binding, Extensibility, Computational completeness, Persistence, Secondary storage management, Concurrency, Recovery and an 'ad hoc query facility.
These are added to aid usability and include: Multiple Inheritance, Type checking and Inferencing, Distribution, Design transactions and Versions.
These are the program paradigm.
Allows for acceptable implementation according to the preferences of the developer.
4) Object-Oriented Concepts
The key concepts of the object-oriented model are the object, the class, a message, a method, encapsulation, inheritance, and polymorphism.
Objects
Objects mimic real-world entities. Anything can be an object. It can be a person, a thing, or a concept. Objects have states and behaviours, which define the object in all of its possible conditions. When a state changes, the behaviour operates in a certain way. To illustrate, think of a motorised vehicle as the object. Basically it has two states: on and off. When the vehicle is in the on state, the on behaviour describes how it should behave in the on state, i.e. starts engine, etc.
Classes
A class is the definition for a set of similar objects. The class specifies the behaviours and attributes (state values) of an object of that class. An object is said to be an instance of the class. For example a motorised vehicle class would have attributes that describe it as having, an engine, brakes, etc. Instances of this class could be a car, a van, a motorbike, etc.
Messages
Messages can be sent from one object to any other object to enable use of one of its methods.
Methods
Methods are functions or procedures contained within an object that are executed after receiving a message.
Encapsulation
Encapsulation is the means of hiding the details of an object. Encapsulation not only protects an objects attribute values from being changed by other program units, but it also provides easier and cheaper program maintenance.
Inheritance
Inheritance allows for code reuse as it allows new objects to be developed from old ones. For example, using the motorised vehicle to illustrate, if we want to add a boat class to our system, we don’t have to redefine the motorised vehicle class to include boat attributes, or build a boat class to define every attribute of a boat, we can build on the motorised vehicle class by adding a boat class that inherits attributes from the motorised vehicle class.
Polymorphism
Polymorphism allows behaviours that are defined for one object to be shared among other objects. These objects can then extend the behaviours to make them unique unto themselves. Polymorphism is essential in facilitating reuse.
5) Current Object-Oriented Database Options
Over the past few years, database technology has diversified to give the developer four main choices with regard to database systems: Object-oriented Middleware, the traditional Relational database, the Object-relational database, and finally, the Object-oriented database.
Object-oriented Middleware
The first of these approaches is known as ‘middleware’. ‘Middleware’ systems allow the integration of object-oriented applications and relational data. They sit between the object-oriented, processing front end and relational, data storage back end and essentially can allow the users to query or process either relational or/and object-oriented databases.
The need for these systems has come about mainly from large companies needing to tie in legacy systems, which have come about through mergers or acquisitions. They can take advantage of the new technology by connecting these disparate systems, and thus save on the costs that would be incurred by having to develop a totally new system.
There is a diverse range of ‘middleware’ tools available on the market that conform to the ODMG model. An example of such a tool is ‘objectDRIVERTM’.
“ObjectDRIVER is a middleware tool with which one can create an ODMG compliant Object Oriented Database Management Systems (OODBMS) on top of heterogeneous Relational Database Management Systems (RDBMS). It offers C++ and Java language bindings and an Object Query Language (OQL) interface. ObjectDRIVER is particularly well suited to:
1) Reuse of existing databases,
2) Addition of persistence to Object Oriented applications” (Abriev.)
Source:
The picture above demonstrates in a simple form the connectivity of disparate systems and the protocols used to manage this connectivity.
Relational Databases
Relational databases were originally devised by Edgar Frank Codd and major vendors, such as IBM were responsible for their original implementations.
Relational databases store data in tables of rows and columns. Each row is a record, and each row of that column corresponds to fields of that record. The type of data which can be contained within the tables is limited to the basic data types, e.g. integer, decimal, character, string.
The application can interact with the database via the Structured Query Language (SQL). SQL is a standardized query language, which is supported by all of the major vendors. Although SQL does have syntax rules, it is not as complex as a full programming language.
Relational Databases can handle large amounts of data quickly and efficiently, but they weakness is that they cannot handle complex data types and real-world situations.
Object-relational Databases
Object-relational databases were devised in an effort to extend the relational model in order to add object persistency. That is, object-oriented techniques are used to add better storage capabilities to the relational model.
ORDBMSs allow the developers to use the traditional table structure and query/procedural languages familiar to relational databases, but they also allow new object storage and management features associated with object-oriented models, via abstract data types and functions. Abstract data types are constructed by combining the basic alphanumeric data types.
Although the object-relational model provides a richer environment for modelling complex data, it offers little support for the support of object-oriented concepts such as encapsulation, relationships identity, inheritance, and polymorphism.
Object-oriented Databases
Object-oriented database management systems (OODBMSs) first started to be researched in the 1980’s and there are now some 20 products available for OO Databases including: TITANIUM, MATISSE, FastObjects t7, Javlin, PSE Pro for C++ 4.0, PSE Pro for Java 6.05 and ObjectStore Enterprise Edition 6.05.
All object-oriented features, such as, encapsulation, inheritance and polymorphism are supported within the OODBMS model. Object-oriented database systems use the object model and object-oriented programming languages (C++, Smalltalk, Java) for database capabilities.
Unlike relational databases, which use a query language to create and modify objects, object-oriented databases primarily use the programming language (C++, Smalltalk, Java) to access and manipulate objects.
There are no official standards for object-oriented databases, although various major organisations have come into force over the last decade with a view to developing a common set of rules or object models, analysis and design, that can be used and built on by the software community at large. These organisations will be discussed in the next section.
6) The Strengths & Weaknesses of Object-Oriented Databases
Object-oriented database systems have many strengths that compare favourably to the simplistic model of a relational database system. These are outlined below.
6.1) Strengths
Rich extensible type system
The traditional relational database model was very limited to a small set of data types, such as integer, decimal, character, string. In contrast OODBMSs/OODBMSs allow support for the user to define new data types, for example; multimedia types such as images, video and audio.
Better at modelling complex objects
Complex objects are an exact representation of the user perception of a real-world entity. A major strength of object-oriented databases is their ability to represent complex objects. By comparison, relational databases have to transform real-world information into a form that can be stored in table formats.
No impedance mismatch
In relational databases database access via the data manipulation language (i.e. SQL) is tabled-based and via the applications programming language (i.e. C) is value-based. This is called impedance mismatch and means that extra programming is needed to translate between both formats. In contrast, with object-oriented databases, the data manipulation language and the programming language are the same, thus eliminating the impedance mismatch.
Simplifies persistency challenges
Object-oriented databases have the ability to directly manipulate data stored in a database using the object programming language in the same manner as in-memory, non-persistent objects. Relational databases have to use a database sub-language such as embedded SQL.
Increased Productivity
Object-oriented databases can increase productivity brought about by code reuse. Once, an operation has been defined, it can be used by all other parts (applications) of the system, and as such cuts down on development time. If any changes do need to be made, to an operation, then the whole system does not have to be rebuilt, and these changes will also be recognised in all of the other parts of the system, thus reducing maintenance time and costs. Reuse of existing, tested program components also achieves a higher quality of product.
6.2) Weaknesses
In comparison to relational database systems, object-oriented database systems are still quite immature and as such there are several areas of inadequacy that need to be resolved. The main areas of inadequacy are described below.
Lack of a Universal Model
Unlike the relational model, object-oriented databases development lacks a universal well-defined data model and standard query language. Many large vendors have invested a great amount of research and resources into developing their own individually accepted data models and as such are likely to be unwilling to accept the change to a universal data model.
No mathematical foundation
Relational databases use formal mathematical systems to query and manipulate the database, e.g. SQL, and these mathematical systems can be very powerful analysis tools. Object-oriented databases do not have this mathematical base.
Slow Program Navigation
Object-oriented programs make extensive use of pointers. This makes them quite procedural in program navigation, and although their use of pointers is very effective, it’s complexity is believed to make navigation slow in comparison to the methods employed by relational databases.
Developers moving over to the design of object-oriented databases from relational databases, may, have trouble designing object models, and as such poorly designed object models have the potential of making object-oriented database systems run slowly.
Limited platform support
Many object-oriented databases do not offer support across all platforms.
Difficulty in rdbm-oodbm migration
Object-oriented databases differ greatly to relational databases in many ways, and as such it is hugely difficult for a business to change its relational database to an object-oriented database. Further more, once the change has been made it is even more difficult to change back.
Skills Requirements
As object-oriented databases are still used in a minority compared to relational databases there is a lack of individuals possessing the knowledge needed for development, administration and maintenance of object-oriented databases. Developers moving into an object-oriented environment from a procedural programming environment will need substantial education and training. Object-oriented programming has quite a steep learning curve, and in an order to grasp the concepts, developers need to totally change the way they think and learnt about programming.
7) Summary
Relational database systems were originally designed to store limited type, fixed length data on mainframe computers that served a large numbers of users. However, many of the applications in use today, i.e. knowledge base, multimedia, CAD/CAE systems, are used by relatively few users, but involve much more complex data.
Over the last few years, it has become clear that relational databases are inadequate for many of these complex applications. Object-oriented programming languages have brought about a new database model based on object-oriented technologies.
Object-oriented database systems are much better at handling complex real-world objects, they allow for a rich, extensible type system, and offer increased productivity through the extensible reuse of program components.
Object-oriented database technology has diversified to offer three main approaches with regard to database development: Object-oriented Middleware, the traditional Relational database, the Object-relational database, and finally, the Object-oriented database.
Although object-oriented database systems do appear to meet the inadequacies of the relational model, they still only claim about 10% of the database market. There are many issues and weaknesses, such as the lack of a universal data model and language, the limited platform support, and the lack of developer skills, that will need to be resolved if object-oriented databases are to take the market lead.
Bibliography
Versant Corp. (July, 2001).
Objects End-to-End – The ODBMS Advantage.
(visited March 2003).
Jonathon Robie, Dirk Bartels
A Comparison between Relational and Object-Oriented Databases for Object-Oriented Application Development.
(visited March 2003).
Klaus-Dieter Schewe, Bernhard Thalheim, Ingrid Wetzel, Joachim W. Schmidt. (March, 1994).
Extensible Safe Object-Oriented Design of Database Applications.
(visited March 2003).
Steve McClure. (August, 1997).
Object Database vs. Object-Relational Databases.
(visited March 2003).
Steve Franklin.
Object Oriented Databases Are Worth a Closer Look.
(visited March 2003).
Gregory McFarland, Andres Rudmik, David Lange. (January, 1999).
Object-Oriented Database Management Systems Revisited.
(visited March 2003).
Infobjects. (2002).
ObjectDriver Architecture.
(visited March 2003).
Web Services and Service-Oriented Architectures.
Object Database Articles.
visited (March 2003).