數據庫是最常聽到的名詞之一了,但是當提到數據倉庫的時候,就會疑問,數據倉庫是數據庫嗎? 如果不是,數據倉庫是什麼,用來幹什麼的呢? 平時遇到這個問題一般還真是不好簡單明瞭的回答,因爲也的確不是一兩句話說的清的。那麼數據倉庫到底是什麼呢,跟數據庫有什麼區別呢?
數據倉庫是面向主題的 集成的 相對穩定的 反映歷史變化的數據集合,目的在於支持決策
面向主題
面向主題跟面向應用相對應。面向應用是指實現某種功能,數據集合也是其單一功能的數據集。而面向主題是指爲了實現某個主題而產生的一個或多個的面向應用的數據集合的整合。
舉個例子,支付是一個面向應用的主體,而交易是一個面向主題的主體。因爲交易是從下單,到支付等的一系列的過程的串聯,支付只是其中的一環。
集成
數據倉庫的一個重要的功能是把不同的數據源的數據彙總到一起。
集成是指把不同類型的數據源的數據進行整合,按照統一的形式進行集成。比如性別在一個數據源用男/女 另一個用1/2,那麼在數據倉庫中我們需要對其進行統一。
相對穩定
數據一般有一定的生命週期,歷史的數據一般不會再改變,我們可以採用增量的策略進行數據的傳輸和計算。比如看訂單的支付成功的相關信息,那麼一旦訂單支付成功之後,這個訂單的支付成功相關的信息就不會在變更,所以此類的數據可以按天增量計算。
反映歷史變化
由於在數據倉庫中可以存儲歷史的信息,那麼就可以根據這些歷史信息進行數據的分析來反映歷史的變化。而操作型數據庫一般只會某些時間段的數據。
從數據倉庫的概念中也可以看出來數據倉庫做的事情確實跟數據庫不一樣。歸納起來如下
數據粒度不同。數據庫存儲的是操作型數據,是細節性的數據,事當前的數據,反應的是最後修改的結果。數據倉庫是分析型的集成或者彙總的數據,面向主題,並且保存數據的所有歷史狀態。
數據生命週期不同。數據庫存的數據的生命週期比較短,不會保存很久的數據。數據倉庫則需要歷史數據來反映趨勢的變化和數據分析。
建模方法不同。數據庫採用範式建模,不能有冗餘。數據倉庫的建模方法有DW範式建模(跟數據庫的範式建模也不同)和DM維度建模等,可以存在冗餘。
時間敏感度不同。數據庫的數據要求及時性非常高。數據倉庫可以容忍數據的一定的延遲。
目標不同。數據庫主要面向業務處理的,而數據倉庫則面向分析用戶。
網上引用比較多的對比表格