1. 什么是Neo4j?
Neo4j是用Java实现的开源NoSQL图数据库。从2003年开始开发,2007年正式发布第一版,其源码托管于GitHtb。Neo4j作为图数据库中的代表产品,已经在众多的行业项目中进行了应用,如:网络管理、软件分析、组织和项目管理、社交项目等方面。 Neo4j实现了专业数据库级别的图数据模型的存储,提供了完整的数据库特性,包括ACID事务的支持、集群的支持、备份和故障转移等。
Neo4j提供了申明式的查询语言Cypher,它类似于关系型数据库中的SQL语言,其具有表现力丰富、使用简单、查询效率高、高扩展性等特点。
它存储的数据大致是这样的:
其中,紫色圆圈是【人】数据,橙色圆圈是【电影】数据,表示人与电影之间参演或导演的数据关系。
2. Neo4j版本说明
Neo4j有两个不同的版本,分别是:
- 社区版(Community Edition)
- 具备了基本功能的版本,功能较为完整,没有提供企业服务。
- 企业版(Experience Edition)
- 企业版相对于社区版而言,增加了一些功能,如:集群、高级监控、高级缓存、在线备份等功能。
建议:开发环境使用社区版,生产环境使用企业版。
说明:企业版从3.2版本开始支持集群,无地理位置限制并且可以做到事务的ACID特性。
Neo4j企业·参考:http://neo4j.com.cn/topic/59b0a3f59fe13f5e0a2212b2
3. Neo4j部署安装
Neo4j支持众多平台的部署安装,如:Windows、Mac、Linux等系统。
Neo4j是基于Java平台的,所以部署安装前先保证已经安装了Java虚拟机。
在神领物流项目中,我们采用docker的方式进行安装。安装命令如下:
docker run \
-d \
--restart=always \
--name neo4j \
-p 7474:7474 \
-p 7687:7687 \
-v neo4j:/data \
neo4j:4.4.5
注意: 7474是web管理工具的端口,7687是neo4j协议端口进行数据通信打开浏览器,输入地址:http://192.168.150.102:7474
首次登录用户名密码neo4j/neo4j
如果是第一次登录,默认密码是:neo4j,首次登录需要重置密码:
登录成功后可以看到如下界面:
4.Neo4j web 工具介绍
Neo4j提供了web工具,可以对neo4j进行CRUD的操作。
5.体验Neo4j
下面我们通过官方提供的电影数据体验下Neo4j:
5.1.加载数据
创建数据语句会自动写入到Cypher语句输入框中,点击运行:
创建成功:
5.2. 查询数据
查询【Tom Hanks】参演了哪些电影:
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) RETURN tom,tomHanksMovies
查询结果:
6.数据结构
Neo4j中采用节点、属性、关系、标签来存储数据。如下:
- 节点
- 存储实体数据,在上图中,演员、电影都是节点。
- 可以理解为关系型数据库中的表。
- 关系
- 存储节点之间的关系。
- 关系只能有一个类型,必须有开始节点和结束节点以及指向。
- 关系可以自我循环引用,但是两头永远不能为空。
- 属性
- 节点和关系都可以有属性,它是由键值对组成的。
- 节点的属性可以理解为关系型数据库中的字段。
- 关系中的属性进一步的明确了关系。
- 标签
- 标签是对节点的分类,这样使得构建Neo4j数据模型更加简单。
- 在上面的电影案例中,Movie、Person就是标签。