導(dǎo)讀:數(shù)據(jù)湖概念的誕生,源自企業(yè)面臨的一些挑戰(zhàn),如數(shù)據(jù)應(yīng)該以何種方式處理和存儲。最開始,企業(yè)對種類龐雜的應(yīng)用程序的管理都經(jīng)歷了一個比較自然的演化周期。
最開始的時候,每個應(yīng)用程序會產(chǎn)生、存儲大量數(shù)據(jù),而這些數(shù)據(jù)并不能被其他應(yīng)用程序使用,這種狀況導(dǎo)致數(shù)據(jù)孤島的產(chǎn)生。隨后數(shù)據(jù)集市應(yīng)運而生,應(yīng)用程序產(chǎn)生的數(shù)據(jù)存儲在一個集中式的數(shù)據(jù)倉庫中,可根據(jù)需要導(dǎo)出相關(guān)數(shù)據(jù)傳輸給企業(yè)內(nèi)需要該數(shù)據(jù)的部門或個人。
然而數(shù)據(jù)集市只解決了部分問題。剩余問題,包括數(shù)據(jù)管理、數(shù)據(jù)所有權(quán)與訪問控制等都亟須解決,因為企業(yè)尋求獲得更高的使用有效數(shù)據(jù)的能力。
為了解決前面提及的各種問題,企業(yè)有很強烈的訴求搭建自己的數(shù)據(jù)湖,數(shù)據(jù)湖不但能存儲傳統(tǒng)類型數(shù)據(jù),也能存儲任意其他類型數(shù)據(jù),并且能在它們之上做進一步的處理與分析,產(chǎn)生最終輸出供各類程序消費。
在本文中,將介紹數(shù)據(jù)湖的一些主要方面,幫助讀者理解為什么它對企業(yè)非常重要。
作者:湯姆斯·約翰 潘卡·米斯拉
如需轉(zhuǎn)載請聯(lián)系大數(shù)據(jù)(ID:hzdashuju)
01 什么是數(shù)據(jù)湖
如果需要給數(shù)據(jù)湖下一個定義,可以定義為這樣:數(shù)據(jù)湖是一個存儲企業(yè)的各種各樣原始數(shù)據(jù)的大型倉庫,其中的數(shù)據(jù)可供存取、處理、分析及傳輸。
數(shù)據(jù)湖從企業(yè)的多個數(shù)據(jù)源獲取原始數(shù)據(jù),并且針對不同的目的,同一份原始數(shù)據(jù)還可能有多種滿足特定內(nèi)部模型格式的數(shù)據(jù)副本。因此,數(shù)據(jù)湖中被處理的數(shù)據(jù)可能是任意類型的信息,從結(jié)構(gòu)化數(shù)據(jù)到完全非結(jié)構(gòu)化數(shù)據(jù)。
企業(yè)對數(shù)據(jù)湖寄予厚望,希望它能幫助用戶快速獲取有用信息,并能將這些信息用于數(shù)據(jù)分析和機器學(xué)習(xí)算法,以獲得與企業(yè)運行相關(guān)的洞察力。
數(shù)據(jù)湖與企業(yè)的關(guān)系
數(shù)據(jù)湖能給企業(yè)帶來多種能力,例如,能實現(xiàn)數(shù)據(jù)的集中式管理,在此之上,企業(yè)能挖掘出很多之前所不具備的能力。
另外,數(shù)據(jù)湖結(jié)合先進的數(shù)據(jù)科學(xué)與機器學(xué)習(xí)技術(shù),能幫助企業(yè)構(gòu)建更多優(yōu)化后的運營模型,也能為企業(yè)提供其他能力,如預(yù)測分析、推薦模型等,這些模型能刺激企業(yè)能力的后續(xù)增長。
企業(yè)數(shù)據(jù)中隱藏著多種能力,然而,在重要數(shù)據(jù)能夠被具備商業(yè)數(shù)據(jù)洞察力的人使用之前,人們無法利用它們來改善企業(yè)的商業(yè)表現(xiàn)。
02 數(shù)據(jù)湖如何幫助企業(yè)
長期以來,企業(yè)一直試圖找到一個統(tǒng)一的模型來表示企業(yè)中所有實體。這個任務(wù)有極大的挑戰(zhàn)性,原因有很多,下面列舉了其中的一部分:
一個實體在企業(yè)中可能有多種表示形式,因此可能不存在某個完備的模型來統(tǒng)一表示實體。
不同的企業(yè)應(yīng)用程序可能會基于特定的商業(yè)目標來處理實體,這意味著處理實體時會采用或排斥某些企業(yè)流程。
不同應(yīng)用程序可能會對每個實體采用不同的訪問模式及存儲結(jié)構(gòu)。
這些問題已困擾企業(yè)多年,并阻礙了業(yè)務(wù)處理、服務(wù)定義及術(shù)語命名等事務(wù)的標準化。
從數(shù)據(jù)湖的角度來看,我們正在以另外一種方式來看待這個問題。使用數(shù)據(jù)湖,隱式實現(xiàn)了一個較好的統(tǒng)一數(shù)據(jù)模型,而不用擔心對業(yè)務(wù)程序產(chǎn)生實質(zhì)性影響。這些業(yè)務(wù)程序則是解決具體業(yè)務(wù)問題的“專家”。數(shù)據(jù)湖基于從實體所有者相關(guān)的所有系統(tǒng)中捕獲的全量數(shù)據(jù)來盡可能“豐滿”地表示實體。
因為在實體表示方面更優(yōu)且更完備,數(shù)據(jù)湖確實給企業(yè)數(shù)據(jù)處理與管理帶來了巨大的幫助,使得企業(yè)具備更多關(guān)于企業(yè)增長方面的洞察力,幫助企業(yè)達成其商業(yè)目標。
值得一提的是,Martin Fowler寫過一篇很有意思的文章,在這篇文章中,他對企業(yè)數(shù)據(jù)湖的一些關(guān)鍵方面做了簡明扼要的闡述,可參考下面這個鏈接:
https://martinfowler.com/bliki/DataLake.html
數(shù)據(jù)湖的優(yōu)點
企業(yè)會在其多個業(yè)務(wù)系統(tǒng)中產(chǎn)生海量數(shù)據(jù),隨著企業(yè)體量增大,企業(yè)也需要更智能地處理這些橫跨多個系統(tǒng)的數(shù)據(jù)。
一種最基本的策略是采用一個單獨的領(lǐng)域模型,它能精準地描述數(shù)據(jù)并能代表對總體業(yè)務(wù)最有價值的那部分數(shù)據(jù)。這些數(shù)據(jù)指的是前面提到的企業(yè)數(shù)據(jù)。
對企業(yè)數(shù)據(jù)進行了良好定義的企業(yè)當然也有一些管理數(shù)據(jù)的方法,因此企業(yè)數(shù)據(jù)定義的更改能保持一致性,企業(yè)內(nèi)部也很清楚系統(tǒng)是如何共享這些信息的。
在這種案例中,系統(tǒng)被分為數(shù)據(jù)擁有者(data owner)及數(shù)據(jù)消費者(data consumer)。對于企業(yè)數(shù)據(jù)來說,需要有對應(yīng)的擁有者,擁有者定義了數(shù)據(jù)如何被其他消費系統(tǒng)獲取,消費系統(tǒng)扮演著消費者的角色。
一旦企業(yè)有了對數(shù)據(jù)和系統(tǒng)的明晰定義,就可以通過該機制利用大量的企業(yè)信息。該機制的一種常見實現(xiàn)策略是通過構(gòu)建企業(yè)級數(shù)據(jù)湖來提供統(tǒng)一的企業(yè)數(shù)據(jù)模型,在該機制中,數(shù)據(jù)湖負責捕獲數(shù)據(jù)、處理數(shù)據(jù)、分析數(shù)據(jù),以及為消費者系統(tǒng)提供數(shù)據(jù)服務(wù)。
數(shù)據(jù)湖能從以下方面幫助到企業(yè):
實現(xiàn)數(shù)據(jù)治理(data governance)與數(shù)據(jù)世系。
通過應(yīng)用機器學(xué)習(xí)與人工智能技術(shù)實現(xiàn)商業(yè)智能。
預(yù)測分析,如領(lǐng)域特定的推薦引擎。
信息追蹤與一致性保障。
根據(jù)對歷史的分析生成新的數(shù)據(jù)維度。
有一個集中式的能存儲所有企業(yè)數(shù)據(jù)的數(shù)據(jù)中心,有利于實現(xiàn)一個針對數(shù)據(jù)傳輸優(yōu)化的數(shù)據(jù)服務(wù)。
幫助組織或企業(yè)做出更多靈活的關(guān)于企業(yè)增長的決策。
在本節(jié)中,我們討論數(shù)據(jù)湖應(yīng)該具備哪些能力。后續(xù)將會討論和評述數(shù)據(jù)湖是如何工作的,以及應(yīng)該如何去理解其工作機制。
03 數(shù)據(jù)湖是如何工作的
為了準確理解數(shù)據(jù)湖能給企業(yè)帶來哪些好處,理解數(shù)據(jù)湖的工作機制以及構(gòu)建功能齊全的數(shù)據(jù)湖需要哪些組件就顯得尤為重要了。在一頭扎進數(shù)據(jù)湖架構(gòu)細節(jié)之前,不妨先來了解數(shù)據(jù)湖背景中的數(shù)據(jù)生命周期。
在一個較高的層面來看,數(shù)據(jù)湖中數(shù)據(jù)生命周期如圖2-1所示。
▲圖2-1 數(shù)據(jù)湖的生命周期
上述生命周期也可稱為數(shù)據(jù)在數(shù)據(jù)湖中的多個不同階段。每個階段所需的數(shù)據(jù)和分析方法也有所不同。數(shù)據(jù)處理與分析既可按批量(batch)方式處理,也可以按近實時(near-real-time)方式處理。
數(shù)據(jù)湖的實現(xiàn)需要同時支持這兩種處理方式,因為不同的處理方式服務(wù)于不同的場景。處理方式(批處理或近實時處理)的選擇也依賴數(shù)據(jù)處理或分析任務(wù)的計算量,因為很多復(fù)雜計算不可能在近實時處理模式中完成,而在一些案例中,則不能接受較長的處理周期。
同樣,存儲系統(tǒng)的選擇還依賴于數(shù)據(jù)訪問的要求。例如,如果希望存儲數(shù)據(jù)時便于通過SQL查詢訪問數(shù)據(jù),則選擇的存儲系統(tǒng)必須支持SQL接口。
如果數(shù)據(jù)訪問要求提供數(shù)據(jù)視圖,則涉及將數(shù)據(jù)存儲為對應(yīng)的形式,即數(shù)據(jù)可以作為視圖對外提供,并提供便捷的可管理性和可訪問性。
最近出現(xiàn)的一個日漸重要的趨勢是通過服務(wù)(service)來提供數(shù)據(jù),它涉及在輕量級服務(wù)層上對外公開數(shù)據(jù)。每個對外公開的服務(wù)必須準確地描述服務(wù)功能并對外提供數(shù)據(jù)。此模式還支持基于服務(wù)的數(shù)據(jù)集成,這樣其他系統(tǒng)可以消費數(shù)據(jù)服務(wù)提供的數(shù)據(jù)。
當數(shù)據(jù)從采集點流入數(shù)據(jù)湖時,它的元數(shù)據(jù)被捕獲,并根據(jù)其生命周期中的數(shù)據(jù)敏感度從數(shù)據(jù)可追溯性、數(shù)據(jù)世系和數(shù)據(jù)安全等方面進行管理。
數(shù)據(jù)世系被定義為數(shù)據(jù)的生命周期,包括數(shù)據(jù)的起源以及數(shù)據(jù)是如何隨時間移動的。它描述了數(shù)據(jù)在各種處理過程中發(fā)生了哪些變化,有助于提供數(shù)據(jù)分析流水線的可見性,并簡化了錯誤溯源。
可追溯性是通過標識記錄來驗證數(shù)據(jù)項的歷史、位置或應(yīng)用的能力。
——維基百科
04 數(shù)據(jù)湖與數(shù)據(jù)倉庫的區(qū)別
很多時候,數(shù)據(jù)湖被認為與數(shù)據(jù)倉庫是等同的。實際上數(shù)據(jù)湖與數(shù)據(jù)倉庫代表著企業(yè)想達成的不同目標。表2-1中顯示了兩者的關(guān)鍵區(qū)別。
數(shù)據(jù)湖 | 數(shù)據(jù)倉庫 |
能處理所有類型的數(shù)據(jù),如結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù),半結(jié)構(gòu)化數(shù)據(jù)等,數(shù)據(jù)的類型依賴于數(shù)據(jù)源系統(tǒng)的原始數(shù)據(jù)格式。 | 只能處理結(jié)構(gòu)化數(shù)據(jù)進行處理,而且這些數(shù)據(jù)必須與數(shù)據(jù)倉庫事先定義的模型吻合。 |
擁有足夠強的計算能力用于處理和分析所有類型的數(shù)據(jù),分析后的數(shù)據(jù)會被存儲起來供用戶使用。 | 處理結(jié)構(gòu)化數(shù)據(jù),將它們或者轉(zhuǎn)化為多維數(shù)據(jù),或者轉(zhuǎn)換為報表,以滿足后續(xù)的高級報表及數(shù)據(jù)分析需求。 |
數(shù)據(jù)湖通常包含更多的相關(guān)的信息,這些信息有很高概率會被訪問,并且能夠為企業(yè)挖掘新的運營需求。 | 數(shù)據(jù)倉庫通常用于存儲和維護長期數(shù)據(jù),因此數(shù)據(jù)可以按需訪問。 |
▲表2-1 數(shù)據(jù)湖與數(shù)據(jù)倉庫的關(guān)鍵區(qū)別
從表2-1來看,數(shù)據(jù)湖與數(shù)據(jù)倉庫的差別很明顯。然而,在企業(yè)中兩者的作用是互補的,不應(yīng)認為數(shù)據(jù)湖的出現(xiàn)是為了取代數(shù)據(jù)倉庫,畢竟兩者的作用是截然不同的。
05 數(shù)據(jù)湖的構(gòu)建方法
不同的組織有不同的偏好,因此它們構(gòu)建數(shù)據(jù)湖的方式也不一樣。構(gòu)建方法與業(yè)務(wù)、處理流程及現(xiàn)存系統(tǒng)等因素有關(guān)。
簡單的數(shù)據(jù)湖實現(xiàn)幾乎等價于定義一個中心數(shù)據(jù)源,所有的系統(tǒng)都可以使用這個中心數(shù)據(jù)源來滿足所有的數(shù)據(jù)需求。雖然這種方法可能很簡單,也很劃算,但它可能不是一個非常實用的方法,原因如下:
只有當這些組織重新開始構(gòu)建其信息系統(tǒng)時,這種方法才可行。
這種方法解決不了與現(xiàn)存系統(tǒng)相關(guān)的問題。
即使組織決定用這種方法構(gòu)建數(shù)據(jù)湖,也缺乏明確的責任和關(guān)注點隔離(responsibility and separation of concerns)。
這樣的系統(tǒng)通常嘗試一次性完成所有的工作,但是最終會隨著數(shù)據(jù)事務(wù)、分析和處理需求的增加而分崩離析。
更好的構(gòu)建數(shù)據(jù)湖的策略是將企業(yè)及其信息系統(tǒng)作為一個整體來看待,對數(shù)據(jù)擁有關(guān)系進行分類,定義統(tǒng)一的企業(yè)模型。
這種方法雖然可能存在流程相關(guān)的挑戰(zhàn),并且可能需要花費更多的精力來對系統(tǒng)元素進行定義,但是它仍然能夠提供所需的靈活性、控制和清晰的數(shù)據(jù)定義以及企業(yè)中不同系統(tǒng)實體之間的關(guān)注點隔離。
這樣的數(shù)據(jù)湖也可以有獨立的機制來捕獲、處理、分析數(shù)據(jù),并為消費者應(yīng)用程序提供數(shù)據(jù)服務(wù)。
關(guān)于作者:湯姆斯·約翰(Tomcy John)是一名企業(yè)級Java技術(shù)專家,擁有工學(xué)學(xué)士學(xué)位,并且有超過14年多行業(yè)的開發(fā)經(jīng)驗。
聯(lián)系客服