图数据库neo4j的安装与基本使用(一)
1-什么是图形数据库,什么是Neo4j
2018年06月13日 17:16:10 weixin_37681618 阅读数:233更多
个人分类: 图形数据库
- 什么是图数据库
图数据库是基于数学里图论的思想和算法而实现的高效处理复杂关系网络的新型数据库系统,用图来存储数据,是最接近高性能的一种用于存储数据的数据结构方式之一。
- 为什么要用图数据库
数据爆炸的时代,在社交网络、实时推荐、征信系统、人工智能方面,我们都需要通过繁杂庞大的数据进行关联数据分析。而传统的关系型数据库存在建模困难、查询困难、扩展困难等特点,最终的结果就会导致关系型数据库进行关联数据查询的时候性能低,而这些关系型数据库所不能处理的难点恰恰是图数据库的强项,它最擅长的就是处理数据之间的关系。
- 什么是Neo4j
Neo4j是一个有商业支持的开源图数据库,它用高效的图数据结构代替传统的表设计。它具备完整的ACID支持、高可用性、能够轻易扩展到上亿级别的节点和关系、能够通过遍历工具高速检索数据。
文章目录
安装JDK
Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。从Oracle官方网站下载 Java SE JDK,当前的版本是JDK8。
安装Neo4j
官网下载最新版本Neo4j
Neo4j应用程序有如下主要的目录结构:
bin目录:用于存储Neo4j的可执行程序;
conf目录:用于控制Neo4j启动的配置文件;
data目录:用于存储核心数据库文件;
plugins目录:用于存储Neo4j的插件;
- 1
- 2
- 3
- 4
配置环境变量
创建主目录环境变量NEO4J_HOME,并把主目录设置为变量值。
配置文档存储在conf目录下,Neo4j通过配置文件neo4j.conf控制服务器的工作。默认情况下,不需要进行任意配置,就可以启动服务器。
1,核心数据文件的位置
例如,核心数据文件存储的位置,默认是在data/graph.db目录中,要改变默认的存储目录,可以更新配置选项:
# The name of the database to mount
#dbms.active_database=graph.db
# Paths of directories in the installation.
#dbms.directories.data=data\
- 1
- 2
- 3
- 4
- 5
2,安全验证,默认是启用的
# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
#dbms.security.auth_enabled=false
- 1
- 2
- 3
3,配置JAVA 堆内存的大小
# Java Heap Size: by default the Java heap size is dynamically calculated based on available system resources.
# Uncomment these lines to set specific initial and maximum heap size.
#dbms.memory.heap.initial_size=512m
#dbms.memory.heap.max_size=512m
- 1
- 2
- 3
- 4
启动neo4j
1,通过控制台启动Neo4j程序
点击组合键:Windows+R,输入cmd,启动DOS命令行窗口,切换到主目录,以管理员身份运行命令:
neo4j.bat console
- 1
如果看到以下消息,说明neo4j已经开始运行(我这里报错时JDK版本问题):
2,把Neo4j安装为服务(Windows Services)
安装和卸载服务:
bin\neo4j install-service
bin\neo4j uninstall-service
- 1
- 2
- 3
启动服务,停止服务,重启服务和查询服务的状态:
bin\neo4j start
bin\neo4j stop
bin\neo4j restart
bin\neo4j status
- 1
- 2
- 3
- 4
- 5
- 6
在命令行下,“以管理员身份运行” 命令提示符。导航到Neo4j的运行目录\bin下
输入命令:neo4j,系统会返回关于neo4j 运行命令的相关指令,通过使用“neo4j <指令名>”的格式就可以运行相关操作了,其中的指令名包括:
- console:打开Neo4j的控制台。
- start:启动Neo4j。
- stop:关闭Neo4j。
- restart:重启Neo4j。
- status:查看Neo4j运行状态。
- install-service:安装Neo4j在Windows系统上的服务。
- uninstall-service:卸载Neo4j在Windows系统上的服务。
首次安装Neo4j需要先运行 neo4j install-service命令将Neo4j服务安装在系统上,然后再运行:neo4j start命令启动Neo4j
当然如果您想要卸载Neo4j,就运行:neo4j uninstall-service命令,这样Neo4j服务就卸载了。
打开Neo4j集成的浏览器
Neo4j服务器具有一个集成的浏览器,在一个运行的服务器实例上访问 “http://localhost:7474/”,打开浏览器,显示启动页面
默认的host是bolt://localhost:7687,默认的用户是neo4j,其默认的密码是:neo4j,第一次成功登陆到Neo4j服务器之后,需要重置密码。
访问Graph Database需要输入身份验证,Host是Bolt协议标识的主机。
登录成功后界面
示例,编写Cypher命令,创建两个节点和两个关系:
依次执行下面的语句
CREATE (n:Person { name: 'Andres', title: 'Developer' }) return n;
CREATE (n:Person { name: 'Vic', title: 'Developer' }) return n;
match(n:Person{name:"Vic"}),(m:Person{name:"Andres"}) create (n)-[r:Friend]->(m) return r;
match(n:Person{name:"Vic"}),(m:Person{name:"Andres"}) create (n)<-[r:Friend]-(m) return r;
- 1
- 2
- 3
- 4
在$ 命令行中,编写Cypher脚本代码,点击Play按钮,点击创建第一个节点,
在第一个节点创建之后,在Graph模式下,能够看到创建的图形,继续编写Cypher脚本,创建其他节点和关系
在创建完两个节点和关系之后,查看数据库中的图形:
1,Neo4j支持三种网络协议(Protocol)
Neo4j支持三种网络协议(Protocol),分别是Bolt,HTTP和HTTPS,默认的连接器配置有三种,为了使用这三个端口,需要在Windows防火墙中创建Inbound Rules,允许通过端口7687,7474和7473访问本机。
2,连接器的可选属性
listen_address:设置Neo4j监听的链接,由两部分组成:IP地址和端口号(Port)组成,格式是::
3,设置默认的监听地址
设置默认的网络监听的IP地址,该默认地址用于设置三个网络协议(Bolt,HTTP和HTTPs)的监听地址,即设置网络协议的属性:listen_address地址。在默认情况下,Neo4j只允许本地主机(localhost)访问,要想通过网络远程访问Neo4j数据库,需要修改监听地址为 0.0.0.0,这样设置之后,就能允许远程主机的访问。
# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0
- 1
- 2
- 3
4,分别设置各个网络协议的监听地址和端口
HTTP链接器默认的端口号是7474,Bolt链接器默认的端口号是7687,必须在Windows 防火墙中允许远程主机访问这些端口号。
# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
#dbms.connector.bolt.listen_address=0.0.0.0:7687
# HTTP Connector. There must be exactly one HTTP connector.
dbms.connector.http.enabled=true
#dbms.connector.http.listen_address=0.0.0.0:7474
# HTTPS Connector. There can be zero or one HTTPS connectors.
#dbms.connector.https.enabled=true
#dbms.connector.https.listen_address=0.0.0.0:7473
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
参考文献:
https://neo4j.com/docs/operations-manual/3.2/
centos6.4 配置Neo4j
摘要:Oracle甲骨文公司Oracle公司如期发布了Java 8正式版!现在你就可以下载Java 8正式版了,同期发布的还有JDK 8。全新版本带来诸多新特性,可选linux和window版的可选32位和64位
下载说明文档:判断系统是64位还是32位 Linux下选tar.gz好还是rpm
首先安装JDK
一、首先进入安装的目录
cd /usr/local/
mkdir java(创建java目录)
- 1
- 2
出现报错xxx is not in the sudoers file.This incident will be reported.
解决方案首先我安装了虚拟机,需要一些权限修改
1.首先进入到root用户下
[hht@localhost local]$ su -
Password:
[root@localhost ~]#
- 1
- 2
- 3
2.添加sudo文件的写权限,命令是:
chmod u+w /etc/sudoers
3.编辑sudoers文件
vi /etc/sudoers
找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)
ps:这里说下你可以sudoers添加下面四行中任意一条
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
4.撤销sudoers文件写权限,命令:
chmod u-w /etc/sudoers
这样普通用户就可以使用sudo了
之后完成创建
二、下载JDK
其次下载jdk,通过JDK官网可以下载。
下载的版本为Linux版JDK1.8 64位tar.gz-----jdk-8u11-linux-x64.tar.gz
下载到本地的可以通过rz上传上去。
远程系统需要上传本地电脑文件,用scp命令可以处理,其实linux中rz 和 sz 命令允许开发板与主机通过串口进行传递文件。
sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器
安装命令:
yum install lrzsz
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
我这里是直接使用wget 下载
wget
http://download.oracle.com/otn-pub/java/jdk/8u181b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
出现错误To connect to edelivery.oracle.com insecurely, use ‘–no-check-certificate’.
解决方案
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
- 1
这里记住要指定cookie。
下载后发现文件后面有些参数,直接修改即可
mv jdk-8u141-linux-x64.tar.gz\?AuthParam\=1538029440_f1a4ac759aa322455f015d1d5405dbf7 jdk-8u141-linux-x64.tar.gz
- 1
之后用过tar xzf 解压即可
三、配置环境变量
1.用vi命令在环境变量中加上jdk路径的环境变量
vi /etc/profile
- 1
翻到最末尾,添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_141
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 1234
- 1
- 2
- 3
- 4
2.然后执行
source /etc/profile
- 1
使添加的环境变量生效。
也可以重启
3.测试
执行java -version测试是否安装成功
[root@ java]# java -version
下载Neo4j安装包
使用wget命令获取Neo4j安装包~如:
wget https://neo4j.com/artifact.php?name=neo4j-community-3.4.6-unix.tar.gz
之后解压
tar -zvxf artifact.php?name=neo4j-community-3.4.6-unix.tar.gz
修改目录名neo4j-community-2.3.9到neo4j~
mv neo4j-community-2.3.9/ neo4j
- 1
启动
进入neo4j的bin目录,使用./neo4j console
按照这种形式启动即可。
结果出现了一个错误:
但是浏览器发现目前出现浏览器访问不了,我按照网上连接https://blog.csdn.net/chenyong679/article/details/16861429安装了谷歌浏览器进行测试,至少原来的火狐是不行。
出现这个现象主要是我的是虚拟机内存小导致的,正常没有问题的。
进入Neo4j进行基本操作:
linux 下的基本操作:
退出操作:exit
相应的查看IP操作:
Neo4j 简单入门
2018年04月13日 15:28:12 Andy__Han 阅读数:261
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hxg117/article/details/79929579
Neo4j 是一个图数据库,主要包括节点和关系。节点和关系都可以包含属性。
安装
下载Neo4j:https://neo4j.com/artifact.php?name=neo4j-community-3.3.5-windows.zip
解压后运行:
D:\Tools\neo4j-community-3.3.5\bin>neo4j.bat console
2018-04-13 06:03:08.826+0000 INFO ======== Neo4j 3.3.5 ========
2018-04-13 06:03:08.853+0000 INFO Starting...
2018-04-13 06:03:09.879+0000 INFO Bolt enabled on 127.0.0.1:7687.
2018-04-13 06:03:14.553+0000 INFO Started.
2018-04-13 06:03:15.612+0000 INFO Remote interface available at http://localhost:7474/
- 1
- 2
- 3
- 4
- 5
- 6
访问Neoj Browser: http://127.0.0.1:7474/browser/,第一次访问会提示修改密码。
点击左边栏的Database,
Node Labels 表示存在的节点
Relationship Types表示存在的关系
Property Keys 表示节点或者关系的属性
在中间部分的上面可以输入要执行的命令。
接下来通过命令创建一个节点,节点的名字是Message,有两个属性title和text。
CREATE (:Message { title:'Welcome',text:'Hello world!' });
- 1
可以看到左边栏的Node Labels下面出现了 Message 节点。
现在可以通过下面的命令查询刚才创建的节点:
MATCH (n:Message) RETURN n LIMIT 25;
- 1
再创建一个Language节点:
CREATE (:Language { name:'Java',version:'1.8' });
- 1
有了Message节点和Language节点后,可以添加两个节点之间的关系了。
MATCH (m:Message),(c:Language)
WHERE m.title = 'Welcome' AND c.name = 'Java'
CREATE (m)-[:ACCESSED_FROM]->(c);
- 1
- 2
- 3
现在在左边栏Relationship Types下面可以看到刚才创建的关系,名字是ACCESSED_FROM。点击ACCESSED_FROM,可以图形化查看两个节点之间的关系。
下面查询刚才创建的关系:
MATCH (m:Message)-[:ACCESSED_FROM]->(l:Language)
RETURN m.title,l.name;
- 1
- 2
下面通过Java API来访问neo4j。
新建项目添加maven依赖:
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>1.2.1</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
下面是Java测试代码:
import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Record;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.StatementResult;
import org.neo4j.driver.v1.Values;
public class Neo4jTest {
public static void main(String[] args) {
Driver driver = GraphDatabase.driver("bolt://127.0.0.1:7687", AuthTokens.basic("neo4j", "000000"));
Session session = driver.session();
session.run("CREATE (:Message {title: 'Hello', text: 'hello world'})");
session.run("CREATE (:Language {name: 'Java8', version: '1.8'})");
String createRelationship = "MATCH (m:Message),(l:Language) WHERE m.title = 'Hello' AND l.name='Java8'"
+ " CREATE (m)-[:HelloJava8]->(l);";
session.run(createRelationship);
String queryRelationship = "MATCH (m:Message)-[:HelloJava8]->" + "(l:Language {name:{language}}) "
+ "RETURN m.title,l.name;";
StatementResult resultSet = session.run(queryRelationship, Values.parameters("language", "Java8"));
while (resultSet.hasNext()) {
Record result = resultSet.next();
System.out.println(result.get("m.title") + " from " + result.get("l.name"));
}
session.close();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
运行结果:
“Hello” from “Java8”
现在可以在neo4j browser 看到通过Java API创建的节点和关系: