2011-05-15 62 views
0

我開始學習SQL Server分析服務,我正在通過training book以及Developer Training Kit的方式工作。在這兩種情況下,我都發現OLAP數據庫(最好是星型模式)中使用的表的數量大大減少了生產OLTP數據庫的建議。操作數據庫模式到數據集市模式,表減少?

從培訓工具包:

我們按照數據維方法,以建築師的數據集市架構。從操作數據庫中的大約200個表中,數據集市模式包含大約10個維度表和2個事實表。

據我所知,操作數據庫通常(有點)規範化,數據集市模式嚴重非規範化。我也相信非規格化數據通常涉及添加更多表,而不是更少。

我看不出如何從200個表格轉到12個表格,除非您只需要報告一部分數據。如果只需要報告一部分數據,爲什麼不能在操作數據庫中使用適當的表(除非通過使用非規格化的星型模式可以顯着提高性能)?

+0

「除非有使用去歸一化星型模式進行顯著的性能提升」 - 是的,有。 – 2011-05-15 03:41:52

回答

5

非規範化與正常化數據庫完全相反。在標準化的數據庫中,所有東西都分成不同的表,以支持對數據的併發寫入。這也會產生一次產生任何給定數據子集的副作用(在理想的第三範式數據結構中)。歸一化的缺點是讀取花費更多的時間,因爲數據是分散的,我們需要連接表來重新理解它(聯接是非常昂貴的操作)。

當我們非規範化時,我們從多個表中獲取數據並將它們合併到一個表中。所以現在我們在這些表格中重複數據。重複的數據非常有用,因爲我們無需再加入任何其他表來加入。寫入數據存儲通常是一個壞主意,因爲這意味着大量寫入來更改表中的所有數據,而在規範化數據庫中只需要一個。

OLTP代表Online Transactional Processing,注意Transactional這個詞。事務是寫入操作,OLTP模型針對此進行了優化。 OLAP代表在線分析處理,分析是含有大量讀取的關鍵字。

從OLTP到OLAP進程中從200個表到12個表將令人驚訝地將OLTP數據庫中的幾乎所有數據加上更多。 OLTP無法記錄所有隨時間的變化,但OLAP專注於此,因此您可以獲取所有歷史數據以及當前數據。

星型模式可能是OLAP數據存儲最常用的,雪花模式也很常見。您應該瞭解兩者以及如何正確使用它們。這只是你的武器庫中的另一個偉大的工具。

來自IBM的這兩本書將更全面地回答您的問題,它們是免費的pdf。

http://www.redbooks.ibm.com/abstracts/sg247138.html
http://www.redbooks.ibm.com/abstracts/sg242238.html