ArtikelManagement

Neo4j und Oracle: Zusammenspiel zwischen Graphdatenbank und RDBMS

Vollständige Migration der Daten

In einigen Fällen kann eine vorhandene Anwendung ihre architektonischen und leistungsmäßigen Grenzen erreichen. Häufig bedingt das die Neuentwicklung der Anwendung. Wenn die fraglichen Daten stark vernetzt sind, ist es sinnvoll, Neo4j anstatt von Oracle als alleinigen Datenbankspeicher einzusetzen. In diesem Fall würden dann alle Daten nach Neo4j migriert.

Es gibt mehrere Szenarien, in denen es sinnvoll wäre, eine bestimmte Anwendung zu ersetzen. Zum Beispiel, wenn Fachanwender über unzumutbare Wartezeiten der Anwendung klagen, wenn die meisten Abfragen in einer Anwendung wechselnde Datenmengen und Datentiefen in Echtzeit verknüpfen sollen, wobei sich diese Datenmengen nur schwer voraussagen oder vorausberechnen lassen, oder wenn die Abfragen zu komplex werden und es zu lange dauert, neue Team-Mitglieder darin zu schulen.

Vergleichbar mit der Migration eines Teilbereichs, gehört bei der vollständigen Migration auch die Überarbeitung des Anwendungscodes, der mit der Datenbank interagiert, und die Erstellung der entsprechenden Abfragen.

Synchronisieren eines Teilbereichs der Daten

Ein anderes Konzept sieht die Synchronisation eines Teils der Daten vor. So geschehen bei der norwegischen Telekommunikationsgesellschaft Telenor. Telenor stand mit seiner Self-Service-Webanwendung vor einem Problem: Die Anmeldezeiten wurden immer länger. Kunden drohten abzuwandern. Bei den Anmeldungen musste die Ressourcenautorisierung für jeden Benutzer berechnet werden. Insbesondere für große Kunden mit vielen Benutzern dauerte das zu lange.

Telenor suchte deshalb nach einem NoSQL-Konzept, um das bestehende relationale Datenbankmanagementsystem zu ergänzen. Man entschied sich, die Daten für Suchfunktionen mit Solr/Lucene zu synchronisieren. Die Daten für Ressourcenautorisierungen sollten auf Grund der stark vernetzten Daten mit Neo4j synchronisiert werden. So konnte Telenor die Ressourcenautorisierung in Echtzeit durchführen. Die Benutzer profitierten von Anmeldezeiten im Millisekundenbereich. Änderungen wurden praktisch in Echtzeit wirksam. Die Synchronisierung der Daten mit Neo4j erfolgt über Middleware, wie beispielsweise Oracle GoldenGate und entsprechende Adapter (zum Beispiel Oracle, Open-Source).

Vollständige Synchronisierung der Daten

Ein komplexeres Anwendungsszenario umfasst die Synchronisierung aller Daten, beispielsweise bei Anwendungen mit Daten aus mehreren Datenquellen oder wenn aus Kostengründen bestehende Anwendungen nicht verändert werden sollen. Ein Beispiel einer vollständigen Synchronisierung ist Monsanto.

Das Agrar- und Biotechnologie-Unternehmen arbeitete anfänglich mit einer 96 CPUs umfassenden Oracle-Exadata-Installation, auf der die Kerndaten für genetische Abstammungen verschiedener Saatprodukte mit zahlreichen gespeicherten Prozeduren, JOIN-Tabellen, rekursiven Abfragen und dualen Indizes zur Leistungsoptimierung gehostet wurden. Die Oracle-Exadata-Installation konnte diese Daten häufig nicht in Echtzeit verarbeiten – eine Voraussetzung für einen neuen genomischen Test, der die Markteinführungszeit von Produkten um ein volles Jahr verkürzt.

Suchen von genetischen Abstammungsdaten: Abfragezeiten von Oracle im Vergleich zu Neo4j

Schließlich stieß Monsanto auf Neo4j. Nur kurze Zeit später war der gesamte Bestand der genetischen Abstammungsdaten in der Graphdatenbank hinterlegt und konnte als Betatest-Anwendung genutzt werden. Anstatt die Datenbankverbindungen der Exadata-Umgebung auf einen Schlag abzuschalten, baute das Team eine individuelle API-Schicht zur Synchronisierung der Datenströme zwischen Exadata und Neo4j.

Ein neues Interface für Abfragen ermöglicht es den Wissenschaftlern tiefgehende, schlagwortbasierte Abfragen auf einfache Weise auszuführen. Die Architektur nutzt Apache Kafka zur Übergabe von Echtzeittransaktionsdaten aus Oracle an Neo4j. Außerdem entwickelte das Team einen Connector für Oracle GoldenGate und Kafka, den es mit einer Open-Source-Lizenz auf GitHub zur Verfügung stellte.

Heute bedient die Lösung für die genetischen Abstammungsdaten etwa 120 verschiedene Anwendungen und Wissenschaftler und verarbeitet mehr als 600 Millionen REST-Abfragen über etwa eine Milliarde Knoten. Die Ergebnisse liegen innerhalb von zehntel Millisekunden vor.

Fazit

RDBMS wie Oracle sind eine bewährte und etablierte Technologie. Auf Grund ihrer weiten Verbreitung in Unternehmensanwendungen, scheuen Unternehmen oft davor zurück vorhandenen Investitionen in die Infrastruktur, Tools und Trainings über Bord zu werfen. Glücklicherweise ist das jedoch auch nicht nötig. Graphdatenbanken wie Neo4j treten nicht mit RDBMS in Konkurrenz, sondern können parallel bestehen. Dabei ist jede Technologie auf bestimmte Anwendungsszenarien ausgelegt. Gemeinsam ermöglichen sie es Entwicklern und Systemarchitekten, die richtige Art von Datenbank für das richtige Szenario zu nutzen.