第三章 數(shù)據(jù)庫(kù)系統(tǒng)
3.1 數(shù)據(jù)庫(kù)管理系統(tǒng)的類型
通常有多個(gè)分類標(biāo)準(zhǔn)嗜价。如按數(shù)據(jù)模型分類艇抠、按用戶數(shù)分類、按數(shù)據(jù)庫(kù)分布站點(diǎn)分類等久锥。我們需要了解的是按數(shù)據(jù)模型分類家淤。
當(dāng)前,主流數(shù)據(jù)模型為關(guān)系數(shù)據(jù)模型瑟由。常見(jiàn)的DBMS按數(shù)據(jù)模型劃分絮重,包括:關(guān)系型DBMS、文檔型DBMS错妖、鍵值型DBMS粪躬、對(duì)象型DBMS等皿桑。
3.2 數(shù)據(jù)庫(kù)模式與范式
3.2.1 數(shù)據(jù)庫(kù)的接口與模式
1. 三級(jí)抽象
數(shù)據(jù)庫(kù)系統(tǒng)劃分為三個(gè)抽象級(jí):用戶級(jí)、概念級(jí)、物理級(jí)香椎。
- 用戶級(jí)數(shù)據(jù)庫(kù)。對(duì)應(yīng)于外模式味榛,是最接近用戶的一級(jí)數(shù)據(jù)庫(kù)朵夏,是用戶可以看得到和使用的數(shù)據(jù)庫(kù),又稱用戶視圖辣吃。主要由外部記錄組成动遭,不同的用戶視圖可以互相重疊,用戶的所有操作都是針對(duì)用戶視圖進(jìn)行的神得。
- 概念級(jí)數(shù)據(jù)庫(kù)厘惦。對(duì)應(yīng)于概念模式。介于用戶級(jí)和物理級(jí)之間哩簿,是所有用戶視圖的最小并集宵蕉,是數(shù)據(jù)庫(kù)管理員可以看到和是喲經(jīng)的數(shù)據(jù)庫(kù),又稱DBA視圖节榜。由概念記錄組成羡玛,一個(gè)數(shù)據(jù)庫(kù)可以有不同的用戶視圖,每個(gè)用戶視圖由數(shù)據(jù)庫(kù)某一部分的抽象表示所組成宗苍,一個(gè)是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)只存在一個(gè)DBA視圖稼稿,他把數(shù)據(jù)庫(kù)作為一個(gè)整體的抽象表示薄榛,概念機(jī)模式把用戶視圖有機(jī)結(jié)合成一個(gè)整體,綜合平衡考慮所有用戶要求让歼,實(shí)現(xiàn)數(shù)據(jù)的一致性敞恋,最大限度降低數(shù)據(jù)冗余,準(zhǔn)確的反映數(shù)據(jù)間的聯(lián)系是越。
- 物理級(jí)數(shù)據(jù)庫(kù)耳舅。對(duì)應(yīng)于內(nèi)模式,是數(shù)據(jù)庫(kù)的低層表示倚评,描述數(shù)據(jù)的實(shí)際存儲(chǔ)組織浦徊,是最接近物理存儲(chǔ)的級(jí),又稱內(nèi)部視圖天梧。物理級(jí)數(shù)據(jù)庫(kù)由內(nèi)部記錄組成盔性,物理級(jí)數(shù)據(jù)庫(kù)并不是真正的物理存儲(chǔ),而是最接近于物理存儲(chǔ)的級(jí)呢岗。
2. 三級(jí)模式
三級(jí)模式為內(nèi)模式冕香、概念模式、內(nèi)模式后豫。
- 概念模式悉尾。(模式、邏輯模式)用以描述整個(gè)數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)挫酿,描述現(xiàn)實(shí)世界中的實(shí)體及其性質(zhì)和聯(lián)系构眯,定義記錄、數(shù)據(jù)項(xiàng)早龟、數(shù)據(jù)的完整性約束條件及記錄之間的聯(lián)系惫霸,是數(shù)據(jù)項(xiàng)值的框架。
數(shù)據(jù)庫(kù)系統(tǒng)概念模式通常還包含有訪問(wèn)控制葱弟、保密定義壹店、完整性檢查等方面的內(nèi)容,以及概念/物理之間的映射芝加。
概念模式是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述硅卢,是所有用戶的公共數(shù)據(jù)視圖,一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)概念模式藏杖。
外模式是數(shù)據(jù)庫(kù)用戶(包括程序員和最終用戶)能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述将塑,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用 有關(guān)的數(shù)據(jù)庫(kù)的邏輯表示制市,一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)外模式,一個(gè)應(yīng)用程序只能使用一個(gè)外模式弊予。 - 外模式祥楣。(子模式、用戶模式)用以描述用戶看到或使用的那部分?jǐn)?shù)據(jù)的邏輯結(jié)構(gòu),用戶根據(jù)外模式用數(shù)據(jù)操作語(yǔ)句或應(yīng)用程序去操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)误褪。外模式主要描述組成用戶視圖的各個(gè)記錄的組成责鳍、相互關(guān)系、數(shù)據(jù)項(xiàng)的特征兽间、數(shù)據(jù)的安全性和完整性約束條件历葛。
- 內(nèi)模式。內(nèi)模式是整個(gè)數(shù)據(jù)庫(kù)的最低層表示嘀略,不同于物理層恤溶。它假設(shè)外存是一個(gè)無(wú)限的線性地址空間。內(nèi)模式定義的是存儲(chǔ)記錄的類型帜羊、存儲(chǔ)域的表示以及存儲(chǔ)記錄的物理順序咒程,指引元、索引和存儲(chǔ)路徑等數(shù)據(jù)的存儲(chǔ)組織讼育。
內(nèi)模式是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述帐姻,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式,一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式奶段。
內(nèi)模式饥瓷、模式和外模式之間的關(guān)系如下:
- 模式是數(shù)據(jù)庫(kù)的中心與關(guān)鍵;
- 內(nèi)模式依賴于模式痹籍,獨(dú)立于外模式和存儲(chǔ)設(shè)備呢铆。
- 外模式面向具體的應(yīng)用,獨(dú)立于內(nèi)模式和存儲(chǔ)設(shè)備词裤。
- 應(yīng)用程序依賴于外模式,獨(dú)立于模式和內(nèi)模式因俐。
兩級(jí)獨(dú)立性
指數(shù)據(jù)庫(kù)獨(dú)立性和邏輯獨(dú)立性周偎。三個(gè)抽象級(jí)間通過(guò)兩級(jí)映射(外模式——模式映射抹剩,模式——內(nèi)模式映射)進(jìn)行相互轉(zhuǎn)換,值得數(shù)據(jù)庫(kù)的三級(jí)形成一個(gè)統(tǒng)一的整體蓉坎。
- 物理獨(dú)立性澳眷。是指用戶的應(yīng)用程序與存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)庫(kù)中的數(shù)據(jù)是相互獨(dú)立的。當(dāng)數(shù)據(jù)的物理存儲(chǔ)改變時(shí)蛉艾,應(yīng)用程序不需要改變。
物理獨(dú)立性存在于概念模式和內(nèi)模式之間的映射轉(zhuǎn)換面氓,說(shuō)明物理組織發(fā)生變化時(shí)應(yīng)用程序的獨(dú)立程度柏锄。 - 邏輯獨(dú)立性笤成。是指用戶的應(yīng)用程序與數(shù)據(jù)庫(kù)中的邏輯結(jié)構(gòu)是相互獨(dú)立的籽腕。當(dāng)數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)改變時(shí),應(yīng)用程序不需要改變。
邏輯獨(dú)立性存在于外模式和概念模式之間的映射轉(zhuǎn)換托启,說(shuō)明概念模式發(fā)生變化時(shí)應(yīng)用程序的獨(dú)立程度多矮。
邏輯獨(dú)立性要比物理獨(dú)立性更難實(shí)現(xiàn)淹仑。
3.2.2 數(shù)據(jù)模型
主要有兩大類是鬼,分別是概念數(shù)據(jù)模型(實(shí)體-聯(lián)系模型)和基本數(shù)據(jù)模型(結(jié)構(gòu)數(shù)據(jù)模型)
概念數(shù)據(jù)模型是按照用戶的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫(kù)設(shè)計(jì)椎麦。概念模型主要用實(shí)體——聯(lián)系方法表示普气,所以也稱E-R模型。
基本數(shù)據(jù)模型是按照計(jì)算機(jī)系統(tǒng)的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模碾局,主要用于DBMS的實(shí)現(xiàn)真朗。基本數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)的核心和基礎(chǔ)〔勒欤基本數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)猜年、數(shù)據(jù)操作和完整性約束三部分組成补疑。其中數(shù)據(jù)結(jié)構(gòu)是對(duì)系統(tǒng)靜態(tài)特性的描述,數(shù)據(jù)操作是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述奴潘,完整性約束是一組完整性規(guī)則的集合。
常用的基本數(shù)據(jù)模型有層級(jí)模型笆环、網(wǎng)狀模型厚者、關(guān)系模型和面向?qū)ο竽P汀?/p>
層次模型用樹(shù)形結(jié)構(gòu)表示實(shí)體類型及實(shí)體間的聯(lián)系躁劣。層次模型的優(yōu)點(diǎn)是記錄之間的聯(lián)系通過(guò)指針來(lái)實(shí)現(xiàn)颂郎,查詢效率較高。層次模型的缺點(diǎn)是只能表示1:n聯(lián)系膀懈,雖然有多種輔助手段實(shí)現(xiàn)m:n聯(lián)系,但比較復(fù)雜,用戶不易掌握谅摄。由于層次順序的嚴(yán)格和復(fù)雜楣铁,導(dǎo)致數(shù)據(jù)的查詢和更新操作很復(fù)雜,應(yīng)用程序的編寫(xiě)也比較復(fù)雜。
網(wǎng)狀模型是用有向圖表示實(shí)體類型和實(shí)體間的聯(lián)系递惋。網(wǎng)狀模型的優(yōu)點(diǎn)是記錄之間的聯(lián)系通過(guò)指針實(shí)現(xiàn),m:n聯(lián)系也容易實(shí)現(xiàn)蛾坯,查詢效率高光酣。其缺點(diǎn)是編寫(xiě)應(yīng)用程序的過(guò)程比較復(fù)雜,程序變必須數(shù)據(jù)數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)脉课。
關(guān)系模型用表格結(jié)構(gòu)表達(dá)實(shí)體集救军,用外鍵表示實(shí)體間的聯(lián)系。其優(yōu)點(diǎn)有:
- 建立在嚴(yán)格的數(shù)學(xué)概念基礎(chǔ)上倘零;
- 概念(關(guān)系)單一缤言,結(jié)構(gòu)簡(jiǎn)單清晰,用戶易懂易用视事;
- 存取路徑對(duì)用戶透明胆萧,從而數(shù)據(jù)獨(dú)立性、安全性好俐东,簡(jiǎn)化數(shù)據(jù)庫(kù)開(kāi)發(fā)工作
3.2.3 關(guān)系代數(shù)
關(guān)系代數(shù)的基本運(yùn)算主要有并跌穗、交、差虏辫、笛卡爾積蚌吸、選擇、投影砌庄、連接和除法運(yùn)算羹唠。
- 并。計(jì)算兩個(gè)關(guān)系在集合理論上的并集佩微,即給出關(guān)系$R$和$S$(兩者有相同元/列數(shù)),$R\cup S$的元組包括$R$和$S$所有元組的集合奶卓,形式定義如下(也就是數(shù)據(jù)庫(kù)中的union):
$$R\cup S\equiv {t|t\in R\lor t\in S}$$
式中$t$是元組變量(下同)墩邀。顯然$R\cup S=S\cup R$只盹。 - 差站削。計(jì)算兩個(gè)關(guān)系的區(qū)別的集合许起。即給出關(guān)系$R$和$S$(兩者有相同元/列數(shù)),$R-S$的元組包括$R$中有而$S$中沒(méi)有的元組的集合猛频,形式定義如下(也就是數(shù)據(jù)庫(kù)中的not exists):
$$R-S\equiv {t|t\in R\land t\notin S}$$ - 交鹿寻。計(jì)算兩個(gè)關(guān)系集合理論上的交集,即給出$R$和$S$(兩者有相同元/列數(shù)),$R\cap S$的元組包括$R$和$S$相同元組的集合,形式定義如下(也就是數(shù)據(jù)庫(kù)中的inner join):
$$R\cap S\equiv {t|t\in R\land t\in S}$$
顯然幻馁,$R\cap S=R-(R-S)$和$R\cap S=S-(S-R)$成立甘凭。 - 笛卡爾積丹弱。計(jì)算兩個(gè)關(guān)系的笛卡爾乘積铲咨,令$R$為有$m$元的關(guān)系,$S$為有$n$元的關(guān)系纤勒,則$R\times S$是$m+n$元的元組的集合,其前$m$個(gè)元素來(lái)自$R$的一個(gè)元組摇天,而后$n$個(gè)元素來(lái)自于$S$的一個(gè)元組泉坐。形成定義如下:
$$R\times S\equiv {t|t\le t_r,t_s>\land t_r\in R\land t_s\in S}$$
若$R$有$u$個(gè)元組纯丸,$S$有$v$個(gè)元組,則$R\times S$有$u\times v$個(gè)元組。 - 投影滑凉。從一個(gè)關(guān)系中抽取指明的屬性(列)统扳。令$R$為一個(gè)包含屬性$A$的關(guān)系,則:
$$\pi_A(R)\equiv {t[A]|t\in R}$$ - 選擇畅姊。從關(guān)系$R$中抽取滿足給定限制條件的記錄咒钟,記作:
$$\sigma_F(R)\equiv {t|t\in R\land F(t)=true}$$
其中F表示選擇條件,是一個(gè)邏輯表達(dá)式(邏輯運(yùn)算符+算數(shù)運(yùn)算符)若未。選擇運(yùn)算是從元組(行)的角度進(jìn)行的運(yùn)算朱嘴。 - $\theta$連接,$\theta$從兩個(gè)關(guān)系的笛卡爾積中選取屬性之間滿足一定條件的元組。如果兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組萍嬉,并且在結(jié)果中將重復(fù)的屬性去掉乌昔,則成為自然連接。
- 除壤追。
3.2.4 數(shù)據(jù)的規(guī)范化
關(guān)系模型滿足的確定約束條件為范式磕道,根據(jù)滿足約束條件的級(jí)別不同,范式由低到高分為1NF(第一范式)行冰、2NF(第二范式)溺蕉、3NF(第三范式)、BCNF(BC范式)悼做、4NF(第四范式)等疯特。不同級(jí)別范式性質(zhì)不同。
把一個(gè)低一級(jí)的關(guān)系模型分解為高一級(jí)關(guān)系模型的過(guò)程肛走,稱為關(guān)系模型的規(guī)范化辙芍。關(guān)系模型分解必須遵守兩個(gè)準(zhǔn)則。
- 無(wú)損連接性:信息不失真(不增減信息)羹与。
- 函數(shù)依賴保持性:不破壞屬性間存在的依賴關(guān)系故硅。
規(guī)范化的基本思想是逐步消除不合適的函數(shù)依賴,使數(shù)據(jù)庫(kù)中的各個(gè)關(guān)系模型達(dá)到某種程度的分離纵搁。規(guī)范化解決的主要是單個(gè)實(shí)體的質(zhì)量問(wèn)題吃衅,是對(duì)于問(wèn)題域中原始數(shù)據(jù)展現(xiàn)的正規(guī)化處理。
規(guī)范化理論給出了判斷關(guān)系模型優(yōu)劣的理論標(biāo)準(zhǔn)腾誉,幫助預(yù)測(cè)模型可能出現(xiàn)的問(wèn)題徘层,是數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的指南和工具。具體有:
- 用數(shù)據(jù)依賴的概念分析和表示各數(shù)據(jù)項(xiàng)之間的關(guān)系利职。
- 消除E-R圖中的冗余聯(lián)系趣效。
1. 函數(shù)依賴
就像是自變量x確定以后,相應(yīng)的函數(shù)值f(x)也就唯一確定了一樣猪贪,函數(shù)依賴就是衡量和調(diào)整數(shù)據(jù)規(guī)范化的最基礎(chǔ)的理論依據(jù)跷敬。
關(guān)系$R<U$,$F>$中的一個(gè)屬性或一組屬性$K$热押,如果給定給一個(gè)$K$則唯一確定$U$中的一個(gè)元組西傀,也就是$U$函數(shù)完全依賴于$K$,就稱$K$為$R$的碼桶癣。一個(gè)關(guān)系可能有多個(gè)碼拥褂,選中其中一個(gè)作為主碼。
包含在任一碼中的屬性稱為主屬性牙寞,不包含在任何碼中的屬性稱為非主屬性饺鹃。
關(guān)系R中的屬性或?qū)傩越MX不是R的碼,但X是另外一個(gè)關(guān)系模型的碼,稱X是R的外碼悔详。
主碼和外碼就是數(shù)據(jù)庫(kù)中的主鍵和外鍵镊屎。
2. 第一范式
1NF是最低的規(guī)范化要求。如果關(guān)系R中所有屬性的值域都是簡(jiǎn)單域伟端,其元素(即屬性)不可再分杯道,是屬性項(xiàng)而不是屬性組匪煌,那么關(guān)系模型R是第一范式的责蝠,記作$R\in 1NF$。
這一限制是關(guān)系的基本性質(zhì)萎庭,所以任何關(guān)系都必須滿足第一范式霜医。第一范式是實(shí)際數(shù)據(jù)庫(kù)涉及中必須先達(dá)到的,通常稱為數(shù)據(jù)元素的結(jié)構(gòu)化驳规。
滿足第一范式的關(guān)系模型會(huì)有許多重復(fù)值肴敛,并且增加了修改其數(shù)據(jù)時(shí)引起疏漏的可能性。為了消除這種數(shù)據(jù)冗余和避免更新數(shù)據(jù)的遺漏吗购,需要更加規(guī)范的2NF医男。
3. 第二范式
如果一個(gè)關(guān)系R屬于1NF,且所有的非主屬性都完全依賴于主屬性捻勉,則稱之為第二范式镀梭,記作$R\in 2NF$。
4. 第三范式
如果一個(gè)關(guān)系R屬于2NF踱启,且每個(gè)非主屬性不傳遞依賴于主屬性报账,這種關(guān)系是3NF,記作$R\in 3NF$埠偿。
5. BC范式
一般滿足3NF的關(guān)系模型已經(jīng)消除冗余和各種異惩赴眨現(xiàn)象,獲得比較滿意的結(jié)果冠蒋,但無(wú)論是2NF還是3NF都沒(méi)有涉及主屬性間的函數(shù)依賴羽圃,所以有時(shí)仍會(huì)引起一些問(wèn)題。由此引入BC范式抖剿。通常認(rèn)為是第三范式的改進(jìn)统屈。
定義:如果關(guān)系模型$R\in 1NF$,且R中的每一個(gè)函數(shù)依賴關(guān)系中的決定因素都包含碼牙躺,則R是滿足BC范式的關(guān)系愁憔,記作$R\in BCNF$。
當(dāng)一個(gè)關(guān)系模型$R\in BCNF$孽拷,則在函數(shù)依賴范疇內(nèi)吨掌,救認(rèn)為已徹底實(shí)現(xiàn)了分離,消除了插入、刪除的異常膜宋。
結(jié)合1NF窿侈、2NF和3NF、BCNF的內(nèi)涵可概括如下:
- 非主屬性完全函數(shù)依賴于碼(2NF的要求)秋茫。
- 非主屬性不傳遞依賴于任何一個(gè)候選碼(3NF的要求)史简。
- 主屬性對(duì)不包含他的碼完全函數(shù)依賴(BCNF的要求)。
- 沒(méi)有屬性完全函數(shù)依賴于一組非主屬性(BCNF的要求)肛著。
3.2.5 反規(guī)范化
數(shù)據(jù)庫(kù)中的數(shù)據(jù)規(guī)范化的優(yōu)點(diǎn)是減少了數(shù)據(jù)冗余圆兵,節(jié)約了存儲(chǔ)空間,相應(yīng)邏輯和物理的I/O次數(shù)減少枢贿,同時(shí)加快了增刪改查的速度殉农,但是對(duì)完全規(guī)范的數(shù)據(jù)庫(kù)查詢,通常需要更多的連接操作局荚,從而影響查詢速度超凳。因此,有時(shí)為了提高某些查詢或應(yīng)用的性能而破壞規(guī)范規(guī)則耀态,即反規(guī)范化(非規(guī)范化處理)轮傍。常見(jiàn)的反規(guī)范化技術(shù)包括:
- 增加冗余列
指多個(gè)表中具有相同的列,它常用來(lái)在查詢時(shí)避免連接操作首装。 - 增加派生列
指增加的列可以通過(guò)表中其他數(shù)據(jù)計(jì)算生成创夜,它的作用是在查詢時(shí)減少計(jì)算量,從而加快查詢速度簿盅。 - 重新組表
指如果許多用戶需要查看兩個(gè)表連接起來(lái)的結(jié)果數(shù)據(jù)挥下,則把這兩個(gè)表重新組成一個(gè)表來(lái)減少連接而提高性能。 - 分割表
水平分割:根據(jù)一列或多列數(shù)據(jù)的值把數(shù)據(jù)航放到兩個(gè)獨(dú)立的表中桨醋。水平分割通常在如下的情況下使用棚瘟。
- 表很大,分割后可以降低在查詢時(shí)需要讀的數(shù)據(jù)和索引的頁(yè)數(shù)喜最,同時(shí)也降低索引的層數(shù)偎蘸,提高查詢效率。
- 表中的數(shù)據(jù)本來(lái)就有獨(dú)立性瞬内。
- 需要把數(shù)據(jù)存放到多個(gè)介質(zhì)上迷雪。
垂直分割:把主碼和一些列放到一個(gè)表章咧,然后把主碼和另外的列放到另一個(gè)表中赁严。如果一個(gè)表中某些列常用,而另外一些列不常用织鲸,則可以采用垂直分割丘损。另外垂直分割可以使得數(shù)據(jù)行變小拘荡,一個(gè)數(shù)據(jù)頁(yè)就能存放更多的數(shù)據(jù),在查詢時(shí)就會(huì)減少I/O次數(shù)。其缺點(diǎn)是需要管理冗余列春塌,查詢所有數(shù)據(jù)需要連接操作。
3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程是將數(shù)據(jù)庫(kù)系統(tǒng)與現(xiàn)實(shí)世界密切的、有機(jī)的棠耕、協(xié)調(diào)一致的結(jié)合起來(lái)的過(guò)程。數(shù)據(jù)庫(kù)的設(shè)計(jì)質(zhì)量與設(shè)計(jì)者的知識(shí)、經(jīng)驗(yàn)和水平密切相關(guān)哥童。
以數(shù)據(jù)庫(kù)為基礎(chǔ)的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)與其他計(jì)算機(jī)應(yīng)用系統(tǒng)相比往往具有數(shù)據(jù)量龐大匀泊、數(shù)據(jù)保存時(shí)間長(zhǎng)、數(shù)據(jù)關(guān)聯(lián)復(fù)雜错邦、用戶要求多樣化等特點(diǎn)探赫。
數(shù)據(jù)庫(kù)設(shè)計(jì)中面臨的主要困難和問(wèn)題有:
- 同時(shí)具備數(shù)據(jù)庫(kù)知識(shí)和應(yīng)用知識(shí)的人很少型宙。懂得計(jì)算機(jī)與數(shù)據(jù)庫(kù)的人一般都缺乏應(yīng)用知識(shí)和實(shí)際經(jīng)驗(yàn)撬呢,而熟悉應(yīng)用業(yè)務(wù)的人又往往不懂計(jì)算機(jī)和數(shù)據(jù)庫(kù)。
- 項(xiàng)目初期往往不能確定應(yīng)用業(yè)務(wù)的數(shù)據(jù)庫(kù)系統(tǒng)的目標(biāo)妆兑。
- 缺乏完善的設(shè)計(jì)工具和設(shè)計(jì)方法魂拦。
- 需求的不確定性。用戶總是在系統(tǒng)的開(kāi)發(fā)過(guò)程中不斷提出新的要求搁嗓,甚至在數(shù)據(jù)庫(kù)建立之后還會(huì)要求修改數(shù)據(jù)庫(kù)結(jié)構(gòu)或增加新的應(yīng)用芯勘。
- 應(yīng)用業(yè)務(wù)系統(tǒng)千差萬(wàn)別,很難找到一種適合所有業(yè)務(wù)的工具和方法腺逛,這就增加了數(shù)據(jù)庫(kù)自動(dòng)生成工具的難度荷愕。因此,研制適合一切應(yīng)用業(yè)務(wù)的全自動(dòng)數(shù)據(jù)庫(kù)生成工具是不可能的棍矛。
3.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)的方法
目前已有的數(shù)據(jù)庫(kù)設(shè)計(jì)方法可分為四類安疗,即直觀設(shè)計(jì)法、規(guī)范設(shè)計(jì)法够委、計(jì)算機(jī)輔助設(shè)計(jì)法和自動(dòng)化設(shè)計(jì)法荐类。直觀設(shè)計(jì)法又稱單步邏輯設(shè)計(jì)法,它依賴于設(shè)計(jì)者的知識(shí)茁帽、經(jīng)驗(yàn)和技巧玉罐,缺乏工程規(guī)范的支持和科學(xué)依據(jù)屈嗤,設(shè)計(jì)質(zhì)量也不穩(wěn)定,因此越來(lái)越不適應(yīng)信息管理系統(tǒng)發(fā)展的需求吊输。因此饶号,將數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范分為需求分析、概念結(jié)構(gòu)分析季蚂、邏輯結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)4個(gè)階段讨韭。
基于3NF的數(shù)據(jù)庫(kù)設(shè)計(jì)方法基本思想是在需求分析的基礎(chǔ)上,識(shí)別并確認(rèn)數(shù)據(jù)庫(kù)模式中的全部屬性和屬性間的依賴癣蟋,將它們組織成一個(gè)單一的關(guān)系模型透硝,然后再分析模式中不符合3NF的約束條件,用投影和連接的辦法將其分解疯搅,使其達(dá)到3NF條件濒生。
- 設(shè)計(jì)企業(yè)模式。利用上述得到的3NF關(guān)系模型畫(huà)出企業(yè)模式幔欧。具體包括:
- 分析應(yīng)用環(huán)境罪治,并設(shè)定環(huán)境中所使用的各種資料。
- 確定每一種報(bào)表各自所包含的數(shù)據(jù)元素礁蔗。
- 確定數(shù)據(jù)元素之間的關(guān)系觉义,如確定主關(guān)鍵字和一般的數(shù)據(jù)元素。
- 對(duì)每一組或若干組數(shù)據(jù)元素推導(dǎo)出3NF的關(guān)系模型浴井。
- 在3NF關(guān)系模型的基礎(chǔ)上畫(huà)出數(shù)據(jù)庫(kù)的企業(yè)模式晒骇。
- 設(shè)計(jì)數(shù)據(jù)庫(kù)邏輯模式。根據(jù)上一步得到的企業(yè)模式選定數(shù)據(jù)模型磺浙,從而得出適用于某種DBMS的邏輯模式洪囤。根據(jù)邏輯模式導(dǎo)出各種報(bào)表與事務(wù)處理所使用的外模式。
- 設(shè)計(jì)數(shù)據(jù)庫(kù)物理模式(存儲(chǔ)模式)撕氧。根據(jù)數(shù)據(jù)庫(kù)的邏輯模式和給定的計(jì)算機(jī)系統(tǒng)設(shè)計(jì)物理模式瘤缩。
- 評(píng)價(jià)物理模式。對(duì)物理模式估算空間使用情況伦泥,并推算輸入輸出的概率剥啤。必要時(shí)根據(jù)物理模式調(diào)整各種報(bào)表和事務(wù)處理的外模式。對(duì)外模式進(jìn)行存取時(shí)間的估算不脯。
- 數(shù)據(jù)庫(kù)實(shí)現(xiàn)府怯。具體實(shí)現(xiàn)數(shù)據(jù)庫(kù)。
3.3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟
分步設(shè)計(jì)法遵循自頂向下跨新、逐步求精的原則富腊,將數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程分解為若干相互獨(dú)立又相互依存的階段,每一階段采用不同的技術(shù)與工具域帐,解決不同的問(wèn)題赘被,從而將問(wèn)題局部化是整,減少了局部問(wèn)題對(duì)整體設(shè)計(jì)的影響。
在分步設(shè)計(jì)法中民假,通常將數(shù)據(jù)庫(kù)的設(shè)計(jì)分為需求分析浮入、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)庫(kù)物理設(shè)計(jì)4個(gè)階段羊异。
1. 需求分析
指收集和分析用戶對(duì)系統(tǒng)的信息需求和處理需求事秀,得到設(shè)計(jì)系統(tǒng)所必需的需求信息,建立系統(tǒng)說(shuō)明文檔野舶。其目標(biāo)是通過(guò)檢查研究易迹,了解用戶的數(shù)據(jù)要求和處理要求,并按一定格式整理成需求說(shuō)明書(shū)平道。需求說(shuō)明書(shū)是需求分析階段的成果睹欲,也是今后設(shè)計(jì)依據(jù),它包括數(shù)據(jù)庫(kù)所涉及的數(shù)據(jù)一屋、數(shù)據(jù)的特征窘疮、使用的頻率和數(shù)據(jù)量的估計(jì)。這些關(guān)于數(shù)據(jù)的數(shù)據(jù)稱為元數(shù)據(jù)冀墨。在設(shè)計(jì)大型數(shù)據(jù)庫(kù)時(shí)闸衫,這些數(shù)據(jù)通常由數(shù)據(jù)字典來(lái)管理。
2. 概念結(jié)構(gòu)設(shè)計(jì)
是數(shù)據(jù)庫(kù)設(shè)計(jì)的第二階段诽嘉,目標(biāo)是對(duì)需求說(shuō)明書(shū)提供的所有數(shù)據(jù)和處理要求進(jìn)行抽象和綜合處理蔚出,按一定的方法構(gòu)造反映用戶環(huán)境的數(shù)據(jù)及其相互聯(lián)系的概念模型,即用戶的數(shù)據(jù)模型或企業(yè)數(shù)據(jù)模型含懊。這個(gè)數(shù)據(jù)模型與DBMS無(wú)關(guān)身冬。
3. 邏輯結(jié)構(gòu)設(shè)計(jì)
設(shè)計(jì)目標(biāo)是把上一階段得到的與DBMS無(wú)關(guān)的概念數(shù)據(jù)模型轉(zhuǎn)換成等價(jià)的,并為某個(gè)特定的DBMS所接受的邏輯模型所表示的概念模式岔乔,同時(shí)將概念設(shè)計(jì)階段得到的應(yīng)用視圖轉(zhuǎn)換成外部模式,即特定DBMS下的應(yīng)用視圖滚躯。該階段的結(jié)果是DDL腳本雏门。
4. 數(shù)據(jù)庫(kù)物理設(shè)計(jì)
把邏輯設(shè)計(jì)階段得到的滿足用戶需求的已確定的邏輯模型在物理上加以實(shí)現(xiàn),主要內(nèi)容是根據(jù)DBMS提供的各種手段掸掏,設(shè)計(jì)數(shù)據(jù)庫(kù)的存儲(chǔ)形式和存取路徑茁影,即設(shè)計(jì)數(shù)據(jù)庫(kù)的內(nèi)模式或存儲(chǔ)模式。
數(shù)據(jù)庫(kù)設(shè)計(jì)的基本過(guò)程和任何復(fù)雜系統(tǒng)開(kāi)發(fā)一樣丧凤,在每一階段設(shè)計(jì)基本完成后募闲,都要進(jìn)行認(rèn)真的檢查,看是否滿足應(yīng)用需求愿待,是否符合前面已執(zhí)行步驟的要求和滿足后續(xù)步驟的需要浩螺,并分析設(shè)計(jì)結(jié)果的合理性靴患。在每一步設(shè)計(jì)中,都可能發(fā)現(xiàn)前面步驟的遺漏或處理不當(dāng)之處要出,此時(shí)鸳君,往往需要返回去重新處理并修改設(shè)計(jì)和有關(guān)文檔。所以患蹂,數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程通常是一個(gè)反復(fù)修改或颊,反復(fù)設(shè)計(jì)的的迭代過(guò)程。
3.3.3 需求分析
需求分析是數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中的第一步传于,是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的依據(jù)和基礎(chǔ)囱挑。目標(biāo)是通過(guò)對(duì)單位的信息需求和處理要求的調(diào)查分析得到設(shè)計(jì)數(shù)據(jù)庫(kù)所需的數(shù)據(jù)集及其相互聯(lián)系,形成需求說(shuō)明書(shū)沼溜,作為后面各設(shè)計(jì)階段的基礎(chǔ)看铆。因此,這一階段的任務(wù)是:
1. 確認(rèn)需求盛末、確認(rèn)設(shè)計(jì)目標(biāo)
2. 分析和收集數(shù)據(jù)
3. 整理文檔
3.3.4 概念結(jié)構(gòu)設(shè)計(jì)
該階段所涉及的信息不依賴于任何實(shí)際實(shí)現(xiàn)時(shí)的環(huán)境弹惦,即計(jì)算機(jī)的硬件和軟件系統(tǒng)。目標(biāo)是產(chǎn)生一個(gè)用戶易于理解的悄但,反應(yīng)系統(tǒng)信息需求的整體數(shù)據(jù)庫(kù)概念結(jié)構(gòu)棠隐。任務(wù)是,在需求分析中產(chǎn)生的需求說(shuō)明書(shū)的基礎(chǔ)上按照一定的方法抽象成滿足應(yīng)用需求的用戶的信息結(jié)構(gòu)檐嚣,即通常所稱的概念模型助泽。概念結(jié)構(gòu)的設(shè)計(jì)過(guò)程就是正確選擇設(shè)計(jì)策略、設(shè)計(jì)方法和概念數(shù)據(jù)模型并加以實(shí)施的過(guò)程嚎京。
作用是:提供能夠識(shí)別和理解系統(tǒng)要求的框架嗡贺;為數(shù)據(jù)庫(kù)提供一個(gè)說(shuō)明性結(jié)構(gòu),作為設(shè)計(jì)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)鞍帝,即邏輯模型的基礎(chǔ)诫睬。
設(shè)計(jì)策略主要有自底向上、自頂向下帕涌、由里向外和混合策略摄凡。在具體實(shí)現(xiàn)設(shè)計(jì)目標(biāo)時(shí)有兩種極端的策略或方案,一是建立一個(gè)覆蓋整個(gè)單位所有功能域的全局?jǐn)?shù)據(jù)庫(kù)蚓曼,稱之為全局方案或全局策略亲澡;另一種則是對(duì)每一個(gè)應(yīng)用都建立一個(gè)單獨(dú)的數(shù)據(jù)庫(kù),稱為應(yīng)用方案或應(yīng)用策略纫版。
1. 視圖設(shè)計(jì)
在視圖分析法中床绪,局部視圖設(shè)計(jì)的第一步是確定其所屬的范圍,即它所對(duì)應(yīng)的用戶組,然后對(duì)每個(gè)用戶組建立一個(gè)僅由實(shí)體癞己、聯(lián)系及他們的標(biāo)識(shí)碼組成的局部信息結(jié)構(gòu)(局部數(shù)據(jù)模式)框架膀斋,最后再加入有關(guān)的描述信息,形成完整的局部視圖(局部數(shù)據(jù)模式)末秃。這樣做的目的是為了集中精力處理好用戶數(shù)據(jù)需求的主要方面概页,避免因無(wú)關(guān)緊要的描述細(xì)節(jié)而影響局部信息結(jié)構(gòu)的正確性。整個(gè)過(guò)程可分為4個(gè)步驟:確定局部視圖的范圍练慕;識(shí)別實(shí)體及其標(biāo)識(shí)惰匙;確定實(shí)體間的聯(lián)系;分配實(shí)體及聯(lián)系的屬性铃将。
- 確定局部視圖的范圍项鬼。
需求說(shuō)明書(shū)中標(biāo)明的用戶視圖范圍可以作為確定局部視圖范圍的基本依據(jù),但它通常與子模式范圍相對(duì)應(yīng)劲阎。范圍確定的基本原則是:
- 各種局部視圖支持的功能域之間的聯(lián)系應(yīng)最少绘盟。
- 實(shí)體個(gè)數(shù)適量。一個(gè)局部視圖所包含的實(shí)體數(shù)量反映了該局部視圖的復(fù)雜性悯仙,按照信息論中“$7\pm2$”的觀點(diǎn)龄毡,人們?cè)谕粫r(shí)刻可同時(shí)顧及的事情一般在5~9個(gè)之間,其中以6或7最為適當(dāng)锡垄。因此沦零,一個(gè)局部視圖內(nèi)的實(shí)體數(shù)不宜超過(guò)9個(gè)。
- 識(shí)別實(shí)體及其標(biāo)識(shí)货岭。
任務(wù)是在確定的局部視圖范圍內(nèi)路操,識(shí)別哪些數(shù)據(jù)對(duì)象作為局部視圖的基本試題及其標(biāo)識(shí),并定義有關(guān)數(shù)據(jù)對(duì)象在E-R模型中的地位千贯。 - 確定實(shí)體間的聯(lián)系屯仗。
定義聯(lián)系就是對(duì)聯(lián)系語(yǔ)義的仔細(xì)分析,識(shí)別聯(lián)系的類型搔谴,確定實(shí)體在聯(lián)系中的參與度魁袜。
- 二元聯(lián)系的類型與定義。二元聯(lián)系是指兩個(gè)實(shí)體類之間的聯(lián)系己沛。根據(jù)參與聯(lián)系的兩個(gè)實(shí)體類值之間的對(duì)應(yīng)關(guān)系分為一對(duì)一慌核、一對(duì)多即多對(duì)多三種類型。
- 一對(duì)一聯(lián)系申尼。
- 一對(duì)多聯(lián)系。
- 多對(duì)多聯(lián)系
- 實(shí)體內(nèi)部的聯(lián)系
- 多元聯(lián)系的識(shí)別與定義垫桂。兩個(gè)以上的實(shí)體類之間的聯(lián)系稱為多元聯(lián)系师幕。
2. 視圖集成
就是要將反映各用戶組數(shù)據(jù)的局部數(shù)據(jù)模式綜合成單位中某個(gè)確定范圍內(nèi)的單一數(shù)據(jù)視圖,即全局?jǐn)?shù)據(jù)模式,又稱模式匯總霹粥。當(dāng)所有局部視圖設(shè)計(jì)完畢灭将,就可開(kāi)始試圖集成,集成過(guò)程中會(huì)發(fā)生一些沖突后控,沖突的表現(xiàn)和處理策略如下:
- 同名異義庙曙。為了發(fā)現(xiàn)不同視圖間的同名異義問(wèn)題,可以列出所有同名數(shù)據(jù)對(duì)象浩淘,然后逐一辨別其語(yǔ)義捌朴。對(duì)同名異義沖突通常采用換名加以解決,即可對(duì)同名者之一換名张抄,也可對(duì)兩者都給以重新命名砂蔽。識(shí)別語(yǔ)義的主要方法是進(jìn)行值域分析。
- 異名同義署惯。識(shí)別異名同義比較困難左驾,一般由設(shè)計(jì)者對(duì)所有對(duì)象一個(gè)不漏的逐一鑒別。它同樣采用換名的方法解決极谊。若歸并時(shí)試圖將它們合并為一個(gè)對(duì)象诡右,則可以把其中之一的名稱作為合并后的對(duì)象名;若集成后轻猖,他們?nèi)砸詢蓚€(gè)不同的對(duì)象存在帆吻,則可對(duì)其一換名。當(dāng)然蜕依,若原名都不合適氮凝,則可對(duì)兩者都重新命名芹缔。
- 同名不同層次。如果兩個(gè)對(duì)象同名,但其中之一作為一個(gè)視圖中的實(shí)體频蛔,而另一個(gè)是另一視圖中的屬性,則在集成時(shí)會(huì)發(fā)生同名不同層次的沖突误算。解決這種沖突的辦法有兩個(gè)般码,一是將屬性轉(zhuǎn)換為實(shí)體,二是將實(shí)體變換成屬性被丧。
實(shí)體變換為屬性時(shí)通常需要滿足一些特定條件盟戏,例如,該實(shí)體工廠只含有一個(gè)與同名屬性具有共同特征的屬性甥桂,且一定存在一個(gè)與該實(shí)體存在聯(lián)系的另外的實(shí)體柿究。
- 雖同名同義,但對(duì)象聯(lián)系測(cè)度不同黄选。所謂聯(lián)系測(cè)度是指實(shí)體聯(lián)系是一對(duì)一蝇摸、一對(duì)多還是多對(duì)多婶肩。若同名同義對(duì)象在一個(gè)局部視圖中為一對(duì)多聯(lián)系,在另一局部視圖中為多對(duì)多聯(lián)系貌夕,則在集成時(shí)會(huì)發(fā)生聯(lián)系測(cè)度沖突律歼。一般而言,一對(duì)多包含一堆一啡专,多對(duì)多包含一對(duì)多险毁。所以解決這種沖突的辦法往往取較高測(cè)度為集成后的相應(yīng)聯(lián)系的測(cè)度。
3.3.5 邏輯結(jié)構(gòu)設(shè)計(jì)
任務(wù)是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為與其具體機(jī)器上的DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)们童。這一階段是數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的重要階段畔况。
基礎(chǔ)是概念設(shè)計(jì)的結(jié)果,成果應(yīng)包括某DBMS所支持的外模式病附、概念模式及其說(shuō)明和建立外模式和概念模式的DDL程序问窃。
邏輯結(jié)構(gòu)設(shè)計(jì)一般分為以下幾個(gè)步驟:
- 將概念結(jié)構(gòu)向一般關(guān)系模型轉(zhuǎn)化。
- 將第一步得到的結(jié)構(gòu)向特定的DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換完沪。
- 根據(jù)應(yīng)用的需求和具體的DBMS的特征進(jìn)行調(diào)整和完善域庇。
1. 基本E-R模型向關(guān)系模型的轉(zhuǎn)換
基本E-R模型主要包含實(shí)體和聯(lián)系兩個(gè)抽象概念,實(shí)體和聯(lián)系本身還可能附有若干屬性覆积,其轉(zhuǎn)換的基本原則是听皿,實(shí)體和聯(lián)系分別轉(zhuǎn)換成關(guān)系,屬性這轉(zhuǎn)換成相應(yīng)關(guān)系的屬性宽档。
- 一對(duì)一聯(lián)系
- 一對(duì)多聯(lián)系
- 多堆垛聯(lián)系尉姨。由兩個(gè)實(shí)體類之間多對(duì)多聯(lián)系組成的E-R模型向關(guān)系模型轉(zhuǎn)換時(shí),將兩個(gè)實(shí)體類和一個(gè)聯(lián)系類分別轉(zhuǎn)換成關(guān)系吗冤,實(shí)體類的屬性分別轉(zhuǎn)換成對(duì)應(yīng)關(guān)系的屬性又厉,其標(biāo)識(shí)屬性轉(zhuǎn)換為其關(guān)鍵字,由聯(lián)系類轉(zhuǎn)換得到的關(guān)系的屬性有兩個(gè)實(shí)體類的標(biāo)識(shí)屬性和聯(lián)系類本身的屬性組成椎瘟,其關(guān)鍵字是有兩個(gè)聯(lián)系的實(shí)體類的標(biāo)識(shí)屬性組成覆致。
- 多元聯(lián)系。實(shí)體類分別轉(zhuǎn)換為相應(yīng)的關(guān)系肺蔚,三個(gè)實(shí)體類間的多元聯(lián)系轉(zhuǎn)換為以該聯(lián)系名為關(guān)系名的關(guān)系煌妈,關(guān)系的屬性由各實(shí)體的標(biāo)識(shí)屬性及其聯(lián)系的屬性組成,并以各實(shí)體的標(biāo)識(shí)屬性為其關(guān)鍵字宣羊。
- 自聯(lián)系璧诵。是同一實(shí)體集的不同實(shí)體間的聯(lián)系。
- 弱實(shí)體類的轉(zhuǎn)換仇冯。一個(gè)實(shí)體類之宿,如果它的存在依賴于另一個(gè)實(shí)體類,則稱之為弱實(shí)體類苛坚。
2. 數(shù)據(jù)模型的優(yōu)化
優(yōu)化的內(nèi)容是改善數(shù)據(jù)庫(kù)的性能和節(jié)省存儲(chǔ)空間兩個(gè)方面澈缺。
- 改善數(shù)據(jù)庫(kù)性能的考慮坪创。
- 減少連接運(yùn)算炕婶。連接運(yùn)算對(duì)關(guān)系數(shù)據(jù)庫(kù)的查詢速度有著重要的影響姐赡,連接的關(guān)系越多,參與連接的關(guān)系越大柠掂,開(kāi)銷也越大项滑,因而查詢速度也越慢。對(duì)于一些常用的涯贞、性能要求較高的數(shù)據(jù)庫(kù)查詢枪狂,最好是一元查詢,稱為逆規(guī)范化宋渔。
- 減少關(guān)系大小及數(shù)據(jù)量州疾。被查詢的關(guān)系大小對(duì)查詢速度影響較大。為了提高查詢速度皇拣,可以采用水平分割或垂直分割等方法把一個(gè)關(guān)系分成幾個(gè)關(guān)系严蓖,使每個(gè)關(guān)系的數(shù)據(jù)量減少。
- 盡量使用快照氧急】藕快照是某個(gè)用戶所關(guān)心的那部分?jǐn)?shù)據(jù),與視圖一樣是一種導(dǎo)出關(guān)系吩坝,但它與視圖有兩點(diǎn)不同:一是視圖是虛關(guān)系毒姨,數(shù)據(jù)庫(kù)中并不存儲(chǔ)作為視圖的導(dǎo)出關(guān)系,僅僅保留它的定義钉寝,快照則是一個(gè)由系統(tǒng)事先生成后保留在數(shù)據(jù)庫(kù)中的實(shí)關(guān)系弧呐;二是視圖隨數(shù)據(jù)當(dāng)前值的變化而變化,快照則不隨原來(lái)關(guān)系中數(shù)據(jù)的改變而及時(shí)改變嵌纲。它只反映數(shù)據(jù)庫(kù)中某一時(shí)刻的狀態(tài)俘枫,不反應(yīng)數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài)≌钍荩快照不是一成不變的崩哩,它可以由系統(tǒng)周期性的刷新,或由用戶用命令刷新言沐。
- 節(jié)省存儲(chǔ)空間的一些考慮邓嘹。
- 縮小每個(gè)屬性占用的空間。兩種方法:用編碼和用縮寫(xiě)符號(hào)表示屬性险胰。
- 采用假屬性汹押。可以減少重復(fù)數(shù)據(jù)占用的存儲(chǔ)空間起便。
3.3.6 物理結(jié)構(gòu)設(shè)計(jì)
數(shù)據(jù)庫(kù)在實(shí)際的物理設(shè)備上的存儲(chǔ)結(jié)構(gòu)和存取方法稱為數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)棚贾。數(shù)據(jù)庫(kù)物理設(shè)計(jì)是利用已確定的邏輯結(jié)構(gòu)及DBMS提供的方法窖维、技術(shù),以較優(yōu)的存儲(chǔ)結(jié)構(gòu)妙痹、數(shù)據(jù)存取路徑铸史、合理的數(shù)據(jù)存儲(chǔ)位置及存儲(chǔ)分配,設(shè)計(jì)出一個(gè)高效的怯伊、可實(shí)現(xiàn)的物理數(shù)據(jù)庫(kù)結(jié)構(gòu)琳轿。數(shù)據(jù)庫(kù)的物理設(shè)計(jì)完全依賴于給定的硬件環(huán)境和數(shù)據(jù)庫(kù)產(chǎn)品。
為設(shè)計(jì)出一個(gè)較好的存儲(chǔ)模式耿芹,設(shè)計(jì)者必須了解一下幾個(gè)方面的問(wèn)題崭篡,做到心中有數(shù)。
- 了解并熟悉應(yīng)用要求吧秕,包括各個(gè)用戶對(duì)應(yīng)的數(shù)據(jù)視圖琉闪,即數(shù)據(jù)庫(kù)的外模式(子模式),分清哪些是主要的應(yīng)用砸彬,了解各個(gè)應(yīng)用的使用方式颠毙、數(shù)據(jù)量和處理頻率等,以便對(duì)時(shí)間和空間進(jìn)行平衡拿霉,并保證優(yōu)先滿足應(yīng)用的時(shí)間要求吟秩。
- 熟悉使用的DBMS的性能,包括DBMS的功能绽淘,提供的物理環(huán)境涵防、存儲(chǔ)結(jié)果、存取方法和可利用的工具沪铭。
- 了解存放數(shù)據(jù)的外存設(shè)備的特性壮池,如物理存儲(chǔ)區(qū)域的劃分原則,物理塊的大小等有關(guān)規(guī)定及I/O特性等杀怠。
3.4 事務(wù)管理
數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行的基本工作單位是事務(wù)椰憋。事務(wù)相當(dāng)于操作系統(tǒng)中的進(jìn)程,是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列赔退,要么全做橙依,要么全不做。數(shù)據(jù)庫(kù)具有以下特性:
- 原子性Atomicity:數(shù)據(jù)庫(kù)的邏輯工作單位硕旗。
- 一致性Consistency:使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)窗骑。
- 隔離性Isolation:不能被其他事務(wù)干擾。
- 持久性Durability:一旦提交漆枚,改變就是永久性的创译。
數(shù)據(jù)庫(kù)事務(wù)的使用方式,這里就不寫(xiě)了墙基。
3.4.1 并發(fā)控制
在多用戶共享系統(tǒng)中软族,許多事務(wù)是可能同時(shí)對(duì)同一數(shù)據(jù)進(jìn)行操作刷喜,稱為“并發(fā)操作”。
數(shù)據(jù)庫(kù)并發(fā)操作帶來(lái)的問(wèn)題有:丟失更新問(wèn)題立砸、不一致分析問(wèn)題(讀過(guò)時(shí)的數(shù)據(jù))掖疮、依賴于未提交更新的問(wèn)題(讀了“臟”數(shù)據(jù))。
處理并發(fā)控制的主要方法是采用封鎖技術(shù)仰禽。它有兩種類型:排他型封鎖(X封鎖)和共享型封鎖(S封鎖)氮墨,分別介紹如下:
- 排他型封鎖(X封鎖)。如果事務(wù)T對(duì)數(shù)據(jù)A(可以是數(shù)據(jù)項(xiàng)吐葵、記錄、數(shù)據(jù)集乃至整個(gè)數(shù)據(jù)庫(kù))實(shí)現(xiàn)了X封鎖桥氏,那么只允許事務(wù)T讀取和修改數(shù)據(jù)A温峭,其他事務(wù)要等事務(wù)T解除X封鎖之后,才能對(duì)數(shù)據(jù)A實(shí)現(xiàn)任何類型的封鎖字支。
- 共享型封鎖(S封鎖)凤藏。X封鎖只允許一個(gè)事務(wù)獨(dú)鎖和使用數(shù)據(jù),要求太嚴(yán)堕伪,需要適當(dāng)放寬揖庄,例如可以允許并發(fā)讀,但不允許修改欠雌,這就產(chǎn)生了S封鎖概念蹄梢。S封鎖的含義是:如果事務(wù)T對(duì)數(shù)據(jù)A實(shí)現(xiàn)了S封鎖,那么允許事務(wù)T讀取數(shù)據(jù)A富俄,但不能修改數(shù)據(jù)A禁炒,在所有S封鎖解除前決不允許任何事務(wù)對(duì)數(shù)據(jù)A實(shí)現(xiàn)X封鎖。
在多個(gè)事務(wù)并發(fā)執(zhí)行的系統(tǒng)中霍比,主要采取封鎖協(xié)議來(lái)進(jìn)行處理幕袱。
- 一級(jí)封鎖協(xié)議。事務(wù)T在修改數(shù)據(jù)R之前必須先對(duì)其加X(jué)鎖悠瞬,直到事務(wù)結(jié)束才釋放们豌。一級(jí)封鎖協(xié)議可防止丟失修改,并保證事務(wù)T是可以恢復(fù)的浅妆。但不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)望迎。
- 二級(jí)封鎖協(xié)議。一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前先對(duì)其加S鎖狂打,讀完后即可釋放S鎖擂煞。二級(jí)封鎖協(xié)議可防止丟失修改,還可防止讀“臟”數(shù)據(jù)趴乡,但不能保證可重復(fù)讀对省。
- 三級(jí)封鎖協(xié)議蝗拿。一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前先對(duì)其加S鎖,直到事務(wù)結(jié)束才釋放蒿涎。三級(jí)封鎖協(xié)議可以方式丟失修改哀托、防止讀”臟“數(shù)據(jù)與防止數(shù)據(jù)重復(fù)讀。
- 兩段鎖協(xié)議劳秋。所有事務(wù)必須分兩個(gè)階段對(duì)數(shù)據(jù)項(xiàng)加鎖和解鎖仓手。其中擴(kuò)展階段是在對(duì)任何數(shù)據(jù)進(jìn)行讀、寫(xiě)操作之前玻淑,首先要申請(qǐng)并獲得對(duì)該數(shù)據(jù)的封鎖嗽冒;收縮階段是在釋放一個(gè)封鎖之后,事務(wù)不能再申請(qǐng)和獲得任何其他封鎖补履。若并發(fā)執(zhí)行的所有事務(wù)均遵守兩段封鎖協(xié)議添坊,則對(duì)這些事務(wù)的任何并發(fā)調(diào)度策略都是可串行化的。遵守兩段封鎖協(xié)議的事務(wù)可能發(fā)生死鎖箫锤。
下面討論封鎖的粒度贬蛙。所謂封鎖的粒度即是被封鎖數(shù)據(jù)目標(biāo)的大小。在關(guān)系數(shù)據(jù)庫(kù)中阳准,封鎖粒度有屬性值野蝇、屬性值集位喂、元組、關(guān)系塑崖、某索引項(xiàng)(或整個(gè)索引)规婆、整個(gè)關(guān)系數(shù)據(jù)庫(kù)掘鄙、物理頁(yè)(塊)等幾種操漠。
封鎖粒度小則并發(fā)性高撞秋,但開(kāi)銷大;封鎖粒度大則并發(fā)性低舅列,但開(kāi)銷小。
采用封鎖的方法會(huì)帶來(lái)死鎖問(wèn)題宠叼。
- 預(yù)防法伸蚯。采用一定的操作方式以保證避免死鎖的出現(xiàn)摇幻,順序申請(qǐng)法、一次申請(qǐng)法等即是此類方法狂芋。所謂順序申請(qǐng)法是指對(duì)封鎖對(duì)象按序編號(hào),在用戶申請(qǐng)封鎖時(shí)必須按編號(hào)順序(從小到大或反之)申請(qǐng),這樣能避免死鎖發(fā)生死陆。所謂一次申請(qǐng)法即是指用戶在一個(gè)完整操作過(guò)程中必須一次性申請(qǐng)它所需要的所有封鎖别凤,并在操作結(jié)束后一次性歸還所有封鎖,這樣也能避免死鎖的發(fā)生。
- 死鎖的解除法均唉。此方法允許產(chǎn)生死鎖,并在死鎖產(chǎn)生后通過(guò)解鎖程序以解除死鎖。這種方法需要有兩個(gè)程序镜会,一是死鎖檢測(cè)程序昼伴,用它測(cè)定死鎖是否發(fā)生圃郊,另一是解鎖程序,一旦經(jīng)測(cè)定系統(tǒng)已經(jīng)產(chǎn)生死鎖則啟動(dòng)解鎖程序以解除死鎖泞遗。
3.4.2 故障與恢復(fù)
1. 數(shù)據(jù)庫(kù)故障
數(shù)據(jù)庫(kù)的故障可以用事務(wù)的故障來(lái)表示,主要分為四類:
- 事務(wù)故障晦毙。事務(wù)在運(yùn)行過(guò)程中由于某些原因,未能運(yùn)行至正常終止點(diǎn)就被撤銷。
- 系統(tǒng)故障耻卡。系統(tǒng)在運(yùn)行過(guò)程中,由于某種原因,致使事務(wù)在執(zhí)行過(guò)程中以非正常方式終止怖喻,這時(shí)內(nèi)存中的信息丟失肌似,但是存儲(chǔ)在外存儲(chǔ)設(shè)備上的數(shù)據(jù)不會(huì)受影響漱挎。
- 介質(zhì)故障私爷。系統(tǒng)在運(yùn)行過(guò)程中,由于某種硬件故障,是存儲(chǔ)在外存儲(chǔ)上的數(shù)據(jù)部分損失或全部損失浪听。
- 計(jì)算機(jī)病毒
在數(shù)據(jù)庫(kù)系統(tǒng)中,恢復(fù)的基本含義就是恢復(fù)數(shù)據(jù)庫(kù)本身克伊。也就是說(shuō)季春,在發(fā)生某種故障使數(shù)據(jù)庫(kù)當(dāng)前的狀態(tài)已經(jīng)不再正確時(shí)耘拇,把數(shù)據(jù)庫(kù)恢復(fù)到已知為正確的某一狀態(tài)。目前數(shù)據(jù)庫(kù)中最常用的恢復(fù)方式是轉(zhuǎn)儲(chǔ)和登記日志文件。
2. 故障的恢復(fù)
- 事務(wù)故障的恢復(fù)【剑恢復(fù)子系統(tǒng)應(yīng)對(duì)此事務(wù)做撤銷處理婉刀。事務(wù)故障的恢復(fù)是系統(tǒng)系統(tǒng)完成的溯街,不需要用戶敢于挥等,步驟如下:
- 反向掃描文件日志郭宝,查找該事務(wù)的更新操作榄檬。
- 對(duì)該事務(wù)的更新操作執(zhí)行逆操作。
- 繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理冈绊。
- 如期處理下去,直至讀到此事務(wù)的開(kāi)始標(biāo)記,事務(wù)故障恢復(fù)完成叹螟。
- 系統(tǒng)故障的恢復(fù)。系統(tǒng)故障發(fā)生時(shí)寝殴,造成數(shù)據(jù)庫(kù)不一致?tīng)顟B(tài)的原因有兩個(gè):一是由于一些未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新已寫(xiě)入數(shù)據(jù)庫(kù);二是由于一些已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新還留在緩沖區(qū)沒(méi)來(lái)得及寫(xiě)入數(shù)據(jù)庫(kù)致稀。系統(tǒng)故障的恢復(fù)是在重新啟動(dòng)時(shí)自動(dòng)完成的,不需要用戶干預(yù)次屠,步驟如下:
- 正向掃描日志文件供汛,找出在故障發(fā)生前已經(jīng)提交的事務(wù)祝沸,將其事務(wù)標(biāo)記記入重做(Redo)隊(duì)列嘹吨。同時(shí)找出故障發(fā)生時(shí)尚未完成的事務(wù),將其事務(wù)標(biāo)記記入撤銷(Undo)隊(duì)列挡鞍。
- 對(duì)撤銷隊(duì)列中的各個(gè)事務(wù)進(jìn)行撤銷處理:反向掃描日志文件,對(duì)每個(gè)Undo事務(wù)的更新操作進(jìn)行逆操作忘伞。
- 對(duì)重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行重做處理:正向掃描日志文件训措,對(duì)每個(gè)Redo事務(wù)重新執(zhí)行日志文件登記的操作潜慎。
- 介質(zhì)故障與病毒破壞的恢復(fù)泳梆。在發(fā)生介質(zhì)故障和遭病毒破壞時(shí),磁盤(pán)上的物理數(shù)據(jù)庫(kù)被破壞抄罕,這是的恢復(fù)操作可分為三步:
- 裝入最新的數(shù)據(jù)庫(kù)后備副本壶运,是數(shù)據(jù)庫(kù)恢復(fù)到最近一次轉(zhuǎn)儲(chǔ)時(shí)的一致性狀態(tài)辕翰。
- 從故障點(diǎn)開(kāi)始反向讀日志文件,找出已提交事務(wù)標(biāo)識(shí)將其記錄重做隊(duì)列催享。
- 從起始點(diǎn)開(kāi)始正向讀取日志文件,根據(jù)重做隊(duì)列中的記錄昆烁,重做所有已完成事務(wù)薪鹦,將數(shù)據(jù)庫(kù)恢復(fù)至故障前某一時(shí)刻的一致?tīng)顟B(tài)。
- 具有檢查點(diǎn)的恢復(fù)技術(shù)。檢查點(diǎn)記錄的內(nèi)容可包括:
- 建立檢查點(diǎn)時(shí)刻所有正在執(zhí)行的事務(wù)清單。
- 這些事務(wù)最近一個(gè)日志記錄的地址。
采用檢查點(diǎn)的恢復(fù)步驟如下: - 從重新開(kāi)始文件中找到最后一個(gè)檢查點(diǎn)記錄在日志文件中的位置麸祷,由該地址在日志文件中找到最后一個(gè)檢查點(diǎn)記錄。
- 由該檢查點(diǎn)記錄得到檢查點(diǎn)建立時(shí)所有正在執(zhí)行的事務(wù)清單隊(duì)列(A)。
- 建立重做隊(duì)列(R)和撤銷隊(duì)列(U)啊胶,把A隊(duì)列放入U(xiǎn)隊(duì)列中痴晦,R隊(duì)列為空。
- 從檢查點(diǎn)開(kāi)始正向掃描日志文件琳彩,若有新開(kāi)始的事務(wù)T1誊酌,則把T1放入U(xiǎn)隊(duì)列,若有提交的事務(wù)T2露乏,則把T2從U隊(duì)列移到R隊(duì)列碧浊,直至日志文件結(jié)束。
- 對(duì)U隊(duì)列的每個(gè)事務(wù)執(zhí)行Undo操作瘟仿,對(duì)R隊(duì)列的每個(gè)事務(wù)執(zhí)行Redo操作箱锐。
DBA要做的基本操作是:
- 重裝最近轉(zhuǎn)儲(chǔ)的后援副本。
- 運(yùn)行日志文件劳较,執(zhí)行系統(tǒng)提供的恢復(fù)命令驹止。
3.5 備份與恢復(fù)
備份和恢復(fù)計(jì)劃的制定要遵循以下兩個(gè)原則:
- 保證數(shù)據(jù)丟失的情況盡量少或完全不丟失,因?yàn)樾詢r(jià)比的要求观蜗,這要取決于顯示系統(tǒng)的具體要求臊恋。
- 備份和恢復(fù)時(shí)間盡量短,保證系統(tǒng)最大的可用性墓捻。
數(shù)據(jù)庫(kù)備份按照不同方式可分為多種抖仅,這里按備份內(nèi)容可以分為物理備份和邏輯備份兩類。
物理備份是在操作系統(tǒng)層面上對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)文件進(jìn)行備份,物理備份分為冷備份和熱備份兩種撤卢。冷備份是將數(shù)據(jù)庫(kù)正常關(guān)閉环凿,在停止?fàn)顟B(tài)下利用操作系統(tǒng)的copy、cp放吩、tar智听、cpio等命令將數(shù)據(jù)庫(kù)的文件全部備份下來(lái),當(dāng)數(shù)據(jù)庫(kù)發(fā)生故障時(shí)渡紫,將數(shù)據(jù)文件復(fù)制回來(lái)瞭稼,進(jìn)行恢復(fù)。熱備份也分為兩種腻惠,一種是不關(guān)閉數(shù)據(jù)庫(kù),將數(shù)據(jù)庫(kù)中需要備份的數(shù)據(jù)文件依次置于備份狀態(tài)欲虚,相對(duì)保持靜止集灌,然后再利用操作系統(tǒng)的copy、cp复哆、tar欣喧、cpio等命令將數(shù)據(jù)庫(kù)的文件備份下來(lái),備份完畢后再將數(shù)據(jù)文件恢復(fù)為正常狀態(tài)梯找,當(dāng)數(shù)據(jù)庫(kù)發(fā)生故障時(shí)唆阿,恢復(fù)方法同冷備份一樣。熱備份的另外一種方式是利用備份軟件在數(shù)據(jù)庫(kù)正常運(yùn)行的情況下锈锤,將數(shù)據(jù)庫(kù)中的數(shù)據(jù)文件備份出來(lái)驯鳖。
為了提高物理備份的效率,通常將完全久免、增量浅辙、累積三種備份方式相結(jié)合。完全備份是將數(shù)據(jù)庫(kù)中的內(nèi)容全部備份阎姥,作為增量记舆、累積的基礎(chǔ);增量備份是只備份上次完全呼巴、增量或累積備份以來(lái)修改的數(shù)據(jù)泽腮;累積備份是備份自上次完全或累計(jì)備份以來(lái)修改過(guò)的數(shù)據(jù)。一個(gè)備份周期通常由一個(gè)完全備份和多個(gè)增量衣赶、累積備份組成诊赊。由于增量或累積備份導(dǎo)出的數(shù)據(jù)少,所以其導(dǎo)出的文件較小屑埋,所需要的時(shí)間較少豪筝。利用一個(gè)完全備份和多個(gè)增量、累積備份恢復(fù)數(shù)據(jù)庫(kù)的步驟如下:
- 首先從完全備份恢復(fù)數(shù)據(jù)庫(kù)。
- 然后按照時(shí)間順序從早到晚依次導(dǎo)入多個(gè)增量和累積備份文件续崖。
邏輯備份是指利用各數(shù)據(jù)庫(kù)系統(tǒng)自帶的工具軟件備份和恢復(fù)數(shù)據(jù)庫(kù)的內(nèi)容多艇。
3.6 分布式數(shù)據(jù)庫(kù)系統(tǒng)
3.6.1 分布式數(shù)據(jù)庫(kù)的概念
是相對(duì)于集中式數(shù)據(jù)庫(kù)系統(tǒng)而言的,是將數(shù)據(jù)庫(kù)技術(shù)和網(wǎng)絡(luò)技術(shù)向結(jié)合的產(chǎn)物像吻。分布式數(shù)據(jù)庫(kù)DDB比較確切的定義是:分布式數(shù)據(jù)庫(kù)是由一組數(shù)據(jù)組成的峻黍,這組數(shù)據(jù)分布在計(jì)算機(jī)網(wǎng)絡(luò)的不同計(jì)算機(jī)上,網(wǎng)絡(luò)中的每個(gè)結(jié)點(diǎn)具有獨(dú)立處理的能力拨匆,稱為場(chǎng)地自治姆涩,它可以執(zhí)行局部應(yīng)用,同時(shí)惭每,每個(gè)結(jié)點(diǎn)也能通過(guò)網(wǎng)絡(luò)通信子系統(tǒng)執(zhí)行全局應(yīng)用骨饿。負(fù)責(zé)分布式數(shù)據(jù)庫(kù)的建立、查詢休吠、更新希太、復(fù)制邀跃、管理和維護(hù)的軟件唁毒,稱為分布式數(shù)據(jù)庫(kù)管理系統(tǒng)DDBMS毡鉴。分布式數(shù)據(jù)庫(kù)管理系統(tǒng)保證分布式數(shù)據(jù)庫(kù)中數(shù)據(jù)的物理分布對(duì)用戶的透明性潮售。一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)組成的計(jì)算機(jī)系統(tǒng)边器,在配置了分布式數(shù)據(jù)庫(kù)管理系統(tǒng)十酣,并在其上建立了分布式數(shù)據(jù)庫(kù)和相應(yīng)的應(yīng)用程序后,救稱其為分布式數(shù)據(jù)庫(kù)系統(tǒng)DDBS燥翅。
1. 分布式數(shù)據(jù)庫(kù)的特點(diǎn)
- 數(shù)據(jù)庫(kù)的分布性杨名。分布式數(shù)據(jù)庫(kù)中的數(shù)據(jù)分布于網(wǎng)絡(luò)中的各個(gè)結(jié)點(diǎn)仔役。
- 統(tǒng)一性乘盼。主要表現(xiàn)在數(shù)據(jù)在邏輯上的統(tǒng)一性和數(shù)據(jù)在管理上的統(tǒng)一性兩個(gè)方面蓖柔。
- 透明性臭增。用戶在使用分布式數(shù)據(jù)庫(kù)系統(tǒng)時(shí),數(shù)據(jù)在物理上的存儲(chǔ)對(duì)用戶是透明的宾毒。同使用集中式數(shù)據(jù)庫(kù)一樣。
與集中式數(shù)據(jù)庫(kù)相比咬荷,分布式數(shù)據(jù)庫(kù)具有下列優(yōu)點(diǎn):
- 堅(jiān)固性好沪么。即系統(tǒng)的可靠性和可用性好。
- 可擴(kuò)充性好桃笙⌒檠可根據(jù)發(fā)展的需要增減結(jié)點(diǎn),或?qū)ο到y(tǒng)重新配置初狰。
- 可改善性能俊马。在分布式數(shù)據(jù)庫(kù)中可就近分布柴我,合理的冗余的原則來(lái)分布各個(gè)結(jié)點(diǎn)上的數(shù)據(jù)解寝,構(gòu)造分布式數(shù)據(jù)庫(kù)觉增,是大部分?jǐn)?shù)據(jù)可以就近訪問(wèn)溉旋,避免了集中式數(shù)據(jù)庫(kù)的瓶頸問(wèn)題硫狞,減少了系統(tǒng)的響應(yīng)時(shí)間翎苫,提高了系統(tǒng)的效率,而且也降低了通信費(fèi)用淤堵。
- 自治性好枝冀。數(shù)據(jù)可以分散管理或舞,同意鞋套汗侵,即系統(tǒng)中各結(jié)點(diǎn)的數(shù)據(jù)操作和相互作用是高度自治的踱阿,不存在主從控制。
同樣同集中式數(shù)據(jù)庫(kù)相比焰手,分布式數(shù)據(jù)庫(kù)也有集中式數(shù)據(jù)庫(kù)所沒(méi)有的問(wèn)題糟描。首先,異構(gòu)數(shù)據(jù)庫(kù)的集成問(wèn)題是一項(xiàng)比較復(fù)雜的技術(shù)問(wèn)題书妻,目前還很難用一個(gè)通用的分布式數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)解決這一問(wèn)題船响。其次,如果數(shù)據(jù)庫(kù)設(shè)計(jì)的不好躲履,數(shù)據(jù)分布不合理见间,以致遠(yuǎn)距離訪問(wèn)過(guò)多,尤其是分布連接操作過(guò)多工猜,不但不能改善性能米诉,反而會(huì)使性能降低。
2. 分布式數(shù)據(jù)庫(kù)的分類
- 按DDBMS軟件同構(gòu)度來(lái)分篷帅,當(dāng)所有服務(wù)器軟件(或每個(gè)DDBMS)和所有的客戶軟件均用相同的軟件時(shí)稱為同構(gòu)型分布式數(shù)據(jù)庫(kù)史侣;反之,稱為異構(gòu)型分布式數(shù)據(jù)庫(kù)魏身。
- 按局部自治度來(lái)分惊橱。當(dāng)對(duì)DDBMS的存取必須通過(guò)客戶軟件,則系統(tǒng)稱為無(wú)局部自治箭昵;當(dāng)局部事務(wù)允許對(duì)服務(wù)器軟件進(jìn)行直接存取税朴,則系統(tǒng)稱為有一定的局部自治。自治的兩個(gè)分別是無(wú)局部自治和聯(lián)邦型DDBMS霍城多數(shù)據(jù)庫(kù)系統(tǒng)家制。多數(shù)據(jù)庫(kù)系統(tǒng)本質(zhì)上是集中式和分布式的混合體:對(duì)一個(gè)局部用戶而言掉房,它是自治的,那么是一個(gè)DBS慰丛;對(duì)一個(gè)全局用戶而言卓囚,則是一個(gè)分布式DBS,但這個(gè)DDBS沒(méi)有全局概念模式诅病,只有一個(gè)由各局部數(shù)據(jù)庫(kù)提供給全局允許共享的有關(guān)模式的集成哪亿。
- 按分布透明度來(lái)分粥烁。分布式透明度的另一個(gè)概念是模式集成度。若用戶可以對(duì)集成模式操作不需要涉及任何片段蝇棉、重復(fù)讨阻、分布等信息,則這類DDBMS稱為具有高度分布透明(或高度模式集成)篡殷;若用戶必須知道所有關(guān)于片段钝吮、重復(fù)、分布等信息時(shí)則這類DDBMS沒(méi)有分布透明板辽,沒(méi)有模式集成度奇瘦。當(dāng)系統(tǒng)不提供分布透明,用戶查詢時(shí)必須指定特定的場(chǎng)地劲弦,特定的片段等信息耳标。當(dāng)然DDBMS也可以部分分布透明。
3. 分布式數(shù)據(jù)庫(kù)的目標(biāo)
- 局部結(jié)點(diǎn)自治性邑跪。
- 不依賴中心結(jié)點(diǎn)次坡。即每個(gè)結(jié)點(diǎn)具有全局字典管理、查詢處理画畅、并發(fā)控制和恢復(fù)控制等功能砸琅。
- 能連續(xù)操作。該目標(biāo)使中斷分布式數(shù)據(jù)庫(kù)服務(wù)情況減至最少轴踱,當(dāng)一個(gè)新場(chǎng)地合并到現(xiàn)有的分布式系統(tǒng)或從分布式系統(tǒng)中撤離一個(gè)場(chǎng)地不會(huì)導(dǎo)致任何不必要的服務(wù)中斷明棍;在分布式系統(tǒng)中可以動(dòng)態(tài)的建立和消除片段,而不中止任何組成部分的場(chǎng)地和數(shù)據(jù)庫(kù)寇僧;應(yīng)盡可能在不使整個(gè)系統(tǒng)停機(jī)的情況下對(duì)組成分布式系統(tǒng)的場(chǎng)地的DBMS進(jìn)行升級(jí)摊腋。
- 具有位置獨(dú)立性(或稱位置透明性)。
- 分片獨(dú)立性(或稱分片透明性)嘁傀。將給定的關(guān)系分成若干塊或片兴蒸,提高系統(tǒng)的處理性能。
- 數(shù)據(jù)復(fù)制獨(dú)立性细办。指將給定的關(guān)系(或片段)可在物理級(jí)用許多不同存儲(chǔ)副本或復(fù)制品在不同場(chǎng)地上存儲(chǔ)橙凳。
- 支持分布式查詢處理。在分布式數(shù)據(jù)庫(kù)系統(tǒng)中有三類查詢:局部查詢笑撞、遠(yuǎn)程查詢和全局查詢岛啸。局部查詢和遠(yuǎn)程查詢僅涉及單個(gè)結(jié)點(diǎn)的數(shù)據(jù),查詢優(yōu)化技術(shù)是集中式數(shù)據(jù)庫(kù)的查詢優(yōu)化技術(shù)茴肥。全局查詢涉及多個(gè)結(jié)點(diǎn)上的數(shù)據(jù)坚踩,起查詢處理和優(yōu)化要復(fù)雜的多。
- 支持分布事務(wù)管理瓤狐。事務(wù)管理有兩個(gè)主要方面:恢復(fù)控制和并發(fā)控制瞬铸。在分布式系統(tǒng)中批幌,單個(gè)事務(wù)會(huì)涉及多個(gè)場(chǎng)地上的代碼執(zhí)行,會(huì)涉及多個(gè)場(chǎng)地上的更新嗓节,可以說(shuō)每個(gè)事務(wù)是由多個(gè)“代理”組成的荧缘,每個(gè)代理代表在給定場(chǎng)地上的給定事務(wù)上執(zhí)行的過(guò)程。在分布式系統(tǒng)中必須保證事務(wù)的代理集或者全部一致交付拦宣,或者全部一致回滾截粗。
- 具有硬件獨(dú)立性。
- 具有操作系統(tǒng)獨(dú)立性鸵隧。
- 具有網(wǎng)絡(luò)獨(dú)立性绸罗。
- 具有DBMS獨(dú)立性。實(shí)現(xiàn)對(duì)異構(gòu)型分布式系統(tǒng)的支持掰派。
一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)从诲,對(duì)于用戶來(lái)說(shuō)左痢,應(yīng)當(dāng)看上去想一個(gè)非分布式系統(tǒng)靡羡。
3.6.2 分布式數(shù)據(jù)庫(kù)的架構(gòu)
模式從整體上可以分為兩大部分:下半部分是集中式數(shù)據(jù)庫(kù)的模式結(jié)構(gòu),代表了各局部場(chǎng)地上局部數(shù)據(jù)庫(kù)系統(tǒng)的基本結(jié)構(gòu)俊性;上半部分是分布式數(shù)據(jù)庫(kù)系統(tǒng)增加的模式級(jí)別略步。
- 全局外模式。是全局應(yīng)用的用戶視圖定页,是全局概念模式的子集趟薄。
- 全局概念模式。定義分布式數(shù)據(jù)庫(kù)中數(shù)據(jù)的整體邏輯架構(gòu)典徊,數(shù)據(jù)如同沒(méi)有分布一樣杭煎,可用傳統(tǒng)的集中式數(shù)據(jù)庫(kù)中所采用的方法定義。
- 分片模式卒落。每一個(gè)全局關(guān)系可以劃分為若干不相交的部分羡铲,每一個(gè)部分稱為一個(gè)片段,即“數(shù)據(jù)分片”儡毕。分片模式就是定義片段及全局關(guān)系到片段的映像也切,這種映像是一對(duì)多的,即每個(gè)片段來(lái)自一個(gè)全局關(guān)系腰湾,而一個(gè)全局關(guān)系可對(duì)應(yīng)多個(gè)片段雷恃。
- 分布模式。定義片段的存放結(jié)點(diǎn)费坊。分布模式的映像類型確定了分布式數(shù)據(jù)庫(kù)是冗余的還是非冗余的倒槐。若映像是一對(duì)多的,即一個(gè)片段分配到多個(gè)結(jié)點(diǎn)上存放附井,則是冗余的分布式數(shù)據(jù)庫(kù)导犹,否則是不冗余的唱凯。
根據(jù)分布模式提供的信息,一個(gè)全局查詢可以分解為若干子查詢谎痢,每一子查詢要訪問(wèn)的數(shù)據(jù)都屬于同一場(chǎng)地的局部數(shù)據(jù)庫(kù)磕昼。
分片模式和分布模式均是全聚德,分布式數(shù)據(jù)庫(kù)中增加的這些模式和相應(yīng)的映像是的分布式數(shù)據(jù)庫(kù)系統(tǒng)具有了分布透明性节猿。 - 局部概念模式票从。一個(gè)全局關(guān)系經(jīng)邏輯劃分成一個(gè)或多個(gè)邏輯片段,每個(gè)邏輯片段被分配在一個(gè)或多個(gè)場(chǎng)地上滨嘱,稱為該邏輯片段在某場(chǎng)地上的物理映像或物理片段峰鄙。分配在同一場(chǎng)地上的同一個(gè)全局概念模式的若干片段(物理片段)構(gòu)成了該全局模式在該場(chǎng)地上的一個(gè)物理映像。
一個(gè)場(chǎng)地上的局部概念模式是該場(chǎng)地上所有全局概念模式在該場(chǎng)地上物理映像的集合太雨。
全局概念模式與場(chǎng)地獨(dú)立吟榴,而局部概念模式與場(chǎng)地有關(guān)。 - 局部?jī)?nèi)模式囊扳。是DDB中關(guān)于物理數(shù)據(jù)庫(kù)的描述吩翻,類似于集中式DB中的內(nèi)模式,但起描述的內(nèi)容不僅包含局部本場(chǎng)地的數(shù)據(jù)的存儲(chǔ)描述锥咸,還包括全局?jǐn)?shù)據(jù)在本場(chǎng)地的存儲(chǔ)描述狭瞎。
在六層模式中,全局概念模式搏予、分片模式和分布模式是與場(chǎng)地特征無(wú)關(guān)的熊锭,是全局的,因此他們不依賴于局部DBMS的數(shù)據(jù)模型雪侥。在低層次上碗殷,需要把物理映像映射成由局部DBMS支持的數(shù)據(jù)模型。這種映像由局部映射模式完成速缨。
這種分層的模式結(jié)構(gòu)為理解DDB提供了一種通用的概念結(jié)構(gòu)锌妻。它有三個(gè)顯著的特征:
- 數(shù)據(jù)分片和數(shù)據(jù)分配概念的分離,形成了“數(shù)據(jù)分布獨(dú)立型”概念鸟廓。
- 數(shù)據(jù)冗余的顯示控制从祝。
- 局部DBMS的獨(dú)立性。也成為“局部映射透明性”引谜。
分布式數(shù)據(jù)庫(kù)系統(tǒng)與并行數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別
相似點(diǎn):它們都是通過(guò)網(wǎng)絡(luò)連接各個(gè)數(shù)據(jù)處理結(jié)點(diǎn)的牍陌,整個(gè)網(wǎng)絡(luò)中的所有結(jié)點(diǎn)構(gòu)成一個(gè)邏輯上統(tǒng)一的整體,用戶可以對(duì)各個(gè)結(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行透明存取等员咽。區(qū)別有以下幾個(gè)方面:
- 應(yīng)用目標(biāo)不同毒涧。并行數(shù)據(jù)庫(kù)的目標(biāo)是充分發(fā)揮并行計(jì)算機(jī)的優(yōu)勢(shì),利用系統(tǒng)中各個(gè)處理機(jī)結(jié)點(diǎn)并行的完成數(shù)據(jù)庫(kù)任務(wù)贝室,提高數(shù)據(jù)庫(kù)的整體性能契讲。分布式數(shù)據(jù)庫(kù)系統(tǒng)的主要目標(biāo)在于實(shí)現(xiàn)各個(gè)場(chǎng)地自治和數(shù)據(jù)的全局透明共享仿吞,而不要求利用網(wǎng)絡(luò)中的各個(gè)結(jié)點(diǎn)來(lái)提高系統(tǒng)的整體性能。
- 實(shí)現(xiàn)方式不同捡偏。在并行數(shù)據(jù)庫(kù)中唤冈,為了充分發(fā)揮各個(gè)結(jié)點(diǎn)的處理能力,各結(jié)點(diǎn)件采用高速通信網(wǎng)絡(luò)互聯(lián)银伟,節(jié)點(diǎn)間數(shù)據(jù)傳輸代價(jià)相對(duì)較低你虹。當(dāng)負(fù)載不均衡時(shí),可以將工作負(fù)載過(guò)大的結(jié)點(diǎn)上的任務(wù)通過(guò)高速通信網(wǎng)絡(luò)送給空閑結(jié)點(diǎn)處理彤避,從而實(shí)現(xiàn)負(fù)載平衡傅物。在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,各節(jié)點(diǎn)(場(chǎng)地)間一般通過(guò)局域網(wǎng)或廣域網(wǎng)互聯(lián)琉预,網(wǎng)絡(luò)帶寬比較低董饰,各場(chǎng)地之間的通信開(kāi)銷較大涎跨,因此在查詢處理時(shí)一般應(yīng)盡量減少結(jié)點(diǎn)間的數(shù)據(jù)傳輸量哥牍。
- 各結(jié)點(diǎn)的地位不同。在并行數(shù)據(jù)庫(kù)中晃听,各結(jié)點(diǎn)之間不存在全局應(yīng)用和局部應(yīng)用的概念榨咐,各個(gè)結(jié)點(diǎn)協(xié)同作用介却,共同處理谴供,而不可能有局部應(yīng)用块茁。
在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,各結(jié)點(diǎn)除了能夠通過(guò)網(wǎng)絡(luò)協(xié)同完成全局事務(wù)外桂肌,還有自己結(jié)點(diǎn)場(chǎng)地的自治性数焊。也就是說(shuō),分布式數(shù)據(jù)庫(kù)系統(tǒng)的每個(gè)場(chǎng)地又是一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)和自己的客戶崎场,可運(yùn)行自己的DBMS佩耳,執(zhí)行局部應(yīng)用,具有高度的自治性谭跨。這也是并行數(shù)據(jù)庫(kù)與分布式數(shù)據(jù)庫(kù)之間最主要的區(qū)別干厚。
2. 數(shù)據(jù)分片和透明性
分片的方式有多種,水平分片和垂直分片是兩種基本的分片方式螃宙,混合分片和導(dǎo)出分片是較復(fù)雜的分片方式蛮瞄。
- 分片透明性是分布透明性的最高層次。指的是用戶或應(yīng)用程序只對(duì)全局關(guān)系進(jìn)行操作而不必考慮數(shù)據(jù)的分片谆扎。當(dāng)分片模式改變時(shí)挂捅,只要改變?nèi)帜J降椒制J降挠诚瘢ㄓ诚?),而不映像全局模式和應(yīng)用程序堂湖。全局模式不變闲先,應(yīng)用程序不必改寫(xiě)状土,這就是分片透明性。
- 位置透明性是分布透明性的下一個(gè)層次伺糠。指用戶或應(yīng)用程序應(yīng)當(dāng)了解分片情況蒙谓,但不必了解片段的存儲(chǔ)場(chǎng)地。當(dāng)存儲(chǔ)場(chǎng)地改變時(shí)训桶,只要改變分片模式到分配模式的映像(映像3)彼乌,而不影響應(yīng)用程序。同時(shí)渊迁,若片段的重復(fù)副本數(shù)目改變了慰照,那么數(shù)據(jù)的冗余也會(huì)改變,但用戶不必關(guān)心如何保持各副本的一致性琉朽,這也提供了重復(fù)副本的透明性毒租。
- 局部數(shù)據(jù)模型透明性是指用戶或應(yīng)用程序應(yīng)當(dāng)了解分片及各片段存儲(chǔ)的場(chǎng)地,但不必了解局部場(chǎng)地上使用的是何種數(shù)據(jù)模型箱叁。模型的轉(zhuǎn)換及語(yǔ)言等的轉(zhuǎn)換均由映像4來(lái)完成墅垮。
3. 分布式數(shù)據(jù)庫(kù)管理系統(tǒng)
任務(wù),首先就是把用戶與分布式數(shù)據(jù)庫(kù)隔離開(kāi)來(lái)耕漱,使其對(duì)用戶而言算色,整個(gè)分布式數(shù)據(jù)庫(kù)就像是一個(gè)傳統(tǒng)的集中式數(shù)據(jù)庫(kù)。換句話說(shuō)螟够,一個(gè)分布式數(shù)據(jù)庫(kù)管理系統(tǒng)和用戶之間的接口灾梦,在邏輯上與集中式數(shù)據(jù)庫(kù)管理系統(tǒng)是一致的,但是考慮到分布式數(shù)據(jù)庫(kù)的特點(diǎn)妓笙,其物理實(shí)現(xiàn)上又與集中式數(shù)據(jù)庫(kù)不同若河。
DDBMS由4部分組成:
- LDBMS(局部DBMS)。局部場(chǎng)地上的數(shù)據(jù)庫(kù)管理系統(tǒng)的功能是建立和管理局部數(shù)據(jù)庫(kù)寞宫,提供場(chǎng)地自治能力萧福、執(zhí)行局部應(yīng)用及全局應(yīng)用的子查詢。
- GDBMS(全局DBMS)辈赋。全局?jǐn)?shù)據(jù)庫(kù)管理系統(tǒng)的主要功能是提供分布透明性鲫忍,協(xié)調(diào)全部事務(wù)的執(zhí)行,協(xié)調(diào)各局部DBMS以完成全局應(yīng)用钥屈,保證數(shù)據(jù)庫(kù)的全局一致性悟民,執(zhí)行并發(fā)控制,實(shí)現(xiàn)更新同步焕蹄,提供全局恢復(fù)功能逾雄。
- 全局?jǐn)?shù)據(jù)字典。存放全局概念模式、分片模式鸦泳。定義及各模式之間映像的行醫(yī):存放有關(guān)用戶存取權(quán)限的定義银锻,以保證全局用戶的合法權(quán)限和數(shù)據(jù)庫(kù)的安全性;存放數(shù)據(jù)完整性的約束條件的定義做鹰,其功能與集中式數(shù)據(jù)庫(kù)的數(shù)據(jù)字典類似击纬。
- CM,通信管理钾麸。在分布式數(shù)據(jù)庫(kù)各場(chǎng)地之間傳送消息和數(shù)據(jù)更振,完成通信功能。
DDBMS功能的分割和重復(fù)及不同的配置策略就導(dǎo)致了各種架構(gòu)饭尝。
- 全局控制集中的DDBMS肯腕。特點(diǎn)是全局控制成分GDBMS集中在某一結(jié)點(diǎn)上,由該結(jié)點(diǎn)完成全局事務(wù)中的協(xié)調(diào)和局部數(shù)據(jù)庫(kù)轉(zhuǎn)換等一切控制功能钥平。全局?jǐn)?shù)據(jù)字典只有一個(gè)实撒,也存放在該結(jié)點(diǎn)上,它是GDBMS執(zhí)行控制的依據(jù)涉瘾。優(yōu)點(diǎn)是控制簡(jiǎn)單知态,易實(shí)現(xiàn)更新一致性,但由于控制集中在某一特定的結(jié)點(diǎn)上立叛,不僅容易形成瓶頸而且系統(tǒng)較脆弱负敏,一旦該節(jié)點(diǎn)出故障,整個(gè)系統(tǒng)就會(huì)癱瘓秘蛇。
- 全局控制分散的DDBMS其做。特點(diǎn)是全局控制成分GDBMS分散在網(wǎng)絡(luò)的每一個(gè)結(jié)點(diǎn)上,全局?jǐn)?shù)據(jù)字典也在每個(gè)結(jié)點(diǎn)上有一份彤叉,每個(gè)結(jié)點(diǎn)都能完成全局事務(wù)的協(xié)調(diào)和局部數(shù)據(jù)庫(kù)轉(zhuǎn)換庶柿,每個(gè)結(jié)點(diǎn)即是全局事務(wù)的參與者又是協(xié)調(diào)者村怪,一般稱這類結(jié)構(gòu)為完全分布的DDBMS秽浇。優(yōu)點(diǎn)是結(jié)點(diǎn)獨(dú)立,自治性強(qiáng)甚负,單個(gè)結(jié)點(diǎn)退出或進(jìn)入系統(tǒng)均不會(huì)影響整個(gè)系統(tǒng)的運(yùn)行柬焕,但是全局控制的協(xié)調(diào)機(jī)制和一致性的維護(hù)都比較復(fù)雜。
- 全局控制部分分散的DDBMS梭域。這種結(jié)構(gòu)是根據(jù)應(yīng)用的需要將GDBMS和全局?jǐn)?shù)據(jù)字典分散在某些結(jié)點(diǎn)上斑举,是介于前兩種情況之間的架構(gòu)。
局部DBMS的一個(gè)重要性質(zhì)是:局部DBMS是同構(gòu)的還是異構(gòu)的病涨。同構(gòu)和異構(gòu)的級(jí)別可以有三級(jí):硬件富玷、操作系統(tǒng)和局部DBMS。
異構(gòu)型DDBMS的設(shè)計(jì)和實(shí)現(xiàn)比同構(gòu)性DDBMS更加復(fù)雜,他要解決不同的DBMS之間及不同的數(shù)據(jù)模型之間的轉(zhuǎn)換赎懦。
3.7 數(shù)據(jù)倉(cāng)庫(kù)
3.7.1 數(shù)據(jù)倉(cāng)庫(kù)的概念
數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)面向主題的雀鹃、集成的、相對(duì)穩(wěn)定的励两、且隨時(shí)間變化的數(shù)據(jù)集合黎茎,用于支持管理決策。
1. 面向主題的
操作型數(shù)據(jù)庫(kù)的數(shù)據(jù)組織面向事務(wù)處理任務(wù)(面向應(yīng)用)当悔,各個(gè)業(yè)務(wù)系統(tǒng)之間各自分離傅瞻,而數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是按照一定的主題域進(jìn)行組織的。主題是一個(gè)抽象的概念盲憎,是指用戶使用數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行決策時(shí)所關(guān)心的重點(diǎn)方面嗅骄。一個(gè)主題通常與多個(gè)操作型信息系統(tǒng)相關(guān)。
2. 集成的
最重要特性饼疙。面向事務(wù)處理的操作型數(shù)據(jù)庫(kù)通常與某些特定的應(yīng)用有關(guān)掸读,數(shù)據(jù)庫(kù)之間相互圖例,而且往往是異構(gòu)的宏多。而數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是咋對(duì)原有分散的數(shù)據(jù)庫(kù)數(shù)據(jù)抽取儿惫、清理的基礎(chǔ)上經(jīng)過(guò)系統(tǒng)加工、匯總和整理得到的伸但,必須消除數(shù)據(jù)中的不一致性肾请,以保證數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的信息是關(guān)于整個(gè)企業(yè)的一致的全局信息。
3. 相對(duì)穩(wěn)定的
操作型數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常實(shí)時(shí)更新更胖,數(shù)據(jù)根據(jù)需要及時(shí)發(fā)生變化铛铁。數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)主要供企業(yè)決策分析,所涉及到的數(shù)據(jù)操作主要是數(shù)據(jù)查詢却妨,一旦某個(gè)數(shù)據(jù)進(jìn)入數(shù)據(jù)倉(cāng)庫(kù)以后饵逐,一般情況下將被長(zhǎng)期保留,也就是數(shù)據(jù)倉(cāng)庫(kù)中一般有大量的查詢操作彪标,但是修改和刪除操作很少倍权,通常只需要定期的加載、更新捞烟。
4. 隨時(shí)間變化的
操作型數(shù)據(jù)庫(kù)主要關(guān)心當(dāng)前某一個(gè)時(shí)間段內(nèi)的數(shù)據(jù)薄声,而數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的數(shù)據(jù)通常包含歷史信息,系統(tǒng)記錄了企業(yè)從過(guò)去某一時(shí)刻點(diǎn)(如開(kāi)始應(yīng)用數(shù)據(jù)倉(cāng)庫(kù)的時(shí)點(diǎn))到目前的各個(gè)階段的信息题画,通過(guò)這些信息默辨,可以對(duì)企業(yè)的發(fā)展歷程和未來(lái)趨勢(shì)做出定量分析和預(yù)測(cè)。
數(shù)據(jù)倉(cāng)庫(kù)反映歷史變化的屬性主要表現(xiàn)在:
- 數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)時(shí)間期限要遠(yuǎn)遠(yuǎn)長(zhǎng)于傳統(tǒng)操作型數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)時(shí)間期限苍息,傳統(tǒng)操作型數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)時(shí)間期限可能為數(shù)十天或數(shù)個(gè)月缩幸,數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)時(shí)間期限往往為數(shù)年甚至幾十年
- 傳統(tǒng)操作型數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)含有“當(dāng)前值”數(shù)據(jù)壹置,這些數(shù)據(jù)在訪問(wèn)時(shí)是有效的,當(dāng)然數(shù)據(jù)的當(dāng)前值也能被更新表谊,但數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)僅僅是一系列某一時(shí)刻生成的復(fù)雜的快照蒸绩;
- 傳統(tǒng)操作型數(shù)據(jù)系統(tǒng)中可能包含也可能不包含時(shí)間元素,如年铃肯、月患亿、日、時(shí)押逼、分步藕、秒等,而數(shù)據(jù)倉(cāng)庫(kù)中一定會(huì)包含時(shí)間元素挑格。
數(shù)據(jù)倉(cāng)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)的比較
比較項(xiàng)目 | 傳統(tǒng)數(shù)據(jù)庫(kù) | 數(shù)據(jù)倉(cāng)庫(kù) |
---|---|---|
數(shù)據(jù)內(nèi)容 | 當(dāng)前值 | 歷史的咙冗、歸檔的、歸納的漂彤、計(jì)算的數(shù)據(jù)(處理過(guò)的) |
數(shù)據(jù)目標(biāo) | 面向業(yè)務(wù)操作程序雾消、重復(fù)操作 | 面向主體域,分析應(yīng)用 |
數(shù)據(jù)特性 | 動(dòng)態(tài)變化挫望、更新 | 靜態(tài)立润,不能直接更新,只能定時(shí)添加媳板、更新 |
數(shù)據(jù)結(jié)構(gòu) | 高度結(jié)構(gòu)化桑腮,復(fù)雜,適合操作計(jì)算 | 簡(jiǎn)單蛉幸、適合分析 |
使用頻率 | 高 | 低 |
數(shù)據(jù)訪問(wèn)量 | 每個(gè)事務(wù)一般只訪問(wèn)少量記錄 | 每個(gè)事務(wù)一般訪問(wèn)大量記錄 |
對(duì)響應(yīng)時(shí)間的要求 | 計(jì)時(shí)單位小破讨,如秒 | 計(jì)時(shí)單位相對(duì)較大,除了秒奕纫,還有分鐘提陶、小時(shí) |
3.7.2 數(shù)據(jù)倉(cāng)庫(kù)的結(jié)構(gòu)
數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)要包含數(shù)據(jù)源、數(shù)據(jù)準(zhǔn)備區(qū)匹层、數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)隙笆、數(shù)據(jù)集市/知識(shí)挖掘庫(kù)和各種管理工具和應(yīng)用工具。數(shù)據(jù)倉(cāng)庫(kù)建立之后又固,首先要從數(shù)據(jù)源中抽取相關(guān)的數(shù)據(jù)到數(shù)據(jù)準(zhǔn)備去仲器,在數(shù)據(jù)準(zhǔn)備去中經(jīng)過(guò)凈化處理后再加載到數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù),最后根據(jù)用戶的需求將數(shù)據(jù)導(dǎo)入數(shù)據(jù)集市和知識(shí)挖掘庫(kù)中仰冠。當(dāng)用戶使用數(shù)據(jù)倉(cāng)庫(kù)時(shí),可以利用包括OLAP在內(nèi)的多種數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用工具向數(shù)據(jù)集市/知識(shí)挖掘庫(kù)或數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行決策查詢分析或知識(shí)挖掘蝶糯。數(shù)據(jù)倉(cāng)庫(kù)的創(chuàng)建洋只、應(yīng)用可以利用各種數(shù)據(jù)倉(cāng)庫(kù)管理工具輔助完成。
1. 數(shù)據(jù)倉(cāng)庫(kù)的參考框架
由數(shù)據(jù)倉(cāng)庫(kù)基本功能層、數(shù)據(jù)倉(cāng)庫(kù)管理層和數(shù)據(jù)倉(cāng)庫(kù)環(huán)境支持層組成识虚。
- 數(shù)據(jù)倉(cāng)庫(kù)基本功能層肢扯。包含數(shù)據(jù)源、數(shù)據(jù)準(zhǔn)備區(qū)担锤、數(shù)據(jù)倉(cāng)庫(kù)結(jié)構(gòu)蔚晨、數(shù)據(jù)集市或知識(shí)挖掘庫(kù),以及存取和使用部分肛循。功能是從數(shù)據(jù)源中抽取數(shù)據(jù)铭腕,對(duì)所抽取的數(shù)據(jù)進(jìn)行篩選、清理多糠,將處理過(guò)的數(shù)據(jù)導(dǎo)入或者加載到數(shù)據(jù)倉(cāng)庫(kù)中累舷,根據(jù)用戶的需求設(shè)立數(shù)據(jù)集市,完成數(shù)據(jù)倉(cāng)庫(kù)的復(fù)雜查詢夹孔、決策分析和知識(shí)的挖掘等被盈。
- 數(shù)據(jù)倉(cāng)庫(kù)管理層。由數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)管理和數(shù)據(jù)倉(cāng)庫(kù)的元數(shù)據(jù)管理組成搭伤。
包含數(shù)據(jù)提取只怎、新數(shù)據(jù)需求與查詢管理,數(shù)據(jù)加載怜俐、存儲(chǔ)尝盼、刷新和更新系統(tǒng),安全性及用戶授權(quán)管理系統(tǒng)及數(shù)據(jù)歸檔佑菩、恢復(fù)及凈化系統(tǒng)等四個(gè)部分盾沫。 - 數(shù)據(jù)倉(cāng)庫(kù)的環(huán)境支持層。由數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)傳輸層和數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)層組成殿漠。數(shù)據(jù)倉(cāng)庫(kù)的不同結(jié)構(gòu)之間的數(shù)據(jù)傳輸需要數(shù)據(jù)倉(cāng)庫(kù)的傳輸層來(lái)完成赴精。
數(shù)據(jù)倉(cāng)庫(kù)的傳輸層包含數(shù)據(jù)傳輸和傳送網(wǎng)絡(luò)、客戶/服務(wù)器代理和中間件绞幌、復(fù)制系統(tǒng)及數(shù)據(jù)傳輸層的安全保障系統(tǒng)蕾哟。
2. 數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)
- 數(shù)據(jù)源。數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的基礎(chǔ)莲蜘。通常包括企業(yè)內(nèi)部信息和外部信息谭确。內(nèi)部信息包括存放于RDBMS(關(guān)系型DBMS)中的各種業(yè)務(wù)處理數(shù)據(jù)和各類文檔數(shù)據(jù)。外部信息包括各類法律法規(guī)票渠、市場(chǎng)信息和競(jìng)爭(zhēng)對(duì)手的信息等逐哈。
- 數(shù)據(jù)的倉(cāng)庫(kù)與管理。是整個(gè)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的核心问顷。數(shù)據(jù)倉(cāng)庫(kù)的真正關(guān)鍵是數(shù)據(jù)的存儲(chǔ)和管理昂秃。數(shù)據(jù)倉(cāng)庫(kù)的組織管理方式?jīng)Q定了他有別于傳統(tǒng)數(shù)據(jù)庫(kù)禀梳,也決定了其對(duì)外部數(shù)據(jù)的表現(xiàn)形式。數(shù)據(jù)倉(cāng)庫(kù)按照數(shù)據(jù)的覆蓋范圍肠骆,可以分為企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)和部門級(jí)數(shù)據(jù)倉(cāng)庫(kù)算途。
- OLAP服務(wù)器。對(duì)分析需要的數(shù)據(jù)進(jìn)行有效集成蚀腿,按多維模型予以組織嘴瓤,以便進(jìn)行多角度、多層次的分析莉钙,并發(fā)現(xiàn)趨勢(shì)廓脆。具體實(shí)現(xiàn)可以分為:ROLAP、MOLAP和HOLAP胆胰。ROLAP基本數(shù)據(jù)和聚合數(shù)據(jù)均存放在RDBMS之中狞贱;MOLAP基本數(shù)據(jù)和聚合數(shù)據(jù)均存放在多維數(shù)據(jù)庫(kù)中;HOLAP基本數(shù)據(jù)存放在RDBMS中蜀涨,聚合數(shù)據(jù)存放于多維數(shù)據(jù)庫(kù)中瞎嬉。
- 前端工具。主要包括各種報(bào)表工具厚柳、查詢工具氧枣、數(shù)據(jù)分析工具、數(shù)據(jù)挖掘工具及各種基于數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)集市的應(yīng)用開(kāi)發(fā)工具别垮。其中數(shù)據(jù)分析工具主要針對(duì)OLAP服務(wù)器便监,報(bào)表工具、數(shù)據(jù)挖掘工具主要針對(duì)數(shù)據(jù)倉(cāng)庫(kù)碳想。
3.7.3 數(shù)據(jù)倉(cāng)庫(kù)的實(shí)現(xiàn)方法
數(shù)據(jù)倉(cāng)庫(kù)的建立過(guò)程分為:需求分析烧董、概念模型設(shè)計(jì)、邏輯模型設(shè)計(jì)胧奔、物理模型設(shè)計(jì)和數(shù)據(jù)倉(cāng)庫(kù)生成逊移。
從整體的角度看,數(shù)據(jù)倉(cāng)庫(kù)的實(shí)現(xiàn)方法主要有自頂向下法龙填、自底向上法和聯(lián)合方法胳泉。
1.自頂向下法
在該方法中,首先應(yīng)找出數(shù)據(jù)倉(cāng)庫(kù)解決方案所要滿足的商業(yè)需求岩遗,把商業(yè)需求視為實(shí)際數(shù)據(jù)倉(cāng)庫(kù)的首要任務(wù)扇商。自頂向下法的優(yōu)缺點(diǎn)如下表
優(yōu)點(diǎn) | 缺點(diǎn) |
---|---|
商業(yè)需求清楚的描繪出數(shù)據(jù)倉(cāng)庫(kù)實(shí)現(xiàn)的范圍,因此是實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)解決方案的有效方法 | 有時(shí)會(huì)超出當(dāng)前的業(yè)務(wù)范圍 |
技術(shù)取決于商業(yè) | 技術(shù)可以促進(jìn)商業(yè)和競(jìng)爭(zhēng)優(yōu)勢(shì)宿礁,但開(kāi)始時(shí)對(duì)商業(yè)的促進(jìn)是不明顯的 |
易于向決策者提供數(shù)據(jù)倉(cāng)庫(kù)的收益情況 | 一旦數(shù)據(jù)倉(cāng)庫(kù)已經(jīng)實(shí)現(xiàn)案铺,可能就不再要求更公告的目標(biāo) |
該方法一般用于以下情況:
- 實(shí)現(xiàn)單位比較熟悉技術(shù),并具有根據(jù)商業(yè)需求采用自頂向下法開(kāi)發(fā)應(yīng)用程序的豐富經(jīng)驗(yàn)
- 決策層(總經(jīng)理窘拯、決策者红且、投資者)完全清楚數(shù)據(jù)倉(cāng)庫(kù)的預(yù)測(cè)目標(biāo)岩灭。
- 決策層(總經(jīng)理碉熄、決策者、投資者)完全清楚數(shù)據(jù)倉(cāng)庫(kù)用作哪些機(jī)構(gòu)的決策支持工具档悠。
- 決策層(總經(jīng)理思喊、決策者壁酬、投資者)完全清楚數(shù)據(jù)倉(cāng)庫(kù)已經(jīng)是長(zhǎng)夜過(guò)程中的一個(gè)子過(guò)程。
2. 自底向上法
一般從實(shí)現(xiàn)和基于技術(shù)的原型入手恨课。先選擇一個(gè)特定的舆乔、眾所周知的商業(yè)問(wèn)題的子集,再為該子集制定方案剂公。實(shí)現(xiàn)自底向上法一般是比較快的希俩。優(yōu)缺點(diǎn)如下表:
優(yōu)點(diǎn) | 缺點(diǎn) |
---|---|
實(shí)現(xiàn)的需求和開(kāi)始時(shí)的需求遠(yuǎn)遠(yuǎn)超過(guò)自頂向下分析和長(zhǎng)期考慮的范圍 | 最初方案實(shí)現(xiàn)以后,最好回顧一下方案是如何服務(wù)于整個(gè)企業(yè)的纲辽。 |
在企業(yè)對(duì)數(shù)據(jù)倉(cāng)庫(kù)了解的初期颜武,該方法使企業(yè)無(wú)需巨大投入就可見(jiàn)到效益 | 單個(gè)自底向上工程項(xiàng)目的失敗可能推遲潛在技術(shù)的實(shí)現(xiàn) |
少數(shù)人集中工作在一個(gè)部門范圍,可以加速實(shí)現(xiàn)決策過(guò)程 | 早起的小組應(yīng)不斷發(fā)展為較大的小組拖吼,以擴(kuò)充最初方案的覆蓋范圍鳞上。 |
自底向上法一般用于以下情況:
- 企業(yè)還沒(méi)有確定掌握數(shù)據(jù)倉(cāng)庫(kù)技術(shù),希望進(jìn)行技術(shù)評(píng)估來(lái)決定運(yùn)行該技術(shù)的方式吊档、地點(diǎn)和時(shí)間篙议。
- 企業(yè)希望了解實(shí)現(xiàn)和運(yùn)行數(shù)據(jù)倉(cāng)庫(kù)所需要的各種費(fèi)用情況。
- 企業(yè)在對(duì)數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行投資選擇怠硼。
3. 聯(lián)合方法
在以上兩種方法的聯(lián)合方法中鬼贱,企業(yè)在保持自底向上的快速實(shí)現(xiàn)和基于應(yīng)用的同時(shí),還可以利用自頂向下方法的規(guī)劃和決策性質(zhì)香璃。這種方法依賴于以下兩個(gè)因素:
- 自頂向下的結(jié)構(gòu)这难、標(biāo)準(zhǔn)和設(shè)計(jì)小組,可以從一個(gè)項(xiàng)目向另外一個(gè)項(xiàng)目傳遞知識(shí)增显,也可以把戰(zhàn)術(shù)決策變?yōu)閼?zhàn)略決策雁佳。
- 自底向上的項(xiàng)目小組,它直接負(fù)責(zé)在短期內(nèi)實(shí)現(xiàn)一個(gè)集中的同云、部門級(jí)的商務(wù)解決方案糖权。
聯(lián)合方法具有以上兩種方法的優(yōu)點(diǎn),但是難以作為一個(gè)項(xiàng)目來(lái)管理炸站,該方法一般有用于:
- 實(shí)現(xiàn)企業(yè)擁有經(jīng)驗(yàn)豐富的設(shè)計(jì)師星澳,有能力建立、證明旱易、應(yīng)用和維護(hù)數(shù)據(jù)結(jié)構(gòu)禁偎、數(shù)據(jù)結(jié)構(gòu)和企業(yè)模型腿堤,可以很容易從具體(運(yùn)作系統(tǒng)中的元數(shù)據(jù))轉(zhuǎn)移到抽象。
- 企業(yè)擁有固定的項(xiàng)目小組如暖,完全清楚數(shù)據(jù)倉(cāng)庫(kù)技術(shù)應(yīng)用的場(chǎng)所笆檀。他們可以清楚的看到當(dāng)前的商務(wù)需求。
3.8 數(shù)據(jù)挖掘
目前的數(shù)據(jù)庫(kù)系統(tǒng)可以高效的實(shí)現(xiàn)數(shù)據(jù)的錄入盒至、查詢酗洒、統(tǒng)計(jì)等功能,但無(wú)法發(fā)現(xiàn)數(shù)據(jù)中存在的關(guān)系和規(guī)則枷遂,無(wú)法根據(jù)現(xiàn)有的數(shù)據(jù)預(yù)測(cè)未來(lái)的發(fā)展趨勢(shì)樱衷。
3.8.1 數(shù)據(jù)挖掘的概念
三種基礎(chǔ)技術(shù)分別為:海量數(shù)據(jù)搜集、強(qiáng)大的多處理器計(jì)算機(jī)和數(shù)據(jù)挖掘算法酒唉。
從技術(shù)角度來(lái)看矩桂,數(shù)據(jù)挖掘就是從大量的、不完全的痪伦、有噪聲的侄榴、模糊的、隨機(jī)的實(shí)際應(yīng)用數(shù)據(jù)中流妻,提取隱含在其中的牲蜀、人們實(shí)現(xiàn)不知道的、但又潛在有用的信息和知識(shí)的過(guò)程绅这。這個(gè)定義包括好幾層含義:數(shù)據(jù)源必須是真實(shí)的涣达、大量的、含噪聲的证薇;發(fā)現(xiàn)的是用戶感興趣的知識(shí)度苔;發(fā)現(xiàn)的知識(shí)要可接受、可理解浑度、可運(yùn)用寇窑;并不要求發(fā)現(xiàn)放之四海皆準(zhǔn)的知識(shí),僅支持特定的發(fā)現(xiàn)問(wèn)題箩张。
從商業(yè)角度來(lái)看甩骏,數(shù)據(jù)挖掘是一種新的商業(yè)信息處理技術(shù),其主要特點(diǎn)是對(duì)商業(yè)數(shù)據(jù)庫(kù)中的大量業(yè)務(wù)數(shù)據(jù)進(jìn)行抽取先慷、轉(zhuǎn)換饮笛、分析和其他模型化處理,從中提取輔助商業(yè)決策的關(guān)鍵性數(shù)據(jù)论熙。
簡(jiǎn)而言之福青,數(shù)據(jù)挖掘其實(shí)是一種深層次的數(shù)據(jù)分析方法。按企業(yè)既定業(yè)務(wù)目標(biāo),對(duì)大量的企業(yè)數(shù)據(jù)進(jìn)行探索和分析无午,揭示隱藏的媒役、未知的或驗(yàn)證已知的規(guī)律性,并進(jìn)一步將其模型化的先進(jìn)有效的方法宪迟。
數(shù)據(jù)挖掘與傳統(tǒng)的數(shù)據(jù)分析(如查詢酣衷、報(bào)表、聯(lián)機(jī)應(yīng)用分析)的本質(zhì)區(qū)別是數(shù)據(jù)挖掘是在沒(méi)有明確假設(shè)的前提下去挖掘信息踩验、發(fā)現(xiàn)知識(shí)鸥诽。數(shù)據(jù)挖掘所得到的信息應(yīng)具有先知商玫、有效和可實(shí)用三個(gè)特征箕憾。
數(shù)據(jù)挖掘技術(shù)從一開(kāi)始就是面向應(yīng)用的。它不僅是面向特定數(shù)據(jù)庫(kù)的簡(jiǎn)單檢索查詢調(diào)用拳昌,而且要對(duì)這些數(shù)據(jù)進(jìn)行微視袭异、中觀乃至宏觀的統(tǒng)計(jì)、分析炬藤、綜合和推理御铃,以指導(dǎo)實(shí)際問(wèn)題的求解,企圖發(fā)現(xiàn)事件間的相互關(guān)聯(lián)沈矿,甚至利用已有的數(shù)據(jù)對(duì)未來(lái)的活動(dòng)進(jìn)行預(yù)測(cè)上真。
3.8.2 數(shù)據(jù)挖掘的功能
數(shù)據(jù)挖掘通過(guò)預(yù)測(cè)未來(lái)趨勢(shì)及行為,做出前攝的羹膳、基于知識(shí)的決策睡互。數(shù)據(jù)挖掘的目標(biāo)是從數(shù)據(jù)庫(kù)中發(fā)現(xiàn)隱含的、有意義的知識(shí)陵像。主要有以下五類功能就珠。
1. 自動(dòng)預(yù)測(cè)趨勢(shì)和行為
2. 關(guān)聯(lián)分析
關(guān)聯(lián)可分為簡(jiǎn)單關(guān)聯(lián)、時(shí)序關(guān)聯(lián)醒颖、因果關(guān)聯(lián)妻怎。關(guān)聯(lián)分析的目的是找出數(shù)據(jù)庫(kù)中隱含的關(guān)聯(lián)網(wǎng)。
3. 聚類
數(shù)據(jù)庫(kù)中的記錄可被劃分為一系列有意義的子集泞歉,即聚類逼侦。聚類技術(shù)主要包含傳統(tǒng)的模式識(shí)別方法和數(shù)學(xué)分類學(xué)。
4. 概念描述
是對(duì)某類對(duì)象的內(nèi)涵進(jìn)行描述腰耙,并概括這類對(duì)象的有關(guān)特征榛丢。分為特征性描述和區(qū)別性描述。前者描述某類對(duì)象的共同特征沟优,后者描述不同對(duì)象之間的區(qū)別涕滋。生成一個(gè)對(duì)象的特征性描述只涉及該類對(duì)象中的所有對(duì)象的共性。生成區(qū)別性描述的方法很多挠阁,如決策樹(shù)方法宾肺、遺傳算法等溯饵。
5. 偏差檢測(cè)
基本方法是:尋找觀測(cè)結(jié)果與參照值之間有意義的差別。
3.8.3 數(shù)據(jù)挖掘常用技術(shù)
1. 關(guān)聯(lián)分析
主要用于發(fā)現(xiàn)不同事件之間的關(guān)聯(lián)性锨用,即一個(gè)事件發(fā)生的同時(shí)丰刊,另一個(gè)事件也經(jīng)常發(fā)生。重點(diǎn)在于快速發(fā)現(xiàn)那些有實(shí)用價(jià)值的關(guān)聯(lián)發(fā)生的事件增拥。主要依據(jù)是事件的發(fā)生概率和條件概率應(yīng)該符合一定的統(tǒng)計(jì)意義啄巧。
2. 序列分析
主要用于發(fā)現(xiàn)一定時(shí)間間隔內(nèi)接連發(fā)生的事件。這些事件構(gòu)成一個(gè)序列掌栅,發(fā)現(xiàn)的序列應(yīng)該具有普遍意義秩仆,其依據(jù)除了統(tǒng)計(jì)上的概率之外,還要加上事件的約束猾封。
3. 分類分析
通過(guò)分析具有類別的樣本的特點(diǎn)澄耍,得到?jīng)Q定樣本屬于各種類別的規(guī)則或方法。利用這些規(guī)則和方法對(duì)未知類別的樣本分類時(shí)應(yīng)該具有一定的準(zhǔn)確度晌缘。其主要方法有基于統(tǒng)計(jì)學(xué)的貝葉斯方法齐莲、神經(jīng)網(wǎng)絡(luò)方法、決策樹(shù)方法和支持向量機(jī)磷箕。
4. 聚類分析
是根據(jù)物以類聚的原理选酗,將本身沒(méi)有類別的樣本聚集成不同的組,并且對(duì)這樣的組進(jìn)行描述的過(guò)程岳枷。其主要依據(jù)是聚集到同一個(gè)組的樣本應(yīng)該彼此相似芒填,而屬于不同組的樣本應(yīng)該足夠不相似。
5. 預(yù)測(cè)
與分類類似嫩舟,但預(yù)測(cè)是根據(jù)樣本的已知特征估算某個(gè)連續(xù)類型的變量的取值的過(guò)程氢烘,而分類知識(shí)用于判別樣本所屬的離散類別而已。預(yù)測(cè)常用的技術(shù)是回歸分析家厌。
6. 時(shí)間序列分析
分析的是隨時(shí)間變化的時(shí)間序列播玖,目的是預(yù)測(cè)未來(lái)發(fā)展趨勢(shì),或者尋找相似發(fā)展模式或者是發(fā)現(xiàn)周期性發(fā)展規(guī)律饭于。
3.8.4 數(shù)據(jù)挖掘的流程
數(shù)據(jù)挖掘的大致流程如下:
1. 問(wèn)題定義
在開(kāi)始數(shù)據(jù)挖掘之前蜀踏,需要先弄清楚背景知識(shí),即決定到底要干什么
2. 建立數(shù)據(jù)挖掘庫(kù)
將要挖掘的數(shù)據(jù)收集到一個(gè)數(shù)據(jù)庫(kù)中掰吕,而不是采用原有的數(shù)據(jù)庫(kù)或數(shù)據(jù)倉(cāng)庫(kù)果覆。這是因?yàn)榇蟛糠智闆r下需要修改要挖掘的數(shù)據(jù),而且還會(huì)遇到采用外部數(shù)據(jù)的情況殖熟;另外局待,數(shù)據(jù)挖掘還要對(duì)數(shù)據(jù)進(jìn)行各種紛繁復(fù)雜的統(tǒng)計(jì)分析,而數(shù)據(jù)倉(cāng)庫(kù)可能不支持這些數(shù)據(jù)結(jié)構(gòu)。
3. 分析數(shù)據(jù)
是通常所進(jìn)行的對(duì)數(shù)據(jù)深入調(diào)查的過(guò)程钳榨,從數(shù)據(jù)集中找出規(guī)律和趨勢(shì)舰罚,用聚類分析區(qū)分類別,最終要達(dá)到的目的就是搞清楚多因素相互影響的薛耻、十分復(fù)雜的關(guān)系营罢、發(fā)現(xiàn)因素之間的相關(guān)性。
4. 調(diào)整數(shù)據(jù)
對(duì)分析的數(shù)據(jù)進(jìn)行進(jìn)一步的明確化和量化饼齿。針對(duì)問(wèn)題的需求對(duì)數(shù)據(jù)進(jìn)行增刪饲漾,按照對(duì)整個(gè)數(shù)據(jù)挖掘的過(guò)程的新認(rèn)識(shí)組合或生成一個(gè)新的變量,以體現(xiàn)對(duì)狀態(tài)的有效描述缕溉。
5. 模型化
在問(wèn)題進(jìn)一步明確考传,數(shù)據(jù)結(jié)構(gòu)和內(nèi)容進(jìn)一步調(diào)整的基礎(chǔ)上,救可以建立形成知識(shí)的模型倒淫。這一步是數(shù)據(jù)挖掘的核心環(huán)節(jié)伙菊,一般運(yùn)用神經(jīng)網(wǎng)絡(luò)、決策樹(shù)敌土、數(shù)理統(tǒng)計(jì)、時(shí)間序列分析等方法來(lái)建立模型运翼。
6. 評(píng)價(jià)和解釋
上面得到的數(shù)據(jù)模型返干,有可能是沒(méi)有實(shí)際含義或者沒(méi)有使用價(jià)值的,也有可能是其不能準(zhǔn)確反映數(shù)據(jù)的真實(shí)意義血淌,甚至在某些情況下是與事實(shí)相反的矩欠,因此需要評(píng)估,確定哪些是有效的悠夯、有用的模式癌淮。評(píng)估的一個(gè)辦法是直接使用原先建立的挖掘數(shù)據(jù)庫(kù)中的數(shù)據(jù)來(lái)進(jìn)行檢驗(yàn),另一種辦法是另找一批數(shù)據(jù)并對(duì)其進(jìn)行檢驗(yàn)沦补,在一中辦法是在實(shí)際運(yùn)行的環(huán)境中取出新鮮數(shù)據(jù)進(jìn)行檢驗(yàn)乳蓄。
數(shù)據(jù)挖掘過(guò)程的分布實(shí)現(xiàn),不同的步驟需要不同專長(zhǎng)的人員夕膀,他們大致可以分為三類虚倒;
- 業(yè)務(wù)分析人員。要求精通業(yè)務(wù)产舞,能夠解釋業(yè)務(wù)對(duì)象魂奥,并根據(jù)各業(yè)務(wù)對(duì)象確定出用于數(shù)據(jù)定義和挖掘算法的業(yè)務(wù)需求。
- 數(shù)據(jù)分析人員易猫。精通數(shù)據(jù)分析技術(shù)耻煤,并較熟練的掌握統(tǒng)計(jì)學(xué),有能力好把業(yè)務(wù)需求轉(zhuǎn)化為數(shù)據(jù)挖掘的各步操作,并為每步操作選擇合適的技術(shù)哈蝇。
- 數(shù)據(jù)管理人員嘴办,精通數(shù)據(jù)管理技術(shù),并從數(shù)據(jù)庫(kù)或數(shù)據(jù)倉(cāng)庫(kù)中收集數(shù)據(jù)买鸽。
由上可見(jiàn)涧郊,數(shù)據(jù)挖掘是一個(gè)多種專家合作的過(guò)程,也是一個(gè)在資金上和技術(shù)上高投入的過(guò)程眼五,這一過(guò)程要反復(fù)進(jìn)行妆艘,在反復(fù)過(guò)程中,不斷地趨近事物的本質(zhì)看幼,不斷地優(yōu)選問(wèn)題的解決方案批旺。
3.9 NOSQL
即Not Only SQL,不僅僅是SQL诵姜。NOSQL數(shù)據(jù)存儲(chǔ)不需要固定的表結(jié)構(gòu)汽煮,通常也不存在連接操作。在大數(shù)據(jù)存取上具有關(guān)系型數(shù)據(jù)庫(kù)無(wú)法比擬的性能優(yōu)勢(shì)棚唆。
與關(guān)系型數(shù)據(jù)庫(kù)相比暇赤,NOSQL數(shù)據(jù)庫(kù)具有以下幾個(gè)優(yōu)點(diǎn):
1. 易擴(kuò)展
去掉關(guān)系數(shù)據(jù)庫(kù)的關(guān)系型特征。數(shù)據(jù)之間無(wú)關(guān)系宵凌,這樣就非常容易擴(kuò)展鞋囊,在架構(gòu)的層面上帶來(lái)了可擴(kuò)展的能力。
2. 大數(shù)據(jù)量瞎惫,高性能
具有非常高的讀寫(xiě)性能溜腐,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀瓜喇。這得益于它的無(wú)關(guān)特性挺益,數(shù)據(jù)庫(kù)的結(jié)構(gòu)簡(jiǎn)單。一般MySQL使用Query Cache乘寒,每次表一更新Cache就失效望众,它是一種大粒度的Cache,在針對(duì)Web2.0的交互頻繁的應(yīng)用肃续,Cache性能不高黍檩。而NOSQL的Cache是記錄級(jí)別的,是一種細(xì)粒度的Cache始锚,所以NOSQL在這個(gè)層面上來(lái)講性能就好很多刽酱。
3. 靈活的數(shù)據(jù)模型
無(wú)須事先為要存儲(chǔ)的數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式瞧捌。
4. 高可用
在不太影響性能的星空棵里,就可以方便的實(shí)現(xiàn)高可用的架構(gòu)润文,通過(guò)復(fù)制模型也能實(shí)現(xiàn)高可用
當(dāng)然,NOSQL也存在很多缺點(diǎn)殿怜,例如:并未形成一定標(biāo)準(zhǔn)典蝌,各種產(chǎn)品層出不窮,內(nèi)部混亂头谜,各種項(xiàng)目還需要時(shí)間來(lái)檢驗(yàn)骏掀,缺乏相關(guān)專家技術(shù)的支持等。
3.10 大數(shù)據(jù)
指無(wú)法在一定時(shí)間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉柱告、管理截驮、和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策力际度、洞察發(fā)現(xiàn)力和流動(dòng)優(yōu)化能力的海量葵袭、高增長(zhǎng)和多樣化的信息資產(chǎn)。
1. 大數(shù)據(jù)的特點(diǎn)
業(yè)界通常用4個(gè)V(即Volume乖菱、Variety坡锡、Value、Velocity)來(lái)概括大數(shù)據(jù)的特征窒所。
- Volume:指的是數(shù)據(jù)體量巨大鹉勒,從TB級(jí)別躍升到PB級(jí)別、EB級(jí)別墩新,甚至于達(dá)到ZB級(jí)別贸弥。
- Variety:指的是數(shù)據(jù)類型繁多。這種類型的多樣性也讓數(shù)據(jù)被分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)海渊。
- Value:指的是價(jià)值密度低,價(jià)值密度的高低與數(shù)據(jù)總量的大小成反比哲鸳。
- Velocity:指的是處理速度快臣疑,也是大數(shù)據(jù)區(qū)別于傳統(tǒng)數(shù)據(jù)挖掘的最顯著特征。
2. 傳統(tǒng)數(shù)據(jù)與大數(shù)據(jù)的比較
比較維度 | 傳統(tǒng)數(shù)據(jù) | 大數(shù)據(jù) |
---|---|---|
數(shù)據(jù)量 | GB或TB級(jí) | PB級(jí)或以上 |
結(jié)構(gòu)化程度 | 結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù) | 所有類型的數(shù)據(jù) |
數(shù)據(jù)分析需求 | 現(xiàn)有數(shù)據(jù)的分析與檢測(cè) | 深度分析(關(guān)聯(lián)分析徙菠、回歸分析) |
硬件平臺(tái) | 高端服務(wù)器 | 集群平臺(tái) |
3. 大數(shù)據(jù)處理關(guān)鍵技術(shù)
一般包括:大數(shù)據(jù)采集讯沈、大數(shù)據(jù)預(yù)處理、大數(shù)據(jù)存儲(chǔ)及管理婿奔、大數(shù)據(jù)分析及挖掘缺狠、大數(shù)據(jù)展現(xiàn)和應(yīng)用(大數(shù)據(jù)檢索、大數(shù)據(jù)可視化萍摊、大數(shù)據(jù)應(yīng)用挤茄、大數(shù)據(jù)安全等)。
4. 大數(shù)據(jù)應(yīng)用
大數(shù)據(jù)可以在各行各業(yè)得到應(yīng)用冰木。