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