一 什么是图数据库

图数据库属于NoSQL数据库的一个分支,是专门为存储、建模和查询实体间关联关系而设计的数据库,核心基于图结构的数据模型:

  • 节点(Vertex)​​:表示现实中的实体,比如用户、商品、设备、地点等,每个节点可以包含多个属性来描述自身特征。
  • 边(Edge)​​:表示两个节点之间的关联关系,比如用户"购买了"商品、用户"是好友"、公司"担保了"另一家公司,边同样可以附加属性(比如购买时间、担保金额等)。

图论〔Graph Theory〕是数学的一个分支。它以图为研究对象图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。

二 图数据库 vs 关系数据库(核心差异)

1. 模型: 图数据库用 节点-边关系库用 表 - 行 - 外键

2. 关系存储:图数据库原生存关系;关系库靠JOIN动态计算

3. 多跳查询(如 “好友的好友”):图数据库遍历快、线性成本;关系库多表 JOIN、指数级变慢

4. ** schema**:图数据库无 schema / 弱 schema;关系库强 schema、改结构麻烦

           Schema 可以理解为数据的 “格式规矩、表结构、字段定义”

5. 典型场景:图数据库适合关系密集型;关系库适合结构化、简单关联

三 核心技术特点与优势

  1. 关联查询性能优异​:采用原生图存储和"免索引邻接"架构,查询相邻节点的关系无需遍历全局索引,即使是多层深度的关系遍历(比如查询用户的3度好友),速度也远快于关系型数据库的多表JOIN操作,适合高互联数据的场景。
  2. 建模灵活自然​:支持灵活的属性图模型,业务逻辑变化时可以直接新增节点类型、边类型和属性,不需要预先定义表结构、修改Schema,更贴合真实世界中实体关系动态变化的特点。
  3. 支持图分析能力​:内置路径查询、社区发现、中心度计算、最短路径等图算法,可以直接在数据库层完成复杂的关联分析,不需要额外导出数据进行计算。

四 主流产品

Neo4j:最流行、生态好、Cypher 语言易用,桌面版 + 企业版

TigerGraph:分布式、超大规模、高并发,适合金融风控。

ArangoDB:多模型(图 + 文档 + 键值),灵活通用。

OrientDB:老牌多模,兼容图与关系模型。

五, Neo4j 使用

桌面版下载使用:

访问官网下载页:https://neo4j.com/download/ 填姓名、邮箱,下载对应系统安装包(Windows .exe / macOS .dmg)。

安装过程: 一路next 就行

名词 通俗解释 图形示意
节点 (Node) 现实中的实体(人、商品、账号、电影),图中就是圆圈 (张三)
关系 (Relationship) 实体之间的联系(好友、购买、观看),图中就是带箭头的线 (张三)-[好友]->(李四)
属性 (Property) 节点 / 关系的描述信息(姓名、年龄、时间),键值对格式 {name:"张三",age:25}

1. 创建第一个数据库实例

 创建实例成功后会自动启动实例,如果没有成功启动手动start启动

如果启动后黑窗口闪退,大概率是目录中有中文

原因:

Neo4j 底层 JDK 读取中文路径会编码崩溃,表现为:启动实例后 PowerShell 窗口一闪而过、RUNNING 状态自动停止。

解决方法:

退出软件,建英文文件夹,配置环境变量

  • 变量名:NEO4J_DESKTOP_DATA_PATH
  • 变量值:D:\Neo4jData

如果不想配环境变量可以使用 符号链接映射(类似软链接)

管理员运行cmd

mklink /J "C:\目录名称\.Neo4jDesktop2" "D:\Neo4jData\.Neo4jDesktop2"

  1. 一个 DBMS = 一套完整 Neo4j 服务,共用端口 7687、共用存储文件夹;
  2. DBMS 内可以创建 N 个业务数据库,库与库之间数据完全隔离,无法跨库 MATCH 查询
  3. 和 MySQL 类比理解:
    • Neo4j 的 DBMS ≈ MySQL 服务进程
    • Neo4j 里每个 Database(neo4j/mydatabase) ≈ MySQL 里一个 Schema 数据库
    • system 库是 Neo4j 专属系统库,MySQL 无对应概念

 http://localhost:7474 图形化终端主要编写cypher代码的位置

cypher语法中的操作

1:创建【节点】(实体)

语法:CREATE (标签 {属性})

  • 标签:用 : 开头,相当于「分类 / 表名」
  • 属性:键:值 格式,多个属性用逗号分隔

CREATE (:User {name:"张三", age:22, sex:"男"}),

(:User {name:"李四", age:24, sex:"女"})

2. 查询【节点】(MATCH 核心语法)

MATCH = 匹配数据(对应 SQL 的 SELECT

查询所有User节点

MATCH (u:User)

RETURN u.name, u.age, u.sex

按条件查询(WHERE 过滤)

MATCH (u:User)

WHERE u.age = 22

RETURN u.name, u.age

3.创建【关系】(节点之间连线)

关系格式:(节点1)-[:关系类型 {属性}]->(节点2)

  • 箭头代表方向
  • 关系也可以加属性(比如关系建立时间)
示例:给两个用户添加「好友」关系

MATCH (a:User{name:"张三"}), (b:User{name:"李四"})

CREATE (a)-[:FRIEND {create_time:"2026-06-15"}]->(b)

4:多跳查询(好友关系实战)

1 跳查询:张三的直接好友

MATCH (a:User{name:"张三"})-[:FRIEND]->(f)

RETURN f.name

2 跳查询:张三「好友的好友」(核心多跳演示)

MATCH (a:User{name:"张三"})-[:FRIEND*2]->(f)

RETURN DISTINCT f.name

修改 / 删除 属性 & 关系

给张三添加手机号:

MATCH (u:User{name:"张三"})

SET u.phone = "13800001111"

删除张三的手机号:

MATCH (u:User{name:"张三"})

REMOVE u.phone

删除张三和李四的好友关系:

MATCH (a:User{name:"张三"})-[r:FRIEND]->(b:User{name:"李四"})

DELETE r

典型应用场景

图数据库的价值在高度依赖关系分析的场景中体现尤为明显:

  1. 金融风控​:用于识别循环担保、团伙欺诈、洗钱路径追踪,通过多层关系排查异常关联的账户和企业,比传统规则引擎能发现更多隐藏的风险。
  2. 推荐系统​:可以实时存储用户和商品的交互关系,基于用户的历史行为、好友偏好做实时关联推荐,避免传统预计算推荐的结果滞后问题。
  3. 社交网络​:管理用户的好友关系、关注链路、内容传播路径,支持快速查询n度好友、共同好友、社交关系图谱分析。
  4. 网络/IT运维​:用于绘制数据中心的设备拓扑、网络依赖关系,快速定位故障影响范围、计算故障传播路径。
  5. 反作弊场景​:电商、内容平台可以通过分析用户设备、IP、行为的关联关系,识别批量注册的机器人账号、刷单刷评团伙。
  6. 知识图谱​:是知识图谱的核心存储载体,广泛应用于语义搜索、智能问答、行业知识库构建。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐