EasyGraph 性能优化及应用总结
简介
EasyGraph 是腾讯大数据团队开发的图数据库项目,基于《Graph Algorithms》方法,支持处理图数据上的关系查询、非欧空间信息检索、实时更新图结构的高并发低延迟操作,并与图计算引擎、图可视化分析引擎融合。主要侧重于交互式查询分析、轻量级模式识别、子图信息检索与挖掘等场景。
数据模型与查询语言
- 数据模型:定义图 G = (V, E, L, P, ...),其中 V 为点集,E 为边集,L 为标签,P 为属性。支持有向属性图模型。
- 查询语言:使用 Gremlin 查询语言,支持条件检索、图语义检索,并支持 Python、Java、Go、C++ 等多种语言 SDK。
EasyGraph 发展历程
- EasyGraph 1.0:基础图语义交互。
- EasyGraph 2.0:大数据生态、多租户管理、管控平台支持。
- EasyGraph 2.x:Gremlin 完美支持、算子优化、Cache 优化、索引优化、云上版本 konisgraph 等。
EasyGraph 架构
- 接入层:API、Gremlin Console、Importer。
- 统一编码层:Restful、RPC。
- BackendStorage:HBase、TiKV、RocksDB。
- 统一配置层:Redis、LRU Cache、TTL Cache、Tier Cache、Range Storage、Hash Storage。
- 事务多版本查询优化器:支持 Metadata 管理、CSV/JSON/TDWHive/JDBC 等接入。
- Streaming/Batch:统一编码。
- 运行时监控:Graph Tools、普洛米修斯。
- 鉴权:多租户应用层。
- 应用层:知识图谱、反欺诈、安全风控、Spark 下推优化。
EasyGraph 性能优化
算子并发优化
- 并发算子:lock free 算子、high watermark、low watermark、fetch back pressure,加速瓶颈算子,控制内存使用。
- 算子间队列同步:使用 lock free 生产消费模型。
数据预取
- DFS 多跳查询:减少 RPC 次数。
- Prefetch 下一度邻边:放至 Cache,优先从 Cache 获取临边。
批流结合
- 火山模型批量处理:减少 RPC 次数,缓解 io 墙效应。
条件下推
- Label 条件下推:加速按照 label 的查询、删除操作。
- 索引匹配:加速查询性能。
- Count 下推:减少 RPC 次数,避免数据反序列化。
Adaptive Cache
- 问题:k-out case 中超点缓存收益不一定最高,离散随机热点更应该被缓存。
- 解决方案:基于扩展收益设计优先级缓存,兼顾内存开销和查询延迟,引入 CBO 和自适应策略,最大化 Cache 效率。
- 效果:一二跳 Adaptive Cache 性能是 LRU Cache 的 1.5-2 倍,受网络环境干扰小,极端网络环境下性能最大可提升 10 倍+。
Cache 压缩
复合属性索引
- 索引 Key Layout:支持值匹配查询、范围查询、前缀查询。
- Index Match Strategy:通过索引匹配加速查询。
Fast Write 索引
- 特点:不涉及 Read-Modify-Write 过程,写入性能提升,查询匹配索引数据和原始数据,校验索引合法性。
EasyGraph 应用案例
- 团伙判别:传统 SQL 关联分析耗时 17 分钟,图查询及图可视化实现秒级研判。
- 智能运维监控:构建实时知识图谱,排查问题效率提升约 3 倍。
未来规划
- 功能特性:兼容 Cypher 及 GraphQL 查询语言,基于图的分布式存储引擎,基于自研存储引擎的下推优化,分布式 Cache 解决方案,点边维护记录 traversal 状态,加速查询性能。