StarRocks 是什么? 一文了解
你好,我是悟空。
在日趨實(shí)時(shí)的數(shù)據(jù)分析領(lǐng)域,一個(gè)開源項(xiàng)目在國(guó)內(nèi)數(shù)據(jù)庫(kù)圈逐漸嶄露頭角,它就是 StarRocks,這個(gè)分析型數(shù)據(jù)庫(kù)正在重新定義我們對(duì)實(shí)時(shí)數(shù)據(jù)處理的認(rèn)知。
StarRocks 是一款怎樣的產(chǎn)品?處于大數(shù)據(jù)生態(tài)的什么位置上?有什么功能特性?性能如何?
系好安全帶,數(shù)據(jù)庫(kù)知識(shí)分享發(fā)車了。
一、StarRocks 是什么?
StarRocks 是 Linux 基金會(huì)旗下項(xiàng)目,是新一代極速全場(chǎng)景 MPP 數(shù)據(jù)庫(kù),遵循 Apache 2.0 開源協(xié)議。其架構(gòu)簡(jiǎn)潔,采用了全面向量化引擎,并配備全新設(shè)計(jì)的 CBO 優(yōu)化器,實(shí)現(xiàn)亞秒級(jí)的查詢速度,尤其是多表關(guān)聯(lián)查詢表現(xiàn)尤為突出。StarRocks 還支持現(xiàn)代化物化視圖,進(jìn)一步加速查詢。
二、StarRocks 在數(shù)據(jù)生態(tài)的定位
隨著數(shù)據(jù)量的增長(zhǎng),需求的不斷迭代,原有的以 Hadoop 為核心的大數(shù)據(jù)生態(tài),在性能、實(shí)效性、運(yùn)維難度及靈活性等方面都難以滿足企業(yè)的需求,OLAP 數(shù)據(jù)庫(kù)面臨著越來越多的挑戰(zhàn),很難有一種數(shù)據(jù)庫(kù)能夠適配大部分的業(yè)務(wù),這時(shí)就出現(xiàn)諸如 Hive 、Druid、CK、ES、Presto 等多技術(shù)棧堆疊應(yīng)用的情況,雖然能解決問題,但是開發(fā)和運(yùn)維的成本、難度也隨之上升。
作為一款 MPP 架構(gòu)的分析性數(shù)據(jù)庫(kù),StarRocks 能夠支撐 PB 級(jí)別的數(shù)據(jù)量,擁有靈活的建模方式,可以通過向量化引擎、物化視圖、位圖索引、稀疏索引等優(yōu)化手段構(gòu)建極速統(tǒng)一的分析層數(shù)據(jù)存儲(chǔ)系統(tǒng)。
在整體的大數(shù)據(jù)生態(tài)中:
- 從上層應(yīng)用往下看,StarRocks 兼容了 MySQL 協(xié)議,可以平穩(wěn)的對(duì)接各種開源或者商業(yè) BI ?具,?如說 Tableau,F(xiàn)ineBI,SmartBI,Superset 等;
- 數(shù)據(jù)同步環(huán)節(jié),StarRocks 可以從 Oceanbase 等事務(wù)性數(shù)據(jù)庫(kù)中拉取業(yè)務(wù)數(shù)據(jù),通過 CloudCanal 等數(shù)據(jù)采集工具寫入 StarRocks。
- 中間的 ETL 工作可以在計(jì)算引擎中完成,例如使用 Flink 或 Spark。StarRocks 還提供了相應(yīng)的 Flink Connector 和 Spark Connector。
- 也可以采用 ELT 模式,在數(shù)據(jù)加載到 StarRocks 之后,利用 StarRocks 的物化視圖和實(shí)時(shí) Join 能力進(jìn)行數(shù)據(jù)建模。在 StarRocks 中可以選擇多種數(shù)據(jù)模型,如預(yù)聚合、寬表或靈活性較高的星型/雪花模型。
- 同時(shí),可以借助 Iceberg、Hive、Hudi 外表功能構(gòu)建一套湖倉(cāng)一體的架構(gòu)。數(shù)據(jù)湖中的有價(jià)值數(shù)據(jù)可以流入 StarRocks 進(jìn)行關(guān)聯(lián)查詢;而 StarRocks 中的隱藏價(jià)值數(shù)據(jù)或價(jià)值不高的數(shù)據(jù)也可以流入數(shù)據(jù)湖,以低成本方式存儲(chǔ)。
在經(jīng)過一系列的建模后,StarRocks 中的數(shù)據(jù)可以服務(wù)于多種消費(fèi)場(chǎng)景,比如說報(bào)表業(yè)務(wù)、實(shí)時(shí)指標(biāo)監(jiān)控、智能多維分析、客群圈選、自助 BI 業(yè)務(wù)。
三、架構(gòu)和功能特性
StarRocks 的架構(gòu)設(shè)計(jì)融合了 MPP 數(shù)據(jù)庫(kù)和分布式系統(tǒng)的設(shè)計(jì)思想,具有極簡(jiǎn)的架構(gòu)特點(diǎn)。整個(gè)系統(tǒng)由前端節(jié)點(diǎn)(FE)、后端節(jié)點(diǎn)(BE 和 CN)組成。這種設(shè)計(jì)使得 StarRocks 在部署和維護(hù)上更為簡(jiǎn)單,同時(shí)提升了系統(tǒng)的可靠性和擴(kuò)展性。
- 向量化引擎:StarRocks 采用向量化查詢引擎,通過并行執(zhí)行和減少數(shù)據(jù)訪問次數(shù),極大提升了數(shù)據(jù)處理速度。
- CBO(基于代價(jià)的優(yōu)化器):StarRocks 利用 CBO 智能選擇最優(yōu)的查詢執(zhí)行計(jì)劃,通過精確的成本估算優(yōu)化查詢性能。
- 高并發(fā)查詢:通過優(yōu)化查詢調(diào)度和資源分配,確保在多用戶同時(shí)訪問時(shí),系統(tǒng)能夠穩(wěn)定運(yùn)行并快速響應(yīng)每個(gè)查詢請(qǐng)求。
- 靈活數(shù)據(jù)建模:允許用戶根據(jù)業(yè)務(wù)需求構(gòu)建復(fù)雜的數(shù)據(jù)模型,如星型模型和雪花模型。這種靈活性支持了復(fù)雜的數(shù)據(jù)分析流程,提高了數(shù)據(jù)的組織和查詢效率。
- 智能物化視圖:用戶可以預(yù)定義和存儲(chǔ)復(fù)雜的查詢結(jié)果,通過預(yù)聚合數(shù)據(jù)提高查詢速度、降低存儲(chǔ)成本。StarRocks 同步和異步物化視圖均支持智能的透明改寫,可以按需靈活創(chuàng)建和刪除,在查詢時(shí)無需修改 SQL,自動(dòng)進(jìn)行改寫,性能及體驗(yàn)俱佳。
圖片
- 湖倉(cāng)一體能力:結(jié)合了數(shù)據(jù)湖的靈活性和數(shù)據(jù)倉(cāng)庫(kù)的分析能力,提供了一個(gè)統(tǒng)一的數(shù)據(jù)平臺(tái),簡(jiǎn)化了數(shù)據(jù)存儲(chǔ)、處理和分析的流程,無需在不同系統(tǒng)間遷移數(shù)據(jù)。
- 存算分離:StarRocks3.0 版本引入存算分離架構(gòu),實(shí)現(xiàn)計(jì)算與存儲(chǔ)的完全解耦,計(jì)算節(jié)點(diǎn)可以實(shí)現(xiàn)秒級(jí)的動(dòng)態(tài)擴(kuò)縮容。實(shí)現(xiàn)更靈活的數(shù)據(jù)分享、資源彈性伸縮、資源隔離,總體性能追平存算一體。
- 兼容性:提供 MySQL 協(xié)議接口,支持標(biāo)準(zhǔn) SQL 語法,用戶可以通過 MySQL 客戶端方便地查詢和分析 StarRocks 中的數(shù)據(jù)
圖片
這些特性使得 StarRocks 在數(shù)據(jù)處理和分析方面表現(xiàn)出色,還能在多租戶和資源管理方面提供有效的支持。
四、性能對(duì)比測(cè)試
SSB 單表場(chǎng)景性能測(cè)試:StarRocks、ClickHouse 和 Druid
在標(biāo)準(zhǔn)測(cè)試數(shù)據(jù)集的 13 個(gè)查詢上,StarRocks 整體查詢性能是 ClickHouse 的 2.1 倍,Apache Druid 的 8.7 倍。
StarRocks 啟用 Bitmap Index 后整體查詢性能是未啟用的 1.3 倍,此時(shí)整體查詢性能是 ClickHouse 的 2.8 倍,Apache Druid 的 11.4 倍。
圖片
采用 3x16core 64GB 內(nèi)存的云主機(jī),在 6 億行的數(shù)據(jù)規(guī)模進(jìn)行測(cè)試。
來源:https://docs.starrocks.io/zh/docs/benchmarking/SSB_Benchmarking/
TPC-H 基準(zhǔn)測(cè)試:StarRocks Hive 外表和 Trino 查詢
TPC-H 100G 規(guī)模的數(shù)據(jù)集上進(jìn)行對(duì)比測(cè)試,StarRocks 本地存儲(chǔ)查詢總耗時(shí)為 17s,StarRocks Hive 外表查詢總耗時(shí)為 92s,Trino 查詢總耗時(shí)為 187s。
圖片
該測(cè)試共包含 8 張表,數(shù)據(jù)量可設(shè)定從 1 GB~3 TB 不等。
來源:https://docs.starrocks.io/zh/docs/benchmarking/TPC-H_Benchmarking/
TPC-DS 性能測(cè)試:StarRocks 與 Trino
采用 TPC-DS1TB 數(shù)據(jù)集進(jìn)行測(cè)試,分別使用 StarRocks 和 Trino 查詢以 Apache Iceberg 表格式存儲(chǔ)的 Parquet 文件的相同數(shù)據(jù)副本, StarRocks 的整體查詢響應(yīng)時(shí)間比 Trino 快 5.54 倍。
來源:https://mp.weixin.qq.com/s/kEqyRO_aOnOnsROXllwA2g
五、StarRocks 是數(shù)據(jù)分析的最佳解決方案嗎?
在數(shù)據(jù)分析這個(gè)復(fù)雜多變的領(lǐng)域,不太可能存在一個(gè)放之四海而皆準(zhǔn)的解決方案。StarRocks 在某些方面的確表現(xiàn)出色,例如尤其是在處理大規(guī)模數(shù)據(jù)集時(shí)的查詢速度。
不過并非所有企業(yè)都需要如此高度的實(shí)時(shí)性,對(duì)于某些業(yè)務(wù)來說,批處理或準(zhǔn)實(shí)時(shí)分析可能已經(jīng)足夠。如果你處理的是小型數(shù)據(jù)集或簡(jiǎn)單查詢,它可能有點(diǎn)大材小用。但對(duì)于需要通過實(shí)時(shí)分析進(jìn)行商業(yè)決策和洞察的企業(yè)來說,StarRocks 或許是最佳解決方案,至于是否選擇 StarRocks,應(yīng)該基于對(duì)自身需求進(jìn)行技術(shù)對(duì)比和測(cè)試,也要看企業(yè)對(duì)資源和長(zhǎng)期戰(zhàn)略進(jìn)行深入評(píng)估。
參考:
https://zhuanlan.zhihu.com/p/532302941
https://docs.starrocks.io/docs/introduction/StarRocks_intro/