柚子快報邀請碼778899分享:數(shù)據(jù)倉庫--關(guān)系建模和維度建模
數(shù)據(jù)倉庫基礎(chǔ)筆記思維導(dǎo)圖已經(jīng)整理完畢,完整連接為: 數(shù)據(jù)倉庫基礎(chǔ)知識筆記思維導(dǎo)圖
關(guān)系模型和多維模型
專業(yè)數(shù)據(jù)倉庫面臨的問題是數(shù)據(jù)倉庫中數(shù)據(jù)庫設(shè)計的基本模型選取問題,廣泛采用的數(shù)據(jù)庫設(shè)計模型有兩種,關(guān)系型和多維型。
區(qū)別
關(guān)系模型維度模型設(shè)計純數(shù)據(jù)模型和其他模型設(shè)計最終用戶的處理請求塑造適用性抽象數(shù)據(jù)形成,非常靈活,但是數(shù)據(jù)訪問的執(zhí)行不是最優(yōu)化的,適合間接訪問直接訪問數(shù)據(jù)方面是快速而高效,支持直接存取抽象級別具有非常高的抽象級別,可以滿足多種需求只能支持特定需求
關(guān)系模型
關(guān)系型數(shù)據(jù)庫設(shè)計首先要創(chuàng)建一張數(shù)據(jù)表,表中每一行包含不同的列。關(guān)系表可以包含不同的屬性,每一列表示不同的物理特征,不同的列可以索引并作為標(biāo)識符,所有的列都是根據(jù)數(shù)據(jù)定義語言(DDL)標(biāo)準(zhǔn)定義的。 關(guān)系模型通過使用關(guān)鍵字和外間在不同行的數(shù)據(jù)間建立關(guān)聯(lián),自帶一種結(jié)構(gòu)化查詢語言(SQL),作為陳旭和數(shù)據(jù)間的接口而得到廣泛應(yīng)用。 關(guān)系型數(shù)據(jù)以一種稱為標(biāo)準(zhǔn)化的形式存在。數(shù)據(jù)標(biāo)準(zhǔn)化是指數(shù)據(jù)庫設(shè)計會使數(shù)據(jù)分解稱為非常低的粒度級,當(dāng)進(jìn)行標(biāo)準(zhǔn)化時候,表中數(shù)據(jù)只能與這張表中的其他數(shù)據(jù)關(guān)聯(lián),標(biāo)準(zhǔn)化基本分為三級:第一級標(biāo)準(zhǔn)形式,第二級標(biāo)準(zhǔn)形式和第三級標(biāo)準(zhǔn)形式。
關(guān)系模型適用OLTP的原因
OLTP系統(tǒng)捕捉事件或交易的詳細(xì)信息OLTP系統(tǒng)關(guān)注獨立的事件一個OLTP系統(tǒng)是通向微觀交易的窗口反映運行業(yè)務(wù)所需要的細(xì)節(jié)信息僅僅適用于回答交易級別的問題數(shù)據(jù)一致性,非冗余性及高效的數(shù)據(jù)存儲是最重要的
多維模型
維度模型的組成部分是從需求定義的信息包中演化而來的。維度提供了環(huán)境信息,如果沒有環(huán)境信息,報表將顯得毫無意義。成功的維度設(shè)計要點在于適當(dāng)?shù)厥褂面I,維度列集合包含豐富的細(xì)節(jié)信息,擯棄節(jié)省存儲空間的主張。
多維模型適合數(shù)據(jù)集市
捕捉關(guān)聯(lián)指標(biāo)通過維度顯示面向商業(yè)用戶
設(shè)計多維模型前的設(shè)計決策
選擇處理過程,為設(shè)計的第一組邏輯結(jié)構(gòu)從信息包里選擇主題。選擇粒度,決定數(shù)據(jù)的詳細(xì)程度。識別維度,并統(tǒng)一緯度。選擇事實。選擇數(shù)據(jù)庫的持久度。
維度建模基礎(chǔ)
需要將商業(yè)維度合并到邏輯數(shù)據(jù)模型去,維度模型由表示商業(yè)維度需要的各種具體數(shù)據(jù)構(gòu)成。這些數(shù)據(jù)結(jié)構(gòu)也包含了指標(biāo)和事實。 維度建模的數(shù)據(jù)實體:
指標(biāo)或度量單位商業(yè)維度每一個商業(yè)維度的屬性
維度建模需要達(dá)到的目標(biāo)
模型應(yīng)該為數(shù)據(jù)訪問提供最好的方式。整個模型必須以查詢?yōu)橹行?。必須為查詢和分析而接受?yōu)化。模型必須顯示出事實表與維度表之間的相互作用整個結(jié)構(gòu)必須每個維度能夠有相等的機(jī)會與事實表交互。模型應(yīng)該允許沿著維度層次結(jié)構(gòu)下鉆與上鉆。
星型模型
多維模型方法也叫做星型連接,數(shù)據(jù)庫設(shè)計多維模型方法的中心是星型連接。
星型模型的成員
事實表:處于星型連接的中心。事實表是包含大量數(shù)據(jù)值的一種結(jié)構(gòu)。事實表名稱來自于需要分析的主題。維表:處于事實表的周圍,用來描述事實表的某個重要方面,維表里的數(shù)據(jù)量要比事實表里的少。 維度表屬性由商業(yè)維度表示。
數(shù)據(jù)集市的查詢結(jié)果
在數(shù)據(jù)集市運行查詢時,查詢結(jié)果是通過將一個或多個維度表與事實表結(jié)合之后產(chǎn)生的。事實表中的某一行與每個維度表的多行建立關(guān)系??梢郧逦硎拘切湍P椭械募夥宀糠帧?/p>
事實表的內(nèi)容
事實表是我們存儲指標(biāo)的地方,保存級別盡可能低的細(xì)節(jié)。
連接事實表的主鍵,事實表中的一行記錄與所有維度表中的相應(yīng)記錄相關(guān)數(shù)據(jù)顆粒完全加和指標(biāo),某些屬性的數(shù)值可以通過簡單的相加以匯總。半加和指標(biāo),完全加和指標(biāo)的衍生指標(biāo)。表很長但不一定寬,通常事實表包含的屬性要比維度表少稀疏的數(shù)據(jù)退化的維度,某些數(shù)據(jù)元素不是事實也不是嚴(yán)格的維度屬性,因為業(yè)務(wù)參考原因保留在事實表中
事實表與過程
事實表是度量業(yè)務(wù)過程的引擎。事實表存儲用來描述過程的詳細(xì)度量。事實采用外鍵為每個度量提供維度環(huán)境。單一的事實表很難描述某個主題區(qū)域,在維度設(shè)計時,為每個待處理的過程構(gòu)建單個事實表,這種策略可以對每個過程單獨開展分析工作,并且可以消除采用單個事實表涵蓋多個過程帶來的諸多復(fù)雜性的問題。同時一些強(qiáng)大的分析方法甚至可以跨越多個過程,在維度設(shè)計時,實現(xiàn)多過程分析需要從多個事實表中集成信息。 為方便于獨立地分析研究,應(yīng)為每個過程建立一個事實表
為每個過程構(gòu)建自身的事實表來進(jìn)行建模,是事實表構(gòu)建的唯一真理
過程模型用于描述業(yè)務(wù)活動,關(guān)鍵在于過程建模設(shè)計功能分解,也就是說一個過程可以被分解成多個子過程。對于給定的兩個事實,需要考慮這些事實同時發(fā)生與否,這些事實可用于同一個粒度與否。當(dāng)連個事實對事件描述不再同一個時間點上,他們描述的就是不同的過程。 為將要獨立研究的每個過程都構(gòu)建一個事實表,但并不是每個事實表都對應(yīng)一個過程。這類事實表通過獲取多個事實表的數(shù)據(jù)形成,也會包含聚集數(shù)據(jù)。 當(dāng)來個或更多的事實發(fā)生于不同的時間時,他們表示的是不同的過程,將他們呢放入同一事實表中將妨礙對單個過程的分析。 當(dāng)描述事件的兩個或者多個事實具有相同粒度時,他們描述的是不同的過程。維度可選關(guān)系,是否是不同的過程,主要看維度表是否可以影響事實表粒度改變。
從多個事實表中分析事實
對不同單一過程事實表進(jìn)行比較也同樣重要,一些強(qiáng)大的分析跨越了過程的邊界。
在比較不同的事實表時,注意不要采用相同的SQL SELECT語句獲取相關(guān)的事實,應(yīng)該采用稱為橫向鉆取包含兩個步驟的過程來獲得。不要試圖對事實表進(jìn)行連接操作,無論操作時直接操作,還時通過維度表操作,對事實表的連接操作將會產(chǎn)生不正確的結(jié)果。
橫向鉆取
按照相同的細(xì)節(jié)層次從每個星型模式中匯總事實合并匯總事實 無論是從結(jié)構(gòu)還是從內(nèi)容上考慮,在每個數(shù)據(jù)庫中存在相同的公共維度非常關(guān)鍵。從結(jié)構(gòu)上,在每個星型模式中需要有在第一階段所需要的公共維度,從內(nèi)容上,維度值需要有相同的表示方式以確保第二階段對中間結(jié)果的合并操作。 很想鉆取也可以應(yīng)用到單一星型模式中,產(chǎn)生有用的比較結(jié)果。 實現(xiàn)橫向鉆取的四種方式
過程劃分,針對每個星型模型執(zhí)行一個查詢,檢索同樣的維度,分別區(qū)級那一層上的事實,第二階段在報表環(huán)境中完成,在此環(huán)境中合并結(jié)果集,產(chǎn)生最終的報表。使用臨時表,針對每個星型模型執(zhí)行一個查詢,存儲于RDBMS臨時表中,第二個階段,附加的查詢將存儲的兩個臨時表通過RDBMS實現(xiàn)連接操作。使用SQL相對較新的擴(kuò)展功能實現(xiàn)采用的工具不能執(zhí)行橫向鉆取,可以設(shè)計并建立按照共同的細(xì)節(jié)層次匯總過程的合并事實表,采用合并事實表的方式執(zhí)行鉆取操作,應(yīng)該數(shù)據(jù)倉庫表被夾在期間執(zhí)行,而不是在查詢期間執(zhí)行。
獲取事實
獲取所有的度量,事實表應(yīng)該提供一個相關(guān)度量的完整集合,即使這樣做會存在冗余,無論采用何種工具開發(fā)和查詢報表,明確地存儲每一個事實可以確保度量的一致性。注意:
不要在查詢時計算總額這種類型值,在查詢時開展計算工作會用到視圖,這會妨礙對數(shù)據(jù)庫管理系統(tǒng)查詢執(zhí)行的優(yōu)化調(diào)整工作。在事實表中存儲延伸量,而最好不要存儲數(shù)量單位。數(shù)量單位是對開展分析工作有兼職的維度,如果沒有合適的維度表用于存儲數(shù)量單位,可以將它們放置于退化維中。 非可加事實,并不是所有的度量都具有可加性,例如比率或者百分比。解決方案為將比率分解為可加的組件,將它們存儲在事實表中,以便在查詢或者報表中以需要的級別安全地聚集。由于非可加事實并為存儲在事實表中,需要注意不要丟失這些事實。
不含事實的事實表
事實表能表示指標(biāo)或者事實,然而即使事實表沒有任何指標(biāo),一些商業(yè)事件也可以被事實表所表示。
稀疏性
記錄在事實表中的行表達(dá)了業(yè)務(wù)活動的發(fā)生情況,這意味著,事實表中的行沒有包含所有可能的維度值組合,出現(xiàn)在事實表中的組合數(shù)量遠(yuǎn)小于可能存在的組合數(shù)量,事實表的這項特性被稱為稀疏性。
退化維
有時,不可能將所有與業(yè)務(wù)相關(guān)的維度分類到一個緊湊的表集合中。類似這樣的情況,將一個或多個維度存儲到事實表中是合適的選擇。若采用這種方法,存儲到事實表中的維度列被稱為退化維度。但是需要避免過度使用退化維,如果一個屬性不是事務(wù)標(biāo)識,應(yīng)考慮將其放置到雜項維度。雖然事務(wù)標(biāo)識通常作為退化維度,但并不是必須遵循的規(guī)則。在一些情況中,事實表中事務(wù)標(biāo)識的存儲可能會給商業(yè)只能工具帶來問題。
數(shù)據(jù)粒度
如果將事實表的數(shù)據(jù)保持在最低粒度,用戶通過數(shù)據(jù)倉庫可以下鉆到最低次的細(xì)節(jié)數(shù)據(jù),而且不需要訪問操作型系統(tǒng),事實表的基本層次必須是所有相應(yīng)維度自然的最低層次,這樣上鉆與下鉆的查詢就可以高效執(zhí)行。但是為了保持事實表有最低層次的數(shù)據(jù)顆粒,必須付出存儲和維護(hù)方面的代價。
星型模型的鍵
主鍵
維度表每行都可以由維度表中的主鍵進(jìn)行唯一的識別。 事實表:復(fù)合的主鍵,每一個部分對應(yīng)一個維度 維度表:生成的主鍵 如果數(shù)據(jù)倉庫包含了歷史數(shù)據(jù),假設(shè)由于產(chǎn)品存放到另外一個倉庫,產(chǎn)品代碼在某一年發(fā)生改變,我們就不得不改變數(shù)據(jù)倉庫中產(chǎn)品代碼。
替代鍵
維度表主鍵的選擇原則:
避免維度表中主鍵有內(nèi)在的含義不要用生產(chǎn)系統(tǒng)中的鍵作為維度表的主鍵 替代鍵是系統(tǒng)生成的簡單序列號碼,沒有任何含義。將生產(chǎn)系統(tǒng)的鍵作為維度表的附加屬性。
外鍵
每個維度表都與中央的事實表有一對多的關(guān)系,所以,每個維度表中的主鍵必須是事實表中的外鍵。 事實表外鍵的選擇:
一個單獨的復(fù)合主鍵連接的主鍵,由所有維度表的主鍵連接而成一個生成的主鍵,所有外鍵都必須作為附加屬性
星型模型的優(yōu)勢
嚴(yán)格的堅持這種模式并不是最好的選擇,如果有多個最終用戶的話。
用戶容易理解,星型模型準(zhǔn)確的反映了用戶如何想的,他們在查詢和分析時需要什么數(shù)據(jù)優(yōu)化瀏覽,即使尋找的查詢結(jié)果看上去復(fù)雜,但是查詢過程簡單而直接。最適合查詢處理,如果不考慮查詢中涉及的維的數(shù)量,也不考慮查詢的復(fù)雜程度,實際上每一個查詢都是簡單的使用一些參數(shù)過濾維度表,然后從事實表中得到相應(yīng)的結(jié)果集
星型連接和星型索引
星型連接是一種高速的,并行的,單獨操作的多表連接,它可以通過一個單獨的操作連接多個表,顯著地提高查詢性能。 星型索引是一種專門的索引,可以提高連接的性能,這些索引建立在事實表的一個或多個外鍵上,提高了維表與事實表的連接速度
聚集事實表
聚集是從低粒度的事實表衍生出來預(yù)先計算匯總的數(shù)據(jù),這些匯總的數(shù)據(jù)形成了一組獨立的聚集事實表。 可以將一個跨越任何維度數(shù)的特定的匯總構(gòu)建為一個聚集事實表。 在一些典型情況下,最低粒度的事實表相當(dāng)大 如果你不按產(chǎn)品保存細(xì)節(jié)信息,你就不會得到按照產(chǎn)品分類的結(jié)果集。 如果可以預(yù)先計算匯總數(shù)據(jù),那么查詢將運行的更快,如果有合適的聚集匯總數(shù)據(jù),那么每一個查詢的性能將大大提高。 聚集事實表將最低粒度的數(shù)據(jù)按照維度多層結(jié)構(gòu)進(jìn)行匯總,形成高層次數(shù)據(jù)。 多維數(shù)據(jù)庫主要優(yōu)勢在于速度,并且不會受到SQL的限制,但是隨著維度數(shù)量以及相應(yīng)值的增加,需要預(yù)先計算的、可能產(chǎn)生的組合數(shù)量會爆炸性增長,這一情況限制了多維數(shù)據(jù)集對海量數(shù)據(jù)的處理能力,這一限制不可避免地見底了多維數(shù)據(jù)集的優(yōu)勢。星型模式和多維數(shù)據(jù)集可以共同使用,這樣就可以利用關(guān)系數(shù)據(jù)庫的可擴(kuò)展能力來存儲各種不同粒度的細(xì)節(jié)數(shù)據(jù),利用這些細(xì)節(jié)數(shù)據(jù),可以構(gòu)建多維數(shù)據(jù)集來支持交互式查詢體驗。
星型模式與多維數(shù)據(jù)集共存的方式
星型模式作為原子數(shù)據(jù)的繼承倉庫,而多維數(shù)據(jù)集作為數(shù)據(jù)集市。星型模式作為數(shù)據(jù)倉庫或者數(shù)據(jù)集市,多維數(shù)據(jù)集作為高性能報表的輔助部分。 多路聚集事實表單路聚集,如果從一個維度層次結(jié)構(gòu)中的一個層次升到了更高的層次,而其他的維度保持在最低粒度。二路聚集,如果從二個維度層次結(jié)構(gòu)中的一個層次升到了更高的層次,而其他的維度保持在最低粒度。三路聚集,如果從三個維度層次結(jié)構(gòu)中的一個層次升到了更高的層次,而其他的維度保持在最低粒度。多路聚集,如果從多個維度層次結(jié)構(gòu)中的一個層次升到了更高的層次,而其他的維度保持在最低粒度。 聚集受稀疏性的影響 聚集的選項 在實例的情況中,維度表的數(shù)目不會有三個,而是多的多,甚至聚集表的數(shù)目會擴(kuò)展到幾百個。 聚集策略的目標(biāo):不要陷在過多的聚集之中,要支持聚集,需要額外的衍生維度表。盡量滿足大量用戶的需求,在任何情況下,都要為高級用戶做好準(zhǔn)備。建立那些不會過分增加存儲容量的聚集。對具有較低稀疏比例的大型聚集要注意。對最終用戶保持聚集的不可見性盡量減少對數(shù)據(jù)準(zhǔn)備過程的影響聚集是一種調(diào)整性能的機(jī)制,要提高性能就要進(jìn)行匯總。做好準(zhǔn)備工作,開始時候構(gòu)建一些合理的聚集表,并在需要時做一些調(diào)整
星型模式族
一組相關(guān)的星型模式稱為星型模式族星型模式中的事實表共享維度表多個星型模式中的維度表也可能共享一個星型模式中的事實表。
一組星型模式族中的表的分類
快照表與事務(wù)表,數(shù)據(jù)倉庫中,有一類問題與單獨事務(wù)在一段特定的時期中如何影響特定的賬戶有關(guān),另一類問題則關(guān)注特定賬戶的余額或者某段時間時期結(jié)束時賬戶的總共余額,事務(wù)表回答第一類問題,快照表回答第二類問題核心表與定制表,所有產(chǎn)品和服務(wù)與一個核心事實表相連,而每一個產(chǎn)品或服務(wù)與單獨一個定制表相連。支持企業(yè)價值鏈或者價值環(huán),為價值鏈中每一個步驟構(gòu)造一個事實表表及相應(yīng)的一系列維度表。使維度一致,一致的維度是從源系統(tǒng)中抽取的,解決了相互沖突的問題,完整的屬性整合,使維度一致是數(shù)據(jù)倉庫的一項基本需求。
事實表標(biāo)準(zhǔn)化
事實表標(biāo)準(zhǔn)化也是一項基本需求。
保證在各個數(shù)據(jù)集市中的定語與術(shù)語是相同的解決同名問題需要標(biāo)準(zhǔn)化的事實表類型包括利潤,價格,成本,利潤率等。保證每個事實表中所有的衍生單元使用相同的算法保證每個事實表都是用正確的指標(biāo)單位。
多維模型設(shè)計的最大優(yōu)點在于訪問的高效性,當(dāng)設(shè)計適當(dāng)時,通過星型連接將數(shù)據(jù)傳遞給最終用戶是非常高效的,為了提高信息傳遞效率,必須收集并吸收最終用戶的請求。
柚子快報邀請碼778899分享:數(shù)據(jù)倉庫--關(guān)系建模和維度建模
推薦閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。