选型

Neo4j

你可能会说

好友的好友、推荐路径,SQL 写不出来怎么办?

把关系当一等公民的图数据库节点和边直接存,多跳查询用遍历而不是 JOIN,路径、推荐、风控更自然;图很大时要小心超级节点。
也常被叫作图数据库Cypher
先问一句查询是多跳关系?
默认Neo4j→擅长路径遍历→别用海量宽表统计
成熟度试验

什么时候选它

  • 社交关系、知识图谱、反欺诈路径
  • 查询深度不固定(几跳说不准)
  • 关系本身带属性,需要一起查

什么时候别选

  • 常规 CRUD 和报表(关系库更通用)
  • 超大图的批量统计(图计算引擎更合适)
  • 团队没有图建模经验
容易混在一起 · 怎么分
Neo4j≠PostgreSQL

Neo4j 擅长多跳关系遍历;PostgreSQL 通用,浅层关系用递归 CTE 也能做,但深度查询会退化。

Q面试会问什么

  • 问:和关系库 JOIN 的区别?
    答:图库用免索引邻接,边直接指向节点,多跳遍历不随全表增长;但超级节点会让遍历变慢。
  • 问:Cypher 是什么?
    答:声明式图查询语言,用 MATCH / WHERE / RETURN 描述模式和路径。
延伸阅读 · 权威出处