Delen via


Grafiekverwerking met SQL Server en Azure SQL Database

Van toepassing op: SQL Server 2017 (14.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

SQL Server biedt mogelijkheden voor grafiekdatabases om veel-op-veel-relaties te modelleren. De grafiekrelaties zijn geïntegreerd in Transact-SQL en krijgen de voordelen van het gebruik van SQL Server als het fundamentele databasebeheersysteem.

Wat is een grafiekdatabase?

Een grafiekdatabase is een verzameling knooppunten (of hoekpunten) en randen (of relaties). Een knooppunt vertegenwoordigt een entiteit (bijvoorbeeld een persoon of organisatie) en een rand vertegenwoordigt een relatie tussen de twee knooppunten die het verbindt (bijvoorbeeld likes of vrienden). Zowel knooppunten als randen hebben mogelijk eigenschappen die eraan zijn gekoppeld. Hier volgen enkele functies die een grafiekdatabase uniek maken:

  • Randen of relaties zijn eersteklas entiteiten in een Graph Database en kunnen kenmerken of eigenschappen hebben die eraan zijn gekoppeld.
  • Eén rand kan flexibel meerdere knooppunten in een Graph Database verbinden.
  • U kunt eenvoudig patroonkoppelingen en navigatiequery's met meerdere hops uitdrukken.
  • U kunt transitieve sluitings- en polymorfe query's eenvoudig uitdrukken.

Wanneer gebruikt u een grafiekdatabase?

Een relationele database kan alles bereiken wat een grafiekdatabase kan. Een grafiekdatabase maakt het echter gemakkelijker om bepaalde soorten query's uit te drukken. Met specifieke optimalisaties kunnen bepaalde query's ook beter presteren. Uw beslissing om een relationele of grafiekdatabase te kiezen, is gebaseerd op de volgende factoren:

  • Uw toepassing heeft hiërarchische gegevens. Het gegevenstype HierarchyID kan worden gebruikt voor het implementeren van hiërarchieën, maar er gelden enkele beperkingen. U kunt bijvoorbeeld niet meerdere bovenouders opslaan voor een knooppunt.
  • Uw toepassing heeft complexe veel-op-veel-relaties; naarmate de toepassing zich ontwikkelt, worden er nieuwe relaties toegevoegd.
  • U moet onderling verbonden gegevens en relaties analyseren.

Graph-functies die zijn geïntroduceerd in SQL Server 2017 (14.x)

De volgende functies zijn geïntroduceerd in SQL Server 2017.

Grafiekobjecten maken

Transact-SQL extensies stellen gebruikers in staat om knooppunt- of edge-tabellen te maken. Aan beide knooppunten en randen kunnen eigenschappen zijn gekoppeld. Omdat knooppunten en randen worden opgeslagen als tabellen, worden alle bewerkingen die worden ondersteund in relationele tabellen ondersteund op knooppunt- of edge-tabellen. Hier volgt een voorbeeld:

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

In het volgende diagram ziet u hoe knooppunten en randen worden opgeslagen als tabellen.

diagram met de knooppunten en randen worden opgeslagen als tabellen.

Querytaalextensies

Er wordt een nieuwe MATCH-component geïntroduceerd ter ondersteuning van patroonkoppeling en navigatie met meerdere hops via de grafiek. De functie MATCH maakt gebruik van de syntaxis van de STIJL ASCII voor patroonkoppeling. Als u bijvoorbeeld vrienden van 'John' wilt zoeken:

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

Volledig geïntegreerd in SQL Server Database Engine

Graph-extensies zijn volledig geïntegreerd in de SQL Server-engine. Gebruik dezelfde opslagengine, metagegevens, queryprocessor, enzovoort om grafiekgegevens op te slaan en op te vragen. Query's uitvoeren op grafiekgegevens en relationele gegevens in één query. Het combineren van grafiekmogelijkheden met andere SQL Server-technologieën, zoals columnstore-indexen, HA-, R-services, etc. SQL graph ondersteunt ook alle beveiligings- en nalevingsfuncties die beschikbaar zijn met SQL Server.

Hulpprogramma's en ecosysteem

Profiteer van bestaande hulpprogramma's en ecosystemen die SQL Server biedt. Hulpprogramma's zoals back-up en herstel, importeren en exporteren, werken BCP gewoon uit de doos. Andere hulpprogramma's of services, zoals SSIS, SSRS of Power BI, werken met grafiektabellen, net zoals ze met relationele tabellen werken.

Edge-beperkingen

Een randbeperking wordt gedefinieerd in een grafiekrandtabel en is een paar knooppunttabel(s) waarmee een bepaald edge-type verbinding kan maken. Met Edge-beperkingen kunnen ontwikkelaars het type knooppunten beperken waarmee een bepaalde edge verbinding kan maken.

Raadpleeg Edge-beperkingenvoor meer informatie over het maken en gebruiken van randbeperkingen.

DML samenvoegen

De instructie MERGE voert invoeg-, bijwerk- of verwijderbewerkingen uit op een doeltabel op basis van de resultaten van een join met een brontabel. U kunt bijvoorbeeld twee tabellen synchroniseren door rijen in te voegen, bij te werken of te verwijderen in een doeltabel op basis van verschillen tussen de doeltabel en de brontabel. Het gebruik van MATCH-predicaten in een MERGE-instructie wordt nu ondersteund in Azure SQL Database en SQL Server vNext. Dat wil zeggen dat het nu mogelijk is om uw huidige grafiekgegevens (knooppunt- of edge-tabellen) samen te voegen met nieuwe gegevens met behulp van de match-predicaten om grafiekrelaties in één instructie op te geven, in plaats van afzonderlijke INSERT/UPDATE/DELETE-instructies.

Raadpleeg MERGE-instructievoor meer informatie over hoe overeenkomst kan worden gebruikt in samenvoegings-DML.

Kortst pad

Met de functie SHORTEST_PATH vindt u het kortste pad tussen twee knooppunten in een grafiek of vanaf een bepaald knooppunt naar alle andere knooppunten in de grafiek. SHORTEST PATH kan ook worden gebruikt om een transitieve sluiting te vinden of voor willekeurige lengtedoorkruisingen in de grafiek.

Fabric SQL-database

In Fabric SQL Database is SQL Graph toegestaan, maar knooppunt- en Edge-tabellen worden niet gespiegeld naar Fabric OneLake.