閱讀744 返回首頁    go 技術社區[雲棲]


MaxCompute大數據實踐,電商數據倉庫選擇雪花還是星型模型?

作者:王永偉

  當屬性層次被實例化為一係列維度,而不是單一的維度時,此模式被稱為雪花模式。大多數聯機事務處理係統(OLTP)的底層數據結構在設計時采用此種規範化技術,通過規範化處理將重複屬性移至其自身所屬的表中,刪除冗餘數據。

  此種方法用在OLTP係統中可以有效避免數據冗餘導致的不一致性。比如在OLTP係統中,存在商品表和類目表,且商品表中冗餘有類目表的屬性字段,假設對某類目進行更新,則必須更新商品表和類目表,且由於商品和類目是一對多的關係,商品表可能每次需要更新幾十萬甚至上百萬條記錄,這是不合理的。而對於聯機分析處理係統(OLAP),數據是穩定的,不存在OLTP係統中存在的問題。

  對於淘係商品維度,如果采用雪花模式進行規範化處理,將表現為如下形式:

dim_1_4

  將維度的屬性層次合並到單個維度中的操作稱為反規範化。分析係統的主要目的是用於數據分析和統計,如何更方便用戶進行統計分析決定了分析係統的優劣。采用雪花模式,用戶在統計分析的過程中需要大量的關聯操作,使用複雜度高,同時查詢性能很差;采用反規範化處理,方便易用且性能好。

  對於淘寶商品維度,如果采用反規範化處理,將表現為如下形式:

dim_1_4-2

  如上所述,從用戶的角度來看這簡化了模型,並且使數據庫查詢優化器的連接路徑比完全規範化的模型簡化許多。反規範化的維度仍包含與規範化模型同樣的信息和關係,從分析角度來看,沒有丟失任何信息,但複雜性降低了。

  采用雪花模式,除了可以節約一部分存儲,對於OLAP係統來說沒有其它效用。而現階段存儲的成本非常低。基於易用性和性能考慮,維度表一般是很不規範化的。實際應用中,幾乎總是使用維度表的空間來換取簡明性和查詢性能。


  更多數倉理論請關注:《:阿裏巴巴實踐 



最後更新:2017-06-26 17:33:09

  上一篇:go  《數據結構與抽象:Java語言描述(原書第4版)》一2.2.2 包的新實現
  下一篇:go  免費商城網站模板與付費商城網站模板的區別?