creating a new programming model known as object databases. These
databases attempt to bring the database world and the application
programming world closer together, in particular by ensuring that the
database uses the same type system as the application program. This
aims to avoid the overhead (sometimes referred to as the impedance
mismatch) of converting information between its representation in the
database (for example as rows in tables) and its representation in the
application program (typically as objects). At the same time, object
databases attempt to introduce the key ideas of object programming,
such as encapsulation and polymorphism, into the world of databases.
A variety of these ways have been tried for storing objects in a
database. Some products have approached the problem from the
application programming end, by making the objects manipulated by the
program persistent. This also typically requires the addition of some
kind of query language, since conventional programming languages do
not have the ability to find objects based on their information
content. Others have attacked the problem from the database end, by
defining an object-oriented data model for the database, and defining
a database programming language that allows full programming
capabilities as well as traditional query facilities.
Object databases suffered because of a lack of standardization:
although standards were defined by ODMG, they were never implemented
well enough to ensure interoperability between products. Nevertheless,
object databases have been used successfully in many applications:
usually specialized applications such as engineering databases or
molecular biology databases rather than mainstream commercial data
processing. However, object database ideas were picked up by the
relational vendors and influenced extensions made to these products
and indeed to the SQL language.