随着网络信息时代的快速发展,5G时代的到来,智能穿戴设备的逐渐普及,人与人、人与物、物与物之间的关系逐渐复杂,类似于mysql这样的关系型数据库已经无法满足这种需求,而大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,带来的是硬件成本、人力成本的不断上升,而为了解决这一痛点,图数据库应运而生,专为解决复杂关系网而诞生的一种技术。
1. 什么是图数据库
- 图:由节点和关系两个元素组成。每个节点代表一个实体(人,地,事物,类别或其他数据),每个关系代表两个节点的关联方式。这种通用结构可以对各种场景进行建模 - 从道路系统到设备网络,到人口的病史或由关系定义的任何其他事物。
- 图数据库(Graph database)并非指存储图片的数据库,而是以图这种数据结构存储和查询数据。
- 图形数据库是一种在线数据库管理系统,具有处理图形数据模型的创建,读取,更新和删除(CRUD)操作。
- 与其他数据库不同,关系在图数据库中占首要地位。这意味着应用程序不必使用外键或带外处理(如MapReduce)来推断数据连接。
- 与关系数据库或其他NoSQL数据库相比,图数据库的数据模型也更加简单,更具表现力。
- 图形数据库是为与事务(OLTP)系统一起使用而构建的,并且在设计时考虑了事务完整性和操作可用性。
2. 为什么使用neo4j
首先要想清楚,为什么要用图数据库,图数据库能为我们带来什么?
举个栗子:羊村里面有好多羊,村长是羊村长,有个儿子叫喜羊羊,儿子的媳妇叫美羊羊,美羊羊有个弟弟叫懒羊羊。问假如羊村长不认识懒羊羊,它如何通过关系找到懒羊羊。
这个问题如果是传统关系型数据库,那么应该是羊村长跟喜羊羊是父子关系,找到喜羊羊,然后喜羊羊再找到懒羊羊,还有就是羊村长和美羊羊是公媳关系,可以通过美羊羊找到懒羊羊。这就是传统数据库,最少有2层join查询,一共要查3次表,那么如果层次更深入呢?
而图数据库在建库时,创建节点和关系后,只需要告知起点和终点就可以得到结果,例如:
- neo4j是最古老的开源图数据库,但这并不代表它技术落后,相反,它是目前技术最先进的图数据库之一。
- neo4j在图数据库使用领域使用率最高,社区活跃度高、文档齐全(中英文都有),出现问题基本都能在网上找到解决方案。
- 贴合目前的使用场景,能够独立、集群部署运行,对硬件、网络没什么要求,安装运行非常简便,非常轻量化。
- Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
- 提供了REST API,可以被任何编程语言(如Java,Spring,Scala等)访问
3. 环境准备
- neo4j 安装环境准备
neo4j 4的版本需要预先安装jdk11,并且配置环境变量
neo4j 3的版本需要预先安装jdk8,并且配置环境变量 - neo4j 安装包下载地址
官网的下载速度真是慢的,还总是断。下面是国内的下载地址,速度还可以,可以放心下载
http://doc.we-yun.com:1008/neo4j/3.5.18/neo4j-community-3.5.18-windows.zip(windows版本)
http://doc.we-yun.com:1008/neo4j/3.5.18/neo4j-community-3.5.18-unix.tar.gz(centos版本)
(下载失效可以留下联系QQ,单独提供)
4. 安装启动
- windows 环境
- 确认java环境
- 解压到本地磁盘
- 进入到解压的文件夹中
cd F:\neo4j-community-3.5.18\ - 修改图数据库配置文件conf/neo4j.conf,设置远程可访问
dbms.connectors.default_listen_address=0.0.0.0 - 启动neo4j
bin/neo4j.bat console
- 确认java环境
- linux 环境
与windows安装启动步骤类似,1、2、3、4是一样的
启动命令:./bin/neo4j.sh start
启动完成后,打开浏览器,输入http://localhost:7474/,出现如下界面:
第一次访问会要求修改密码,默认密码是:neo4j
以上就是安装部署成功了,是不是很容易呀!~但实际刚开始自学还是会遇到很多问题,我总结一下:
- 安装包问题,我整整下载了一上午,都没下载成功,最好从国内的一个网站上面下载下来了,但是好像不稳
- 版本问题,3.x的版本强制要求jdk1.8,4.x的版本强制要求jdk11,且全部都要配置环境变量,改了启动文件里面的java路径,还是不行,可能是代码里面写死了要求环境变量和版本吧。最后没办法,还是乖乖降级成3.5.18