成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 南昌OA系統(tǒng) > 南昌OA信息化
把握數(shù)據(jù)倉庫中的“鍵”
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
文章來源:泛普軟件目前,在數(shù)據(jù)倉庫邏輯模型設(shè)計(jì)上主要有實(shí)體-關(guān)系建模和維度建模兩種方法,其中維度建模,即星型模式設(shè)計(jì)在國內(nèi)數(shù)據(jù)倉庫項(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í)踐證明,這種簡單而對(duì)稱的結(jié)構(gòu)能夠表達(dá)各種復(fù)雜的業(yè)務(wù)邏輯,并有助于最終用戶的訪問。
主外鍵關(guān)系是維度建模的重要基礎(chǔ),那么怎樣決定數(shù)據(jù)倉庫中的主鍵呢?至少有三個(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ù)庫系統(tǒng)所賦予的一個(gè)數(shù)值,該數(shù)值按順序分配,沒有內(nèi)置含義但可以作為一行維度信息的惟一標(biāo)識(shí)。

根據(jù)筆者的項(xiàng)目經(jīng)驗(yàn),推薦采納第二種觀點(diǎ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ù)倉庫系統(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位一樣,在歷史的長河中一般認(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ù)倉庫系統(tǒng)的映射,又提高了數(shù)據(jù)倉庫系統(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ù)倉庫邏輯模型設(shè)計(jì)階段,使用邏輯主鍵是妥當(dāng)?shù)?,這是一個(gè)具有很好包容性和概括性的定義。物理主鍵是在具體的項(xiàng)目場景中能夠惟一標(biāo)識(shí)事實(shí)表中一行數(shù)據(jù)的列的聯(lián)合。在數(shù)據(jù)倉庫物理模型設(shè)計(jì)階段,一般會(huì)采用物理主鍵的概念。邏輯主鍵有時(shí)是和物理主鍵一致的,但并不總是這樣。
物理模型中保單事實(shí)表的物理主鍵已經(jīng)確定,那么是否意味著一定要在事實(shí)表上真正建立起聯(lián)合主鍵?這個(gè)問題目前在業(yè)界存在著廣泛的爭議。筆者認(rèn)為應(yīng)該視情況而定,如果事實(shí)表很大,每天的增量信息很多,那么這個(gè)聯(lián)合主鍵可以不做顯式的聲明,即不在保單事實(shí)表上建立主鍵,物理主鍵只用于ETL及數(shù)據(jù)核查過程。
因?yàn)?,在OLTP系統(tǒng)環(huán)境中,數(shù)據(jù)的完整性通??績煞N方式來保證,一是應(yīng)用程序的邏輯保證,另一個(gè)是數(shù)據(jù)庫結(jié)構(gòu)自身的約束機(jī)制。這兩種方式相互補(bǔ)充,而數(shù)據(jù)倉庫環(huán)境中的情況則完全不同,數(shù)據(jù)倉庫中數(shù)據(jù)的完整性更依賴于應(yīng)用程序,也就是ETL系統(tǒng)的保證。
首先,ETL系統(tǒng)運(yùn)行時(shí)間雖然很長,但其結(jié)構(gòu)是簡單的,重復(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ù)倉庫系統(tǒng)沒有交互式人機(jī)錄入界面,不存在“人為”錯(cuò)誤。
因此,當(dāng)裝載時(shí)間窗是一個(gè)必須考慮的問題時(shí),建議從數(shù)據(jù)倉庫環(huán)境中刪除一些不必要的約束,其中包括主鍵約束、外鍵約束和惟一索引約束。這些約束規(guī)則可以在外部得以實(shí)施。 (CCW)
本站推薦
- 1甲方如何把握項(xiàng)目的投資建設(shè)運(yùn)營
- 2土木工程施工管理軟件,助力項(xiàng)目高效管控與進(jìn)度精準(zhǔn)把握
- 3單機(jī)版工程施工管理軟件,助力工程高效管控與進(jìn)度精準(zhǔn)把握
- 4建筑加固工程管理系統(tǒng)需求調(diào)研:洞察行業(yè)痛點(diǎn)精準(zhǔn)把握系統(tǒng)功能需求
- 5哪類人群能真正游刃有余地把握商機(jī)并做好管理?
- 6企業(yè)把握商機(jī)秘訣:巧用商機(jī)管理系統(tǒng)開啟財(cái)富新征程
- 7東莞選采購倉庫管理系統(tǒng),哪家強(qiáng)?把握選合適系統(tǒng)提效關(guān)鍵
- 8自建物資出入庫管理軟件:極速管理庫存,精確把握物資動(dòng)態(tài)一步到位
- 9上海供應(yīng)鏈商機(jī)管理軟件:精準(zhǔn)把握市場契機(jī)開啟高效商業(yè)新征程的法寶

