Neo4j 第一篇:在Windows环境中安装Neo4j

<div id="cnblogs\_post\_body" class="blogpost-body"><p>图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。</p> <p>关系型数据库只对单个Join操作进行优化查询,而多重Join操作查询的性能显著下降。图形数据库适合查询关系数据,由于图形遍历的局部性,不管图形中由多少节点和关系,根据遍历规则,Neo4j只访问与遍历相关的节点,不受到总数据集大小的影响,从而保持期待的性能;相应地,遍历的节点越多,遍历速度越慢,但是变慢是线性的,这使得图形数据库不适合做海量数据统计分析。对与存在大量丰富关系的数据,遍历的性能不受图形数据量大小的影响,这使得Neo4j成为解决图形问题的理想数据库。</p> <p>&nbsp;</p> <p>我的Neo4j系列的文章收录在:<a href="http://www.cnblogs.com/ljhdo/category/998219.html" target="\_blank">Neo4j</a></p> <p>&nbsp;</p> <p><strong>一,下载和安装Neo4j</strong></p> <p><strong>1,安装Java JDK</strong></p> <p>Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。从Oracle官方网站下载 <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="\_blank">Java SE JDK</a>,当前的版本是JDK8。</p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170516154158057-778606309.png" alt=""></p> <p><strong>2,下载Neo4j安装文件</strong></p> <p>从Neo4j官网下载最新版本<a href="https://neo4j.com/download/other-releases/" target="\_blank">Neo4j 3.2</a>&nbsp;社区(Community)版本 “neo4j-community-3.2.0-windows.zip”,解压到主目录,“D:\\Program Files\\neo4j-community-3.2.”。</p> <p>Neo4j应用程序有如下主要的目录结构:</p> <ul> <li>bin目录:用于存储Neo4j的可执行程序;</li> <li>conf目录:用于控制Neo4j启动的配置文件;</li> <li>data目录:用于存储核心数据库文件;</li> <li>plugins目录:用于存储Neo4j的插件;</li> </ul> <p><strong>3,创建系统环境变量</strong></p> <p>创建主目录环境变量NEO4J\_HOME,并把主目录设置为变量值。</p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170518184824197-1041017055.png" alt=""></p> <p><strong>二,Neo4j的配置</strong></p> <p>配置文档存储在conf目录下,Neo4j通过配置文件neo4j.conf控制服务器的工作。默认情况下,不需要进行任意配置,就可以启动服务器。</p> <p><strong>1,核心数据文件的位置</strong></p> <p>例如,核心数据文件存储的位置,默认是在data/graph.db目录中,要改变默认的存储目录,可以更新配置选项:</p> <div class="cnblogs\_code"> <pre><span style="color: #000000;"># The name of the database to mount #dbms.active\_database</span>=<span style="color: #000000;">graph.db

Paths of directories </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> the installation.

#dbms.directories.data</span>=data</pre>

</div> <p><strong>2,安全验证,默认是启用的</strong></p> <div class="cnblogs\_code"> <pre><span style="color: #000000;"># Whether requests to Neo4j are authenticated. # To disable authentication, uncomment </span><span style="color: #0000ff;">this</span><span style="color: #000000;"> line #dbms.security.auth\_enabled</span>=<span style="color: #0000ff;">false</span></pre> </div> <p><strong>3,配置JAVA 堆内存的大小</strong></p> <div class="cnblogs\_code"> <pre># Java Heap Size: by <span style="color: #0000ff;">default</span> the Java heap size <span style="color: #0000ff;">is</span><span style="color: #000000;"> dynamically calculated based on available system resources. # Uncomment these lines to </span><span style="color: #0000ff;">set</span><span style="color: #000000;"> specific initial and maximum heap size. #dbms.memory.heap.initial\_size</span>=<span style="color: #000000;">512m #dbms.memory.heap.max\_size</span>=512m</pre> </div> <p><strong>三,网络连接配置</strong></p> <p><strong>1,Neo4j支持三种网络协议(Protocol)</strong></p> <p>Neo4j支持三种网络协议(Protocol),分别是Bolt,HTTP和HTTPS,默认的连接器配置有三种,为了使用这三个端口,需要在Windows防火墙中创建Inbound Rules,允许通过端口7687,7474和7473访问本机。</p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170519094211135-1778241906.png" alt=""></p> <p><strong>2,连接器的可选属性</strong></p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170519094435244-1208684991.png" alt=""></p> <p><strong>listen\_address</strong>:设置Neo4j监听的链接,由两部分组成:IP地址和端口号(Port)组成,格式是:&lt;ip-address&gt;:&lt;port-number&gt;</p> <p><strong>3,设置默认的监听地址</strong></p> <p>设置默认的网络监听的IP地址,该默认地址用于设置三个网络协议(Bolt,HTTP和HTTPs)的监听地址,即设置网络协议的属性:<strong>listen\_address地址</strong>。在默认情况下,Neo4j只允许本地主机(localhost)访问,要想通过网络远程访问Neo4j数据库,需要修改监听地址为 0.0.0.0,这样设置之后,就能允许远程主机的访问。</p> <div class="cnblogs\_code"> <pre># With <span style="color: #0000ff;">default</span><span style="color: #000000;"> configuration Neo4j only accepts local connections. # To accept non</span>-local connections, uncomment <span style="color: #0000ff;">this</span><span style="color: #000000;"> line: dbms.connectors.default\_listen\_address</span>=<span style="color: #800080;">0.0</span>.<span style="color: #800080;">0.0</span></pre> </div> <p><strong>4,分别设置各个网络协议的监听地址和端口</strong></p> <p>HTTP链接器默认的端口号是7474,Bolt链接器默认的端口号是7687,必须在Windows 防火墙中允许远程主机访问这些端口号。</p> <div class="cnblogs\_code"><div class="cnblogs\_code\_toolbar"><span class="cnblogs\_code\_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="https://my.oschina.net//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div> <pre><span style="color: #000000;"># Bolt connector dbms.connector.bolt.enabled</span>=<span style="color: #0000ff;">true</span><span style="color: #000000;"> #dbms.connector.bolt.tls\_level</span>=<span style="color: #000000;">OPTIONAL #dbms.connector.bolt.listen\_address</span>=<span style="color: #800080;">0.0</span>.<span style="color: #800080;">0.0</span>:<span style="color: #800080;">7687</span><span style="color: #000000;">

HTTP Connector. There must be exactly one HTTP connector.

dbms.connector.http.enabled</span>=<span style="color: #0000ff;">true</span><span style="color: #000000;"> #dbms.connector.http.listen_address</span>=<span style="color: #800080;">0.0</span>.<span style="color: #800080;">0.0</span>:<span style="color: #800080;">7474</span><span style="color: #000000;">

HTTPS Connector. There can be zero or one HTTPS connectors.

#dbms.connector.https.enabled</span>=<span style="color: #0000ff;">true</span><span style="color: #000000;"> #dbms.connector.https.listen_address</span>=<span style="color: #800080;">0.0</span>.<span style="color: #800080;">0.0</span>:<span style="color: #800080;">7473</span></pre>

<div class="cnblogs\_code\_toolbar"><span class="cnblogs\_code\_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="https://my.oschina.net//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div> <p><strong>四</strong>,<strong>启动Neo4j程序</strong></p> <p><strong>1,通过控制台启动Neo4j程序</strong></p> <p>点击组合键:Windows+R,输入cmd,启动DOS命令行窗口,切换到主目录,以管理员身份运行命令:</p> <div class="cnblogs\_code"> <pre>neo4j.bat console</pre> </div> <p>如果看到以下消息,说明neo4j已经开始运行:</p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170519111519463-791779623.png" alt=""></p> <p><strong>2,把Neo4j安装为服务(Windows Services)</strong></p> <p>安装和卸载服务:</p> <div class="cnblogs\_code"> <pre>bin\\neo4j install-<span style="color: #000000;">service bin\\neo4j uninstall</span>-service</pre> </div> <p>启动服务,停止服务,重启服务和查询服务的状态:</p> <div class="cnblogs\_code"> <pre><span style="color: #000000;">bin\\neo4j start bin\\neo4j stop bin\\neo4j restart bin\\neo4j status</span></pre> </div> <p><strong>五,打开Neo4j集成的浏览器</strong></p> <p><strong>1,Neo4j浏览器</strong></p> <p>Neo4j服务器具有一个集成的浏览器,在一个运行的服务器实例上访问&nbsp;“http://localhost:7474/”,打开浏览器,显示启动页面</p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170518190726760-268665394.png" alt=""></p> <p>默认的host是bolt://localhost:7687,默认的用户是neo4j,其默认的密码是:neo4j,第一次成功登陆到Neo4j服务器之后,需要重置密码。</p> <p>访问Graph Database需要输入身份验证,Host是Bolt协议标识的主机。</p> <p><strong>2,在Neo4j浏览器中创建节点和关系</strong></p> <p>示例,编写Cypher命令,创建两个节点和两个关系:</p> <div class="cnblogs\_code"> <pre>CREATE (n:Person { name: <span style="color: #800000;">'</span><span style="color: #800000;">Andres</span><span style="color: #800000;">'</span>, title: <span style="color: #800000;">'</span><span style="color: #800000;">Developer</span><span style="color: #800000;">'</span> }) <span style="color: #0000ff;">return</span><span style="color: #000000;"> n; CREATE (n:Person { name: </span><span style="color: #800000;">'</span><span style="color: #800000;">Vic</span><span style="color: #800000;">'</span>, title: <span style="color: #800000;">'</span><span style="color: #800000;">Developer</span><span style="color: #800000;">'</span> }) <span style="color: #0000ff;">return</span><span style="color: #000000;"> n; match(n:Person{name:</span><span style="color: #800000;">"</span><span style="color: #800000;">Vic</span><span style="color: #800000;">"</span>}),(m:Person{name:<span style="color: #800000;">"</span><span style="color: #800000;">Andres</span><span style="color: #800000;">"</span>}) create (n)-\[r:Friend\]-&gt;(m) <span style="color: #0000ff;">return</span><span style="color: #000000;"> r; match(n:Person{name:</span><span style="color: #800000;">"</span><span style="color: #800000;">Vic</span><span style="color: #800000;">"</span>}),(m:Person{name:<span style="color: #800000;">"</span><span style="color: #800000;">Andres</span><span style="color: #800000;">"</span>}) create (n)&lt;-\[r:Friend\]-(m) <span style="color: #0000ff;">return</span> r;</pre> </div> <p>在$ 命令行中,编写Cypher脚本代码,点击Play按钮,点击创建第一个节点,</p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170519113705572-686462412.png" alt=""></p> <p>在第一个节点创建之后,在Graph模式下,能够看到创建的图形,继续编写Cypher脚本,创建其他节点和关系</p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170519113200713-980365925.png" alt=""></p> <p>在创建完两个节点和关系之后,查看数据库中的图形:</p> <p><img src="https://images2015.cnblogs.com/blog/628084/201705/628084-20170519113515744-460165805.png" alt=""></p> <p>后续,我会继续分享我学习Neo4j图形数据库、Cypher脚本和相应的驱动程序的笔记,敬请期待。</p> <p>&nbsp;</p> <p>推荐书籍:《Neo4j实战》,原著是《Neo4j in Action》</p> <p>官方手册:</p> <ul> <li><a href="https://neo4j.com/docs/operations-manual/3.2/" target="\_blank">The Neo4j Developer Manual v3.2</a></li> <li><a href="https://neo4j.com/docs/operations-manual/3.2/" target="\_blank">The Neo4j Operations Manual v3.2</a></li> </ul> <p>&nbsp;</p> <p><h3>2019年5月16日更新</h3></p> <p>本机使用的使用步用配置防火墙端口号</p> <p>参考文档:</p> <p><a href="http://www.infoq.com/cn/articles/graph-nosql-neo4j" target="\_blank">图形数据库、NOSQL和Neo4j</a></p> <p><a href="http://www.cnblogs.com/loveis715/p/5277051.html" target="\_blank">图形数据库Neo4J简介</a></p> <p><a href="http://www.datayuan.cn/article/6397.htm" target="\_blank">在选择数据库的路上,我们遇到过哪些坑?(一)</a></p> <p><a href="http://www.datayuan.cn/article/6399.htm" target="\_blank">在选择数据库的路上,我们遇到过哪些坑?(二)</a></p> <p><a href="http://blog.csdn.net/gtuu0123/article/details/6384375" target="\_blank">neo4j使用指南</a></p></div>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )