zoukankan      html  css  js  c++  java
  • 图数据库Neo4j的介绍与使用

    Neo4j 是一个高性能的 NoSQL 图形数据库,它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j 也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
    请添加图片描述
    接下来我们来一起学习一下Neo4j的安装和使用方法吧!

    知识点
    图数据库的概念
    Neo4j 的安装
    Neo4j 数据迁移
    Neo4j Browser 的使用

    图数据库的概念

    图数据库的基本概念是图,在这里我们用一个简单的例子来介绍图:

    图例
    如下就是一个图,图中包含的信息是:一位名为 Gods_Dusk 的用户,撰写了两门蓝桥云课课程,其中一门叫做 《Python 机器学习玩转 Flappy Bird 游戏》,所属学科是机器学习和 Python,另一门课程叫做《图数据库 Neo4j 基础入门》,所属学科为 Neo4j。同时该用户参加了第 23 期 Python 楼赛,获得了第二名。

    另一名用户为云课管理员,用户 ID 为 1。
    请添加图片描述

    图片描述

    • 节点

    节点通常用于表示实体,实体的概念来自哲学,现实世界中的客观事物、抽象的事件均可称之为实体。节点是组成图的最小单位。

    • 标签

    标签用于分类节点,如所有用来表示蓝桥云课课程的节点都可以使用标签:课程进行标记。在 Neo4j 中,就可以根据不同标签类型进行特定节点的查询。

    一个节点可以有多个标签。如用户 Gods_Dusk,既是蓝桥云课用户,也是蓝桥云课作者;用户 云课管理员,既是蓝桥云课用户,也是蓝桥云课员工。

    • 关系

    图中的边表示关系,关系连接两个节点,如撰写关系,将《图数据库 Neo4j 基础入门》课程和用户 Gods_Dusk 相连接起来。

    关系具有方向性,如《图数据库 Neo4j 基础入门》属于 Neo4j 类型的课程,而反之不成立,但只需要注意到关系的方向,就不需要在相反的方向上添加重复的关系,即 Neo4j 类型的课程包含《图数据库 Neo4j 基础入门》。

    被关系连接的两个节点,其中关系的起始节点被称为出节点,关系的终止节点被称为入节点。同时,一个节点的出度是指这个节点被多少关系作为出节点,同理,入度是指被多少个关系作为入节点。

    特别的是,一个节点可以有指向自己的关系,比如用户 Gods_Dusk 认识自己。

    • 关系类型

    关系与节点一样具有类型划分,但关系有且仅有一种关系类型。

    • 属性

    属性是用于描述节点和关系特性的名称 - 值对。 如一个用户,具有属性:用户名 - Gods_Dusk,用户 ID - 812252。

    • 路径与遍历

    在图中,查询过程是路径搜索与遍历的过程,如 “Gods_Dusk 写过哪些课?”,为了获得答案,就需要先从图中找到用户名为 Gods_Dusk 的节点,然后找到类型为撰写的关系,这些关系的出节点就是答案,在这里路径的搜索长度为 1。而问题“Gods_Dusk 写过的课程都是属于哪些类型?”的搜索长度为 2。

    Neo4j 安装与使用

    如果你使用的是个人环境,可以在Neo4j官网中下载对应操作系统的安装包。Windows 和 Mac 系统下有对应的桌面应用,可以直接下载安装。Linux 系统下需要下载压缩包,解压后进入 bin 目录启动程序。

    如果你在使用蓝桥云课学习相关课程,环境中已经安装了 Neo4j,无需下载可以直接使用,而且是免费的,在学编程的同学不妨试试。

    启动 Neo4j

    打开终端,输入

    sudo neo4j start
    

    即可启动 Neo4j 服务。

    同时输入:

    sudo neo4j status
    

    可以查看 Neo4j 的启动情况。

    打开浏览器,在地址栏输入 localhost:7474,就可以打开 Neo4j Browser(若网页提示连接失败,请等待片刻后再刷新网页)。Neo4j Browser 是 Neo4j 数据库面向开发人员的工具,允许开发人员执行查询语句并可视化结果。

    首次进入 Neo4j Browser 时需要重置密码,系统默认密码为 neo4j,我们将它修改为lanqiao,当然你可以随意设置。

    数据迁移

    Neo4j 提供了 neo4j-admin 来进行数据的导入导出,在迁移之前,需要停止 Neo4j 服务。

    数据导入

    # 下载其他已导出的 Neo4j 数据
    wget https://labfile.oss.aliyuncs.com/courses/4043/graph.db.dump
    # 停止 Neo4j 服务
    sudo neo4j stop
    # 导入到本地数据库中
    sudo neo4j-admin load --from=graph.db.dump --database=graph.db --force
    # 启动 Neo4j 服务
    sudo neo4j start
    

    数据导出

    # 停止 Neo4j 服务
    sudo neo4j stop
    # 导出数据到本地 /home/shiyanlou/Code 目录下
    sudo neo4j-admin dump --database=graph.db --to=/home/shiyanlou/Code
    # 启动 Neo4j 服务
    sudo neo4j start
    

    Neo4j Browser

    Neo4j Browser 中有 3 个模块,侧边栏,Cypher 编辑器与结果栏,在进入 Neo4j Browser 时结果栏会展示欢迎界面。
    请添加图片描述

    Cypher 编辑器

    Cypher 是 Neo4j 数据库的查询语言, Cypher 编辑器则用于输入和运行 Cypher 语句。

    在 Cypher 编辑器右侧有三个按钮。
    请添加图片描述
    其功能分别是:

    保存收藏输入框中的 Cypher 语句。
    清除输入框中的 Cypher 语句。
    运行输入框中的 Cypher 语句,若语句只有一行,则可以用回车键作为快捷键。

    侧边栏

    侧边栏包含一组按键,用于数据浏览和环境设置。从上至下分别是:

    数据库信息
    数据库信息一栏提供了当前图数据库概览,并展示当前用户的角色和 Neo4j 版本信息。

    在数据导入一节,我们从其他数据库中导入了一些数据,所以在点击数据库信息展示按钮时,可以展示数据库中具体统计内容,如下图所示:
    请添加图片描述
    Node Labels:展示数据库中节点数量与节点类型,在这里一共 8 个节点,节点类型有 Course,User,Teacher,Challenge 和 Category。

    Relationship Types:展示数据库中关系数量与关系类型,在这里一共 7 个关系,关系类型有 WRITE,BELONGS,PARTICIPATE。

    Property Keys:展示数据库中节点与关系的属性名,在这里属性名有 name,courseId,workingTime,userId,rank。

    Connected as:显示当前用户信息,若当前用户为管理员,则还可以进行成员管理操作。

    DBMS:显示 Neo4j 的版本与系统信息。

    单击节点、关系、属性中显示的任何一个标签,Neo4j 会运行一个快捷查询,并在结果栏可视化查询结果。

    收藏夹
    收藏夹用于收藏 Cypher 命令,同时允许用户下载收藏的语句到本地和上传本地语句。
    请添加图片描述
    文档
    Neo4j Browser 中直接内嵌了官方文档,点击相应标题就可以跳转到对应的官方文档。
    请添加图片描述
    数据库远程同步
    清空本地数据库,与云端数据库同步。
    请添加图片描述
    设置
    浏览器设置可对网页 UI,结果图形可视化进行相关的配置。
    请添加图片描述
    Neo4j 相关信息
    显示关于 Neo4j 的相关信息,包括版本号、许可证、社区以及致谢。
    请添加图片描述

    结果栏

    Neo4j Browser 以结果帧的方式,在结果栏保存每一次运行结果,允许用户直接在结果帧中进行查询后的操作。

    以点击侧边栏中节点 User 为例,在一个结果帧中,上方左侧记录了运行的 Cypher 语句 MATCH (n:User) RETURN n LIMIT 25,点击后会在 Cypher 编辑器中显示该语句,方便用户修改和复用。
    请添加图片描述
    结果帧下方的结果视图分别有:

    图视图
    以图的形式显示结果,并允许配置节点、边、文字的显示风格(如颜色,大小,显示的属性),同时图视图允许用户对结果中的图进行拖动,隐藏和二次查找操作。在点击图中节点和边时,视图的下边栏会显示对应节点和边的属性,其中 <id> 是 Neo4j 生成的自增主键。
    请添加图片描述

    图视图并不会始终出现在结果帧中,只有当查询结果可以表示为图时,才会有图视图。

    表视图
    以 JSON 格式显示结果。
    请添加图片描述
    文本视图
    以纯文本表格的形式显示结果。
    请添加图片描述
    代码视图
    显示提交的请求,Neo4j 服务器版本和地址,以及响应结果。
    请添加图片描述

    总结

    以上是 Neo4j 的简介,通过上文的学习我们初步接触了图数据库,Neo4j 及 Cypher 的基本概念,实践了对 Neo4j 的 启动,停止和数据迁移,使用和查看 Neo4j Browser 等基本操作。
    希望大家再接再厉,早日熟练运用Neo4j!
    参考资料

    如果你觉得这篇文章有用就点个赞吧!

  • 相关阅读:
    [杂题]CSUOJ1274Balls and Boxes
    [Gauss]POJ1222 EXTENDED LIGHTS OUT
    [杂题]CSUOJ1413 Area of a Fractal
    [AC自动机]HDOJ3695 Computer Virus on Planet Pandora
    [dp]POJ2559 && HDOJ1506 Largest Rectangle in a Histogram
    [TSP+floyd]POJ3311 Hie with the Pie
    [状压dp]HDOJ3182 Hamburger Magi
    [状压dp]HDOJ1565 方格取数(1)
    [dp]Codeforces30C Shooting Gallery
    树套树模版
  • 原文地址:https://www.cnblogs.com/shiyanlou/p/www-lanqiao-cn.html
Copyright © 2011-2022 走看看