Neo4j 是当前最受欢迎的图数据库(Graph Database),专为高效存储和查询图数据而设计。它采用节点(Nodes)与关系(Relationships)作为核心建模元素,支持完整的事务处理能力。在属性图模型中,图结构由顶点(即节点)、边(即关系)以及属性共同构成,其中节点和关系均可携带一个或多个键值对形式的属性信息。相较于传统的关系型数据库(如 MySQL、PostgreSQL),Neo4j 在处理高度互联的数据场景下表现更为出色,广泛应用于社交网络、推荐引擎、知识图谱、风控系统及供应链管理等领域。
主要特性包括:
- 支持完整的 ACID 事务
- 具备高可用性架构
- 可轻松扩展至亿级节点与关系规模
- 通过高效的遍历机制实现快速数据检索
一、图数据库模型
1.1 节点
图的基本组成单元是节点和关系,在 Neo4j 中,这两者都可以附加属性。
每个节点代表现实世界中的一个实体,例如“用户”(User)、“产品”(Product)或“地点”(Location)等。
示例:
CREATE (:Person {name: "Alice", age: 30})
该语句创建了一个类型为 “Person” 的节点,并设置了 name 和 age 两个属性。
1.2 关系
关系用于连接两个节点,是图数据库中表达关联性的关键部分。通过关系可以获取相关的节点集合、关系集合及其属性集合。
每条关系必须有一个起始节点和一个终止节点。
由于关系具有方向性,每个节点的关系可视为有输入和输出两个方向,这一特性极大提升了图遍历的效率。
Neo4j 支持双向遍历,因此无需为两个方向分别建立关系。尽管关系本身有方向,但如果方向对业务逻辑无意义,可以在使用时忽略。值得注意的是,节点也可以拥有指向自身的自循环关系。
常见的关系类型包括:FRIENDS_WITH(朋友关系)、BOUGHT(购买行为)、WORKS_AT(工作单位)等。
示例:
MATCH (a:Person), (b:Person)
WHERE a.name = "Alice" AND b.name = "Bob"
CREATE (a)-[:FRIENDS_WITH]->(b)
上述操作建立了 Alice 与 Bob 之间的 FRIENDS_WITH 关系。
1.3 属性
无论是节点还是关系,都可以包含属性,这些属性以 Key-Value 键值对的形式存在。
如下是一个带有两个属性的节点示意图:
同样,关系也可以携带属性:
示例:
创建一个带属性的产品节点:
CREATE (:Product {name: "iPhone", price: 999})
或在关系中添加属性:
CREATE (a)-[:PURCHASED {date: "2023-12-01"}]->(b)
1.4 路径
路径是由至少一个节点通过一系列关系连接而成的序列,通常是查询或遍历操作的结果。
最短的路径长度为 0,表示仅包含单个节点:
长度为 1 的路径则包含两个节点和一条关系:
1.5 遍历
图的遍历是指按照特定规则沿着关系访问相关联的节点集合。通常情况下,只需要访问图中的一部分子图,因为用户往往只关心特定范围内的节点或关系。
二、Neo4j 的典型应用场景
社交网络
适用于存储用户之间的好友、关注等连接关系。
应用实例: Facebook、微博
推荐系统
通过分析用户与商品之间的交互关系,实现个性化推荐。
应用实例: Netflix、淘宝
知识图谱
用于表示实体间的复杂关联,构建语义网络。
应用实例: Google 知识图谱
风控反欺诈
识别异常交易模式,追踪资金流动路径,发现潜在欺诈行为。
应用实例: 银行、金融机构
供应链管理
记录并追踪物品从生产到交付的全过程路径。
应用实例: 电商平台、制造业企业


雷达卡


京公网安备 11010802022788号







