Graph-Verarbeitung mit SQL Server und Azure SQL-Datenbank

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

SQL Server bietet Graphdatenbankfunktionen, um viele zu viele Beziehungen zu modellieren. Die Diagrammbeziehungen werden in Transact-SQL integriert und erhalten die Vorteile der Verwendung von SQL Server als Basisdatenbankverwaltungssystem.

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 Edges 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.

Verwenden einer Diagrammdatenbank

Eine relationale Datenbank kann alles erreichen, was eine Diagrammdatenbank kann. Eine Diagrammdatenbank erleichtert es jedoch, bestimmte Arten von Abfragen auszudrücken. Außerdem können bestimmte Abfragen mit bestimmten Optimierungen besser ausgeführt werden. Ihre Entscheidung, entweder eine relationale oder graphische Datenbank auszuwählen, basiert auf folgenden Faktoren:

  • Ihre Anwendung verfügt über hierarchische Daten. Der HierarchieID-Datentyp kann verwendet werden, um Hierarchien zu implementieren, aber es hat einige Einschränkungen. Es ermöglicht Ihnen beispielsweise nicht, mehrere Eltern für einen Knoten zu speichern.
  • Ihre Anwendung verfügt über komplexe viele zu viele Beziehungen; wenn sich die Anwendung entwickelt, werden neue Beziehungen hinzugefügt.
  • Sie müssen miteinander verbundene Daten und Beziehungen analysieren.

In SQL Server 2017 (14.x) eingeführte Graphfeatures

Wir beginnen mit dem Hinzufügen von Diagrammerweiterungen zu SQL Server, um das Speichern und Abfragen von Diagrammdaten zu vereinfachen. Die folgenden Features werden in der ersten Version eingeführt.

Erstellen von Diagrammobjekten

Transact-SQL-Erweiterungen ermöglichen Benutzern das Erstellen von Knoten- oder Edgetabellen. Sowohl Knoten als auch Edges können Eigenschaften zugeordnet sein. Da Knoten und Kanten als Tabellen gespeichert werden, werden alle Vorgänge, die auf relationalen Tabellen unterstützt werden, auf Knoten- oder Edgetabellen unterstützt. Im Folgenden ein Beispiel:

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

Diagramm mit den Knoten und Edges werden als Tabellen gespeichert.
Knoten und Edges werden als Tabellen gespeichert.

Abfragespracheerweiterungen

Neue MATCH Klausel wird eingeführt, um Musterabgleich und Multi-Hop-Navigation über das Diagramm zu unterstützen. Die MATCH Funktion verwendet DIE ASCII-Art-Stilsyntax für die Musterabgleichung. Beispiel:

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

Voll integriert in SQL Server Engine

Grapherweiterungen sind vollständig in SQL Server Engine integriert. Verwenden Sie dasselbe Speichermodul, Metadaten, Abfrageprozessor usw. zum Speichern und Abfragen von Diagrammdaten. Abfragen über Diagramme und relationale Daten in einer einzelnen Abfrage. Kombinieren von Diagrammfunktionen mit anderen SQL Server Technologien wie Spaltenspeicher, HA, R-Dienste usw. DIE SQL Graph-Datenbank unterstützt auch alle mit SQL Server verfügbaren Sicherheits- und Compliancefeatures.

Tooling und Ökosystem

Profitieren Sie von vorhandenen Tools und Ökosystemen, die SQL Server angeboten werden. Tools wie Sicherung und Wiederherstellung, Import und Export, BCP funktionieren einfach aus dem Feld. Andere Tools oder Dienste wie SSIS, SSRS oder Power BI funktionieren mit Diagrammtabellen, genau wie sie mit relationalen Tabellen arbeiten.

Edgeeinschränkungen

Eine Randeinschränkung wird in einer Graph-Edgetabelle definiert und ist ein Paar von Knotentabellen, die ein bestimmter Edgetyp verbinden kann. Dadurch erhalten Benutzer eine bessere Kontrolle über ihr Diagrammschema. Mit Hilfe von Edgeeinschränkungen können Benutzer den Typ von Knoten einschränken, die ein bestimmtes Edge herstellen darf.

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

DML zusammenführen

Die MERGE-Anweisung führt Einfüge-, Aktualisierungs- oder Löschvorgänge in einer 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 in Azure SQL Datenbank und SQL Server vNext unterstützt. Das heißt, es ist jetzt möglich, Ihre aktuellen Diagrammdaten (Knoten- oder Edgetabellen) mit neuen Daten mit den MATCH-Prädikaten zusammenzuführen, um Diagrammbeziehungen in einer einzelnen Anweisung anzugeben, anstatt separate INSERT/UPDATE/DELETE-Anweisungen anzugeben.

Weitere Informationen dazu, wie die Übereinstimmung in merge DML verwendet werden kann, finden Sie unter MERGE-Anweisung

Kürzester Pfad

Die SHORTEST_PATH-Funktion findet einen kurzen Pfad zwischen allen 2 Knoten in einem Diagramm oder ab einem bestimmten Knoten zu allen anderen Knoten im Diagramm. Kürzester Pfad kann auch verwendet werden, um eine transitive Schließung oder für beliebige Längendurchgänge im Diagramm zu finden.

Nächste Schritte

Lesen der SQL Graph-Datenbank – Architektur