A database that is managed by an object-oriented database management system (ODBMS). Object databases are closely aligned with a particular object-oriented programming language and enable the data in the objects to be persistently stored without requiring conversion to a relational database (see
O-R mapping). A fair amount of tedious code is eliminated, and the object data are stored much faster.
Complex Structures
Object databases are also suited for applications that are not necessarily based on an object model, but use a large number of in-memory indexes that are difficult to store in a relational database. Object databases may be used for real-time applications whereby they can extend memory beyond the operating system's own virtual memory limit.
Object vs. Relational
Examples of object-oriented databases are ObjectStore and Versant Object Database. Relational databases have also added object-oriented features; for example, UniSQL was one of the first products to support both structures. See
universal server,
ODMG and
object-oriented programming.
Structural Flexibility
While relational databases easily provide one-to-many and many-to-one relationships, object databases allow for many-to-many relationships. Information systems that require complex relationships can store their data in an object database with greater ease than a relational database.
Object Modeling
When information systems are modeled as objects, they can employ the powerful inheritance capability. Instead of building a table of employees with department and job information in separate tables, the type of employee is modeled. The employee class contains the data and the processing for all employees. Each subclass (manager, secretary, etc.) contains the data and processing unique to that person's job. Changes can be made globally or individually by modifying the class in question.