深度解析:阿里云图数据库GDB V3引擎,性能何以百倍提升?
社交关系
智能营销
欺诈检测
保险欺诈检测
游戏拉新、促活、防流失
性能,相较于传统图数据库提升近百倍。通过自研算子体系、计算引擎、执行引擎,逐步逼近物理硬件的极限性能,提供超越传统图数据库百倍的查询性能,只为解锁更多可能性。
兼容并包,集多种图查询语言于一身。高度兼容Neo4j、JanusGraph等图数据库引擎,支持 OpenCypher 、Gremlin 查询语言,降低迁移成本和研发门槛。
快速弹性、高可用、易运维,尽享云原生技术普惠。基于云原生架构的图数据库引擎,可快速扩缩容,应对突增业务负载;支持高可用实例、节点故障自动切换,保障业务连续性;提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,免去繁琐的运维烦恼。
低构建成本、灵活计费,满足不同成本需求。产品构建、运维成本,仅为国外图数据库友商的 40%;支持按量付费、包年包月多种计费形式,无论创新探索,亦或生产应用都能自由掌握。
硬件间性能墙:数据处理会涉及到CPU、CACHE、MEMOERY、SSD、NETWORD等部件,各部件的处理延迟差异巨大;
数据管理开销:CPU利用率中90%左右的时间都在花费在优化内存和硬盘之间性能墙、数据一致性、持久性等方面;
硬件效能利用:传统的执行调用逻辑相比面向硬件特性实现逻辑可能会有比较大的性能差异
计算、存储紧耦合,大化执行效率
设计图原生存储层,省掉数据转换开销
自研算子体系
自研计算引擎
解析引擎:相比Tinkerpop原生引擎性能提升1000倍,同时极大提升用户体验,增强数据库安全能力。
翻译引擎: Gremlin每个算子都有对应的算子或者表达式,翻译过程中实时优化,多轮优化。
优化引擎:相比基于策略的优化存在依赖性、低效性等问题,基于Cascade子树匹配模型自上向下多层匹配优化,支持谓词下推、子查询打平、算子Schema融合等。
自研执行引擎
存算一体的架构:传统基于开源组件构建的非原生图数据库系统一般都是存算分离架构,无法避免跨网络数据交互等问题。V3采用存算一体解决方案,将这个执行算子树下推到图原生存储层,大化的减少了算子和数据之间的距离,提升了数据处理的效率。同时图原生存储本身就是针对图算子设计的存储结构,也会让算子的每个操作执行时延降到低。
数据驱动:传统的基于Volcano执行引擎调度过程类似下图中间左侧,算子自上向下调用,每次每个算子只获取处理一条数据,大量Cache Miss、数据转换、函数调用开销、内存浪费等问题导致数据执行效率低下。V3采用数据驱动的策略,每个算子会对一批数据进行集中处理,并生成新的一批数据。父子算子间通过Producer-Consumer模型共享同一批结果集合,极大减少数据跨算子传输。
动态执行技术:图原生存储基于Tree结构保存了各个属性的相关统计信息,系统并不需要额外的统计模块进行代价估算。静态优化后直接将整个物理算子树下推到图原生存储层,利用算子进行执行时实时优化。
资源池化:为解决系统运行时频繁new(delete)开销,自研内存管理系统并构建数组、树等基础数据结构,同时将系统中关键数据结构资源池化
无锁化编程:基于快照的MVCC技术避免读请求进行锁等待;通过多级缓存池解决高并发下线程资源分配竞争;使用线程局部变量,解决数据可见性与多线程资源争抢的矛盾;基于CAS原子操作解决高并发下多线程资源同步、日志记录等并发冲突
使用<指针, 引用计数> 思路解决复杂数据结构跨算子数据传输中编解码性能问题
自研Binary数据编解码算法解决复杂结果集Encoding(Decoding)开销
2跳查询中,相比Neo4j性能提升95倍,相比友商N性能提升258倍;
3跳查询中,相比Neo4j性能提升87倍,相比友商N性能提升214倍;
6跳查询中,GDB V3单线程消耗266s,其他测试产品均已超时,平均几十纳秒扫描一条数据;
以行位单位进行存储和更新。邻接矩阵中的一行,就是一个顶点关联的所有边。在实际数据中,大部分点的度数都比较小。比如twitter数据集,80%以上的顶点,出度和入度在30以内。把他们作为一个单元在内存中连续存储,可以保证高效的读取,也比较容易更新,更加适合动态图的存储。
以树状结构存储超级顶点。对于度数很大的超级顶点,用连续内存空间存储的方法并不适用。因此我们把它进一步拆分成树结构,以解决超级顶点的更新问题。
对相同类型(标签)的边进行聚合。在实际业务场景中,一次图查询往往只会选取特定类型的边进行遍历,把相同类型的边存放在一起,可以有效的提高这种访问模式下的性能表现。
相关文章