數(shù)據(jù)倉(cāng)庫(kù)來(lái)源于它的前身數(shù)據(jù)庫(kù),是在數(shù)據(jù)庫(kù)的基礎(chǔ)上進(jìn)行了改良。數(shù)據(jù)倉(cāng)庫(kù)擁有數(shù)據(jù)庫(kù)的基本操作功能,比如新增、查詢、刪除和插入這些操作。數(shù)據(jù)倉(cāng)庫(kù)弱化了數(shù)據(jù)庫(kù)鎖的功能,它不支持鎖定表、列的功能,等等。但是數(shù)據(jù)倉(cāng)庫(kù)技能的進(jìn)階仍是一個(gè)漫長(zhǎng)的過(guò)程。這里將分為四個(gè)過(guò)程一步一步的闡述需要哪些方面的技術(shù)要求。
一、開(kāi)啟數(shù)倉(cāng)的技能
數(shù)據(jù)倉(cāng)庫(kù)建立是為了滿足企業(yè)對(duì)數(shù)據(jù)的管理和使用的需求。企業(yè)的各個(gè)系統(tǒng)業(yè)務(wù)數(shù)據(jù)統(tǒng)一納入數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行管理,并且統(tǒng)一接口提供給外部系統(tǒng)使用。企業(yè)的各個(gè)系統(tǒng)運(yùn)行都要從數(shù)據(jù)倉(cāng)庫(kù)中獲取必要的數(shù)據(jù),并將數(shù)據(jù)回傳回?cái)?shù)據(jù)倉(cāng)庫(kù)。
建立的數(shù)據(jù)倉(cāng)庫(kù)能夠管理企業(yè)主要業(yè)務(wù)系統(tǒng)的核心數(shù)據(jù),比如:管理客戶信息、訂單信息和供貨商信息等。數(shù)據(jù)倉(cāng)庫(kù)統(tǒng)一管理是為了避免因各系統(tǒng)管理各自的數(shù)據(jù)帶來(lái)數(shù)據(jù)無(wú)法共享也無(wú)法被分析使用的問(wèn)題。
此外,數(shù)據(jù)倉(cāng)庫(kù)需為核心系統(tǒng)提供數(shù)據(jù)。比如:訂單系統(tǒng)需要客戶關(guān)系信息,訂單系統(tǒng)就要從數(shù)據(jù)倉(cāng)庫(kù)中獲取客戶關(guān)系的數(shù)據(jù)。根據(jù)上面的闡述,歸納出數(shù)據(jù)倉(cāng)庫(kù)建立的四個(gè)非常重要的基本功能。
1.1管理大量數(shù)據(jù)的能力。在數(shù)據(jù)倉(cāng)庫(kù)技術(shù)以前TB(萬(wàn)億字節(jié))和PB(千萬(wàn)億字節(jié))這樣的術(shù)語(yǔ)不為人所知,數(shù)據(jù)容量以GB來(lái)度量。因?yàn)閿?shù)據(jù)倉(cāng)庫(kù)中混合存儲(chǔ)細(xì)節(jié)和歷史數(shù)據(jù),數(shù)據(jù)量急劇地膨脹。所以對(duì)于數(shù)據(jù)倉(cāng)庫(kù)來(lái)說(shuō),第一個(gè)也是最重要的技術(shù)需求就是能夠管理大量的數(shù)據(jù)。
1.2.管理多種介質(zhì)的能力。數(shù)據(jù)倉(cāng)庫(kù)按數(shù)據(jù)量和數(shù)據(jù)的訪問(wèn)頻率不同的兩個(gè)因素,將數(shù)據(jù)存儲(chǔ)于不同性能的存儲(chǔ)介質(zhì)上。所以數(shù)據(jù)倉(cāng)庫(kù)需要有能力管理好這些存儲(chǔ)介質(zhì)的能力。
1.3.輕松容易地索引和監(jiān)視數(shù)據(jù)。數(shù)據(jù)倉(cāng)庫(kù)快速地對(duì)外提供數(shù)據(jù)是最重要的一個(gè)功能,輕松地建立索引是提高數(shù)據(jù)訪問(wèn)速度最直接的方法。同時(shí)數(shù)據(jù)倉(cāng)庫(kù)也需要對(duì)數(shù)據(jù)進(jìn)行有效的監(jiān)控,可以及時(shí)發(fā)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)的問(wèn)題并進(jìn)行解決。
1.4.提供多種數(shù)據(jù)傳輸技術(shù)的接口。數(shù)據(jù)倉(cāng)庫(kù)另一個(gè)非常重要的問(wèn)題是能夠用各種不同的技術(shù)接收和傳送數(shù)據(jù)。數(shù)據(jù)從操作型環(huán)境和ODS中傳入數(shù)據(jù)倉(cāng)庫(kù),從數(shù)據(jù)倉(cāng)庫(kù)傳入數(shù)據(jù)集市,這個(gè)過(guò)程必須是流暢且容易進(jìn)行的。
完成以上四步一個(gè)簡(jiǎn)單的數(shù)據(jù)倉(cāng)庫(kù)就可以運(yùn)行起來(lái)了,可以應(yīng)付整個(gè)企業(yè)龐大的數(shù)據(jù)并為各個(gè)業(yè)務(wù)系統(tǒng)提供核心數(shù)據(jù)。但是要建立一個(gè)好的數(shù)據(jù)倉(cāng)庫(kù)還需要對(duì)數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行良好的管理,我們還需要以下技能。
二、數(shù)倉(cāng)青銅圣斗士的技能
數(shù)據(jù)倉(cāng)庫(kù)應(yīng)該是一個(gè)靈活的平臺(tái),且能夠監(jiān)控?cái)?shù)據(jù)的來(lái)龍去脈。靈活的平臺(tái)體現(xiàn)在,當(dāng)用戶提出不斷變化的需求數(shù)據(jù)倉(cāng)庫(kù)都能應(yīng)付。并且數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)來(lái)自企業(yè)的多個(gè)系統(tǒng),管理好數(shù)據(jù)的來(lái)龍去脈就可以對(duì)數(shù)據(jù)進(jìn)行溯源,確保數(shù)據(jù)的高可信度。
2.1.允許設(shè)計(jì)者/開(kāi)發(fā)者在塊/頁(yè)的級(jí)別上以一種最佳形式?jīng)Q定數(shù)據(jù)的物理存放位置。往往在數(shù)據(jù)倉(cāng)庫(kù)建立之初,設(shè)計(jì)者面對(duì)的是模糊的需求,建立完成的數(shù)據(jù)倉(cāng)庫(kù)可以允許設(shè)計(jì)者對(duì)數(shù)據(jù)的存儲(chǔ)進(jìn)行調(diào)整。
2.2.能夠并行管理數(shù)據(jù)。包涵了兩層意思,a)對(duì)請(qǐng)求的并發(fā)訪問(wèn)進(jìn)行控制。數(shù)據(jù)倉(cāng)庫(kù)同時(shí)接入多個(gè)系統(tǒng)同步過(guò)來(lái)的數(shù)據(jù),且同時(shí)服務(wù)于多個(gè)系統(tǒng)。因數(shù)據(jù)倉(cāng)庫(kù)對(duì)外提供服務(wù)要防止請(qǐng)求擁塞,數(shù)據(jù)倉(cāng)庫(kù)需要對(duì)請(qǐng)求的并發(fā)訪問(wèn)進(jìn)行控制。b)對(duì)數(shù)據(jù)的并行管理。因?yàn)閿?shù)據(jù)存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)中的多個(gè)數(shù)據(jù)庫(kù),并行管理好每一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)才可以為業(yè)務(wù)系統(tǒng)提供穩(wěn)定的服務(wù)。
2.3.很好的元數(shù)據(jù)控制。元數(shù)據(jù)描述數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的來(lái)龍去脈,比如:當(dāng)需要使用人力數(shù)據(jù),可以通過(guò)元數(shù)據(jù)中的描述,找到元數(shù)據(jù)的來(lái)源的相關(guān)信息,并進(jìn)行人力數(shù)據(jù)獲取。值得注意的是元數(shù)據(jù)有多種形式,一種形式是業(yè)務(wù)元數(shù)據(jù),另一種是技術(shù)元數(shù)據(jù)。業(yè)務(wù)元數(shù)據(jù)就是對(duì)業(yè)務(wù)人員有價(jià)值的元數(shù)據(jù)。技術(shù)元數(shù)據(jù)就是對(duì)技術(shù)人員有價(jià)值的元數(shù)據(jù)。
2.4.數(shù)據(jù)倉(cāng)庫(kù)要有多種語(yǔ)言接口。數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)是為多種工作性質(zhì)的人員使用,為了方便他們的操作,數(shù)據(jù)倉(cāng)庫(kù)需要為每一種工作性質(zhì)角色提供專屬接口。比如:部門經(jīng)理只需要看到本部門員工信息,而公司總經(jīng)理需要看整個(gè)公司的員工信息。還如:為網(wǎng)站調(diào)用提供Restful風(fēng)格的接口,為桌面程序提供基于SOAP協(xié)議的接口。
到此我們可以讓數(shù)據(jù)倉(cāng)庫(kù)有效地服務(wù)于各個(gè)業(yè)務(wù)系統(tǒng),而且可以管理整個(gè)數(shù)據(jù)倉(cāng)庫(kù)。不過(guò),數(shù)據(jù)倉(cāng)庫(kù)不僅包涵建設(shè)階段還包含優(yōu)化階段,數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行中需要不斷的優(yōu)化整個(gè)數(shù)據(jù)倉(cāng)庫(kù),以下是一些優(yōu)化方法。
三、數(shù)倉(cāng)白銀圣斗士的技能
數(shù)據(jù)倉(cāng)庫(kù)能夠管理同步業(yè)務(wù)系統(tǒng)數(shù)據(jù),為業(yè)務(wù)系統(tǒng)提供服務(wù),已經(jīng)初具功能。下面介紹一些優(yōu)化技術(shù)點(diǎn)。
3.1.能夠高效地裝載數(shù)據(jù)倉(cāng)庫(kù)。數(shù)據(jù)倉(cāng)庫(kù)載入數(shù)據(jù)有兩種方式:通過(guò)接口一次載入一條記錄,或者使用工具批量地裝載,這兩種方式最為常見(jiàn)。這里介紹另一種特殊情況下使用的高效裝載大量數(shù)據(jù)的方法,在裝載之前先對(duì)數(shù)據(jù)進(jìn)行緩沖處理。比方說(shuō)兩個(gè)數(shù)據(jù)源要進(jìn)行合并之后才能進(jìn)入數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)源A在早上九點(diǎn)就生成了,但是,必須和來(lái)自數(shù)據(jù)源B的數(shù)據(jù)相合并,然而,來(lái)自源B的數(shù)據(jù)在下午6點(diǎn)才能到達(dá)。這種情況下,在處理數(shù)據(jù)之前,將數(shù)據(jù)源A的數(shù)據(jù)放入緩沖區(qū)等待數(shù)據(jù)源B的到來(lái)。完成數(shù)據(jù)源A和數(shù)據(jù)源B的融合之后,再將數(shù)據(jù)裝載到數(shù)據(jù)倉(cāng)庫(kù)中。
3.2.有效地使用索引。索引是為了高效訪問(wèn)數(shù)據(jù),數(shù)據(jù)倉(cāng)庫(kù)快速地創(chuàng)建索引,并且可以將索引裝載到內(nèi)存中,并快速地對(duì)索引進(jìn)行掃描。比如:數(shù)據(jù)A和B,他們數(shù)據(jù)量相差不大,A數(shù)據(jù)建立索引常駐內(nèi)存,B數(shù)據(jù)的索引存放在磁盤上,當(dāng)然數(shù)據(jù)A的訪問(wèn)速度要快于B。
3.3.能夠以壓縮的方式存放數(shù)據(jù)。對(duì)數(shù)據(jù)的壓縮是為了存放更多的數(shù)據(jù),數(shù)據(jù)量特別大的情況下采用數(shù)據(jù)快照的方式對(duì)數(shù)據(jù)進(jìn)行壓縮是比較常用的方式。
3.4.支持復(fù)合健碼。復(fù)合主鍵在數(shù)據(jù)倉(cāng)庫(kù)中隨處可見(jiàn),比如:在民航領(lǐng)域中,通常通過(guò)航班號(hào)和航班日期來(lái)確定航班信息。
到此我們已經(jīng)知道一些初步的數(shù)據(jù)倉(cāng)庫(kù)優(yōu)化方法,但對(duì)于很多系統(tǒng)運(yùn)行依賴于數(shù)據(jù)倉(cāng)庫(kù),更佳穩(wěn)定的服務(wù)于業(yè)務(wù)系統(tǒng)非常重要,我們還需要補(bǔ)充以下技能。
四、數(shù)倉(cāng)黃金圣斗士的技能
這個(gè)階段的數(shù)據(jù)倉(cāng)庫(kù)能夠管理變長(zhǎng)數(shù)據(jù)、能夠按照需要使用鎖,可以有效地應(yīng)付不同數(shù)據(jù)庫(kù)和不同使用場(chǎng)景的挑戰(zhàn)。而且當(dāng)數(shù)據(jù)倉(cāng)庫(kù)崩潰的時(shí)候可以快速的從備份的介質(zhì)上恢復(fù)。
4.1.有效地管理變長(zhǎng)數(shù)據(jù)。數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的多樣性,必須支持?jǐn)?shù)據(jù)的變長(zhǎng)結(jié)構(gòu)。
4.2.能夠按照需要開(kāi)啟和關(guān)閉鎖管理程序。加鎖管理確保沒(méi)有兩個(gè)或兩個(gè)以上的用戶在同一時(shí)刻對(duì)同一條記錄進(jìn)行更新。加鎖非常消耗資源,所以對(duì)加鎖管理需要有一個(gè)可以有效地打開(kāi)或關(guān)閉的控制。
4.3.能夠進(jìn)行單獨(dú)索引處理。在某些情況下只查看一個(gè)索引或一些索引,用不著查看數(shù)據(jù)就可以滿足某些請(qǐng)求。
4.4.能夠從一批介質(zhì)是上將數(shù)據(jù)快速、完全地恢復(fù)。可以快速的將二級(jí)設(shè)備上存儲(chǔ)的備份數(shù)據(jù)進(jìn)行恢復(fù)。不僅能恢復(fù)全部數(shù)據(jù)庫(kù),還能恢復(fù)部分?jǐn)?shù)據(jù)庫(kù)。這個(gè)在數(shù)據(jù)倉(cāng)庫(kù)崩潰恢復(fù)非常重要。
到這個(gè)步驟,整個(gè)數(shù)據(jù)倉(cāng)庫(kù)可以高效穩(wěn)定地支撐整個(gè)企業(yè)的運(yùn)行。
小結(jié)
數(shù)據(jù)倉(cāng)庫(kù)作為企業(yè)的基礎(chǔ)平臺(tái)需高效且穩(wěn)定的運(yùn)行。因?yàn)榛A(chǔ)平臺(tái)服務(wù)于企業(yè)的各個(gè)業(yè)務(wù)系統(tǒng),它能不能夠正常運(yùn)行會(huì)影響非常多的關(guān)聯(lián)系統(tǒng)。當(dāng)數(shù)據(jù)倉(cāng)庫(kù)具有上面的功能對(duì)穩(wěn)定高效的運(yùn)行是很好的保證。
數(shù)據(jù)倉(cāng)庫(kù)建立和優(yōu)化過(guò)程中還需要增加很多其它功能。我們這里只分享了數(shù)據(jù)倉(cāng)庫(kù)的一些主要的基礎(chǔ)功能和后期優(yōu)化主要功能。希望在實(shí)踐中能不斷的總結(jié)進(jìn)步交流分享。