图数据库与图查询 可视化实验室
用交互式 SVG 呈现属性图模型、Cypher 查询、图遍历、模式匹配、社区检测等图数据库核心技术。八个模块,纯原生实现。
属性图模型 · 四要素
属性图由 Node(节点)、Edge(关系)、Property(属性)、Label(标签)四要素构成。点击节点或关系查看其标签与属性。
属性图模型
点击图中任一节点或关系,查看其标签与键值对属性。节点可有多个标签,关系是有向的且必须有类型名。
Cypher 查询语言
Neo4j 的声明式图查询语言。MATCH 匹配模式、WHERE 过滤、RETURN 投影、CREATE 写入。切换查询语句观察匹配结果。
Cypher 语法
Cypher 用 ASCII 艺术表达图模式:(n:Label) 表示节点,-[r:TYPE]-> 表示有向关系。MATCH 子句做模式匹配,WHERE 做谓词过滤。
图遍历算法
BFS 广度优先、DFS 深度优先、最短路径(Dijkstra)。调节最大深度,播放动画观察访问顺序与剪枝效果。
遍历说明
BFS 用队列,逐层扩展,适合最短跳数。DFS 用栈,深入到底再回溯,适合连通性与环检测。深度限制可控制遍历范围,类似 Cypher 的 depth 参数。
图模式匹配 · 子图同构
在目标图中查找与模式图同构的子图。切换不同模式,观察匹配结果。子图同构是 NP-完全问题。
子图同构
模式匹配需保持节点标签、关系类型与拓扑结构一致。Cypher 的 MATCH 即基于子图同构。NP-完全意味着大规模图上需依赖索引与剪枝加速。
索引策略
标签索引、属性索引、全文索引、组合索引。切换索引开关,观察全表扫描与索引查找的访问量差异。
索引说明
标签索引加速按标签的节点查找;属性索引加速等值/范围查询;全文索引支持文本搜索;组合索引处理多属性联合查询。无索引时需全图扫描,规模 O(n)。
ACID 事务与锁机制
图数据库的事务隔离与锁。两个事务并发读写同一节点时,观察共享锁、排他锁与死锁。逐步执行观察隔离级别效果。
事务隔离
Neo4j 默认 Read Committed 隔离级别:读加短时共享锁,写加排他锁直至提交。两阶段锁(2PL)保证可串行化,但可能死锁,需检测与回滚。
社区检测算法
Louvain 模块度、PageRank 中心性、Connected Components 连通分量。运行算法观察社区划分与节点重要性。
算法说明
Louvain 通过最大化模块度 Q 划分社区;PageRank 用随机游走迭代计算节点重要性;Connected Components 用并查集找连通块。均为图数据库 GDS 库核心算法。
图数据库对比
Neo4j、JanusGraph、Amazon Neptune 三大主流图数据库。切换对比维度查看架构、查询语言、一致性模型差异。
对比维度
Neo4j 是原生图数据库,Cypher 查询语言,单机性能强;JanusGraph 基于 Apache TinkerPop,分布式扩展;Neptune 是 AWS 托管服务,支持 Gremlin 与 SPARQL。