什么是Neo4j?
什么是Neo4j
Neo4j是一个高性能的NoSQL图数据库系统,它将基于多维度的社交关系数据
存储在图
而不是数据表中。
常见的NoSQL分类。

分类 | 存储模型 | 优势 | 不足 | 典型应用 |
---|---|---|---|---|
KV键值对 | 哈希表 | 查询速度快 | 数据无结构 | Redis |
文档数据库 | JSON或XML | 表结构可变 | 不支持事务 | MongoDB |
列簇 | 列式存储 | 查询速度快,压缩率高 | I/O性能不高 | HBase |
图数据库 | 节点与关系 | 适用于复杂关系查询 | 数据抽象程度不高,存储成本高 | Neo4j |
Neo4j可以表现非常复杂的关系,下面是一个简单得不能再简单的三口之家。

当然,Neo4j也可以壕不费力地表现出《山海经·异兽志》的那种关系。

这种数据如果用MySQL存储和查询,会非常让人头大。
通过这种对于关系
的掌控,Neo4j的应用场景非常广泛,例如,欺诈检测
、实时推荐
、知识图谱
、供应链管理
和身份访问授权
等,都是它可以施展拳脚的地方。
虽然商业版的Neo4j支持分布式集群,而社区版只支持单机模式,但对于上千万的用户规模,即使单机版也是够用的,这也是它之所以被称为高性能
的原因之一。
Docker部署
官方提供了几种不同的Docker部署方式。
一般情况下,测试环境不需要设置密码什么的,所以只需要安装好Docker,然后执行下面的脚本就行了。
> docker run -d \
-p 7474:7474 -p 7687:7687 \
neo4j:latest
启动后可以通过浏览器来访问http://IP:7474/(第一次访问需要修改密码)。
本机部署
相对于Docker部署,这种方式麻烦一些。
首先,在官网下载地址下载需要的版本。需要注意的是,Neo4j对Java的版本是有要求的。
然后解压缩下载的文件并修改配置。
> cd /home/work
> tar zxf neo4j-community-5.23.0-unix.tar.gz
> cd neo4j-community-5.23.0
> vi conf/neo4j.conf
# 取消 server.default_listen_address=0.0.0.0 前面的注释(仅适用于测试环境)
server.default_listen_address=0.0.0.0
# 将 localhost 也改为 0.0.0.0(仅适用于测试环境)
server.default_advertised_address=0.0.0.0
接着再给它创建软链接并且赋予权限。
> mv neo4j-community-5.23.0 /opt/
> ln -s /opt/neo4j-community-5.23.0 /opt/neo4j
> groupadd neo4j
> useradd -g neo4j neo4j -s /bin/bash
> chown -R neo4j /opt/neo4j-community-5.23.0
在服务第一次启动前,可以给它设置连接密码。如果不设置,那么缺省的连接用户名和密码都是neo4j
。
> cd /opt/neo4j
> ./bin/neo4j-admin dbms set-initial-password <指定密码>
这里是官方的Linux安装部署详细指南。
相关概念
在操作Neo4j的图数据
之前,必需要先搞清楚下面这几个概念。
图
:由节点
、属性
、关系
和标签
所组成的网络。节点
:三口之家
中的姬如雪
、李星云
和李星星
都是网络中的节点
。属性
:用来表示节点
各类信息的数据,例如,年龄
、身高
、电话
等都是属性。关系
:用来连接两个节点
的边
,关系分为单向关系
和双向关系
,关系
也可以有多个属性
,甚至递归的关系
。标签
:它将一个公共名称与一组节点或关系相关联,也就是某一类节点
的统称。例如,姬如雪
既是妻子
,也是女人
。
关注公众号后回复 neo4j
即可获得Neo4j
栏目剩余文章的访问密码。
