監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 簽約案例 | 購(gòu)買價(jià)格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

把握數(shù)據(jù)倉(cāng)庫(kù)中的“鍵”

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

文章來源:泛普軟件

目前,在數(shù)據(jù)倉(cāng)庫(kù)邏輯模型設(shè)計(jì)上主要有實(shí)體-關(guān)系建模和維度建模兩種方法,其中維度建模,即星型模式設(shè)計(jì)在國(guó)內(nèi)數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目工程實(shí)踐中應(yīng)用更為廣泛。星型結(jié)構(gòu)模型典型的形式是一個(gè)主題由中間的一個(gè)大表和圍繞在其周圍的一組小表組成。中間的大表稱為“事實(shí)表”,存儲(chǔ)數(shù)值型度量指標(biāo)和連接到維度表的外鍵;外圍的小表稱為“維度表”,存儲(chǔ)用于描述事物的文本屬性信息及連接到事實(shí)表的主鍵。

這一結(jié)構(gòu)體現(xiàn)了兩種關(guān)系,一是維度表與事實(shí)表之間的一對(duì)多關(guān)系;二是通過事實(shí)表體現(xiàn)出的維度表之間相互的多對(duì)多關(guān)系。實(shí)踐證明,這種簡(jiǎn)單而對(duì)稱的結(jié)構(gòu)能夠表達(dá)各種復(fù)雜的業(yè)務(wù)邏輯,并有助于最終用戶的訪問。

主外鍵關(guān)系是維度建模的重要基礎(chǔ),那么怎樣決定數(shù)據(jù)倉(cāng)庫(kù)中的主鍵呢?至少有三個(gè)方面因素必須考慮:第一,主鍵應(yīng)該是穩(wěn)定的;第二,主鍵應(yīng)該能夠標(biāo)識(shí)出到相關(guān)源系統(tǒng)的映射;第三,主鍵實(shí)際是一種約束,必須考慮加載和查詢的效率。

維度表中的鍵

維度表一般由主鍵、分類層次和屬性描述組成。對(duì)于主鍵的選擇一般存在兩種觀點(diǎn):一種是采用自然鍵(Natural Key),即操作型系統(tǒng)使用的具有一定內(nèi)置含義的標(biāo)識(shí)符;另一種是采用代理鍵(Surrogate Key),即由裝載程序或者數(shù)據(jù)庫(kù)系統(tǒng)所賦予的一個(gè)數(shù)值,該數(shù)值按順序分配,沒有內(nèi)置含義但可以作為一行維度信息的惟一標(biāo)識(shí)。

根據(jù)筆者的項(xiàng)目經(jīng)驗(yàn),推薦采納第二種觀點(diǎn),主要原因是代理鍵簡(jiǎn)化了事實(shí)表與維度表的主外鍵關(guān)系。維度表作為用戶進(jìn)入事實(shí)表的入口,承擔(dān)著記錄觀察視角的歷史變化軌跡的任務(wù)。如果以自然鍵、時(shí)間標(biāo)簽,或許還有機(jī)構(gòu)代碼聯(lián)合起來也可以在邏輯上惟一標(biāo)識(shí)出一個(gè)產(chǎn)品,但如果作為主鍵,那就意味著在事實(shí)表中也要加入同樣的外鍵信息,而事實(shí)表記錄行數(shù)是巨大的,在多個(gè)維度上重復(fù)這樣的做法會(huì)使事實(shí)表由于列寬過于膨脹而迅速崩潰。

最好的辦法是采用代理鍵,即選擇一個(gè)只占用4個(gè)字節(jié)就可以處理20億個(gè)正整數(shù)的列作為維度表的主鍵,這樣既解決了事實(shí)表存儲(chǔ)空間的浪費(fèi)問題,又維持了自身的獨(dú)立和穩(wěn)定。

另一個(gè)好處是,代理鍵可以作為數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)與源系統(tǒng)之間的緩沖。隨著企業(yè)的發(fā)展,生產(chǎn)系統(tǒng)中的產(chǎn)品名稱、產(chǎn)品分類、組織機(jī)構(gòu)幾乎不可避免地會(huì)發(fā)生調(diào)整,有的時(shí)候甚至自然鍵本身也會(huì)發(fā)生變化。就像身份證號(hào)碼都從15位變到18位一樣,在歷史的長(zhǎng)河中一般認(rèn)為不可能的事其實(shí)都有可能發(fā)生。如果采用了代理鍵,這些變化會(huì)被屏蔽在維度表內(nèi),需要記錄歷史軌跡的就貼上時(shí)間標(biāo)簽,不需要的就直接更新掉,變化的過程不會(huì)對(duì)事實(shí)表產(chǎn)生任何沖擊。維持業(yè)務(wù)系統(tǒng)的自然鍵與維度表代理鍵的對(duì)照關(guān)系的目的也在于此,既保留了業(yè)務(wù)系統(tǒng)到數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的映射,又提高了數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的抗震性。

事實(shí)表中的鍵

事實(shí)表中包含度量指標(biāo)和連接到相關(guān)維度表的一組外鍵,這組外鍵的聯(lián)合惟一標(biāo)識(shí)了一行事實(shí)數(shù)據(jù)。然而,事實(shí)表在維度建模過程中是如此重要,以致于我們必須進(jìn)一步認(rèn)識(shí)它。這里的關(guān)鍵是對(duì)邏輯主鍵和物理主鍵的認(rèn)識(shí)。

邏輯主鍵是構(gòu)成事實(shí)表的所有維度外鍵的聯(lián)合。由于事實(shí)表存在多種類型,從粒度上看有原子級(jí)和匯總級(jí);從度量的可加性上看有完全可加、半可加和不可加類型。在數(shù)據(jù)倉(cāng)庫(kù)邏輯模型設(shè)計(jì)階段,使用邏輯主鍵是妥當(dāng)?shù)模@是一個(gè)具有很好包容性和概括性的定義。物理主鍵是在具體的項(xiàng)目場(chǎng)景中能夠惟一標(biāo)識(shí)事實(shí)表中一行數(shù)據(jù)的列的聯(lián)合。在數(shù)據(jù)倉(cāng)庫(kù)物理模型設(shè)計(jì)階段,一般會(huì)采用物理主鍵的概念。邏輯主鍵有時(shí)是和物理主鍵一致的,但并不總是這樣。

物理模型中保單事實(shí)表的物理主鍵已經(jīng)確定,那么是否意味著一定要在事實(shí)表上真正建立起聯(lián)合主鍵?這個(gè)問題目前在業(yè)界存在著廣泛的爭(zhēng)議。筆者認(rèn)為應(yīng)該視情況而定,如果事實(shí)表很大,每天的增量信息很多,那么這個(gè)聯(lián)合主鍵可以不做顯式的聲明,即不在保單事實(shí)表上建立主鍵,物理主鍵只用于ETL及數(shù)據(jù)核查過程。

因?yàn)?,在OLTP系統(tǒng)環(huán)境中,數(shù)據(jù)的完整性通???jī)煞N方式來保證,一是應(yīng)用程序的邏輯保證,另一個(gè)是數(shù)據(jù)庫(kù)結(jié)構(gòu)自身的約束機(jī)制。這兩種方式相互補(bǔ)充,而數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中的情況則完全不同,數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的完整性更依賴于應(yīng)用程序,也就是ETL系統(tǒng)的保證。

首先,ETL系統(tǒng)運(yùn)行時(shí)間雖然很長(zhǎng),但其結(jié)構(gòu)是簡(jiǎn)單的,重復(fù)地抓取、清洗、轉(zhuǎn)換、加載動(dòng)作。與其相比,OLTP系統(tǒng)可能同時(shí)在一張表上執(zhí)行大量并行業(yè)務(wù)操作;其次,事實(shí)表的惟一入口是維度表,按照維度建模的思路實(shí)現(xiàn)ETL程序,只可能產(chǎn)生不準(zhǔn)確的維度信息,但不可能在事實(shí)表中產(chǎn)生重復(fù)記錄;第三,與OLTP系統(tǒng)相比,數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)沒有交互式人機(jī)錄入界面,不存在“人為”錯(cuò)誤。

因此,當(dāng)裝載時(shí)間窗是一個(gè)必須考慮的問題時(shí),建議從數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中刪除一些不必要的約束,其中包括主鍵約束、外鍵約束和惟一索引約束。這些約束規(guī)則可以在外部得以實(shí)施。 (CCW)

發(fā)布:2007-04-22 10:02    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
南昌OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普南昌OA信息化其他應(yīng)用

南昌OA軟件 南昌OA新聞動(dòng)態(tài) 南昌OA信息化 南昌OA快博 南昌OA行業(yè)資訊 南昌軟件開發(fā)公司 南昌門禁系統(tǒng) 南昌物業(yè)管理軟件 南昌倉(cāng)庫(kù)管理軟件 南昌餐飲管理軟件 南昌網(wǎng)站建設(shè)公司