|User's Guide: Small Ada 95 Object Database; Version 0.1.0; Document Revision $Revision: 1.9 $|
This section will provide the idea of some of the basic concepts used in the world of object oriented databases.
The primary idea of object databases is to provide persistency for the data associated with objects of a program combined with high performance with respect to retrieval and storage.
In contrast to SQL based RDBMS products, where the representation of data is specified by the SQL specification based on tables and rows, the representation of the data to be stored depends very much on the programming language used and a seamless integration of the database with the language is one key aspect of an object database.
The capability of saving the state of objects to a storage and retrieving it again at start of the application is called object persistency. The implementation of such applications can done relatively simple using files. At the end of the application all data collected during the session if save and reloaded during the next start of the application and the state of the application is evaluated. But the important difference to object persistency is, that the application developer has isolated the key information item which are needed to regenerate the application state and saves them explicitly into a file. The concept of object persistency is more general. The application developer still has to think which object states have to be saved before terminating the application, but the developer does this in terms of objects. At the extreme end the developer could decide the save all objects of the application.
This is where object data bases fit into the picture. ODBMS products are providing the following main features to the application developers:
Retrieval which brings objects into the memory
Seamless integration with the Object concept of a language
The above quoted seamless integration with the object concept depends very much on the language used. In general an object is an instance of a class, the data specification of a class is simple to store together with the data of the object, but at the same time to such a class there a methods (constructors, factories etc.) associated. In case of Java it is no problem to store the class file together with the data. In conventional languages this becomes a problem since very often applications are statically linked system.