Freigeben über


Graph-Verarbeitung mit SQL Server und Azure SQL-Datenbank

Gilt für: SQL Server 2017 (14.x) und höhere Versionen Azure SQL-Datenbank Azure SQL verwaltete Instanz SQL-Datenbank in Microsoft Fabric

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

Was ist eine Graphdatenbank?

Eine Graphdatenbank 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). Beide Knoten und Kanten weisen möglicherweise Eigenschaften auf. 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 eine Diagrammdatenbank verwendet werden soll

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

  • Ihre Anwendung verfügt über hierarchische Daten. Der HierarchyID-Datentyp kann zum Implementieren von Hierarchien verwendet werden, hat jedoch einige Einschränkungen. So können Sie beispielsweise nicht mehrere übergeordnete Element 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.

In SQL Server 2017 eingeführte Graph-Features (14.x)

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

Erstellen von Diagrammobjekten

Transact-SQL-Erweiterungen ermöglichen Benutzern das Erstellen von Knoten- oder Edgetabellen. Beide Knoten und Kanten können Eigenschaften zugeordnet sein. Da Knoten und Kanten als Tabellen gespeichert werden, werden alle Vorgänge, die in relationalen Tabellen unterstützt werden, auf Knoten- oder Randtabellen 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 Kanten als Tabellen gespeichert werden.

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

Abfragesprachenerweiterungen

Neue MATCH Klausel wird eingeführt, um Musterabgleich und Multi-Hop-Navigation über das Diagramm zu unterstützen. Die MATCH Funktion verwendet eine ASCII-Art-Formatvorlagensyntax 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

Graph-Erweiterungen sind vollständig in das SQL Server-Modul integriert. Verwenden Sie dasselbe Speichermodul, Metadaten, Abfrageprozessor usw. zum Speichern und Abfragen von Diagrammdaten. Abfragen von diagramm- und relationalen Daten in einer einzelnen Abfrage. Das Kombinieren von Graphfunktionen mit anderen SQL Server-Technologien wie Columnstore-Indizes, HA, R-Diensten, etc. SQL Graph unterstützt auch alle Sicherheits- und Compliancefeatures, die mit SQL Server zur Verfügung stehen.

Werkzeug- und Ökosystem

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

Edgeeinschränkungen

Eine Randeinschränkung wird in einer Graph-Randtabelle definiert und ist ein Knotentabellenpaar, das ein bestimmter Edgetyp verbinden kann. Edgeeinschränkungen helfen Entwicklern, den Typ der Knoten einzuschränken, die ein bestimmter Rand verbinden kann.

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

DML zusammenführen

Die MERGE-Anweisung führt Einfüge-, Aktualisierungs- 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 eine Zieltabelle einfügen, aktualisieren oder löschen, basierend auf den Unterschieden zwischen der Zieltabelle und der Quelltabelle. Die Verwendung von MATCH-Prädikaten in einer MERGE-Anweisung wird jetzt für Azure SQL-Datenbank und SQL Server vNext unterstützt. Das heißt, es ist jetzt möglich, Ihre aktuellen Diagrammdaten (Knoten- oder Randtabellen) mit neuen Daten mithilfe der VERGLEICH-Prädikate zusammenzuführen, um Graphbeziehungen in einer einzelnen Anweisung anstelle separater INSERT/UPDATE/DELETE-Anweisungen anzugeben.

Weitere Informationen zur Verwendung der Übereinstimmung in der ZUSAMMENFÜHRUNGS-DML finden Sie in der MERGE-Anweisung.

Kürzester Pfad

Die funktion SHORTEST_PATH findet den kürzesten Pfad zwischen zwei Knoten in einem Diagramm oder beginnend von einem bestimmten Knoten zu allen anderen Knoten im Diagramm. SHORTEST PATH kann auch verwendet werden, um eine transitive Schließung oder für beliebige Längendurchquerungen im Diagramm zu finden.

Fabric SQL-Datenbank

In der Fabric SQL-Datenbank ist SQL Graph zulässig, aber Knoten- und Edgetabellen spiegeln sich nicht in Fabric OneLake.