为何使用Neo4j?
“象网PMP”微信小程序需要增加AI问答功能,项目管理领域各种术语之间的连接关系具有多层结构,比如某过程具有多项输入、输出、工具与技术,而某项输入输出又可能是其他过程的输入输出、同时各工具与技术被多个过程共享,采用传统关系数据库显然无法直观存储这种多层次的交叉关系,即使可以转为二维关系保存下来,在查询时也需要用代码建立各概念之间的多层连接关系。另外,当对象之间的关系改变时更新表中的信息相当麻烦。
Neo4j可以解决上述问题。
Neo4j是一个高性能的图形数据库,它基于磁盘,将结构化数据存储在网络上而不是表中,具有事物特性。它不支持SQL语句,属于NOSQL数据库。但支持类似面向对象的查询语句,一旦存储了节点和边之间的关系后,进行复杂查询更加直观简单。
下面记录一下安装过程。说明:我的服务器环境是Centos7.4。
注意:neo4j需要Java环境,可以安装Oracle Java8,或者OPEN JDK9,我装的是主流JDK8,参考另外文章 CentOS7安装JDK8
一、下载解压
访问neo4j官网下载:https://neo4j.com/,注意点击“Download Neo4j Server”按钮,下载服务器版本的社区版即可,我下载的版本是Neo4j 3.5.13,发布于2019年11月27日。
下载的文件名为 neo4j-community-3.5.13-unix.tar.gz,上传至服务器目录。
解压缩:tar -xf neo4j-community-3.5.13-unix.tar.gz
二、修改配置文件
默认只能从本机即localhost访问,如果需要其他机器也能访问要修改配置文件
vim neo4j-community-3.5.13/conf/neo4j.conf
找到这行,#dbms.connectors.default_listen_address=0.0.0.0,把#注释去掉
为确保图形界面访问成功,把下面注释也去掉
dbms.connector.bolt.enabled=true
dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=:7687
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=:7473
三、启动neo4j
后台启动neo4j的命令为: neo4j-community-3.5.13/bin/neo4j start (控制台启动命令是bin/neo4j console),后台启动成功的界面如下:
重启动命令是neo4j restart,每次修改配置文件都要重启动neo4j。查看服务状态neo4j status,停止服务 neo4j stop。数据备份命令: neo4j-admin dump --database=graph.db --to=/home/abc.dump;数据恢复命令:neo4j-admin load --from=/home/abc.dump --database=graph.db --force
四、远程访问
打开浏览器,输入服务器IP:7474,登录界面默认填充了用户名neo4j,输入默认密码neo4j后,按提示修改密码,进入neo4j,OK成功。
注意:如果无法访问的话多半是服务器防火墙或云服务器的安全控制,放行相关端口即可,主要是7474端口和7687端口,前者是允许浏览器访问端口,后者是数据库访问端口