湖倉(cāng)一體架構(gòu):數(shù)字化的終局之選!

大家好,我是夢(mèng)想家Alex ~ 之前我已經(jīng)分享過不少有關(guān)數(shù)據(jù)湖,數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)中臺(tái)的文章,但今天想為大家介紹的是被譽(yù)為“數(shù)字化終局之選” 的湖倉(cāng)一體架構(gòu),希望對(duì)大家有所啟發(fā),歡迎轉(zhuǎn)發(fā)收藏!

參與文末留言,還有機(jī)會(huì)獲取大數(shù)據(jù)架構(gòu),中臺(tái)相關(guān)書籍!

下圖是一張非常經(jīng)典的數(shù)據(jù)分析技術(shù)演進(jìn)圖,從中可一窺整體發(fā)展歷程。本文將按時(shí)間順序盤點(diǎn)下各階段產(chǎn)品及技術(shù)特點(diǎn),并預(yù)測(cè)下未來發(fā)展方向。



1 簡(jiǎn)單可用階段:數(shù)據(jù)庫(kù)(DataBase)
早在1980年代初中期,是沒有專門面向數(shù)據(jù)分析場(chǎng)景的產(chǎn)品。當(dāng)時(shí)還是以面向事務(wù)交易場(chǎng)景為主,數(shù)據(jù)分析僅作為附帶提供的場(chǎng)景。主要是面對(duì)管理層提供固定報(bào)表,滿足宏觀管理決策。

作為底層數(shù)據(jù)庫(kù),通過標(biāo)準(zhǔn)SQL提供數(shù)據(jù)分析能力。這一架構(gòu)在面對(duì)數(shù)據(jù)分析場(chǎng)景的缺點(diǎn)很明顯,擴(kuò)展性差,很難支持大規(guī)模數(shù)據(jù)分析,性能也無法滿足需求。這也催生專門解決數(shù)據(jù)分析的產(chǎn)品出現(xiàn),即后面出現(xiàn)的數(shù)據(jù)倉(cāng)庫(kù)。

02 規(guī)范標(biāo)準(zhǔn)階段:數(shù)倉(cāng)(Data Warehouse)

到了1980年代中后期,為解決數(shù)據(jù)庫(kù)面對(duì)數(shù)據(jù)分析的不足,孕育出新一類產(chǎn)品數(shù)據(jù)倉(cāng)庫(kù)。

讓我們先來看下數(shù)據(jù)倉(cāng)庫(kù)的定義,數(shù)據(jù)倉(cāng)庫(kù)(Data Warehouse)是一個(gè)面向主題的、集成的、相對(duì)穩(wěn)定的、反映歷史變化的數(shù)據(jù)集合,用于支持管理決策和信息的全局共享。上圖是數(shù)據(jù)倉(cāng)庫(kù)的應(yīng)用架構(gòu),從中可見其做了若干階段劃分,簡(jiǎn)單可分為數(shù)據(jù)集成(裝載)、數(shù)據(jù)加工(ETL)、數(shù)據(jù)匯聚、數(shù)據(jù)展示及挖掘。

數(shù)據(jù)經(jīng)過這一過程,被抽取到數(shù)據(jù)倉(cāng)庫(kù)中,并嚴(yán)格按照預(yù)先定義的模式被裝載進(jìn)來,經(jīng)過多層加工形成數(shù)據(jù)集市,并最終提供給終端應(yīng)用或進(jìn)一步供挖掘使用。在技術(shù)實(shí)現(xiàn)上,主流采用MPP無共享存儲(chǔ)架構(gòu),基于標(biāo)準(zhǔn)X86服務(wù)器,可實(shí)現(xiàn)數(shù)百節(jié)點(diǎn)的擴(kuò)展。其對(duì)外提供標(biāo)準(zhǔn)的SQL能力和ACID特性,整體計(jì)算性能可在一定程度上隨節(jié)點(diǎn)擴(kuò)展可提升。


數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)非常經(jīng)典,在一定時(shí)期內(nèi)滿足了數(shù)據(jù)分析需求,也促進(jìn)數(shù)據(jù)分析場(chǎng)景的演進(jìn)發(fā)展。從上圖我們看到數(shù)據(jù)倉(cāng)庫(kù)的發(fā)展,經(jīng)歷了多個(gè)階段。從固定報(bào)表,滿足T+1時(shí)效性即可;到分析型需求增加,需提供靈活深度查詢能力;到預(yù)測(cè)型需求,需滿足多維度分析預(yù)測(cè)能力;到運(yùn)營(yíng)型數(shù)倉(cāng),不再局限在后臺(tái)提供服務(wù),而強(qiáng)調(diào)實(shí)時(shí)變化、分析學(xué)習(xí)、反饋控制;再到智慧型數(shù)倉(cāng),強(qiáng)調(diào)人工智能全面感知能力。

可以說,數(shù)據(jù)倉(cāng)庫(kù)一路走來,不斷演進(jìn)變化,大大促進(jìn)了數(shù)據(jù)在企業(yè)內(nèi)的應(yīng)用水平,直到今日仍然是很多企業(yè)應(yīng)對(duì)數(shù)據(jù)分析的不二之選。

當(dāng)然,隨著數(shù)據(jù)在企業(yè)內(nèi)角色愈發(fā)重要,對(duì)其分析的要求不斷提高。傳統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)也面臨很多的挑戰(zhàn)。例如,隨著數(shù)據(jù)規(guī)模擴(kuò)大,對(duì)數(shù)據(jù)承載能力(容量、算力)的要求也不斷增大,數(shù)倉(cāng)架構(gòu)的擴(kuò)展能力急需考驗(yàn);上述規(guī)模的擴(kuò)展會(huì)面臨大量資源的投入,硬件資源缺乏彈性,會(huì)導(dǎo)致高峰時(shí)資源不足,低谷時(shí)資源閑置浪費(fèi)問題;隨著對(duì)數(shù)據(jù)鮮活程度要求提高,對(duì)數(shù)據(jù)處理時(shí)長(zhǎng)有著更為嚴(yán)格的要求,否則將無法指導(dǎo)業(yè)務(wù)運(yùn)營(yíng);針對(duì)數(shù)據(jù)類型,也不再局限于結(jié)構(gòu)化數(shù)據(jù),更多半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)被更多利用起來;此外,在數(shù)據(jù)價(jià)值挖掘、數(shù)據(jù)安全等方面都提出了更高的要求。針對(duì)上述難點(diǎn),也催生了一系列技術(shù)的發(fā)展,例如HTAP、大數(shù)據(jù)分析等,也包括后面重點(diǎn)談到的數(shù)據(jù)湖。

03 開放自由階段:數(shù)據(jù)湖(Data Lake)

Data Lake,是在2011年由James Dixon提出,其與數(shù)據(jù)倉(cāng)庫(kù)的主要區(qū)別在于數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)在進(jìn)入倉(cāng)庫(kù)之前是需要實(shí)現(xiàn)歸類,而數(shù)據(jù)庫(kù)是把大量原始數(shù)據(jù)通過廉價(jià)存儲(chǔ)保存下來。數(shù)據(jù)倉(cāng)庫(kù)具有高度結(jié)構(gòu)化的架構(gòu),用戶可直接獲得分析數(shù)據(jù);而數(shù)據(jù)湖是將數(shù)據(jù)直接加載到湖中,然后根據(jù)分析的需求再轉(zhuǎn)換數(shù)據(jù)。

數(shù)據(jù)湖架構(gòu)的特點(diǎn)可總結(jié)為:低成本、原始數(shù)據(jù)、需靈活可使用、面向任務(wù)數(shù)據(jù)綁定、不提前定義數(shù)據(jù)模型。在實(shí)現(xiàn)技術(shù)上面,多采用基于Hadoop生態(tài)的產(chǎn)品,兼具有MPP、Hive/Spark、NoSQL、Stream/Batch能力。具備良好的擴(kuò)展能力,可支持?jǐn)?shù)千節(jié)點(diǎn)的超大規(guī)模集群。但對(duì)SQL支持偏弱、ACID特性支持差,較難從傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)遷移過來。業(yè)務(wù)上更為強(qiáng)調(diào)數(shù)據(jù)資產(chǎn)管理與數(shù)據(jù)服務(wù)。

這里我們對(duì)數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)湖做個(gè)簡(jiǎn)單對(duì)比,可以看出兩者差異很多?;旧蠈儆诨パa(bǔ)關(guān)系,各有其適合覆蓋場(chǎng)景。前者更多是解決固定的、明確的數(shù)據(jù)問題;后者則為應(yīng)對(duì)隨機(jī)性、探索式的數(shù)據(jù)問題。下圖可以更為準(zhǔn)確地描述兩者差異。


04 融合共享階段:湖倉(cāng)一體(LakeHouse)
提到湖倉(cāng)一體,就不得不從上世紀(jì)80年代說起。當(dāng)時(shí)市場(chǎng)還是數(shù)據(jù)倉(cāng)庫(kù)的天下,主要用來處理BI、儀表盤、報(bào)表等結(jié)構(gòu)化數(shù)據(jù),用于分析企業(yè)的內(nèi)部的業(yè)務(wù)數(shù)據(jù)。

這種狀態(tài)一直持續(xù)到2010年前后,越來越多企業(yè)產(chǎn)生對(duì)語(yǔ)音、視頻等數(shù)據(jù)的處理分析需求,非結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)的增長(zhǎng)促使企業(yè)提升了高多樣性,高速度和高容量的數(shù)據(jù)分析要求,數(shù)據(jù)倉(cāng)庫(kù)慢慢不能滿足用戶的需求。

隨著數(shù)據(jù)倉(cāng)庫(kù)局限性的逐步顯現(xiàn),數(shù)據(jù)湖的概念也隨之衍生出來,它能夠存儲(chǔ)各式各樣的原始數(shù)據(jù),解決了數(shù)據(jù)倉(cāng)庫(kù)的局限性。但相比于優(yōu)勢(shì)來講,湖的短板也同樣明顯,比如不支持事務(wù),SQL性能差,無法支撐報(bào)表需求。雖然數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)都各自有各自的優(yōu)勢(shì)和不足,但不難發(fā)現(xiàn),二者在某些層面是非?;パa(bǔ)的。

于是乎,是否有一種能兼具兩者優(yōu)點(diǎn)的架構(gòu)出現(xiàn),于是誕生了“湖倉(cāng)一體”。

湖倉(cāng)一體1.0

早期的湖倉(cāng)一體,更多是一種處理思想,處理上直接將數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)互相“打通”。數(shù)據(jù)湖從各類數(shù)據(jù)源獲得原始數(shù)據(jù),存儲(chǔ)在廉價(jià)存儲(chǔ)上,永久不刪除。數(shù)據(jù)保持原始簡(jiǎn)單格式、機(jī)構(gòu),無數(shù)據(jù)治理,也沒有數(shù)倉(cāng)豐富的功能及高性能統(tǒng)一數(shù)據(jù)模型。當(dāng)需要支持分析場(chǎng)景在成熟時(shí)從數(shù)據(jù)湖到數(shù)據(jù)倉(cāng)庫(kù)的遷移。

這種架構(gòu)優(yōu)點(diǎn)在于可充分利用先前的數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)資源,利用ETL將二者“打通”,數(shù)據(jù)湖用來存儲(chǔ)各種原始數(shù)據(jù),分析報(bào)表交給數(shù)據(jù)倉(cāng)庫(kù)來完成,這也可以算是湖倉(cāng)一體的一個(gè)雛形,但湖和倉(cāng)基本上還是處于各自一體的狀態(tài),架構(gòu)仍然較為復(fù)雜,在滿足需求的同時(shí)也持續(xù)提高了企業(yè)的運(yùn)維成本。

湖倉(cāng)一體2.0

為了解決湖倉(cāng)一體1.0的諸多問題,2.0應(yīng)運(yùn)而生。目前這一架構(gòu)還在快速發(fā)展之中,尚無明確統(tǒng)一的技術(shù)框架。

總的來說,可按照上圖劃分多層次,并在每層解決對(duì)應(yīng)問題。從底層數(shù)據(jù)源,需對(duì)接多種數(shù)據(jù)源(包括結(jié)構(gòu)化、半結(jié)構(gòu)化及非結(jié)構(gòu)化數(shù)據(jù))。之上的數(shù)據(jù)集成需提供針對(duì)不同特征數(shù)據(jù)的集成能力(包括批量、流式)。處理過后的數(shù)據(jù)放入統(tǒng)一存儲(chǔ)層,為面對(duì)不同結(jié)構(gòu)的數(shù)據(jù),需提供多模態(tài)存儲(chǔ)能力,甚至為滿足性能要求提供不同存儲(chǔ)引擎。再之上是統(tǒng)一的元數(shù)據(jù)、安全、管控層,通過對(duì)全局?jǐn)?shù)據(jù)的完整視角管理。為滿足不同加工需求的統(tǒng)一處理層,層內(nèi)提供多種加工能力。最上面是數(shù)據(jù)應(yīng)用層。

從技術(shù)上看,云原生數(shù)據(jù)倉(cāng)庫(kù),為湖倉(cāng)一體2.0提供有利支持,其技術(shù)上天然具備的存算分離、彈性擴(kuò)展、多租戶、可插拔存儲(chǔ)、多計(jì)算引擎、分級(jí)資源管理等眾多特性可滿足上述要求。功能上兼具數(shù)據(jù)倉(cāng)庫(kù)的標(biāo)準(zhǔn)SQL、ACID能力,數(shù)據(jù)湖的大規(guī)模原始數(shù)據(jù)存儲(chǔ)等。對(duì)上提供多種接入方式,包括標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)接入方式,支持高并發(fā)讀寫;對(duì)下支持多云、混合云及跨云部署,防止廠商綁定。其技術(shù)架構(gòu)可簡(jiǎn)化為類似如下架構(gòu):


展開說明下,其底層依舊是低成本、開放的存儲(chǔ),上層基于類似 Delta lake/ Iceberg/ Hudi 建設(shè)數(shù)據(jù)系統(tǒng),提供數(shù)據(jù)管理特性和高效訪問性能,支持多樣數(shù)據(jù)分析和計(jì)算,綜合了數(shù)據(jù)倉(cāng)庫(kù)以及數(shù)據(jù)湖的優(yōu)點(diǎn)形成了新的架構(gòu)。

存算分離架構(gòu)可以進(jìn)行靈活擴(kuò)展;減少數(shù)據(jù)搬遷,數(shù)據(jù)可靠性、一致性和實(shí)時(shí)性得到了保障;支持豐富的計(jì)算引擎和范式;此外,支持?jǐn)?shù)據(jù)組織和索引優(yōu)化,查詢性能更優(yōu)。當(dāng)前湖倉(cāng)一體還處于快速發(fā)展期,關(guān)鍵技術(shù)迭代快且成熟的產(chǎn)品和系統(tǒng)少。與之前架構(gòu)的對(duì)比,這里借用《DataFunCon 2021》大會(huì)上的一張圖片加以說明。


未來趨勢(shì)、終極之選:湖倉(cāng)一體2.0
湖倉(cāng)一體2.0,當(dāng)前仍處于相對(duì)早期的階段,它已經(jīng)不只是一個(gè)純粹的技術(shù)概念,而是被賦予了更多與廠商產(chǎn)品層面相關(guān)的含義。在湖倉(cāng)一體越來越火的同時(shí),不同廠商也為它做出了各自的解讀。這其中比較有代表性的產(chǎn)品是Snowflake和國(guó)內(nèi)的偶數(shù)科技等。作為2020年的現(xiàn)象級(jí)產(chǎn)品-Snowflake,無疑是標(biāo)桿型企業(yè),其核心產(chǎn)品思想可參考下圖。


國(guó)內(nèi)的偶數(shù)科技的技術(shù)路線與Snowflake在湖倉(cāng)一體的思路非常相似。主要是依托云原生特性、存算分離架構(gòu)、強(qiáng)事務(wù)特性、完整SQL標(biāo)準(zhǔn)、高性能并行執(zhí)行等技術(shù)能力,實(shí)現(xiàn)高彈性、高性能、強(qiáng)擴(kuò)展性、強(qiáng)兼容性以及上層支持機(jī)器學(xué)習(xí)等,幫助企業(yè)有效應(yīng)對(duì)大規(guī)模、強(qiáng)敏態(tài)、高時(shí)效、智能化發(fā)展趨勢(shì)。其產(chǎn)品技術(shù)架構(gòu)可參考如下:


在這一架構(gòu)中,偶數(shù)科技通過自研的新一代存算分離架構(gòu)產(chǎn)品,實(shí)踐湖倉(cāng)一體2.0理念。其中核心技術(shù)亮點(diǎn)眾多。包括功能強(qiáng)大的基于代價(jià)的優(yōu)化器,實(shí)現(xiàn)系統(tǒng)自動(dòng)選擇最優(yōu)執(zhí)行計(jì)劃;可充分利用最新CPU特性SIMD單指令多數(shù)據(jù)流,能做到指令內(nèi)并行的新一代執(zhí)行器引擎;多級(jí)資源隊(duì)列,可通過DDL方便地定義和修改資源隊(duì)列;原生Magma存儲(chǔ)引擎與S3、HDFS混合使用,解決高性能與低成本的存儲(chǔ)問題;多種優(yōu)化存儲(chǔ)格式,包括AO、Parquet、ORC等等。下圖簡(jiǎn)單對(duì)比了包括Snowflake、偶數(shù)科技產(chǎn)品與傳統(tǒng)數(shù)倉(cāng)產(chǎn)品。


寫在最后:任重道遠(yuǎn),無限潛能
隨著數(shù)據(jù)在數(shù)字化轉(zhuǎn)型中發(fā)揮著愈發(fā)重要的作用,如何挖掘、利用、提升數(shù)據(jù)價(jià)值成為核心重點(diǎn)。湖倉(cāng)一體的出現(xiàn),突破了原有數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)和數(shù)據(jù)湖架構(gòu)的局限,兼具兩者之優(yōu)點(diǎn)。為企業(yè)提供功能完整、可擴(kuò)展、低成本、高收益的數(shù)據(jù)分析能力。相信,隨著這一技術(shù)不斷演進(jìn)發(fā)展,必將加速企業(yè)數(shù)字化進(jìn)程,享受到更多數(shù)據(jù)紅利。也期待有更多的廠商、產(chǎn)品誕生,助力企業(yè)數(shù)字化轉(zhuǎn)型!

作者:韓鋒頻道 | 責(zé)編:大數(shù)據(jù)夢(mèng)想家




作者:韓鋒頻道Alex


歡迎關(guān)注:大數(shù)據(jù)夢(mèng)想家