图数据库初探——2. neo4j安装和简单使用

1. 在windows下安装

由于neo4j是使用java写的,所以必须有java的jdk/jre环境。可以先看看本机有没有
在这里插入图片描述
由于我之前已经配置过java了,所以这里就不记录了,可以参考下面的文章(有详细的java安装说明)


1.1 neo4j不同版本说明

开始安装neo4j,按照官网的提示,发现了以下内容,链接
在这里插入图片描述
另外,还看到了这里
在这里插入图片描述

  • Neo4j AuraDB是云服务的,零管理员,云开发者的图形数据库。(不知道干啥用😶)
  • Sandbox是把数据库最重要的部分作为一个沙盒,让你去体验探索的。
  • Neo4j Server就是通常大家使用的,包括社区Community免费版和专业Enterprise 收费版,另外似乎前几年才推出Neo4j Desktop版本。
    • desktop和server的关系,类似于mysql一开始只有服务器版本,但是后来在windows中,也附带了一个mysql workbench。
    • 下载destop版本,其实就相当于server版本多一个界面。。用起来会方便

参考:


1.2 下载安装neo4j的desktop版本

首先需要注册登陆账号,
在这里插入图片描述
填写后页面会跳转,这里给出的激活码要记住,要么就不要关页面。
在这里插入图片描述
下载速度可能会比较慢,所以我用了三个浏览器,第一选择谷歌,第二360极速,第三Edge

google
在这里插入图片描述
360极速
在这里插入图片描述

Edge
在这里插入图片描述
所以建议直接使用Edge浏览器下载。。。可以看到,安装包挺大的。

双击安装,只有选择neo4j desktop这个地方需要切换文件夹,其他都没什么问题。


安装之后启动,启动,只需要配置一下之后数据文件的位置即可。

另外,在这里填写下载之后给出的key
在这里插入图片描述
弄完之后显示以下进度条:
在这里插入图片描述
安好之后,就可以看到这样的界面了
在这里插入图片描述

1.3 启动之后遇到的问题

问题1: --allow-file-access-from-files

An error occurred while processing deep link: Invalid URL: --allow-file-access-from-files
The following logs may help you diagnose the issue:
Desktop logs

查看对应的logs文件,位于C:\Users\yourname\.Neo4jDesktop\log.log。查看其中的信息,最后可以看到

[2021-11-30 13:49:04.293] [info]  Starting Neo4j Desktop 1.4.9 @ Windows_NT 10.0.19042
[2021-11-30 13:49:04.425] [error] Protocol Manager error TypeError [ERR_INVALID_URL]: Invalid URL: --allow-file-access-from-files
    at onParseError (internal/url.js:259:9)

可以看到,问题出在权限,故启动软件时,右击,以管理员身份运行。不再报错


问题2,卡在preparing application这步一直转圈
查看logs文件,看到以下信息:

[2021-11-30 13:54:48.294] [info]  Online check request: https://dist.neo4j.org/neo4j-desktop/win/latest.yml
[2021-11-30 13:54:53.304] [error] Online check error: {
  name: 'TimeoutError',
  message: 'Promise timed out after 5000 milliseconds',
  stack: 'TimeoutError: Promise timed out after 5000 milliseconds\n' +
    '    at Timeout._onTimeout (C:\\software\\neo4j\\Neo4j Desktop\\resources\\app.asar\\node_modules\\p-timeout\\index.js:27:54)\n' +
    '    at listOnTimeout (internal/timers.js:554:17)\n' +
    '    at processTimers (internal/timers.js:497:7)'
}
........

[2021-11-30 14:44:39.904] [info]  Online check request: https://dist.neo4j.org/neo4j-desktop/win/latest.yml
[2021-11-30 14:44:40.992] [info]  Online check response: 200 version: 1.4.9
files
[2021-11-30 14:45:19.914] [info]  Online check request: https://dist.neo4j.org/neo4j-desktop/win/latest.yml
[2021-11-30 14:45:20.509] [info]  Online check response: 200 version: 1.4.9
files
[2021-11-30 14:45:59.920] [info]  Online check request: https://dist.neo4j.org/neo4j-desktop/win/latest.yml
[2021-11-30 14:46:01.149] [info]  Online check response: 200 version: 1.4.9
files

不断重复这样的信息。。所以应该是第一次请求错误,导致后面一直没有再去发送请求了。
所以重启,重启之后,直接就进入到软件界面了,good😁

2. 基本使用

  • 进入neo4j的desktop界面之后,如果仔细观察,会发现,其实还在安装一些插件。而且整个给人的感觉很熟悉,也是electron写的,使用ctrl+shift+I就可以调出开发者工具了
  • 而neo4j bloom,browser这些UI app也都是以插件形式存在,更新的。

这里先介绍整个界面和功能。参考:Neo4j Desktop User Interface Guide

2.1 neo4j desktop介绍

Neo4j Desktop 是一个可安装的应用程序,可帮助您使用 Neo4j,无论您是刚入门还是有过 Neo4j 经验。对于新用户,它旨在帮助您在本地学习和试验 Neo4j,包括您开始所需的一切。一旦您了解了 Neo4j,桌面将成为您将使用 Neo4j 的项目的本地开发环境。
Neo4j 图形数据库的开发者版许可证包含在 Neo4j Desktop 中。开发人员版提供 Neo4j 企业版的所有功能和特性,供个人在单台机器上开发使用。

可以在本地管理很多数据库,也可以连接到远程服务做管理
每个通过桌面管理的数据库服务器都可以通过 UI 进行配置、升级和维护,无需命令行。只需单击一下即可安装流行的 Neo4j 扩展程序,例如APOC或Graph Data Science库。
与 IDE 插件类似,Graph Apps是辅助 Web 应用程序,可以更轻松地与 Neo4j 交互。它们涵盖了使用 Neo4j 浏览器和 Bloom 进行可视化和查询、关系数据库的导入工具以及用于查询日志分析器的监控工具。
Neo4j Desktop 和 Graph Apps 都提供自动更新。

注意,乱点看到了刚刚的秘钥。。。这东西会过期的
在这里插入图片描述
有效期1年。。自你激活开始,也就是可以感受一年的商业版,过期之后还是只能回到社区版server

2.2 基本说明

2.2.1 介绍

1.4.1版本似乎默认自带一个电影演员数据库,类似下面
在这里插入图片描述
但是我安装的这个1.4.9版本,没有这个数据库,如果想要看的话,可以根据这个项目在github上的提示,自己在桌面版本导入一下。


虽然没有默认的这个,但是提供了其他可以在线配置的demo数据库,Projects->New->import sample project,自己选一个有兴趣的进行导入。
在这里插入图片描述
从上到下,分别是

2.2.2 手动安装导入

这里,我选择fraud-detection这个图数据库,如果通过neo4j desktop安装很慢,可以选择从github上下载下来,然后手动导入。这里示范一下:
在这里插入图片描述

  • 可以看到,这个项目其实不小,差不多90MB,所以指望通过desktop内置下载,不太现实,我是没有等到,所以自己手动来了。
  • 主要是data文件夹中有三个.dump文件,每个文件差不多30MB(不到30,猜测是因为github无法直接上传25MB以上的大文件)

下载好之后,直接在界面上,Create project from directory,选择刚刚项目位置,就直接创建了
在这里插入图片描述
就可以看到类似下面的界面
在这里插入图片描述
在这里插入图片描述
选择40这个dump数据,右击Create new DBMA from dump

DBMS,其实就是数据库管理系统,database management system。如果使用的是server版本,一般会进行以下配置

dbms.active_database= 设置当前使用的数据库文件

填写名称和密码(类似数据库管理员密码,如果怕自己忘了,就123456,反正是在本地,测试使用的话,没啥问题,又没啥敏感数据,都是toy)
在这里插入图片描述
创建好之后,点击start,稍等一会,就会看到
在这里插入图片描述
当start创建的DBMS之后,Graph DBMS的状态从黄色的OPENNING变成绿色的ACTIVE之后
在这里插入图片描述
这时候访问:http://localhost:7474,就可以看到
在这里插入图片描述
这里用户名是neo4j,密码是刚刚创建DBMS时候的密码,123456(填自己的),登陆之后就显示
在这里插入图片描述
这其实就是下面的neo4k browser,就是内置了一个浏览器。。。

2.2.3 Neo4j Browser

第一次open的时候会提示:
在这里插入图片描述

Neo4j 浏览器是一个命令驱动的客户端,作为基于 Web 的 shell 环境。 它非常适合运行临时图查询,具有足够的能力来构建基于 Neo4j 的应用程序的原型。

具有以下优点:

  1. 为开发人员打造
  2. 用于编写和运行 Cypher 图查询。
  3. 任何查询结果都可以导出表格结果。
  4. 包含节点和关系的查询结果的图形可视化。
  5. 方便地探索 Neo4j 的 HTTP API (REST)。

在这里插入图片描述
仔细看看,其实就是个命令行CLI工具。这里显示的内容就是两条特定的命令。

参考

有几个特殊的命令,

Guide CommandDescription
:play introNavigating Neo4j Browser
:play conceptsProperty graph model concepts
:play cypherCypher basics - create, match, patterns
:play movie-graphQueries and recommendations with Cypher - movie use case
:play northwind-graphTranslate and import relational data to graph
:play startMain guide (loads when Browser opens) - concepts, write-code, system info
:play write-codeShows both guides for movie graph and northwind graph

自己可以输入进去看看,比如
也可以自己查询一些和fraud-detection数据库相关的东西,查看下面


2.2.4 Neo4j Bloom

参考:https://neo4j.com/developer/neo4j-bloom/

Neo4j Bloom 是一种数据探索工具,可将图形中的数据可视化,并允许用户在无需任何查询语言或编程的情况下导航和查询数据。
用户可以编写类似于自然语言问题的模式来检索数据并遍历图形的各个层。 当发现缺失信息或错误数据时,Bloom 还允许适当的用户编辑、更新或更正图形。

注意:Bloom的一切操作都是基于perspective(视图)的,因此使用Bloom,需要为GRAPH创建视图(或者说基于某个GRAPH导入一张视图)

如果对视图这个词比较生疏,可以去看看浅谈数据库三大模式:外模式、概念模式和内模式

这里的Bloom相当于是 外模式


Bloom加载的时候,会帮我们构建一个默认视图(Perspective)。
在这里插入图片描述
点击那个9个圈的蓝色图标,就可以看到
在这里插入图片描述
视图,其实就是选择一部分节点和边,去查看它们的关系

在这里插入图片描述
使用的时候也很简单,直接在框里选择,会给你提示,要看哪一条线上的,回车就可以RUN了
在这里插入图片描述
还可以放大看每个点的信息
在这里插入图片描述
另外,如果不想让client显示名字,而是显示id,可以去侧边栏进行修改
在这里插入图片描述如果只想看一个点,那么选中该点,右击dismiss other nodes,那么就只会剩下一个点了
在这里插入图片描述
然后可以查看这个点和其他所有点的关系
在这里插入图片描述
如果想看其他的透视图,那么需要先把当前的节点和关系数据清除,不然会叠加在一个视图中。
右击,clear scene即可
在这里插入图片描述

还有一些没有列出,有兴趣可以自己去看看官方文档

2.2.5 Neo4j ETL Tool

一般ETL是:

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

根据:https://neo4j.com/developer/neo4j-etl/

可知,neo4j中提供的ETL Tool的主要功能,

  • 建立与关系数据库的连接(比如通过jdbc等)
  • 选择from源数据库(关系数据库)和to目标数据库(neo4j图数据库),同时查看数据模型并调整,将关系数据实际转换为图形数据,类似这样
    在这里插入图片描述
  • 导入数据

2.2.6 APOC

  • 在 APOC 发布之前,开发人员需要为 Cypher 或 Neo4j 数据库尚未实现支持的通用功能编写自己的过程和函数。每个开发人员可能会编写自己的这些函数版本,从而导致大量重复。
  • 所以neo4j的一个开发人员创建了APOC 库,作为通用程序和函数的标准实用程序库。这允许跨平台和行业的开发人员将标准库用于通用过程,并且仅针对业务逻辑和用例特定需求编写自己的功能。
  • APOC 库被认为是 Neo4j 最大和使用最广泛的扩展库。它包括 450 多个标准程序,提供实用程序、转换、图形更新等功能。它们得到了很好的支持,并且很容易作为单独的函数运行或包含在 Cypher 查询中。在开始为应用程序编写临时函数之前,请务必先检查 APOC,看看它是否存在!

在这里插入图片描述
在DMBS中进行安装,由于是github,所以按起来可能会有点慢。
按照github上安装文档的说法,
在这里插入图片描述
需要等到提示Installed的信息才算是安装好了。。我应该等了有

实在觉得慢的,可以去看看用户目录下的日志,会有类似这样的记录
在这里插入图片描述
起码是在下载的,就很让人欣慰了。。没事就去看一眼,可能会有timeout报错,然后停止下载,没有任何提示,需要手动重启desktop,再去开始下载。

下载好的话,logs会有如下日志
在这里插入图片描述
显示就是这样
在这里插入图片描述


参考:

3 问题解决

3.1 Database ‘neo4j’ is unavailable. Run

💢💢💢💢无效解决,可以借鉴吧maybe

参考:Database ‘neo4j’ is unavailable. Cannot reset neo4j database
For community edition there was no option dbms.active_database but all was required was ending processes for port 7474 and deleting db. Connection to port 7474 was not immediately failing so that means it was hanging. Attempting to end processes with taskkill did not work so it required me to download “Process Hacker”. Run netstat -ano | findstr :7474 in command line. End all processes found from command from process hacker. Delete neo4j db under neo4j-community/data/databases/neo4j (or backup if you want) as you suggested and then run neo4j again. Leaving this here for anyone with same issue.
大意就是:

对于community edition,没有dbms.active_database选项,但只需要结束端口7474的进程并删除数据库。与端口7474的连接并没有立即失效,这意味着它处于挂起状态。试图用task kill结束进程不起作用。所以需要在命令行中运行netstat-ano | findstr:7474。结束从中找到的所有进程。同时建议删除neo4j/data/databases/neo4j下的neo4j数据库(或备份,如果需要),然后再次运行neo4j。
(桌面版本其实本质还是社区版)

netstat -aon|findstr "7474"
# 没有找到相应的端口。windows下程序关了,这个端口也就释放了

删除对应的文件,其实不是很好找,在这里插入图片描述
发现这个,其实就包含了DBMS的设置(server版本的配置文件),logs(日志文件,纠错最关键的东西),Open folder,点击这个找到了desktop版本的neo4j数据集位置:

安装时选择的data文件夹/relate-data/dbmss/dbms-XXXXX/data/databases/,就可以看到
在这里插入图片描述
删除其中的neo4j文件夹,重启desktop。无效,继续看。


✅✅✅✅有效解决
点击这个DBMS自带的logs,输出信息和我看的那个用户目录文件夹下的logs内容还不一样。报错:
在这里插入图片描述

2021-12-01 05:40:38.464+0000 ERROR [neo4j/d4b0f5fc] Error upgrading database. Database left 
intact and will likely not be able to start: 
org.neo4j.storageengine.migration.UpgradeNotAllowedException: Neo4j cannot be started because 
the database files require upgrading and upgrades are disabled in the configuration. Please 
set 'dbms.allow_upgrade' to 'true' in your configuration file and try again.

大意就是配置文件有个项目错了,去改改。把dbms.allow_upgrade=true这行前面的注释去掉。无效,继续解决,报错neo4j offline

所以从回收站把刚刚删除的neo4j还原回去。。。所以刚刚错误不是因为端口或者是数据库占用,就是因为上面那个配置项

再去执行neo4j$ CALL db.schema.visualization();就成功了,不会报错了

3.2 端口占用

像linux一样,如果一个DBMS没有stop,就关闭开另一个,那么就会出现端口占用的问题。
参考:windows7 端口查看以及杀死进程释放端口

  • 访问browser中的neo4j出错,是因为之前可能建立了project,但是没有stop,直接关闭,端口被占用。
  • 直接解决方案就是,杀掉使用该端口的程序
  • 在windows上有个好处,可以直接选择关闭程序
  • 页面就是通过查看占用端口的PID,间接杀死。

4. desktop和server对应

在这里插入图片描述
对应:
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

参考

官方文档:

neo4j中文社区:

个人博客专题:

另外,这个人的cnblog博客记录也非常详细,但是没有放到一个专题里,不太好找,包括以下:

这个博主的博客的参考包括一本书:Neo4j实战

  • 8
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
neo4j是一个基于数据库的开源软件,用于存储和处理大规模结构数据。 安装neo4j非常简单,只需要下载适合您操作系统的安装包,并按照安装向导进行操作即可。安装完成后,您可以通过访问http://localhost:7474来打开neo4j的浏览器界面,并进行数据库的操作。 药材供应谱是一个基于neo4j构建的示例谱。该谱用于存储和展示药材的供应链关系。假设我们有一些药材,每个药材有其自身的属性,如名称、功效等。同时,每个药材之间存在供应关系,即某些药材可以作为其他药材的原材料。 在neo4j中,我们可以为每个药材创建一个节点,并为其添加属性。例如,在谱中,我们可以创建一个名为“当归”的节点,它的属性可以包括名称为“当归”以及功效为“活血调经”的参数。 除了节点之外,我们还可以创建关系来表示不同药材之间的供应链关系。例如,我们可以创建一个关系“供应”,连接“当归”和“川芎”,表示“川芎”是“当归”的供应商。 通过使用数据库,我们可以轻松地查询和探索药材的供应链关系。例如,我们可以查找所有供应某个特定药材的供应商,或者查找某个药材的全部供应物。 总而言之,neo4j是一个功能强大的数据库,可以用于构建知识谱。药材供应谱是其中的一个示例,它可以帮助我们更好地理解和管理药材的供应链关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值