注释
此功能目前处于公开预览状态。 此预览版在没有服务级别协议的情况下提供,不建议用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
在本文中,我们将比较图形数据库和关系数据库,重点介绍分析中的关键差异、用例和优势。 可以根据特定需求评估是将 Graph 用于 Microsoft Fabric 还是关系数据库。
图形数据库以节点(实体)和边缘(关系)网络的形式存储和查询数据,使其与关系数据库的表和行格式基本不同。 图形数据库擅长建模和分析高度连接的数据,例如社交网络、知识图、建议系统和欺诈检测。
核心差异
- 图形数据库: 将数据组织为节点和边缘,显式存储关系。 遍历连接效率高,通常与数据集总大小无关。
- 关系数据库: 在包含行和列的表中组织数据。 使用 JOIN 操作在查询时推断关系,这对于高度连接的数据可能会导致复杂和缓慢的查询过程。
查询关系:联接与遍历
关系数据库查询: 不同表中的数据通过外键链接。 若要检索相关数据,关系数据库使用连接操作(JOIN)来合并多个表中的行。 这非常适合于简单关系,但对于深度或可变长度连接,这可能会变得昂贵且复杂。
图形数据库查询: 关系存储为边缘,允许从一个节点直接遍历到另一个节点。 图形查询可以有效地导航多个跃点和复杂模式。 使用 GQL 等图形查询语言可以轻松表达遍历和模式匹配。
Example:
GQL:
MATCH (p:Person)-[:friendsWith]->(friend)-[:purchased]->(o:Order)
WHERE p.name = 'Alice';
RETURN o
SQL (等效):
SELECT o.*
FROM Person AS p
JOIN Friends_With AS fw ON p.id = fw.person_id
JOIN Person AS friend ON fw.friend_id = friend.id
JOIN Purchased AS pur ON friend.id = pur.person_id
JOIN "Order" AS o ON pur.order_id = o.id
WHERE p.name = 'Alice';
注释
GQL 是图数据库的 ISO 标准化查询语言,旨在高效查询和处理图结构化数据。 监督 SQL 的同一个国际工作组正在开发它。
性能影响
图形数据库可以优于涉及许多边缘或未知深度的查询的关系系统,尤其是对于深层链接分析或递归查询。 由于经过数十年的优化,关系数据库擅长面向集的作和聚合。
缩放注意事项
- 关系数据库: 通常垂直缩放(更大的计算机),并且可以通过分片和复制水平缩放。 分片具有高度连接的数据库架构是一项复杂的任务,并且可能会产生跨网络的额外开销。
- 图形数据库: 垂直和水平缩放。 分布式图形数据库跨计算机对图形进行分区,目的是将相关节点一起保持一起,以实现高效的遍历。
何时使用每个选项
在以下的情况下使用 Graph 数据库:
- 您的数据高度连接且关系密集(社交网络、知识图谱、推荐)。
- 需要遍历未知或可变跃点数。
- 架构正在演变或半结构化。
- 你希望对关系中心所在的域进行直观的建模。
使用关系数据库(如果:
- 你的数据主要是表格格式的或符合明确结构。
- 查询涉及大量聚合或大规模集合操作。
- 你现有的工具或专业知识与 SQL 相匹配。
混合方法
许多项目都使用:用于核心事务数据的关系数据库,以及用于专用分析或网络分析功能的图形数据库。