必赢365net手机版一些优缺点

本篇将介绍Neo4j的设置,入门,和温馨使用了朝气蓬勃段时间后开掘的独特之处劣点,争取简洁和实用。

即使您是第三遍接触Neo4j,况兼在此以前也都没接触过相通的Graph
Database的话,建议先浏览一下自己事先的风度翩翩篇博客:缘何选取图形数据库,为啥接收Neo4j?。毕竟应该在做生龙活虎件事以前要想精晓为啥要做是吧。


1. 安装

上Neo4j官网,下载community版,点击安装就可以。很简短没怎么可说的。


2. 入门

既是是入门,那就从轻巧开端,一步一步熟知Neo4j。

2.1 图形操作分界面

运维Neo4j后,在浏览器中张开网页:,
就能够进入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就自动为大家成立好了数据库。

必赢365net手机版 1

  • 创办唯大器晚成性限定,同一时间具有索引效果,形似关系型数据库中的主键。注意,这只好在数据库中还未有插入数据时设置。

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. 最无法令人忍受的正是不快的插入速度。可能是因为成立节点和边的时候必要保留一些附加音信(为了查询服务卡塔 尔(英语:State of Qatar)。不知晓是或不是本人代码的主题材料,插入10000个节点,10000条边花了周围10分钟…
  2. 重特大节点。当有一个节点的边比较多时(见怪不怪于大V卡塔尔国,有关这一个节点的操作的进程将大大收缩。那一个主题素材很已经有了,官方也说过会管理,然近年来后还是不能够让人看中。
  3. 巩固数据库速度的常用方法便是多分配内部存款和储蓄器,可是看了官方操作手册,貌似无法直接设置数据库内部存款和储蓄器占用量,而是必要计算后为其”预先留下“内存…

4. 适用途景

出于其猛烈的得失,Neo4j相符积攒”改进超少,查询非常多,未有比超大节点“的图数据。

此外,针对Neo4j的久治不愈的疾病,有生机勃勃款应用混合索引的数据库Arangodb恐怕是三个不易的思谋对象。依照其官方网站的印证,Arangodb不仅仅具有相仿图形数据库的长处,并且在各样操作的速度上抢先于Neo4j。可知:原理上印证为什么Arangodb更加快;Arangodb与此外六款数据库的属性相比较。

转发请评释出处:


Leave a Comment.