Knowledge Graph |((1)图数据库)图数据库Neo4j简介与入门简介与入门
基本概念基本概念
图数据库(Grahp Database)是基于图论实现的一种新型NoSQL数据库,它的存储结构和数据的查询方式都是以图论为
基础的,图论中图的基本元素为节点和边,在图数据库中对应的就是节点和关系。
在图数据中,数据与数据之间的关系通过节点和关系构成一个图结构并在此结构上实现数据库的所有特性,具有传统数
据库的所有功能。
与传统的关系数据库相同,图数据库的核心也是构建在一个引擎之上的,就是图计算引擎,图计算引擎是能够组织存储
大型图数据集并且实现了全局图计算算法的一种数据库核心构建。
目前较为流行的图计算引擎有两种:单机图计算引擎和分布式图计算引擎
单机图计算引擎的典型代表是Cassovary,Cassovary是一个用scala编写的基于java虚拟机的图计算引擎,在twitter上
Cassovary用来为其提供基于图的功能。
分布式图计算引擎的典型代表是pegasus和giraph,pegasus是一个运行在hadoop云计算平台之上的分布式图计算引
擎,最初他是为了google的网页数据处理而设计出来的。
图数据库与关系数据库的对比图数据库与关系数据库的对比
关系数据库的弊端关系数据库的弊端
关系数据库自上世纪80年代以来一直是数据库领域发展的动力,并持续到今天。他们两高度结构化的数据存在在一张二
维表中,并且数据组织的特性严格,在关系型数据库中,通过外键约束来实现两表或多个表之间某些记录的相互引用关系,外
键约束是关系数据库中实现两表之间相互引用必不可少的策略。但这种关系匹配的操作,会消耗大量系统的资源,如果使用多
对多的关系,则必须通过增加中间表来建立一对一的联系,这相同的增加了操作成本。
图数据模型的优势图数据模型的优势
在图数据库中,关系是最重要的元素,通过关系我们能够将节点相互关联起来,用来构造一个负责的模型。图数据库模
型中的每个节点都直接包含一个关系列表,关系列表中存放此节点与其他节点的关系记录,这些关系记录按类型和方向组织起
来,并且还可以在上保存附加属性,将关系预先保存到关系列表中的这种能力是Neo4j能够提供比关系数据库高几个量级的性
能,特别是对于复杂连接的查询,neo4j能够实现毫秒级的响应。
neo4j的体系结构的体系结构
neo4j最初的设计动机是为了更好的描述实体之间的联系,现实生活中,每个实体都与周围的其他实体有着千丝万缕的关系,
这些关系中存在着大量的潜在信息,但是传统的关系型数据库更加注重刻画实体内部的属性,实体与实体之间的关系往往需要
通过外键来实现,因此,在查询一个实体的关系时需要join操作,特别是深层次的关系查询需要大量的join操作,而join操作通
常又非常的耗时,特别是深层次的关系查询时需要大量的join操作,而join操作通常又非常的耗时,所以为了应对海量数据查
询深层关系时的性能问题、以及运算负责性,neo4j应运而生。
免索引邻接
neo4j有一个重要的特点,就是用来保证关系查询的速度,即免索引邻接属性,数据库中的每个节点都会维护与它相邻节点
的引用。因此每个节点都相当于与它相邻节点的微索引,这比使用全局索引的代价小很多,这就意味着查询时间和图的整体规
模无关,只与它附近节点的数量成正比。在关系数据库中使用全局索引引接各个节点,这些索引对每个遍历都会增加一个中间
层,因此会导致非常大的计算成本,而免索引邻接为图数据库提供了快速、高效的图遍历能力。
neo4j底层存储结构
免索引邻接是图数据实现高效遍历的关键,那么免索引邻接的实现机制就是neo4j底层存储结构设计的关键。能够支持高效