Neo4j
基本概念
Neo4j 是一个开源的原生图形数据库管理系统,采用 Java 语言开发。与传统的关系型数据库不同,它不采用表结构(Schema-less),而是以图的形式存储和管理结构化数据。
核心特性
-
原生图存储:
- 数据以节点(Node)和关系(Relationship)的形式存储
- 节点表示实体(如人、地点、事物)
- 关系表示节点间的连接(如”朋友”、“属于”等)
-
事务支持:
- 完全支持 ACID(原子性、一致性、隔离性、持久性)事务
-
存储架构:
- 嵌入式数据库设计,可直接集成到 Java 应用中
- 基于磁盘的持久化存储
环境搭建
容器搭建
# docker-compose.yml
services:
neo4j:
image: neo4j:5.26
container_name: neo4j
ports:
- "7474:7474" # HTTP
- "7687:7687" # Bolt
environment:
NEO4J_AUTH: neo4j/neo4j123 # 首登请改密
NEO4J_server_default__listen__address: 0.0.0.0
NEO4J_server_default__advertised__address: ${HOST_IP:-127.0.0.1}
NEO4J_server_memory_heap_max__size: 2G
NEO4J_server_memory_pagecache_size: 1G
volumes:
- ./data:/data
- ./logs:/logs
- ./conf:/var/lib/neo4j/conf
启动后执行初始化脚本:
CREATE (e1:Emp {name:"张三"})-[:WORKS_FOR {since:2018}]->(d1:Dept {name:"研发部"});
CREATE (e2:Emp {name:"李四"})-[:WORKS_FOR {since:2020}]->(d1);
CREATE INDEX emp_name IF NOT EXISTS FOR (e:Emp) ON (e.name);
CREATE INDEX dept_name IF NOT EXISTS FOR (d:Dept) ON (d.name);
服务搭建
cd /opt/software
wget https://neo4j.com/artifact.php?name=neo4j-community-3.5.17-unix.tar.gz
tar -zxvf neo4j-community-3.5.17-unix.tar.gz
mv neo4j-community-3.5.17 ../servers/
修改配置支持远程访问:
dbms.connectors.default_listen_address=0.0.0.0
启动服务:
./bin/neo4j start