SQL Server 和 Azure SQL 数据库中的图形处理

适用于: SQL Server 2017 (14.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例 Microsoft Fabric 预览版中的 SQL 数据库

SQL Server 提供图形数据库功能来对多对多关系建模。 图形关系已集成到 Transact-SQL 中,并受益于将 SQL Server 用作基础数据库管理系统。

什么是图形数据库?

图形数据库是节点(或顶点)和边缘(或关系)的集合。 节点表示实体(例如,某个人或组织),边缘表示该实体连接的两个节点之间的关系(例如,爱好或朋友)。 节点和边缘可能具有与其关联的属性。 下面是使图形数据库独一无二的某些功能:

  • 边缘或关系是图形数据库中的第一类实体,可以带有关联的特性或属性。
  • 单个边缘可以灵活连接图形数据库中的多个节点。
  • 可以轻松表达模式匹配和多跃点导航查询。
  • 可以轻松表达传递闭包和多态查询。

何时使用图形数据库

关系数据库可以实现图形数据库可以实现的任何操作。 但是,图形数据库可以更轻松地表达某些类型的查询。 此外,通过特定的优化,某些查询的性能可能更好。 选择关系数据库或图形数据库的决定基于以下因素:

  • 应用程序具有分层数据。 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;

下图显示了如何将节点和边缘存储为表。

显示节点和边缘存储为表的关系图。

查询语言扩展

引入了新 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)使用图形表,就像它们处理关系表的方式一样。

边缘约束

边缘约束在图形边缘表上定义,是给定边缘类型可以连接的一对节点表。 边缘约束可帮助开发人员限制给定边缘可以连接的节点类型。

若要详细了解如何创建和使用边缘约束,请参阅 Edge 约束

合并 DML

MERGE 语句基于与源表联接的结果对目标表执行插入、更新或删除操作。 例如,可以通过根据目标表和源表之间的差异在目标表中插入、更新或删除行来同步两个表。 MATCH Azure SQL 数据库和 SQL Server vNext 现在支持在语句中使用MERGE谓词。 也就是说,现在可以使用谓词将当前图形数据(节点或边缘表)与新数据MATCH合并,以在单个语句中指定图形关系,而不是单独INSERTUPDATEDELETE语句。

若要详细了解如何在合并 DML 中使用匹配,请参阅 MERGE

最短路径

SHORTEST_PATH函数查找图形中任意两个节点之间的最短路径,或者从给定节点开始到图形中的所有其他节点。 SHORTEST PATH 还可用于查找可传递的闭包或图形中的任意长度遍历。

Fabric SQL 数据库

在 Fabric SQL 数据库中,允许 SQL Graph,但 Node 和 Edge 表不会镜像到 Fabric OneLake。