oracle与neo4j,Neo4j学习(1):Neo4j是什么

本文介绍了图数据库的概念,以Neo4j为例,阐述了图数据库如何用节点、关系和属性来存储数据。 Neo4j是一个支持完整事务的图形数据库,其查询语言Cypher已成为事实标准。文章还探讨了图数据库的遍历机制,以及如何在节点和关系中设置属性。此外,还展示了如何构建和查询简单的图数据模型,如社会化网络图。
摘要由CSDN通过智能技术生成

1. 什么是图数据库

图数据库用图来存储数据,是最接近高性能的一种用于存储数据的数据结构方式之一。

1.1 一个图由无数的节点和关系组成

最简单的图是单节点的,一个记录,记录了一些属性。一个节点可以从单属性开始,成长为成千上亿,虽然会有一点点麻烦。从某种意义上讲,将数据用关系连接起来分布到不同节点上才是有意义的。

1.2 用 Traversal 进行数据库查询

一次 Traversal, 你可以理解为是你通过一种算法,从一些开始节点开始查询与其关联的节点,比如你想找到 “我朋友喜欢但我不喜欢的那首音乐是什么呢?”,又或者 “周星驰和巩俐合作过哪些电影?”等等问题。

1.3 Neo4j是一个图数据库

Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边(Edge)和属性(Property)组成的,顶点和边都可以设置属性,顶点也称作节点,边也称作关系,每个节点和关系都可以由一个或多个属性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。

它包括如下几个显著特点:

完整的ACID支持

高可用性

轻易扩展到上亿级别的节点和关系

通过遍历工具高速检索数据

其他的图形数据库还包括Oracle NoSQL数据库,OrientDB,HypherGraphDB,GraphBase,InfiniteGraph,AllegroGraph。

2. 图数据库模型

2.1 节点

构成一张图的基本元素是节点和关系。在Neo4j中,节点和关系都可以包含属性

AAffA0nNPuCLAAAAAElFTkSuQmCC

1.png

下面让我们认识一个最简单的节点,他只有一个属性,属性名是name,属性值是Marko:

AAffA0nNPuCLAAAAAElFTkSuQmCC

2.png

2.2 关系

节点之间的关系是图数据库很重要的一部分。通过关系可以找到很多关联的数据,比如节点集合,关系集合以及他们的属性集合。

AAffA0nNPuCLAAAAAElFTkSuQmCC

3.png

一个关系连接两个节点,必须有一个开始节点和结束节点。

AAffA0nNPuCLAAAAAElFTkSuQmCC

4.png

因为关系总是直接相连的,所以对于一个节点来说,与他关联的关系看起来有输入/输出两个方向,这个特性对于我们遍历图非常有帮助:

AAffA0nNPuCLAAAAAElFTkSuQmCC

5.png

关系在任一方向都会被遍历访问。这意味着我们并不需要在不同方向都新增关系。而关系总是会有一个方向,所以当这个方向对你的应用没有意义时你可以忽略方向。特别注意一个节点可以有一个关系是指向自己的:

AAffA0nNPuCLAAAAAElFTkSuQmCC

6.png

为了将来增强遍历图中所有的关系,我们需要为关系设置类型。注意 关键字 type 在这可能会被误解,你其实可以把他简单的理解为一个标签而已。

例1:有两种关系的最简单的社会化网络图

AAffA0nNPuCLAAAAAElFTkSuQmCC

7.png

2.3. 属性

节点和关系都可以设置自己的属性。属性是由Key-Value键值对组成。

例2:包含两个属性的节点

AAffA0nNPuCLAAAAAElFTkSuQmCC

9.png

例3:包含属性的关系

AAffA0nNPuCLAAAAAElFTkSuQmCC

8.png

这里Emil->Johan的关系,包含了属性“since:2001”,Emil->Ian的关系,包含了属性”rating:5”

2.4 路径

路径由至少一个节点,通过各种关系连接组成,经常是作为一个查询或者遍历的结果。

AAffA0nNPuCLAAAAAElFTkSuQmCC

10.png

最短的路径是0长度的像下面这样:

AAffA0nNPuCLAAAAAElFTkSuQmCC

11.png

长度为1的路径如下:

AAffA0nNPuCLAAAAAElFTkSuQmCC

12.png

2.5. 遍历(Traversal)

遍历一张图就是按照一定的规则,跟随他们的关系,访问关联的的节点集合。最多的情况是只有一部分子图被访问到,因为你知道你对那一部分节点或者关系感兴趣。

Neo4j提供了遍历的API,可以让你指定遍历规则。最简单的设置就是设置遍历是宽度优先还是深度优先。

作者:海天一树X

链接:https://www.jianshu.com/p/53dfcae6331c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值