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