日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

维度建模的三种模式

發布時間:2024/1/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 维度建模的三种模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.星型模式

星型模式是維度模型中最簡單的形式,也是數據倉庫以及數據集市開發中使用最廣泛的形式。

? ? ? ?星型模式由事實表和維度表組成,一個星型模式中可以有一個或多個事實表,每個事實表引用任意數量的維度表

? ? ? ?星型模式的物理模型像一顆星星的形狀,中心是一個事實表, 圍繞在事實表周圍的維度表表示星星的放射狀分支,這就是星型模式這個名字的由來。

? ? ? ?星型模式將業務流程分為事實和維度。事實包含業務的度量,是定量的數據,如銷售價格、銷售數量、距離、速度、重量等是事實。維度是對事實數據屬性的描述,如日期、產品、客戶、地理位置等是維度。一個含有很多維度表的星型模式有時被稱為蜈蚣模式,顯然這個名字也是因其形狀而得來的。蜈蚣模式的維度往往只有很少的幾個屬性,這樣可以簡化對維度表的維護,但查詢數據時會有更多的表連接,嚴重時會使模型難于使用,因此在設計中應該盡量避免蜈蚣模式。

2.雪花模式

雪花模式是一種多維模型中表的邏輯布局,其實體關系圖有類似于雪花的形狀,因此得名。

? ? ? 與星型模式相同,雪花模式也是由事實表和維度表所組成。所謂的“雪花化”就是將行星模型中的維度表進行規范化處理。當所有的維度表完成規范化后,就形成了以事實表為中心的雪花型結構,即雪花模式。將維度表進行規范化的具體做法是,把低基數的屬性從維度表中移除并形成單獨的表。基數指的是一個字段中不同值的個數,如主鍵列具有唯一值, 所以有最高的基數,而像性別這樣的列基數就很低。

? ? ? 在雪花模式中,一個維度被規范化成多個關聯的表,而在星型模式中,每個維度由一個單一的維度表所表示。一個規范化的維度對應一組具有層次關系的維度表,而事實表作為雪花模式里的字表,存在具有層次關系的多個父表。

3.星座模式

? ? ? ?數據倉庫由多個主題構成,包含多個事實表,而維表是公共的,可以共享,這種模式可以看做星型模式的匯集,因而稱作星系模式或者事實星座模式。

???????4.模型的選擇

在數據倉庫建模時,會涉及到模式的選擇,我們要根據不同模式的特點選擇適合具體業務的模式:

冗余:雪花模型符合業務邏輯設計,采用 3NF 設計,有效降低數據冗余;星型模型的維度表設計不符合 3NF(如果是雪花模型改造成了星型模型,那么肯定不符合 3NF,因為一定發生了表的整合,即降維,一定有傳遞依賴,但是,并不是所有的星型模型都不符合

3NF,很多星型模型的表是符合 3NF 的),反規范化,維度表之間不會直接相關,犧牲部分存儲空間。(雪花模型的維度之間是有關聯的)

性能:雪花模型由于存在維度間的關聯,采用 3NF 降低冗余,通常在使用過程中,需要連接更多的維度表,導致性能偏低;星型模型反三范式,采用降維的操作將維度整合,以存儲空間為代價有效降低維度表連接數,性能較雪花模型高。( 星型表的數據冗余大,是用存儲空間換取效率 )( BI 的一些工具對于星型模型的支持更規范化 )

ETL:雪花模型符合業務 ER 模型設計原則,在 ETL 過程中相對簡單,但是由于附屬模型的限制,ETL 任務并行化較低(由于雪花模型中有很多的維度依賴,在 ETL 的時候, 需要在保持 3NF 的前提下對數據進行清洗,即對數據一致性/規范化的處理,例如數據來自于多個業務系統,各個系統對于用戶的定義不一致,此時要對每個業務定義的用戶數據進行規范化處理,在 3NF 的限制下必然會降低并行度);星型模型在設計維度表時反范式設計,所以在 ETL 過程中整合業務數據到維度表有一定難度,但由于避免附屬維度,可并行化處理(不用關注太多的關聯關系,避免了維度表之間的關聯關系,并行度較高,注意,一般場景下星型模型的并行化程度更高,并不是所有場景)。

Hive 的分析通過 MapReduce 實現,每多一個 Join 就會多出一個 MapReduce 過程,對于雪花模型,由于存在著很多維度表之間的關聯,這就會導致一次分析對應多個 MapReduce 任務,而星型模型由于不存在維度表的關聯,因此一個 MapReduce 就可以實現分析任務。

MapReduce 本身是一個支持高吞吐量的任務,它的每個任務都要申請資源、分配容器、節點通信等待,需要 YARN 的調度,由于相互關聯的維度表本身會很小,join 操作用時很少,

YARN 調度的時長可能都大于實際運算的時長,因此我們要盡可能減少任務個數,對于 Hive 來說就是盡可能減少不必要的表的關聯。還有一點,雪花模型中拆分出的維度表,每個表對應至少一個文件,這就涉及到 I/O 方面的性能損耗。

因此,我們要采用適當的數據冗余,避免不必要的表之間的關聯

在實際項目中,不會刻意地去考慮雪花模型,而是刻意地去考慮星型模型,特別是大數據領域的建模,傾斜于使用數據冗余來提高查詢效率,傾向于星型模型;雪花模型只會應用在一些我們要求模型的靈活性,要求保證模型本身穩定性的場景下,但是雪花模型并不是首選

?

?

總結

以上是生活随笔為你收集整理的维度建模的三种模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。