女朋友問小灰:什么是數(shù)據(jù)倉庫?什么是數(shù)據(jù)湖?什么是智能湖倉?
本文轉(zhuǎn)載自微信公眾號「程序員小灰」,作者小灰。轉(zhuǎn)載本文請聯(lián)系程序員小灰公眾號。
首先,我們來講一講什么是數(shù)據(jù)庫。
作為程序員,我們寫的大多數(shù)商業(yè)項目,往往都需要用到大量的數(shù)據(jù)。計算機(jī)的內(nèi)存,可以實(shí)現(xiàn)數(shù)據(jù)的快速存儲和訪問。
但是,內(nèi)存的空間是有限的,也無法長期保存有用的數(shù)據(jù)。對于那些大量的,需要長期使用的數(shù)據(jù),我們需要對它們進(jìn)行持久的、規(guī)范化的存儲,于是就有了數(shù)據(jù)庫(DataBase)。
市場上常用的數(shù)據(jù)庫有很多種,包括像MySQL、Oracle這樣的關(guān)系型數(shù)據(jù)庫,也包括Redis,HBase這樣的非關(guān)系型數(shù)據(jù)庫。
無論是哪一種數(shù)據(jù)庫,它們所存儲的都是結(jié)構(gòu)化數(shù)據(jù),主要應(yīng)用的領(lǐng)域是聯(lián)機(jī)事務(wù)處理(OLTP),也就是我們程序員所熟悉的增刪改查業(yè)務(wù)。
滿足了業(yè)務(wù)需求,數(shù)據(jù)庫當(dāng)中的數(shù)據(jù)不斷積累,變得越來越豐富。這時候人們發(fā)現(xiàn),這些數(shù)據(jù)不但可以支撐業(yè)務(wù)的運(yùn)行,也可以用于生成商業(yè)報表,進(jìn)行數(shù)據(jù)分析,提供有價值的決策參考。這些數(shù)據(jù)分析和生成報表的處理操作,被稱為聯(lián)機(jī)分析處理(OLAP)。
但是,傳統(tǒng)數(shù)據(jù)庫擅長的是快速地對小規(guī)模數(shù)據(jù)進(jìn)行增刪改查,并不擅長大規(guī)模數(shù)據(jù)的快速讀取。
于是,人們發(fā)明了一種全新的數(shù)據(jù)存儲方式,并把原本分散在不同項目當(dāng)中的業(yè)務(wù)數(shù)據(jù)進(jìn)行抽取、清洗、轉(zhuǎn)換、加載,最終匯總成為一系列面向主題的數(shù)據(jù)集合,按照全新的方式進(jìn)行存儲。
這種全新的存儲方式,被稱為數(shù)據(jù)倉庫(Data Warehouse);把數(shù)據(jù)進(jìn)行抽取、清洗、轉(zhuǎn)換、加載的過程,被稱為ETL(Extract Transform Load)。
數(shù)據(jù)倉庫當(dāng)中存儲的數(shù)據(jù),同樣是結(jié)構(gòu)化數(shù)據(jù)。
數(shù)據(jù)庫用于業(yè)務(wù)處理,數(shù)據(jù)倉庫用于數(shù)據(jù)分析,一時間大家都使用得十分愉快。
但是,隨著大數(shù)據(jù)和機(jī)器學(xué)習(xí)技術(shù)的不斷發(fā)展,人們發(fā)現(xiàn)不僅是結(jié)構(gòu)化的數(shù)據(jù)具有分析價值,許多非結(jié)構(gòu)化的數(shù)據(jù),例如用戶日志、電子郵件、PDF等等,同樣具有可觀的分析和學(xué)習(xí)價值。
這些五花八門的數(shù)據(jù),如果統(tǒng)一按照ETL的方式進(jìn)行加工處理,實(shí)在是不太現(xiàn)實(shí),那么索性把它們按照原始格式匯總在一起吧。這樣匯總起來的龐大集合,被存儲在了數(shù)據(jù)湖(Data Lake)當(dāng)中。
數(shù)據(jù)湖當(dāng)中的數(shù)據(jù)可謂是包羅萬象:
結(jié)構(gòu)化的,有各種關(guān)系型數(shù)據(jù)庫的行和列。
半結(jié)構(gòu)化的,有JSON、XML、CSV。
非結(jié)構(gòu)化的,有電子郵件、PDF、各種文檔。
甚至還有雜七雜八的二進(jìn)制文件,比如圖片、視頻、音頻。
通過數(shù)據(jù)湖這個統(tǒng)一的數(shù)據(jù)管理節(jié)點(diǎn),企業(yè)可以利用更加豐富多樣的數(shù)據(jù),為商業(yè)智能、機(jī)器學(xué)習(xí)等方向賦能。
在現(xiàn)實(shí)的企業(yè)項目當(dāng)中,所需要的不只是統(tǒng)一存儲的數(shù)據(jù)湖,也需要各種各樣專門構(gòu)建的存儲方案,由此為特定應(yīng)用場景提供必要的性能、規(guī)模與成本優(yōu)勢。
比如,我們?nèi)匀恍枰獢?shù)據(jù)倉庫,適合針對結(jié)構(gòu)化數(shù)據(jù)通過復(fù)雜查詢快速獲取結(jié)果;我們需要Lucene或Elastic Search這樣的全文檢索引擎,從而實(shí)現(xiàn)快速搜索并分析日志數(shù)據(jù),借此監(jiān)控生產(chǎn)系統(tǒng)的運(yùn)行狀態(tài)。
通過這些多樣的存儲方案,我們可以高效低成本地進(jìn)行數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、大數(shù)據(jù)處理、日志分析等工作。
為了從數(shù)據(jù)湖及專門構(gòu)建的存儲中獲取最大收益,企業(yè)希望在不同系統(tǒng)之間輕松移動數(shù)據(jù)。比如有些情況下,客戶希望將數(shù)據(jù)湖當(dāng)中的部分?jǐn)?shù)據(jù)移至數(shù)據(jù)倉庫、日志系統(tǒng)等節(jié)點(diǎn)。我們將這種情況,歸納為由內(nèi)向外的數(shù)據(jù)移動操作。
還有些情況下,企業(yè)希望將業(yè)務(wù)數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫移動到數(shù)據(jù)湖內(nèi)。我們將這種情況,歸納為由外向內(nèi)的數(shù)據(jù)移動操作。
最后,企業(yè)還可能要求將數(shù)據(jù)在不同的專用數(shù)據(jù)存儲方案之間往來移動,比如將數(shù)據(jù)倉庫內(nèi)的數(shù)據(jù)提供給機(jī)器學(xué)習(xí)系統(tǒng)。我們將這種情況,歸納為圍繞邊界的數(shù)據(jù)移動操作。
1.快速構(gòu)建起可擴(kuò)展的數(shù)據(jù)湖。
2.豐富而且功能強(qiáng)大的專門構(gòu)建的數(shù)據(jù)服務(wù)集合,這些數(shù)據(jù)服務(wù)可以為交互式儀表板與日志分析等提供必要的性能支持。
3.在數(shù)據(jù)湖及各專門構(gòu)建的數(shù)據(jù)服務(wù)之間實(shí)現(xiàn)數(shù)據(jù)的無縫化移動。
4.通過統(tǒng)一方式加以保護(hù)、監(jiān)控與管理,保證數(shù)據(jù)訪問活動的合規(guī)性。
5.以低成本方式擴(kuò)展系統(tǒng),保證不對性能產(chǎn)生負(fù)面影響。
我們將這樣一種強(qiáng)大的數(shù)據(jù)湖及其配套的專用構(gòu)建數(shù)據(jù)服務(wù)體系,稱為智能湖倉(Lake House)架構(gòu)。