CDW PG 大规模在线数仓技术构架分享
CDW PG 发展历程介绍
CDW PG 是腾讯基于 PostgreSQL 自主研发的分布式在线关系型数据仓库,采用无共享 MPP 架构、行列混合存储,支持超大规模集群和超高速计算能力。其发展历程涉及整体架构演进、自研列式存储和执行引擎能力提升。
整体构架演进
CDW PG 的整体架构包括 Coordinator(协调节点)、GTM(事务管理器)、DataNode(数据节点)等核心组件,并支持集群数据交互总线 Data Forward Bus。架构演进过程中,主要解决集群扩展性挑战,如分布式 JOIN 消耗大量网络连接和资源的问题。
集群扩展性挑战
- 分布式 JOIN 问题:单节点连接数过多,例如 200 个 DN 节点,100 个并发查询,每个查询 5 个重分布,将产生 10 万个连接,限制扩展性。
- 分布式逻辑框架:通过异步执行框架,分析物理查询计划,统一创建 DN 上的各层执行进程,避免冗余进程及连接,不同层级进程间可异步启动执行。
- 分布式物理框架:引入 Forward Node(FN)进行节点间数据交互,每台物理机一个 FN 节点,通过共享内存进行数据交互,本机数据交互不走网络层,减少网络连接数至 N*(N-1) 个。
自研列式存储
CDW PG 支持按行存储和列存储建表,两者可相互操作和混合查询,保证事务一致性。
列式存储特性
- 透明压缩算法:支持 zstd、Lz4 等透明压缩算法,以及 Delta、RLE、Dictionary 等轻量级压缩算法,根据数据类型选择不同压缩策略。
- 列存数据压缩能力增强:通过透明压缩和轻量级压缩结合,提升压缩效率。
- 列存储延迟物化扫描优化:支持 Late Read,多列扫描时逐列进行 predicate,减少后续列的数据扫描量。
- 列存索引支持及优化:支持 Hash 索引和 B-Tree 索引,并优化 Stash 表自动合并能力,实现 RO/WO 的统一。
执行引擎能力提升
CDW PG 通过多层级并行能力提升、向量化查询执行引擎、Plan Hint 自动调优能力等优化,提升执行效率。
多层级并行能力提升
- 节点级并行:CN 节点级并行和 DN 进程级并行,榨干硬件潜力。
- 指令级并行:利用 SSE/OP 指令加速查询执行。
向量化查询执行引擎
- 对比传统火山模型:减少函数调用开销,提高指令、数据的缓存命中率,利用 SIMD 能力加速查询执行。
Plan Hint 自动调优能力
- 资源管理:由 leader CN 节点统一规划资源组使用情况,优化器根据 memory_limit 设置 query 中不同算子的 work_mem 内存占用,CPU 通过 cgroup 配置占用百分比或绑核。
高效数据交互工具
CDW PG 通过 TDX 服务器对接外部数据源,支持并行多任务导入导出、管道、错误表等高级功能,相比传统 Copy 入库出库性能提升数十倍。
多平面能力
提供读写平面和只读平面,实现读写分离和只读请求的扩展性,通过内部复制和 VPC GW 实现业务读写分离。
后续规划
- 构架优化:持续融合 PG 社区能力,提升 Oracle 兼容能力,支持大数据生态对接,机器学习算法支持。
- 生态打造:持续优化列式存储、向量化引擎、算子并行计算、SIMD 优化等能力,覆盖更多场景。