欢迎关注作者博客
简书传送门
年前公司一直在讨论KNB的未来方向,一开始做好的KNB一期,利用了mysql5.7新特性能够勉强满足需求,但针对公司后期业务发展,对拓展性、稳定性、解耦性等要求的不断提高,年前技术内部讨论了一套方案,使用Neo4j图形数据库来实现KNB的架构需求。
目前针对Neo4j的开发方式,我还不太了解,特此来记录Neo4j的学习过程,也特别感谢庞国明老师关于Neo4j的课程教授,让我学习到了很多。
图数据库(Graph Database)是基于图论实现的一种新型NoSQL数据库。它的数据存储结构和数据的查询方式都是以图论为基础的。图论中图的基本元素为节点和边,在图数据库中对应的就是节点和关系。
在图数据库中,数据与数据之间的关系通过节点和关系构成一个图结构并在此结构上实现数据库的所有特性,如对图数据对象进行创建、读取、更新、删除(Create、Read、Update、Delete,简称:CRUD)等操作的能力,还有处理事务的能力和高可用性等。
目前市面上较为流行的图数据库产品有以下几种:
图数据库与关系数据库的对比
官方网站:https://neo4j.com
官方文档:https://neo4j.com/docs/
Github: https://github.com/neo4j/neo4j
Example: https://github.com/neo4j-examples
Neo4j具备的特性:
由于Neo4j是基于Java虚拟机(Java Virtual Machine,JVM)的产品,所以在安装前,必须保证已经安装了Java 虚拟机。
可访问Neo4j官方网站:https://neo4j.com/,找到下载链接
(1)Neo4j 支持的操作系统
(2)Neo4j 按功能分版本
(3)Neo4j 按安装方式分版本
本文主要讲解下压缩包版启动:
在命令行下,“以管理员身份运行” 命令提示符。导航到Neo4j的运行目录\bin下
输入命令:neo4j,系统会返回关于neo4j 运行命令的相关指令,通过使用“neo4j <指令名>”的格式就可以运行相关操作了,其中的指令名包括:
首次安装Neo4j需要先运行 neo4j install-service命令将Neo4j服务安装在系统上,然后再运行:neo4j start命令启动Neo4j,如图2-17。
当然如果您想要卸载Neo4j,就运行:neo4j uninstall-service命令,这样Neo4j服务就卸载了。
cd /tmp
wget http://debian.neo4j.org/neotechnology.gpg.key
sudo rpm --import neotechnology.gpg.key
其中cd /tmp 为导航到系统tmp目录下;然后使用wget命令将安装配置文件neotechnology.gpg.key下载到当前目录;再使用sudo rpm --import neotechnology.gpg.key命令将安装配置文件导入到系统中。
接下来,文本编辑器创建一个/etc/yum.repos.d/neo4j.repo内容:
[neo4j]
name=Neo4j Yum Repo
baseurl=http://yum.neo4j.org
enabled=1
gpgcheck=1
最后,我们就可以使用yum命令安装neo4j。
yum install neo4j
至此在CentOS系统下Neo4j已安装完毕。下面是安装后Neo4j的文件路径:
我们导航到/usr/share/neo4j/bin 运行目录下,运行:neo4j start命令就可以启动neo4j数据库了。
Ubuntu系统下安装Neo4j非常简单。
安装neo4j社区版
sudo apt-get install neo4j
安装neo4j 企业版
sudo apt-get install neo4j-enterprise
Linux 系统无浏览器 初始化 neo4j 密码
http://neo4j.com.cn/topic/5997c9899fe13f5e0a22128b
neo4j 开启远程web访问7474端口
http://neo4j.com.cn/topic/58e60893412d3d2c19c32de9
当Neo4j安装完成并用Web端重设密码后,就可以看到Neo4j的操作界面了,如图2-23。操作界面主要由三部分组成:命令输入区、结果显示区、状态工具栏。
某些版本的Linux操作系统不带有可视化的操作界面(如服务器版本的CentOS、Ubuntu等),在本地无法使用浏览器打开Neo4j Web管理平台。为此,Neo4j提供了一个可以在命令行状态下运行命令、返回结果的工具:neo4j-shell。
在Cypher -shell命令提示符下直接输入Cypher命令(以;结束),然后按回车运行即可。
如我使用CREATE (n {name:“World”}) RETURN “hello”, n.name 创建一个节点,然后再用 match (n) return n 查询出来。