Ayoub Kazar:PostgreSQL 作为图数据库,第 0 部分:引言、图、图数据库

Ayoub Kazar:PostgreSQL 作为图数据库,第 0 部分:引言、图、图数据库

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

本文介绍图数据库基础:图由顶点和边构成,分为有向图、无向图和加权图,适用于社交网络、欺诈检测等关系密集场景。行业标准是带标签属性图(LPG),可为节点和边附加标签与键值属性。图数据库分为原生与非原生两类:原生系统优化邻接访问,非原生系统则基于关系、文档或键值存储构建。调查显示约66%的图数据库为非原生,其中24%基于关系数据库,这正是PostgreSQL切入图领域的背景。

🔎

延伸解读

原生图数据库的定义正在变化

文章指出,原生图数据库的传统定义是“指针追逐”,但Neo4j在2024年引入块格式后,这一描述已不完全准确。作者建议采用行为定义:原生系统致力于让邻接访问更直接,无论通过指针、共置块还是其他图专用布局。这意味着读者在评估图数据库时,不应仅看存储引擎是否“原生”,而应关注其是否针对图遍历做了实质优化。

非原生图数据库占多数,PostgreSQL有天然优势

调查显示约66%的图数据库为非原生,其中24%基于关系数据库。非原生系统能继承成熟后端在并发控制、索引和查询优化等方面的积累。PostgreSQL作为成熟关系数据库,正是这一生态的重要代表。文章借此说明,将图能力构建在现有数据库之上并非妥协,而是利用已有工程成果的务实路径,也为后续讨论PostgreSQL的SQL/PGQ实现埋下伏笔。

LPG是主流模型,但并非唯一

文章明确带标签属性图(LPG)是多数图数据库系统的标准概念模型,通过标签分类顶点和边,并用键值属性附加数据。不过不同系统实现有差异,例如Neo4j允许顶点有任意数量标签,但边只能有一个标签。此外,RDF采用三元组模型,与LPG不同,且不在本系列讨论范围内。读者需注意,选择图数据库时应确认其支持的数据模型是否与自身需求匹配。

❓

Q&A

图数据库中的图具体由哪些元素构成?

图由顶点(节点)和边(关系)构成。形式上,图G表示为元组(V,E),其中V是顶点集合,E是边的集合,E⊆V×V。

有向图和无向图有什么区别?能举例说明吗?

有向图的边是有序对(u,v),表示从u到v的方向性关系,例如Twitter关注;无向图的边是无序对{u,v},表示双向关系,例如Facebook好友。

什么是带标签属性图(LPG)?它为什么成为行业标准?

LPG是大多数图数据库系统采用的标准概念模型,它在简单图的基础上增加了标签(对顶点和边分类)和属性(附加键值数据)。例如顶点可有Person标签和name、age属性,边可有KNOWS标签和since属性。

原生图数据库和非原生图数据库的主要区别是什么?

原生图数据库围绕图模型从头构建,优化邻接访问(如通过指针或共置块),使遍历不变成JOIN;非原生图数据库基于现有成熟后端(关系、文档或键值存储)构建图能力,继承后端的并发控制、索引等组件。区别更多在于工程重点不同。

目前图数据库市场中非原生系统占比如何?底层存储分布是怎样的?

一项约100个图数据库系统的调查显示,约66%为非原生。底层数据模型分布为:34%原生图存储,24%关系数据库,24%键值或宽列存储,18%文档存储。

图模型适用于哪些实际场景?为什么它适合这些场景?

图模型适用于社交网络、欺诈检测、供应链与物流、生物蛋白质相互作用网络、网络拓扑和网页链接等场景。因为这些场景中关系与实体同样重要,模式不规则或演化,查询常沿连接链进行且长度未知,图模型能直观表达和推理。

🏷️

标签

➡️

继续阅读