StarRocks在游族的多维分析场景
历史背景
游族在引入StarRocks前面临多套组件维护成本高、SQL语法差异大、指标计算口径不一致、MySQL性能瓶颈等痛点。为解决这些问题并满足未来实时查询需求,游族提出统一OLAP引擎的要求,包括数据秒级写入、低延迟响应、复杂查询性能好、运维简单、高并发和易用性强等标准。
StarRocks优势
StarRocks具备以下核心优势:
- 极致查询性能:采用分布式执行框架(MPP)、列式存储引擎、全面向量化引擎和CBO优化器。
- 丰富的导入方式:支持Broker Load、Spark Load、Stream Load、Routine Load和Insert Into等多种数据导入方式。
- 运维简单:不依赖外部组件,方便缩扩容,支持明细/聚合/更新/主键四种数据模型,支持物化视图。
- 简单易用:兼容MySQL协议,支持标准SQL语法,支持多种外部表(MySQL、Elasticsearch、Hive、StarRocks、Apache Iceberg等)。
应用场景
-
实时计算场景 / 家长监控中心:
- 家长监控中心通过数据流转图实现实时写入DataAPI。
- 数据模型选择:
- 更新模型:使用merge on read方式实时合并多版本数据。
- 主键模型:使用delete and insert方式更新数据,主键存储于内存中。
- 主键模型限制:无法使用delete方式删除数据,只能通过Stream Load、Broker Load、Routine Load导入方式删除。
- 软删除:通过增加数据有效标志位实现软删除。
- 模型选择建议:数据更新频率高时选择更新模型,软删除后冗余较少。
-
报表实时指标计算 / 架构介绍:
- 引入StarRocks后,Flink仅做简单ETL,StarRocks负责实时指标计算,内部实现数据逻辑分层,报表系统直接读取StarRocks结果数据,对外提供DataAPI。
- 数据关系模型转变:更多采用星型模型/雪花模型以应对灵活的多维分析场景。
- 精确一次性保证:Flink -> Clickhouse实现精确一次性写入,Flink -> StarRocks无法保证精确一次性写入。
- 指标存储转变:从MySQL存储报表结果数据转变为以StarRocks为核心,实现算存一体,查询分析统一。
- 常用数据导入方式:
- 实时数据:使用Flink-connector-StarRocks,通过缓存并批量由Stream Load导入。
- 离线数据:创建Hive外表,用insert into select方式直接写入结果表。
- 分区分桶选择:
- 分区:建议使用时间分区。
- 分桶:选择高基数列作为分桶键,保证数据均衡,每个tablet设置约500M。
- 慢查询分析:通过Profile与Plan查看查询性能,可在fe/log/fe.audit.log中查看所有查询和慢查询信息,StarRocksManager图形界面提供详细内容。
未来规划
- 将剩余实时场景全部迁入StarRocks。
- 建立以StarRocks为核心的统一查询分析平台。
- 集成StarRocks到DataAPI服务。
- 完善StarRocks监控。