得物基于 StarRocks 的 OLAP 需求实践

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

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 表的存储

对表进行存储时,会对表进行分区和分桶两层处理,将表的数据分散到多台机器进行存储和管理。

在这里插入图片描述

  • 分区机制:高效过滤,提升查询性能。
    • 分区类似分
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值