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

发布时间:2026-03-06 04:34

StarRocks是一款高性能、实时、MPP架构的现代化分布式SQL数据库,适用于OLAP场景,支持标准SQL,具备亚秒级查询响应能力,适用于实时报表、多维分析、用户画像等场景,本文介绍StarRocks(SR)的基本概念、架构及基本使用介绍,感兴趣的朋友跟随小编一起看看吧

+

目录

StarRocks(原名 DorisDB,后开源并更名为 StarRocks)是一款高性能、实时、MPP(大规模并行处理)架构的现代化分布式 SQL 数据库,专为 OLAP(在线分析处理) 场景设计。它兼容 MySQL 协议,支持标准 SQL,具备亚秒级查询响应能力,适用于实时报表、即席查询、多维分析、用户画像、日志分析等场景。

一、核心基础概念

1.表模型(Table Model)

StarRocks 提供三种数据模型,适应不同业务场景:

模型适用场景特点Aggregate Key(聚合模型)预聚合指标(如 sum、count)相同 key 的 value 自动聚合(如 sum(clicks))Unique Key(唯一主键模型)实时更新、主键去重支持 Upsert,类似 Hudi/Iceberg 的主键更新Duplicate Key(明细模型)日志、事件流等原始明细不聚合,保留所有记录,支持排序键加速查询

推荐

实时数仓 → Unique Key(支持 CDC 更新)报表聚合 → Aggregate Key原始日志 → Duplicate Key

2.分区(Partition)与分桶(Bucket)

分区(Partition):按时间/地域等逻辑切分数据(如 PARTITION BY RANGE(date)),用于分区裁剪分桶(Bucket):每个分区内按 Hash(分桶列) 分成多个 Tablet(物理存储单元),实现并行计算

1

2

3

4

5

6

7

8

9

10

11

12

13

14

CREATE TABLE user_behavior (

    event_time DATETIME,

    user_id BIGINT,

    item_id BIGINT,

    behavior VARCHAR(32)

)

ENGINE=OLAP

DUPLICATE KEY(event_time, user_id)

PARTITION BY RANGE(event_time) (

    PARTITION p20241201 VALUES LESS THAN ("2024-12-02"),

    PARTITION p20241202 VALUES LESS THAN ("2024-12-03")

)

DISTRIBUTED BY HASH(user_id) BUCKETS 10;

3.物化视图(Materialized View)

自动构建预聚合索引,加速特定查询模式;查询时自动路由到最优物化视图(无需改写 SQL);支持 Rollup(上卷)、Bitmap 精确去重HLL 近似去重

1

2

3

4

5

6

7

8

CREATE MATERIALIZED VIEW uv_daily_mv

AS

SELECT

    DATE(event_time) AS dt,

    BITMAP_UNION(TO_BITMAP(user_id)) AS uv

FROM user_behavior

GROUP BY DATE(event_time);

4.向量化引擎 + CBO 优化器

向量化执行:一次处理 1024 行,大幅提升 CPU 利用率;基于成本的优化器(CBO):自动选择最优 Join 顺序、索引、聚合策略;支持 Runtime FilterPredicate Pushdown 等高级优化。

二、系统架构(Shared-Nothing MPP)

StarRocks 采用 无共享(Shared-Nothing) 架构,主要包含两类节点:

1.FE(Frontend)—— 元数据 & 查询协调

角色Leader FE:管理元数据(表结构、分区信息)、选举主节点;Follower FE:参与元数据写入(多数派共识);Observer FE:只读副本,提升高并发查询能力。功能:SQL 解析、查询计划生成;集群管理、负载均衡;兼容 MySQL 协议(客户端直连 FE)。

2.BE(Backend)—— 存储 & 计算

负责数据存储(Tablet)、本地计算、向量化执行;数据在 BE 上以 列式存储(Column-Oriented),支持 Parquet-like 编码;自动副本管理(默认 3 副本),支持跨机架容灾。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

+

|     Client (MySQL)  |

+

           |

     +

     |   FE (SQL解析, 优化)  |

     +

           |

   +

   | BE1 (Tablet A) | <

   +

           |                        |

   +

   | BE3 (副本)      |       | BE4 (副本)        |

   +

优势

无单点瓶颈,横向扩展;计算靠近数据(Data Locality);自动故障恢复。

三、核心使用语法(兼容 MySQL)

1.建表(关键参数)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

CREATE TABLE sales (

    sale_date DATE,

    region VARCHAR(32),

    product_id INT,

    amount DECIMAL(10,2),

    user_id BIGINT

)

ENGINE=OLAP

AGGREGATE KEY(sale_date, region, product_id)

PARTITION BY RANGE(sale_date) (

    START ("2024-01-01") END ("2025-01-01") EVERY (INTERVAL 1 DAY)

)

DISTRIBUTED BY HASH(product_id) BUCKETS 16

PROPERTIES(

    "replication_num" = "3",

    "storage_format" = "DEFAULT"

);

2.数据导入

方式 1:Stream Load(HTTP 推送)

1

2

3

4

curl

    -H "label:load_20241229" \

    -H "column_separator:," \

    -T data.csv http://fe_host:8030/api/db/sales/_stream_load

方式 2:Routine Load(Kafka 实时消费)

1

2

3

4

5

6

7

8

9

10

CREATE ROUTINE LOAD db.sales_kafka ON sales

PROPERTIES(

    "desired_concurrent_number"="3",

    "max_batch_interval" = "20"

)

FROM KAFKA(

    "kafka_broker_list" = "kafka:9092",

    "kafka_topic" = "sales_topic",

    "property.kafka_default_offsets" = "OFFSET_BEGINNING"

);

方式 3:Broker Load(从 HDFS/S3 批量导入)

1

2

3

4

5

LOAD LABEL db.load_hdfs_001

(DATA INFILE("hdfs://path/to/data.parquet")

 INTO TABLE sales

 FORMAT AS "parquet")

WITH BROKER "my_broker";

3.查询示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

SELECT

    u.city,

    SUM(s.amount) AS total

FROM sales s

JOIN user_dim u ON s.user_id = u.id

WHERE s.sale_date >= '2024-12-01'

GROUP BY u.city

ORDER BY total DESC

LIMIT 10;

SELECT

    COUNT(DISTINCT user_id) 

FROM user_behavior;

4.更新与删除(Unique Key 模型)

1

2

3

4

DELETE FROM sales WHERE sale_date < '2023-01-01';

四、核心优势 vs 传统 OLAP

能力StarRocksHive/SparkClickHouse查询延迟亚秒级秒~分钟级亚秒级实时更新✅(Unique Key)❌❌(ReplacingMergeTree 有限支持)标准 SQL✅(完整 JOIN、子查询)✅⚠️(JOIN 性能差)多表关联✅(Shuffle + Broadcast)✅❌物化视图✅(自动匹配)❌(需手动)✅(但难维护)运维复杂度低(无依赖)高(YARN/HDFS)中

五、典型应用场景

实时大屏:Kafka → StarRocks → Superset/Grafana;用户行为分析:埋点日志 → Duplicate Key 表 → 多维漏斗/留存;广告效果归因:Click/Impression 表 → Bitmap UV → ROI 计算;金融风控:交易流水 → Unique Key → 实时黑名单更新。

六、部署建议(生产环境)

FE:3 节点(1 Leader + 2 Follower),8C16G+;BE:≥3 节点,32C64G+,SSD 存储,万兆网络;监控:集成 Prometheus + Grafana(StarRocks 提供 exporter);备份:通过 EXPORT 命令导出到 HDFS/S3。

七、生态集成

BI 工具:Tableau、Power BI、Superset(通过 MySQL 协议连接);数据湖:支持 External Catalog(Hive/Iceberg/Hudi);流处理:Flink CDC → Kafka → Routine Load;云原生:支持 Kubernetes 部署(StarRocks Operator)。

总结

StarRocks = 高性能 + 实时性 + 易用性 + 开源免费

它解决了传统 OLAP “快而不全”(如 ClickHouse)或“全而不快”(如 Hive)的痛点,是当前国产开源 OLAP 引擎的标杆。如果你需要:

替代 Kylin/Druid 的预计算;替代 ClickHouse 的复杂分析;构建统一实时数仓,

那么 StarRocks 是一个非常值得投入的技术选型

到此这篇关于StarRocks(SR)的基本概念、架构及基本使用介绍的文章就介绍到这了,更多相关StarRocks使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

MySQL脚本转换为StarRocks的完整指南StarRocks数据库查询加速及Colocation Join工作原理StarRocks索引详解(最新整理)StarRocks数据库详解(什么是StarRocks)StarRocks简介与搭建使用详解高性能分析数据库StarRocks的安装与使用详解Spring Boot集成starrocks快速入门Demo(适用场景)得物基于StarRocks的OLAP需求实践详解

原文链接:https://blog.csdn.net/weixin_50659451/article/details/156419599

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 [email protected] 进行投诉反馈,一经查实,立即处理!

网址:StarRocks(SR)的基本概念、架构及基本使用详解 https://m.mxgxt.com/news/view/2036513

相关内容

StarRocks:从概念到应用的下一代分析型数据库
StarRocks x Paimon 构建极速实时湖仓分析架构实践
StarRocks分布式查询优化技术详解
如何使用Flink,通过CTAS语句同步MySQL数据至StarRocks
使用StarRocks构建高性能分析数据库的指南
UData+StarRocks在京东物流的实践
中间件与数据库:StarRocks的相关资料
StarRocks 数据库查询优化技术详解
StarRocks 数据库实时分析技术详解与优化实践
歌曲创作的步骤:基本流程、详细过程及要点概述

随便看看