阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Neo4j安装&入门&一些优缺点

416次阅读
没有评论

共计 3246 个字符,预计需要花费 9 分钟才能阅读完成。

本篇将介绍 Neo4j 的安装,入门,和自己使用了一段时间后发现的优点缺点,争取简洁和实用。

如果你是第一次接触 Neo4j,并且之前也都没接触过类似的 Graph Database 的话,建议先浏览一下我之前的一篇博客:为什么选择图形数据库,为什么选择 Neo4j?。毕竟应该在做一件事之前要想清除为什么要做是吧。


1. 安装

上 Neo4j 官网,下载 community 版,点击安装即可。很简单没什么可说的。


2. 入门

既然是入门,那就从简单开始,一步一步熟悉 Neo4j。

2.1 图形操作界面

运行 Neo4j 后,在浏览器中打开网页:http://localhost:7474,即可进入 Neo4j 的图形操作界面,在里面可以直接操作数据库,也可以查看数据库的状态。

页面顶端可以直接写 Cypher 语句并运行。右侧则显示一些数据库的状态以及提供一部分操作,包括:

  • Database Information。数据库信息。节点类别,边的类别,属性(包括节点的属性和边的属性)。
  • Favorites。写好的基本数据库语句,包括创建节点,查询节点个数,边个数等。创建示例图。查看数据库的状态。
  • Documentation。各种官方文档。
  • Neo4j Browser Sync。清空本地数据库。与云端数据库同步。
  • Browser Settings。图形操作界面的设置。

2.2 Cypher 基本语句

Cypher 是 Neo4j 的数据库语言,入门的话起码得知道增删改查吧。

  • 插入节点。插入一个 Person 类别的节点,且这个节点有一个属性 name,属性值为 Andres
CREATE (n:Person {name : 'Andres'});
  • 插入边。插入一条 a 到 b 的有向边,且边的类别为 Follow
MATCH (a:Person),(b:Person)
WHERE a.name = 'Node A' AND b.name = 'Node B'
CREATE (a)-[r:Follow]->(b);
  • 更新节点。更新一个 Person 类别的节点,设置新的 name。
MATCH (n:Person {name: 'Andres' })
SET n.name = 'Taylor';
  • 删除节点和与其相连的边。Neo4j 中如果一个节点有边相连,是不能单单删除这个节点的。
MATCH (n:Person {name:'Andres' })
DETACH DELETE n;
  • 删除边。
MATCH (a:Person)-[r:Follow]->(b:Person)
WHERE a.name = 'Andres' AND b.name = 'Taylor'
DELETE r;

接着就是查询语句了,作为图形数据库,肯定要来点与众不同的查询对吧。

  • 最短路径。
MATCH (ms:Person {name:'Andres' }),(cs:Person {name:'Taylor' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;
  • 查询两个节点之间的关系。
MATCH (a:Person {name:'Andres' })-[r]->(b:Person {name:'Taylor' })
RETURN type(r);
  • 查询一个节点的所有 Follower。
MATCH (:Person {name:'Taylor' })-[r:Follow]->(Person)
RETURN Person.name;

还有更多的操作可以参考官方用户手册:官方用户手册

2.3 创建一个 Neo4j 数据库

运行 Neo4j 之后,在软件窗口可以选择数据库创建位置,之后 Neo4j 就自动为我们创建好了数据库。

Neo4j 安装 & 入门 & 一些优缺点

  • 创建唯一性约束,同时具有索引效果,类似关系型数据库中的主键。注意,这只能在数据库中还未插入数据时设置。
CREATE CONSTRAINT ON (a:Person) ASSERT a.name IS UNIQUE;
  • 创建索引。
CREATE INDEX ON :Person(name);
  • 查看所有的节点数和边数
MATCH (n) RETURN count(n);
MATCH ()-->() RETURN count(*);

还有更多的操作可以参考官方用户手册:官方用户手册

2.4 Neo4j 驱动

Neo4j 提供了数种语言的数据库驱动,比如在 Java 中,你可以这样插入一个节点:

Driver driver = GraphDatabase.driver("bolt://localhost", AuthTokens.basic("neo4j", "neo4j" ) );
Session session = driver.session();

session.run("CREATE (a:Person {name:'Arthur'})" );

session.close();
driver.close();

查询节点:

Driver driver = GraphDatabase.driver("bolt://localhost", AuthTokens.basic("neo4j", "neo4j" ) );
Session session = driver.session();

StatementResult result = session.run("MATCH (a:Person) WHERE a.name ='Arthur'RETURN a.name AS name" );
while (result.hasNext() )
{Record record = result.next();
    System.out.println(record.get("name").asString());
}

session.close();
driver.close();

3. 优缺点

使用了一段时间 Neo4j,总结一下我发现的优缺点。

优点:

  1. 数据的插入,查询操作很直观,不用再像之前要考虑各个表之间的关系。
  2. 提供的图搜索和图遍历方法很方便,速度也是比较快的。

缺点:

  1. 最不能让人忍受的就是极慢的插入速度。可能是因为创建节点和边的时候需要保存一些额外信息(为了查询服务)。不知道是不是我代码的问题,插入 10000 个节点,10000 条边花了将近 10 分钟 …
  2. 超大节点。当有一个节点的边非常多时(常见于大 V),有关这个节点的操作的速度将大大下降。这个问题很早就有了,官方也说过会处理,然而现在仍然不能让人满意。
  3. 提高数据库速度的常用方法就是多分配内存,然而看了官方操作手册,貌似无法直接设置数据库内存占用量,而是需要计算后为其”预留“内存 …

4. 适用场景

鉴于其明显的优缺点,Neo4j 适合存储”修改较少,查询较多,没有超大节点“的图数据。

另外,针对 Neo4j 的缺点,有一款使用混合索引的数据库 Arangodb 也许是一个不错的考虑对象。根据其官网的说明,Arangodb 不仅具有一般图形数据库的优点,而且在各种操作的速度上领先于 Neo4j。

Neo4j 的详细介绍 :请点这里
Neo4j 的下载地址 :请点这里

推荐阅读:

Neo4j 生成测试数据 http://www.linuxidc.com/Linux/2012-05/61466.htm

Neo4j 运行原理 http://www.linuxidc.com/Linux/2012-02/53689.htm

Neo4j High Availability 配置 http://www.linuxidc.com/Linux/2012-02/53688.htm

Neo4J 图数据库实践系列

图数据库实践系列 (一)–Neo4J 简介与安装 http://www.linuxidc.com/Linux/2013-08/88766.htm

图数据库实践系列 (二)–Neo4J 空间数据存储 http://www.linuxidc.com/Linux/2013-08/88767.htm

图数据库实践系列 (三)–Neo4j Spatial 的 REST 集成 http://www.linuxidc.com/Linux/2013-08/88768.htm

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-09/135041.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3246字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7800623
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...