Was ist eine Graphdatenbank?

Definition der Graphdatenbank

Graphdatenbanken sind speziell zum Speichern und Navigieren von Beziehungen konzipiert. Beziehungen sind First-Class-Citizens in Graphdatenbanken und die meisten Werte in diesen Datenbanken werden aus diesen Beziehungen abgerufen. Graphdatenbanken sind Knoten zum Speichern von Datenentitäten und Edges zum Speichern von Beziehungen zwischen Entitäten. Ein Edge besitzt immer einen Start- und einen Endknoten, einen Typen und eine Richtung und kann die Beziehung zwischen über- und untergeordnetem Element, Aktionen, Besitzer und ähnliches beschreiben. Die Anzahl und Art der Beziehungen in einem Knoten ist nicht beschränkt.

Ein Graph in einer Graphdatenbank kann entlang bestimmter Edge-Typen oder über den gesamten Graph verschoben werden. In Graphdatenbanken werden die Joins oder Beziehungen sehr schnell durchlaufen, da die Beziehungen zwischen den Knoten nicht bei der Abfrage berechnet werden, sondern in der Datenbank bestehen bleiben. Graphdatenbanken bieten Vorteile für Anwendungsfälle wie Social Networking, Empfehlungs-Engines und Betrugserkennung, bei denen Sie Beziehungen zwischen Daten erstellen und diese Beziehungen schnell abfragen müssen.

Die folgende Grafik zeigt ein Beispiel eines Social Network-Graphs. Anhand der Menschen (Knoten) und ihrer Beziehungen (Edges) können Sie herausfinden, wer die „Freunde von Freunden“ einer bestimmten Person sind – zum Beispiel die Freunde von Howards Freunden. 

Ein Beispiel für einen Social Network-Graph

Anwendungsfälle

Betrugserkennung

Graphdatenbanken sind in der Lage, Betrug zu verhindern. Mit Graphdatenbanken können Sie Beziehungen nutzen, um Finanz- und Kauftransaktionen nahezu in Echtzeit zu verarbeiten. Mit schnellen Graphabfragen können Sie z. B. erkennen, dass ein potenzieller Käufer dieselbe E-Mail-Adresse und dieselbe Kreditkarte verwendet wie in einem bekannten Betrugsfall verwendet wurde. Mit Graphdatenbanken können Sie auch ganz einfach Beziehungsmuster erkennen, wie beispielsweise mehrere Personen mit einer persönlichen E-Mail-Adresse oder mehrere Personen mit derselben IP-Adresse an verschiedenen physischen Adressen. 

Empfehlungs-Engine

Graphdatenbanken eignen sich optimal für Empfehlungsanwendungen. Mit Graphdatenbanken können Sie in einer Grafik Beziehungen zwischen Informationskategorien wie Kundeninteressen, Freunde und Kaufhistorie speichern. Sie können eine hochverfügbare Graphdatenbank verwenden, um einem Benutzer Produktempfehlungen basierend darauf zu unterbreiten, welche Produkte von anderen gekauft wurden, die denselben Sport betreiben und eine ähnliche Kaufhistorie aufweisen. Oder Sie können Personen identifizieren, die einen gemeinsamen Freund haben, sich aber noch nicht kennen, und eine Freundschaftsempfehlung abgeben. 

Beliebte Graphdatenbanken

Amazon Neptune

Amazon Neptune ist eine speziell entwickelte, hochleistungsfähige Graphdatenbank-Engine, die für die Speicherung von Milliarden von Beziehungen und die Abfrage des Graphen mit einer Latenzzeit von Millisekunden optimiert ist. Neptune unterstützt die beliebtesten Diagrammmodelle Property Graph und Resource Description Framework (RDF) von W3C sowie die zugehörigen Abfragesprachen TinkerPop Gremlin und SPARQL, sodass Sie Abfragen erstellen können, die effizient durch hochverknüpfte Datenmengen navigieren. 

Neptune ist hochverfügbar, mit Read Replicas, zeitpunktbezogener Wiederherstellung, stetiger Sicherung auf Amazon S3 und Replikation über Availability Zones hinweg. Neptune ist dank der Unterstützung einer Verschlüsselung im Ruhezustand sehr sicher. Neptune ist vollständig verwaltet. Sie müssen sich also keine Sorgen mehr über Datenbankverwaltungsaufgaben wie Hardware-Bereitstellung, Software-Patches, Setup, Konfiguration, Überwachung oder Sicherungen machen.

Amazon Neptune-Ankündigung bei AWS re:Invent 2017

Neo4j

Neo4j ist eine Open-Source-, nichtrelationale, native Graphdatenbank, die ein ACID-konformes Transaktions-Back-End für Ihre Anwendungen bietet. Neo4j ist eine native Graphdatenbank, da sie das Propery Graph-Modell bis auf die Speicherebene effizient implementiert. Neo4j bietet zudem vollständige Datenbankeigenschaften, einschließlich ACID-Transaktionskonformität, Cluster-Unterstützung und Laufzeit-Failover. Neo4j unterstützt neben Gremlin die eigene Cypher-Abfragesprache.

Informationen zum Einstieg in die Verwendung von Neo4j finden Sie im AWS Marketplace.