Neo4j基础笔记

本文介绍了Neo4j的基础知识,包括其图结构特点、社区版与企业版的区别。重点探讨了在大规模数据下的优化策略,如通过添加索引和搭建分布式集群提高查询效率。在测试中,正确使用索引能实现查询速度的显著提升,而在分布式集群环境下,对于单个查询的优化效果并不明显,但能增强系统的稳定性和应对高并发能力。
摘要由CSDN通过智能技术生成

1. 前言

这段时间由于项目需要用Neo4j数据库,所以不得不简单学习一下。突然听到了一个以前没听到过的名字,心里好奇,网上一查,说它目前最流行的图形数据库(咱竟然没听过,个人觉得图数据库确实很优秀,但其目前还没有能广泛商用的能力,成熟度还不够)。

Neo4j的特点在于数据模型是图结构的,注意,这里并没有说数据存储也一定是图结构的。在Neo4j的世界里,就只有三样东西:实体,关系,属性(这是完全按照图的思维设计的,不同于RDF数据,neo4j里面的关系也是有属性的)。在数据存储方面,节点的类别,属性,边的类别,属性等都是分开存储的(据说可以大幅提高性能,咱也不知道为啥,有资料说其中每个节点都存了一个指向其邻居节点的指针,因此可以在O(1)时间内找到其邻居节点)。相比于关系型数据库,图数据库最大的特点就是更直观;其次,在数据量较大时,关系型数据库需要建立多张表并且需要太多连接操作。

2. 基础

对于Neo4j的入门安装以及使用此处就不做赘述了。此处提一点,Neo4j分为社区版和企业版,企业版的功能多,提供了分布式集群,但企业版貌似新版本不再开源,以后要收钱。这里为了方便以后查阅和复习,把项目中常用到的Cypher语句罗列一下(关键字我都用大写,实际不区分大小写,还有,CQL中字符串双引号单引号都可):

1.创建节点,多个属性用逗号隔开

CREATE (:Person{name:"张三"})

2.创建边,多个属性用逗号隔开。注意,这里用merge是防止重复插入边,也可以用create

MATCH (a{name:"张三"}),(b{name:"李四"}) MERGE (a)-[:同学{time:"2年"}]->(b)

3.创建索引

CREATE INDEX ON :Person(name)

4.查看索引

:SCHEMA

5.where语句,其中<>是不等于

MATCH (a:Person),(b:Person)
WHERE a.name='张三' AND b.name<>'李四'
RETURN a,b

6.更新

MATCH (n:Person{name:'张三'})
SET n.name='zhangsan'

6.删除节点和与其相连的边。Neo4j中如果一个节点有边相连,是不能只删除这个节点的。

MATCH (n:Person{name:'张三'})
DETACH DELETE n;

7.查询最短路径


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值