數據湖 VS 數據倉庫
隨著近幾年數據湖概念的興起,業界對於數據倉庫和數據湖的對比甚至爭論一直不斷。有人說數據湖是下一代大數據平台,各大雲廠商也在紛紛的提出自己的數據湖解決方案,一些雲數據倉庫產品也增加了和數據湖聯動的特性。但是數據倉庫和數據湖的區別到底是什麼?
上篇文章我們介紹了什麼是數據湖、數據湖的基本架構,以及基於雲的數據湖框架,本文將對數據湖和數據倉庫的區別進行剖析,並介紹兩者融合演進的新方向——湖倉一體。
上篇文章我們介紹了什麼是數據湖、數據湖的基本架構,以及基於雲的數據湖框架,本文將對數據湖和數據倉庫的區別進行剖析,並介紹兩者融合演進的新方向——湖倉一體。
1. 什麼是數據倉庫
數據倉庫的概念最早來源於數據庫領域,主要處理面向數據的複雜查詢和分析場景。隨大數據技術發展,大量借鑒數據庫的技術,例如SQL語言、查詢優化器等,形成了大數據的數據倉庫,因其強大的分析能力,成為主流。近幾年,數據倉庫和雲原生技術相結合,又演生出了雲數據倉庫,解決了企業部署數據倉庫的資源供給問題。雲數據倉庫作為大數據的高階(企業級)平台能力,因其開箱即用、無限擴展、簡易運維等能力,越來越受到人們的矚目。
數據倉庫,是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它是單個數據存儲,出於分析性報告和決策支持目的而創建。為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。
數據倉庫的本質包含如下三部分:
(1)內置的存儲系統,數據通過抽象的方式提供(例如採用Table或者View),不暴露文件系統。
(2)數據需要清洗和轉化,通常採用ETL/ELT方式
(3)強調建模和數據管理,供商業智能決策
從上述的標準判斷,無論傳統數據倉庫(如Teradata)還是新興的雲數據倉庫系統(AWS Redshift、Google BigQuery、阿里雲MaxCompute)均體現了數倉的設計本質,它們均沒有對外暴露文件系統,而是提供了數據進出的服務接口。這個設計可以帶來多個優勢:
(1)引擎深度理解數據,存儲和計算可做深度優化
(2)數據全生命週期管理,完善的血緣體系
(3)細粒度的數據管理和治理
(4)完善的元數據管理能力,易於構建企業級數據中台
正因為如此,阿里巴巴飛天大數據平台建設之初,在選型的時候就採用了數據倉庫的架構,即MaxCompute大數據平台。 MaxCompute(原ODPS),既是阿里巴巴經濟體的大數據平台,又是阿里雲上的一種安全可靠、高效能、低成本、從GB到EB級別按需彈性伸縮的在線大數據計算服務(圖6.是MaxCompute產品架構,具體詳情請點擊阿里雲MaxCompute官網地址)。作為SaaS模式的企業級雲數倉,MaxCompute廣泛應用在阿里巴巴經濟體、以及阿里雲上互聯網、新金融、新零售、數字政府等數千家客戶。
得益於MaxCompute數據倉庫的架構,阿里巴巴上層逐步構建了“數據安全體系”、“數據質量”、“數據治理”、“數據標籤”等管理能力,並最終形成了阿里巴巴的大數據中台。可以說,作為最早數據中台概念的提出者,阿里巴巴的數據中台得益於數據倉庫的架構。
數據倉庫,是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它是單個數據存儲,出於分析性報告和決策支持目的而創建。為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。
數據倉庫的本質包含如下三部分:
(1)內置的存儲系統,數據通過抽象的方式提供(例如採用Table或者View),不暴露文件系統。
(2)數據需要清洗和轉化,通常採用ETL/ELT方式
(3)強調建模和數據管理,供商業智能決策
從上述的標準判斷,無論傳統數據倉庫(如Teradata)還是新興的雲數據倉庫系統(AWS Redshift、Google BigQuery、阿里雲MaxCompute)均體現了數倉的設計本質,它們均沒有對外暴露文件系統,而是提供了數據進出的服務接口。這個設計可以帶來多個優勢:
(1)引擎深度理解數據,存儲和計算可做深度優化
(2)數據全生命週期管理,完善的血緣體系
(3)細粒度的數據管理和治理
(4)完善的元數據管理能力,易於構建企業級數據中台
正因為如此,阿里巴巴飛天大數據平台建設之初,在選型的時候就採用了數據倉庫的架構,即MaxCompute大數據平台。 MaxCompute(原ODPS),既是阿里巴巴經濟體的大數據平台,又是阿里雲上的一種安全可靠、高效能、低成本、從GB到EB級別按需彈性伸縮的在線大數據計算服務(圖6.是MaxCompute產品架構,具體詳情請點擊阿里雲MaxCompute官網地址)。作為SaaS模式的企業級雲數倉,MaxCompute廣泛應用在阿里巴巴經濟體、以及阿里雲上互聯網、新金融、新零售、數字政府等數千家客戶。
得益於MaxCompute數據倉庫的架構,阿里巴巴上層逐步構建了“數據安全體系”、“數據質量”、“數據治理”、“數據標籤”等管理能力,並最終形成了阿里巴巴的大數據中台。可以說,作為最早數據中台概念的提出者,阿里巴巴的數據中台得益於數據倉庫的架構。
2. 從數據庫、數據倉庫到數據湖演變趨勢
數據庫的數據有對齊的要求,數據庫是面向應用的,每個應用可能需要一個數據庫。如果一個公司有幾十個應用,就會有幾十個數據庫。幾十個數據庫之間怎麼去連接分析、統一分析?是沒有辦法的。
隨後就由數據庫發展成了一個數據倉庫,數據倉庫不面向任何應用。但是,它對接到數據庫,如果需要每天定時有些 ETL 的批處理的任務,將不同應用和數據匯總起來,按照一些範式模型去做連接分析,得到一定時間段的總體數據視圖。這個前提是很多數據庫要給數倉供應數據。
而隨著數據量的增加及數據類型的變化,很多非結構化的數據,比如視頻、音頻及文檔等佔據數據總量的比例越來越多。原來的數據倉庫已經很難繼續支撐,因此越來越多的企業希望把原始數據以真實的初始狀態保留下來。在這種需求的推動下,數據湖的理念便開始成形,其可以把數據保存在原始狀態,以便於企業從多個維度進行更多分析。數據可以很輕鬆進入數據湖,用戶也可以延遲數據的採集、數據清洗、規範化的處理,可以把這些延遲到業務需求來了之後再進行處理。傳統的數倉,因為模型範式的要求,業務不能隨便的變遷,變遷涉及到底層數據的各種變化。相對來說,數據湖就更加的靈活,能更快速的適應上層數據應用的變化。
隨後就由數據庫發展成了一個數據倉庫,數據倉庫不面向任何應用。但是,它對接到數據庫,如果需要每天定時有些 ETL 的批處理的任務,將不同應用和數據匯總起來,按照一些範式模型去做連接分析,得到一定時間段的總體數據視圖。這個前提是很多數據庫要給數倉供應數據。
而隨著數據量的增加及數據類型的變化,很多非結構化的數據,比如視頻、音頻及文檔等佔據數據總量的比例越來越多。原來的數據倉庫已經很難繼續支撐,因此越來越多的企業希望把原始數據以真實的初始狀態保留下來。在這種需求的推動下,數據湖的理念便開始成形,其可以把數據保存在原始狀態,以便於企業從多個維度進行更多分析。數據可以很輕鬆進入數據湖,用戶也可以延遲數據的採集、數據清洗、規範化的處理,可以把這些延遲到業務需求來了之後再進行處理。傳統的數倉,因為模型範式的要求,業務不能隨便的變遷,變遷涉及到底層數據的各種變化。相對來說,數據湖就更加的靈活,能更快速的適應上層數據應用的變化。
3. 數據湖 VS 數據倉庫
數據湖是按原始數據格式存儲,旨在任何數據可以以最原始的形態儲存,可以是結構化或者非結構化數據,以確保數據在使用時可以不丟失任何細節,所有的實時數據和批量數據,都匯總到數據湖當中,然後從湖中取相關數據用於機器學習或者數據分析。
數據湖優先的設計,通過開放底層文件存儲,給數據入湖帶來了最大的靈活性。進入數據湖的數據可以是結構化的,也可以是半結構化的,甚至可以是完全非結構化的原始日誌。另外,開放存儲給上層的引擎也帶來了更多的靈活度,各種引擎可以根據自己針對的場景隨意讀寫數據湖中存儲的數據,而只需要遵循相當寬鬆的兼容性約定。但同時,文件系統直接訪問使得很多更高階的功能很難實現,例如,細粒度(小於文件粒度)的權限管理、統一化的文件管理和讀寫接口升級也十分困難(需要完成每一個訪問文件的引擎升級,才算升級完畢)。
而數據倉庫優先的設計,更加關注的是數據使用效率、大規模下的數據管理、安全/合規這樣的企業級成長性需求。數據經過統一但開放的服務接口進入數據倉庫,數據通常預先定義 schema,用戶通過數據服務接口或者計算引擎訪問分佈式存儲系統中的文件。數據倉庫優先的設計通過抽像數據訪問接口/權限管理/數據本身,來換取更高的性能(無論是存儲還是計算)、閉環的安全體系、數據治理的能力等,這些能力對於企業長遠的大數據使用都至關重要,我們稱之為成長性。
數據湖優先的設計,通過開放底層文件存儲,給數據入湖帶來了最大的靈活性。進入數據湖的數據可以是結構化的,也可以是半結構化的,甚至可以是完全非結構化的原始日誌。另外,開放存儲給上層的引擎也帶來了更多的靈活度,各種引擎可以根據自己針對的場景隨意讀寫數據湖中存儲的數據,而只需要遵循相當寬鬆的兼容性約定。但同時,文件系統直接訪問使得很多更高階的功能很難實現,例如,細粒度(小於文件粒度)的權限管理、統一化的文件管理和讀寫接口升級也十分困難(需要完成每一個訪問文件的引擎升級,才算升級完畢)。
而數據倉庫優先的設計,更加關注的是數據使用效率、大規模下的數據管理、安全/合規這樣的企業級成長性需求。數據經過統一但開放的服務接口進入數據倉庫,數據通常預先定義 schema,用戶通過數據服務接口或者計算引擎訪問分佈式存儲系統中的文件。數據倉庫優先的設計通過抽像數據訪問接口/權限管理/數據本身,來換取更高的性能(無論是存儲還是計算)、閉環的安全體系、數據治理的能力等,這些能力對於企業長遠的大數據使用都至關重要,我們稱之為成長性。
4. 湖倉一體
湖倉一體,即打通數據倉庫和數據湖兩套體系,讓數據和計算在湖和倉之間自由流動,從而構建一個完整的有機的大數據技術生態體系。
阿里雲湖倉一體方案:
阿里雲MaxCompute在原有的數據倉庫架構上,融合了開源數據湖和雲上數據湖,最終實現了湖倉一體化的整體架構。在該架構中,儘管底層多套存儲系統並存,但通過統一的存儲訪問層和統一的元數據管理,向上層引擎提供一體的封裝接口,用戶可以聯合查詢數據倉庫和數據湖中的表。整體架構還具備統一的數據安全、管理和治理等中台能力。
基於MaxCompute湖倉一體技術,DataWorks可以進一步對湖倉兩套系統進行封裝,屏蔽湖和倉異構集群信息,構建一體化的大數據中台,實現一套數據、一套任務在湖和倉之上無縫調度和管理。企業可以使用湖倉一體化的數據中台能力,優化數據管理架構,充分融合數據湖和數據倉庫各自優勢。使用數據湖做集中式的原始數據存儲,發揮數據湖的靈活和開放優勢。又通過湖倉一體技術將面向生產的高頻數據和任務,無縫調度到數據倉庫中,以得到更好的性能和成本,以及後續一系列面向生產的數據治理和優化,最終讓企業在成本和效率之間找到最佳平衡。
總體來說,MaxCompute湖倉一體為企業提供了一種更靈活更高效更經濟的數據平台解決方案,既適用於全新構建大數據平台的企業,也適合已有大數據平台的企業進行架構升級,可以保護現有投資和實現資產利舊。
阿里雲湖倉一體方案:
阿里雲MaxCompute在原有的數據倉庫架構上,融合了開源數據湖和雲上數據湖,最終實現了湖倉一體化的整體架構。在該架構中,儘管底層多套存儲系統並存,但通過統一的存儲訪問層和統一的元數據管理,向上層引擎提供一體的封裝接口,用戶可以聯合查詢數據倉庫和數據湖中的表。整體架構還具備統一的數據安全、管理和治理等中台能力。
基於MaxCompute湖倉一體技術,DataWorks可以進一步對湖倉兩套系統進行封裝,屏蔽湖和倉異構集群信息,構建一體化的大數據中台,實現一套數據、一套任務在湖和倉之上無縫調度和管理。企業可以使用湖倉一體化的數據中台能力,優化數據管理架構,充分融合數據湖和數據倉庫各自優勢。使用數據湖做集中式的原始數據存儲,發揮數據湖的靈活和開放優勢。又通過湖倉一體技術將面向生產的高頻數據和任務,無縫調度到數據倉庫中,以得到更好的性能和成本,以及後續一系列面向生產的數據治理和優化,最終讓企業在成本和效率之間找到最佳平衡。
總體來說,MaxCompute湖倉一體為企業提供了一種更靈活更高效更經濟的數據平台解決方案,既適用於全新構建大數據平台的企業,也適合已有大數據平台的企業進行架構升級,可以保護現有投資和實現資產利舊。