开发者社区> 技术小哥哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

neo4j(图数据库)是什么?

简介:
+关注继续查看

作为一款强健的,可伸缩的高性能数据库,Neo4j最适合完整的企业部署或者用于一个轻量级项目中完整服务器的一个子集存在。

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

  • 完整的ACID支持
  • 高可用性
  • 轻易扩展到上亿级别的节点和关系
  • 通过遍历工具高速检索数据

 

 

 

 

1. 什么是图数据库?

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

 

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

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

 

1.2 用 Traversal 进行数据库查询

  一次 Traversal, 你可以理解为是你通过一种算法,从一些开始节点开始查询与其关联的节点,比如你想找到 “我朋友喜欢但我不喜欢的那首音乐是什么呢?”,又或者 “如果断电了,拿下服务器的服务会首影响?”等等问题。

 

1.3 Neo4j是一个图数据库

  Neo4j是一个有商业支持的开源图数据库。他被设计来用于拿下数据不断高速成长的数据存储,用高效的图数据结构代替传统的表设计。用Neo4j工作,您的应用将得到图的所有优越表现,以及您期望的高可靠性。

 

 

 

 

 

 

2.   图数据库模型

 

2.1 节点

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

  节点经常被用于表示一些_实体_,但依赖关系也一样可以表示实体。

 

    

 

 

 

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

                                                                       

 

 

 

 

 

2.2 关系

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

 

                                         

 

 

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

 

 

                                                

 

 

 

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

 

                       

 

 

 

 

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

 

                                                               

 

 

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

 

 

 

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

                                                           

 

 

 

 

 

 

2.3. 属性

  节点和关系都可以设置自己的属性。

  属性是由Key-Value键值对组成,键名是字符串。属性值要么是原始值,要么是原始值类型的一个数组。比如+String+,+int+和i+int[]+都是合法的

 

注意:

 null不是一个合法的属性值。Nulls能代替模仿一个不存在的Key。

 

 

                                  

 

 

 

 

 

 

 

2.4  路径

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

 

 

                             

 

 

 

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

 

                         

 

 

  • 长度为1的路径如下:

 

 

                     

 

 

 

 

 

2.5. 遍历(Traversal)

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

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

  想对遍历框架有一个深入的了解,tutorial-traversal。

  想了解更多的Java代码范例,tutorials-java-embedded-traversal。

  其他查询图的方式还有cypher-query-lang, Cypher和gremlin-plugin, Gremlin。



本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/7399168.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
我的Neo4j探索之旅 - 初识Neo4j(一)
我的Neo4j探索之旅 - 初识Neo4j(一)
44 0
Nebula 分布式图数据库介绍
Nebula 分布式图数据库介绍
186 0
Neo4j图数据库的安装与基本增删改查
Neo4j图数据库的安装与基本增删改查
72 0
Neo4j导入Aminer论文数据
前面一篇介绍了Neo4j一些比较基础的用法。这一篇笔记主要记录下在导入一个大数据集Aminer中MAG论文数据所遇到的一些问题。 数据集介绍 首先关于论文数据集的描述可以在Aminer_Open_Academic中查看,这里简单介绍一下。 有两套数据,一个是Aminer Papers, 是清华大学整理发布的论文集,MAG Papers是微软学术发布的论文数据集。 我们这里选取了MAG的部分数据集来测试导入到Neo4j中。 MAG数据集一共有9个压缩包,其中每一个压缩包里面有20个txt文件,每个txt文件中每行代表一篇论文,用json表示,mid为论文唯一id,可以作为主键使用。除了论文的基
68 0
将Neo4j数据导入到GDB
本文通过具体示例,介绍如何将现有的Neo4j数据导入到GDB中。
1664 0
Neo4j导入数据的几种方法
create语句 CREATE (a:Person {name: '张三', sex: '男'}) 如利用create批量写入,这里我使用的是scala+spark,代码如下: object Neo4jConnect { def main(args: Array[String]).
3083 0
centos neo4j 安装+远程访问配置
centos版本:CentOS release 6.9 (Final) 1. 安装 直接用yum install neo4j不可行,可能是版本库中不存在neo4j,得手动加入。
2413 0
Neo4j数据模型设计
数据模型设计是数据建模的第一步,因为Neo4j不需要模式结构定义,所以使用简单框图就可以为一个项目或应用设计数据模型。创建数据模型之后,就可以使用SDN进行数据实体建模和一些数据访问的设计。 本文选自《Neo4j全栈开发》。
5656 0
Neo4j数据库简介
作为世界先进的图数据库,Neo4j成为了时下许多互联网公司的首选。Neo4j是基于java开发的开源图数据库,也是一种NoSQL数据库。Neo4j在保证对数据关系的良好刻画的同时,还支持传统关系型数据的ACID特性,并且在存储效率,集群支持以及失效备援等等方面都有着不错的表现。近来因为实验室的项目的关系,对Neo4j有了一定的了解。同时,我也对其设计思想和架构都产生了很大的兴趣,所以写
2155 0
2010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载