暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

图数据库简介【2】-图数据库的特点及底层存储

原创 will2334 2022-01-18
4071

在之前的文章中简单的介绍了图数据库的历史、图论和图模型的内容(传送们-图数据库简介1-从图数据库的角度来看数据本身)。
这里将针对图数据库的底层存储形式和特点可以进行介绍。

存储

首先需要明确图数据库(graph database)不同于图计算引擎(graph compute engine)。

狭义的图数据库主要应用为联机事务处理OLTP(on-line transaction processing),针对数据做事务(ACID)处理,我们可以认为他是一个针对数据模型进行增删改查。其中有两个维度需要了解,一个是底层存储,一个是处理引擎。

底层存储
站在用户的角度,任何看起来像是图数据库的都可以称为图数据库(比如提供了对图数据模型进行增删改查的底层为键值型数据库),但是不局限于逻辑层,向更深的物理层探究我们会发现,不同图数据库的底层存储机制可能存在很大不同。根据存储和处理模型的不同,图数据库之间也会做一些区分。比如,一些图数据库使用原生图存储,这类存储是经过优化的,专门为了存储和管理图数据而设计的。这类数据库一般称为原生图数据库,比如Galaxybase,Neo4j,tigergraph。一般认为原生数据库需要采用免索引临接。

还有一些图数据库依赖关系引擎将图数据存储在关系型数据库的表中,通过在数据实际所在的底层存储系统之上增加一个具备图语义的抽象层来进行数据交互。也有使用键值型存储方式或文档型存储方式作为底层存储的图数据库。这些类型图数据库统称为非原生存储的图数据库,比如ArrangoDB, OrientDB, JanusGraph等。

原生图存储相比非原生更具有性能优势。原生图数据库底层存储不依赖第三方存储系统,计算和存储一体化,极大的简化了系统架构。开发人员和运维人员可以更关注业务水平的提升,避免花费大量时间在底层存储的管理和运维。同时,原生图数据库不需要和第三方技术黑盒进行沟通,少了这部分的通讯开销,系统的性能也更高。

图计算引擎
图计算引擎用于联机分析处理OLAP(On-Line Analytical Processing),进行数据的批量分析,进行全局算法,比如问到一个社交网络中,平均每个人认识的人有多少。因为偏重于全局查询,图计算引擎通常为扫描和批处理大规模信息做过优化,一部分图计算引擎有自己的图存储层,大部分的图计算引擎只负责把外部数据导入,然后返回结果到其他地方存储。有的图数据库采用自研的图引擎,这样可以达到和底层存储最大的调优,但是这样的开发成本比用第三的图计算引擎要高。

image.png

免索引邻接(Index-free adjacency)

免索引邻接是一种原生图数据库的存储方式。数据查找性能取决于从一个特定节点到另一个节点的访问速度。由于免邻索引的存储方式,节点具有直接的物理 RAM 地址并在物理上指向其他相邻节点,因此可以实现快速检索。具有免索引邻接的原生图存储系统不必通过任何其他类型的数据结构来查找节点之间的链接。一旦检索到其中一个节点,图中与其直接相关的节点就会存储在缓存中,这使得数据查找甚至比用户第一次获取节点时更快。然而,这种优势是有代价的。免邻索引牺牲了不使用图遍历的查询的效率。原生图数据库使用免邻索引来处理对存储数据的 CRUD (增删改查)操作。

这里要强调,是否采用免索引邻接可以从一个工程的角度来看,是工程的取舍,要从需求的角度来看是否需要采用这种架构的图数据库。以更加容易理解的方式进行解释,免索引邻接可以认为在物理存储层,数据以图的形式进行存储,由于关系也进行了存储,进行关联查询的时候可以沿着关系指针进行游走。
image.png

与关系型数据库的对比

在关系型数据库设计的时候需要进行严格的数据规范化,将数据分成不同的表并删除其中的重复数据,这种规范化保证了数据的强一致性并支持ACID事务。然而,这也对关系查询带来的限制。
快速的实现逐行访问是关系型数据库的设计原理之一,当数据的数据之间形成复杂的关联时,跨表的关联查询增加,就会出现问题。虽然可以通过将存在不同表中的不同属性进行关联从而实行复杂查询,但是开销是非常大的。
与关系型数据库相比,图数据库把关系也映射到数据结构中,对于关联度高的数据集查询更快,尤其适合那些面向对象的应用程序。同时图数据库可以更自然的扩展到大数据应用场景,因为图数据库Schema更加灵活,所以更加适合管理临时或不断变化的数据。

关系型数据库对大量的数据元素进行相同的操作时通常更快,因为这是在其自然的数据结构中操作数据。图数据库在很多方面比关系型数据库更具有优势,而且变得越来越流行,但是图数据库和关系型数据库并非是简单的替代关系,在具体应用场景中图数据库可以带来性能的提升和降低延迟才是适合的应用场景。

最后修改时间:2022-01-19 14:37:51
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论