An object-oriented database management system (OODBMS), sometimes shortened to ODBMS for object database management system, is a database management system (DBMS) that supports the modelling and creation of data as objects. This includes some kind of support for classes of objects and the inheritance of class properties and methods by subclasses and their objects.
There is no widely agreed-upon standard for what constitutes an OODBMS, although the Object Data Management Group (ODMG) published The Object Data Standard ODMG 3.0 in 2001 which describes an object model as well as standards for defining and querying objects. The group has since disbanded.
Features of an ODBMS
In their influential paper, The Object-Oriented Database Manifesto, Malcolm Atkinson and others define an OODBMS as follows:
An object-oriented database system must satisfy two criteria: it should be a DBMS, and it should be an object-oriented system, i.e., to the extent possible, it should be consistent with the current crop of object-oriented programming languages.
The first criterion translates into five features: persistence, secondary storage management, concurrency, recovery and an ad hoc query facility.
The second one translates into eight features: complex objects, object identity, encapsulation, types or classes, inheritance, overriding combined with late binding, extensibility and computational completeness.
RDBMS vs. ODBMS
Relational database management systems (RDBMS) currently are the most widely-deployed type of DBMS. The relational abstraction of rows and columns accessed using Structured Query Language (SQL) is well understood by most IT professionals.
In contrast, object database systems can be better-suited for storing and manipulating complex data relationships. It can be more difficult for applications to access data with many relationships stored across multiple tables in an RDBMS than to access the data as an object in an ODBMS.
Furthermore, many developers use object-oriented programming (OOP) languages (such as Java, C++, Python and others) to build applications. Using an RDBMS to store and retrieve objects requires conversions between complex objects and rows from multiple relational database tables. Object-relational mapping (ORM) tools can simplify this effort, but do not eliminate the overhead of mapping.
The advantage of the ODBMS when writing applications using the OOP approach is the removal of impedance mismatch; that is, the program manages and works with objects instead of rows of data that must be combined into an object.
Many RDBMS vendors have extended their offerings into the object-relational database management system (ORDBMS). Of course, superimposing some object-oriented concepts on relational databases does not provide the full feature set of an ODBMS.