图技术解读 | 区别原生与非原生图数据库

> 引言

所谓“样样皆通,样样稀松”,通常用来形容一个人擅长多个方面,但哪个方面都不出色。这话同样适用于数据库行业。

随着时代与技术的发展,数据库业内出现了各种类型的数据库,分别具备其独特的特点和适用场景。例如关系型数据库,采用表格形式存储数据,使用SQL语言进行查询,被广泛用于企业级应用和大规模结构化数据处理;非关系型数据库,采用不同的数据模型和存储方式,适用于处理大规模、高并发的数据。因此,开发团队在构建数据库管理系统(DBMS)时,必须在初期就确定数据库的优化路径、数据处理方式,从而更好应对后期所分配的存储、查询任务。

通俗的讲,好比网游打怪升级,前期选定好门派后,就要根据技术特点进行力量、根骨、攻速等技能加点。图数据库是“图优先”为宗旨的门派,为此专为“图结构而设计”的图数据库,被称为原生图数据库;而采用其它数据库进行存储或处理,仅将图模式封装在业务层的数据库,被称为非原生图数据库。

原生图数据库在设计架构、图数据存储和处理方面,较非原生图数据库存在巨大差异,前者运行更加高效,往往能更快的执行深链查询,且可扩展性强,对硬件要求低。**在本文中,我们将讨论区分原生图形数据库的关键技术特征和性能影响。**如果您作为企业项目决策者,正在评估业务所需的数据库,理解上述差异至关重要。当然,作为图数据库爱好者,也可理解不同技术路线的特征。

“图优先”特征

**在图数据库中,图优先具备两个主要特征:存储和处理。**原生图数据库旨在将原始数据以图结构进行存储和处理,保证数据上下一致,从而减少查询计算量,能更高效的完成深链、寻路、模式匹配等图算法操作。

非原生图数据库往往采用关系型、文档型、多模数据库等进行数据存储和处理,并在上层以图的呈现方式模拟图功能。其底层数据库的存储和处理并未在设计之初将“图优先”作为要求,因此非原生图数据库并不具备处理图结构数据的优势。

原生图存储和处理的特别之处

图存储指包含图数据的数据库底层结构,当其专门为存储图结构数据而构建时,被称为原生图存储。具备原生图存储的图数据库,通过使用将节点和关系彼此靠近的存储布局方式,来确保图结构数据的高效存储。当底层存储采用关系型、文档型等外部数据库进行存储时,被称为非原生图存储,它将图结构数据的节点和关系区分为互不相干的实体,最终落盘到数据库内会出现关系断联的情况,从而无法满足大规模数据存储和查询的需求。

图处理指图数据库如何进行数据处理的操作,对原生图处理的定义为:是否在处理层实现免索引邻接。免索引邻接允许快速遍历复杂的图数据集,数据库内存储有从当前节点指向下一个节点的指针,无需通过中间节点转跳的方式。

非原生图处理的图数据库,例如底层采用二维表结构进行存储,在做关联查询时通常会在关联键值上创建索引来加速性能,由于创建的是全局的索引,比如表中有一千万行数据,那么创建的索引也是一千万行,即使这个点只有一个邻居,系统也需要对这一千万行数据进行全索引扫描才能找到这个邻居,造成关系查询性能差,且索引维护成本过高的情况。

下图为采用上述模式的图数据库查询商品“安慕希”属于哪些种类的查询示意图,需要进行多遍jion操作查询数据间关联关系。
在这里插入图片描述

而原生图处理的图数据库,数据库内的每个顶点都会维护与它相邻顶点的关系,因此每个顶点都相当于与它相邻的顶点维护一个微索引,意味着查询时间和数据的整体规模无关,只与它附近的顶点数量成正比,具备快速、高效的图遍历能力。下图为原生图处理图数据库查询商品“安慕希”属于哪些种类的查询示意图,结果直观简洁。
在这里插入图片描述

此外,图数据库在处理业务时,经常碰到需要向下深链查询或向上溯源的情况,而非原生图处理的图数据库,进行反向遍历查询的成本极高,需要额外创建反向查询的索引,大大违背了图数据库能有效查询关系的设计初衷。

结语

如上文所说,难道非原生图数据库毫无可用之处吗?并非如此,在我们决定使用图数据库时,权衡二者的利弊至关重要。

当您的开发和业务团队只需处理数据量较小、关联关系简单的场景,且对查询结果没有实时返回需求时,可以选用非原生图数据库构建解决方案。

一方面,开发人员无需对数据层与处理层进行重构,只需在业务接口层构建图语义赋能一些简单的图应用,极大降低学习和二次开发的成本;另一方面,当系统要处理的数据结构比较复杂,但是没有特定的图数据模型或查询需求,非原生图数据库会更加灵活。

然而随着时间的推移,现实世界正变得更加紧密互联,需要处理的数据量也愈加庞大复杂。考虑到数据迁移和系统更迭的成本,即使一开始需要处理的数据集很小,长远来看仍然是原生图数据库更能给为企业创造数据价值。

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值