为什么使用图进行关联运算比表Join更具吸引力?

简介: 为什么使用图进行关联运算比表Join更具吸引力?

GeaFlow(品牌名TuGraph-Analytics) 已正式开源,欢迎大家关注!!! 欢迎给我们 Star 哦! GitHub👉https://github.com/TuGraph-family/tugraph-analytics
更多精彩内容,关注我们的博客 https://geaflow.github.io/

作者:TuGraph

关系模型并不适合处理关系

关系模型被广泛应用于数据库和数仓等数据处理系统的数据建模,然而名称里带有关系一词的模型却并不适合处理关系。

在关系模型所用的表结构建模下,关系的运算通过Join运算来处理。但在实际使用中,特别是在流式更新的数据中,这种方式存在诸多痛点。

痛点一:关系运算成本高

表模型的重点在于多条记录统一描述为表,但本身缺乏关系描述能力,只能通过Join运算来完成关系的计算。

无论是在批或流的计算系统中,Join操作都涉及大量shuffle和计算开销。同时,Join产生的中间结果由于关联会放大多份,造成数据量指数级膨胀和冗余,存储消耗大。

在下图的实验中,我们模拟了依次执行一跳、两跳和三跳关系运算的场景。足以见得,越是复杂的多跳关系计算,关系模型中Join的性能表现越差。在总时间对比中,利用图的Match计算能够节约超过90%的耗时。
vs_join_total_time_cn.jpg

图1

痛点二:数据冗余,时效性低

在很多数仓分析的场景中,为了提高数据查询性能,往往将多张表提前物化成一张大宽表。

大宽表虽然可以加速查询性能,然而其数据膨胀和冗余非常严重。由于表与表之间一对多的关联关系,导致一张表的数据通过关联会放大多份,造成数据量指数级膨胀和冗余。

而且宽表一经生成就难以更改,否则需要重新生成新宽表,费时费力,不够灵活。

此时利用图模型建模,可以轻易解决这个问题。 图是对关系的一种天然描述,以点代表实体,以边代表关系。

比如在人际关系图里面,每一个人可以用一个点来表示,人和人之间的关系通过边来表示,人与人之间可以存在各种各样的复杂关系,这些关系都可以通过不同的边来表示。

显然,构造图的过程本质上是对事物之间关系的提炼,在数据存储层面实质是对关系做了物化,以获取更好的关联计算性能。

相比宽表的关系物化方式,由于图结构本身的点边聚合性,构图表现得十分节约。 下图是GeaFlow中高性能构图的表现,可见构图操作本身极为迅速,且由于图可以分片的特性,具有十分良好的可扩展性。

insert_throuput_cn.jpg

图2

在图一的实验中也可以发现,实质上我们用少量的插入图(青色的insert to graph部分开销)耗时,换取了图建模方式对之后关联查询的加速效果。

痛点三:复杂关系查询难以描述

使用表建模的分析系统只支持SQL join一种方式进行关系分析,这在复杂场景中能力十分局限。 比如查询一个人4度以内所有好友,或者查询最短路径等,这些复杂关联关系通过SQL表的join方式很难描述。

GeaFlow提供融合GQL和SQL样式的查询语言,这是一种图表一体的数据分析语言,继承自标准SQL+ISO/GQL,可以方便进行图表分析。

code_style.jpg

图3

在融合DSL中,图计算的结果与表查询等价,都可以像表数据一样做关系运算处理。这意味着图3中GQL和SQL两种描述都可以达到类似的效果,极大灵活了用户的查询表达能力。

GeaFlow DSL引擎层还将支持SQL中的Join自动转化为GQL执行,用户可以自由混用SQL和GQL样式查询,同时做图匹配、图算法和表查询。

流图计算引擎TuGraph-Analytics

GeaFlow(品牌名TuGraph-Analytics)是蚂蚁集团开源的分布式流式图计算引擎。在蚂蚁内部,目前已广泛应用于数仓加速、金融风控、知识图谱以及社交网络等大量场景。

TuGraph-Analytics已经于2023年6月正式对外开源,开放其以图为数据模型的流批一体计算核心能力。相比传统的流式计算引擎,如Flink、Storm这些以表为模型的实时处理系统,GeaFlow以自研图存储为底座,流批一体计算引擎为矛,融合GQL/SQL DSL语言为旗帜,在复杂多度的关系运算上具备极大的优势。

query_throuput_cn.jpg

图4

图4展示了GeaFlow使用Match算子在图上进行多跳关联查询,相比Flink的Join算子带来的实时吞吐提升。在复杂多跳场景下,现有的流式计算引擎已经基本不能胜任实时处理。而图模型的存在,则突破这一限制,扩展了实时流计算的应用场景。


GeaFlow(品牌名TuGraph-Analytics) 已正式开源,欢迎大家关注!!!

欢迎给我们 Star 哦!

Welcome to give us a Star!

GitHub👉https://github.com/TuGraph-family/tugraph-analytics

更多精彩内容,关注我们的博客 https://geaflow.github.io/

相关文章
|
存储 消息中间件 缓存
键值(key-value)数据库
【4月更文挑战第9天】键值数据库(NoSQL)以键值对形式存储数据,简单灵活,适合任意类型数据。其特点是高性能、高可扩展性,常见应用包括缓存、会话管理、分布式锁、计数统计、配置管理和轻量级消息队列。然而,它不适用于结构化信息存储和复杂查询,选择时需考虑应用场景。
2828 5
|
SQL 分布式计算 数据管理
12款开源数据资产(元数据)管理平台选型分析(一)
12款开源数据资产(元数据)管理平台选型分析(一)
6246 2
|
8月前
|
人工智能 数据可视化 开发者
AI生成网站怎么做?3步快速搭建一个简单官网
很多人因技术门槛放弃建站?AI生成网站让零代码建站成为可能:只需三步——明确需求、AI自动生成结构、简单调整上线。工具如lynxcode可快速搭建官网/作品集,省去开发、部署烦恼,特别适合个人和小团队低成本高效启动项目。
|
5月前
|
存储 人工智能 弹性计算
阿里云云小站功能详解与使用教程
阿里云云小站是官方云产品优惠聚合页,涵盖云服务器(轻量/ECS/e实例)、百炼大模型、Token Plan、JVS Claw、Qoder编程、数据库、存储及安全等精选资源,一站式满足新手入门、AI开发与企业上云需求。
|
7月前
|
存储 运维 算法
【分布式】分布式系统核心知识体系:CAP定理、BASE理论与核心挑战
本文构建“理论边界→工程落地→现实挑战”闭环知识体系,深度解析CAP定理(分布式不可突破的不可能三角)、BASE理论(AP场景下的柔性实践)及八大类核心工程挑战,厘清误区,建立系统化认知框架。
|
8月前
|
Java 关系型数据库 数据库连接
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
本文系统梳理事务管理全链路知识:从ACID特性、隔离级别与并发异常,到Spring事务传播行为、@Transactional底层AOP原理,再到20+高频失效场景及最佳实践,覆盖理论、实现、源码与避坑,助你深入掌握分布式系统数据一致性核心能力。
1080 1
|
7月前
|
传感器 数据采集 人工智能
AI+数字孪生:从实时映射到智能决策的技术架构与实践路径
当数字孪生遇上AI,物理世界拥有了“预演未来”的能力。2026年,“可执行数字孪生”兴起——凡拓数创自研AI 3D引擎支持多物理场仿真与千万次并行训练,已在机器人Sim2Real迁移、工业预测性维护等场景落地见效。
|
canal NoSQL 关系型数据库
Redis应用—7.大Value处理方案
本文介绍了一种用于监控Redis大key的方案设计及其实现步骤。主要内容包括:方案设计、安装与配置环境、binlog数据消费者。
803 29
Redis应用—7.大Value处理方案
|
11月前
|
人工智能 网络协议 安全
阿里云国际站高防服务器的原理是什么?高防ip怎么做??
阿里云国际站高防服务器的原理是什么?高防ip怎么做??
592 1
|
人工智能 文字识别 自然语言处理
三分钟搞定图片识别+翻译+地图定位,通义灵码 2.5 真的太猛了
在本次体验中,我通过通义灵码 2.5 实测其全新集成的 3000+ MCP 工具能力,展示了如何仅凭一句自然语言指令,就能快速完成 OCR、翻译、地图等多个常用服务的调用与组合。通义灵码不仅自动匹配合适工具,还能生成完整调用代码,省去繁琐的 SDK 集成和文档查阅过程,大幅提升开发效率。这次升级让 AI 编程助手真正具备了“工具理解 + 代码落地”的能力,是开发流程的一次深度革新。
1107 7