图数据库与图查询 可视化实验室

用交互式 SVG 呈现属性图模型、Cypher 查询、图遍历、模式匹配、社区检测等图数据库核心技术。八个模块,纯原生实现。

zero-deps HTML / CSS / JS + SVG requestAnimationFrame prefers-reduced-motion
MODULE 01

属性图模型 · 四要素

属性图由 Node(节点)、Edge(关系)、Property(属性)、Label(标签)四要素构成。点击节点或关系查看其标签与属性。

property-graph.svg
节点 Node 关系 Edge 属性 Property 标签 Label

属性图模型

点击图中任一节点或关系,查看其标签与键值对属性。节点可有多个标签,关系是有向的且必须有类型名。

节点数
—
关系数
—
属性数
—
标签数
—
MODULE 02

Cypher 查询语言

Neo4j 的声明式图查询语言。MATCH 匹配模式、WHERE 过滤、RETURN 投影、CREATE 写入。切换查询语句观察匹配结果。

cypher-query.svg
匹配节点 匹配关系 其他节点

Cypher 语法

Cypher 用 ASCII 艺术表达图模式:(n:Label) 表示节点,-[r:TYPE]-> 表示有向关系。MATCH 子句做模式匹配,WHERE 做谓词过滤。

匹配节点
—
匹配关系
—
扫描量
—
查询类型
—
MODULE 03

图遍历算法

BFS 广度优先、DFS 深度优先、最短路径(Dijkstra)。调节最大深度,播放动画观察访问顺序与剪枝效果。

traversal.svg
已访问 当前节点 前沿 Frontier 未访问

遍历说明

BFS 用队列,逐层扩展,适合最短跳数。DFS 用栈,深入到底再回溯,适合连通性与环检测。深度限制可控制遍历范围,类似 Cypher 的 depth 参数。

访问顺序
—
已访问
0
最大深度
—
当前算法
BFS
MODULE 04

图模式匹配 · 子图同构

在目标图中查找与模式图同构的子图。切换不同模式,观察匹配结果。子图同构是 NP-完全问题。

pattern-matching.svg
匹配子图 模式图节点 目标图

子图同构

模式匹配需保持节点标签、关系类型与拓扑结构一致。Cypher 的 MATCH 即基于子图同构。NP-完全意味着大规模图上需依赖索引与剪枝加速。

模式节点
—
目标节点
—
匹配数
—
复杂度
NP-c
MODULE 05

索引策略

标签索引、属性索引、全文索引、组合索引。切换索引开关,观察全表扫描与索引查找的访问量差异。

index-strategy.svg
索引命中 全表扫描 B-tree 节点 数据节点

索引说明

标签索引加速按标签的节点查找;属性索引加速等值/范围查询;全文索引支持文本搜索;组合索引处理多属性联合查询。无索引时需全图扫描,规模 O(n)。

访问节点
—
索引层
—
加速比
—
查询类型
—
MODULE 06

ACID 事务与锁机制

图数据库的事务隔离与锁。两个事务并发读写同一节点时,观察共享锁、排他锁与死锁。逐步执行观察隔离级别效果。

acid-transaction.svg
共享锁 S (读) 排他锁 X (写) 提交 等待

事务隔离

Neo4j 默认 Read Committed 隔离级别:读加短时共享锁,写加排他锁直至提交。两阶段锁(2PL)保证可串行化,但可能死锁,需检测与回滚。

当前步骤
0
T1 状态
—
T2 状态
—
死锁
无
MODULE 07

社区检测算法

Louvain 模块度、PageRank 中心性、Connected Components 连通分量。运行算法观察社区划分与节点重要性。

community-detection.svg
社区 A 社区 B 社区 C 社区 D

算法说明

Louvain 通过最大化模块度 Q 划分社区;PageRank 用随机游走迭代计算节点重要性;Connected Components 用并查集找连通块。均为图数据库 GDS 库核心算法。

社区数
—
模块度 Q
—
Top 节点
—
当前算法
Louvain
MODULE 08

图数据库对比

Neo4j、JanusGraph、Amazon Neptune 三大主流图数据库。切换对比维度查看架构、查询语言、一致性模型差异。

graphdb-comparison.svg
Neo4j JanusGraph Amazon Neptune

对比维度

Neo4j 是原生图数据库,Cypher 查询语言,单机性能强;JanusGraph 基于 Apache TinkerPop,分布式扩展;Neptune 是 AWS 托管服务,支持 Gremlin 与 SPARQL。

查询语言
—
部署模式
—
一致性
—
选型建议
—