一、为什么需要图数据库?关系型与图模型的范式差异

在关系型数据库中,多对多关系需要通过 JOIN 表实现,随着关系层级加深,JOIN 操作的开销呈指数级增长。图数据库(Graph Database)将关系(Relationship)作为一等公民存储,从根本上解决了这个问题。社交网络中的「朋友的朋友」这类多跳查询,在关系型数据库中可能需要数十次 JOIN,而在图数据库中只是简单的指针遍历,时间复杂度从 O(n^k) 降低到 O(k)。

Neo4j 是目前最成熟的属性图数据库(Property Graph Database),它支持完整的 ACID 事务、水平扩展(通过 Causal Cluster)、以及强大的声明式查询语言 Cypher。目前最新版本 Neo4j 5.x 引入了 Composite Database 和 Sharded Graph 等特性,进一步提升了分布式能力。

二、属性图模型核心概念

Neo4j 基于属性图模型,包含三个核心要素:

节点(Node):表示实体对象,如用户、商品、文章等。节点可以拥有零个或多个标签(Label),标签相当于关系型数据库中的表名,用于分类和索引。

关系(Relationship):表示节点之间的连接,关系始终有方向(定向或无向),且必须有一个类型(Type)。关系的方向在语义上很重要,但在查询时可以忽略方向。

属性(Property):节点和关系都可以拥有属性,属性是键值对形式。Neo4j 支持多种属性类型:整数、浮点数、字符串、布尔值、以及时间类型(Date、DateTime、LocalDateTime 等)。

三、Cypher 查询语言深度解析

Cypher 是 Neo4j 的声明式图查询语言,语法类似 ASCII 艺术,直观易懂。

3.1 基础模式匹配

创建节点和关系的语法:

CREATE (alice:Person {name:

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部