Eine Graphdatenbank ist eine systematische Sammlung von Daten, die die Beziehungen zwischen den verschiedenen Datenentitäten hervorhebt. Die NoSQL-Datenbank verwendet mathematische Graphentheorie, um Datenverbindungen aufzuzeigen. Im Gegensatz zu relationalen Datenbanken, die Daten in starren Tabellenstrukturen speichern, speichern Graphdatenbanken Daten als ein Netzwerk von Entitäten und Beziehungen. Infolgedessen bieten diese Datenbanken häufig eine bessere Leistung und Flexibilität, da sie besser für die Modellierung realer Szenarien geeignet sind.

Was ist ein Graph

Der Begriff „Graph“ stammt aus dem Bereich der Mathematik. Ein Graph enthält eine Sammlung von Knoten und Edges.

Knoten

Knoten sind Scheitelpunkte, die die Datenobjekte speichern. Jeder Knoten kann eine unbegrenzte Anzahl und Arten von Beziehungen haben.

Edges

Edges stellen häufig eine Beziehung zwischen Knoten dar. Edges können zum Beispiel Eltern-Kind-Beziehungen, Aktionen oder Besitzverhältnisse beschreiben. Sie können sowohl Eins-zu-Viele- als auch Viele-zu-Viele-Beziehungen darstellen. Ein Edge hat immer einen Startknoten, einen Endknoten, einen Typ und eine Richtung.

Eigenschaften

Jeder Knoten hat Eigenschaften oder Attribute, die ihn beschreiben. In einigen Fällen haben auch Edges Eigenschaften. Graphen mit Eigenschaften werden auch Eigenschaftsgraphen genannt.

Beispiel eines Graphen

Der folgende Graph zeigt ein Beispiel eines Social-Netzwerke-Graphen. 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-Netzwerk-Graphen

Was sind die Anwendungsfälle von Graphdatenbanken

Graphdatenbanken bieten Vorteile für Anwendungsfälle wie soziale Netzwerke, Empfehlungsmaschinen und Betrugserkennung, wenn sie verwendet werden, um Beziehungen zwischen Daten herzustellen und diese Beziehungen schnell abzufragen.

Betrugserkennung

Graphdatenbanken sind in der Lage, Betrug zu verhindern. So können Sie beispielsweise Beziehungen in Graphdatenbanken nutzen, um Finanztransaktionen nahezu in Echtzeit zu verarbeiten. Mit schnellen Graphabfragen können Sie erkennen, dass ein potenzieller Käufer dieselbe E-Mail-Adresse und Kreditkarte verwendet, die auch in einem bekannten Betrugsfall verwendet wurde. Graphdatenbanken können Ihnen auch helfen, Betrug durch Beziehungsmuster zu erkennen, z. B. mehrere Personen, die mit einer persönlichen E-Mail-Adresse verbunden sind, oder mehrere Personen, die dieselbe IP-Adresse haben, aber an verschiedenen Orten wohnen.

Empfehlungs-Engines

Das Graph-Modell ist eine gute Wahl für Anwendungen, die Empfehlungen geben. Sie können grafische Beziehungen zwischen Informationskategorien wie Kundeninteressen, Freunden und Kaufhistorie speichern. Sie können eine hochverfügbare Graphdatenbank verwenden, um einem Benutzer Produktempfehlungen zu geben, die darauf basieren, welche Produkte von anderen Personen mit ähnlichen Interessen und Kaufhistorien gekauft wurden. Sie können auch Personen identifizieren, die einen gemeinsamen Freund haben, sich aber noch nicht kennen, und dann eine Freundschaftsempfehlung abgeben.

Routenoptimierung

Bei Problemen der Routenoptimierung geht es darum, einen Datensatz zu analysieren und Werte zu finden, die für ein bestimmtes Szenario am besten geeignet sind. Sie können beispielsweise eine Graphdatenbank verwenden, um Folgendes zu finden:

  • Die kürzeste Route von Punkt A nach B auf einer Karte unter Berücksichtigung verschiedener Pfade.
  • Den richtigen Mitarbeiter für eine bestimmte Schicht durch Analyse der verschiedenen Verfügbarkeiten, Standorte und Fähigkeiten.
  • Die optimale Maschine für den Betrieb unter Berücksichtigung von Parametern wie Kosten und Lebensdauer der Ausrüstung.

Graphabfragen können diese Situationen viel schneller analysieren, da sie die Anzahl der Verbindungen zwischen zwei Knoten zählen und vergleichen können.

Erkennung von Mustern

Graphdatenbanken sind gut geeignet, um komplexe Beziehungen und versteckte Muster in Daten zu entdecken. Beispielsweise verwendet ein Social-Media-Unternehmen eine Graphdatenbank, um zwischen Bot-Konten und echten Konten zu unterscheiden. Sie analysiert die Kontoaktivität, um Zusammenhänge zwischen Kontointeraktionen und Bot-Aktivitäten zu entdecken.

Wissensmanagement

Graphdatenbanken bieten Techniken zur Datenintegration, zur Verknüpfung von Daten und zur gemeinsamen Nutzung von Informationen. Sie stellen komplexe Metadaten oder Domain-Konzepte in einem standardisierten Format dar und bieten eine umfangreiche Semantik für die Verarbeitung natürlicher Sprache. Sie können diese Datenbanken auch für Wissensgraphen und Stammdatenmanagement verwenden. Machine Learning-Algorithmen unterscheiden beispielsweise anhand von Graphmodellen zwischen dem Amazonas-Regenwald und der Marke Amazonas.

Was sind die Vorteile von Graphdatenbanken

Eine Graphdatenbank wurde speziell für die Verwaltung stark vernetzter Daten entwickelt. Da die Vernetzung und das Volumen moderner Daten zunehmen, bieten Graphdatenbanken die Möglichkeit, die Daten kosteneffizient zu nutzen und zu analysieren. Hier sind die drei wichtigsten Vorteile der Graph-Analyse.

Flexibilität

Das Schema und die Struktur von Graphmodellen können sich mit Ihren Anwendungen ändern. Datenanalysten können bestehende Graphstrukturen hinzufügen oder ändern, ohne bestehende Funktionen zu beeinträchtigen. Es ist nicht erforderlich, Domains im Voraus zu modellieren.

Leistung

Relationale Datenbankmodelle werden mit zunehmendem Volumen und zunehmender Tiefe der Beziehungen weniger optimal. Dies führt zu Datenduplizierung und Redundanz — mehrere Tabellen müssen verarbeitet werden, um Abfrageergebnisse zu ermitteln. Im Gegensatz dazu verbessert sich die Leistung von Graphdatenbanken bei der Abfrage von Beziehungen um mehrere Größenordnungen. Die Leistung bleibt konstant, auch wenn das Volumen der Graphdaten zunimmt.

Effizienz

Graphabfragen sind kürzer und effizienter bei der Erstellung der gleichen Berichte im Vergleich zu relationalen Datenbanken. Graphtechnologien nutzen die Vorteile von verknüpften Knotenpunkten. Das Durchlaufen der Verknüpfungen oder Beziehungen ist ein sehr schneller Prozess, da die Beziehungen zwischen den Knoten nicht bei der Abfrage berechnet werden, sondern in der Datenbank persistiert werden.

Wie funktionieren Graphanalysen und Graphdatenbanken

Graphdatenbanken arbeiten mit einer standardisierten Abfragesprache und Graphalgorithmen.

Sprachen für Graphabfragen

Graphabfragesprachen werden verwendet, um mit einer Graphdatenbank zu interagieren. Ähnlich wie SQL verfügt die Sprache über Features zum Hinzufügen, Bearbeiten und Abfragen von Daten. Diese Sprachen nutzen jedoch die zugrunde liegenden Graphstrukturen, um komplexe Abfragen effizient zu verarbeiten. Sie bieten eine Schnittstelle, über die Sie Fragen stellen können wie:

  • Anzahl der Hops zwischen Knoten
  • Längster Pfad/Kürzester Pfad/optimale Pfade
  • Wert der Knoten

Apache TinkerPop Gremlin, SPARQL und OpenCypher sind beliebte Graphabfragesprachen.

Graphalgorithmen

Graphalgorithmen sind Operationen, die Beziehungen und Verhaltensweisen von miteinander verbundenen Daten analysieren. Instances untersuchen zum Beispiel die Entfernung und die Pfade zwischen Knoten oder analysieren eingehende Edges und Nachbarknoten, um Berichte zu erstellen. Die Algorithmen können gemeinsame Muster, Anomalien, Gemeinschaften und Pfade identifizieren, die die Datenelemente verbinden. Einige Beispiele für Graphalgorithmen sind:

Clustering

Anwendungen wie Bildverarbeitung, Statistik und Data Mining verwenden Clustering, um Knoten auf der Grundlage gemeinsamer Merkmale zu gruppieren. Clustering kann sowohl bei Unterschieden zwischen Clustern als auch bei Ähnlichkeiten innerhalb von Clustern durchgeführt werden.

Partitionierung

Sie können Graphen an dem Knoten mit den wenigsten Edges partitionieren oder schneiden. Anwendungen wie Netzwerktests verwenden Partitionierung, um Schwachstellen im Netzwerk zu finden.

Graphsuchvorgänge oder Durchquerungen können auf zwei Arten durchgeführt werden: zuerst in der Breite oder zuerst in der Tiefe. Bei der breitenorientierten Suche wird im Graphen von einem Knoten zum anderen gewechselt. Dies ist nützlich bei der optimalen Pfadfindung. Die Tiefensuche bewegt sich entlang eines einzelnen Zweigs, um alle Beziehungen eines bestimmten Knotens zu finden.

Wann sind Graphdatenbanken nicht geeignet

Eine spezielle Graphdatenbank bietet den größten Nutzen für stark vernetzte Datensätze und alle Analysen, die die Suche nach versteckten und offensichtlichen Beziehungen erfordern. Wenn dies nicht zu Ihrem Anwendungsfall passt, sind andere Datenbanktypen möglicherweise besser geeignet.

Stellen Sie sich zum Beispiel ein Szenario vor, in dem Sie den Produktbestand nach Artikeln aufzeichnen müssen. Sie müssen nur Details wie den Artikelnamen und die verfügbaren Einheiten speichern. Da Sie keine zusätzlichen Informationen beibehalten müssen, ändern sich die Spalten in der Tabelle nicht. Aufgrund des tabellarischen Charakters ist eine relationale Datenbank besser für solche Daten geeignet, die nichts miteinander zu tun haben.

Es ist auch wichtig, Graphdatenbanken nicht einfach als Schlüsselwertspeicher zu verwenden. Ein Suchergebnis aus einem bekannten Schlüssel maximiert nicht die Funktion dessen, wofür Graphdatenbanken erstellt wurden.

Wie kann AWS Ihre Anforderungen an Graphdatenbanken unterstützen

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 beliebten Graphmodelle Property Graph und das Resource Description Framework (RDF) des W3C. Sie unterstützt auch die entsprechenden Abfragesprachen - Apache TinkerPop Gremlin und SPARQL - um Ihnen die Erstellung von Abfragen zu ermöglichen, die effizient durch stark verknüpfte Datensätze navigieren. Zu den wichtigsten Features von Neptun gehören:

  • Serverless - Sie können Graph-Workloads sofort in fein abgestuften Schritten skalieren und bis zu 90 % der Datenbankkosten gegenüber der Bereitstellung von Spitzenkapazitäten einsparen.
  • Hochverfügbar — einschließlich Amazon Neptune Global Database für weltweit verteilte Anwendungen, die eine schnelle lokale Leseleistung unterstützen.
  • Entkoppelte Speicherung und Berechnung, so dass Sie die Leseleistung mit bis zu 15 Lesereplikaten steigern können, die sich denselben zugrunde liegenden Speicher teilen, ohne dass die Schreibvorgänge an den Replikatknoten durchgeführt werden müssen.
  • Extrem zuverlässig und robust mit fehlertolerantem und selbstheilendem Speicher, Point-in-Time-Recovery, kontinuierlichen Backups und mehr. Amazon Neptune macht Ihre Daten über drei AZs innerhalb einer Region hinweg haltbar, indem neue Schreibvorgänge auf sechs Arten repliziert werden, während Sie nur für eine Kopie bezahlen.
  • Hohe Sicherheit durch standardmäßige Verschlüsselung im Ruhezustand, Netzwerkisolierung und fortschrittliches Auditing bei gleichzeitiger Möglichkeit zur Steuerung von Berechtigungen auf Ressourcenebene mit fein abgestuftem Zugriff.
  • Umfassende Compliance-Abdeckung, einschließlich FedRAMP (Moderate und High) bis SOC (1, 2 und 3), HIPAA-fähig.
  • Neptune wird vollständig verwaltet, so dass Sie sich nicht mehr um Aufgaben der Datenbankverwaltung wie Hardware-Bereitstellung, Software-Patching, Einrichtung, Konfiguration oder Backups kümmern müssen.

Beginnen Sie mit Graphdatenbanken auf AWS, indem Sie noch heute ein kostenloses Konto erstellen.

Einführung in Amazon Neptune
Erste Schritte mit Amazon Neptune Serverless