這兩年,大量資本涌入數據庫市場,導致數據庫市場競爭更加白熱化。幾乎所有投資者都看好數據庫上云趨勢,就在云數據庫、云原生數據庫呼聲高漲的同時,云數倉成為一個新的賽道,開始走入大眾眼簾。只是,在分析什么是云數倉、云數倉為什么火爆之前,我們必要先來了解下數據倉庫的定義。
什么是數據倉庫?數據倉庫和商業智能是一回事嗎?
數據庫通常被分為關系型數據庫(SQL)或者非關系型數據庫 (NoSQL),以及聯機事務處理(OLTP)和交易型、聯機分析處理(OLAP),還有混合型業務處理 ( HTAP ) 。另外,除了這些常見的數據庫類型,專有數據庫也對業務提升帶了極大改進,只是隨著數據庫技術的發展,專有數據庫成了 " 數據孤島 " 的代名詞。
之后,一些聰明的企業開始嘗試,虛擬主機,將不同數據源的數據匯聚在一起,這些將保持著原格式的數據存儲起來的方式叫做數據湖;而按照通用格式或者經過加工與集成的數據,則被歸為數據倉庫。不同的數據倉庫獲取數據的方式不同,比如有的直接從操作型環境中獲取數據,有的則從企業級數據倉庫中獲取數據,這些滿足不同場景需要的數據倉庫,又叫數據集市。換言之,數據集市是數據倉庫的子集。
從本質上講,數據倉庫是一個分析型數據庫,通常是關系型數據庫,它由兩個或多個數據源創建,通常可以存儲具有 PB 級以上規模的歷史數據,然后憑借大量的計算和內存資源來運行復雜的查詢操作,最后生成數據報告。另外,數據倉庫也是商業智能 ( BI ) 系統和機器學習獲得直接數據源的唯一路徑。
為什么說數據倉庫特別重要?
企業之所以使用數據倉庫,是因為在 OLTP 中,索引的創建和使用受到個數和數據類型的限制,并且當數值接近峰值或者數據類型不符合規范時,會減慢用戶的數據分析和查詢速度。但是,如果把數據放在數據倉庫中,用戶就可以自定義主題,根據需要進行數據分析和查詢;同時,在數據倉庫中使用數據,不會影響到 OLTP 數據庫的寫入性能。
最重要的是,企業構建數據倉庫除了能提升數據處理速度,還能對多源數據進行分析。比如 : 一名銷售,在使用 OLTP 支撐的相關應用時,只能用來處理具體事務,但是不會看到銷售所在地的天氣,服務器租用,但是銷售又想擁有天氣預測功能,怎么辦呢?如果將所有和天氣相關的數據添加到數據倉庫,銷售就可以利用數據模型來判斷當地的天氣情況。
數據倉庫與數據湖是什么關系?
數據倉庫之所以與數據湖不同,除了數據存儲的格式有區別,數據的 " 讀取模式 " 也不一樣。數據湖是讀模式,很多數據都以易于讀取的格式存儲;而數據倉庫是 " 寫入模式 ",能支持各種數據類型的存儲,并且在索引查詢和各種數據關系的處理上更方便、快捷。
這種 " 讀取模式 " 適用于來自多個聚合根(不同上下文)的數據讀取,避免出現數據丟失的現象,但有一個弊端是,很多數據會變成死數據,應用不會被使用,大量占據存儲資源。" 寫入模式 " 適用于具有特定目的的數據,并且所使用數據必須與其他來源的數據正確關聯。但有時會因為錯誤的數據格式而被丟棄,導致有價值的數據沒有被使用。
主流的數據倉庫架構有哪些?
通常,數據倉庫架構分為三層,包括:源數據、數據倉庫和數據應用。
源數據層包括來自銷售、營銷和其他業務部門的運營數據,還可能包括社交媒體和外部數據,例如:人口調查和統計數據。
臨時數據庫,是指從數據源檢索到的數據,屬于臨時存儲區域,為下一步的數據處理做準備。比如:如果來源是非結構化的,例如:社交媒體文本,需要通過質量檢驗,刪除質量差的數據。
數據倉庫層,也稱為細節層,所有數據是一致、準確、干凈的數據,對源數據進清洗,去除雜質。
數據應用層,是從前端應用直接讀取的數據源,是指根據報表直接生成或者按主題需求計算出來的數據。
數據倉庫獲取數據以及在倉庫中實現的轉換和流動都可以認為是 ETL (提取、轉換和加載)過程,即指經過清洗的數據,通過 ETL 工具提取數據,執行任何所需的映射和轉換,并將數據加載到數據存儲層。而 ELT (提取、加載和轉換)工具,則是指先存儲數據,然后再進行轉換,使用 ELT 工具的好處是,數據跳過傳統的暫存層,直接進入數據湖。
什么是云數據倉庫?與本地數據倉庫相比有哪些區別?
隨著云計算的深化發展,企業應用上云已成為主流趨勢,而數據庫上云則成為企業應用上云的最后一步。眾所周知,云數據庫的概念,是指被優化或部署到一個虛擬計算環境中的數據庫,可以實現按需付費、按需擴展、高可用性以及存儲整合等優勢。而云數據倉庫和云數據庫的定義非常相似,也是指數據倉庫可以在本地、云中或混合環境中部署。
從過去實踐來看,數據倉庫都在本地部署,但本地數據中心以及服務器的可擴展性差,所以數據倉庫上云成為主流趨勢。只是,云數據倉庫也有一個挑戰,那就是將 PB 級數據全部遷移上云,涉及到計算、存儲和內存等成本。另外,如何快速上云也是一個挑戰。當然,隨著市場的不斷發展,這些問題都不再是問題,現在已經有超大規模的云服務提供商在提供大容量、基于磁盤的數據傳輸服務。
最后,到底選擇本地數據倉庫、云數據倉庫,還是選擇數據湖、數據集市,需要結合企業具體的數據量、增長速度等來確定,建議用戶先拿少量數據去測試,或者將部分數據托管在云上,等所有應用和流程跑通,再把成熟的架構向核心關鍵業務擴展。