{"id":11160,"date":"2017-06-06T14:54:18","date_gmt":"2017-06-06T12:54:18","guid":{"rendered":"https:\/\/www.sysbus.eu\/?p=11160"},"modified":"2017-06-01T11:01:04","modified_gmt":"2017-06-01T09:01:04","slug":"neo4j-und-oracle-zusammenspiel-zwischen-graphdatenbank-und-rdbms","status":"publish","type":"post","link":"https:\/\/www.sysbus.eu\/?p=11160","title":{"rendered":"Neo4j und Oracle: Zusammenspiel zwischen Graphdatenbank und RDBMS"},"content":{"rendered":"<p>Autor\/Redakteur: <a href=\"https:\/\/neo4j.com\/\">Stefan Kolmar, Director Field Engineering Europe bei Neo Technology<\/a>\/gg<\/p>\n<p>Oracle ist und bleibt eine tragende S\u00e4ule f\u00fcr Unternehmensanwendungen. Gleichzeitig ben\u00f6tigen IT-Unternehmen heute Funktionalit\u00e4ten, die \u00fcber die M\u00f6glichkeiten von Oracle und andere relationale Datenbankmanagementsysteme hinausgehen. Dazu geh\u00f6ren mehr Datenvielfalt, mehr Agilit\u00e4t, h\u00f6here Geschwindigkeit und neue Wege, um aus den Zusammenh\u00e4ngen zwischen den Daten Erkenntnisse zu gewinnen.<\/p>\n<p><!--more--><\/p>\n<p>Entscheidende Vorteile bringt ein gemeinsamer Einsatz von Graphdatenbanken und relationalen Datenbanken. Indem RDBMs von Abfragen entlastet werden, die sich auf vernetzte Daten beziehen, l\u00e4sst sich die Anwendungsleistung deutlich verbessern. Das erm\u00f6glicht mehr Agilit\u00e4t. Bei richtig konzipierter Koexistenz erfolgen so schnelle Traversals (Suchvorg\u00e4nge) anhand des Graphen, w\u00e4hrend sich Transaktionsdaten aus dem RDBMS auslesen lassen<\/p>\n<p>Zudem gibt es Szenarien, in denen es einfach Sinn ergibt, relationale Datenbankmanagementsysteme einer Graphdatenbank vorzuziehen und umgekehrt. Oracle eignet sich sehr gut f\u00fcr tabellarische, strukturierte Daten. Doch unstrukturierte, stark vernetzte Daten oder dynamische Daten, wie beispielsweise Hierarchien und Netzwerke, sind besser in einer Graphdatenbank wie zum Beispiel Neo4j aufgehoben.<\/p>\n<p><strong>Migrieren oder synchronisieren?<\/strong><\/p>\n<p>Neo4j kann mit relationalen Datenbankmanagementsystem wie Oracle auf verschiedene Weise zusammenarbeiten. Welchen Ansatz man w\u00e4hlt, h\u00e4ngt von den spezifischen Aufgaben und Zielen der Anwendungen ab.<\/p>\n<figure id=\"attachment_11155\" aria-describedby=\"caption-attachment-11155\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.sysbus.eu\/?attachment_id=11155\" rel=\"attachment wp-att-11155\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11155\" src=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2017\/06\/NeoTech_Ancestry_Monsanto-300x129.png\" alt=\"\" width=\"300\" height=\"129\" srcset=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2017\/06\/NeoTech_Ancestry_Monsanto-300x129.png 300w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2017\/06\/NeoTech_Ancestry_Monsanto.png 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-11155\" class=\"wp-caption-text\">Einsatz von Oracle und Neo4j f\u00fcr Ancestry-as-a-Service bei Monsanto<\/figcaption><\/figure>\n<p><strong>Migrieren eines Teilbereichs der Daten<\/strong><\/p>\n<p>Wenn Anwendungen bestimmte Fragestellungen aufgrund der Tiefe und Komplexit\u00e4t der Datenbeziehungen nicht effizient beantworten k\u00f6nnen, empfiehlt es sich, relevante Daten nach Neo4j zu migrieren. Neo4j \u00fcbernimmt dann die Funktion eines transaktionalen und ACID-kompatiblen Datenspeichers f\u00fcr diesen Teil der Daten. Informationen zu Kunden und Produkten finden sich beispielsweise in Neo4j, w\u00e4hrend ihre Kennungen sowie die Beziehungen zwischen ihnen in Neo4j abgespeichert sind. Die aufrufende Anwendung fragt dann Neo4j nach den Beziehungen ab und nutzt das Resultset f\u00fcr die Abfrage von Details aus Oracle.<br \/>\nDie Migration der Daten nach Neo4j erfolgt \u00fcber CSV-Dateien. Hierzu werden Tabellen aus Oracle exportiert und als CSV-Datei in Neo4j importiert. Dabei kommt entweder ein Befehlszeilentool oder die Syntax der Graphabfragesprache Cypher zum Einsatz. Der Vorgang kann manuell oder automatisch mithilfe eines ETL-Tools erfolgen.<\/p>\n<p><!--nextpage--><\/p>\n<p><strong>Vollst\u00e4ndige Migration der Daten<\/strong><\/p>\n<p>In einigen F\u00e4llen kann eine vorhandene Anwendung ihre architektonischen und leistungsm\u00e4\u00dfigen Grenzen erreichen. H\u00e4ufig 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\u00fcrden dann alle Daten nach Neo4j migriert.<\/p>\n<p>Es gibt mehrere Szenarien, in denen es sinnvoll w\u00e4re, eine bestimmte Anwendung zu ersetzen. Zum Beispiel, wenn Fachanwender \u00fcber unzumutbare Wartezeiten der Anwendung klagen, wenn die meisten Abfragen in einer Anwendung wechselnde Datenmengen und Datentiefen in Echtzeit verkn\u00fcpfen 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.<\/p>\n<p>Vergleichbar mit der Migration eines Teilbereichs, geh\u00f6rt bei der vollst\u00e4ndigen Migration auch die \u00dcberarbeitung des Anwendungscodes, der mit der Datenbank interagiert, und die Erstellung der entsprechenden Abfragen.<\/p>\n<p><strong>Synchronisieren eines Teilbereichs der Daten<\/strong><\/p>\n<p>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\u00e4nger. Kunden drohten abzuwandern. Bei den Anmeldungen musste die Ressourcenautorisierung f\u00fcr jeden Benutzer berechnet werden. Insbesondere f\u00fcr gro\u00dfe Kunden mit vielen Benutzern dauerte das zu lange.<\/p>\n<p>Telenor suchte deshalb nach einem NoSQL-Konzept, um das bestehende relationale Datenbankmanagementsystem zu erg\u00e4nzen. Man entschied sich, die Daten f\u00fcr Suchfunktionen mit Solr\/Lucene zu synchronisieren. Die Daten f\u00fcr Ressourcenautorisierungen sollten auf Grund der stark vernetzten Daten mit Neo4j synchronisiert werden. So konnte Telenor die Ressourcenautorisierung in Echtzeit durchf\u00fchren. Die Benutzer profitierten von Anmeldezeiten im Millisekundenbereich. \u00c4nderungen wurden praktisch in Echtzeit wirksam. Die Synchronisierung der Daten mit Neo4j erfolgt \u00fcber Middleware, wie beispielsweise Oracle GoldenGate und entsprechende Adapter (zum Beispiel Oracle, Open-Source).<\/p>\n<p><strong>Vollst\u00e4ndige Synchronisierung der Daten <\/strong><\/p>\n<p>Ein komplexeres Anwendungsszenario umfasst die Synchronisierung aller Daten, beispielsweise bei Anwendungen mit Daten aus mehreren Datenquellen oder wenn aus Kostengr\u00fcnden bestehende Anwendungen nicht ver\u00e4ndert werden sollen. Ein Beispiel einer vollst\u00e4ndigen Synchronisierung ist Monsanto.<\/p>\n<p>Das Agrar- und Biotechnologie-Unternehmen arbeitete anf\u00e4nglich mit einer 96 CPUs umfassenden Oracle-Exadata-Installation, auf der die Kerndaten f\u00fcr 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\u00e4ufig nicht in Echtzeit verarbeiten \u2013 eine Voraussetzung f\u00fcr einen neuen genomischen Test, der die Markteinf\u00fchrungszeit von Produkten um ein volles Jahr verk\u00fcrzt.<\/p>\n<figure id=\"attachment_11156\" aria-describedby=\"caption-attachment-11156\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.sysbus.eu\/?attachment_id=11156\" rel=\"attachment wp-att-11156\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11156\" src=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2017\/06\/NeoTech_Performance_Monsanto-300x186.png\" alt=\"\" width=\"300\" height=\"186\" srcset=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2017\/06\/NeoTech_Performance_Monsanto-300x186.png 300w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2017\/06\/NeoTech_Performance_Monsanto.png 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-11156\" class=\"wp-caption-text\">Suchen von genetischen Abstammungsdaten: Abfragezeiten von Oracle im Vergleich zu Neo4j<\/figcaption><\/figure>\n<p>Schlie\u00dflich stie\u00df Monsanto auf Neo4j. Nur kurze Zeit sp\u00e4ter 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\u00f6me zwischen Exadata und Neo4j.<\/p>\n<p>Ein neues Interface f\u00fcr Abfragen erm\u00f6glicht es den Wissenschaftlern tiefgehende, schlagwortbasierte Abfragen auf einfache Weise auszuf\u00fchren. Die Architektur nutzt Apache Kafka zur \u00dcbergabe von Echtzeittransaktionsdaten aus Oracle an Neo4j. Au\u00dferdem entwickelte das Team einen Connector f\u00fcr Oracle GoldenGate und Kafka, den es mit einer Open-Source-Lizenz auf GitHub zur Verf\u00fcgung stellte.<\/p>\n<p>Heute bedient die L\u00f6sung f\u00fcr die genetischen Abstammungsdaten etwa 120 verschiedene Anwendungen und Wissenschaftler und verarbeitet mehr als 600 Millionen REST-Abfragen \u00fcber etwa eine Milliarde Knoten. Die Ergebnisse liegen innerhalb von zehntel Millisekunden vor.<\/p>\n<p><strong>Fazit<\/strong><\/p>\n<p>RDBMS wie Oracle sind eine bew\u00e4hrte und etablierte Technologie. Auf Grund ihrer weiten Verbreitung in Unternehmensanwendungen, scheuen Unternehmen oft davor zur\u00fcck vorhandenen Investitionen in die Infrastruktur, Tools und Trainings \u00fcber Bord zu werfen. Gl\u00fccklicherweise ist das jedoch auch nicht n\u00f6tig. Graphdatenbanken wie Neo4j treten nicht mit RDBMS in Konkurrenz, sondern k\u00f6nnen parallel bestehen. Dabei ist jede Technologie auf bestimmte Anwendungsszenarien ausgelegt. Gemeinsam erm\u00f6glichen sie es Entwicklern und Systemarchitekten, die richtige Art von Datenbank f\u00fcr das richtige Szenario zu nutzen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Autor\/Redakteur: Stefan Kolmar, Director Field Engineering Europe bei Neo Technology\/gg Oracle ist und bleibt eine tragende S\u00e4ule f\u00fcr Unternehmensanwendungen. Gleichzeitig<\/p>\n","protected":false},"author":3,"featured_media":11154,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[8,39],"tags":[9684,3655,4185,6439,1857,9685,9689,7942,9687,7685,1611,9690,9691,9688,7683,8673,1027,2438,9683,9692,8980,9686],"class_list":["post-11160","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artikel","category-management","tag-acid","tag-apache","tag-api","tag-csv","tag-datenbank","tag-etl-tool","tag-exadata","tag-github","tag-goldengate","tag-graphdatenbank","tag-index","tag-join-tabelle","tag-kafka","tag-monsanto","tag-neo4j","tag-nosql","tag-open-source","tag-oracle","tag-rdbms","tag-rest-abfrage","tag-suche","tag-telenor"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/11160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11160"}],"version-history":[{"count":1,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/11160\/revisions"}],"predecessor-version":[{"id":11161,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/11160\/revisions\/11161"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/media\/11154"}],"wp:attachment":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}