Viele Anwendungen stellen heutzutage enorm hohe Anforderungen an das Datenbankmanagement, die nicht ohne weiteres miteinander vereinbar sind. Nehmen wir das Beispiel einer App zur Reisebuchung: Hier werden unter Umständen verschiedene Datenbanktypen genutzt – ein Key-Value Store für User Sessions, eine Dokumentdatenbank für den Produktkatalog, eine Graphdatenbank für Empfehlungen und eine relationale Datenbank für Finanzdaten.
Man kann aber auch versuchen, das Projekt „Reisebuchungs-App“ mithilfe einer einzigen Datenbank umzusetzen. In der Vergangenheit wurden dazu oftmals relationale Datenbanken herangezogen, um komplexe Datenszenarien in einem einzelnen Datenbanksystem abzubilden.
Relationale Datenbanken stellen Daten in Tabellen dar und nutzen die weit verbreitete Datenbanksprache Structured Query Language (SQL), um Daten abzurufen und zu verarbeiten. Der Haken bei relationalen Datenbanken: Die verantwortlichen Datenbank-Administratoren (DBA) müssen neben ihren anderen Aufgaben zusätzlich Datenstrukturen erstellen, damit die Datenbank produktiv genutzt werden kann. Zudem lassen sich relationale Datenbanken bei steigenden Datenmengen und Workloads nicht wirtschaftlich skalieren.
Demgegenüber bieten nicht-relationale Ansätze wie Document-, Object-, Graph- und Key-Value-Datenbanken insbesondere im Hinblick auf Flexibilität und Skalierbarkeit wichtige Vorteile. Bei nicht-relationalen Datenbanken werden zudem keine DBAs zur Erstellung vordefinierter Schemata benötigt.
Dafür steht man dann aber in vielen Fällen – wie auch im Beispiel der Anwendung zur Reisebuchung – vor dem Dilemma, mehrere unterschiedliche Datenbankansätze miteinander kombinieren zu müssen. So können bei einem Reisebuchungsportal z.B. die Hotelangebote (Dokumentendatenbank) mit den Empfehlungen (Graphdatenbank) und diese wiederum mit den User Sessions (Key Value Datenbank) verknüpft werden. Dieses Architekturmuster ist in der Branche unter dem Namen Polyglot Persistence bekannt und bezeichnet den Einsatz individueller Datenbanken für spezifische Datenstrukturen – ein Best-of-Breed-Ansatz. Häufig gestaltet sich die Implementierung, Synchronisierung und Wartung verschiedener Datenbanksysteme im Lebenszyklus einer Anwendung aber komplex und fehleranfällig.
Einen anderen Weg ermöglichen sogenannte „Multi-Model-Datenbanken“, denn sie ermöglichen mehrere Datenrepräsentationen im selben „Produkt“. Mit anderen Worten: diese Lösungen sind in der Lage, unterschiedliche Datentypen zu speichern, zu verwalten und operativ zu nutzen. In der Frage, wie dies im Produkt realisiert wird, unterscheiden sich die am Markt verfügbaren Multi-Model-Datenbanken jedoch deutlich voneinander.
- Einige Lösungen orientieren sich am Konzept der Polyglot Persistence und nutzen separate Datenbank-Engines für unterschiedliche Datenrepräsentationen. Fast schon zwangsläufig liegen die Daten intern dann aber häufig mehrfach vor (Datenduplikation) und müssen über die verschiedenen Data Stores hinweg mittels Mapping und Integration miteinander verknüpft werden. Insofern weisen entsprechend konzipierte Multi-Model-Datenbanken ein vergleichsweise hohes Maß an Orchestrierungsaufwand auf.
- Andere Lösungen wiederum unterstützen verschiedene Modelle innerhalb einer Engine, nicht aber für dieselben Daten. Mit anderen Worten: Die Engine kann zwar unterschiedliche Datenmodelle verarbeiten, nicht aber ein und denselben Datensatz parallel in unterschiedlichen Modellen.
- Die Vorteile beider Ansätze vereint die InterSystems IRIS Data Platform: Sie speichert eine einzige Repräsentation der Daten und nutzt eine einzige Datenbank-Engine, die es ermöglicht, Daten sowohl relational als auch nicht-relational abzurufen und zu verarbeiten, ohne diese Daten duplizieren zu müssen. Damit ist es sowohl möglich, ein und dieselben Daten gleichzeitig in verschiedenen Datenmodellen zu verarbeiten, als auch, unterschiedliche Daten im gleichen Datenmodell anzuwenden.
Damit eignet sich die InterSystems IRIS Data Platform immer dann besonders, wenn unterschiedliche Datentypen aus unterschiedlichen Quellen mit einer einzigen Datenbankmanagement-Technologie verarbeitet werden sollen - wie etwa im Fall der eingangs beschriebenen Reisebuchungs-App.
In meinem nächsten Blog-Artikel gehe ich näher auf die technischen Details und Vorteile des InterSystems-Ansatzes ein.