共用方式為


SQL Server 和 Azure SQL Database 的圖表處理

適用於: SQL Server 2017 (14.x) 及以後版本 Azure SQL Database AzureSQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

SQL Server 提供圖形資料庫功能來建立多對多關聯性的模型。 圖表關聯性會整合到 Transact-SQL 中,並享有使用 SQL Server 作為基礎資料庫管理系統的優點。

什麼是圖形資料庫?

圖形資料庫是節點(或頂點)和邊(或關係)的集合。 節點代表實體(例如人員或組織)和邊緣代表其連接之兩個節點之間的關聯性(例如,例如,讚或朋友)。 節點和邊緣都可能具有與其相關聯的內容。 以下是讓圖表資料庫變成唯一的一些功能:

  • 邊緣或關聯性是 Graph 資料庫中的第一類實體,而且可以有與其相關聯的屬性或屬性。
  • 單一邊緣可以彈性地連接圖形資料庫中的多個節點。
  • 您可以輕鬆地表達模式比對和多躍點導覽查詢。
  • 您可以輕鬆地表達遞移閉包和多型查詢。

使用圖形資料庫的時機

關係資料庫可以達成圖形資料庫可以達到的任何專案。 不過,圖形資料庫可讓您更輕鬆地表達特定種類的查詢。 此外,透過特定最佳化,某些查詢可能會執行得更好。 您選擇關係資料庫或圖形資料庫的決定是以下欄因素為基礎:

  • 您的應用程式具有階層式數據。 HierarchyID 資料類型可用於實現階層,但它有一些限制。 例如,它不允許您儲存節點的多個父系。

  • 您的應用程式具有複雜的多對多關聯性;隨著應用程式的發展,會新增新的關聯性。

  • 您需要分析互連的資料和關聯性。

SQL Server 2017 中引進的圖形功能

下列功能是在 SQL Server 2017 (14.x) 中引進的。

建立圖形物件

Transact-SQL 延伸模組可讓使用者建立節點或邊緣數據表。 節點和邊緣都可以有與其相關聯的屬性。 因為節點和邊緣會儲存為數據表,因此節點或邊緣數據表支援關係型數據表上支援的所有作業。 以下是範例:

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

下圖顯示如何將 Nodes 和 Edge 儲存為數據表。

顯示節點和 Edge 儲存為表格的圖表。

查詢語言延伸模組

引進了新的 MATCH 子句,以支援透過圖形的模式比對和多重躍點流覽。 函 MATCH 式會使用 ASCII 藝術樣式語法進行模式比對。 例如,若要尋找 「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';

完全整合在 SQL Server 資料庫引擎

圖形延伸模組已完全整合在 SQL Server 引擎中。 使用相同的儲存引擎、元數據、查詢處理器等來儲存和查詢圖形數據。 在單一查詢中跨圖形和關係型數據進行查詢。 結合圖表功能與其他 SQL Server 技術,例如數據行存放區索引、HA、R 服務,etc. SQL圖表也支援 SQL Server 提供的所有安全性和合規性功能。

工具和生態系統

受益於 SQL Server 提供的現有工具和生態系統。 備份和恢復、導入和導出以及 bcp 等工具開箱即用。 其他工具或服務,例如 SQL Server Integration Services、SQL Server Reporting Services 或 Power BI,會使用圖形資料表,就像它們使用關聯式資料表的方式一樣。

邊緣約束

邊限制是在圖形邊緣表格上定義的,是給定邊緣類型可以連接的一對節點表格。 邊緣條件約束可協助開發人員限制指定邊緣可以連線的節點類型。

若要進一步瞭解如何建立和使用邊約束,請參閱 邊約束

合併 DML

MERGE 語句會根據與源數據表聯結的結果,對目標數據表執行插入、更新或刪除作業。 例如,您可以根據目標數據表與源數據表之間的差異,插入、更新或刪除目標數據表中的數據列,以同步處理兩個數據表。 MATCH Azure SQL Database 和 SQL Server vNext 現在支援在陳述式中使用MERGE述詞。 也就是說,現在可以使用述詞將 MATCH 目前的圖形資料 (節點或邊緣資料表) 與新資料合併,以在單一陳述式中指定圖形關係,而不是單獨 INSERT的 、 UPDATEDELETE 陳述式。

若要深入瞭解如何在合併 DML 中使用比對,請參閱 MERGE。

最短路徑

SHORTEST_PATH函式會尋找圖表中任兩個節點之間的最短路徑,或從指定的節點開始到圖形中所有其他節點之間的最短路徑。 SHORTEST PATH 也可以用來尋找可轉移的關閉或圖形中的任意長度周遊。

網狀架構 SQL 資料庫

在 Fabric SQL 資料庫中,允許 SQL Graph,但節點和邊緣資料表不會鏡像至 Fabric OneLake。