[数据库]Neo4j图数据库搭建快速入门

发布于:2025-07-21 ⋅ 阅读:(22) ⋅ 点赞:(0)

[数据库]图数据库基础入门

概念

图数据库是一种使用图结构(节点、边和属性)进行数据存储和查询的数据库管理系统。与传统的关系型数据库不同,图数据库专注于实体之间的关系,特别适合处理高度互联的数据。常见的图数据库包括:Neo4j、JanusGraph、HugeGraph…
在这里插入图片描述

核心优势:

  • 高效处理复杂关系查询
  • 直观的数据模型表示
  • 灵活应对数据模式变化
  • 卓越的性能(尤其对多跳查询)

主要有以下特点:

  1. 节点(Node):表示具体实体(如人物、地点、产品)
  • 可拥有标签(Label)进行分类
  • 可包含属性(键值对)
  • 例如:汤姆汉克斯Actor,Actor是演员代表分类,汤姆汉克斯代表实际的节点
  1. 关系(Relationship):连接节点的有向边
  • 必须有类型或可以理解为具体的关系(如:ACT表示演员与影视作品出演的关系、PURCHASED表示人与商品之间的购买关系)
  • 可包含属性,例如:xxx出演了什么电影,出演这个边(关系)中,我们可以设置具体的时间,具体什么时候出演了这个电影
  1. 属性(Properties):节点和关系的键值对属性
  2. 标签(Labels):节点的分类标记,如:Movie电影、Person人、Actor演员等

应用场景

  1. 社交网络分析
  • 好友推荐系统
  • 影响力传播分析
  1. 推荐引擎
  • “购买此商品的用户也购买了…”
  • 个性化内容推荐
  • 相关好友推送
  1. 欺诈检测
  • 识别异常交易模式
  • 发现欺诈团伙关联
  1. 知识图谱
  • 构建企业知识库
  • 语义搜索系统
  • 血缘图谱
  1. 网络与IT运维
  • 基础设施依赖关系映射
  • 影响分析
  1. 供应链管理
  • 物流路径优化
  • 风险传播分析

安装[neo4j]

这里以neo4j为例,讲解图数据库基本使用。
官方网站:https://neo4j.com/
官方教程地址:https://neo4j.ac.cn/docs/

大家可以直接通过官网下载,也可以通过docker方式下载使用,我这里演示docker安装:

#  创建映射目录
mkdir -p /Users/ziyi/docker-home/neo4j/{data,logs,conf,import}
   
docker run -d --name neo4j -p 7474:7474 -p 7687:7687 -v /Users/ziyi/docker-home/neo4j/data:/data -v /Users/ziyi/docker-home/neo4j/plugins:/var/lib/neo4j/plugins -v /Users/ziyi/docker-home/neo4j/logs:/logs -v /Users/ziyi/docker-home/neo4j/conf:/var/lib/neo4j/conf -v /Users/ziyi/docker-home/neo4j/import:/var/lib/neo4j/import -e NEO4J_AUTH=neo4j/12345678 neo4j:5.26.6

# 访问浏览器,并输入 neo4j / 12345678 登录账号
http://localhost:7474/browser/preview/

使用

1. cypher语法

创建节点

// 其中Person为标签/类型,Alice为一个具体的节点,name、age是Alice这个具体节点的属性
CREATE (:Person {name: 'Alice', age: 30})
CREATE (:Person {name: 'Bob', occupation: 'Engineer'})

在这里插入图片描述

最后效果:
在这里插入图片描述

创建关系

//找到Alice和Bob两个节点,并为其创建FRIENDS朋友关系,同时为这个关系设置属性
MATCH (a:Person), (b:Person)
WHERE a.name = 'Alice' AND b.name = 'Bob'
CREATE (a)-[:FRIENDS {since: '2020-01-01'}]->(b)

在这里插入图片描述

查询数据

// 查找所有人员
MATCH (p:Person) RETURN p

// 查找Alice的朋友
MATCH (alice:Person {name: 'Alice'})-[:FRIENDS]->(friend)
RETURN friend.name

在这里插入图片描述

更新数据

MATCH (p:Person {name: 'Alice'})
SET p.age = 31, p.location = 'New York'
RETURN p

在这里插入图片描述

删除数据

// 删除节点及其关系
MATCH (p:Person {name: 'Bob'})
DETACH DELETE p

// 删除关系
// 删除任意方向的FRIENDS关系
MATCH (t:Person {name: 'Tom'})-[r:FRIENDS]-(b:Person {name: 'Bob'})
DELETE r

// 删除所有数据(谨慎使用!)
MATCH (n) DETACH DELETE n

在这里插入图片描述

多跳查询

//补充数据用于展示多跳查询
CREATE (:Person {name: 'Tom', age: 30});
MATCH (a:Person), (b:Person)
WHERE a.name = 'Tom' AND b.name = 'Bob'
CREATE (a)-[:FRIENDS]->(b),(b)-[:FRIENDS]->(a);

// 查找Alice的2度好友(朋友的朋友)
MATCH (alice:Person {name: 'Alice'})-[:FRIENDS*2]->(fof)
RETURN DISTINCT fof.name

在这里插入图片描述

最短查询

MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Tom'}),
path = shortestPath((a)-[*]-(b))
RETURN path

在这里插入图片描述

聚合函数

MATCH (p:Person)
RETURN avg(p.age) AS averageAge, count(*) AS totalPeople

在这里插入图片描述

2. 插件安装[apoc]

neo4j图数据库可支持很多插件扩展,例如:apoc、

  1. apoc插件下载:https://github.com/neo4j/apoc/releases?page=1

neo4j与apoc版本对应关系:https://neo4j.ac.cn/labs/apoc/5/installation/

在这里插入图片描述

下载与自己neo4j匹配的插件即可,因为开始通过docker搭建neo4j时,我们已经做了plugins的映射:-v /Users/ziyi/docker-home/neo4j/plugins:/var/lib/neo4j/plugins。所以我们直接将插件下载到本地/Users/ziyi/docker-home/neo4j/plugins目录即可。
在这里插入图片描述
2. 配置文件新增配置
neo4j.conf新增:

dbms.security.procedures.unrestricted=apoc.*
dbms.security.procedures.allowlist=apoc.*

在这里插入图片描述

  1. 重启容器
# 重启neo4j容器
docker ps | grep neo4j
docker restart 容器ID
  1. 来到可视化页面,输入下面命令验证插件是否安装成功
return apoc.version()

在这里插入图片描述
5. apoc里面有很多内置函数,可直接使用
在这里插入图片描述
效果:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到