Graph-Verarbeitung mit SQL Server und Azure SQL-Datenbank

Gilt für: SQL Server 2017 (14.x) und höher Azure SQL-DatenbankAzure SQL Managed Instance

SQL Server bietet Graphdatenbankfunktionen zum Modellieren von n:n-Beziehungen. Die Graphbeziehungen sind in Transact-SQL integriert und erhalten die Vorteile der Verwendung von SQL Server als grundlegendes Datenbankmanagementsystem.

Was ist eine Graphdatenbank?

Eine Diagrammdatenbank ist eine Sammlung von Knoten (oder Vertices) und Edges (oder Beziehungen). Ein Knoten repräsentiert eine Entität (z.B. eine Person oder eine Organisation), und eine Kante repräsentiert eine Beziehung zwischen den beiden Knoten, die durch die Kante verbunden sind (z.B. „Gefällt mir“-Markierungen oder Freunde). Sowohl Knoten als auch Kanten können eigenschaften zugeordnet sein. Folgende Features machen eine Graphdatenbank einmalig:

  • Kanten oder Beziehungen sind Entitäten der ersten Klasse in einer Graphdatenbank, denen Attribute oder Eigenschaften zugeordnet sein können.
  • Eine einzelne Kante kann flexibel mehrere Knoten in einer Graphdatenbank verbinden.
  • Musterabgleiche und Navigationsabfragen über mehrere Hops lassen sich ganz einfach ausdrücken.
  • Transitive Abschlüsse und polymorphe Abfragen lassen sich ebenfalls sehr einfach ausdrücken.

Wann sollte eine Graphdatenbank verwendet werden?

Eine relationale Datenbank kann alles erreichen, was eine Graphdatenbank kann. Eine Graphdatenbank erleichtert jedoch das Ausdrücken bestimmter Arten von Abfragen. Außerdem können bestimmte Abfragen mit bestimmten Optimierungen besser funktionieren. Ihre Entscheidung, entweder eine relationale Datenbank oder eine Graphdatenbank zu wählen, basiert auf den folgenden Faktoren:

  • Ihre Anwendung verfügt über hierarchische Daten. Der HierarchyID-Datentyp kann zum Implementieren von Hierarchien verwendet werden, weist jedoch einige Einschränkungen auf. Beispielsweise können Sie nicht mehrere übergeordnete Elemente für einen Knoten speichern.
  • Ihre Anwendung verfügt über komplexe n:n-Beziehungen. Wenn sich die Anwendung weiterentwickelt, werden neue Beziehungen hinzugefügt.
  • Sie müssen miteinander verbundene Daten und Beziehungen analysieren.

Graphfeatures, die in SQL Server 2017 (14.x) eingeführt wurden

Die folgenden Features wurden in SQL Server 2017 eingeführt.

Erstellen von Graphobjekten

Transact-SQL-Erweiterungen ermöglichen Benutzern das Erstellen von Knoten- oder Edgetabellen. Sowohl Knoten als auch Kanten können eigenschaften zugeordnet sein. Da Knoten und Kanten als Tabellen gespeichert werden, werden alle Vorgänge, die für relationale Tabellen unterstützt werden, für knoten oder edge table unterstützt. Hier sehen Sie ein Beispiel:

CREATE TABLE Person (ID INTEGER PRIMARY KEY, Name VARCHAR(100), Age INT) AS NODE;
CREATE TABLE friends (StartDate date) AS EDGE;

Das folgende Diagramm zeigt, wie Knoten und Edges als Tabellen gespeichert werden.

Diagramm, das zeigt, dass die Knoten und Edges als Tabellen gespeichert werden.

Abfragespracherweiterungen

Es wird eine neue MATCH Klausel eingeführt, um Musterabgleich und Multi-Hop-Navigation über das Diagramm zu unterstützen. Die MATCH Funktion verwendet die ASCII-Art-Syntax für den Musterabgleich. Um beispielsweise Freunde von "John" zu finden:

-- Find friends of John
SELECT Person2.Name 
FROM Person Person1, Friends, Person Person2
WHERE MATCH(Person1-(Friends)->Person2)
AND Person1.Name = 'John';

Vollständig in SQL Server Datenbank-Engine integriert

Grapherweiterungen sind vollständig in SQL Server Engine integriert. Verwenden Sie die gleiche Speicher-Engine, dieselben Metadaten, denselben Abfrageprozessor usw. , um Graphdaten zu speichern und abzufragen. Abfragen von graphen- und relationalen Daten in einer einzigen Abfrage. Kombinieren von Graphfunktionen mit anderen SQL Server Technologien wie Columnstore-Indizes, Hochverfügbarkeit, R-Diensten usw. SQL Graph unterstützt auch alle Sicherheits- und Compliancefeatures, die mit SQL Server verfügbar sind.

Tools und Ökosystem

Profitieren Sie von vorhandenen Tools und Ökosystemen, die SQL Server bietet. Tools wie Sichern und Wiederherstellen, Importieren und Exportieren, BCP funktionieren einfach sofort. Andere Tools oder Dienste wie SSIS, SSRS oder Power BI arbeiten mit Graphtabellen, genau wie sie mit relationalen Tabellen arbeiten.

Edgeeinschränkungen

Eine Edgeeinschränkung wird für eine Graph-Edgetabelle definiert und ist ein Paar von Knotentabellen, die ein bestimmter Edgetyp verbinden kann. Edgeeinschränkungen helfen Entwicklern, den Knotentyp einzuschränken, den ein bestimmter Edge verbinden kann.

Weitere Informationen zum Erstellen und Verwenden von Edgeeinschränkungen finden Sie unter Edgeeinschränkungen.

DML zusammenführen

Die MERGE-Anweisung führt Einfüge-, Update- oder Löschvorgänge für eine Zieltabelle basierend auf den Ergebnissen einer Verknüpfung mit einer Quelltabelle aus. Sie können beispielsweise zwei Tabellen synchronisieren, indem Sie Zeilen in einer Zieltabelle basierend auf Unterschieden zwischen der Zieltabelle und der Quelltabelle einfügen, aktualisieren oder löschen. Die Verwendung von MATCH-Prädikaten in einer MERGE-Anweisung wird jetzt auf Azure SQL Database und SQL Server vNext unterstützt. Das heißt, es ist jetzt möglich, Ihre aktuellen Graphdaten (Knoten- oder Edgetabellen) mit neuen Daten zusammenzuführen, indem Sie die MATCH-Prädikate verwenden, um Graphbeziehungen in einer einzelnen Anweisung anstelle separater INSERT/UPDATE/DELETE-Anweisungen anzugeben.

Weitere Informationen zur Verwendung von Übereinstimmungen in Merge-DML finden Sie unter MERGE-Anweisung.

Kürzester Pfad

Die SHORTEST_PATH-Funktion findet den kürzesten Pfad zwischen zwei Beliebigen Knoten in einem Diagramm oder ausgehend von einem bestimmten Knoten zu allen anderen Knoten im Diagramm. SHORTEST PATH kann auch verwendet werden, um einen transitiven Verschluss oder für beliebige Längendurchläufe im Diagramm zu finden.

Nächste Schritte