數據倉庫是什么
數據倉庫是一個面向主題的、集成的、不可更新的、隨時間不斷變化的數據集合,它用于支持企業或組織的決策分析處理。
數據倉庫是一個過程而不是一個項目。
數據倉庫系統是一個信息提供平臺,他從業務處理系統獲得數據,主要以星型模型和雪花模型進行數據組織,并為用戶提供各種手段從數據中獲取信息和知識。
從功能結構化分,數據倉庫系統至少應該包含數據獲取(Data Acquisition)、數據存儲(Data Storage)、數據訪問(Data Access)三個關鍵部分。
企業數據倉庫的建設,是以現有企業業務系統和大量業務數據的積累為基礎。數據倉庫不是靜態的概念,只有把信息及時交給需要這些信息的使用者,供他們做出改善其業務經營的決策,信息才能發揮作用,信息才有意義。而把信息加以整理歸納和重組,并及時提供給相應的管理決策人員,是數據倉庫的根本任務。因此,從產業界的角度看,數據倉庫建設是一個工程,是一個過程。
數據倉庫系統體系結構
·數據源:是數據倉庫系統的基礎,是整個系統的數據源泉。通常包括企業內部信息和外部信息。內部信息包括存放于RDBMS中的各種業務處理數據和各類文檔數據。外部信息包括各類法律法規、市場信息和競爭對手的信息等等;
·數據的存儲與管理:是整個數據倉庫系統的核心。數據倉庫的真正關鍵是數據的存儲和管理。數據倉庫的組織管理方式決定了它有別于傳統數據庫,同時也決定了其對外部數據的表現形式。要決定采用什么產品和技術來建立數據倉庫的核心,則需要從數據倉庫的技術特點著手分析。針對現有各業務系統的數據,進行抽取、清理,并有效集成,按照主題進行組織。數據倉庫按照數據的覆蓋范圍可以分為企業級數據倉庫和部門級數據倉庫(通常稱為數據集市)。
·OLAP(聯機分析處理)服務器:對分析需要的數據進行有效集成,按多維模型予以組織,以便進行多角度、多層次的分析,并發現趨勢。其具體實現可以分為:ROLAP(關系型在線分析處理)、MOLAP(多維在線分析處理)和HOLAP(混合型線上分析處理)。ROLAP基本數據和聚合數據均存放在RDBMS之中;MOLAP基本數據和聚合數據均存放于多維數據庫中;HOLAP基本數據存放于RDBMS之中,聚合數據存放于多維數據庫中。
·前端工具:主要包括各種報表工具、查詢工具、數據分析工具、數據挖掘工具以數據挖掘及各種基于數據倉庫或數據集市的應用開發工具。其中數據分析工具主要針對OLAP服務器,報表工具、數據挖掘工具主要針對數據倉庫。
目前,數據倉庫一詞尚沒有一個統一的定義,著名的數據倉庫專家W.H.Inmon在其著作《Building the Data Warehouse》一書中給予如下描述:數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrate)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,用于支持管理決策。對于數據倉庫的概念我們可以從兩個層次予以理解,首先,數據倉庫用于支持決策,面向分析型數據處理,它不同于企業現有的操作型數據庫;其次,數據倉庫是對多個異構的數據源有效集成,集成后按照主題進行了重組,并包含歷史數據,而且存放在數據倉庫中的數據一般不再修改。
數據倉庫的組成
數據倉庫數據庫
是整個數據倉庫環境的核心,是數據存放的地方和提供對數據檢索的支持。相對于操縱型數據庫來說其突出的特點是對海量數據的支持和快速的檢索技術。
數據抽取工具
把數據從各種各樣的存儲方式中拿出來,進行必要的轉化、整理,再存放到數據倉庫內。對各種不同數據存儲方式的訪問能力是數據抽取工具的關鍵,應能生成COBOL程序、MVS作業控制語言(JCL)、UNIX腳本、和SQL語句等,以訪問不同的數據。數據轉換都包括,刪除對決策應用沒有意義的數據段;轉換到統一的數據名稱和定義;計算統計和衍生數據;給缺值數據賦給缺省值;把不同的數據定義方式統一。
元數據
元數據是描述數據倉庫內數據的結構和建立方法的數據。可將其按用途的不同分為兩類,技術元數據和商業元數據。
技術元數據是數據倉庫的設計和管理人員用于開發和日常管理數據倉庫是用的數據。包括:數據源信息;數據轉換的描述;數據倉庫內對象和數據結構的定義;數據清理和數據更新時用的規則;源數據到目的數據的映射;用戶訪問權限,數據備份歷史記錄,數據導入歷史記錄,信息發布歷史記錄等。
商業元數據從商業業務的角度描述了數據倉庫中的數據。包括:業務主題的描述,包含的數據、查詢、報表;
元數據為訪問數據倉庫提供了一個信息目錄(informationdirectory),這個目錄全面描述了數據倉庫中都有什么數據、這些數據怎么得到的、和怎么訪問這些數據。是數據倉庫運行和維護的中心,數據倉庫服務器利用他來存貯和更新數據,用戶通過他來了解和訪問數據。
訪問工具
為用戶訪問數據倉庫提供手段。有數據查詢和報表工具;應用開發工具;管理信息系統(EIS)工具;在線分析(OLAP)工具;數據挖掘工具。
數據集市(DataMarts)
為了特定的應用目的或應用范圍,而從數據倉庫中獨立出來的一部分數據,也可稱為部門數據或主題數據(subjectarea)。在數據倉庫的實施過程中往往可以從一個部門的數據集市著手,以后再用幾個數據集市組成一個完整的數據倉庫。需要注意的就是再實施不同的數據集市時,同一含義的字段定義一定要相容,這樣再以后實施數據倉庫時才不會造成大麻煩。
數據倉庫管理:安全和特權管理;跟蹤數據的更新;數據質量檢查;管理和更新元數據;審計和報告數據倉庫的使用和狀態;刪除數據;復制、分割和分發數據;備份和恢復;存儲管理。
信息發布系統:把數據倉庫中的數據或其他相關的數據發送給不同的地點或用戶。基于Web的信息發布系統是對付多用戶訪問的最有效方法。
數據倉庫的幾大特點
1、數據倉庫是面向主題的;操作型數據庫的數據組織面向事務處理任務,而數據倉庫中的數據是按照一定的主題域進行組織。主題是指用戶使用數據倉庫進行決策時所關心的重點方面,一個主題通常與多個操作型信息系統相關。
2、數據倉庫是集成的,數據倉庫的數據有來自于分散的操作型數據,將所需數據從原來的數據中抽取出來,進行加工與集成,統一與綜合之后才能進入數據倉庫;
數據倉庫中的數據是在對原有分散的數據庫數據抽取、清理的基礎上經過系統加工、匯總和整理得到的,必須消除源數據中的不一致性,以保證數據倉庫內的信息是關于整個企業的一致的全局信息。
數據倉庫的數據主要供企業決策分析之用,所涉及的數據操作主要是數據查詢,一旦某個數據進入數據倉庫以后,一般情況下將被長期保留,也就是數據倉庫中一般有大量的查詢操作,但修改和刪除操作很少,通常只需要定期的加載、刷新。
數據倉庫中的數據通常包含歷史信息,系統記錄了企業從過去某一時點(如開始應用數據倉庫的時點)到當前的各個階段的信息,通過這些信息,可以對企業的發展歷程和未來趨勢做出定量分析和預測。
3、數據倉庫是不可更新的,數據倉庫主要是為決策分析提供數據,所涉及的操作主要是數據的查詢;
4、數據倉庫是隨時間而變化的,傳統的關系數據庫系統比較適合處理格式化的數據,能夠較好的滿足商業商務處理的需求。穩定的數據以只讀格式保存,且不隨時間改變。
5、匯總的。操作性數據映射成決策可用的格式。
6、大容量。時間序列數據集合通常都非常大。
7、非規范化的。Dw數據可以是而且經常是冗余的。
8、元數據。將描述數據的數據保存起來。
9、數據源。數據來自內部的和外部的非集成操作系統。
數據倉庫用途
信息技術與數據智能大環境下,數據倉庫在軟硬件領域、Internet 和企業內部網解決方案以及數據庫方面提供了許多經濟高效的計算資源,可以保存極大量的數據供分析使用,且允許使用多種數據訪問技術。
開放系統技術使得分析大量數據的成本趨于合理,并且硬件解決方案也更為成熟。在數據倉庫應用中主要使用的技術如下:
并行
計算的硬件環境、操作系統環境、 數據庫管理系統和所有相關的數據庫操作、查詢工具和技術、應用程序等各個領域都可以從并行的最新成就中獲益。
分區
分區功能使得支持大型表和索引更容易,同時也提高了數據管理和查詢性能。
數據壓縮
數據壓縮功能降低了數據倉庫環境中通常需要的用于存儲大量數據的磁盤系統的成本,新的數據壓縮技術也已經消除了壓縮數據對查詢性能造成的負面影響。
數據庫和數據倉庫區別分析
數據庫:傳統的關系型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。
數據倉庫:數據倉庫系統的主要應用主要是OLAP(On-Line Analytical Processing),支持復雜的分析操作,側重決策支持,并且提供直觀易懂的查詢結果。
舉個最常見的例子,拿電商行業來說。
基本每家電商公司都會經歷,從只需要業務數據庫到要數據倉庫的階段。
電商早期啟動非常容易,入行門檻低。找個外包團隊,做了一個可以下單的網頁前端 + 幾臺服務器 + 一個MySQL,就能開門迎客了。這好比手工作坊時期。
第二階段,流量來了,客戶和訂單都多起來了,普通查詢已經有壓力了,這個時候就需要升級架構變成多臺服務器和多個業務數據庫(量大+分庫分表),這個階段的業務數字和指標還可以勉強從業務數據庫里查詢。初步進入工業化。
第三個階段,一般需要 3-5 年左右的時間,隨著業務指數級的增長,數據量的會陡增,公司角色也開始多了起來,開始有了 CEO、CMO、CIO,大家需要面臨的問題越來越復雜,越來越深入。高管們關心的問題,從最初非常粗放的:“昨天的收入是多少”、“上個月的 PV、UV 是多少”,逐漸演化到非常精細化和具體的用戶的集群分析,特定用戶在某種使用場景中,例如“20~30歲女性用戶在過去五年的第一季度化妝品類商品的購買行為與公司進行的促銷活動方案之間的關系”。
這類非常具體,且能夠對公司決策起到關鍵性作用的問題,基本很難從業務數據庫從調取出來。原因在于:
業務數據庫中的數據結構是為了完成交易而設計的,不是為了而查詢和分析的便利設計的。
業務數據庫大多是讀寫優化的,即又要讀(查看商品信息),也要寫(產生訂單,完成支付)。因此對于大量數據的讀(查詢指標,一般是復雜的只讀類型查詢)是支持不足的。
而怎么解決這個問題,此時我們就需要建立一個數據倉庫了,公司也算開始進入信息化階段了。數據倉庫的作用在于:
數據結構為了分析和查詢的便利;
只讀優化的數據庫,即不需要它寫入速度多么快,只要做大量數據的復雜查詢的速度足夠快就行了。
那么在這里前一種業務數據庫(讀寫都優化)的是業務性數據庫,后一種是分析性數據庫,即數據倉庫。
最后總結一下:
數據庫 比較流行的有:MySQL, Oracle, SqlServer等
數據倉庫 比較流行的有:AWS Redshift, Greenplum, Hive等
這樣把數據從業務性的數據庫中提取、加工、導入分析性的數據庫就是傳統的 ETL 工作。現在也有一些新的方法,這展開說又是另一件事情了。
評論
查看更多