Neo4j 是目前市场占有率最高的属性图(property graph)数据库,使用声明式查询语言 Cypher(类 SQL 的 ASCII 图模式语法),支持完整 ACID(原子性、一致性、隔离性、持久性)事务,生态成熟。本文是 Neo4j 实战系列的起点:弄清版本差异、搭好本地环境、跑通第一条查询。
段末注释:Neo4j 为 Neo4j Inc. 出品的原生图数据库产品;Cypher 为其查询语言,也是 openCypher 开放规范的基础。
前置阅读:01.图数据库-概述与选型
一、Neo4j 是什么:核心对象一览
Neo4j 在存储与查询层面只关心四类对象:
| 对象 | 英文 | 说明 | 类比 RDBMS |
|---|---|---|---|
| 节点 | Node | 实体,如人、蛋白、论文 | 一行记录 |
| 标签 | Label | 节点的类型标记,可多标签 | 表名 / 类型 |
| 关系 | Relationship | 有向边,类型固定,如 KNOWS、CITES |
外键 + 关联表 |
| 属性 | Property | 键值对,挂在节点或关系上 | 列字段 |
1 | flowchart LR |
与关系型数据库的本质差异:关系是一等公民——遍历邻居不需要 JOIN,存储层采用无索引邻接(index-free adjacency),每个节点直接指向其关联关系。
二、版本与部署形态
2.1 三个版本线
| 版本 | 许可 | 典型用途 |
|---|---|---|
| Community Edition | 开源(GPL) | 学习、中小规模自托管 |
| Enterprise Edition | 商业 | 集群、RBAC、在线备份、Fabric 分片 |
| AuraDB | 托管 SaaS | 免运维、按量计费、自动备份 |
社区版单库规模可达数百亿节点/边量级(受硬件限制),对多数企业知识图谱、风控、推荐场景足够;需要因果集群(causal cluster)、细粒度权限或Fabric 多库联邦时再考虑企业版或 Aura。
2.2 部署方式选型
| 方式 | 命令/入口 | 适合 |
|---|---|---|
| Neo4j Desktop | 图形界面,内置 Browser | 本地学习、小项目 |
| Docker | docker run neo4j |
CI、团队统一环境 |
| Linux 包 / tar | neo4j start |
生产自托管 |
| AuraDB | console.neo4j.io | 快速上线、无运维团队 |
三、环境安装(推荐 Docker)
3.1 Docker 一键启动
1 | docker run -d \ |
| 端口 | 协议 | 用途 |
|---|---|---|
7474 |
HTTP | Browser、REST API |
7687 |
Bolt | 官方驱动(Python/Java/JS) |
首次登录 Browser(http://localhost:7474):用户名 neo4j,密码为 NEO4J_AUTH 中 / 后的部分。
3.2 关键配置项(neo4j.conf)
1 | # 内存:堆 + 页缓存,建议页缓存 ≈ 图数据热集大小 |
段末注释:Bolt 为 Neo4j 二进制协议,驱动通过它收发 Cypher;页缓存(page cache)缓存存储文件页,对遍历性能影响极大。
3.3 验证连接
1 | # cypher-shell(容器内或本地安装) |
四、Neo4j Browser 初识
Browser 是随 Neo4j 附带的 Web 客户端,适合交互式写 Cypher、看图可视化。
| 区域 | 作用 |
|---|---|
| 命令栏 | 输入 Cypher,:help 看内置命令 |
| 图视图 | 节点/关系可视化,可拖拽 |
| 表视图 | 结果表格 |
| 侧栏 | 库列表、连接信息、收藏查询 |
常用 Browser 命令:
1 | :help // 帮助 |
五、第一条 Cypher:创建、查询、删除
5.1 创建数据
1 | // 创建两人及其关系 |
语法要点:
()表示节点,:Label为标签,{}为属性-[:TYPE]->表示有向关系,关系也可带属性CREATE每次执行都新建节点,可能重复
5.2 查询
1 | // 匹配 Alice 认识的人 |
5.3 幂等写入:MERGE
1 | MERGE (p:Person {name: 'Alice'}) |
MERGE =「有则匹配,无则创建」,导入与同步场景必备。
5.4 清理(学习环境)
1 | // 删除所有节点及关系(慎用!) |
六、驱动连接示例(Python)
生产环境通过官方驱动访问,而非 Browser。
1 | from neo4j import GraphDatabase |
安装:pip install neo4j
| 语言 | 包名 | 说明 |
|---|---|---|
| Python | neo4j |
官方,推荐 |
| Java | neo4j-java-driver |
Spring Data Neo4j 基于此 |
| JavaScript | neo4j-driver |
Node/Browser 均可 |
| Go | neo4j-go-driver |
官方 |
七、目录与文件结构(自托管)
| 路径 | 内容 |
|---|---|
data/databases/ |
各库图数据 |
data/transactions/ |
事务日志 |
logs/ |
运行日志 |
import/ |
LOAD CSV 默认可读目录 |
plugins/ |
APOC、GDS 等插件 JAR |
conf/neo4j.conf |
主配置 |
不要在数据库运行时手动改 data/ 下的文件;备份与迁移用官方工具(见 Neo4j-06)。
八、系列后续篇章
| 下一篇 | 内容 |
|---|---|
| Neo4j-02.数据模型与适用场景 | 如何建模、什么数据该上图 |
| Neo4j-03.Cypher增删改查 | 完整 CRUD 与约束 |
| Neo4j-04.数据导入与对接工具 | CSV、驱动、ETL |
九、小结
- Neo4j 用节点 + 有向关系 + 属性表达图;Cypher 是日常操作语言。
- 学习用 Docker + Browser 最快;生产用 Bolt 驱动 + 合理内存配置。
CREATE会重复数据;同步场景用 MERGE;删节点记得 DETACH DELETE。