Das objektorientierte Datenbankmodell sieht die Speicherung von Daten als Objekte vor. Die Modulation von Objekten erfolgt dabei analog zur objektorientierten Programmierung. Ein Objekt definiert eine Entität und enthält:
- die zur Beschreibung der Entität benötigten Eigenschaften (Attribute),
- Verweise (Beziehungen) zu anderen Objekten sowie
- Funktionen, die den Zugriff auf die gespeicherten Daten ermöglichen (Methoden).
Ein Objekt ist somit ein Verbund von Daten, in dem zudem die Schnittstelle definiert ist, über die man auf diese Daten zugreift. Objekte zählt man zu den abstrakten Datentypen.
Jedem Objekt wird vom objektorientierten Datenbank-Managementsystem (ODBMS) automatisch eine ID zugewiesen. Die ermöglicht es, das Objekt eindeutig zu identifizieren und mit Methoden anzusprechen. Diese Objekt-ID ist zustandsunabhängig, d.h. von den Objektwerten entkoppelt. Es ist somit möglich, zwei Objekten mit denselben Daten (d.h. mit demselben Zustand) zwei unterschiedliche IDs zu geben. Damit grenzt sich das objektorientierte Datenbankmodell deutlich vom relationalen Modell ab, bei dem jeder Tupel anhand seiner Daten identifiziert werden kann (z. B. durch einen Primärschlüssel).
Ein weiteres Merkmal des objektorientierten Datenbankmodells ist die Datenkapselung. Auf gespeicherte Daten kann man ausschließlich über die zuvor definierten Methoden zugreifen. Die im Objekt gekapselten Daten sind somit vor Änderungen über nicht definierte Schnittstellen geschützt.
Datenbankstrukturen werden im objektorientierten Datenbankmodell über ein hierarchisches Klassensystem definiert. Unter einer Klasse versteht man in der objektorientierten Programmierung eine Menge von Objekten, die dieselben Merkmale besitzen. Jeder Objektklasse liegt eine Klassendefinition zugrunde. Dieses Schema gibt die Attribute und Methoden aller Objekte der Klasse vor und bestimmt somit, wie diese erzeugt und geändert werden.
Anwender interagieren mit dem ODBMS mit einer an SQL angelehnten Abfragesprache für Objektdatenbanken: der Object Query Language (OQL). Das Ergebnis einer OQL-Abfrage ist nicht wie bei SQL eine Ergebnismenge, sondern eine Liste jener Objekte, die den Bedingungen des OQL-Statements entsprechen.
Bekannte Implementierungen des objektorientierten Datenbankmodells sind Realm, ZODB und Perst.
Entwickelt wurden objektorientierte Datenbanken als Lösung auf ein Problem in der Anwendungsentwicklung, das als Object-relational impedence mismatch(objektrelationale Unverträglichkeit) bezeichnet wird.
Sollen Objekte aus einer objektorientierten Programmiersprache (z.B. C#, C++ oder Java) in einer relationalen Datenbank gespeichert werden, kommt es unweigerlich zu Inkompatibilitäten, die durch grundlegende Unterschiede beider Programmierparadigmen begründet sind.
- Relationale Datenbanken unterstützen keine objektorientierten Konzepte wie Klassen und Vererbung.
- Die zustandsunabhängige Objektidentifikation lässt sich im relationalen Datenbankmodell nicht realisieren.
- Der Schutzmechanismus der Datenkapselung steht im relationalen Datenbankmodell nicht zur Verfügung.
Ein Ansatz, die genannten Inkompatibilitätsprobleme zu vermeiden, besteht darin, auf relationale Datenbanken zu verzichten und im Rahmen der objektorientierten Anwendungsprogrammierung stattdessen auf eine Objektdatenbank zu setzen. Dies geht jedoch zwangsläufig mit dem Nachteil einher, dass in Objekten gekapselte Daten nicht unabhängig von der dazugehörigen Anwendung zur Verfügung stehen. Hinzu kommt die geringe Verbreitung von Objektdatenbanken. Die meisten Tools und Schnittstellen zur Analyse von Datenbeständen sind nach wie vor auf relationale Datenbanken ausgelegt und unterstützen das objektorientierte Datenmodell nicht.
Anwendungsentwickler, die auf die Vorteile einer relationalen Datenhaltung nicht verzichten möchten, haben allerdings die Möglichkeit, Inkompatibilitäten mithilfe objektrelationaler Mapper (O/R-Mapper) zu kompensieren. Funktionalitäten zur objektrelationalen Abbildung (object-relational mapping, ORM) werden über Bibliotheken implementiert. Diese erzeugen eine Abstraktionsschicht zwischen der objektorientierten Anwendung und den in Tabellen gespeicherten Daten.
Auch zahlreiche Hersteller relationaler Datenbanksysteme statten ihre Produkte mit Funktionen aus, die Inkompatibilitäten zur objektorientierten Programmierung kompensieren. Datenbanksysteme dieser Art werden „objektrelational“ genannt.
Objektorientierte Datenbanken übertragen Grundprinzipien der Objektorientierung auf Datenbanktechnologien und bieten sich daher vor allem im Rahmen der objektorientierten Anwendungsprogrammierung an. Entsprechende Datenbanksysteme sind jedoch rar und zum Teil noch nicht marktreif.