Grafbearbetning med SQL Server och Azure SQL Database
gäller för: SQL Server 2017 (14.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
SQL-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.
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.
Relaterat innehåll
- Läs SQL Graph Database – Arkitektur
- Information om hur du kommer igång med SQL Graph finns i SQL Graph Database – Exempel