Dela via


Grafbearbetning med SQL Server och Azure SQL Database

gäller för: SQL Server 2017 (14.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

SQL Server erbjuder grafdatabasfunktioner för att modellera många-till-många-relationer. Grafrelationerna är integrerade i Transact-SQL och får fördelarna med att använda SQL Server som det grundläggande databashanteringssystemet.

Vad är en grafdatabas?

En grafdatabas är en samling noder (eller hörn) och kanter (eller relationer). En nod representerar en entitet (till exempel en person eller en organisation) och en kant representerar en relation mellan de två noder som den ansluter (till exempel gillar eller vänner). Både noder och kanter kan ha egenskaper associerade med dem. Här är några funktioner som gör en grafdatabas unik:

  • Kanter eller relationer är förstklassiga entiteter i en Graph Database och kan ha attribut eller egenskaper associerade med dem.
  • En enda kant kan flexibelt ansluta flera noder i en Graph Database.
  • Du kan enkelt uttrycka mönstermatchning och navigeringsfrågor med flera hopp.
  • Du kan enkelt uttrycka transitiv stängning och polymorfa frågor.

När du ska använda en grafdatabas

En relationsdatabas kan uppnå allt som en grafdatabas kan. En grafdatabas gör det dock enklare att uttrycka vissa typer av frågor. Med specifika optimeringar kan vissa frågor också fungera bättre. Ditt beslut att välja en relations- eller grafdatabas baseras på följande faktorer:

  • Programmet har hierarkiska data. Hierarki-ID-datatypen kan användas för att implementera hierarkier, men den har vissa begränsningar. Du kan till exempel inte lagra flera överordnade för en nod.
  • Ditt program har komplexa många-till-många-relationer. när programmet utvecklas läggs nya relationer till.
  • Du måste analysera sammankopplade data och relationer.

Graph-funktioner som introducerades i SQL Server 2017 (14.x)

Följande funktioner introducerades i SQL Server 2017.

Skapa grafobjekt

Transact-SQL tillägg gör det möjligt för användare att skapa nod- eller kanttabeller. Både noder och kanter kan ha egenskaper kopplade till dem. Eftersom noder och kanter lagras som tabeller stöds alla åtgärder som stöds i relationstabeller i nod- eller kanttabeller. Här är ett exempel:

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

Följande diagram visar hur noder och kanter lagras som tabeller.

diagram som visar att noder och kanter lagras som tabeller.

Frågespråktillägg

Ny MATCH-sats introduceras för att stödja mönstermatchning och navigering med flera hopp via diagrammet. Funktionen MATCH använder syntax för ASCII-art-stil för mönstermatchning. Till exempel för att hitta vänner till "John":

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

Helt integrerad i SQL Server Database Engine

Graph-tillägg är helt integrerade i SQL Server-motorn. Använd samma lagringsmotor, metadata, frågeprocessor osv. för att lagra och köra frågor mot grafdata. Fråga över graf- och relationsdata i en enda fråga. Genom att kombinera graffunktioner med andra SQL Server-tekniker som kolumnlagringsindex, HA, R-tjänster etc. SQL grafen stöds även alla säkerhets- och efterlevnadsfunktioner som är tillgängliga med SQL Server.

Verktyg och ekosystem

Dra nytta av befintliga verktyg och ekosystem som SQL Server erbjuder. Verktyg som säkerhetskopiering och återställning, import och export, BCP fungerar bara direkt. Andra verktyg eller tjänster som SSIS, SSRS eller Power BI fungerar med graftabeller, precis som de fungerar med relationstabeller.

Gränsbegränsningar

En gränsbegränsning definieras i en grafkanttabell och är ett par nodtabeller som en viss kanttyp kan ansluta. Gränsbegränsningar hjälper utvecklare att begränsa vilken typ av noder som en viss kant kan ansluta till.

Mer information om hur du skapar och använder gränsbegränsningar finns i Edge-begränsningar.

Sammanfoga DML

Instruktionen MERGE utför åtgärder för att infoga, uppdatera eller ta bort i en måltabell baserat på resultatet av en koppling med en källtabell. Du kan till exempel synkronisera två tabeller genom att infoga, uppdatera eller ta bort rader i en måltabell baserat på skillnader mellan måltabellen och källtabellen. Användning av MATCH-predikat i en MERGE-instruktion stöds nu på Azure SQL Database och SQL Server vNext. Det är nu möjligt att sammanfoga dina aktuella grafdata (nod- eller kanttabeller) med nya data med hjälp av MATCH-predikaten för att ange grafrelationer i en enda instruktion, i stället för separata INSERT/UPDATE/DELETE-instruktioner.

Mer information om hur matchning kan användas vid sammanslagning av DML finns i MERGE-instruktion.

Kortaste sökväg

Funktionen SHORTEST_PATH hittar den kortaste sökvägen mellan två noder i en graf eller från en viss nod till alla andra noder i diagrammet. SHORTEST PATH kan också användas för att hitta en transitiv stängning eller för godtyckliga längdblädderingar i diagrammet.

Infrastruktur för SQL-databas

I Fabric SQL Database tillåts SQL Graph, men Nod- och Edge-tabeller speglas inte i Fabric OneLake.