Was ist der Unterschied zwischen einer Graphdatenbank und einer relationalen Datenbank?


Was ist der Unterschied zwischen einer Graphdatenbank und einer relationalen Datenbank?

Sowohl Graphdatenbanken als auch relationale Datenbanken speichern verwandte Datenelemente mit Beziehungen, sie stellen die Datenbeziehungen jedoch sehr unterschiedlich dar. Relationale Datenbanken speichern Daten in einem tabellarischen Format mit Zeilen und Spalten. Alle Daten werden auch in Tabellen gespeichert, und Beziehungen zwischen Daten werden als dargestellte Referenzen zurück auf die ursprüngliche Tabelle (auch bekannt als Fremdschlüssel) gespeichert. Zur Laufzeit verwendet eine relationale Datenbank JOIN-Anweisungen, um diese Referenzen explizit aufzulösen. Während die meisten relationalen Datenbanken dies in bestimmten Maßstäben effizient erledigen können, werden diese Operationen ineffizient, wenn eine große oder unbekannte Anzahl dieser Referenzen verarbeitet werden muss, z. B. wenn Sie anhand einer unbekannten Anzahl von Verbindungen nach Verwandten suchen möchten, z. B. um herauszufinden, wie zwei Personen in einem sozialen Netzwerk verknüpft sind.

Im Gegensatz dazu speichert eine Graphdatenbank Daten als Netzwerk von Entitäten und Beziehungen. Graphdatenbanken speichern explizit sowohl die Entitäts- als auch die Beziehungsdaten, anstatt Daten als Referenzen zu speichern. Zur Laufzeit nutzt eine Graphdatenbank mathematische Graphentheorie, um Operationen an Entitäten und Beziehungen effizient durchzuführen. Da die Beziehungen zwischen Entitäten explizit gespeichert und nicht berechnet werden, sind Graphdatenbanken bei Abfragen und Speichermanagement für Anwendungsfälle mit komplexen Datenverbindungen effizienter, was die Anwendungsleistung erheblich verbessern kann.


Lesen Sie über relationale Datenbanken »
Lesen Sie mehr über Graphdatenbanken »
 

Datenmodell: Graphdatenbank im Vergleich zur relationalen Datenbank

Sowohl Graph- als auch relationale Datenbanken speichern Informationen und stellen Beziehungen zwischen Daten dar. Das relationale Modell priorisiert jedoch Datenentitäten, während das Graphmodell die Beziehungen zwischen den Entitäten priorisiert.

Modell der relationalen Datenbank

Relationale Datenbanken verwenden Datentabellen, die Informationen in Zeilen und Spalten organisieren. Spalten enthalten spezifische Attribute der Datenentität, während Zeilen die einzelnen Datensätze darstellen. 

Das feste Schema relationaler Datenbanken erfordert, dass Sie die Beziehungen zwischen Tabellen im Voraus mit Primär- und Fremdschlüsseln skizzieren. 

Beispiel

Betrachten Sie eine Social-Media-Anwendung mit Kundenprofilen, die miteinander befreundet sein können. Ein typisches Modell würde zwei Tabellen benötigen, um die Daten zu modellieren.
Die Kundentabelle könnte so aussehen:


ID

Name

Ort

C1

Alejandro

USA

C2

Ana

USA

C3

Kwaku

USA

C4

Pat

USA

Die Freunde-Tabelle könnte so aussehen:


Kunden-ID

Freunde-ID

C1

C2

C1

C3

C2

C4

C2

C1

C3

C1

C3

C4

Zur Abfragezeit, wenn Sie eine Frage wie „Wie lauten die Namen von Alejandros Freunden?“ beantworten wollten, würde die Datenbank-Engine zuerst die Zeile in der Kundentabelle für Alejandro suchen.
 


ID

Name

Ort

C1

Alejandro

USA

Als Nächstes würde die Engine eine Vereinigung aller Zeilen in der Freunde-Tabelle für Alejandro unter Verwendung seiner ID erstellen.
 


ID

Name

Ort

Kunden-ID

Freunde-ID

C1

Alejandro

USA

C1

C2

C1

Alejandro

USA

C1

C3

Jetzt würde die Engine für jede Zeile eine Vereinigung erstellen, die für jede Freunde-ID zur Kundentabelle zurückkehrt.
 


ID

Name

Ort

Kunden-ID

Freunde-ID

ID

Name

Ort

C1

Alejandro

USA

C1

C2

C2

Ana

USA

C1

Alejandro

USA

C1

C3

C3

Kwaku

USA

Schließlich gibt die Engine die Namen seiner Freunde zurück.
 


Name

Ana

Kwaku

Wie wir sehen können, bauen wir bei der Verwendung der Verbindungen in unseren relationalen Daten am Ende eine große Datenstruktur auf, um die Informationen darzustellen, die wir abrufen möchten. Relationale Datenbanken verfügen zwar über Optimierungen, um die Auswirkungen dieser Strukturen zu minimieren, aber mit zunehmender Anzahl von Verknüpfungen nimmt die benötigte Datenmenge erheblich zu, was die Leistung verringert und den Speicherverbrauch erhöht.

Graphdatenbank-Modell

Andererseits verwendet eine Graphdatenbank eine Graphstruktur mit Attributen, Beziehungen und Objekten, um Daten darzustellen. Knoten sind Objekte, Kanten zeigen die Beziehung zwischen diesen Knoten und Eigenschaften beschreiben die Attribute der Knoten und Kanten. Diese dynamische Struktur macht eine Graphdatenbank für die Darstellung verbundener Daten nützlich. Es bietet mehr Flexibilität in Bezug auf Beziehungen und Datentypen.

Beispiel

Unter Verwendung derselben Beispieldaten für soziale Netzwerke wie oben würde unsere Graphdatenbank die Daten unter Verwendung von 3 Knoten mit jeweils 4 Eigenschaften und 2 Edges speichern.

Sehen wir uns nun an, wie eine Graphdatenbank die Abfrage „Wie lauten die Namen von Alejandros Freunden?“ verarbeitet.

Zuerst suchen wir nach unserem Kundenknoten, der Alejandro repräsentiert (unten hervorgehoben).

Als Nächstes werden wir die Edges unserer Freunde traversieren/durchqueren. Das Traversieren in einer Graphdatenbank ähnelt dem Ausführen eines JOIN in einer relationalen Datenbank, außer dass Informationen von früher in der Abfrage nicht beibehalten werden, sofern nicht ausdrücklich angefordert. In unserem Beispiel unten werden nur die Edges der beiden Freunde im Speicher beibehalten.

Drittens setzen wir unsere Durchquerung zu den benachbarten Knoten fort.

Schließlich gibt die Engine die Namen seiner Freunde zurück.
 


Name

Ana

Kwaku

Wie wir sehen können, können beide Engines dieselben Informationen zurückgeben. Wenn jedoch viele Verbindungen durchquert werden, ermöglicht die explizite Speicherung von Beziehungen in einer Graphdatenbank eine effizientere Verarbeitung dieser Anfrage. Dieser Vorteil ist zwar bei einfachen Abfragen, wie der hier gezeigten, nicht signifikant, aber diese Optimierung kann zusammen mit der Struktur der Graphabfragesprachen die Komplexität und den Speicherverbrauch für die Verarbeitung von Fragen, die viele oder eine unbekannte Anzahl dieser Beziehungsdurchquerungen erfordern, erheblich reduzieren.

Hauptunterschiede: Graphdatenbank im Vergleich zur relationalen Datenbank

Neben ihren unterschiedlichen Datenmodellen weisen relationale Datenbanken und Graphdatenbanken viele Unterschiede auf, die sie in Bezug auf Funktion und Nutzen unterscheiden.

Abfrage

Graphdatenbanken verwenden benutzerdefinierte Abfragesprachen, die für das schnelle Auffinden und Abrufen verbundener Daten optimiert sind. Diese Sprachen, z. B. TinkerPop Gremlin, OpenCypher und SPARQL, wurden speziell entwickelt, um das Schreiben von Abfragen zu vereinfachen, die komplexe Datenverbindungen nutzen, wie sie für Operationen wie rekursiven Datenzugriff, Pfadsuche und Graphalgorithmen erforderlich sind.

Im Gegensatz dazu verwenden relationale Datenbanken SQL, um Daten abzurufen und zu bearbeiten. Mit SQL können Benutzer verschiedene Arten von Abfragen – wie SELECT, INSERT, UPDATE und DELETE – für Tabellen ausführen. Relationale Datenbanken zeichnen sich durch den Umgang mit strukturierten Daten mit klar definierten Beziehungen zwischen Tabellen aus. Sie sind besonders effektiv für die Durchführung komplexer Filterung, Aggregationen und Verknüpfungen über mehrere Tabellen hinweg.

Leistung

Graphdatenbanken speichern sowohl Objekte als auch Beziehungen als Daten und verwenden Indizes, um effizient zwischen verwandten Entitäten zu wechseln. Da Graphdatenbanken Beziehungen als Daten speichern, kann die Datenbank schnell zwischen Entitäten navigieren, ohne dass diese Verbindungen dynamisch berechnet werden müssen. Die direkte Verbindung zwischen Knoten ermöglicht einen sofortigen Zugriff, sodass Sie Beziehungen schnell abfragen und verfolgen können. Diese Funktionen machen Graphdatenbanken sehr effizient.

Alternativ verwenden relationale Datenbanken Indexsuchvorgänge und dynamisch berechnete Verknüpfungen, um Beziehungen zwischen Entitäten zu identifizieren. Sie können mehrere Tabellen verknüpfen, dies ist jedoch zeitaufwändig, da das System größere Indizes über mehr Daten scannen muss. Aus diesem Grund bietet eine relationale Datenbank nicht die gleiche Leistung wie eine Graphdatenbank für Anwendungsfälle, in denen eine große Anzahl von Verbindungen erforderlich ist, um die erforderlichen Daten abzurufen.

Einfache Nutzung

Graphdatenbanken sind beziehungsorientiert, was die Arbeit mit ihnen erleichtert, wenn Sie verbundene Daten verwenden. Diese Datenbanken zeichnen sich durch Multi-Hop-Abfragen aus, bei denen Sie Pfade mit mehreren Beziehungen durchqueren. Sie können auch Graphabfragesprachen wie SPARQL, Gremlin oder OpenCypher verwenden, um Abfragen auszudrücken, die miteinander verbundene Daten mit einer einfachen, graphspezifischen Syntax untersuchen.

Relationale Datenbanken verwenden SQL, was sich bei der Verwaltung von Multi-Hop-Abfragen unnatürlich anfühlen kann. Wenn eine Abfrage mehrere Joins hat und sich über verschachtelte Unterabfragen erstreckt, wird das Schreiben von SQL schwierig. Wenn Sie nicht vorsichtig sind, kann dies leicht zu umfangreichen Abfragen führen, die schwer zu lesen und zu verwalten sind.

Relationale Datenbanken sind jedoch ausgereift und in verschiedenen Anwendungsfällen beliebt. Es gibt verschiedene Tools und Ressourcen sowie Community-Support, auf den Sie zugreifen können, um Ihr System zu optimieren.

Wann zu verwenden: Graphdatenbank im Vergleich zur relationalen Datenbank

Graph- und relationale Datenbanken haben viele effektive Anwendungsfälle. Da sie unterschiedliche Datenmodelle und mehrere grundlegende Unterscheidungen haben, zeichnen sie sich in verschiedenen Bereichen aus.

Graphdatenbank

Graphdatenbanken bieten ein flexibles Schema, das dynamische Änderungen und Anpassungen von Daten ermöglicht. Der Fokus auf Datenbeziehungen macht es für Analysen, semantische Suchen oder Empfehlungsmaschinen nützlich. Eine Graphdatenbank ist in diesen Szenarien die bessere Wahl:

  • Sie arbeiten mit Daten, die komplexe Zusammenhänge aufweisen, z. B. in sozialen Netzwerken, Betrugserkennung, Wissensgraphen, Sicherheitsgraphen oder personalisierten Empfehlungs-Engines.
  • Sie benötigen ein sich weiterentwickelndes Schema, da Sie Kanten, Knoten und Eigenschaften ändern können, ohne die restliche Datenbankstruktur zu stören
  • Sie arbeiten mit miteinander verbundenen Daten und müssen mehrere oder eine unbekannte Anzahl von Hops zwischen Beziehungen durchführen (Abfragen vom Typ „Freund eines Freundes“).

Graphdatenbanken sind flexibel, skalierbar, dynamisch und eignen sich hervorragend zur Darstellung von Beziehungen zwischen Daten.

Relationale Datenbank

Relationale Datenbanken bieten ein strukturiertes Schema mit hervorragender Unterstützung für die Datenintegrität. Eine relationale Datenbank ist in diesen Szenarien die bessere Wahl:

  • Sie benötigen ACID-Konformität und ein hohes Maß an Datenintegrität und -konsistenz, wie bei Finanztransaktionen
  • Sie arbeiten mit hochstrukturierten Daten, die sich gut in das tabellarische Datenmodell einfügen, wie zum Beispiel im Enterprise Resource Management
  • Ihre Daten haben begrenzte Beziehungen

Zusammenfassung der Unterschiede: Relationale Datenbank im Vergleich zur Graphdatenbank

 
Relationale Datenbanken

Graph-Datenbanken

Modell

Tabellarisch mit Zeilen und Spalten.

Verbundene Knoten mit Daten, die als Knoten und Edges dargestellt werden

Operationen

SQL-Operationen wie Erstellen, Lesen, Aktualisieren und Löschen (CRUD).

Zu den Operationen gehören CRUD- und Graph-Traversal-Operationen

Leistung

Relationale Datenbanken sind beim Durchlaufen von Beziehungen mit komplexen Abfragen konfrontiert, die die Leistung beeinträchtigen können.

Eine Graphdatenbank eignet sich hervorragend für die Darstellung und Abfrage von Beziehungen zwischen verbundenen Daten.

Einfache Nutzung

Relationale Datenbanken eignen sich gut für große Datensätze und strukturierte Daten. Sie haben Probleme, wenn es um Multi-Hop-Abfragen geht.

Eine Graphdatenbank ist einfach zu verwenden, wenn es um beziehungsorientierte Daten geht. Mit einer Graph-Abfragesprache können Sie schnell Multi-Hop-Daten abfragen.
     

Wie kann AWS Ihnen bei Ihren Anforderungen an relationale Datenbanken und Graphdatenbanken helfen?

Amazon Web Services (AWS) bietet Lösungen für Anwendungsfälle sowohl für relationale Datenbanken als auch für Graphdatenbanken.

 

Relationale Datenbanken

Amazon Relational Database Service (Amazon RDS) ist ein verwalteter Service zum einfachen Einrichten, Betreiben und Skalieren einer relationalen Datenbank in der Cloud. Dieser Service stellt kosteneffiziente und individuell anpassbare Kapazität zur Verfügung und übernimmt zeitraubende Verwaltungsaufgaben für Datenbanken. Amazon RDS unterstützt mehrere Datenbank-Engines, darunter:

Amazon Aurora ist ein moderner relationaler Datenbankservice, der Leistung und Hochverfügbarkeit in großem Umfang, vollständig quelloffene MySQL- und PostgreSQL-kompatible Versionen bietet. Aurora ist auch ein voll verwalteter Service, der zeitaufwendige Verwaltungsaufgaben wie die Hardwarebereitstellung, die Einrichtung von Datenbanken, das Patchen und Backups automatisiert. Zugleich werden Ihnen Sicherheit, Verfügbarkeit und Verlässlichkeit Ihrer kommerziellen Datenbanken zu einem Zehntel der üblichen Kosten geboten.

Graph-Datenbanken

Amazon Neptune ist eine zweckgerichtete, leistungsstarke Graphdatenbank-Engine. Die Engine ist optimiert, um Milliarden von Beziehungen zu speichern und das Diagramm mit Millisekunden Latenz abzufragen.
Neptune unterstützt die beliebten Graphmodelle Property Graph und das Resource Description Framework (RDF) des W3C. Es unterstützt auch Abfragesprachen wie Gremlin und SPARQL, sodass Sie Abfragen erstellen können, die in stark verbundenen Datensätzen navigieren.
Neptune bietet mehrere Funktionen:

  • Neptune ist hochverfügbar, mit Lesereplikaten, zeitpunktbezogener Wiederherstellung, stetiger Sicherung und Replikation über Availability Zones hinweg.
  • Neptune ist dank der Unterstützung der Verschlüsselung im Ruhezustand sehr sicher.
  • Der Service ist vollständig verwaltet. Sie müssen sich keine Sorgen mehr über Datenbank-Verwaltungsaufgaben wie Hardware-Bereitstellung, Software-Patches, Setup, Konfiguration oder Sicherungen machen.

Beginnen Sie mit Graph- und relationalen Datenbanken in AWS, indem Sie noch heute ein Konto erstellen.