概念
- StarRocks是新一代高性能分析型数据仓库,支持实时、多维、高并发的数据分析;
- StarRocks支持从各种数据源进行实时和批量数据推流,它还允许您直接分析存储在数据湖中的数据,无需数据迁移
- StarRocks非常适合对新数据进行实时分析。可以高速摄取数据,并实时更新和删除数据
场景
- StarRocks满足各种企业分析需求,包括OLAP多维分析、实时分析、高并发分析、统一分析等
OLAP多维分析
- OLAP(Online Analytical Processing,联机分析处理)是一种数据分析技术,它允许用户从多个角度对数据进行快速、灵活的分析
- MPP(Massively Parallel Processing,大规模并行处理)框架是一种分布式计算架构,它通过将任务并行地分散到多个服务器和节点上执行来提高数据处理的速度和效率
- MPP框架和向量化执行引擎使用户能够在各种架构之间进行选择,以开发多维分析报告
- 用户行为分析、用户画像、标签分析、用户标记、高维指标报表、自助式仪表板、服务异常探测和分析、跨主题分析、财务数据分析、系统监控分析
实时分析
- StarRocks使用Primary Key表实现实时更新,TP数据库中的数据变更可以在几秒钟内同步到StarRocks,构建实时仓库
- 在线促销分析、物流跟踪分析、金融行业的性能分析和指标计算、直播质量分析、广告投放分析、驾驶舱管理、应用程序性能管理(APM)
高并发分析
- StarRocks利用高性能数据分发、灵活的索引和智能物化视图,以高并发方式进行面向用户的分析
统一分析
- 一个系统可以为各种分析场景提供支持,从而降低系统复杂性并降低TCO
- StarRocks统一了数据湖和数据仓库,湖仓一体中的数据可以在StarRocks中全部进行管理,需要高并发的延迟敏感型查询可以在StarRocks上运行,数据湖中的数据可以通过StarRocks提供的外部目录或外部表进行访问
架构
- 整个系统仅由两种类型的组件组成:前端和后端。前端节点称为FE。后端节点有两种类型:BE和 CNs(计算节点)
- 当使用本地数据存储时,会部署BE,当数据存储在对象存储或HDFS上时,会部署CN
前端节点(FE)
- 负责元数据管理、客户端连接管理、查询规划和查询调度
- FE节点分为Leader FE、Follower FE和Observer FE。Leader FE负责读写元数据,Follower FE和Observer FE只读取元数据,并将写请求路由到Leader FE
后端节点(BE)
- 负责数据存储和SQL执行
- BE节点在存算一体架构中负责数据存储,在存算分离架构中,BE被计算节点(CN)取代,数据存储在对象存储或HDFS中
数据管理
- 使用列式存储,采用分区分桶机制进行数据管理
- 一张表可以被划分成多个分区,一个分区内的数据可以进一步分桶,形成Tablet,每个Tablet以多副本形式存储在不同的BE节点上,支持数据的高可靠性和服务的高可用性
存算分离架构
- StarRocks支持存算分离架构,其中计算节点(CN)仅负责数据计算任务和缓存热数据,数据存储在对象存储或HDFS中
- 这种设计降低了存储成本,确保更好的资源隔离,并具有高度的弹性和可扩展性
特点
- 向量化引擎:通过向量化引擎,StarRocks可以充分利用CPU的SIMD指令集,提高查询性能
- CBO(基于代价的优化器):StarRocks的CBO优化器采用Cascades框架,基于统计信息进行代价估算,选择最优的物理执行计划
- 高并发查询:StarRocks优化查询调度和资源分配,支持高并发查询。
- 智能物化视图:StarRocks支持异步物化视图,可以自动刷新,支持多表关联和丰富的聚合算子,提高查询性能
StarRocks和Doris对比
StarRocks | Doris | |
---|---|---|
架构特点 | MPP架构,支持存算分离,可以将数据存储在对象存储(如S3)或HDFS中,而计算节点可以独立扩展,支持向量化查询引擎,列式存储,以及多种数据导入方式 | MPP架构,支持多种数据导入方式,在2.0版本后也开始支持存算分离架构,允许数据存储在远端存储系统中 |
性能对比 | 单表查询场景有优势,更新频率高,降低维护成本 | 多表查询和资源消耗方面有优势 |
应用场景 | 需要处理大规模数据和分析复杂数据的场景 | 需要高性能数据处理和分析的场景 |
存储模型 | 在存储方面提供了更多优化,如数据压缩和行列混存表 | 同样采用列式存储模型 |
数据导入方式
- Insert Into: 两者都支持使用Insert Into语句直接导入数据,适用于小批量数据的导入
- Stream Load: 两者都支持Stream Load,适用于实时数据导入,通过HTTP协议发送数据
- Broker Load: 两者都支持Broker Load,适用于从HDFS等外部存储系统批量导入数据
- Routine Load: 两者都支持Routine Load,适用于从Kafka等流数据源实时导入数据