Mithilfe von Grafikdatenbanken können Sie Ihre Datenentitäten und die Beziehungen zwischen ihnen modellieren und somit neue Erkenntnisse gewinnen. JanusGraph ist eine Grafikdatenbank, die das Arbeiten mit großen Datenmengen unterstützt. Auf dieser Seite werden Konzepte vorgestellt, mit denen Sie JanusGraph in Google Cloud mit der Google Kubernetes Engine als Orchestrierungsplattform und Bigtable als Speicher-Backend ausführen können. Google Cloud
Dieses Dokument richtet sich an Systemarchitekten, Datenbankadministratoren und DevOps-Experten, die die JanusGraph-Grafikdatenbank inGoogle Cloud mit Bigtable als Speicher-Backend ausführen möchten. Es wird davon ausgegangen, dass Sie mit Google Kubernetes Engine (GKE), Kubernetes-Pods, Bigtable und Elasticsearch vertraut sind.
Übersicht
In der Grafikterminologie werden Entitäten als Knoten oder Eckpunkte und Beziehungen als Kanten bezeichnet. In JanusGraph können sowohl Eckpunkte als auch Kanten zusätzliche zugehörige Daten haben, die über Attribute verfügbar gemacht werden.
Die obige Abbildung ist ein Beispiel für eine Attributgrafik.
Mit Grafikdatenbanken können Sie eine Vielzahl von Domains und Aktivitäten modellieren:
- Soziale Netzwerke
- Finanztransaktionen (für Betrugsanalysen)
- Physische oder virtuelle Systemnetzwerke
Für neue Grafikdatenbanken erstellen Sie manchmal Millionen oder sogar Milliarden von Eckpunkten und Kanten. Wenn Sie JanusGraph mit Bigtable als zugrundeliegende Speicherebene verwenden, können Sie sowohl schnelle Abfragen (sogenanntes Durchsuchen von Grafiken) durchführen als auch Ihre Speicherebene unabhängig von der Größe und dem Durchsatz skalieren, die Sie benötigen. JanusGraph verwendet auch ein modulares Indexierungs-Backend, um eine Volltextindexierung für Eckpunkt- und Kantenattribute bereitzustellen.
Sie können eine skalierbare JanusGraph-Infrastruktur in GKE bereitstellen, indem Sie Elasticsearch als Indexierungs-Backend verwenden, das in Pods in einem StatefulSet ausgeführt wird, und Bigtable als Speicher-Backend. Wenn Sie fertig sind, können Sie die Beziehungen in Ihren Grafikdaten durchsuchen.
Das folgende Diagramm zeigt, wie diese Elemente zusammenpassen.
Das Diagramm zeigt die JanusGraph-Bereitstellung in GKE mit Elasticsearch und Bigtable.
JanusGraph-Daten in Bigtable
Grafikdaten werden von JanusGraph als Adjazenzliste gespeichert. Jede Zeile stellt einen Eckpunkt, alle angrenzenden Eckpunkte (Kanten) und Attributmetadaten zu den Eckpunkten und Kanten dar. Der Zeilenschlüssel ist die eindeutige Kennung für den Eckpunkt. Jede Beziehung zwischen dem Eckpunkte und einem anderen Eckpunkt und allen Attributen, die die Beziehung weiter definieren, wird als Kanten- oder Kantenattributspalte gespeichert. Sowohl der Spaltenqualifizierer als auch der Spaltenwert speichern Daten, die die Kante definieren, gemäß den Best Practices für Bigtable. Jedes Eckpunktattribut wird als separate Spalte gespeichert, wobei wiederum sowohl der Spaltenqualifizierer als auch der Spaltenwert verwendet werden, um das Attribut zu definieren.
Das folgende Diagramm zeigt diese Speicherstruktur.
Das Diagramm zeigt die logische Speicherstruktur für ein kleines Grafikfragment mit logischen Details für zwei Eckpunktzeilen. Im Diagramm stellen die beiden Beispielzeilen zwei Eckpunkte dar. Der erste Eckpunkt ist mit einem einzelnen Eckpunktattribut gekennzeichnet und bezieht sich auf zwei andere Eckpunkte durch zwei separate Kanten. Der zweite Eckpunkt enthält Spalten mit zwei Attributen und einer Kante.
Die folgende Abbildung des logischen Eckpunkt-Kanten-Datenmodells enthält einige Details zu den Spaltenqualifizierern und Werten einer Kanten- oder Kantenattributspalte.
Für jeden angrenzenden Eckpunkt speichert eine Spalte die Metadaten zu dieser Kante. Der Spaltenqualifizierer enthält Metadaten zur Kantenbeziehung und zur Kantenrichtung sowie einen Zeiger auf den angrenzenden Eckpunkt. Der Spaltenwert enthält das Kantenlabel und zusätzliche Kantenattribute. Da Durchläufe in beide Richtungen verfolgt werden können, werden die Kanten zweimal gespeichert, einmal für jedes Ende der Kantenbeziehung. Bidirektionaler Kantenspeicher erhöht die Durchlaufleistung erheblich, hat jedoch aufgrund der Redundanz zusätzlichen Speicherplatzes und nicht atomarer Kantenmutationen einige Nachteile.
Im folgenden Diagramm ist das logische Datenmodell einer Spalte mit einem Eckpunktattribut dargestellt.
Die vorherige Abbildung enthält Details zu den Spaltenqualifizierern und Werten für eine Kantenspalte.
Jedes Eckpunktattribut wird als separate Spalte gespeichert. Der Spaltenqualifizierer ist eine eindeutige Kennung für den Attributschlüssel. Der Spaltenwert enthält sowohl eine Kennzeichnung für das Attribut als auch den Wert des Attributs.
JanusGraph beruht auf der lexikografischen Reihenfolge von Zeilen und Spaltenqualifizierern von Bigtable, um die Abfrageleistung zu verbessern.
Nächste Schritte
- Weitere Informationen zu JanusGraph und Grafikdatenbanken
- Mehr zum Graph Computing Framework Apache TinkerPop und zur Gremlin-Sprache zum Durchsuchen von Grafiken erfahren
- Mehr darüber erfahren, wie JanusGraph Daten in Bigtable speichert
- Diagrammanwendungsfälle durch Bereitstellen einer JanusGraph-Beispielanwendung ansehen