Was ist eine Graphendatenbank? Eine bessere Möglichkeit, verbundene Daten zu speichern

Schlüsselwert, dokumentorientiert, Spaltenfamilie, Grafik, relational ... Heute scheinen wir so viele Arten von Datenbanken zu haben, wie es Arten von Daten gibt. Dies kann die Auswahl einer Datenbank erschweren, erleichtert jedoch die Auswahl der  richtigen Datenbank. Dazu müssen Sie natürlich Ihre Hausaufgaben machen. Sie müssen Ihre Datenbanken kennen. 

Eine der am wenigsten verstandenen Arten von Datenbanken ist die Graphendatenbank. Eine Diagrammdatenbank wurde für die Arbeit mit stark miteinander verbundenen Daten entwickelt und kann als „relationaler“ als eine relationale Datenbank beschrieben werden. Graphendatenbanken leuchten, wenn das Ziel darin besteht, komplexe Beziehungen in riesigen Informationsnetzen zu erfassen. 

Hier sehen Sie genauer, was Graphendatenbanken sind, warum sie sich von anderen Datenbanken unterscheiden und welche Arten von Datenproblemen sie lösen sollen.

Diagrammdatenbank vs. relationale Datenbank

In einer herkömmlichen relationalen oder SQL-Datenbank sind die Daten in Tabellen organisiert. Jede Tabelle zeichnet Daten in einem bestimmten Format mit einer festen Anzahl von Spalten auf, jede Spalte mit einem eigenen Datentyp (Ganzzahl, Uhrzeit / Datum, Freiformtext usw.).

Dieses Modell funktioniert am besten, wenn Sie hauptsächlich mit Daten aus einer Tabelle arbeiten. Es funktioniert auch nicht schlecht, wenn Sie Daten aggregieren, die in mehreren Tabellen gespeichert sind. Dieses Verhalten hat jedoch einige bemerkenswerte Grenzen.

Stellen Sie sich eine Musikdatenbank mit Alben, Bands, Labels und Interpreten vor. Wenn Sie alle Interpreten melden möchten, die von dieser auf diesen Labels veröffentlichten Band auf diesem Album vorgestellt wurden - vier verschiedene Tabellen -, müssen Sie diese Beziehungen explizit beschreiben. Mit einer relationalen Datenbank erreichen Sie dies durch neue Datenspalten (für Eins-zu-Eins- oder Eins-zu-Viele-Beziehungen) oder neue Tabellen (für Viele-zu-Viele-Beziehungen).

Dies ist praktisch, solange Sie eine bescheidene Anzahl von Beziehungen verwalten. Wenn Sie mit Millionen oder sogar Milliarden von Beziehungen zu tun haben - zum Beispiel mit Freunden von Freunden von Freunden -, lassen sich diese Abfragen nicht gut skalieren.

Kurz gesagt, wenn die  Beziehungen zwischen Daten und nicht die Daten selbst Ihr Hauptanliegen sind, ist eine andere Art von Datenbank - eine Diagrammdatenbank - in Ordnung.

Grafikdatenbankfunktionen

Der Begriff „Graph“ stammt aus der Verwendung des Wortes in der Mathematik. Dort wird es verwendet, um eine Sammlung von Knoten (oder Scheitelpunkten ) zu beschreiben, die jeweils Informationen ( Eigenschaften ) enthalten und beschriftete Beziehungen (oder Kanten ) zwischen den Knoten aufweisen.

Ein soziales Netzwerk ist ein gutes Beispiel für eine Grafik. Die Personen im Netzwerk wären die Knoten, die Attribute jeder Person (wie Name, Alter usw.) wären Eigenschaften und die Verbindungslinien zwischen den Personen (mit Bezeichnungen wie „Freund“ oder „Mutter“ oder „ Supervisor ”) würde ihre Beziehung angeben. 

In einer herkömmlichen Datenbank kann die Verarbeitung von Abfragen zu Beziehungen lange dauern. Dies liegt daran, dass Beziehungen mit Fremdschlüsseln implementiert und durch Verknüpfen von Tabellen abgefragt werden. Wie jeder SQL-DBA Ihnen sagen kann, ist das Ausführen von Verknüpfungen teuer, insbesondere wenn Sie eine große Anzahl von Objekten sortieren müssen - oder, schlimmer noch, wenn Sie mehrere Tabellen verknüpfen müssen, um die Art indirekter Abfragen (z. B. "Freund eines Freundes") durchzuführen dass Graph-Datenbanken sich auszeichnen. 

Diagrammdatenbanken speichern die  Beziehungen zusammen mit den Daten. Da verwandte Knoten physisch in der Datenbank verknüpft sind, erfolgt der Zugriff auf diese Beziehungen genauso unmittelbar wie der Zugriff auf die Daten selbst. Mit anderen Worten, anstatt die Beziehung wie bei relationalen Datenbanken zu berechnen, lesen Diagrammdatenbanken die Beziehung einfach aus dem Speicher. Das Erfüllen von Abfragen ist eine einfache Frage des Gehens oder „Durchlaufens“ des Diagramms.  

Eine Diagrammdatenbank speichert nicht nur die Beziehungen zwischen Objekten auf native Weise, sodass Abfragen zu Beziehungen schnell und einfach möglich sind, sondern ermöglicht es Ihnen auch, verschiedene Arten von Objekten und verschiedene Arten von Beziehungen in das Diagramm aufzunehmen. Wie andere NoSQL-Datenbanken ist eine Diagrammdatenbank schemalos. In Bezug auf Leistung und Flexibilität sind Diagrammdatenbanken daher näher an Dokumentdatenbanken oder Schlüsselwertspeichern als relationale oder tabellenorientierte Datenbanken.

Anwendungsfälle für Diagrammdatenbanken

Diagrammdatenbanken funktionieren am besten, wenn die Daten, mit denen Sie arbeiten, stark miteinander verbunden sind und durch die Verknüpfung oder Verweise auf andere Daten dargestellt werden sollten , normalerweise über viele-zu-viele-Beziehungen.

Auch hier ist ein soziales Netzwerk ein nützliches Beispiel. Diagrammdatenbanken reduzieren den Arbeitsaufwand für die Erstellung und Anzeige der in sozialen Netzwerken gefundenen Datenansichten, z. B. Aktivitätsfeeds, oder für die Feststellung, ob Sie eine bestimmte Person aufgrund ihrer Nähe zu anderen Freunden im Netzwerk kennen oder nicht.

Eine andere Anwendung für Graphendatenbanken besteht darin, Verbindungsmuster in Graphendaten zu finden, die über andere Datendarstellungen nur schwer herauszufinden sind. Betrugserkennungssysteme verwenden Diagrammdatenbanken, um Beziehungen zwischen Entitäten aufzudecken, die sonst möglicherweise schwer zu bemerken gewesen wären. 

In ähnlicher Weise eignen sich Diagrammdatenbanken ideal für Anwendungen, die die Beziehungen oder Abhängigkeiten zwischen Entitäten verwalten. Hinter Empfehlungs-Engines, Content- und Asset-Management-Systemen, Identitäts- und Zugriffsmanagementsystemen sowie Lösungen zur Einhaltung gesetzlicher Vorschriften und zum Risikomanagement finden Sie häufig Grafikdatenbanken. 

Diagrammdatenbankabfragen

Diagrammdatenbanken verwenden - wie andere NoSQL-Datenbanken - normalerweise ihre eigene benutzerdefinierte Abfragemethode anstelle von SQL.

Eine häufig verwendete Grafikabfragesprache ist Cypher, das ursprünglich für die Neo4j-Grafikdatenbank entwickelt wurde. Seit Ende 2015 wurde Cypher als separates Open Source-Projekt entwickelt, und eine Reihe anderer Anbieter haben es als Abfragesystem für ihre Produkte übernommen (z. B. SAP HANA).

Hier ist ein Beispiel für eine Cypher-Abfrage, die ein Suchergebnis für alle Personen zurückgibt, die mit Scott befreundet sind:

MATCH (a: Person {Name: 'Scott'}) - [: FRIENDOF] -> (b) RÜCKGABE b 

Das Pfeilsymbol ( ->) wird in Cypher-Abfragen verwendet, um eine gerichtete Beziehung im Diagramm darzustellen.

Eine weitere gängige Grafikabfragesprache, Gremlin, wurde für das Apache TinkerPop Graph Computing Framework entwickelt. Die Gremlin-Syntax ähnelt der Syntax, die von den ORM-Datenbankzugriffsbibliotheken einiger Sprachen verwendet wird.

Hier ist ein Beispiel für eine Abfrage "Freunde von Scott" im Gremlin:

gV (). hat ("Name", "Scott"). out ("Freund von") 

Viele Grafikdatenbanken unterstützen Gremlin über eine integrierte Bibliothek oder eine Drittanbieter-Bibliothek.

Eine weitere Abfragesprache ist SPARQL. Es wurde ursprünglich vom W3C entwickelt, um im RDF-Format (Resource Description Framework) gespeicherte Daten nach Metadaten abzufragen. Mit anderen Worten, wurde SPARQL nicht erdacht für Graph - Datenbank sucht, kann aber für sie verwendet werden. Insgesamt wurden Cypher und Gremlin breiter angenommen.

SPARQL-Abfragen enthalten einige Elemente, die an SQL erinnern, nämlich  SELECTund WHEREKlauseln, aber der Rest der Syntax ist radikal unterschiedlich. Stellen Sie sich SPARQL überhaupt nicht als mit SQL oder mit anderen Grafikabfragesprachen verwandt vor.

Beliebte Grafikdatenbanken

Da Graphendatenbanken einen relativ nischen Anwendungsfall darstellen, gibt es bei weitem nicht so viele wie relationale Datenbanken. Auf der positiven Seite erleichtert dies die Identifizierung und Diskussion der herausragenden Produkte.

Neo4j

Neo4j ist mit Abstand die ausgereifteste (11 Jahre und Zählung) und bekannteste Grafikdatenbank für den allgemeinen Gebrauch. Im Gegensatz zu früheren Grafikdatenbankprodukten wird kein SQL-Backend verwendet. Neo4j ist eine native Diagrammdatenbank, die von innen nach außen entwickelt wurde, um große Diagrammstrukturen zu unterstützen, wie bei Abfragen, die Hunderttausende von Beziehungen und mehr zurückgeben.

Neo4j ist sowohl in kostenlosen Open-Source- als auch in kostenpflichtigen Enterprise-Editionen erhältlich, wobei letztere (unter anderem) keine Einschränkungen hinsichtlich der Größe eines Datasets aufweisen. Sie können mit Neo4j auch online über die Sandbox experimentieren, die einige Beispieldatensätze zum Üben enthält.

Weitere Informationen finden Sie in der Rezension von Neo4j.

Microsoft Azure Cosmos DB

Die Azure Cosmos DB-Cloud-Datenbank ist ein ehrgeiziges Projekt. Es ist beabsichtigt, mehrere Arten von Datenbanken - herkömmliche Tabellen, dokumentenorientierte Daten, Spaltenfamilien und Diagramme - über einen einzigen einheitlichen Dienst mit einem konsistenten Satz von APIs zu emulieren.

Zu diesem Zweck ist eine Diagrammdatenbank nur einer der verschiedenen Modi, in denen Cosmos DB arbeiten kann. Sie verwendet die Gremlin-Abfragesprache und die API für grafische Abfragen und unterstützt die für Apache TinkerPop erstellte Gremlin-Konsole als weitere Schnittstelle.

Ein weiteres großes Verkaufsargument von Cosmos DB ist, dass Indizierung, Skalierung und Georeplikation automatisch in der Azure-Cloud durchgeführt werden, ohne dass Sie sich um etwas kümmern müssen. Es ist noch nicht klar, wie die All-in-One-Architektur von Microsoft hinsichtlich der Leistung mit nativen Grafikdatenbanken mithalten kann, aber Cosmos DB bietet sicherlich eine nützliche Kombination aus Flexibilität und Skalierbarkeit.

Weitere Informationen finden Sie in der Überprüfung von Azure Cosmos DB.

JanusGraph

JanusGraph wurde aus dem TitanDB-Projekt gegabelt und steht nun unter der Leitung der Linux Foundation. Es verwendet eine Reihe von unterstützten Backends - Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle BerkeleyDB - zum Speichern von Diagrammdaten, unterstützt die Gremlin-Abfragesprache (sowie andere Elemente aus dem Apache TinkerPop-Stack) und kann dies auch Integrieren Sie die Volltextsuche über die Projekte Apache Solr, Apache Lucene oder Elasticsearch.

IBM, einer der Unterstützer des JanusGraph-Projekts, bietet eine gehostete Version von JanusGraph in der IBM Cloud mit dem Namen Compose for JanusGraph an. Wie Azure Cosmos DB bietet Compose for JanusGraph automatische Skalierung und Hochverfügbarkeit, wobei die Preise auf der Ressourcennutzung basieren.