Objektorientierte Datenbank: Der Geheimtipp unter den Datenbankmodellen
Die meisten Menschen, die regelmäßig mit Datenbanken zu tun haben – zum Beispiel in der Softwareprogrammierung, bei der Webentwicklung oder im Bibliothekswesen – arbeiten mit relationalen Datenbanken, beziehungsweise mit entsprechenden Datenbankmanagementsystemen (DBMS) wie MySQL oder MariaDB. Doch es gibt auch Alternativen: Objektorientierte Datenbanken (auch als Objektdatenbanken bekannt) sind zwar nur selten im Einsatz, können aber einige Projekte enorm weiterbringen.
Was sind Objektdatenbanken?
Das objektorientierte Datenbankmodell schnürt quasi zusammengehörige Pakete: Ein Datensatz wird mit all seinen Attributen zu einem Objekt zusammengefasst. So sind alle Informationen direkt verfügbar. Statt also alles auf verschiedene Tabellen zu verteilen, sind die Daten gebündelt abrufbar. Neben den Attributen werden in den Objekten auch Methoden gespeichert. Hierbei wird die Nähe der Datenbanken zu objektorientierten Programmiersprachen klar. Wie bei der Programmierweise hat jedes Objekt bestimmte Aktivitäten, die es ausführen kann.
Objekte wiederum werden zu Klassen zusammengefasst. Oder genauer formuliert: Ein Objekt ist eine konkrete Einheit einer abstrakten Klasse. Hierdurch entsteht eine Hierarchie aus Klassen und Unterklassen. Innerhalb dieses Konstrukts ist es so, dass Unterklassen die Eigenschaften von übergeordneten Klassen annehmen und durch eigene Attribute ergänzen. Gleichzeitig können Objekte einer Klasse auch mit anderen Klassen verbunden sein. Dies bricht die strenge Hierarchie auf und sorgt für eine Vernetzung. Einfache Objekte lassen sich zu komplexen Objekten zusammenfassen.
Um die verschiedenen Objekte anzusprechen, vergibt das entsprechende objektorientierte DBMS jeder Einheit automatisch eine einmalige Identifikation. So kann man Objekte leicht wieder aufrufen, nachdem diese gespeichert wurden.
Ein Beispiel: Im Sinne einer objektorientierten Einheit speichern wir das konkrete Objekt eines Fahrrades mit all seinen Eigenschaften und Methoden. Es ist rot, kann fahren, hat einen Sattel, und so weiter. Dieses Objekt ist gleichzeitig Teil der Klasse „Fahrräder“. Innerhalb derselben Klasse können beispielsweise auch ein blaues und ein grünes Rad zu finden sein. Die Klasse „Fahrräder“ ist wiederrum eine Unterkategorie von „Fahrzeuge“, zu der auch „Autos“ gehört. Gleichzeitig hat das Objekt aber auch eine Verbindung zur Klasse „Freizeitaktivitäten“. Rufen wir unser Objekt über die einzigartige ID auf, stehen alle Attribute und Methoden direkt zur Verfügung.
Relationale vs. Objektorientierte Datenbanken
Wie gesagt sind relationale Datenbanken seit längerer Zeit der Standard in der Web- und Softwareentwicklung. Bei diesem Modell werden Informationen in untereinander verknüpften Tabellen abgespeichert. Auch hierbei können durch die Verknüpfungen komplexere Informationen aus verschiedenen Bestandteilen abgespeichert und abgerufen werden. Bei einer Objektdatenbank sind aber alle Bestandteile der Einheit auch sofort verfügbar. Das lässt außerdem zu, dass die Datensätze sehr viel komplexer sein können. Bei einer relationalen Datenbank versucht man eher, einfache Informationen unterzubringen. Je komplexer der Datensatz wird, desto umfangreicher sind die Verknüpfungen untereinander. Das bremst die Datenbank aus.
Vor- und Nachteile des objektorientierten Datenbankmodells
Es hängt sehr stark vom Anwendungsfall ab, für welchen Datenbanktyp man sich entscheiden sollte. Gerade wenn man ohnehin mit objektorientierten Programmiersprachen wie beispielsweise Java arbeitet, ist eine Objektdatenbank vorteilhaft. Die Objekte des Quellcodes können einfach in die Datenbank aufgenommen werden. Greift man hier zu einer relationalen Datenbank, was durchaus nicht unüblich ist, lassen sich gerade komplexe Objekte nur schwer in das Tabellenkonstrukt eingliedern.
Ein Nachteil ist vor allem die schlechte Verbreitung. Obwohl das Modell seit den 1980ern bekannt ist, haben sich bisher nur wenige DBMS für Objektdatenbanken etabliert. Entsprechend klein ist auch die Community, die sich mit dem Modell beschäftigt. Die meisten Entwickler greifen deshalb lieber zu den weitverbreiteten, gut dokumentierten und hoch entwickelten relationalen Datenbanken.
Was in bestimmten Situationen ein Vorteil ist, kann in anderen wiederum zu einem Nachteil werden: Die Komplexität der Objekte sorgt dafür, dass ebenfalls komplexe Anfragen und Schreibvorgänge viel schneller als in relationalen Modellen vorgenommen werden können. Sind die Vorgänge aber vergleichsweise simpel, muss dennoch mit der komplexen Struktur gearbeitet werden. Das führt zu Geschwindigkeitseinbußen.
Vorteile | Nachteile |
---|---|
Komplexe Datensätze lassen sich schnell und leicht abspeichern und aufrufen. | Objektdatenbanken sind kaum verbreitet. |
Objekt-IDs werden automatisch vergeben. | In manchen Situationen kann die hohe Komplexität zu Performanceproblemen führen. |
Arbeitet gut mit objektorientierten Programmiersprachen zusammen. |
Es gibt noch weitere Alternativen zu MySQL & Co.: Dokumentenorientierte Datenbanken haben sich beispielsweise als sehr leichtgewichtig und flexibel erwiesen. Spaltenorientierte Datenbanken wiederum kommen besonders bei sehr großen Datenmengen zum Einsatz.