之前寫了數(shù)據(jù)倉庫和數(shù)據(jù)湖:寫給小白的“數(shù)據(jù)倉庫”科普;到底什么是“數(shù)據(jù)湖”?
今天是大數(shù)據(jù)專題的最后一篇,來講講數(shù)據(jù)湖倉。
█ 為什么會有“數(shù)據(jù)湖倉”?
前面我們提到,數(shù)據(jù)倉庫出現(xiàn)于1990年代,主要基于MPP(Massively Parallel Processing,大規(guī)模并行處理)或者關(guān)系型數(shù)據(jù)庫實現(xiàn),用于企業(yè)做數(shù)據(jù)存儲、處理和分析,發(fā)展數(shù)據(jù)看板、BI(商業(yè)智能)等用途。
而數(shù)據(jù)湖,出現(xiàn)于2010年代,主要基于大數(shù)據(jù)技術(shù)(Hadoop等)生態(tài),用于支撐多樣化的數(shù)據(jù)存儲,實時性更強,適合滿足批處理、流式計算等業(yè)務(wù)場景。
數(shù)據(jù)倉庫的特點是,先做數(shù)據(jù)處理,搞得規(guī)范整齊之后,存起來。用的時候就直接用。它主要存的是結(jié)構(gòu)化(行列)數(shù)據(jù)。
數(shù)據(jù)湖的特點是,什么數(shù)據(jù)(結(jié)構(gòu)化、非結(jié)構(gòu)化、半結(jié)構(gòu)化)都能存,不做預處理,先全部都存起來,等要用的時候,再處理。
兩種技術(shù),各有優(yōu)缺點:
從成本的角度來看,數(shù)據(jù)湖的起步成本很低,但隨著數(shù)據(jù)體量的增大,成本會迅速飆升。而數(shù)據(jù)倉庫恰好相反,前期建設(shè)開支很大,后期成本增加趨緩。
數(shù)據(jù)倉庫和數(shù)據(jù)湖,都是基于數(shù)據(jù)進行價值挖掘,只是側(cè)重點不同。對于企業(yè)來說,兩者都有價值,所以,會選擇同時建設(shè)。
很顯然,這不僅導致了高昂的建設(shè)投資成本,也使得數(shù)據(jù)存在冗余和重復。
基于以上種種原因,業(yè)界就開始思考:是不是可以將數(shù)據(jù)倉庫和數(shù)據(jù)湖進行結(jié)合,充分發(fā)揮兩者的優(yōu)勢,彌補各自的缺陷呢?
于是,就有一些服務(wù)商,開始研究如何將兩者的能力進行“打通”。
主要思路包括兩種:一種是讓數(shù)據(jù)倉庫支持對數(shù)據(jù)湖的訪問。還有一種,是讓數(shù)據(jù)湖具備數(shù)據(jù)倉庫的一些能力。
前者比較有代表性的,是2017年Redshift推出的Redshift Spectrum。它支持Redsift數(shù)據(jù)倉庫用戶訪問AWS S3數(shù)據(jù)湖的數(shù)據(jù)。
后者有代表性的比較多,包括2017年Hortonworks孵化出的Apache Atlas和Ranger項目,2018年Nexflix開源的內(nèi)部增強版本元數(shù)據(jù)服務(wù)系統(tǒng)Iceberg。2018-2019年,Uber和Databricks相繼推出了Apache Hudi和DeltaLake,推出增量文件格式,用以支持Update/Insert、事務(wù)等數(shù)據(jù)倉庫功能。
所有這些嘗試和努力,都多多少少存在一些缺陷(數(shù)據(jù)倉庫和數(shù)據(jù)湖存在本質(zhì)的區(qū)別,整合難度很大),并不算成功。
2020年,數(shù)據(jù)智能獨角獸企業(yè)Databricks(沒錯,就是提出Delta Lake的那個公司,數(shù)據(jù)湖的代表企業(yè))正式提出了數(shù)據(jù)湖倉(Data Lakehouse)概念。
Databricks聯(lián)合創(chuàng)始人兼首席執(zhí)行官阿里·戈德西(Ali Ghodsi)表示:
“從長遠來看,所有數(shù)據(jù)倉庫都將被納入數(shù)據(jù)湖倉,這不會在一夜之間發(fā)生——這些東西會共存一段時間——在價格和性能上,數(shù)據(jù)湖倉完勝數(shù)據(jù)倉庫?!?/p>
數(shù)據(jù)湖倉,也被稱為湖倉一體。
2021年,“湖倉一體”首次被寫入Gartner數(shù)據(jù)管理領(lǐng)域成熟度報告。2023年6月,大數(shù)據(jù)技術(shù)標準推進委員會發(fā)布了《湖倉一體技術(shù)與產(chǎn)業(yè)研究報告(2023年)》。這一年的6月26日,“湖倉一體”在中國大數(shù)據(jù)產(chǎn)業(yè)發(fā)展大會上成功入選“2023大數(shù)據(jù)十大關(guān)鍵詞”。
█ 數(shù)據(jù)湖倉的主要特點
數(shù)據(jù)湖倉(湖倉一體),說白了,就是一種將數(shù)據(jù)倉庫和數(shù)據(jù)湖打通的新型開放式架構(gòu)。它既具備數(shù)據(jù)湖的靈活性,也具備數(shù)據(jù)倉庫的高性能及管理能力,為企業(yè)進行數(shù)據(jù)治理帶來了更大的便利和更高的效率。
在數(shù)據(jù)湖倉的底層,支持多種數(shù)據(jù)類型并存,能實現(xiàn)數(shù)據(jù)間的相互共享。
在數(shù)據(jù)湖倉的上層,可以通過統(tǒng)一接口進行訪問,可同時支持實時查詢和分析。
數(shù)據(jù)倉庫和數(shù)據(jù)湖這兩套體系相互打通之后,數(shù)據(jù)可以在兩者之間自由流動。
也就是說,數(shù)據(jù)湖里的“新鮮”數(shù)據(jù)(熱數(shù)據(jù)),可以流到數(shù)據(jù)倉庫里,直接被數(shù)據(jù)倉庫使用。
而數(shù)據(jù)倉庫里的“不新鮮”數(shù)據(jù)(冷數(shù)據(jù)),也可以流到數(shù)據(jù)湖里,低成本長久保存,供未來使用。
數(shù)據(jù)湖倉的特點,其實就是數(shù)據(jù)倉庫的優(yōu)點+數(shù)據(jù)湖的優(yōu)點。
在數(shù)據(jù)存儲方面,繼承了數(shù)據(jù)湖的優(yōu)勢,支持多樣化數(shù)據(jù),且以HDFS或云對象存儲為基礎(chǔ),實現(xiàn)了低成本、高可用。數(shù)據(jù)以原始格式或開放文件格式(如 Parquet、ORC)存儲,具備高效的壓縮比與列存儲特性,方便查找。
開放文件格式,也保障了數(shù)據(jù)在不同計算引擎間的通用性。
數(shù)據(jù)湖倉同樣支持Iceberg、Hudi、Delta Lake等開放表格式。它們不僅支持數(shù)據(jù)的近實時更新、高效的快照管理,還兼容 SQL 標準,使得數(shù)據(jù)既可以像傳統(tǒng)數(shù)據(jù)庫表一樣進行事務(wù)性操作,又能充分利用數(shù)據(jù)湖的分布式存儲與彈性計算優(yōu)勢。
在計算引擎方面(采用存算分離架構(gòu)),整合了Spark、Flink、Presto、Doris等多樣的計算引擎。通過統(tǒng)一的調(diào)度與資源管理,不同引擎可以共享存儲資源,協(xié)同處理復雜的數(shù)據(jù)工作流,滿足企業(yè)從實時監(jiān)控到深度分析的全方位計算需求。
阿里云數(shù)據(jù)湖倉架構(gòu)(來自阿里云官網(wǎng))
在數(shù)據(jù)一致性方面,提供ACID(原子性、一致性、隔離性、持久性)保證,確保數(shù)據(jù)寫入的一致性,保證了多方同時讀取或?qū)懭霐?shù)據(jù)時的數(shù)據(jù)準確性。
在數(shù)據(jù)管理方面,數(shù)據(jù)湖倉實現(xiàn)了統(tǒng)一的元數(shù)據(jù)管理,支持全鏈路血緣,提供統(tǒng)一的命名空間、全局的數(shù)據(jù)目錄。無論數(shù)據(jù)存儲在何處,使用何種計算引擎,用戶都能通過統(tǒng)一的API進行快速檢索、理解與訪問數(shù)據(jù)。數(shù)據(jù)治理,變得非常高效。
在數(shù)據(jù)安全方面,數(shù)據(jù)湖倉一般還支持多租戶和庫表列級數(shù)據(jù)權(quán)限,能夠很好地進行租戶隔離和數(shù)據(jù)權(quán)限管控,確保了數(shù)據(jù)的安全性和隱私性。
當然了,數(shù)據(jù)湖倉也不是沒有缺點。
作為一項融合的技術(shù)架構(gòu),它的復雜性比較高,需要很高的技術(shù)門檻。而且,它的早期投資比較大,對企業(yè)來說有一定的成本壓力。
數(shù)據(jù)湖倉的性能優(yōu)化、數(shù)據(jù)治理以及安全防護,也存在一定的挑戰(zhàn)。這些門檻和挑戰(zhàn),往往會讓企業(yè)用戶望而卻步。
█ 數(shù)據(jù)湖倉的參考架構(gòu)
數(shù)據(jù)湖倉誕生至今的時間并不是很長。從最開始的倉和湖獨立建設(shè),到后來,逐漸形成了“湖上建倉”與“倉外掛湖”兩種實踐路徑。
湖上建倉,是指基于數(shù)據(jù)湖架構(gòu),或者以數(shù)據(jù)湖作為數(shù)據(jù)存儲中間層,實現(xiàn)多源異構(gòu)數(shù)據(jù)的統(tǒng)一存儲。然后,以統(tǒng)一調(diào)用接口方式調(diào)用計算引擎,最終實現(xiàn)上下結(jié)構(gòu)的湖倉一體架構(gòu)。
倉外掛湖,是指以MPP數(shù)據(jù)庫為基礎(chǔ),使用可插拔架構(gòu),通過開放接口對接外部存儲,實現(xiàn)統(tǒng)一存儲。
隨著時間的推移,也有企業(yè)開始推出兩種架構(gòu)的深入融合。
目前,在數(shù)據(jù)湖倉領(lǐng)域比較有代表性的服務(wù)商,包括國外的AWS(亞馬遜云科技)、微軟Azure?、Databricks、Snowflake,以及國內(nèi)的阿里云、騰訊云、華為云、星環(huán)科技等。
各大服務(wù)商的架構(gòu)有較差的差異,但基本上都包括存儲層、元數(shù)據(jù)管理層、計算引擎層、服務(wù)與治理層等。
█ 最后的話
目前來看,數(shù)據(jù)湖倉正在加速成為企業(yè)重要的戰(zhàn)略性基礎(chǔ)設(shè)施,用于長期的數(shù)據(jù)價值挖掘,以及發(fā)展AI應用。
根據(jù)畢馬威的報告顯示,86%的海外企業(yè)計劃統(tǒng)一其分析數(shù)據(jù),以支持AI業(yè)務(wù)的開發(fā)。國內(nèi)也是如此。例如騰訊、B站、小紅書等頭部互聯(lián)網(wǎng)企業(yè),都采用了數(shù)據(jù)湖倉架構(gòu),用于不同程度的AI應用。
數(shù)據(jù)湖倉在實時流處理與機器學習方面表現(xiàn)出色,能夠很好地滿足大模型的訓練需求,相信未來幾年會得到更好的發(fā)展。
好啦,以上就是關(guān)于數(shù)據(jù)湖倉的介紹。鮮棗課堂大數(shù)據(jù)專題系列到此結(jié)束。感謝大家的耐心觀看!
參考文獻:
1、《數(shù)據(jù)庫、數(shù)據(jù)湖、數(shù)據(jù)倉庫、湖倉一體、智能湖倉,分別都是什么鬼》,特大號;2、《從數(shù)據(jù)湖到湖倉一體:統(tǒng)一數(shù)據(jù)架構(gòu)演進之路》,Light Gao,知乎;3、《數(shù)據(jù)倉庫、數(shù)據(jù)湖、湖倉一體,究竟有什么區(qū)別?》,SelectDB,知乎;4、《什么是湖倉一體?湖倉一體解決了什么問題?》,帆軟;5、《2024大數(shù)據(jù)“打假”:什么才是真湖倉一體?》,張友東;大數(shù)據(jù)在線;
6、《大數(shù)據(jù)架構(gòu)系列:如何理解湖倉一體?》,葉強盛,騰訊云開發(fā)者社區(qū);
7、百度百科,維基百科,各大服務(wù)商官網(wǎng)。