2023年bill inmon出版的《building the data warehouse》一書中正式提出了資料倉儲的概念,inmon也被人成為資料倉儲之父。從本質上說,資料倉儲是一種從操作型系統到決策支援環境的資料流架構模型。這定義看上去有些抽象,解釋起來還要從資料庫說起。
資料庫是在資訊化初期,給業務使用的記錄和處理資料的工具。資料從紙質檔案數位化後在資料庫中處理和儲存。隨著資訊化發展到一定階段,商業世界中更需要從資料中分析出有價值的資訊,為決策提供可靠的依據。比如老闆需要得到哪款**最適合推薦給初入職場的女性,哪些產品在市場表現不佳,客戶對商品反饋主要集中在哪些方面等等。依靠傳統的操作型資料庫已經給不出準確的答案了,這就需要多資料來源整合、面向主題、適合複雜查詢的資料載體,也就是資料倉儲。
了解了為什麼有了資料庫還要資料倉儲,可能另外個問題又來了,資料倉儲與大資料是什麼關係?解釋這個問題還要從資料庫說起,準確說是關係型資料庫。
關係型資料庫存在橫向擴充套件的瓶頸,而這正是大資料平台的優勢,大資料平台可以利用廉價的伺服器搭建集群,承載海量的資料。打個比方,有一根木頭,正好一頭牛可以拉動,而如果有十根木頭怎麼辦,與其想方設法培育更健壯的牛,還不如找十頭牛一起來拉。大資料平台就是這個機制。在面臨浩瀚的企業級資料時,資料倉儲搭建在大資料平台上成了「天作之合」。
既然資料倉儲不同於傳統資料庫,而且可以搭載在大資料平台上,那麼資料倉儲的架構是怎樣的?
圖中顯示的整個資料倉儲環境包括操作型系統和資料倉儲系統兩大部分。操作型系統的資料由各種形式的業務資料組成,這其中可能有關聯式資料庫、txt或csv文 件、html或xml文件,還可能存在外部系統的資料,比如網路爬蟲抓取來的網際網路資料等,資料可能是結構化、半結構化、非結構化的。這些資料經過抽取、轉換和裝載(etl)過程進入資料倉儲系統。 這裡把etl過程分成了抽取和轉換裝載兩個部分。抽取過程負責從操作型系統獲取資料,該過程一般不做資料聚合和彙總,但是會按照主題進行整合,物理上是將操 作型系統的資料全量或增量複製到資料倉儲系統的rds中。轉換裝載過程並將資料進行清洗、過濾、彙總、統一格式化等一系列轉換操作,使資料轉為適合查詢的格式,然後裝載進資料倉儲系統的tds中。傳統資料倉儲的基本模式是用一些過程將操作型系統的資料抽取到檔案,然後另一些過程將這些檔案轉化成mysql或oracle這樣的關 系資料庫的記錄。最後,第三部分過程負責把資料匯入進資料倉儲。
rds(raw data stores)是原始資料儲存的意思。將原始資料儲存到資料倉儲裡是個不錯的想法。etl過程的bug或系統中的其他錯誤是不可避免的,保留原始數 據使得追蹤並修改這些錯誤成為可能。有時資料倉儲的使用者會有查詢細節資料的需求,這些細節資料的粒度與操作型系統的相同。有了rds,這種需求就很容易實現,用 戶可以查詢rds裡的資料而不必影響業務系統的正常執行。這裡的rds實際上是起到了操作型資料儲存(ods)的作用。
tds(transformed data stores)意為轉換後的資料儲存。這是真正的資料倉儲中的資料。大量的使用者會在經過轉換的資料集上處理他們的日常查詢。如果前面的工作做得好,這些資料將被以保證最重要的和最頻繁的查詢能夠快速執行的方式構建。
自動化排程元件的作用是自動定期重複執行etl過程。不同角色的資料倉儲使用者對資料的更新頻率要求也會有所不同,財務主管需要每月的營收彙總報告,而銷售人員想看到每天的產品銷售資料。作為通用的需求,所有資料倉儲系統都應該能夠建立週期性自動執行的工作流作業。傳統資料倉儲一般利用作業系統自帶的排程功能(如 linux的cron或windows的計畫任務)實現作業自動執行。
資料目錄有時也被稱為元資料儲存,它可以提供乙份資料倉儲中資料的清單。使用者通過它應該可以快速解決這些問題:什麼型別的資料被儲存在**,資料集的構建有何區別,資料最後的訪問或更新時間等。此外還可以通過資料目錄感知資料是如何被操作和轉換的。乙個好的資料目錄是讓使用者體驗到系統易用性的關鍵。
查詢引擎元件負責實際執行使用者查詢。傳統資料倉儲中,它可能是儲存轉換後資料的(oracle、mysql等關係資料庫系統內建的)查詢引擎,還可能是以固定時間間隔向其匯入資料的olap立方體,如essbasecube。
使用者介面指的是終端使用者所使用的介面程式。可能是乙個gui軟體,如bi套件的中的客戶端軟體,也可能就是乙個瀏覽器。概括一下資料倉儲的架構為:
ods->etl->rds->etl->tds
從ods(operational data store)資料經過抽取、轉換和裝載(etl)到rds(raw data stores)是原始資料儲存,再經過etl 到tds(transformed data stores)為轉換後的資料儲存,成為數倉資料。etl是建立資料倉儲最重要的處理過程,也是最體現工作量的環節,一般會佔到整個資料倉儲專案工作量的一半以上。
資料倉儲各環節都可以使用hadoop大資料平台元件實現,對應關係如下:
rds/tds <> hive參考:etl 的e抽取<> sqoop/flume
etl的tl轉換裝載 <>hivesql
etl的過程管理和自動化排程 <> falcon/oozie
資料目錄 <> hcatalog
sql查詢 <> impala/hivesql/sparksql
視覺化 <> hue/zeppelin
資料庫 與 資料倉儲的本質區別是什麼?
什麼是資料倉儲,以及我為什麼需要它?
為什麼說資料中颱是大資料的下一站?
《hadoop構建資料倉儲實踐》
資料倉儲介紹
什麼是數倉 資料倉儲簡稱dw,就是乙個用以更好地支援企業或組織的決策分析處理的 面向主題的 整合的 不可更新的 隨時間不斷變化的資料集合。為什麼要有數倉 主要因為面向應用型的應用的資料庫設計一般是操作型的,而資料分析或者資料探勘都是面向分析型的應用。這兩種應用各有特點和適用的場景,對資料的處理應當分...
資料倉儲介紹
備註 根據網路資源整理 數倉分層部分待進一步研究 一.定義 理解 資料倉儲是資料庫一種概念上的公升級,為滿足業務需求而設計,提供了各種型別的資料支援,容納更多的資料。為企業所有級別的決策制定過程,提供所有型別資料支撐的戰略集合,主要是用於資料探勘和資料分析,以建立資料沙盤為基礎,為消滅訊息孤島和支援...
ETL(資料倉儲技術)
etl,是英文 extract transform load 的縮寫,用來描述將資料從 端經過抽取 extract 轉換 transform 載入 load 至目的端的過程。etl一詞較常用在 資料倉儲,但其物件並不限於資料倉儲。etl是構建資料倉儲的重要一環,使用者從 資料來源抽取出所需的資料,經...