3月11日那篇文章(),小棗君介紹了什么是“數(shù)據(jù)倉庫”和“數(shù)據(jù)集市”。今天這篇,我再來說說什么是“數(shù)據(jù)湖”。

█ 什么是數(shù)據(jù)湖

數(shù)據(jù)湖,英文名叫做Data Lake。它和數(shù)據(jù)庫、數(shù)據(jù)倉庫一樣,是一種存儲和處理數(shù)據(jù)的平臺。

或者,更準(zhǔn)確來說,數(shù)據(jù)湖是一個技術(shù)體系。它不是某一個具體的產(chǎn)品,而是一種架構(gòu),包括了很多的技術(shù)和組件(下文會詳細(xì)說)。

打開網(wǎng)易新聞 查看精彩圖片

我們還是先從數(shù)據(jù)湖的發(fā)展歷程開始說起吧。

2010年10月,在紐約的Hadoop World大會上,Pentaho公司創(chuàng)始人及CTO詹姆斯·迪克森(James Dixon)率先提出了數(shù)據(jù)湖的概念。當(dāng)時,他之所以提出數(shù)據(jù)湖,主要是為了推廣自家的Pentaho產(chǎn)品以及Hadoop。

小棗君之前介紹過Hadoop()。它是大數(shù)據(jù)的一個核心技術(shù),誕生于2006年,具有極強的數(shù)據(jù)存儲和處理能力。

詹姆斯·迪克森的Pentaho產(chǎn)品,是一個BI(Business Intelligence,商業(yè)智能)分析組件,基于Hadoop技術(shù)。

介紹數(shù)據(jù)倉庫的時候,小棗君提到過,數(shù)據(jù)倉庫會把眾多數(shù)據(jù)源的數(shù)據(jù)匯集起來,進(jìn)行ETL(抽取Extract、轉(zhuǎn)換Transform和加載Load)三板斧操作,然后存儲,用于BI、SQL查詢、數(shù)據(jù)挖掘、數(shù)據(jù)分析等目的。

打開網(wǎng)易新聞 查看精彩圖片

換言之,Pentaho,是將當(dāng)時新興的Hadoop技術(shù)應(yīng)用于數(shù)據(jù)倉庫的一個嘗試,主要是為了解決數(shù)據(jù)倉庫的能力不足問題。

數(shù)據(jù)倉庫正式誕生于1990年左右,到2010年,已經(jīng)無法跟上時代。

數(shù)據(jù)倉庫(包括數(shù)據(jù)集市),會對來自數(shù)據(jù)源的數(shù)據(jù)進(jìn)行預(yù)處理和篩選。所以,在進(jìn)行數(shù)據(jù)分析和數(shù)據(jù)價值挖掘時,會面臨幾個問題:

1、數(shù)據(jù)被預(yù)處理過,只保留了指定的屬性。分析時,只能回答之前預(yù)設(shè)的問題。

2、數(shù)據(jù)被篩選過,很多底層的細(xì)節(jié)被篩除了。分析時,無法獲得這些信息。

3、隨著當(dāng)時互聯(lián)網(wǎng)的高速發(fā)展,非結(jié)構(gòu)化數(shù)據(jù)(電子郵件,文檔, PDF)以及半結(jié)構(gòu)化數(shù)據(jù)(CSV,日志, XML, JSON)迅猛增長。數(shù)據(jù)倉庫主要以處理結(jié)構(gòu)化的數(shù)據(jù)(關(guān)系型數(shù)據(jù)庫,例如數(shù)據(jù)表格、行與列)為主,無法很好地滿足需求。

換言之,數(shù)據(jù)倉庫,是把所有數(shù)據(jù)源的數(shù)據(jù),按一開始制定的規(guī)則,進(jìn)行了處理,變成了產(chǎn)品,缺乏靈活性。

而數(shù)據(jù)湖,是利用Hadoop等大數(shù)據(jù)技術(shù)的處理能力和成本優(yōu)勢, 將所有數(shù)據(jù)源的數(shù)據(jù),不做預(yù)處理,全部都存起來。

打開網(wǎng)易新聞 查看精彩圖片

這就解決了前面提到的幾個問題:

1、數(shù)據(jù)湖中的數(shù)據(jù)接近原生,內(nèi)容齊全,屬性完整。應(yīng)用層在使用數(shù)據(jù)時,可以基于需求,進(jìn)行靈活設(shè)計。

2、數(shù)據(jù)信息未被篩選,底層細(xì)節(jié)都在,可以盡可能還原業(yè)務(wù)(也是為了更好地分析)。

3、結(jié)構(gòu)化、非結(jié)構(gòu)化、半結(jié)構(gòu)化,所有數(shù)據(jù)都能保存和處理,滿足互聯(lián)網(wǎng)時代發(fā)展的需要。

數(shù)據(jù)湖還解決了一個重要問題,那就是數(shù)據(jù)孤島。很顯然,企業(yè)內(nèi)部各個業(yè)務(wù)系統(tǒng)的數(shù)據(jù)都放在一起了,當(dāng)然也就沒有孤島了,可以開發(fā)橫跨多個系統(tǒng)的數(shù)據(jù)應(yīng)用。

我們可以舉個買菜炒菜的例子。

數(shù)據(jù)倉庫,因為存儲成本高,所以,買了菜之后,會進(jìn)行預(yù)處理,變成指定的炒菜素材,例如土豆塊、菜葉、肉絲等。炒菜時,廚師直接取用。如果廚師想要做一些特殊的菜,一些原生態(tài)的菜,就沒辦法了。如果廚師想要燒魚,也沒辦法。

數(shù)據(jù)湖,就是你擁有了一個超大且便宜的空間,可以保存你購買的所有食材。食材的品種非常豐富,且不需要做任何預(yù)處理。各個廚師可以根據(jù)自己的需要,在炒菜時自行處理。廚師擁有了更多的靈活度,菜品也更加豐富。

打開網(wǎng)易新聞 查看精彩圖片

數(shù)據(jù)湖的出現(xiàn),滿足了企業(yè)用戶存儲全域原始數(shù)據(jù)的需求。

2011年,CITO Research網(wǎng)站的CTO和作家丹·伍德斯(Dan Woods)也力推數(shù)據(jù)湖的概念。他指出:“如果我們把數(shù)據(jù)比作大自然的水,那么各個江川河流的水未經(jīng)加工,源源不斷地匯聚到數(shù)據(jù)湖中?!?/p>

很多人也許會問,為什么叫“數(shù)據(jù)湖”?而不是“數(shù)據(jù)池”、“數(shù)據(jù)河”、“數(shù)據(jù)?!?

因為“數(shù)據(jù)池”太小,體現(xiàn)不出數(shù)據(jù)的大量?!皵?shù)據(jù)河”是流動的,數(shù)據(jù)無法保存。“數(shù)據(jù)?!眲t是因為沒有邊界。數(shù)據(jù)湖是屬于企業(yè)的,需要邊界,需要注意隱私和安全。

數(shù)據(jù)湖的主要特征

我們再簡單地梳理一下數(shù)據(jù)湖的優(yōu)點。

第一,數(shù)據(jù)的多樣性。

數(shù)據(jù)湖可以存儲多種類型的數(shù)據(jù),包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。這符合了物聯(lián)網(wǎng)(IoT)、社交媒體和移動互聯(lián)網(wǎng)的時代需求。

最近這幾年,AI特別火爆。數(shù)據(jù)是AI的三要素(算力、算法、數(shù)據(jù))之一。數(shù)據(jù)湖有利于企業(yè)發(fā)展AI業(yè)務(wù),例如機器學(xué)習(xí)、生成式人工智能等。

第二,處理的實時性。

傳統(tǒng)的數(shù)據(jù)倉庫,采用的是——寫時模式(Schema-On-Write)。數(shù)據(jù)加載到數(shù)據(jù)倉庫時,首先需要定義好它。

數(shù)據(jù)湖,采用的是——讀時模式(Schema-On-Read)。只需加載原始數(shù)據(jù),然后,當(dāng)準(zhǔn)備使用數(shù)據(jù)時,再定義它。

這是兩種截然不同的數(shù)據(jù)處理方法。數(shù)據(jù)湖簡化了前期操作,數(shù)據(jù)準(zhǔn)備的周期更短,可以靈活滿足更多不同上層業(yè)務(wù)的高效率分析訴求。

打開網(wǎng)易新聞 查看精彩圖片

第三,容量更大。

數(shù)據(jù)湖具有海量的數(shù)據(jù)存儲能力。數(shù)據(jù)湖基于分布式存儲系統(tǒng)構(gòu)建,能夠靈活擴展,可以輕松應(yīng)對PB級甚至EB級的數(shù)據(jù)量。

第四,成本更低。

數(shù)據(jù)湖往往基于開源軟件和廉價硬件構(gòu)建,而且部署在云環(huán)境中,成本大幅下降,減少了企業(yè)的投資。

第五,應(yīng)用的多樣化。

前面說了,數(shù)據(jù)湖保留了數(shù)據(jù)的原始特征和細(xì)節(jié),所以,為后續(xù)的靈活分析和挖掘提供了豐富素材。企業(yè)用戶可以進(jìn)行批處理分析、實時流處理分析和交互式分析,滿足不同業(yè)務(wù)場景的需求。

█ 數(shù)據(jù)湖面對的挑戰(zhàn)

說完了優(yōu)點,我們再來看看挑戰(zhàn)。

建設(shè)和使用數(shù)據(jù)湖,不是一件簡單的事情。很多企業(yè)盲目跟風(fēng)建設(shè)數(shù)據(jù)湖,最終卻沒有達(dá)到效果。

想要擁抱數(shù)據(jù)湖,面對的挑戰(zhàn)主要來自兩個方面。

第一,是性能。

數(shù)據(jù)湖的數(shù)據(jù)量很大,數(shù)據(jù)格式也很雜。缺乏一致的數(shù)據(jù)結(jié)構(gòu)和ACID(原子性、一致性、隔離性和持久性)事務(wù)支持,導(dǎo)致數(shù)據(jù)湖在滿足報告和分析需求時性能不佳。

第二,是數(shù)據(jù)治理。

數(shù)據(jù)治理是數(shù)據(jù)湖的最核心要素(沒有之一),指對企業(yè)中數(shù)據(jù)的可用性、完整性和安全性的全面管理,以提升數(shù)據(jù)的質(zhì)量和可用性。

前面提到,我們可以將數(shù)據(jù)源的數(shù)據(jù)“倒入”數(shù)據(jù)湖,無需進(jìn)行處理。但是,“不處理”并不代表“不治理”、“不管理”。

在介紹數(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ù)湖會建立一個數(shù)據(jù)目錄。數(shù)據(jù)目錄是元數(shù)據(jù)的集合,可以理解為是一張“數(shù)據(jù)清單”。通過數(shù)據(jù)目錄,用戶可以搜索和發(fā)現(xiàn)數(shù)據(jù)湖中的數(shù)據(jù),提高數(shù)據(jù)的可訪問性和可發(fā)現(xiàn)性。

打開網(wǎng)易新聞 查看精彩圖片

具體來說,基于數(shù)據(jù)目錄,結(jié)合數(shù)據(jù)管理和搜索工具,上層計算引擎可以直接獲取數(shù)據(jù)的關(guān)鍵信息,進(jìn)行數(shù)據(jù)處理。

數(shù)據(jù)目錄,還可以對數(shù)據(jù)湖中的數(shù)據(jù)進(jìn)行訪問控制,控制的力度可以做到“庫表列行”等不同級別。

除了數(shù)據(jù)目錄之外,數(shù)據(jù)治理還需要關(guān)注數(shù)據(jù)質(zhì)量和數(shù)據(jù)合規(guī)。

數(shù)據(jù)湖存儲的數(shù)據(jù),具有不同的質(zhì)量和精度,可能導(dǎo)致分析結(jié)果不準(zhǔn)確、不可靠。因此,需要建立數(shù)據(jù)質(zhì)量系統(tǒng),確保數(shù)據(jù)的完整性、準(zhǔn)確性、一致性以及標(biāo)準(zhǔn)化。

數(shù)據(jù)合規(guī),很容易理解,就是數(shù)據(jù)存儲和使用必須符合法律法規(guī),例如GDPR(通用數(shù)據(jù)保護條例)、HIPAA(健康保險便利和責(zé)任法案)等。 數(shù)據(jù)合規(guī)一旦出問題,可能導(dǎo)致數(shù)據(jù)泄露、法律訴訟或巨額罰款,損害企業(yè)的聲譽,也帶來經(jīng)濟上的損失。

特別值得一提的是,如果數(shù)據(jù)湖沒有得到妥善的治理,就會變成龐大的“數(shù)據(jù)沼澤”,根本沒辦法發(fā)揮數(shù)據(jù)的價值,反而變成累贅。

數(shù)據(jù)湖的架構(gòu)

前面說過,數(shù)據(jù)湖是一個框架和技術(shù)體系。它由多個互相協(xié)作的組件和產(chǎn)品組成的。

圍繞數(shù)據(jù)湖的技術(shù)組件和產(chǎn)品,一般來自四類廠商:

· 開源解決方案

· 云服務(wù)商(如亞馬遜AWS、微軟Azure、Google Cloud、阿里云、華為云等)

· 專業(yè)數(shù)據(jù)庫出身的廠商

· 一些初創(chuàng)企業(yè)或團隊

不同的公司,會開發(fā)不同的組件和產(chǎn)品,應(yīng)用于不同的層級。少部分公司,能夠提供完整的全套解決方案,或者基于云服務(wù)的全托管方案。

打開網(wǎng)易新聞 查看精彩圖片

出于成本的考慮,很多企業(yè)可能更傾向于使用開源產(chǎn)品。開源數(shù)據(jù)湖方案比較知名的分別是:Delta Lake(DataBricks公司)、Apache Iceberg、Apache Hudi和Apache Paimon。

打開網(wǎng)易新聞 查看精彩圖片

圖片來自網(wǎng)絡(luò)

數(shù)據(jù)湖概念被提出來之后,云服務(wù)廠商特別激動,也特別熱情,吆喝得最賣力。 原因很簡單,數(shù)據(jù)湖想要實現(xiàn)海量數(shù)據(jù)的低成本存儲,一般會用到分布式存儲和云存儲服務(wù)。 而且,云服務(wù)廠商可以提供前面提到的全托管方案。

打開網(wǎng)易新聞 查看精彩圖片

AWS的數(shù)據(jù)湖產(chǎn)品體系(圖片來自網(wǎng)絡(luò))

不同的方案提供商,會提出不同的數(shù)據(jù)湖架構(gòu)。 但是,基本上都包括四個主要層次:

數(shù)據(jù)攝取層(數(shù)據(jù)采集層):負(fù)責(zé)從各種數(shù)據(jù)源收集數(shù)據(jù),并將其傳輸?shù)綌?shù)據(jù)湖中。

數(shù)據(jù)存儲層:以原始格式存儲大規(guī)模的數(shù)據(jù)。

數(shù)據(jù)管理層:對數(shù)據(jù)進(jìn)行管理和組織,包括數(shù)據(jù)的分類、編目、索引等功能。還要負(fù)責(zé)數(shù)據(jù)的安全和合規(guī)。

數(shù)據(jù)訪問層(數(shù)據(jù)分析層):提供各種工具和框架,支持用戶對數(shù)據(jù)湖中的數(shù)據(jù)進(jìn)行查詢、統(tǒng)計分析、機器學(xué)習(xí)等操作。

好了,看到這里,大家一定會發(fā)現(xiàn),數(shù)據(jù)倉庫和數(shù)據(jù)湖有各自的優(yōu)點和缺點。

打開網(wǎng)易新聞 查看精彩圖片

那么,有沒有辦法,可以將兩者之間的優(yōu)點相結(jié)合呢?

當(dāng)然有的,那就是數(shù)據(jù)湖倉,也叫湖倉一體。

下一期,我們就來詳細(xì)了解一下,到底什么是數(shù)據(jù)湖倉(湖倉一體)。這也是鮮棗課堂大數(shù)據(jù)專題的最后一期。敬請期待!