1. 什么是 StarRocks
- 新一代极速全场景MPP数据库,可以用 StarRocks 来支持多种数据分析场景的极速分析;
- 架构简洁,采用了全面向量化引擎,并配备全新设计的 CBO 优化器,查询速度(尤其是多表关联查询);
- 很好地支持实时数据分析,并能实现对实时更新数据的高效查询, 还支持现代化物化视图,以进一步加速查询;
- 用户可以灵活构建包括大宽表、星型模型、雪花模型在内的各类模型;
- 兼容 MySQL 协议,支持标准 SQL 语法,易于对接使用,全系统无外部依赖,高可用,易于运维管理。
2. 系统架构

核心进程:FE(Frontend)、BE(Backend)。
注:所有节点都是有状态的。
-
FE(Frontend)负责管理元数据,管理客户端连接,进行查询规划、查询调度等工作。
- Follower
- Leader:Follower会通过类Paxos的BDBJE协议选主出一个Leader,所有事务的提交都是由Leader发起,并完成; - Follower:提高查询并发,同时参与投票,参与选主操作。- Observer:不参与选主操作,只会异步同步并且回放日志,主要用于扩展集群的查询并发能力。
-
BE(Backend)负责数据存储以及SQL执行等工作。
3. 存储架构
在StarRocks里,一张表的数据会被拆分成多个Tablet,而每个Tablet都会以多副本的形式存储在BE节点中,如下图:

Table数据划分 + Tablet三副本的数据分布:

StarRocks支持Hash分布、Range-Hash的组合数据分布(推荐)。
为了等到更高的性能,强烈建议使用Range-Hash的组合数据分布,即先分区后分桶的方式。
- Range分区可动态添加和删减;
- Hash分桶一旦确定,不能再进行调整,只有未创建的分区才能设置新的分桶数。
分区和分桶的选择是非常关键的。在建表时选择好的分区分桶列,可以有效提高集群整体性能。
以下是针对特殊应用场景下,对分区和分桶选择的一些建议:
- 数据倾斜:业务方如果确定数据有很大程度的倾斜,那么建议采用多列组合的方式进行数据分桶,而不是只单独采用倾斜度大的列做分桶。
- 高并发:分区和分桶应该尽量覆盖查询语句所带的条件,这样可以有效减少扫描数据,提高并发。
- 高吞吐:尽量把数据打散,让集群以更高的并发扫描数据,完成相应计算。
3.1 表的存储
对表进行存储时,会对表进行分区和分桶两层处理,将表的数据分散到多台机器进行存储和管理。

- 分区机制:高效过滤,提升查询性能。
- 分区类似分

本文介绍了StarRocks,一种高性能的MPP数据库,它支持多种数据分析场景,如实时分析、多表关联查询、数据模型构建等。文章详细阐述了其架构、存储机制以及在业务案例中的应用,包括指标工厂服务和内部系统业务看板的解决方案。此外,还分享了在使用过程中遇到的问题及解决策略,以及未来的规划方向。
最低0.47元/天 解锁文章
571

被折叠的 条评论
为什么被折叠?



