图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。

关系型数据库只对单个Join操作进行优化查询,而多重Join操作查询的性能显著下降。图形数据库适合查询关系数据,由于图形遍历的局部性,不管图形中由多少节点和关系,根据遍历规则,Neo4j只访问与遍历相关的节点,不受到总数据集大小的影响,从而保持期待的性能;相应地,遍历的节点越多,遍历速度越慢,但是变慢是线性的,这使得图形数据库不适合做海量数据统计分析。对与存在大量丰富关系的数据,遍历的性能不受图形数据量大小的影响,这使得Neo4j成为解决图形问题的理想数据库。

我的Neo4j系列的文章收录在:Neo4j

一,安装Neo4j

在安装neo4j之前,需要安装Java JRE,并配置Java开发环境,然后安装neo4j服务。

1,安装Java JRE

Neo4j是基于Java运行环境的图形数据库,因此,必须向系统中安装JAVA SE(Standard Editon)的JRE。从Oracle官方网站下载 Java SE JRE,当前的版本是JRE 8。

JDK和JRE是有区别的,JDK(Java Development Kit)是包括Java运行环境(JRE)和Java开发工具;而JRE(Java Runtime Environment)是运行Java程序时必须安装的环境。如果只是运行Java程序,那么只需要安装JRE即可;如果希望开发Java程序,那么必须安装JDK。

配置Java的环境变量,Windows系统有系统环境变量和用户环境变量,都配置,配置环境变量分两步进行:

第一步,新建JAVA_HOME变量,变量值填写jdk的安装目录,默认的安装目录是:C:\Program Files\Java\jre1.8.0_211

第二步,编辑Path变量,在Path变量值的最后输入:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

检查配置是否成功,运行cmd,输入java -version,如果显示java的版本信息,说明Java的安装和配置成功。

2,下载Neo4j安装文件

从Neo4j官网下载最新版本Neo4j 3.2 社区(Community)版本 “neo4j-community-3.2.0-windows.zip”,解压到主目录,“D:\Program Files\neo4j-community-3.2.”。

Neo4j应用程序有如下主要的目录结构:

  • bin目录:用于存储Neo4j的可执行程序;
  • conf目录:用于控制Neo4j启动的配置文件;
  • data目录:用于存储核心数据库文件;
  • plugins目录:用于存储Neo4j的插件;

3,创建ne04j的环境变量

创建主目录环境变量NEO4J_HOME,并把主目录设置为变量值。

二,Neo4j的配置

配置文档存储在conf目录下,Neo4j通过配置文件neo4j.conf控制服务器的工作。默认情况下,不需要进行任何配置,就可以启动和运行服务器。

1,核心数据文件的位置

例如,核心数据文件存储的位置,默认是在data/graph.db目录中,要改变默认的存储目录,可以更新配置选项:

  1. # The name of the database to mount
  2. #dbms.active_database=graph.db
  3.  
  4. # Paths of directories in the installation.
  5. #dbms.directories.data=data

2,安全验证,默认是启用的

  1. # Whether requests to Neo4j are authenticated.
  2. # To disable authentication, uncomment this line
  3. #dbms.security.auth_enabled=false

3,配置JAVA 堆内存的大小

  1. # Java Heap Size: by default the Java heap size is dynamically calculated based on available system resources.
  2. # Uncomment these lines to set specific initial and maximum heap size.
  3. #dbms.memory.heap.initial_size=512m
  4. #dbms.memory.heap.max_size=512m

三,网络连接配置

neo4j支持三种网络协议,默认情况下,不需要配置就可以在本地直接运行。

1,Neo4j支持三种网络协议(Protocol)

Neo4j支持三种网络协议(Protocol),分别是Bolt,HTTP和HTTPS,默认的连接器配置有三种,为了使用这三个端口,需要在Windows防火墙中创建Inbound Rules,允许通过端口7687,7474和7473访问本机。

2,连接器的可选属性

listen_address:设置Neo4j监听的链接,由两部分组成:IP地址和端口号(Port)组成,格式是:<ip-address>:<port-number>

3,设置默认的监听地址

设置默认的网络监听的IP地址,该默认地址用于设置三个网络协议(Bolt,HTTP和HTTPs)的监听地址,即设置网络协议的属性:listen_address地址。在默认情况下,Neo4j只允许本地主机(localhost)访问,要想通过网络远程访问Neo4j数据库,需要修改监听地址为 0.0.0.0,这样设置之后,就能允许远程主机的访问。

  1. # With default configuration Neo4j only accepts local connections.
  2. # To accept non-local connections, uncomment this line:
  3. dbms.connectors.default_listen_address=0.0.0.0

4,分别设置各个网络协议的监听地址和端口

HTTP链接器默认的端口号是7474,Bolt链接器默认的端口号是7687,必须在Windows 防火墙中允许远程主机访问这些端口号。

  1. # Bolt connector
  2. dbms.connector.bolt.enabled=true
  3. #dbms.connector.bolt.tls_level=OPTIONAL
  4. #dbms.connector.bolt.listen_address=0.0.0.0:
  5.  
  6. # HTTP Connector. There must be exactly one HTTP connector.
  7. dbms.connector.http.enabled=true
  8. #dbms.connector.http.listen_address=0.0.0.0:
  9.  
  10. # HTTPS Connector. There can be zero or one HTTPS connectors.
  11. #dbms.connector.https.enabled=true
  12. #dbms.connector.https.listen_address=0.0.0.0:

启动Neo4j程序

点击组合键:Windows+R,输入cmd,启动DOS命令行窗口,切换到主目录,以管理员身份运行命令

1,通过控制台启动Neo4j程序

以管理员权限启用DOS命令行窗口,输入以下命令,通过控制台启用neo4j程序

  1. neo4j.bat console

如果看到以下消息,说明neo4j已经开始运行:

2,把Neo4j安装为服务(Windows Services)

安装和卸载服务:

  1. bin\neo4j install-service
  2. bin\neo4j uninstall-service

启动服务,停止服务,重启服务和查询服务的状态:

  1. bin\neo4j start
  2. bin\neo4j stop
  3. bin\neo4j restart
  4. bin\neo4j status

五,Neo4j集成的浏览器

Neo4j服务器具有一个集成的浏览器,在启动neo4j服务之后,可以使用neo4j集成的浏览器管理图数据库。

在一个运行neo4j服务器主机上访问 “http://localhost:7474/”,显示以下的界面:

默认的host是bolt://localhost:7687,默认的用户是neo4j,默认的密码是:neo4j,第一次成功connect到Neo4j服务器之后,需要重置密码。

访问Graph Database需要输入身份验证,Host是Bolt协议标识的主机。

六,在Neo4j浏览器中创建节点和关系

下面我通过一个示例,演示如何通过Cypher命令,创建两个节点和两个关系。

  1. CREATE (n:Person { name: 'Andres', title: 'Developer' }) return n;
  2. CREATE (n:Person { name: 'Vic', title: 'Developer' }) return n;
  3. match(n:Person{name:"Vic"}),(m:Person{name:"Andres"}) create (n)-[r:Friend]->(m) return r;
  4. match(n:Person{name:"Vic"}),(m:Person{name:"Andres"}) create (n)<-[r:Friend]-(m) return r;

1,创建第一个节点

在$ 命令行中,编写Cypher脚本代码,点击Play按钮,在图数据库中创建第一个节点:

在节点创建之后,在Graph模式下,能够看到创建的图形,继续执行Cypher脚本,创建其他节点

2,创建节点之间的关系

创建节点之间的边和创建节点的操作相同,例如,创建Person节点之间(Vic-> Andres之间的Friend关系),由于Friend关系是双向的,可以继续创建Andres和Vic之间的Friend关系:

3,查看节点之间的关系

在创建完两个节点和关系之后,查看数据库中的图形:

后续,我会继续分享我学习Neo4j图形数据库、Cypher脚本和相应的驱动程序的笔记,敬请期待。

推荐书籍:《Neo4j实战》,原著是《Neo4j in Action》

官方手册:

参考文档:

图形数据库、NOSQL和Neo4j

图形数据库Neo4J简介

在选择数据库的路上,我们遇到过哪些坑?(一)

在选择数据库的路上,我们遇到过哪些坑?(二)

neo4j使用指南

Neo4j 第一篇:在Windows环境中安装Neo4j的更多相关文章

  1. 在Windows环境中安装Neo4j

    图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边( ...

  2. 番外篇1:在Windows环境中安装JDK

    他山之石,可以攻玉!欢迎关注我的微信公众号 本文作为构建第一个Java程序的番外篇一,跟大家探讨下在Windows下怎么安装JDK.由于本人没有Mac,因此如果是Mac的同学,请自行百度哦! 读前预览 ...

  3. [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse

    一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...

  4. 在Windows环境中安装并使用kafka

    [TOC] 安装部署 安装部署Java 下载需要安装的软件,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jre8-down ...

  5. .net core工具组件系列之Redis—— 第一篇:Windows环境配置Redis(5.x以上版本)以及部署为Windows服务

    Cygwin工具编译Redis Redis6.x版本是未编译版本(官方很调皮,所以没办法,咱只好帮他们编译一下了),所以咱们先下载一个Cygwin,用它来对Redis进行编译. Cygwin下载地址: ...

  6. python操作三大主流数据库(1)python操作mysql①windows环境中安装python操作mysql数据库的MySQLdb模块mysql-client

    windows安装python操作mysql数据库的MySQLdb模块mysql-client 正常情况下应该是cmd下直接运行 pip install mysql-client 命令即可,试了很多台 ...

  7. ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  8. 在 windows 环境下安装 redislive

    这是一篇在 windows 环境下安装 redislive 的教程! 项目地址:https://github.com/nkrode/RedisLive 配置文档:http://www.nkrode.c ...

  9. 在Windows系统中安装集成的PHP开发环境

    原文:在Windows系统中安装集成的PHP开发环境 刚想学php的,又不会配置复杂php的环境,可以使用集成的,目前网上提供常用的PHP集成环境主要有AppServ.phpStudy.WAMP和XA ...

随机推荐

  1. 宋宝华:关于Ftrace的一个完整案例【转】

    Ftrace简介 Ftrace是Linux进行代码级实践分析最有效的工具之一,比如我们进行一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布. Ftr ...

  2. 理解ECS的概念和Unity中的ECS设计

    组合优于继承 ecs的概念很早就有了,最初的主要目的应该还是为了改善设计. e-c-s三者都有其意义,e-c是组合优于继承,主要用以改善oo的继承耦合过重以及多继承菱形问题. oop常见设计里,每个g ...

  3. Hive的命名空间

    Hive的命名空间分为:hiveconf , system, env 和 hivevar 1.hiveconf 的命名空间指的是hive-site.xml下面配置的环境变量 2.system的命名空间 ...

  4. LeetCode算法题-License Key Formatting(Java实现)

    这是悦乐书的第241次更新,第254篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第108题(顺位题号是482).您将获得一个表示为字符串S的许可证密钥,该字符串仅包含字 ...

  5. MYSQL中文乱码以及character_set_database属性修改

    新安装MYSQL,还没有修改数据库系统编码. 之后由于创建数据库时候:create database db_name; 没有指定编码,之后发现乱码就修改各个属性之后还是乱码,便开始配置数据库属性,之后 ...

  6. OpenCV——图像处理入门:膨胀与腐蚀、图像模糊、边缘检测

    全部外部依赖项: opencv_aruco341d.lib opencv_bgsegm341d.lib opencv_calib3d341d.lib opencv_bioinspired341d.li ...

  7. 将代码托管到github服务器之SSH验证

    内容中包含 base64string 图片造成字符过多,拒绝显示

  8. ZOJ3774 Power of Fibonacci 斐波那契、二项式定理

    传送门--Vjudge 要求\(S = \sum\limits_{i=1}^n fib_i^k \mod 10^9+9\) 将通项公式\(fib_i = \frac{1}{\sqrt{5}} ((\f ...

  9. 洛谷 AT667 【天下一人力比較】

    题目链接 https://www.luogu.org/problemnew/show/AT667 题目描述啥的,都看不懂 就一句翻译: 读入若干个字符串,找到字典序第7的字符串并输出. 感谢@da32 ...

  10. 【Swift 4.0】扩展 WCDB 支持 SQL 语句

    前言 入坑 wcdb 有两个月了,整体来说还是很不错的,具体优点可以参考文档说明,由于官方明确说明不支持 SQL 只好自己写一个扩展支持一下了