Sdílet prostřednictvím


Zpracování grafů s využitím SQL Serveru a Azure SQL Database

Platí pro: SQL Server 2017 (14.x) a novější verze databáze SQL Azure SQL DatabaseAzure SQL Managed Instancev Microsoft Fabric

SQL Server nabízí možnosti grafové databáze pro modelování relací M:N. Relace grafů jsou integrované do Transact-SQL a získávají výhody používání SQL Serveru jako základního systému pro správu databází.

Co je grafová databáze?

Grafová databáze je kolekce uzlů (neboli vrcholů) a hran (nebo relací). Uzel představuje entitu (například osobu nebo organizaci) a hrana představuje vztah mezi dvěma uzly, které spojuje (například lajky nebo přátele). Oba uzly i hrany můžou mít přidružené vlastnosti. Tady jsou některé funkce, které tvoří jedinečnou grafovou databázi:

  • Hrany nebo relace jsou entity první třídy v grafové databázi a mohou mít přidružené atributy nebo vlastnosti.
  • Jedna hrana může pružně propojit více uzlů v grafové databázi.
  • Snadno můžete vyjádřit porovnávání vzorů a navigační dotazy s více segmenty směrování.
  • Snadno můžete vyjádřit přechodné uzavření a polymorfní dotazy.

Kdy použít grafovou databázi

Relační databáze může dosáhnout čehokoli, co dokáže grafová databáze. Grafová databáze ale usnadňuje vyjádření určitých typů dotazů. S konkrétními optimalizacemi můžou některé dotazy také fungovat lépe. Vaše rozhodnutí zvolit relační nebo grafovou databázi vychází z následujících faktorů:

  • Vaše aplikace obsahuje hierarchická data. Datový typ HierarchyID lze použít k implementaci hierarchií, ale má určitá omezení. Například neumožňuje ukládat více nadřazených prvků pro uzel.

  • Vaše aplikace má složité relace M:N; s vývojem aplikace se přidávají nové relace.

  • Potřebujete analyzovat propojená data a vztahy.

Funkce graphu představené v SQL Serveru 2017

V SQL Serveru 2017 (14.x) byly představeny následující funkce.

Vytváření objektů grafu

rozšíření Transact-SQL umožňují uživatelům vytvářet uzly nebo hraniční tabulky. Oba uzly i hrany můžou mít přidružené vlastnosti. Vzhledem k tomu, že uzly a hrany se ukládají jako tabulky, podporují se všechny operace podporované v relačních tabulkách na uzlu nebo hraniční tabulce. Tady je příklad:

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

Následující diagram znázorňuje, jak jsou uzly a hrany uložené jako tabulky.

Diagram znázorňující uzly a hrany se ukládají jako tabulky.

Rozšíření dotazovacího jazyka

Nová MATCH klauzule se zavádí pro podporu porovnávání vzorů a navigace s více segmenty směrování v grafu. Funkce MATCH pro porovnávání vzorů používá syntaxi stylu ASCII-art. Pokud například chcete najít přátele "John":

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

Plně integrovaný v databázovém stroji SQL Serveru

Rozšíření graphu jsou plně integrovaná v modulu SQL Serveru. K ukládání a dotazování dat grafu použijte stejný modul úložiště, metadata, procesor dotazů atd. Dotazování napříč grafy a relačními daty v jednom dotazu Kombinace možností grafů s dalšími technologiemi SQL Serveru, jako jsou indexy columnstore, ha, služby R, etc. SQL graph také podporuje všechny funkce zabezpečení a dodržování předpisů dostupné pro SQL Server.

Nástroje a ekosystém

Využijte výhod stávajících nástrojů a ekosystému, které SQL Server nabízí. Nástroje, jako je zálohování a obnovení, import a export a bcp , fungují hned. Jiné nástroje nebo služby, jako jsou SQL Server Integration Services, SQL Server Reporting Services nebo Power BI, pracují s tabulkami grafů přesně tak, jak fungují s relačními tabulkami.

Omezení hran

Hraniční omezení je definováno v hraniční tabulce grafu a je dvojicí tabulek uzlů, které se daný typ okraje může připojit. Omezení edge pomáhají vývojářům omezit typ uzlů, ke kterým se daný hraniční zařízení může připojit.

Další informace o vytváření a používání hraničních omezení najdete v omezeních Edge.

Sloučení DML

Příkaz MERGE provádí operace vložení, aktualizace nebo odstranění v cílové tabulce na základě výsledků spojení se zdrojovou tabulkou. Můžete například synchronizovat dvě tabulky vložením, aktualizací nebo odstraněním řádků v cílové tabulce na základě rozdílů mezi cílovou a zdrojovou tabulkou. Použití MATCH predikátů v MERGE příkazu je nyní podporováno v Azure SQL Database a SQL Serveru vNext. To znamená, že teď můžete sloučit aktuální data grafu (uzly nebo hraniční tabulky) s novými daty pomocí MATCH predikátů k určení relací grafu v jednom příkazu, nikoli v samostatných INSERTUPDATEpříkazech a DELETE příkazech.

Další informace o tom, jak se dá shoda použít ve sloučení DML, najdete v tématu MERGE.

Nejkratší cesta

Funkce SHORTEST_PATH najde nejkratší cestu mezi libovolnými dvěma uzly v grafu nebo od daného uzlu po všechny ostatní uzly v grafu. SHORTEST PATH lze také použít k vyhledání tranzitivního uzavření nebo pro libovolnou délku procházení v grafu.

Databáze SQL infrastruktury

V databázi SQL Fabric je sql Graph povolený, ale tabulky Node a Edge se zrcadlí na Fabric OneLake.