適合!
在數據倉庫建模領域中,有兩大主流建模思想,ER建模和維度建模(當然還有datavault、anchor等等)。
ER建模的核心思想是從全企業的高度去設計三范式模型,用實體關系模型描述企業業務。出發點是整合各系統數據,為數據分析決策服務,但不直接用于分析決策。
維度建模是從分析決策的需求出發構建模型,重點關注如何快速完成需求分析。典型代表是星形模型,以及一些特殊場景下使用雪花模型。
光從三范式模型和星形模型的區別其實就可以看出,更適合hive的就是星形模型。
hive一般使用的引擎就是mapreduce,mapreduce的設計初衷是海里數據的批量處理,在復雜的聯表查詢方面,反而可能比不上傳統數據庫,尤其是mpp架構的傳統數據庫。三范式模型勢必會存在很多分散的表,在做數據分析或者報表加工的時候就必須要多表連接,大大降低了使用效率。
當然使用hive做為數據倉庫時,也不能完全遵從維度建模的思想。我們得在維度建模思想上適當做一些改進。
比如我們可以使用星形模型完全替代雪花模型,雪花模型除了節約一部分存儲外,在hive中沒有其他優勢。
同時我們在星形模型的事實表中可以冗余更多常用的維度信息,摒棄代理鍵使用快照方式處理緩慢變化維等。
因為目前階段,hdfs的存儲成本是明顯低于計算資源成本,我們可以采取用空間換時間的策略,從而提升下游使用的易用性和使用性能的提升。
所以說,維度建模是適合hive的。