导读:本期聚焦于小伙伴创作的《StarRocks(SR)的基本概念、架构及基本使用详解》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《StarRocks(SR)的基本概念、架构及基本使用详解》有用,将其分享出去将是对创作者最好的鼓励。

StarRocks(SR)的基本概念、架构及基本使用详解

StarRocks(SR)的基本概念、架构及基本使用详解

一、 StarRocks基本概念

StarRocks(简称SR)是一款高性能、全场景的MPP(Massively Parallel Processing)分布式分析型数据库。它支持实时、亚秒级的分析查询,特别擅长处理多维分析、实时数仓和Ad-hoc查询等场景。StarRocks兼容MySQL协议,使得开发和迁移成本极低。

核心特性:

  • 极速分析:采用向量化执行引擎、CBO(基于代价的优化器)以及全局字典等技术,在宽表和多表关联场景下表现优异。

  • 实时更新:支持主键模型(Primary Key Model),实现秒级的实时数据更新与删除,同时保证极高的查询性能。

  • 湖仓一体:不仅能管理本地数据,还能作为计算引擎直接查询Hive、Iceberg、Hudi、Delta Lake等外部数据湖的数据。

  • 标准兼容:高度兼容MySQL协议,支持标准SQL,可通过各类MySQL客户端和BI工具直接接入。

二、 StarRocks架构详解

StarRocks采用了原生MPP架构,整个系统没有单点故障,主要由FE(Frontend)和BE(Backend)两类进程组成。

1. FE(Frontend)节点

FE是StarRocks的前端节点,负责元数据管理、客户端连接管理、查询解析、查询计划生成以及查询调度。FE节点分为三种角色:

  • Leader:主节点,由Follower选举产生,负责元数据的写入和同步。

  • Follower:从节点,参与Leader选举。当Leader宕机时,Follower会自动选举出新的Leader,保证高可用。

  • Observer:观察者节点,不参与选举,只负责同步Leader的元数据,用于扩展FE的查询并发能力。

2. BE(Backend)节点

BE是StarRocks的后端节点,负责数据存储和查询计划的执行。BE采用无主架构,所有BE节点对等。数据会按照分片机制分布在多个BE节点上,通过多副本机制保证数据的高可靠。BE直接读写本地数据,并利用MPP网络在节点间进行数据交换完成复杂查询。

3. 数据管理机制

StarRocks的逻辑结构依次为:数据库 > 表 > 分区 > 分桶。

  • 分区:通常按时间维度进行分区,便于数据生命周期管理(如按天/月删除过期数据)。

  • 分桶:在分区内,数据通过哈希算法分散到不同的Bucket中,分桶键的选择决定了数据分布的均匀性和查询时的剪枝效率。

三、 StarRocks基本使用

由于StarRocks兼容MySQL协议,你可以使用任意MySQL客户端(如Navicat、DBeaver或命令行mysql)连接StarRocks的FE节点(默认端口9030)。

1. 建库与建表

StarRocks支持四种数据模型:明细模型、聚合模型、更新模型和主键模型。其中主键模型非常适合实时更新场景。以下示例创建一个按日期分区、按用户ID分桶的主键模型表:

-- 创建数据库
CREATE DATABASE IF NOT EXISTS sr_demo;
USE sr_demo;

-- 创建主键模型表
CREATE TABLE IF NOT EXISTS user_events (
    event_date DATE NOT NULL COMMENT '事件日期',
    user_id BIGINT NOT NULL COMMENT '用户ID',
    event_type VARCHAR(64) NOT NULL COMMENT '事件类型',
    event_detail JSON COMMENT '事件详情(JSON)',
    update_time DATETIME NOT NULL COMMENT '更新时间'
)
ENGINE = OLAP 
PRIMARY KEY(event_date, user_id)
COMMENT '用户事件主键表'
PARTITION BY RANGE(event_date) (
    START ("2023-01-01") END ("2024-01-01") EVERY (INTERVAL 1 MONTH)
)
DISTRIBUTED BY HASH(user_id) BUCKETS 8
PROPERTIES (
    "replication_num" = "3",
    "enable_persistent_index" = "true"
);

2. 数据导入

StarRocks提供多种导入方式,包括Stream Load、Broker Load、Routine Load等。最常用于实时流写入的是Stream Load,它通过HTTP协议将本地或内存中的数据推送到SR。

# 使用curl命令进行Stream Load导入CSV格式数据
curl --location-trusted -u root: 
    -H "label:user_event_load_001" 
    -H "column_separator:," 
    -H "columns:event_date,user_id,event_type,event_detail,update_time" 
    -T data.csv 
    http://www.ipipp.com:8040/api/sr_demo/user_events/_stream_load

如果是实时数仓同步,通常会使用Flink通过StarRocks Connector以JSON格式写入,此时只需在Flink任务中配置好连接器参数即可。

3. 数据查询与分析

查询方式与标准SQL完全一致,支持聚合、多表Join、窗口函数等复杂操作:

-- 查询每日不同事件类型的UV和PV
SELECT 
    event_date,
    event_type,
    COUNT(DISTINCT user_id) AS uv,
    COUNT(*) AS pv
FROM 
    user_events
WHERE 
    event_date >= '2023-10-01'
GROUP BY 
    event_date, event_type
ORDER BY 
    event_date DESC, uv DESC;

4. 物化视图加速

面对极高频的查询且聚合逻辑固定时,可以创建物化视图来预计算,实现查询透明加速:

-- 创建按事件类型预聚合的物化视图
CREATE MATERIALIZED VIEW mv_event_type_agg AS
SELECT 
    event_date,
    event_type,
    COUNT(DISTINCT user_id) AS uv,
    COUNT(*) AS pv
FROM user_events
GROUP BY event_date, event_type;

创建成功后,当用户再次执行上述包含`COUNT(DISTINCT user_id)`和`GROUP BY event_date, event_type`的查询时,CBO优化器会自动将查询改写为命中物化视图,从而实现毫秒级响应。

通过以上对StarRocks概念、架构及核心操作的梳理,可以快速将其应用于实时数仓建设、OLAP分析等生产场景,充分发挥其高并发、低延迟的算力优势。

StarRocksMPP数据库实时数仓主键模型物化视图

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。