(相關(guān)資料圖)
在數(shù)據(jù)分析場景中,企業(yè)使用的數(shù)據(jù)通常具備來源多樣化的特點,如支付交易記錄、用戶行為等,且數(shù)據(jù)格式各異,有的為行式存儲結(jié)構(gòu),有的為列式存儲結(jié)構(gòu)。這就要求企業(yè)數(shù)倉具備一定的數(shù)據(jù)轉(zhuǎn)換能力。
傳統(tǒng)方式是采用Extract-Transform-Load (ETL)來將業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)換為適合數(shù)倉的數(shù)據(jù)模型,然而,這依賴于獨立于數(shù)倉外的ETL系統(tǒng),導(dǎo)致維護(hù)成本較高。但隨著云計算時代的到來,云數(shù)據(jù)倉庫具備更強擴展性和計算能力,也要求改變傳統(tǒng)的ELT流程。
火山引擎ByteHouse是一款基于開源ClickHouse推出的云原生數(shù)據(jù)倉庫,為用戶提供極速分析體驗,能夠支撐實時數(shù)據(jù)分析和海量數(shù)據(jù)離線分析,同時還具備便捷的彈性擴縮容能力,極致分析性能和豐富的企業(yè)級特性。憑借其強大的計算能力,火山引擎ByteHouse目前已全面支持Extract-Load-Transform (ELT)的能力,讓用戶免于維護(hù)多套異構(gòu)系統(tǒng),產(chǎn)品易用性實現(xiàn)飛躍。
通過ByteHouse的ELT能力,用戶只需將數(shù)據(jù)導(dǎo)入,用自定義SQL語句在ByteHouse內(nèi)部進(jìn)行數(shù)據(jù)轉(zhuǎn)換,無需依賴獨立的ETL系統(tǒng)及資源。具體來說,ByteHouse主要通過以下三個能力實現(xiàn)ELT能力:
首先,長任務(wù)管理。ByteHouse的查詢時間為秒級,一旦查詢中出故障,系統(tǒng)會直接返回錯誤并重試。在ETL場景下,如果一個任務(wù)已經(jīng)執(zhí)行50分鐘才發(fā)生故障,重試意味著浪費了前50分鐘的資源,影響任務(wù)推進(jìn)。在ByteHouse中,SQL查詢會被轉(zhuǎn)化為一系列的算子,研發(fā)團(tuán)隊則通過提升算子的容錯能力,來應(yīng)對長時間查詢下的系統(tǒng)故障問題,即當(dāng)某個算子無法獲得足夠的內(nèi)存時,系統(tǒng)允許該算子將一部分?jǐn)?shù)據(jù)緩存在磁盤上,保證在資源緊張的情況下仍能夠完成工作。
其次,異步提交能力。面對大量長耗時的ETL任務(wù)時,傳統(tǒng)的同步執(zhí)行方式需要客戶端等待服務(wù)端返回,容易出現(xiàn)超時問題,影響后續(xù)任務(wù)執(zhí)行,而ByteHouse提供的異步提交能力,通過客戶端的間歇性輪訓(xùn)來獲得用戶任務(wù)的最終狀態(tài),由此保障任務(wù)在規(guī)定時間內(nèi)完成。
最后,查詢隊列。當(dāng)面臨大量離線加工請求時,系統(tǒng)會出現(xiàn)超載。ByteHouse為此提供了查詢隊列能力,允許用戶從隊列大小、總CPU占用率、總內(nèi)存占用率三個維度定義一個隊列。
具體來說,當(dāng)用戶向某隊列提交查詢時,ByteHouse可以通過組件監(jiān)聽各個隊列中的查詢指標(biāo),如果隊列未達(dá)到上限,則會將查詢?nèi)腙?,否則拒絕。除此之外,ByteHouse還會檢查隊列的資源利用率,當(dāng)空閑資源高過某閾值時,自動將等待中的查詢出隊。利用查詢隊列,用戶在編排ETL任務(wù)時無需擔(dān)心底層資源過載,讓開發(fā)更加便捷。
長任務(wù)管理、異步提交和查詢隊列是火山引擎ByteHouse ELT的核心能力。未來,ByteHouse也會進(jìn)一步迭代,支持轉(zhuǎn)換函數(shù)、長任務(wù)容錯、優(yōu)先級隊列等更豐富ELT功能,為用戶提供更極致、更便捷的使用體驗。(作者:何雅逸)