開(kāi)源大數(shù)據(jù) OLAP 的思考及優(yōu)秀實(shí)踐
一、開(kāi)源 OLAP 綜述
近年來(lái)開(kāi)源領(lǐng)域涌現(xiàn)出了眾多優(yōu)秀產(chǎn)品,如 StarRocks、Doris、湖數(shù)據(jù)、湖格式、Spark 以及早期的 HBase、Presto 等。種類(lèi)繁多的開(kāi)源工具為用戶(hù)帶來(lái)了便利,同時(shí)也帶來(lái)了選擇難題。
上圖中對(duì)各種數(shù)據(jù)庫(kù)做了簡(jiǎn)單的分類(lèi)。例如,StarRocks、Doris 和 CK 等,它們?cè)谶^(guò)去主要是存算一體的 AP 數(shù)據(jù)庫(kù)。而 Presto、Trino 和 Impala 等則是經(jīng)典的基于 Hadoop 的 MPP 引擎。此外,Kylin、Hbase 和 Druid 等在預(yù)處理方面有較多應(yīng)用。還有一類(lèi)是近年來(lái)流行的湖格式(湖存儲(chǔ))工具,其中包括 Delta lake、Hudi、Iceberg,以及幾個(gè)月前剛孵化的 Apache Paimon 等。
二、OLAP 場(chǎng)景思考
OLAP 場(chǎng)景涉及的技術(shù)棧眾多,應(yīng)該如何選擇呢?回答這個(gè)問(wèn)題,首先從場(chǎng)景層面去思考。OLAP 涉及的典型業(yè)務(wù)場(chǎng)景包括,面向用戶(hù)的報(bào)表、面向經(jīng)營(yíng)的報(bào)表、用戶(hù)畫(huà)像、運(yùn)營(yíng)分析、訂單分析以及自助分析等。
面向廣告主、門(mén)店經(jīng)理以及 ToB 端的報(bào)表業(yè)務(wù),這些場(chǎng)景有一個(gè)共同特點(diǎn),即需要根據(jù)用戶(hù)的 User ID 等屬性進(jìn)行快速檢索,對(duì)查詢(xún)性能有較高要求,同時(shí)存在一定量的并發(fā)請(qǐng)求。當(dāng)然,這里的并發(fā)與 ToC 的場(chǎng)景有所不同。
針對(duì)這些特點(diǎn),一款優(yōu)秀的 OLAP 引擎在技術(shù)上應(yīng)滿(mǎn)足以下要求:首先,具備前綴索引功能,這樣在構(gòu)建好索引之后,查詢(xún)性能將得到顯著提升;其次,向量化引擎也是一個(gè)重要趨勢(shì),最早由 CK 提出,如今許多引擎都在朝這個(gè)方向發(fā)展,向量化確實(shí)能夠在很大程度上提高查詢(xún)速度;此外,數(shù)據(jù)分布的均衡和自動(dòng)反向處理也是關(guān)鍵,有助于避免數(shù)據(jù)傾斜等問(wèn)題。
經(jīng)營(yíng)報(bào)表類(lèi)場(chǎng)景中,例如實(shí)時(shí)大屏展示、實(shí)時(shí)風(fēng)控、實(shí)時(shí)監(jiān)控和審計(jì)等業(yè)務(wù),它們的核心需求是數(shù)據(jù)的實(shí)時(shí)性,即在業(yè)務(wù)數(shù)據(jù)寫(xiě)入后,盡可能早地獲取到這些數(shù)據(jù)。實(shí)時(shí)性的重要性在于,它會(huì)影響后續(xù)策略響應(yīng)的速度。同時(shí),在查詢(xún)過(guò)程中,我們希望查詢(xún)性能足夠優(yōu)秀。
此外,這些業(yè)務(wù)還有一個(gè)重要特點(diǎn),即需要對(duì)接商業(yè)化的 BI 工具。這意味著我們的 SQL 處理流程需具備較高的多樣性,以滿(mǎn)足不斷變化的分區(qū)需求。在此基礎(chǔ)上,我們還需要對(duì)數(shù)據(jù)模型進(jìn)行精細(xì)設(shè)計(jì),以滿(mǎn)足多樣化的需求。
末端運(yùn)營(yíng)分析類(lèi)場(chǎng)景,例如鏈家等企業(yè)的經(jīng)紀(jì)人績(jī)效計(jì)算以及買(mǎi)菜類(lèi)應(yīng)用的團(tuán)長(zhǎng)報(bào)表等。這些業(yè)務(wù)的一個(gè)共同特點(diǎn)是,經(jīng)紀(jì)人不斷變動(dòng),組織架構(gòu)頻繁調(diào)整,導(dǎo)致尾表變化愈發(fā)頻繁。
此外,這些業(yè)務(wù)對(duì)查詢(xún)性能和數(shù)據(jù)可見(jiàn)性有一定要求。最重要的特點(diǎn)是計(jì)算邏輯復(fù)雜,即 join 條件繁多。因此,OLAP 引擎要能夠支持靈活的數(shù)據(jù)模型,而不僅僅局限于大寬表。針對(duì)新型 join 支持方面,當(dāng)前市面上的部分產(chǎn)品仍不夠完善。為了提升性能,大家普遍希望在物化視圖等方面具備一定能力。
在用戶(hù)畫(huà)像這一業(yè)務(wù)場(chǎng)景中,面臨的主要需求是大寬表的處理。CK 引擎在用戶(hù)畫(huà)像領(lǐng)域得到了廣泛應(yīng)用。然而,某些場(chǎng)景下需要處理不同標(biāo)簽的組合查詢(xún)。此外,用戶(hù)畫(huà)像業(yè)務(wù)對(duì)精確去重有較高要求。
從引擎?zhèn)葋?lái)看,需要支持大寬表以滿(mǎn)足業(yè)務(wù)需求。然而,更新大寬表時(shí),不能每次都能更新兩三千列數(shù)據(jù),因此更新能力顯得尤為重要。此外,多流 join 支持以及 join 查詢(xún)能力優(yōu)化也是關(guān)鍵。在此基礎(chǔ)上,還要求引擎支持 bitmap 精確查詢(xún),以滿(mǎn)足用戶(hù)畫(huà)像業(yè)務(wù)的高效處理需求。
訂單分析場(chǎng)景中,數(shù)據(jù)實(shí)時(shí)性和復(fù)雜的查詢(xún)邏輯是兩個(gè)核心要點(diǎn)。實(shí)際上,回顧前面提到的各個(gè)場(chǎng)景,我們會(huì)發(fā)現(xiàn)訂單分析場(chǎng)景與其他場(chǎng)景在業(yè)務(wù)特點(diǎn)和技術(shù)要求方面存在一定程度的共性。
訂單分析業(yè)務(wù)對(duì)實(shí)時(shí)性有較高要求,以便快速響應(yīng)業(yè)務(wù)變化。同時(shí),由于訂單數(shù)據(jù)的豐富性和多樣性,查詢(xún)邏輯往往較為復(fù)雜。這意味著我們需要為訂單分析場(chǎng)景提供高性能、易用且支持復(fù)雜查詢(xún)的解決方案。
在打造一款 OLAP 引擎產(chǎn)品時(shí),需要重點(diǎn)關(guān)注以下幾個(gè)基礎(chǔ)方面:
首先,強(qiáng)化多表關(guān)聯(lián)(join)的能力支持,包括功能層面的語(yǔ)法支持和性能層面的優(yōu)化。多表關(guān)聯(lián)是 OLAP 查詢(xún)的核心環(huán)節(jié),對(duì)于處理復(fù)雜數(shù)據(jù)場(chǎng)景至關(guān)重要。
其次,現(xiàn)代化引擎解決方案的必備能力,如 CBO(Cost-Based Optimization)和向量化查詢(xún)等。這些能力可以使產(chǎn)品在市場(chǎng)上具有競(jìng)爭(zhēng)力,更好地解決各類(lèi)業(yè)務(wù)場(chǎng)景問(wèn)題。
此外,并發(fā)能力也是一項(xiàng)重要指標(biāo)。在高并發(fā)場(chǎng)景下,OLAP 引擎需要具備穩(wěn)定的性能表現(xiàn)和擴(kuò)展性。在數(shù)據(jù)寫(xiě)入方面需要提高性能,高效的數(shù)據(jù)寫(xiě)入能力有助于 OLAP 產(chǎn)品更好地滿(mǎn)足業(yè)務(wù)場(chǎng)景需求。
其他方面包括功能和架構(gòu)的優(yōu)化,如開(kāi)發(fā)效率、UDF(用戶(hù)自定義函數(shù))支持等。以 Java UDF 為例,相比 C++ UDF,Java 的易用性更高,有利于提高開(kāi)發(fā)效率。
最后,還要考慮架構(gòu)的運(yùn)維便利性。良好的 OLAP 產(chǎn)品應(yīng)具備簡(jiǎn)潔的運(yùn)維方式,便于平臺(tái)側(cè)進(jìn)行管理和維護(hù)。
三、開(kāi)源數(shù)據(jù)湖/流式數(shù)倉(cāng)解決方案
下面介紹阿里云 EMR(E-MapReduce)平臺(tái)上常見(jiàn)的開(kāi)源數(shù)據(jù)倉(cāng)庫(kù)及數(shù)據(jù)湖的架構(gòu)。首先,來(lái)介紹一下 EMR 的整體架構(gòu)。
EMR 基礎(chǔ)架構(gòu)的最底層是云資源,主要包括 ECS(彈性計(jì)算服務(wù))和 ACK(阿里云容器服務(wù))。在此基礎(chǔ)上,我們采用調(diào)度器來(lái)協(xié)調(diào)和控制數(shù)據(jù)處理流程。此外,我們還提供 JindoFS,這是一種與 Hadoop 兼容的分布式文件系統(tǒng),便于用戶(hù)存儲(chǔ)和管理數(shù)據(jù)。
接下來(lái)進(jìn)一步討論阿里云 EMR 平臺(tái)上計(jì)算引擎的多樣化應(yīng)用,包括離線(xiàn)批處理、實(shí)時(shí) Flink 以及 OLAP 相關(guān)引擎。
目前,典型的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)仍以離線(xiàn)批處理為主。這種架構(gòu)中,實(shí)時(shí)數(shù)據(jù)通過(guò) CDC 技術(shù)收集,并通過(guò) Kafka 等消息隊(duì)列傳輸至 Flink 等實(shí)時(shí)處理引擎。經(jīng)過(guò)處理后的數(shù)據(jù)直接落地到 OLAP 引擎,以支持快速數(shù)據(jù)分析。
離線(xiàn)部分主要包括 ODS/ DWD 等分層,采用傳統(tǒng)的 Hive 技術(shù)進(jìn)行數(shù)據(jù)處理。然而,這種架構(gòu)中實(shí)時(shí)與離線(xiàn)數(shù)據(jù)處理相對(duì)獨(dú)立,因此數(shù)據(jù)對(duì)齊成為一個(gè)常見(jiàn)問(wèn)題。
為解決這一問(wèn)題,近年來(lái)興起了近實(shí)時(shí)數(shù)據(jù)湖架構(gòu),如 Delta、Iceberg、Hudi 等。這些新型數(shù)據(jù)存儲(chǔ)格式旨在提高數(shù)據(jù)存儲(chǔ)和處理的性能,同時(shí)簡(jiǎn)化數(shù)據(jù)對(duì)齊問(wèn)題。新興的 Apache Paimon 也為解決數(shù)據(jù)對(duì)齊問(wèn)題提供了有效支持。
實(shí)時(shí)數(shù)據(jù)湖架構(gòu)也是 EMR 平臺(tái)上常見(jiàn)的一種數(shù)據(jù)處理架構(gòu)。在這種架構(gòu)中,實(shí)時(shí)數(shù)據(jù)從 CDC 模式或直接從 Kafka 攝入,并在各個(gè)層次上進(jìn)行增量處理。相較于 Lambda 架構(gòu),實(shí)時(shí)數(shù)據(jù)湖架構(gòu)在數(shù)據(jù)鏈路上實(shí)現(xiàn)了統(tǒng)一,從而降低了數(shù)據(jù)校驗(yàn)等環(huán)節(jié)的工作量。
在這種架構(gòu)中,常見(jiàn)的 OLAP 查詢(xún)引擎直接訪(fǎng)問(wèn)數(shù)據(jù)湖,或者作為末端的 ADS層為業(yè)務(wù)部門(mén)提供服務(wù)。通過(guò)實(shí)時(shí)數(shù)據(jù)湖架構(gòu),企業(yè)可以更高效地處理和分析數(shù)據(jù),進(jìn)而提升業(yè)務(wù)決策的敏捷性和準(zhǔn)確性。
下面來(lái)描述一個(gè)典型的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)。在該架構(gòu)中,借助 Kafka 作為消息隊(duì)列,使用 Flink 進(jìn)行各層次的數(shù)據(jù)處理。同時(shí),將處理后的數(shù)據(jù)同步到類(lèi)似 StarRocks 的分析型數(shù)據(jù)庫(kù),以提高用戶(hù)分析的性能。
基于 StarRocks 進(jìn)行實(shí)時(shí)數(shù)據(jù)分析,其優(yōu)勢(shì)包括當(dāng)前應(yīng)用以及未來(lái)可能的演進(jìn)方向。在這種架構(gòu)中,我們采用物化視圖策略,首先將基礎(chǔ)數(shù)據(jù)同步到 StarRocks 內(nèi)部。然后,通過(guò)離線(xiàn)物化視圖的批量調(diào)度能力,實(shí)現(xiàn)各層次數(shù)據(jù)的刷新。
這種架構(gòu)的主要優(yōu)勢(shì)在于,整個(gè)數(shù)據(jù)分析過(guò)程都在 StarRocks 引擎內(nèi)完成,降低了引入復(fù)雜引擎和組件的需求。從維護(hù)角度來(lái)看,這種架構(gòu)使得平臺(tái)更加簡(jiǎn)潔,方便運(yùn)維和管理。
四、StarRocks 介紹
接下來(lái)詳細(xì)介紹 StarRocks 的架構(gòu)和核心特性。
StarRocks 的核心優(yōu)勢(shì)在于,它能夠有效應(yīng)對(duì)前面所提及的各種場(chǎng)景。它具有如下四個(gè)關(guān)鍵特點(diǎn):
- 高查詢(xún)性能:StarRocks 以其卓越的查詢(xún)性能脫穎而出,能夠迅速返回查詢(xún)結(jié)果,滿(mǎn)足用戶(hù)對(duì)實(shí)時(shí)數(shù)據(jù)的需求。
- 高效數(shù)據(jù)導(dǎo)入:StarRocks 在數(shù)據(jù)導(dǎo)入方面表現(xiàn)出色,具有較高的吞吐量和較小的延遲,能夠保證數(shù)據(jù)的快速導(dǎo)入和同步。
- 良好的并發(fā)支持:StarRocks 具備強(qiáng)大的并發(fā)處理能力,可支持多個(gè)并發(fā)任務(wù)同時(shí)進(jìn)行,提高系統(tǒng)性能和利用率。
- 豐富的數(shù)據(jù)模型:StarRocks 提供了多樣化的數(shù)據(jù)模型,便于進(jìn)行多維數(shù)據(jù)分析。用戶(hù)可以根據(jù)實(shí)際需求,選擇合適的數(shù)據(jù)模型進(jìn)行數(shù)據(jù)處理和分析。
在業(yè)務(wù)側(cè)的整體分層架構(gòu)中,StarRocks 在分析層發(fā)揮著關(guān)鍵作用。它實(shí)現(xiàn)了極速統(tǒng)一的解決方案,能夠覆蓋前面提到的各種業(yè)務(wù)場(chǎng)景。通過(guò) StarRocks 的高性能、高吞吐量、低延遲等特點(diǎn),用戶(hù)可以快速地獲取數(shù)據(jù),實(shí)現(xiàn)高效的數(shù)據(jù)分析。在此基礎(chǔ)上,StarRocks 豐富的數(shù)據(jù)模型支持多種數(shù)據(jù)處理和分析方式,進(jìn)一步滿(mǎn)足用戶(hù)在多維數(shù)據(jù)分析方面的需求。
以 StarRocks 為核心,包括數(shù)據(jù)導(dǎo)入、查詢(xún)等等在內(nèi),整個(gè)生態(tài)鏈路完備。
StarRocks 具有架構(gòu)清晰、簡(jiǎn)單的特點(diǎn)。整體上,分為兩個(gè)角色:FE 和 BE。
FE 主要負(fù)責(zé)查詢(xún)解析和優(yōu)化,生成物理執(zhí)行計(jì)劃。FE 采用了高可用設(shè)計(jì),確保在出現(xiàn)故障時(shí)能夠自動(dòng)進(jìn)行容錯(cuò)處理。通過(guò)內(nèi)部實(shí)現(xiàn)的一致性協(xié)議元數(shù)據(jù)同步,即使在 FE 宕機(jī)的情況下,系統(tǒng)也能保持穩(wěn)定運(yùn)行。
BE 在存算分離之前,扮演計(jì)算執(zhí)行引擎和存儲(chǔ)引擎的角色。BE 通常采用多副本策略,以確保數(shù)據(jù)安全性。當(dāng)某臺(tái) BE 宕機(jī)時(shí),數(shù)據(jù)系統(tǒng)會(huì)自動(dòng)進(jìn)行遷移,不會(huì)影響查詢(xún)性能。同時(shí),系統(tǒng)具備自愈功能,能夠在其他機(jī)器上自動(dòng)補(bǔ)全缺失的副本,保證數(shù)據(jù)的完整性和一致性。
從性能層面來(lái)看,全面向量化引擎是 StarRocks 的一個(gè)重要特點(diǎn)。之所以強(qiáng)調(diào)“全面”,是因?yàn)橹挥性谡麄€(gè)處理鏈路上都沒(méi)有短板,才能實(shí)現(xiàn)高效的向量化引擎。目前市場(chǎng)上許多產(chǎn)品都聲稱(chēng)具備向量化能力,但真正能實(shí)現(xiàn)全面向量化的引擎并不多。
StarRocks 全面向量化引擎的優(yōu)勢(shì)表現(xiàn)在以下幾個(gè)方面:
- 避免性能瓶頸:全面向量化引擎在 Shuffle 和 Join 等環(huán)節(jié)都能高效處理數(shù)據(jù),避免了單一環(huán)節(jié)成為性能瓶頸。
- 更高的查詢(xún)性能:通過(guò)引入向量化技術(shù),StarRocks 在核心計(jì)算環(huán)節(jié)相對(duì)于傳統(tǒng)引擎有顯著優(yōu)勢(shì)。例如,虛函數(shù)調(diào)用和 CPU 調(diào)度等操作都能實(shí)現(xiàn)高效優(yōu)化。
- 優(yōu)化系統(tǒng)資源利用:全面向量化引擎能夠更充分地利用系統(tǒng)資源,進(jìn)一步提高整體性能。
第二個(gè)對(duì)性能有重大影響的是 StarRocks 采用了代價(jià)驅(qū)動(dòng)的優(yōu)化策略(CBO)。CBO 主要針對(duì) Join 場(chǎng)景,通過(guò)計(jì)算每個(gè) Join 操作的代價(jià),動(dòng)態(tài)調(diào)整 Join 順序和優(yōu)化查詢(xún)計(jì)劃。這張圖是業(yè)界參考的經(jīng)典論文,展示了 CBO 引擎的工作原理。在 CMU 的相關(guān)課程中也有對(duì) CBO 的介紹。
通過(guò) CBO,StarRocks 能夠?qū)崿F(xiàn) Join 操作的順序調(diào)整和改寫(xiě),從而支持多種 Join 類(lèi)型,使其在復(fù)雜業(yè)務(wù)場(chǎng)景下具有優(yōu)越的性能。這也是 StarRocks 能夠應(yīng)對(duì)多種多轉(zhuǎn)場(chǎng)景的核心技術(shù)之一。
StarRocks 在 Join 操作方面主要支持兩種模式:Shuffle Join 和 Colocation Join。這兩種模式相結(jié)合可以實(shí)現(xiàn)高效的數(shù)據(jù)處理和分析。
Shuffle Join:包括 Broadcast Join 在內(nèi)的 Shuffle Join 模式,主要用于總體匯總場(chǎng)景。在這種模式下,StarRocks 通過(guò)對(duì)數(shù)據(jù)進(jìn)行隨機(jī)分發(fā)和重組,實(shí)現(xiàn)不同表之間的 Join 操作。
Colocation Join:針對(duì)某些特殊業(yè)務(wù)場(chǎng)景,StarRocks 建議使用 Colocation Join 方式。這種模式可以根據(jù)業(yè)務(wù)需求,保證兩張表的數(shù)據(jù)分布完全一致。在查詢(xún)過(guò)程中,避免了遠(yuǎn)端數(shù)據(jù)傳輸帶來(lái)的延遲,提高了處理效率。
前面介紹了 StarRocks 在查詢(xún)側(cè)的關(guān)鍵性能優(yōu)化點(diǎn),接下來(lái)介紹導(dǎo)入側(cè)的特點(diǎn)。在實(shí)時(shí)分析鏈路圖中可以看到,StarRocks 支持實(shí)時(shí)導(dǎo)入組件模型。
組件模型相對(duì)于傳統(tǒng)更新模型(如 Doris 早期的更新模型)在設(shè)計(jì)上進(jìn)行了優(yōu)化,實(shí)現(xiàn)了寫(xiě)入和查詢(xún)之間的性能平衡。在傳統(tǒng)更新模型中,導(dǎo)入速度較快,但查詢(xún)時(shí)可能需要合并多個(gè)小文件,導(dǎo)致內(nèi)存操作較重。
組件模型的核心優(yōu)勢(shì)在于:
- 引入主鍵索引:在導(dǎo)入數(shù)據(jù)時(shí),StarRocks 首先創(chuàng)建主鍵索引,以便知道寫(xiě)入的 key 在哪個(gè)歷史文件中。基于這個(gè)信息,可以更新 DELETE 信息以避免無(wú)效查詢(xún)。
- 高效的實(shí)現(xiàn):盡管引入了主鍵索引,但 StarRocks 保證了寫(xiě)入性能不會(huì)受到太大影響。這是因?yàn)橹麈I索引的實(shí)現(xiàn)較為高效,整體上與傳統(tǒng)導(dǎo)入方式的速度差距不大。
- 查詢(xún)性能優(yōu)化:由于有了 deliver vector 信息,StarRocks 無(wú)需進(jìn)行排序合并。同時(shí),謂詞可以進(jìn)行下推,進(jìn)一步提高查詢(xún)性能。
- 物化視圖:StarRocks 從 2.5 版本開(kāi)始,對(duì)物化視圖的支持較為完備。物化視圖可以大幅提高實(shí)時(shí)分析的性能,尤其是針對(duì)增量數(shù)據(jù)。
StarRocks 致力于為用戶(hù)帶來(lái)更好的分析體驗(yàn),特別是在查詢(xún)性能方面。為了實(shí)現(xiàn)這一目標(biāo),StarRocks 重點(diǎn)關(guān)注了用戶(hù)分析相關(guān)的工作,希望能夠吸引 Presto 和 Impala 等產(chǎn)品的用戶(hù),讓他們能夠在 StarRocks 上享受到上層查詢(xún)優(yōu)化能力,同時(shí)不影響性能。
StarRocks 在這方面取得了顯著的成果。如下圖所示,相對(duì)于 Trino、Presto 等競(jìng)爭(zhēng)對(duì)手,StarRocks 在大多數(shù)基準(zhǔn)測(cè)試和實(shí)際客戶(hù)案例中,性能提升了 3-5 位。這一成果得益于 StarRocks 不斷優(yōu)化查詢(xún)引擎和底層架構(gòu),為用戶(hù)提供了更高效、穩(wěn)定的分析解決方案。
以上是另一份性能報(bào)告。
從 2.3 版本開(kāi)始,StarRocks 推出了 PIPELINE 引擎,旨在進(jìn)一步提高 CPU 利用率。在并發(fā)場(chǎng)景下,基于 PIPELINE 引擎,StarRocks 能夠?qū)崿F(xiàn)較為良好的資源隔離能力。這種能力使得 StarRocks 在處理大小查詢(xún)以及 ETL 任務(wù)時(shí),能夠盡量彈性地進(jìn)行資源分配。例如,當(dāng)某些 ETL 任務(wù)較為繁重時(shí),如果沒(méi)有資源隔離,其他在線(xiàn)查詢(xún)?nèi)蝿?wù)可能會(huì)受到較大影響。而 StarRocks 的資源隔離能力則可以有效降低這種影響,確保系統(tǒng)穩(wěn)定運(yùn)行。
資源隔離是 StarRocks 核心能力之一,對(duì)于并發(fā)場(chǎng)景具有顯著的優(yōu)化效果。通過(guò)提高 CPU 利用率和完善資源隔離機(jī)制,StarRocks 能夠?yàn)橛脩?hù)提供更高效、穩(wěn)定的分析解決方案,滿(mǎn)足各種復(fù)雜場(chǎng)景下的需求。
最后一項(xiàng)核心能力是數(shù)據(jù)間的均衡。散落的數(shù)據(jù)之間的均衡依賴(lài)于存儲(chǔ)和計(jì)算的分離,這種分離使得 StarRocks 能夠?qū)崿F(xiàn)彈性的擴(kuò)容。
當(dāng)添加新節(jié)點(diǎn)時(shí),StarRocks 能夠自動(dòng)將數(shù)據(jù)均衡分布到新節(jié)點(diǎn)上,確保每個(gè)節(jié)點(diǎn)的存儲(chǔ)量均衡。在副本方面,即使出現(xiàn)丟失的情況,StarRocks 也能自動(dòng)進(jìn)行恢復(fù)。只要確保多副本中至少有一個(gè)副本可用,StarRocks 就能保證數(shù)據(jù)的完整性和可靠性。
五、未來(lái)規(guī)劃
StarRocks 3.x 版本演進(jìn)的關(guān)鍵點(diǎn)包括:
- 存儲(chǔ)和計(jì)算分離:這是 StarRocks 3.x 版本的核心優(yōu)化之一。
- Lake House:StarRocks 3.x 版本將支持硬字聯(lián)合力,使得在存儲(chǔ)和計(jì)算分離的基礎(chǔ)上,實(shí)現(xiàn)多倉(cāng)庫(kù)、多作業(yè)的能力變得更加便捷。此外,針對(duì) ETL 場(chǎng)景,StarRocks 也在不斷優(yōu)化和完善產(chǎn)品自身能力。
- 場(chǎng)景優(yōu)化:去年,StarRocks 重點(diǎn)關(guān)注了 Big House 場(chǎng)景,并已實(shí)現(xiàn)較為成熟的能力。目前,許多客戶(hù)正在使用這一場(chǎng)景。建議關(guān)注這一場(chǎng)景的用戶(hù)進(jìn)行嘗試。
- ETL 能力優(yōu)化:StarRocks 針對(duì)算落盤(pán)等場(chǎng)景進(jìn)行了重點(diǎn)優(yōu)化,并支持增量物化視圖。實(shí)時(shí)更新物化視圖的同時(shí),導(dǎo)入端也實(shí)現(xiàn)了統(tǒng)一。
- 簡(jiǎn)化用戶(hù)體驗(yàn):StarRocks 致力于簡(jiǎn)化導(dǎo)入方式,降低用戶(hù)學(xué)習(xí)成本。針對(duì)不同場(chǎng)景,StarRocks 提供了相應(yīng)的導(dǎo)入方式。例如,Snowflake 在這方面做得非常好,StarRocks 也將借鑒其經(jīng)驗(yàn),優(yōu)化用戶(hù)體驗(yàn)。
- 半結(jié)構(gòu)化數(shù)據(jù)類(lèi)型支持:針對(duì)數(shù)據(jù)庫(kù)場(chǎng)景,StarRocks 3.x 版本增加了對(duì)半結(jié)構(gòu)化數(shù)據(jù)類(lèi)型的支持,以滿(mǎn)足此類(lèi)場(chǎng)景用戶(hù)的需求。
總之,StarRocks 3.x 版本在多個(gè)方面進(jìn)行了優(yōu)化和升級(jí),包括存儲(chǔ)和計(jì)算分離、Lake House、ETL 能力、用戶(hù)體驗(yàn)以及半結(jié)構(gòu)化數(shù)據(jù)類(lèi)型支持等。這些改進(jìn)將幫助用戶(hù)更高效地應(yīng)對(duì)各種業(yè)務(wù)場(chǎng)景,提升大數(shù)據(jù)分析的處理性能。