在做多年的數據倉庫項目,數據湖也在做,但是做完發現,這個不是傳統數據庫里面的ODS嗎?
好多公司做數據湖,就是把數據湖做成了ODS層(貼源數據層),難道真的數據湖就是這樣等于ODS嗎?最近在接觸國外一些數據湖項目,才發現,我們還是傳統的思路。
數據湖在我們的理解里面,最多的詞,"流批一體",“iceberg,hudi”,“存算分離”,是不是很多公司都是這樣做的。但是這個真的數據湖嗎。你問他數據湖有那些特點,他會說,CDC,spark,flink,流批一體,三劍客(iecberg,hudi和dealta,)。ppt 畫的內容重點都在講cdc ,flink 里面各種算子。等等。數據湖是這樣嗎,銷售在講數據湖,ppt 畫一個湖,湖里有個貓在釣魚,釣到魚,裝到數據倉里面。大數人理解都是這樣,可是,我問湖里面有沒有螃蟹(非結構化),釣到螃蟹放到哪里,這些人都傻眼了,還有一些人,硬套iceberg ,社區各種問iceberg 怎么存非結構化。
我們數據湖做出來的內容,還是ODS,數倉,數據集市,報表這一套流程。無非從技術上,多了cdc,實時計算,flink,存算分離,doris ,hadoop+MPP 這一大堆技術。并且ODS大部分就是做數倉的團隊在維護,業務人員想用數據,都是給做成報表,或者做成數據接口API,更有把數據卸載另外一個數據庫,給到業務系統。
最近在接觸一個國外的一家公司數據湖項目,先說一些了解的情況,用的技術都差不都,用的微軟的Azure,對象存儲,微軟一套開發工廠+pgsql(數倉)+BI。技術沒有啥新奇的。具體說一下他們數據湖怎么做的。
他們對數據湖的概念,是業務系統不是IT部門做數倉一個團隊搞得。數據湖,是所有團隊參與的。比如:他們有數據湖管理平臺。主要數據接入,數據權限管理,數據大部分是業務系統上傳的csv文件,個別有json.也有從數據庫cdc數據。他們會結合對象存儲。劃分權限。每個部門或者個人,都有你文件夾的權限。你可以上傳你部門的數據,但是別人是看不到的,如果數倉需要拿你的數據,需要你給一個路徑,或者文件地址。類似百度網盤。里面會有數據文件。需要處理,會有專門人處理數據。第二:功能就是可以上傳任何數據,csv,圖片,視頻,Parquet,Avro ,啥格式都有。如果數倉要數據,或者ML算法那邊需要數據,就會給一個目錄路徑。第三個:就是對每個文件有生命周期或者權限記錄跟蹤,這個文件分享后,誰有權限操作,給誰用。文件是離線的,還是實時更新的。都有日志記錄。
他們的平臺,其實沒有啥新奇,但是對數據湖的理解。這里面的權限,支持各種文件的錄入。數據文件的分享交互,而不是數據庫,表。他們給你的是一個元數據。里面描述的文件路徑,加工方式,數據文件格式。當然里面也有iceberg表,但是它只是數據文件的一種,而給你的只是文件目錄,里面記錄Parquet 格式的文件,但是你可以從元數據看到,表的信息。至于說,你怎么加工,你只管去這里面獲取數據就行。如果是離線的,里面每天會生成文件夾。按照日期定時生成目錄。元數據里面會告訴你數據的頻度。你可以根據情況使用。
其實他們數據湖的數據還是各個業務系統的(所屬權)。而不是我們在hive 里面建設好幾個庫,或者一個庫,在表的前面加上業務編號。這些數據采集后,屬于誰的,其實都沒有明確。我們因為是數倉團隊接入的,理論上還是數倉的。其他團隊要用,或者修改,你肯定不愿意。你怕把你的ods給整壞了。
他們的基于數據目錄+元數據 平臺管理。只是給你分享數據目錄,這個概念,我覺得應該才是數據湖的形狀屬性。數據湖一定是,魚蝦,海豚,鯊魚,啥都應該有。不是兩個數據庫相互導數據。數據湖一定是多部門參與,多團隊共建。而不是某一個團隊的專屬。
最后總結:1.數據湖的數據接入,應該多樣性,csv,cdc,數據文件,http等等,都應該可以對接。2.數據湖還是要以文件存儲,什么文件都可以,要有權限管理。3.基于數據元的管理,要對文件的描述,不管是結構化,非機構,都應該有元數據描述。4.可以分享數據文件,數據文件應該還是有歸屬權,是誰的數據文件,就是誰的資產,你想給誰,可以分享。共同參與。