1.Neo4j简介

Neo4j是一个高性能的、NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下,而不是严格、静态的表中,但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JDK1.8及以上版本。
Neo4j分为Neo4j分社区版(Community Edition)和企业版(Enterprise Edition),社区版为免费版本。Neo4j社区版和企业版在功能上没有本质区别,主要区别在如下几点:
1)容量:社区版最多支持 320 亿个节点、320 亿个关系和 640 亿个属性,而企业版没有这个限制。
2)并发:社区版只能部署成单实例,不能做集群。而企业版可以部署成高可用集群或因果集群,从而可以解决高并发量的问题。
3)容灾:由于企业版支持集群,部分实例出故障不会影响整个系统正常运行。
4)热备:社区版只支持冷备份,即需要停止服务后才能进行备份,而企业版支持热备,第一次是全量备份,后续是增量备份。
5)性能:社区版最多用到 4 个内核,而企业能用到全部内核,且对性能做了精心的优化。企业版的性能大概是社区版的2~4倍。
6)支持:企业版客户能得到 5X10 电话支持(Neo4j 美国电话、邮件,微云数聚电话、微信、邮件)。
教程:https://www.w3cschool.cn/neo4j/

2.下载安装

1.下载地址:
Neo4j 国内:http://we-yun.com/index.php/blog/releases-56.html
Neo4j 官方:https://neo4j.com
2.解压

  1. # 国内下载解压命令 使用-zxvf会报错
  2. tar -xvf neo4j-community-3.4.5-unix.tar.gz

3.修改配置
在安装目录下找到conf目录下的neo4j.conf文件,修改相应配置如下

  1. vim neo4j.conf
  2. # 开启后可远程通过ip访问neo4j数据库
  3. dbms.connectors.default_listen_address=0.0.0.0
  4. # 默认端口 bolt是7687 http是7474 https是7473 没有特殊要求可以不修改
  5. dbms.connector.bolt.listen_address=:7687
  6. dbms.connector.http.listen_address=:7474
  7. dbms.connector.https.listen_address=:7473

image.png
4.启动及其他命令
进入bin目录执行执行如下命令

  1. # 后台启动:
  2. ./neo4j start
  3. # 查看状态:
  4. ./neo4j status
  5. # 停止:
  6. ./neo4j stop
  7. # 重启:
  8. ./neo4j restart

image.png
5.客户端访问
http://host:7474/browser/
Host中输入:bolt://host:7687
第一次访问图数据库所在的机器上的7474端口时,账号neo4j,密码neo4j,会提示修改初始密码。
image.png
image.png

3.其他配置

  1. vi /etc/rc.d/rc.local
  2. # 在文件最后添加如下命令行:
  3. /安装路径/bin/neo4j start
  4. # rc.local需设置可执行权限

4.创建一个实例

  1. -- 创建节点 CREATE (<node-name>:<label-name>)
  2. CREATE (emp:Employee)
  3. CREATE (dept:Dept)

创建具有属性的节点

  1. CREATE (
  2. <node-name>:<label-name>
  3. {
  4. <Property1-name>:<Property1-Value>
  5. ........
  6. <Propertyn-name>:<Propertyn-Value>
  7. }
  8. )
  1. CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
  2. CREATE (emp:Employee{ id:123,name:"Lokesh",sal:35000,deptno:10 })

关系

  1. MATCH (emp:Employee {id:123}) , (dept:Dept{deptno:10})
  2. CREATE (emp)-[relation:WORKING_FOR ]->(dept)

image.png