用途:Neo4j 是原生图数据库,以节点和关系而非表或文档存储数据,适合关系与数据本身同等重要的“关联数据”问题,如社交网络、推荐引擎、身份与访问管理(IAM)、供应链、欺诈检测与图分析、知识图谱与 Graph RAG、实时路径查找与网络路由。
主要能力:采用带标签属性图(LPG)模型,节点带标签、关系有方向与类型,两者均可存任意键值属性;Cypher 为声明式图模式匹配语言;图数据科学(GDS)算法可在内存中执行 PageRank、社区检测、最短路径等;支持 APOC。
使用方式:用 Cypher 创建与查询数据,例如 CREATE (alice:Person {name: 'Alice'}) 与 MATCH (p:Person {name: 'Alice'})-[:KNOWS]->(friend)-[:KNOWS]->(fof) RETURN fof.name;用 shortestPath 求路径,用 CALL gds.pageRank.stream('fraudNetwork') 运行算法。
最佳实践:关系类型用主动动词命名;创建唯一性约束如 CREATE CONSTRAINT FOR (u:User) REQUIRE u.id IS UNIQUE;用 PROFILE 分析查询;查询变量用 $params 参数化以缓存执行计划。避免创建拥有数百万关系的超级节点、避免无界遍历(应设 *1..4 等深度上限)、避免用图数据库做宽表批量聚合。
限制与排错:语法错误需检查 Cypher 关键字;Java 堆内存溢出常因无界笛卡尔积,应限定关系方向与变长深度;违反唯一性约束时用 MERGE 替代 CREATE 实现幂等写入。官方文档见 Neo4j Documentation。