99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀對數(shù)據(jù)倉庫進(jìn)行數(shù)據(jù)建模
對數(shù)據(jù)倉庫進(jìn)行數(shù)據(jù)建模
2016-08-22
收藏

數(shù)據(jù)倉庫進(jìn)行數(shù)據(jù)建模

在日常生活中,我們要使用大量的應(yīng)用程序來生成新的數(shù)據(jù)、變更數(shù)據(jù)、刪除數(shù)據(jù),當(dāng)然在大多數(shù)的情況下我們還要查閱和分析數(shù)據(jù)。就來想象一個(gè)收發(fā) email 的簡單應(yīng)用程序吧。我們已經(jīng)存儲了地址信息,可能還存儲了一些文檔。我們可以決定是否存儲已經(jīng)發(fā)送過的郵件,但是也可能隔一段時(shí)間后將其刪除,或者刪除已經(jīng)發(fā)送過的所有郵件。那么我們該如何處理一段時(shí)間以前刪除或者修改過的地址呢?我們再也不會看到它們了。

Email 程序大部分都屬于不是很復(fù)雜的數(shù)據(jù)庫,但是完全可以將其看作一個(gè)在單用戶環(huán)境下的 OLTP(在線事務(wù)處理系統(tǒng))簡單示例。它使用了所有的所謂訪問數(shù)據(jù)的操作 CRUD(創(chuàng)建、讀取、更新、刪除)。當(dāng)數(shù)據(jù)存儲達(dá)到一定量的時(shí)候,規(guī)模就會幾乎保持不變,因?yàn)榭梢詮拇鎯χ袆h除過期數(shù)據(jù)。

數(shù)據(jù)倉庫就完全是一種不同種類的應(yīng)用程序。它并不是用來運(yùn)行當(dāng)前的操作,例如發(fā)送郵件。它是用來分析數(shù)據(jù)并且從現(xiàn)有數(shù)據(jù)中發(fā)現(xiàn)新的價(jià)值,主要是用來預(yù)測未來的情況。數(shù)據(jù)倉庫并不是解決所有問題的通用結(jié)構(gòu)。它必須集中于某一問題領(lǐng)域,例如航空服務(wù)、顧客收益等。

數(shù)據(jù)倉庫也有有趣的一面,那就是數(shù)據(jù)庫本身是穩(wěn)定增長的。數(shù)據(jù)沒有被刪除,也不發(fā)生變更。我們不需要將冗余數(shù)據(jù)置于數(shù)據(jù)庫之外(因?yàn)榧尤雮}庫中的數(shù)據(jù)經(jīng)過了數(shù)據(jù)凈化的過程,該過程檢查了數(shù)據(jù)的正確性)來減少復(fù)雜性同時(shí)增強(qiáng)讀取操作的性能。

為了能夠?qū)?a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉庫中的數(shù)據(jù)進(jìn)行分析,數(shù)據(jù)存儲于一個(gè)多維結(jié)構(gòu)中,叫做星型模式。如果將星型模式擴(kuò)展,就會得到雪花模式。本白皮書將會闡述如何使用IBM Rational Rose進(jìn)行星型模式建模和雪花模式建模。

飛行服務(wù)數(shù)據(jù)集市的例子

為了更好地解釋如何對數(shù)據(jù)倉庫建模,本白皮書將使用一個(gè)簡單數(shù)據(jù)集市的的例子(即一個(gè)數(shù)據(jù)倉庫或者數(shù)據(jù)倉庫的一部分),來分析旅客乘坐航班 Happy Flying and Landing(愉快飛行平安降落)的行為和滿意程度。

我們將存儲乘客信息和每個(gè)航班的的相關(guān)數(shù)據(jù)、選擇的菜單以及乘客對飛行的滿意程度。

回頁首

數(shù)據(jù)倉庫術(shù)語表

數(shù)據(jù)倉庫引入了新的術(shù)語,擴(kuò)展了數(shù)據(jù)建模的術(shù)語表。為使本文的闡述能夠完備,下面我介紹一下最常用的術(shù)語。

數(shù)據(jù)倉庫

數(shù)據(jù)倉庫是一個(gè)支持管理決策的數(shù)據(jù)集合。數(shù)據(jù)是面向主題的、集成的、不易丟失的并且是時(shí)間變量。

數(shù)據(jù)倉庫是所有操作環(huán)境和外部數(shù)據(jù)源的快照集合。它并不需要非常精確,因?yàn)樗仨氃谔囟ǖ臅r(shí)間基礎(chǔ)上從操作環(huán)境中提取出來。

數(shù)據(jù)集市

數(shù)據(jù)倉庫只限于單個(gè)主題的區(qū)域,例如顧客、部門、地點(diǎn)等。數(shù)據(jù)集市在從數(shù)據(jù)倉庫獲取數(shù)據(jù)時(shí)可以依賴于數(shù)據(jù)倉庫,或者當(dāng)它們從操作系統(tǒng)中獲取數(shù)據(jù)時(shí)就不依賴于數(shù)據(jù)倉庫。

事實(shí)

事實(shí)是數(shù)據(jù)倉庫中的信息單元,也是多維空間中的一個(gè)單元,受分析單元的限制。

事實(shí)存儲于一張表中(當(dāng)使用關(guān)系數(shù)據(jù)庫時(shí))或者是多維數(shù)據(jù)庫中的一個(gè)單元。

每個(gè)事實(shí)包括關(guān)于事實(shí)(收入、價(jià)值、滿意記錄等)的基本信息,并且與維度相關(guān)。

在某些情況下,當(dāng)所有的必要信息都存儲于維度中時(shí),單純的事實(shí)出現(xiàn)就是對于數(shù)據(jù)倉庫足夠的信息。我們稍后討論有關(guān)缺無事實(shí)的情況。

維度

維度是綁定由坐標(biāo)系定義的空間的坐標(biāo)系的軸線。數(shù)據(jù)倉庫中的坐標(biāo)系定義了數(shù)據(jù)單元,其中包含事實(shí)。

坐標(biāo)系的一個(gè)例子就是帶有 x 維度和 y 維度的 Cartesian(笛卡爾)坐標(biāo)系。

數(shù)據(jù)倉庫中,時(shí)間總是維度之一。

數(shù)據(jù)挖掘

數(shù)據(jù)倉庫的數(shù)據(jù)中發(fā)現(xiàn)新信息的過程被稱為數(shù)據(jù)挖掘,這些新信息不會從操作系統(tǒng)中獲得。

分析空間

分析空間是數(shù)據(jù)倉庫中一定量的數(shù)據(jù),用于進(jìn)行數(shù)據(jù)挖掘以發(fā)現(xiàn)新信息同時(shí)支持管理決策。

切片

一種用來在數(shù)據(jù)倉庫中將一個(gè)維度中的分析空間限制為數(shù)據(jù)子集的技術(shù)。

切塊

一種用來在數(shù)據(jù)倉庫中將多個(gè)維度中的分析空間限制為數(shù)據(jù)子集的技術(shù)。

星型模式

一種使用關(guān)系數(shù)據(jù)庫實(shí)現(xiàn)多維分析空間的模式,稱為星型模式。

星型模式將在本白皮書中稍后進(jìn)行進(jìn)一步討論。

雪花模式

不管什么原因,當(dāng)星型模式的維度需要進(jìn)行規(guī)范化時(shí),星型模式就演進(jìn)為雪花模式。

回頁首

使用 IBM Rational Rose 進(jìn)行星型模式建模

星型模式的基本形式必須實(shí)現(xiàn)多維空間(常常被稱為方塊),以使用關(guān)系數(shù)據(jù)庫的基本功能。

首先,我們需要理解多維空間。

多維分析空間

幾何學(xué)中的方塊是指一個(gè)三維空間,其中每個(gè)維度的尺寸都相同。想象一個(gè)立方體,每個(gè)維度都有三個(gè)單元,我們即得到相同結(jié)構(gòu)的33=27個(gè)單元。

圖1 一個(gè)具有 x、y、z 維度的方塊

圖1 一個(gè)具有 x、y、z 維度的方塊

多維分析空間(或者數(shù)據(jù)倉庫方塊)與幾何空間中的方塊僅僅存在細(xì)節(jié)上的差異。

維度不僅限于 3 維。不過,處理很多維度的立方體也不是件輕松的事情,這會導(dǎo)致大多數(shù)的實(shí)現(xiàn)被限制于 6 或者 7 維。不要期盼使用圖形可以很好地表示超過 4 的維度--如果您有幸能發(fā)現(xiàn)一種方法,別忘了告訴我一下。

維度并不具有相同的規(guī)模和單元。規(guī)模從幾個(gè)單元到幾百萬個(gè)單元,差別巨大。單元可以是一天、一位顧客、部門等。

單元,相當(dāng)于子方塊(1×1×1等),包含事實(shí)。

圖2 一個(gè)三維數(shù)據(jù)立方體

圖2 一個(gè)三維數(shù)據(jù)立方體

數(shù)據(jù)立方體需要很大的內(nèi)存以存儲所有事實(shí)。無論是否包含事實(shí),都必須要預(yù)留單元。

這就是為什么使用關(guān)系數(shù)據(jù)庫和星型模式的原因。使用它們能夠優(yōu)化存儲并且保持?jǐn)?shù)據(jù)結(jié)構(gòu)的靈活性。

星型模式

星型模式的基本思想就是保持立方體的多維功能,同時(shí)也增加了小規(guī)模數(shù)據(jù)存儲的靈活性。

圖3 一個(gè)星型模式

圖3 一個(gè)星型模式

在圖3中,星型模式使用事實(shí) Flight 表示了一個(gè) 4 維方塊(Passenger、Menu、Flight Schedulet 和 Time)。基本上,事實(shí)必須指定一個(gè)維度,以將其放入立方體的單元中。

我們的例子中的維度是:

Passenger,描述了飛行航程中的每位乘客,由經(jīng)常飛行號(frequent flyer number)指定。不是經(jīng)常乘坐飛機(jī)的乘客不是數(shù)據(jù)倉庫的一部分。

Flight Schedule,是指所有常規(guī)飛行的日程。

Menu,是用于飛行的菜單。只有對菜單進(jìn)行基本的分類才會對數(shù)據(jù)挖掘有重要意義。

Time,是指飛行的時(shí)間。

事實(shí) Flight 描述了乘客在唯一的 Time 的單程飛行上選擇 Menu。

分析空間可以是完整的方塊,或者我們可以根據(jù)維度將分析空間分割成小片。

每個(gè)維度根據(jù)一個(gè)對象進(jìn)行描述,對象可以用類表示,這些類就是有關(guān)業(yè)務(wù)主題的名稱。這一點(diǎn)對于成功建立數(shù)據(jù)倉庫來說是很重要的,因?yàn)閭}庫的用戶(經(jīng)理、分析員、市場)對于信息技術(shù)的術(shù)語并不是很熟悉。

事實(shí)本身就是商業(yè)智能的另一個(gè)對象,仍然通過類進(jìn)行表示。

事實(shí)指每個(gè)維度。事實(shí)與維度的關(guān)聯(lián)常常是一對任意,這也就意味著每個(gè)事實(shí)都與單個(gè)維度的一個(gè)單元準(zhǔn)確對應(yīng),而維度的每個(gè)單元(每個(gè)Passenger、Time等)可以與任意數(shù)量的事實(shí)發(fā)生關(guān)聯(lián)(包括0個(gè)事實(shí))。

使用 Rational Rose 將對象模型轉(zhuǎn)換為數(shù)據(jù)模型即完成了星型模式的實(shí)現(xiàn)。這里我們可以看到轉(zhuǎn)換后的結(jié)果。

圖4 使用Rational Rose實(shí)現(xiàn)星型模式

圖4 使用Rational Rose實(shí)現(xiàn)星型模式

在圖4中,沒有顯示自動創(chuàng)建的主鍵和外鍵約束。

星型模式的維度是獨(dú)立的表。當(dāng)對象模型轉(zhuǎn)換為數(shù)據(jù)模型時(shí),Rational Rose 可以生成維度的主鍵。

事實(shí)表指從維度表中使用鍵遷移的維度,當(dāng)生成數(shù)據(jù)模型時(shí) Rational Rose 可以生成外鍵。

在星型模式中切片和切塊是對維度的限制(選擇)。這是一個(gè)運(yùn)行時(shí)問題,而不是建模問題,但是模型必須分辨其需要。

雪花模式

基本的星型模式并不能滿足數(shù)據(jù)挖掘的所有需要。我們需要更復(fù)雜的維度,例如時(shí)間。分析員希望根據(jù)周、月、季度等識別模式。

維度必須進(jìn)行規(guī)范化。我們不需要冗余的維度表,這只會使數(shù)據(jù)切片變得更加復(fù)雜。這種過程中我們得到的模式被稱為雪花模式。

我們來看一個(gè)簡單的雪花模式例子。我們將時(shí)間維度規(guī)范化為周、月和季度。

圖5 規(guī)范化的 Time 維度

圖5 規(guī)范化的 Time 維度

我們希望能夠使用附加的規(guī)范化維度將立方體切片:周、月和季度。在本例中,我們假定季度是月的平行層次,這也就意味著我們不能將季度假定為若干月的聚合。由于這個(gè)原因,我們將使用一張范化表(是對 OLAP 查詢的一項(xiàng)簡單附加)預(yù)先選擇時(shí)間維度。

最終雪花模式添加了規(guī)范化維度。

圖6 帶有范化維度的 Time 和事實(shí) Flight 的雪花模式

圖6 帶有范化維度的 Time 和事實(shí) Flight 的雪花模式

當(dāng)然,所有的維度都可以像時(shí)間例子那樣進(jìn)行規(guī)范化,這就導(dǎo)致了比較復(fù)雜的數(shù)據(jù)集市模式的出現(xiàn)。

由 Rational Rose 從雪花模式中開發(fā)的實(shí)現(xiàn)模式(數(shù)據(jù)模型)是完善的。

圖7 帶有范化 Time 維度的雪花模式的數(shù)據(jù)模型

創(chuàng)建的約束在圖中也沒有顯示。

雪花模式中可以存在切片,不僅僅在基本的 Time 維度上,也可以在規(guī)范化的 Week、Month 和 Quarter 維度上。

多對多關(guān)系

在一次飛行中,我們不僅僅只吃一頓飯。在長途飛行中可能要多次用餐。在這種情況下,我們認(rèn)為事實(shí) Flight 和 Menu 維度不是一對多的關(guān)聯(lián)。我們必須使用多對多關(guān)聯(lián)。不過,這種關(guān)聯(lián)不可能在星型模式中實(shí)現(xiàn)。

雪花模式的一種特殊形式是使用一種必要的數(shù)據(jù)結(jié)構(gòu)以滿足這項(xiàng)要求。

首先,我們將模型變更為事實(shí)和維度間的多對多關(guān)聯(lián)。使用 Rational Rose,這只是關(guān)聯(lián)基數(shù)的變更。

圖8 Menu 的多對多維度的星型模式

圖8 Menu 的多對多維度的星型模式

我們無法在關(guān)系數(shù)據(jù)庫中實(shí)現(xiàn)多對多關(guān)聯(lián)。實(shí)現(xiàn)多對多關(guān)聯(lián)需要使用另一種雪花模式。

在下圖中,我們關(guān)注一下已經(jīng)開發(fā)的雪花模式的一部分,該部分處理多對多維度。

圖9 雪花模式解決了 Menu 的多維度

圖9 雪花模式解決了 Menu 的多維度

Rational Rose 生成了附加的維度表 FlightMenu,它是指 Menu 維度和 Flight 事實(shí)。

確定關(guān)系用于解決多對多關(guān)聯(lián)。

對于雪花模式的架構(gòu)師來說,最重要的一點(diǎn)就是識別多對多關(guān)系。簡單對象視圖可能會使設(shè)計(jì)員理解概念,而生成的數(shù)據(jù)視圖有助于進(jìn)一步深入有關(guān)實(shí)現(xiàn)的問題。

層次

數(shù)據(jù)挖掘可以從隱藏在操作系統(tǒng)表面下的數(shù)據(jù)中發(fā)現(xiàn)信息。我們想了解的一個(gè)問題就是選定菜單與乘客統(tǒng)計(jì)資料之間的依賴關(guān)系。

乘客統(tǒng)計(jì)資料數(shù)據(jù)可以在 Passenger 維度的層次上構(gòu)建。乘客可以根據(jù)郵政編碼分組,然后再按國家進(jìn)行分組。

圖10 乘客的層次

圖10 乘客的層次

層次通過使用聚合來指定。聚合定義了所包括的內(nèi)容。Country 包含了 ZIP 編碼,ZIP 編碼包含了多名 Passenger 信息。

最終通過使用外鍵實(shí)現(xiàn)了聚合。

圖11 雪花模式實(shí)現(xiàn)了 Passenger 維度的聚合

圖11 雪花模式實(shí)現(xiàn)了 Passenger 維度的聚合

點(diǎn)擊查看大圖

生成的約束仍然沒有在圖中表示出來。

使用聚合,維度可以在任何定義的級別上使用。分析空間可以通過 Passenger、ZIP Code或者 Country 進(jìn)行切片。

一致的維度

隨著數(shù)據(jù)倉庫架構(gòu)師不斷地添加細(xì)節(jié)內(nèi)容,雪花模式變得越來越復(fù)雜。因此設(shè)計(jì)過程必須在到達(dá)某種程度后停止以保持數(shù)據(jù)倉庫運(yùn)行良好。

星型或者雪花模式仍然僅僅關(guān)注于一個(gè)事實(shí)--在本例中就是Flight。那么復(fù)雜關(guān)系又是什么情況呢?

對于每個(gè)事實(shí)我們都必須設(shè)計(jì)其各自的模式。如果我們想要進(jìn)行復(fù)雜查詢的話,它們就必須具有共同的維度--我們稱其為一致的維度。

讓我們使用 Pilot 作為一個(gè)維度,PilotFlight 作為一個(gè)事實(shí)來定義第二個(gè)星型模式。我們還要使用附加的 Flight Schedule 維度和 Time 維度。

圖12 Pilot 星型模式

圖12 Pilot 星型模式

第二個(gè)模式可以單獨(dú)使用或者與 Passenger 模式結(jié)合使用,從而根據(jù)使用一致維度的飛行員維度來查詢 Passenger 的滿意程度。

圖13 一致維度Time 和 Flight Schedule

圖13 一致維度Time 和 Flight Schedule

即使在使用一致維度的數(shù)據(jù)倉庫的簡單結(jié)構(gòu)中,Pilot 與 Passenger 之間的關(guān)系也是簡單的。

在開發(fā)數(shù)據(jù)模型時(shí),數(shù)據(jù)倉庫將大量小型星型模式與雪花模式相結(jié)合形成了大型的數(shù)據(jù)倉庫模式。

事實(shí)與維度的數(shù)據(jù)

我們想要評估乘客對于飛行的滿意率??梢允褂貌粷M意到很滿意幾個(gè)級別進(jìn)行評定。評定記錄存放在事實(shí)表 Flight 中作為一個(gè)屬性(列)。

如果我們想要得出一個(gè)平均記錄,那么就必須為記錄定義值以進(jìn)行計(jì)算。我們可以將記錄分為 0 到 10 級。這樣就可以得到一個(gè)平均記錄。平均值應(yīng)該存儲在維度表中,以用于簡單的切片,其中我們只想進(jìn)行一維切片。

Rational Rose 根據(jù)目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)類型生成了實(shí)現(xiàn)屬性。對象模型是用來定義數(shù)據(jù)庫的數(shù)據(jù)源的。

結(jié)束語

IBM Rational Rose 是設(shè)計(jì)數(shù)據(jù)倉庫實(shí)現(xiàn)的最佳工具。

對象模型定義了有關(guān)模式的全局結(jié)構(gòu)的對象,和包括數(shù)據(jù)源的整體數(shù)據(jù)倉庫。它代表了數(shù)據(jù)倉庫中有關(guān)視圖的對象,同時(shí)隱藏了實(shí)施細(xì)節(jié)。

數(shù)據(jù)模型是數(shù)據(jù)倉庫的實(shí)現(xiàn)模型。數(shù)據(jù)模型可以從對象模型中生成,反之亦然。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }