Featured image of post StarRocks 学习笔记 Day2

StarRocks 学习笔记 Day2

StarRocks 的重要特性

1. 极速特性

StarRocks 通过一套精密的系统设计,实现了从查询优化到执行引擎的全方位加速,确保了其极致的查询性能。

1.1 查询处理四大核心技术

StarRocks 之所以能够极速完成 SQL 查询,主要得益于以下四个关键技术:

  • CBO 优化器: 通过强大的基于成本的优化器 (Cost-Based Optimizer),生成最优的分布式物理执行计划。

  • MPP 分布式执行框架: 采用大规模并行处理 (Massively Parallel Processing) 架构,充分利用多机资源,使查询性能随机器数量近似线性扩展。

  • Pipeline 并行执行框架: 在单节点内部,通过 Pipeline 框架充分利用多核资源,使查询性能随 CPU 核数近似线性提升。

  • 全面向量化执行引擎: 充分发掘 CPU 单核的计算潜力,将单核执行性能推向极致。

1.2 MPP 分布式执行框架

MPP 架构是 StarRocks 高性能的关键。它将一个查询任务分解为多个逻辑单元(Fragment),并在不同计算节点上并行执行。

执行模式对比:

  • Scatter/Gather: 计算任务汇聚于单点,处理大表 Join 和高基数聚合时存在瓶颈。

  • MapReduce: 任务间需要等待,且中间结果需要落盘,产生磁盘 I/O 开销。

  • MPP: 采用流水线执行,数据在内存中直接传输,无需等待和磁盘 I/O,效率极高。

执行流程 (以 GROUP BY 为例):

  • 本地聚合 (Local Agg): 各个节点并行扫描本地数据并进行预聚合。

  • 数据混洗 (Shuffle): 将预聚合后的数据按照 GROUP BY 的 key(例如 id)进行 Hash,发送到对应的目标节点。

  • 最终聚合 (Final Agg): 目标节点接收来自其他节点的数据,并完成最终的聚合计算,然后返回结果。

1.3 全面向量化执行引擎

向量化引擎是发挥 CPU 单核性能的利器。

核心思想: 数据按列组织和处理,在一个 chunk(一批数据)上完成一个操作,然后再执行下一个操作。

优势:

  • 采用高效编码,数据压缩比高。

  • 查询时只需扫描相关列,大幅减少磁盘 I/O。

  • 对 CPU 的分支预测和缓存预取非常友好。

  • 充分利用 CPU 的 SIMD (Single Instruction, Multiple Data) 指令,用一条指令同时处理多条数据,极大提升计算效率。

1.4 CBO 优化器

CBO 的核心任务是将用户输入的 SQL 语句转化为一个最高效的执行计划 (Plan)。

核心组件: Analyzer, Transformer, Rewriter, Optimizer。

主要优化方法:

逻辑重写: 如谓词下推、列裁剪、子查询改写等。

物理优化: 如 Join 顺序调整、自动选择最优的 Join 算法等。

1.5 可实时更新的列式存储引擎

StarRocks 的存储引擎在具备列存优势的同时,支持高效的数据实时更新。

更新模型:

  • Primary Key (主键模型): 基于主键实现 Delete-and-insert,保证大批量导入时的查询性能。

  • Update (更新模型): 基于 Key 列实现 Merge-on-read,适用于更新频率更高的场景。

2. 统一特性

StarRocks 致力于通过一个平台解决多样化的分析需求,实现从场景、数据到管理的全面统一。

2.1 场景与语法统一

SQL 语法统一:

  • 内部查询: 完整支持 TPC-H 和 TPC-DS 等标准测试集,兼容 MySQL 协议。

  • 联邦查询: 能用一套 SQL 语法查询 MySQL、PostgreSQL、Elasticsearch 等外部数据库以及 Hive、Hudi、Iceberg 等数据湖。

  • 分析场景统一: 适用于各类 OLAP 场景,如实时报表、用户画像、Ad-hoc 查询、实时风控等。

2.2 表模型支持

StarRocks 提供多种表模型以适应不同的业务场景。

表模型特点适用场景
明细模型保存原始明细数据,追加写入,几乎无更新。日志、操作记录、时序数据等。
聚合模型数据导入时实时完成预聚合 (SUM, MIN, MAX 等),无需查询明细。预先按维度汇总的统计数据等。
更新模型支持基于 Key 列的更新 (Merge-on-read),更新频率高于主键模型。状态会频繁变动的订单、设备状态等。
主键模型支持基于主键的更新 (Delete-and-insert),保证批量导入和查询性能。状态会发生变动的订单、设备状态等。

2.3 流批一体与管理统一

  • 流批一体: StarRocks 可作为统一的数据分析平台,无缝对接 Kafka、Flink 等流处理系统和离线的批处理数据,为上层应用提供统一的数据出口。

  • 集群管理统一: 支持通过资源组 (Resource Groups) 对 CPU、内存、I/O 等资源进行隔离和管理,实现多租户在同一集群内的稳定运行。

2.4 “All in StarRocks” 解决方案

通过一个 StarRocks 平台,可以逐步替代过去由 ClickHouse、Druid、Kylin、Impala 等多种组件构成的复杂分析架构,从而大幅降低运维成本,提升数据时效性和系统稳定性。

3. 湖仓一体

StarRocks 提出了新型的湖仓融合架构,将数据仓库的性能与数据湖的开放灵活相结合。

3.1 Lakehouse 概念

Lakehouse 是一种结合了数据仓库 (Data Warehouse) 和数据湖 (Data Lake) 优势的新型架构。 StarRocks 作为“极速统一开放的湖仓”,既能直接对数据湖进行高性能分析,也能在内部进行高效的数据加工和存储。

3.2 全新的现代化物化视图

物化视图 (Materialized View) 是实现湖仓融合、加速查询的关键技术。

特点:

  • 支持分区粒度的自动或手动刷新。

  • 能够对 Join、Aggregate 等复杂查询进行透明的查询改写和加速。

  • 可以直接在 Hive、Iceberg 等外部数据湖表上构建,无需复杂的 ETL 流程即可加速数据湖查询。

价值:

  • 简化数据分层建模。

  • 为固定报表和 Ad-hoc 分析提供统一的加速层。

3.3 存算分离架构

StarRocks 支持存算分离部署模式,进一步提升了架构的弹性和成本效益。

架构演进: 从存算一体的经典集群 (FE + BE) 演进为存算分离的弹性集群 (FE + CN + 共享存储)。

  • FE (Frontend): 负责元数据管理和查询优化。

  • CN (Compute Node): 无状态的计算节点,负责执行计算任务。

  • 共享存储: 数据持久化存储在 S3、HDFS 等低成本共享存储上。

核心优势:

  • 弹性: 计算节点 (CN) 可根据负载情况自由伸缩,无需数据迁移。

  • 低成本: 存储从多副本变为单副本,可使用更经济的对象存储。

  • 隔离: 可为不同业务部署独立的计算集群,实现工作负载隔离。

  • 高可用: 借助云存储的高可靠性,实现跨可用区部署和灾备。

3.4 四种湖仓融合解决方案

使用方式数据湖存储格式数仓存储格式读写流程适用场景
加速数据湖查询Hive/IcebergLocal cache数据直接入湖,StarRocks 加速查询数据湖 Adhoc 加速
湖仓分层建模Hive/IcebergMV (StarRocks format)数据直接入湖,StarRocks ELT 加工高并发低延迟报表
实时数仓与数据湖融合Hive/IcebergStarRocks format数据写入 StarRocks,异步刷新到湖秒级实时场景且有数据湖基础
StarRocks 云原生湖仓StarRocks formatStarRocks format数据写入 StarRocks,持久化到对象存储一站式 Lakehouse 方案

4. 总结

极速统一: StarRocks 在 SSB、TPC-H、TPC-DS 等标准化测试集上,平均性能超过竞品 2-3 倍。 在真实业务场景中,能有效支撑固定报表、自助 BI、用户画像和高并发查询等。

湖仓融合: StarRocks 提供了两种主要的湖仓一体化路径:一是作为统一 Lakehouse,数据直接写入 StarRocks 进行极速分析;二是直接查询和分析开放数据湖中的数据,并利用物化视图加速。

使用 Hugo 构建
主题 StackJimmy 设计