下一代腾讯 OLAP 引擎腾讯 TEG 龙越
背景
- MercsDB:腾讯自研的列式存储数据库,专注于高性能 BI 分析,支持千列、十亿行数据,具备任意列索引、实时写入、面向行和列存储等特性。
- 性能对比:MercsDB 性能优于 Presto / Impala,查询响应速度快,支持 MPP 架构,满足即席查询和实时查询需求。
- 历史发展:从 2013 年的日志分析到 2021 年的 BI 优化,腾讯 OLAP 引擎经历了多次迭代,MercsDB 是最新成果。
存储:各种列和索引
- 存储架构:采用 Ceph、本地磁盘、HDFS 等异构存储,支持低延迟热数据和高容量冷数据存储,具备副本管理和自动容灾功能。
- 列式存储优化:
- 索引类型:支持 SkipListIndex、InfedIndex、KeyIndex、LBSIndex 等多种索引,索引大小占原始数据的 40%。
- 排序索引:通过排序索引加速海量数据查询,提升 10 倍性能。
- 压缩技术:采用 BitShuffle + LZ4 压缩,压缩率超 50%。
- 索引技术:包括 LBS(KDB)、FST、KeyIndex 和倒排索引,满足不同查询需求。
计算:与 Presto 集成
- 计算架构:MercsDB 支持 JDBC、HTTP、gRPC 等接口,通过路由器实现 SQL 路由,支持本机引擎和 Presto 引擎。
- 查询优化:
- 向下推入:将过滤、求交、统计等计算任务推入 MercsDB 本机引擎执行,提升效率。
- 矢量化:使用 Java 矢量 API(JDK 16+),实现无装箱、无对象创建的批量矢量化计算,优化内存访问和性能。
- Presto 集成:通过 Presto 引擎支持海量数据查询,实现数据转换和矢量化,提升查询性能。
基准和应用
- SSB 基准:
- 数据量:1600M 行数据,MercsDB 存储优化后仅需 60GB,对比 ClickHouse 节省 882GB。
- QPS:MercsDB 在 60B 行数据下支持 1600M 行 QPS,性能显著优于 ClickHouse。
- 应用案例:
- 微信支付日志检索:支持 1000 亿行/天实时写入,全局和特定检索,存储分离。
- AB 广告测试:支持海量数据秒级响应,千列查询,公制柱压缩存储。
腾讯大数据未来计划
- 云服务和开源:推动 MercsDB 开源,服务云业务。
- 技术方向:矢量化、容错、内存管理等持续优化。