AI智能总结
字节跳动自研方亿级图数据库架构演进 演讲人:张威 目录 ByteGraph简介ByteGraph2.0架构介绍ByteGraph 2.0当前问题ByteGraph3.0解决方案ByteGraph3.0架构介绍ByteGraph未来展望dbaplusO ByteGraph简介-可以做什么 字节有哪些业务数据呢? 用户信息、用户关系内容(视频、文章、广告等)用户和内容联系(点赞、评论、转发、点击) 使用图表达业务场景的优势建模直观简洁挖掘数据关联 ByteGraph特点 高吞吐低延迟最终一致性兼容Gremlin ByteGraph学术论文VLDB-2022 ByteGraph简介-查询接口 Gremlin简介 Gremlin是一种图灵完备的图遍历语言(相较Cypher等查询语言,功能更全面,上手较为容易,使用更加广泛 主流云厂商图数据库都提供了Gremlin支持,ByteGraph目前支持一个子集 数据模型 有向属性图 点和边上都可以携带多属性,支持动态加减属性列 ByteGraph 2.0架构-分层架构 ByteGraph 2.0架构-模块划分 ByteGraph2.0架构-执行引擎 @执行流程示例 g.V0.has('id', 1).has('type', person).out(knows').has('age', gt(18).values('name) ByteGraph 2.0 架构-存储引擎 ByteGraph2.0当前问题 高成本的分布式KV 穴余副本:3AZ5副本/3副本 LSMTreeKV存储引擎本身问题 多层Cache几余内存/CPU预留:BlockCache/Compaction磁盘预留写放大高:40倍 性能分层过多 图上多跳性能难以做到极致 最基础的GetOneHop算子读取性能不够高 ByteGraph3.0解决方案 成本 基于EC技术降低副本数量KV->DFS 3AZ/3副本减少到3AZ/2副本高密度存储机型进一步降低TCO 自研基于DFS的BwTree存储引擎:合并2.0存储层Btree引擎和分布式KV引擎,减少写放大 合并进程:减少穿透层数,减少多跳查询RPC开销减少分片数量:主推单分片一主多从架构,非必要不分片(利用大内存机器来满足性能)提高1PC事务比例BtreePage内列存自研新一代Pipeline执行引擎,减少通信拷贝开销,感知Numa调度功能 ByteGraph3.0架构介绍-总体架构 ByteGraph3.0架构介绍-并行执行引擎 g.V(v(1), v(2), v(3), ...J.outr'follow').where(out'follow'j.count0.gt(100) 并行执行引擎优势 合并多人step到一人pipeline,减少基于channel的通信开销单个pipeline内部可并行启动多个pipelinetask进行运算,充分利用多核能力Numa-Aware的Pipeline调度器,增强数据局部性 ByteGraph3.0架构介绍-存储引擎模块划分 Φ存储引擎层 ByteGraph 3.0架构介绍-存储引擎流程介绍 ByteGraph未来展望 业务收益 存储成本降低30%~50%, 在单分片场景下,多跳召回场景上可提供数倍于原有系统的性能未来工作 补齐3.0功能,持续上量,持续优化内部业务&&火山引擎的服务性能和使用体验作为统一存储底座,向上支撑图数据库查询引擎,全图计算引擎,图训练DataLoader等等打造Single-Engine生态:提供一体化图数据服务。随着图数据库,GNN,图计算越来越广泛的使用,用户对于图数据的统一存诺,处理,流动"有了更高的要求,ByteGraph3.0存储层希望提供一套融合多种场景的存储解决方案,通过统一的存储格式,帮助用户打通图数据库,GNN,图计算系统以及spark/Hadoop生态,真正做到一站式处理。 Gdevops THANKYOU




