SQL Server 和 Azure SQL Database 的圖表處理
適用於: SQL Server 2017 (14.x) 和更新版本Azure SQL DatabaseAzure SQL 受控執行個體
SQL Server 提供圖形資料庫功能來建立多對多關聯性的模型。 圖表關聯性會整合到 Transact-SQL 中,並享有使用 SQL Server 作為基礎資料庫管理系統的優點。
什麼是圖形資料庫?
圖形資料庫是節點(或頂點)和邊緣(或關聯性)的集合。 節點代表實體(例如人員或組織)和邊緣代表其連接之兩個節點之間的關聯性(例如,例如,贊或朋友)。 節點和邊緣可能都有與其相關聯的屬性。 以下是讓圖表資料庫變成唯一的一些功能:
- 邊緣或關聯性是 Graph 資料庫中的第一類實體,而且可以有與其相關聯的屬性或屬性。
- 單一邊緣可以彈性地連接圖形資料庫中的多個節點。
- 您可以輕鬆地表達模式比對和多躍點導覽查詢。
- 您可以輕鬆地表達遞移閉包和多型查詢。
使用圖形資料庫的時機
關係資料庫可以達成圖形資料庫可以達到的任何專案。 不過,圖形資料庫可讓您更輕鬆地表達特定種類的查詢。 此外,透過特定優化,某些查詢的執行效能可能會更好。 您選擇關係資料庫或圖形資料庫的決定是以下列因素為基礎:
- 您的應用程式具有階層式資料。 HierarchyID 資料類型可用來實作階層,但有一些限制。 例如,它不允許您儲存節點的多個父系。
- 您的應用程式具有複雜的多對多關聯性;隨著應用程式的發展,會新增新的關聯性。
- 您需要分析互連的資料和關聯性。
SQL Server 2017 中引進的圖形功能 (14.x)
SQL Server 2017 引進了下列功能。
建立繪圖物件
Transact-SQL 延伸模組可讓使用者建立節點或邊緣資料表。 節點和邊緣都可以有與其相關聯的屬性。 因為節點和邊緣會儲存為數據表,因此節點或邊緣資料表支援關聯式資料表上支援的所有作業。 以下為範例:
CREATE TABLE Person (ID INTEGER PRIMARY KEY, Name VARCHAR(100), Age INT) AS NODE;
CREATE TABLE friends (StartDate date) AS EDGE;
下圖顯示如何將 Nodes 和 Edge 儲存為數據表。
查詢語言延伸模組
引進了新的 MATCH
子句,以支援透過圖形的模式比對和多重躍點流覽。 函 MATCH
式會使用 ASCII 藝術樣式語法進行模式比對。 例如,若要尋找 「John」 的朋友:
-- Find friends of John
SELECT Person2.Name
FROM Person Person1, Friends, Person Person2
WHERE MATCH(Person1-(Friends)->Person2)
AND Person1.Name = 'John';
完全整合在 SQL Server Database Engine 中
圖形延伸模組已完全整合在 SQL Server 引擎中。 使用相同的儲存引擎、中繼資料、查詢處理器等來儲存和查詢圖形資料。 在單一查詢中跨圖形和關聯式資料進行查詢。 結合圖表功能與其他 SQL Server 技術,例如資料行存放區索引、HA、R 服務等。SQL 圖形也支援 SQL Server 提供的所有安全性和合規性功能。
工具和生態系統
受益于 SQL Server 提供的現有工具和生態系統。 備份和還原、匯入和匯出等工具,BCP 只需立即運作即可。 SSIS、SSRS 或 Power BI 等其他工具或服務會使用圖表資料表,就像使用關聯式資料表一樣。
邊緣條件約束
邊緣條件約束是在圖形邊緣資料表上定義,而且是給定邊緣類型可以連接的一對節點資料表。 邊緣條件約束可協助開發人員限制指定邊緣可以連線的節點類型。
若要深入瞭解如何建立和使用邊緣條件約束,請參閱 Edge 條件約束 。
合併 DML
MERGE 語句會根據與來源資料表聯結的結果,對目標資料表執行插入、更新或刪除作業。 例如,您可以根據目標資料表與來源資料表之間的差異,插入、更新或刪除目標資料表中的資料列,以同步處理兩個數據表。 Azure SQL Database 和 SQL Server vNext 現在支援在 MERGE 語句中使用 MATCH 述詞。 也就是說,現在可以使用 MATCH 述詞在單一語句中指定圖形關聯性,而不是個別的 INSERT/UPDATE/DELETE 子句,將目前的圖形資料(節點或邊緣資料表)與新的資料合併。
若要深入瞭解如何在合併 DML 中使用比對,請參閱 MERGE 語句 。
最短路徑
SHORTEST_PATH 函式會尋找圖表中任兩個節點之間的最短路徑,或從指定的節點開始到圖形中所有其他節點之間的最短路徑。 SHORTEST PATH
也可以用來尋找可轉移的關閉或圖形中的任意長度周遊。
下一步
- 讀取 SQL Graph 資料庫 - 架構
- 若要開始使用 SQL Graph,請參閱 SQL Graph 資料庫 - 範例