最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

StarRocks(SR)的基本概念、架構(gòu)及基本使用詳解

 更新時間:2026年01月06日 17:14:14   作者:阿坤帶你走近大數(shù)據(jù)  
StarRocks是一款高性能、實時、MPP架構(gòu)的現(xiàn)代化分布式SQL數(shù)據(jù)庫,適用于OLAP場景,支持標準SQL,具備亞秒級查詢響應能力,適用于實時報表、多維分析、用戶畫像等場景,本文介紹StarRocks(SR)的基本概念、架構(gòu)及基本使用介紹,感興趣的朋友跟隨小編一起看看吧

StarRocks(原名 DorisDB,后開源并更名為 StarRocks)是一款高性能、實時、MPP(大規(guī)模并行處理)架構(gòu)的現(xiàn)代化分布式 SQL 數(shù)據(jù)庫,專為 OLAP(在線分析處理) 場景設計。它兼容 MySQL 協(xié)議,支持標準 SQL,具備亞秒級查詢響應能力,適用于實時報表、即席查詢、多維分析、用戶畫像、日志分析等場景。

一、核心基礎概念

1.表模型(Table Model)

StarRocks 提供三種數(shù)據(jù)模型,適應不同業(yè)務場景:

模型適用場景特點
Aggregate Key(聚合模型)預聚合指標(如 sum、count)相同 key 的 value 自動聚合(如 sum(clicks))
Unique Key(唯一主鍵模型)實時更新、主鍵去重支持 Upsert,類似 Hudi/Iceberg 的主鍵更新
Duplicate Key(明細模型)日志、事件流等原始明細不聚合,保留所有記錄,支持排序鍵加速查詢

? 推薦

  • 實時數(shù)倉 → Unique Key(支持 CDC 更新)
  • 報表聚合 → Aggregate Key
  • 原始日志 → Duplicate Key

2.分區(qū)(Partition)與分桶(Bucket)

  • 分區(qū)(Partition):按時間/地域等邏輯切分數(shù)據(jù)(如 PARTITION BY RANGE(date)),用于分區(qū)裁剪。
  • 分桶(Bucket):每個分區(qū)內(nèi)按 Hash(分桶列) 分成多個 Tablet(物理存儲單元),實現(xiàn)并行計算。
-- 示例:按天分區(qū),按 user_id 分桶
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)

  • 自動構(gòu)建預聚合索引,加速特定查詢模式;
  • 查詢時自動路由到最優(yōu)物化視圖(無需改寫 SQL);
  • 支持 Rollup(上卷)、Bitmap 精確去重、HLL 近似去重
-- 創(chuàng)建物化視圖:按天統(tǒng)計 UV
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 優(yōu)化器

  • 向量化執(zhí)行:一次處理 1024 行,大幅提升 CPU 利用率;
  • 基于成本的優(yōu)化器(CBO):自動選擇最優(yōu) Join 順序、索引、聚合策略;
  • 支持 Runtime Filter、Predicate Pushdown 等高級優(yōu)化。

二、系統(tǒng)架構(gòu)(Shared-Nothing MPP)

StarRocks 采用 無共享(Shared-Nothing) 架構(gòu),主要包含兩類節(jié)點:

1.FE(Frontend)—— 元數(shù)據(jù) & 查詢協(xié)調(diào)

  • 角色
    • Leader FE:管理元數(shù)據(jù)(表結(jié)構(gòu)、分區(qū)信息)、選舉主節(jié)點;
    • Follower FE:參與元數(shù)據(jù)寫入(多數(shù)派共識);
    • Observer FE:只讀副本,提升高并發(fā)查詢能力。
  • 功能
    • SQL 解析、查詢計劃生成;
    • 集群管理、負載均衡;
    • 兼容 MySQL 協(xié)議(客戶端直連 FE)。

2.BE(Backend)—— 存儲 & 計算

  • 負責數(shù)據(jù)存儲(Tablet)、本地計算、向量化執(zhí)行;
  • 數(shù)據(jù)在 BE 上以 列式存儲(Column-Oriented),支持 Parquet-like 編碼;
  • 自動副本管理(默認 3 副本),支持跨機架容災。
+---------------------+
|     Client (MySQL)  |
+----------+----------+
           |
     +-----v-----+
     |   FE (SQL解析, 優(yōu)化)  |
     +-----+-----+
           |
   +-------v--------+       +------------------+
   | BE1 (Tablet A) | <---> | BE2 (Tablet B)   |
   +----------------+       +------------------+
           |                        |
   +-------v--------+       +------v-----------+
   | BE3 (副本)      |       | BE4 (副本)        |
   +----------------+       +------------------+

? 優(yōu)勢

  • 無單點瓶頸,橫向擴展;
  • 計算靠近數(shù)據(jù)(Data Locality);
  • 自動故障恢復。

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

1.建表(關(guān)鍵參數(shù))

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.數(shù)據(jù)導入

方式 1:Stream Load(HTTP 推送)

curl --location-trusted -u user:passwd \
    -H "label:load_20241229" \
    -H "column_separator:," \
    -T data.csv http://fe_host:8030/api/db/sales/_stream_load

方式 2:Routine Load(Kafka 實時消費)

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 批量導入)

LOAD LABEL db.load_hdfs_001
(DATA INFILE("hdfs://path/to/data.parquet")
 INTO TABLE sales
 FORMAT AS "parquet")
WITH BROKER "my_broker";

3.查詢示例

-- 多表 Join(支持 Shuffle/Broadcast)
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;
-- Bitmap 精確去重(UV)
SELECT 
    COUNT(DISTINCT user_id)  -- 自動轉(zhuǎn)為 BITMAP_UNION
FROM user_behavior;

4.更新與刪除(Unique Key 模型)

-- Upsert(通過 Stream Load 或 Routine Load)
-- 新數(shù)據(jù)自動覆蓋舊主鍵
-- Delete(謹慎使用,僅支持 Duplicate/Unique 模型)
DELETE FROM sales WHERE sale_date < '2023-01-01';

四、核心優(yōu)勢 vs 傳統(tǒng) OLAP

能力StarRocksHive/SparkClickHouse
查詢延遲亞秒級秒~分鐘級亞秒級
實時更新?(Unique Key)??(ReplacingMergeTree 有限支持)
標準 SQL?(完整 JOIN、子查詢)???(JOIN 性能差)
多表關(guān)聯(lián)?(Shuffle + Broadcast)??
物化視圖?(自動匹配)?(需手動)?(但難維護)
運維復雜度低(無依賴)高(YARN/HDFS)

五、典型應用場景

  1. 實時大屏:Kafka → StarRocks → Superset/Grafana;
  2. 用戶行為分析:埋點日志 → Duplicate Key 表 → 多維漏斗/留存;
  3. 廣告效果歸因:Click/Impression 表 → Bitmap UV → ROI 計算;
  4. 金融風控:交易流水 → Unique Key → 實時黑名單更新。

六、部署建議(生產(chǎn)環(huán)境)

  • FE:3 節(jié)點(1 Leader + 2 Follower),8C16G+;
  • BE:≥3 節(jié)點,32C64G+,SSD 存儲,萬兆網(wǎng)絡;
  • 監(jiān)控:集成 Prometheus + Grafana(StarRocks 提供 exporter);
  • 備份:通過 EXPORT 命令導出到 HDFS/S3。

七、生態(tài)集成

  • BI 工具:Tableau、Power BI、Superset(通過 MySQL 協(xié)議連接);
  • 數(shù)據(jù)湖:支持 External Catalog(Hive/Iceberg/Hudi);
  • 流處理:Flink CDC → Kafka → Routine Load;
  • 云原生:支持 Kubernetes 部署(StarRocks Operator)。

總結(jié)

StarRocks = 高性能 + 實時性 + 易用性 + 開源免費

它解決了傳統(tǒng) OLAP “快而不全”(如 ClickHouse)或“全而不快”(如 Hive)的痛點,是當前國產(chǎn)開源 OLAP 引擎的標桿。如果你需要:

  • 替代 Kylin/Druid 的預計算;
  • 替代 ClickHouse 的復雜分析;
  • 構(gòu)建統(tǒng)一實時數(shù)倉,

那么 StarRocks 是一個非常值得投入的技術(shù)選型。

到此這篇關(guān)于StarRocks(SR)的基本概念、架構(gòu)及基本使用介紹的文章就介紹到這了,更多相關(guān)StarRocks使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解嵌入式SQL

    一文詳解嵌入式SQL

    本文主要介紹了一文詳解嵌入式SQL,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • MS SQL Server排查多列之間的值是否重復的功能實現(xiàn)

    MS SQL Server排查多列之間的值是否重復的功能實現(xiàn)

    在日常的應用中,排查列重復記錄是經(jīng)常遇到的一個問題,但某些需求下,需要我們排查一組列之間是否有重復值的情況,本文給大家介紹了MS SQL Server排查多列之間的值是否重復的功能實現(xiàn),需要的朋友可以參考下
    2024-09-09
  • ADO.NET數(shù)據(jù)連接池剖析

    ADO.NET數(shù)據(jù)連接池剖析

    本篇文章起源于在GCR MVP Open Day的時候和C# MVP討論連接池的概念而來的。因此單獨寫一篇文章剖析一下連接池
    2012-11-11
  • sql自動化檢查和分析工具 之soar和soar-web 安裝和使用體驗

    sql自動化檢查和分析工具 之soar和soar-web 安裝和使用體驗

    這篇文章主要介紹了sql自動化檢查和分析工具 之soar和soar-web 安裝和使用體驗,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 詳解SQL?Server?中的?ACID?屬性

    詳解SQL?Server?中的?ACID?屬性

    SQL?Server?中的事務是一組被視為一個單元的?SQL?語句,它們按照“做所有事或不做任何事”的原則執(zhí)行,成功的事務必須通過?ACID?測試,這篇文章主要介紹了SQL?Server?中的?ACID?屬性,需要的朋友可以參考下
    2022-07-07
  • SqlServer參數(shù)化查詢之where in和like實現(xiàn)詳解

    SqlServer參數(shù)化查詢之where in和like實現(xiàn)詳解

    若有一天你不可避免的需要提高SQL的查詢性能,需要一次性where in 幾百、上千、甚至上萬條數(shù)據(jù)時,參數(shù)化查詢將是必然進行的選擇
    2012-05-05
  • 淺談SQL不走索引的幾種常見情況

    淺談SQL不走索引的幾種常見情況

    本文主要介紹了MySQL中SQL不走索引的常見原因,如條件未命中索引或查詢類型導致全表掃描,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-06-06
  • 解析如何用SQL語句在指定字段前面插入新的字段

    解析如何用SQL語句在指定字段前面插入新的字段

    本篇文章是對如何用SQL語句在指定字段前面插入新的字段的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • SQL Server 索引維護sql語句

    SQL Server 索引維護sql語句

    SQL Server 索引維護sql語句,有需要的朋友可以參考下。
    2009-08-08
  • sql server把退款總金額拆分到盡量少的多個訂單中詳解

    sql server把退款總金額拆分到盡量少的多個訂單中詳解

    這篇文章主要給大家介紹了關(guān)于sql server把退款總金額拆分到盡量少的多個訂單中的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12

最新評論

乌苏市| 邯郸市| 南昌县| 泗水县| 榆树市| 金门县| 日喀则市| 东兰县| 恭城| 芷江| 乌兰察布市| 海宁市| 枣阳市| 汝州市| 五大连池市| 虎林市| 芷江| 平昌县| 恩平市| 会昌县| 延寿县| 通州区| 沐川县| 莱芜市| 城步| 罗甸县| 灌阳县| 金寨县| 东港市| 乃东县| 贵溪市| 贵南县| 南雄市| 临猗县| 内江市| 镇江市| 郁南县| 清徐县| 延津县| 庆城县| 商都县|