An object-oriented database is a database that is based on the object database model. In contrast to the relational database, data is managed here as objects in the sense of object-orientation. The associated database management system is called the object-oriented database management system. Object database and object database management system together form the object database system. An object typically models an object or term and contains attributes that are specific to it; for example, the colour and weight of a car belonging to the object car. Attributes describe an object more closely. Data and methods (the functions for accessing the data) are stored together in the objects.
Object Database Management System
The Database Management System (DBMS) is the software needed to manage a database. In the case of an object database, it is called the Object Database Management System (ODBMS). The ODBMS is responsible for storing and reliable access to the data. In addition to the classic features of a DBMS, it has the following additional requirements to be usable as a full-fledged ODBMS:
- Managing complex objects. An object is made up of any other data type.
- Ensuring object identity. Each object receives a system-wide unique identification OID.
- Encapsulation of objects according to the concept of object-oriented programming. The object is accessed through methods.
- Objects are associated with an object class.
- Object classes are arranged in a class hierarchy.
- Late binding uses overloaded methods for inherited objects.
- The ODBMS must provide a Turing full manipulation language (DML).
In addition to these properties, there are a number of optional requirements that are not detailed here. They were set at the DOOD’98 conference.
The ODMG standardized the Object Query Language (OQL) language as the query language. The data manipulation language is Object Definition Language (ODL).
Object database systems fill a gap in the programming of modern database applications when the application is developed in an object-oriented programming language, but the database is a classic relational database system. Both concepts contradict each other on several important points. This problem is commonly referred to as the “object-relational impedance mismatch”. The solution to the problem is the so-called object-relational images. These are software components that mediate between a relational database and object-oriented software. Using an object database system eliminates the need for this mediation. The application can communicate directly with the database.
There is no need to assemble complex data objects using joins across multiple database tables. Objects can be easily queried through the relationships stored in the database.
Furthermore, an ODBMS helps to access data. Because objects can have a complex structure, semantic relationships between objects are known to the database system. The database system, therefore, has an understanding of what data belongs together. This knowledge can be used when querying the data using a query language such as OQL. Unlike relational database systems, the result of a request is not a set of records. OQL allows the querying of individual objects.
It also solves the object identity problem. While for relational databases the database developer often has to add an artificially generated key (surrogate key) to its data, this is done automatically by an ODBMS in the form of an OID. The management of these IDs is completely taken over by the system.
Object databases have only a low prevalence to date. Accordingly, many interfaces and tools such as JDBC/ODBC, ETL or OLAP are not prepared for use with an ODBMS.
The interfaces between the application program and the object database are not standardized so that in case of problems, the database system can only be replaced with a more powerful one with immense effort. In the case of object-relational illustrations, on the other hand, several established solutions provide access to relational database systems that have been tried and tested in mass use and used in countless projects.
For certain requests, object databases are still at a disadvantage compared to relational databases. This is caused, for example, by access paths to objects across multiple path types (e.g. inheritance and association). This results in exponential complexity and performance issues for write operations in lock management. The performance issues were addressed in the object-relational databases, where only the constructs from object-oriented databases with lower complexity have been taken over.
Object databases were developed in the late 1980s. Thus, they are among the comparatively new database concepts. To date, they play a rather minor role in the database market, which is dominated by relational database systems. Nevertheless, several object database systems have been developed since 2004, such as db4o, the further development of which was discontinued in 2011, some of which are available as open-source.