今天簡要介紹一下StarRocks?這個強大的數據庫。
注意:本文章內容僅供個人學習,不包含任何推薦性質。
StarRocks(原名?Doris)是一個高性能、全場景的MPP(大規模并行處理)分析型數據庫。它專為極速的多維聯機分析處理(OLAP) 而設計,能夠對海量數據進行實時和批量的多維分析、即席查詢和高并發報表。
官方網站獲取文檔和下載:https://www.starrocks.io
一、 特性與優勢
1.?性能
列式存儲引擎:數據按列存儲,在查詢時只需讀取相關列,極大減少了I/O消耗。
向量化執行引擎:利用CPU的SIMD指令,一次處理一批數據(一個向量),而不是一行數據,顯著提高了CPU利用率和查詢效率。
MPP架構: 查詢任務被并行分發到集群中的所有節點,各節點獨立處理自己負責的數據,最后匯總結果,實現了線性擴展。
CBO(基于成本的優化器): 擁有非常智能的優化器,能夠為復雜查詢選擇最優的執行計劃。
2.?實時分析
支持實時數據導入,數據寫入后立即可查。它支持從多種數據源(如Kafka、Flink、Spark等)通過物化視圖(Materialized View) 和?Bitmap?索引 等技術進行預聚合和加速,使得即使在大數據量下,聚合查詢也能在亞秒級返回。
3.?高并發
架構設計上避免了外部系統依賴(如ZooKeeper),并進行了大量優化,能夠支持數千甚至上萬的高并發查詢,非常適合作為企業統一的分析門戶或數據中臺的查詢引擎。
4.全面兼容?MySQL?協議
支持標準SQL-92,并且兼容MySQL網絡協議。這意味著你可以使用任何常見的MySQL客戶端、BI工具(如Tableau、Superset、FineBI)或應用程序直接連接StarRocks,學習成本和遷移成本極低。
5.?物化視圖
用戶可以在基表上創建多個物化視圖。StarRocks的優化器能夠自動、智能地選擇最優的物化視圖來響應查詢,無需在查詢語句中顯式指定,對應用透明,極大地加速了聚合查詢。
6.?易于運維
提供簡潔的前端(FE)和后臺(BE)架構,部署和運維相對簡單。
支持在線彈性擴縮容,可通過簡單的SQL命令添加或刪除節點,集群會自動進行數據重分布。
二、 技術架構
StarRocks?采用了一個非常簡潔的架構,主要由兩個角色組成:
1. Frontend (FE)
職責:負責元數據管理、客戶端連接管理、查詢規劃與調度。
組件:
nLeader FE: 主節點,負責元數據的寫入和日志。
nFollower FE: 從節點,參與選舉,提供元數據讀取服務。
nObserver FE: 觀察者節點,僅擴展元數據的讀取能力,不參與選舉。
通常通過BDB JE進行Leader和Follower之間的元數據同步。
2. Backend (BE)
職責:負責數據存儲和查詢執行。每個BE節點存儲一部分數據(Tablet),并執行FE下發的查詢任務。
數據分片:表的數據被水平分區為多個Tablet,每個Tablet有多個副本(通常為3),分布在不同BE上,保證了高可用和高性能。
三、適用場景:
實時數據看板與BI報表: 為業務人員提供高并發的自助分析平臺。
用戶行為分析:支持對海量用戶數據進行多維度、即席的探查與分析。
日志分析:替代ELK等方案,進行結構化的日志存儲與查詢。
統一查詢入口(數據網關):通過External Table功能,可以直接查詢Hive、Iceberg、Hudi、Elasticsearch等外部數據源,無需數據導入,實現“湖倉一體”分析。
高并發精準查詢:例如電商的訂單查詢、用戶畫像的標簽查詢等。
四、與其他OLAP數據庫的對比
特性 | StarRocks | ClickHouse | Apache Druid | Snowflake |
架構 | MPP | 無共享(Share-Nothing) | 分布式、列式 | 云原生、存儲計算分離 |
并發能力 | 極高 | 一般(單表) | 高 | 極高 |
實時攝入 | 支持 | 支持 | 非常擅長 | 支持(Streaming) |
查詢延遲 | 亞秒到秒級 | 亞秒級(簡單查詢) | 秒級 | 秒級 |
SQL兼容性 | 高(兼容MySQL) | 中等(方言) | 中等(方言) | 極高(標準SQL) |
易用性 | 簡單 | 較復雜 | 復雜 | 極簡(全托管) |
運維成本 | 低 | 高 | 高 | 無(SaaS) |
成本 | 開源/低成本 | 開源/低成本 | 開源/低成本 | 商業/按量付費 |
文章小結
StarRocks?是一個在性能、并發、實時性和易用性之間取得出色平衡的MPP數據庫,其極簡架構、向量化引擎和智能物化視圖,成為了大數據實時分析領域的一個OLAP解決方案。;適合需要高并發、低延遲查詢的企業級分析場景,支持自建數據中心和云上部署。
文章至此。