图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以有一个或多个属性。Neo4j创建的图是用顶点和边构建的一个有向图,其查询语言cypher已经成为事实上的标准。
图数据库:描述数据之间关系的数据库,最适合处理关系:从简单到复杂的数据结构且互相连接的数据。
Neo4j是什么
Neo4j是一个高性能的,NOSQL图形数据库,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Neo4j的特点
- SQL就像简单的查询语言Neo4j CQL
- 它遵循属性图数据模型
- 它通过使用Apache Lucence支持索引
- 它支持UNIQUE约束
- 它包含一个用于执行CQL命令的UI:Neo4j数据浏览器
- 它支持完整的ACID(原子性,一致性,隔离性和持久性)规则
- 它采用原生图形库与本地GPE(图形处理引擎)
- 它支持查询的数据导出到JSON和XLS格式
- 它提供了REST API,可以被任何编程语言(如Java,Spring,Scala等)访问
- 它提供了可以通过任何UI MVC框架(如Node JS)访问的Java脚本
- 它支持两种Java API:Cypher API和Native Java API来开发Java应用程序
Neo4j的优点
- 它很容易表示连接的数据
- 检索/遍历/导航更多的连接数据是非常容易和快速的
- 它非常容易地表示半结构化数据
- Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
- 它使用简单而强大的数据模型
- 它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引
安装
windows压缩包版本
- 在安装neo4j之前,系统需要具备Java JRE,并配置Java开发环境,然后安装neo4j服务。
Neo4j是基于Java运行环境的图形数据库,因此,必须向系统中安装JAVA SE(Standard Edition)的JDK,并配置系统环境变量。
注意:neo4j4.0版本之前,对jdk版本没有过高要求,在4.0版本之后,需要jdk11及以上版本。 - 下载网址:https://neo4j.com/download-center/#community 从Neo4j官网下载压缩包版本并解压使用:
3. Neo4j应用程序有如下主要的目录结构:
- 创建neo4j的环境变量
- 点击组合键:Windows+R,输入cmd,启动DOS命令行窗口,运行命令:neo4j.bat console
在这里顺便罗列一下对neo4j启动的操作命令,在DOS界面进入所安装的neo4j的bin目录后,
- 启动服务:neo4j start
- 停止服务:neo4j stop
- 重启服务:neo4j restart
- 卸载:neo4j uninstall-service
- Neo4j集成的浏览器:Neo4j服务器具有一个集成的浏览器,启动neo4j服务即可使用neo4j集成的浏览器管理图数据库,在本机浏览器输入网址:http://localhost:7474/。初始的用户名和密码为neo4j,登录后需要再修改密码,修改的密码不能为空和neo4j。
修改密码后即可进入下面的页面进行操作了。
centos上的tarball安装
- 下载:
wget https://neo4j.com/artifact.php?name=neo4j-community-3.4.1-unix.tar.gz
。 - 解压:
tar -zxvf neo4j-community-3.4.1.tar.gz
。 - 系统服务由systemctl命令控制,这里分别罗列一下启动、关闭、重启的命令:
systemctl {start|stop|restart} neo4j
。 - 开启远程访问:
- 对于3.0以前的版本,在安装目录的
$NEO4J_HOME/conf/neo4j.conf
文件内,找到这一行,将注释#号去掉就可以了:#dbms.connector.https.address=localhost:7473
改为dbms.connector.https.address=0.0.0.0:7473
。这样,远程其他电脑可以用本机的IP或者域名后面跟上7474 端口就能打开web界面了 如: https://centos的IP地址:7473,当然,你的操作系统的防火墙也要确保开放了7474端口才行,点此可查看防火墙怎样开放,如果是云服务器的话,还需要在安全组添加7474端口。 - 对于3.1及以后的版本,在安装目录的
$NEO4J_HOME/conf/neo4j.conf
文件内,找到这一行,将注释#号去掉就可以了dbms.connectors.default_listen_address=0.0.0.0
。
有人喜欢tarball安装,有人喜欢rpm软件包安装,下次重新找个机会详细说明一下。
- 对于3.0以前的版本,在安装目录的
Neo4j基本使用
- 例如:通过Cypher命令,创建一个节点。
在$ 命令行中,编写Cypher脚本代码,点击Play按钮,在图数据库中创建第一个节点:
CREATE(n:Person {name:'Andree', title:'Develop'}) return n;
在Graph模式下,能够看到创建的图形,我们可以到$ 命令行继续执行Cypher脚本,创建其他节点以及建立关系……
- CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言:
- 它是Neo4j图形数据库的查询语言。
- 它是一种声明性模式匹配语言
- 它遵循SQL语法。
- 它的语法是非常简单且人性化、可读的格式。
现在我们先大致解决在win端下载安装neo4j以及对neo4j进行一次简单的概括介绍,随着我们接下来的深入学习,我们可以一起完成接下来的neo4j详细语法使用、在linux内核系统的安装以及应用在JAVA开发的介绍。