Neo4j

基本概念

Neo4j 是一个开源的原生图形数据库管理系统,采用 Java 语言开发。与传统的关系型数据库不同,它不采用表结构(Schema-less),而是以图的形式存储和管理结构化数据。

核心特性

  1. 原生图存储

    • 数据以节点(Node)和关系(Relationship)的形式存储
    • 节点表示实体(如人、地点、事物)
    • 关系表示节点间的连接(如”朋友”、“属于”等)
  2. 事务支持

    • 完全支持 ACID(原子性、一致性、隔离性、持久性)事务
  3. 存储架构

    • 嵌入式数据库设计,可直接集成到 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

访问 http://10.10.52.38:7474/browser/,默认账号密码都是 neo4j