為什么dw使用星型模型,為什么使用關系型數據庫?
?
對于第一個問題,我同意
偉平的說法。其實就是實現了維度結構
,星型模式是一種比3NF更加形式化的模式,其目的正是為了支撐OLAP的要求,是一種支撐分析應用的模式。特別是針對ROLAP,如果不建立星型模式(或者雪花模式),想建立olap元數據是非常困難的,因為某個維度需要跟物理維表關聯起來,維中的級別、屬性、鉆取體系都要與表中字段對應起來。同樣,度量也需要和事實表中某個字段對應。在星型模式中,這種對應關系是匹配的,所以很方便地描述它們。然而如果是基于3NF去映射一個維度結構,當然可以,只是需要額外的工作,因為3NF和OLAP模型是不匹配的。
?
可以先將這部分工作分成兩部分,一是數據模型,二是OLAP應用。如果數據模型用3NF,那么OLAP建模的事情多放在OLAP服務器中進行。而如果使用星型模式,OLAP建模其實部分工作移到了數據建模這邊。
?
這樣理解,其實采用星型模式是為了讓架構和過程更加規范。當然,代價是數據的冗余。
?
對于第二個問題,為什么使用關系型數據庫。如果不采用RDB,還會有哪些選擇呢?多維數據庫、面向對象數據庫、xml數據庫?顯然,后者都是一些不成熟的技術,不似RDB,其關系理論已經存在三十年矣。
?
多維數據庫主要面向分析應用,對于存儲海量數據當然有其缺陷。更加不用提沒有一個標準的接口。至少微軟提出的MDX還并沒有形成一種訪問標準,而在數據存儲理論上,各個廠商有各自的一套。而面向對象數據庫,雖然也是也是發展多年,但其主要應用還是偏向于一般系統的設計、開發效率,也不擅長數據存儲。雖然有一些規范、理論,但大多還沒有形成比較權威的形式化理論,還是處于感性階段。
?
像sybase的IQ數據庫,這玩意兒到底是個什么類型的數據庫,我也不是非常確定,但顯然他并沒有顛覆關系數據,同樣有表、字段的概念,只是他顛覆了原來按行存儲數據的技術,改用按列存儲數據。最后還是同樣用SQL來訪問數據,所以姑且還是認為他是關系數據庫吧。
?
如此,似乎只有選擇關系數據庫來存放海量數據,當然可以附加地采用多維數據來存放用于分析目的的數據。未來會不會還是如此,說不一定,但至少在三五年內,還不不會有什么新的變化。
凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
、轉載請注明來處和原文作者。非常感謝。