CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Specialty 数据库入门/课时/图数据库
RawBlame
课时目录12 节

Specialty 数据库入门

  1. 01数据库选型地图
  2. 02图数据库
  3. 03宽列存储
  4. 04文档库扩展
  5. 05列式 OLAP
  6. 06Solr 与搜索
  7. 07Firebase BaaS
  8. 08Oracle 企业库
  9. 09一致性与 CAP
  10. 10何时选哪种库
  11. 11运维与备份
  12. 12综合练习

图数据库

Neo4j、DGraph;关系查询场景。

35 分钟

图数据库

「用户 A 关注了谁、谁与谁有三度人脉、推荐路径最短几步」——用 SQL 递归 JOIN 能做,但 深度遍历与路径查询 在图库里更自然。Neo4j、DGraph 等 以边为一等公民,适合 关系本身就是核心业务 的场景。

学习目标

  • 理解属性图模型:节点、边、属性
  • 知道 Neo4j Cypher 与 DGraph GraphQL± 的基本定位
  • 判断何时用图库、何时仍用 postgresql-essentials 的递归 CTE

核心概念

属性图 vs 关系表

图数据库PostgreSQL
关系表达边(Relationship)显式存储外键 + JOIN
遍历索引无关的局部扩展递归 CTE,深度大时代价高
查询语言Cypher、Gremlin、GraphQL±SQL
典型场景社交、欺诈环、知识图谱浅层关联、强事务报表
// Neo4j:三度好友
MATCH (me:User {id: $uid})-[:FOLLOWS*1..3]-(friend:User)
WHERE friend.id <> $uid
RETURN DISTINCT friend

同等 SQL 需多层自连接或递归,可读性与性能随深度恶化。

Neo4j 与 DGraph

Neo4jDGraph
部署单机/集群,生态成熟分布式原生,GraphQL 友好
查询Cypher 为主GraphQL± / DQL
适用企业知识图谱、推荐云原生微服务图数据

两者都不是 通用 OLTP 替代品:点边规模上亿时需分区策略,与 scaling-essentials 的分片思路衔接。

何时不选图库

  • 主要是 CRUD + 简单外键: orm-essentials 的关系模型足够
  • 需要复杂聚合报表:导出到 postgresql-essentials 或 OLAP(见 sdb-analytics)
  • 全文搜索为主:用 elasticsearch-essentials

练习

  • 画一张「用户-帖子-标签」小图,标出节点类型与边类型
  • 用一句话说明:为何 cf_track 与 cf_lesson 仍适合关系库而非图库
  • 查 Neo4j 官方文档中 Cypher MATCH 语法一页

小结

下一课宽列存储:写入扩展的另一条路。

图库 = 关系遍历的一等公民;浅层关联仍用 SQL。
加载本节练习…
← 上一课数据库选型地图下一课 →宽列存储