版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3本章將重溫面向?qū)ο蟮臄?shù)據(jù)庫(kù)(Oracle8i的基礎(chǔ))概念,討論對(duì)象關(guān)系數(shù)據(jù)庫(kù)模型,然后繼續(xù)了解Oracle8i以及它的新特性。一旦有可能就舉例說(shuō)明。 在本章很多地方,談到的是Oracle8而不是Oracle8i。但在Oracle8i中的很多對(duì)Oracle8中數(shù)組(array)為一個(gè)內(nèi)部類型(Built-inype)或?qū)ο蟮挠行蚣?,這些類型或?qū)ο蠓Q為元素。同一數(shù)組的每個(gè)元素具有相同的類型。每個(gè)元素有一個(gè)下標(biāo),它是該元素在數(shù)組中的相對(duì)位置數(shù)。封裝(Encapsulation)意指數(shù)據(jù)庫(kù)中每個(gè)對(duì)象具有范圍清晰、定義明確的接口,這能有繼承(Inheritance)嵌套表(Nestedable)是Oracle8i提供的另一種集合類型。嵌套表是以其他表的一列出現(xiàn)的表。因此可在其上執(zhí)行操作,就像在其他表上執(zhí)行操作一樣。對(duì)象(Object)對(duì)象視圖(ObjectView)為傳統(tǒng)關(guān)系視圖機(jī)制的擴(kuò)充,它使你能處理關(guān)系數(shù)據(jù),就好像對(duì)象關(guān)系數(shù)據(jù)庫(kù)(Object-relationaldatabase)是一個(gè)用來(lái)描述由關(guān)系數(shù)據(jù)庫(kù)演變而來(lái)的數(shù)據(jù)庫(kù)的詞,該數(shù)據(jù)庫(kù)現(xiàn)在具有內(nèi)嵌的面向?qū)ο蟮哪芰?。換句話說(shuō),它是一種關(guān)系模型和面向?qū)ο竽P突旌系臄?shù)據(jù)庫(kù)。大多數(shù)分析家認(rèn)為,這是未來(lái)計(jì)算的發(fā)展方向。多態(tài)機(jī)制(Polymorphism)Oracle表中的每一行都具有唯一的行標(biāo)識(shí)(Rowid)。此行標(biāo)識(shí)唯一標(biāo)識(shí)了數(shù)據(jù)庫(kù)中相應(yīng)的數(shù)據(jù)行。在Oracle8之前,行標(biāo)識(shí)可用縮略詞BARF來(lái)助記。BARF意為塊、地址、記錄、文件標(biāo)識(shí)(我們是從ScottMartin那里知道這個(gè)辦法的,他過(guò)去曾是Oracle的核心開發(fā)者)就知道BARF為數(shù)據(jù)庫(kù)內(nèi)一行的物理位置。從下表可以看到一個(gè)SQL語(yǔ)句的輸出,該語(yǔ)句從Oracle8數(shù)據(jù)庫(kù)中選擇行標(biāo)識(shí)。selectrowid,substr(rowid,1,8)"BLOCK",substr(rowid,15,4)"FIL,fromtablex; 0001第3 優(yōu)化器是一系列內(nèi)部例程,當(dāng)Oracle執(zhí)行查詢時(shí)這些例程被激活。優(yōu)化器不僅能保證查詢所需的數(shù)據(jù)按最有效的路徑訪問(wèn),還能保證為選擇執(zhí)行計(jì)劃提供最佳的吞吐量和回轉(zhuǎn)時(shí)間。)必須指定最大尺寸。語(yǔ)句createtypepriceasvarray(100ofnumber;為可變數(shù)組說(shuō)明的一個(gè)樣例。(Oracle8i服務(wù)器引入一種新的擴(kuò)展行標(biāo)識(shí)(ROWID)格式,它支持Oracle8i的諸如表分割、索引分割以及聚集等新功能。切記,Oracle8中行標(biāo)識(shí)唯一標(biāo)識(shí)Oracle數(shù)據(jù)庫(kù)中的一行數(shù)據(jù)。Oracle8i的擴(kuò)展行標(biāo)識(shí)包括了Oracle7的行標(biāo)識(shí)信息,并加入了數(shù)據(jù)對(duì)象編碼。數(shù)據(jù)對(duì)象編碼是注意我們喜歡稱此新行標(biāo)識(shí)為OBARF()的物理地址。在聚集表情況下,相同數(shù)據(jù)塊中不前面我們已多次聽說(shuō)過(guò),Oracle8.0是Oracle引入面向?qū)ο蠹夹g(shù)的第一個(gè)版本。Oracle8.0Oracle公司的第一個(gè)對(duì)象關(guān)系數(shù)據(jù)庫(kù)。注意,我們用了對(duì)象關(guān)系數(shù)據(jù)庫(kù)這個(gè)詞,因?yàn)榇藢?shí)現(xiàn)既 多年來(lái)一直在爭(zhēng)論,究竟下一代主流數(shù)據(jù)庫(kù)技術(shù)是面向?qū)ο蟮臄?shù)據(jù)庫(kù)還是具有面向?qū)ο髷U(kuò)展的SQL數(shù)據(jù)庫(kù)。我們認(rèn)為有幾個(gè)理由將使得面向?qū)ο蟮姆椒ǔ蔀橹髁?。面向?qū)ο蟮臄?shù)據(jù)庫(kù)如Oracle8i對(duì)用戶當(dāng)前的關(guān)系數(shù)據(jù)庫(kù)是向下兼容的,因此用戶可以把當(dāng)前的關(guān)系數(shù)據(jù)庫(kù)和應(yīng)用移植到Oracle8i而不用重寫。然后如果他們?cè)敢獾脑捲侔阉鼈円浦矠榫哂蠴racle8i的面向?qū)ο蟮奶攸c(diǎn)。以前的純面向?qū)ο蟮臄?shù)據(jù)庫(kù)不支持SQL數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)的特定查詢。當(dāng)出現(xiàn)初期設(shè)計(jì)未想到的需求發(fā)生時(shí)這將是一個(gè)大問(wèn)題。標(biāo)準(zhǔn)SQL工具與純面向?qū)ο蟮臄?shù)據(jù)庫(kù)的接口也是一個(gè)問(wèn)題。事實(shí)上,企業(yè)界過(guò)去迅速接受關(guān)系數(shù)據(jù)庫(kù)的原因之一就是創(chuàng)建特別的查詢能力。面向?qū)ο笈c關(guān)系表達(dá)的結(jié)合在Oracle8i中是語(yǔ)義清晰的,比單獨(dú)的關(guān)系或面向?qū)ο蟮谋碚缒闼吹降倪@樣,存在許多令人不得不接受的理由,將使業(yè)內(nèi)人士采納把關(guān)系數(shù)據(jù)庫(kù)轉(zhuǎn)到對(duì)象關(guān)系數(shù)據(jù)庫(kù)。我們最喜歡的理由是基于一個(gè)簡(jiǎn)單的規(guī)則:水總是流過(guò)阻力最小的Apple公司試圖在美國(guó)通過(guò)一項(xiàng)如Apple計(jì)算機(jī)法令嗎?此法令能給它帶來(lái)稅收優(yōu)惠,并有助于它把計(jì)算機(jī)送給學(xué)校。他們知道讓孩子早早熟悉Apple計(jì)算機(jī),當(dāng)這些孩子長(zhǎng)大后進(jìn)入社會(huì)時(shí)就會(huì)要求使用它。這會(huì)帶來(lái)無(wú)限的商機(jī)。OracleOracle,給他們帶來(lái)所期望的結(jié)果。利用此技術(shù)人們舒舒服服地就進(jìn)入了公共世界。只要關(guān)系數(shù)據(jù)庫(kù)帶有面向?qū)ο蠹夹g(shù)的關(guān)鍵功能,人們還是偏愛(ài)OracleOracle8i就是這樣的。在這一點(diǎn)上我們感到Oracle已贏得了戰(zhàn)爭(zhēng)。很多業(yè)內(nèi)知名人士也同意此觀點(diǎn)。為有助于接受和理解Oracle8i對(duì)企業(yè)界產(chǎn)生的影響以及為什么對(duì)象關(guān)系數(shù)據(jù)庫(kù)將成為標(biāo)準(zhǔn),我們將先討論面向?qū)ο蟮募夹g(shù),然后是Oracle8i一瞥和它的關(guān)鍵變動(dòng)。提示對(duì)象關(guān)系數(shù)據(jù)庫(kù)是一個(gè)能存儲(chǔ)數(shù)據(jù)、數(shù)據(jù)間的關(guān)系以及數(shù)據(jù)的行為(即它與其他關(guān)系數(shù)據(jù)庫(kù)方法是在一個(gè)最低級(jí)的層次上,用一系列的表列和行處理數(shù)據(jù)。面向?qū)ο蟮姆椒ㄊ窃诟叩膶哟紊咸幚頂?shù)據(jù)的。它處理包裹著數(shù)據(jù)的對(duì)象。在面向?qū)ο蟮臄?shù)據(jù)庫(kù)中處理客戶時(shí),是處理一個(gè)稱為“客戶”的對(duì)象。當(dāng)處理一個(gè)定單時(shí),引用一個(gè)稱為定單的對(duì)象。因?yàn)閷?duì)象數(shù)據(jù)庫(kù)理解對(duì)象客戶和所有它的關(guān)系,它能容易地處理對(duì)象客戶和所有與它一起工作的對(duì)象。在關(guān)系模型中,定單實(shí)際是許多不同的表的組合,并帶有裝有用來(lái)支持和維護(hù)一個(gè)定單所需的屬性的交表。在對(duì)象模型中,數(shù)據(jù)庫(kù)對(duì)相互間的關(guān)系具有智能性,而在關(guān)系模型中則沒(méi)有。當(dāng)對(duì)關(guān)系模型做出更改時(shí),通常翻譯成一系列的新表,如果模型還要繼續(xù)使用的話,此系列是必須建立的。這些關(guān)系必須由一個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)者來(lái)重新設(shè)計(jì)。3可以看出,處理一個(gè)定單這一簡(jiǎn)單的動(dòng)作需要大量的表。表中行和表列含有組裝序所需的信息。對(duì)定單處理的一個(gè)更改可能會(huì)對(duì)支持它的基表有重要的影響。需要數(shù)據(jù)庫(kù)設(shè)計(jì)者來(lái)設(shè)計(jì)新的關(guān)系和表示這些關(guān)系所涉及到的表。在面向?qū)ο蟮哪P椭?,就不?huì)這樣。事實(shí)上,假定模型改變,此改變將自然地產(chǎn)生和進(jìn)行。3.2.1對(duì)象(bject)是現(xiàn)實(shí)世界實(shí)體的軟件表示。為表示現(xiàn)實(shí)世界的實(shí)體,對(duì)象由屬性和操作信息組成。在面向?qū)ο蟮臄?shù)據(jù)庫(kù)中,數(shù)據(jù)字典不僅僅存放(并使你能理解)一個(gè)對(duì)象與另一個(gè)對(duì)象當(dāng)多個(gè)對(duì)象相互間在行為和屬性方面類似時(shí),可把它們歸入一類(Class)。類、父類、子類、超子類的概念使我們能在抽象層次上組織對(duì)象。把類想象成一個(gè)對(duì)象的模板有助于管理非常復(fù)雜的對(duì)象。用類組織對(duì)象的功能使對(duì)象能利用行為的類似以及其他共有特性。提示類為對(duì)象的模板。面向?qū)ο竽P偷幕A(chǔ)之一是支持封裝(Encapsulation)。所謂封裝指數(shù)據(jù)被綁定于特定的對(duì)象,使對(duì)它的訪問(wèn)僅能通過(guò)該對(duì)象所提供或接受的動(dòng)作來(lái)進(jìn)行。這能避免對(duì)數(shù)據(jù)的非法訪問(wèn)。根據(jù)開發(fā)者的觀點(diǎn),對(duì)象是數(shù)據(jù)和動(dòng)作的封裝,可以將其視為一個(gè)程序塊。它是一個(gè)具有獨(dú)立功能的代碼數(shù)據(jù)集,是一個(gè)非常強(qiáng)有力的功能。馬上就會(huì)有一個(gè)問(wèn)題,即“封裝是否會(huì)違背數(shù)據(jù)獨(dú)立的關(guān)系規(guī)則?”我們認(rèn)為不會(huì)。面向?qū)ο蟮某绦蛟O(shè)計(jì)的支柱之一就是封裝。封裝具有僅能通過(guò)對(duì)象提供或認(rèn)可的動(dòng)作訪問(wèn)該對(duì)象和其數(shù)據(jù)的性質(zhì)。這與關(guān)系數(shù)據(jù)庫(kù)的基本原理數(shù)據(jù)獨(dú)立性相悖。根據(jù)Codd和ChrisDate對(duì)關(guān)系模型的定義,可以用特別獨(dú)立方式訪問(wèn)任何數(shù)據(jù)。粗略一看,可能會(huì)認(rèn)為在封裝時(shí)使數(shù)據(jù)獨(dú)立于應(yīng)用程序很重要。這樣很容易得出結(jié)論,在面向?qū)ο蟮哪P椭?,?shù)據(jù)行為存放在數(shù)據(jù)庫(kù)內(nèi),而非數(shù)據(jù)庫(kù)外。因?yàn)閿?shù)據(jù)行為在數(shù)據(jù)庫(kù)內(nèi),所以它不會(huì)危及應(yīng)用程序與數(shù)據(jù)的獨(dú)立性。應(yīng)用獨(dú)立于數(shù)據(jù)是數(shù)據(jù)獨(dú)立規(guī)則的基礎(chǔ),也是SQL和其他特定工具的基礎(chǔ)。利用數(shù)據(jù)庫(kù)觸發(fā)器 裝,意味著要對(duì)每一種可能的訪問(wèn)數(shù)據(jù)的方法創(chuàng)建一個(gè)觸發(fā)器。經(jīng)驗(yàn)告訴我們這是不可能的。事實(shí)上,如果用數(shù)據(jù)庫(kù)觸發(fā)器來(lái)實(shí)現(xiàn)封裝,整個(gè)數(shù)據(jù)庫(kù)的性能都會(huì)降低。每當(dāng)訪問(wèn)一個(gè)表時(shí),需要激活相應(yīng)的觸發(fā)器。僅此一項(xiàng)就使數(shù)據(jù)庫(kù)要做的工作是平常訪問(wèn)數(shù)據(jù)要做工作的兩倍。另一個(gè)問(wèn)題是很多時(shí)候數(shù)據(jù)庫(kù)觸發(fā)器寫得不好,它會(huì)破壞數(shù)據(jù)庫(kù)的性能。因此,實(shí)際上數(shù)據(jù)庫(kù)觸發(fā)器的應(yīng)用非常有限。我們確實(shí)相信,在關(guān)系數(shù)據(jù)庫(kù)中若使用得當(dāng)?shù)脑?,?shù)據(jù)庫(kù)觸發(fā)器是一個(gè)非常有力的工具。但是它們不能擴(kuò)展成為提供封裝功能的工具??蓴U(kuò)充性(Extensibility)是面向?qū)ο蟮臄?shù)據(jù)庫(kù)增加新對(duì)象及其行為而不會(huì)影響其他對(duì)象和應(yīng)用的一種能力。因?yàn)閿?shù)據(jù)可與對(duì)象封裝在一起,這種可擴(kuò)充的能力為對(duì)象模型提供了處理非標(biāo)準(zhǔn)數(shù)據(jù)的能力。這是一個(gè)非常強(qiáng)有力的功能。繼承(Inheritance)可視為一種代碼共享的形式。當(dāng)定義一個(gè)新對(duì)象類時(shí),可以利用已有類來(lái)定義,這個(gè)已有的類稱為基類。因此當(dāng)創(chuàng)建了一個(gè)低層的類后,它就繼承了在它上面所有類的數(shù)據(jù)和行為?;悓?dǎo)出的類擴(kuò)充或重定義了基類的已有結(jié)構(gòu)和行為。理解繼承的另一方法是把新建類看作已有類的特殊化。通常出于下列原因?qū)С鲱悾合雽?shí)現(xiàn)與某類相同的代碼但行為不同。例如,護(hù)士類和醫(yī)生類不同對(duì)待,雖然它們都屬于醫(yī)院雇員類??赡芟朐黾踊惖男袨?。比方你已創(chuàng)建了一個(gè)特定的類稱為醫(yī)生,現(xiàn)在要給它定做特殊功能的代碼段。這是一種增加系統(tǒng)功能的辦法。函數(shù)/對(duì)象繼 把繼承想象為代碼的積木塊,可以利用已開發(fā)出來(lái)的行為。假定已創(chuàng)建了一個(gè)稱為“states”的對(duì)象。當(dāng)創(chuàng)建另一個(gè)稱為“eastofMississippi”的對(duì)象時(shí),它能繼承基類states表示的所有東西并以此為基礎(chǔ)開始建立。所有的states都有首府,因此eastofMississippi對(duì)象繼多態(tài)(Polymorphism)為兩個(gè)不同的對(duì)象接收到同一消息時(shí)具有不同行為的功能。例如,我們的簡(jiǎn)單動(dòng)作是在太陽(yáng)底下的沙灘上坐一個(gè)小時(shí)。我是一個(gè)膚色非常白皙的人,在太陽(yáng)下坐一個(gè)小時(shí)會(huì)變得像只煮熟的大龍蝦。有的人是加勒比血統(tǒng)的人,他們看起來(lái)就很坦然。雖然第3 類如前所述,這些東西提供了非常強(qiáng)有力的數(shù)據(jù)庫(kù)能力。此數(shù)據(jù)庫(kù)可以自學(xué)習(xí)并重用它所探查到的元素。它能在一個(gè)很簡(jiǎn)單的水平上實(shí)現(xiàn)非常復(fù)雜的對(duì)象。面向?qū)ο蠹夹g(shù)簡(jiǎn)介將有助于你更好地理解Oracle8i以及它領(lǐng)先的數(shù)據(jù)庫(kù)技術(shù)。Oracle8i為對(duì)象關(guān)系數(shù)據(jù)庫(kù)的一個(gè)實(shí)現(xiàn),它的基礎(chǔ)是關(guān)系數(shù)據(jù)庫(kù)。Oracle8i的特點(diǎn)在于引入了面向?qū)ο蟮募夹g(shù)。這里介紹的東西僅是Oracle8Oracle8i支持關(guān)鍵任務(wù)的、企業(yè)范圍的應(yīng)用的Oracle8i。建立Oracle8i的目的是用其管理企業(yè)數(shù)據(jù),不管這些數(shù)據(jù)是什么類型,包括結(jié)構(gòu)化數(shù)據(jù)和Oracle8i能以最便于應(yīng)用的模式存放數(shù)據(jù)。如果需要純關(guān)系模式,就以純關(guān)系模式存放。如果需要利用對(duì)象,Oracle8i有對(duì)象支持。如果要求以多維格式存放,那正對(duì)Oracle8iOracle8i就怎么處理。Oracle公司知道企業(yè)利用技術(shù)的方法很多。有的是在線事務(wù)處理,而有的是決策支持。不Oracle開發(fā)了Oracle8i。表3-l說(shuō)明了Oracl公司在Oracle8i數(shù)據(jù)庫(kù)中開發(fā)的特性,它們?yōu)槠髽I(yè)提供了一攬子方案。 Oracle8i所支持的內(nèi) 構(gòu)造Oracle8i時(shí),任何人都不會(huì)懷疑,Oracle希望占領(lǐng)企業(yè)事務(wù)數(shù)據(jù)庫(kù)市場(chǎng)。Oracle想管理所有數(shù)據(jù)。Oracle公司認(rèn)識(shí)到,要做到這一點(diǎn),必須能管理超大型數(shù)據(jù)庫(kù)。這是數(shù)據(jù)倉(cāng)庫(kù)以及高端OLTP系統(tǒng)所要求的關(guān)鍵。今天沒(méi)人在關(guān)系數(shù)據(jù)庫(kù)上運(yùn)行飛機(jī)票預(yù)定系統(tǒng),但可以用Oracle8i。當(dāng)前世界上有20個(gè)最大的數(shù)據(jù)庫(kù),其中15個(gè)運(yùn)行在DB2上。Oracle8i將改變這種狀況。今天,Oracle8i可以支持超過(guò)一萬(wàn)個(gè)用戶,管理超過(guò)100TB(lTB為1099511627776字節(jié))的數(shù)據(jù)庫(kù)。這種能力對(duì)支持高端OLTP環(huán)境和超大規(guī)模數(shù)據(jù)倉(cāng)庫(kù)是很關(guān)鍵的。Oracle8i為增進(jìn)可管理提示利用Oracle8i可以在單個(gè)節(jié)點(diǎn)超過(guò)100TB分割與并行機(jī)制(Partitioningand早期處理復(fù)雜問(wèn)題的方法之一是將其分解為更小、更簡(jiǎn)單的問(wèn)題。這就是分割的全部?jī)?nèi)容,它把數(shù)據(jù)庫(kù)分解成更小、更易于管理的段,然后在這些段上獨(dú)立進(jìn)行工作。Oracle8i此功能。我們發(fā)現(xiàn)當(dāng)想讓一項(xiàng)工作快速完成時(shí),不可避免地要請(qǐng)求幫助。大家齊心協(xié)力總比單干快得多,這就是并行執(zhí)行的內(nèi)容。把一項(xiàng)作業(yè)分解成多個(gè)更小的可并行處理的作業(yè),過(guò)去費(fèi)時(shí)的作業(yè)現(xiàn)在很快就可完成。讓我們來(lái)進(jìn)一步看看Oracle8i和分割。(1)Oracle8i:表和索引的分割Oracle8i當(dāng)分割表或索引時(shí),表列定義、約束定義、索引表列定義都必須保持相同。例如:如果createindexlife_cereal由表列corey_col、abbey_col、ault_col組成,此索引定義必須與每個(gè)分割片段的定義相同??梢宰龊秃茉敢庾龅母氖谴鎯?chǔ)定義和其他物理屬性。比如可以協(xié)調(diào)每個(gè)分離分割的存儲(chǔ)特性。 例如:可以把一個(gè)非常大的表分解成分割,每一分割存放在分別的表空間中。很多時(shí)候這樣做是為了:改進(jìn)與增強(qiáng)備份和恢復(fù)功能。Oracle第3 A到開頭的客戶名進(jìn)入分割一,使所有以D到Z 表空間ts1。所有其他客戶安排在表空間ts2。注意maxvalue的使用。Oracle8i也有創(chuàng)建全局索引和局部索引的功能。局部索引是僅局限于特定分割的索引,全局索引是覆蓋許多分割的索引。復(fù)雜詳細(xì)的局部索引與全局索引的對(duì)比以及推導(dǎo)已超出本書的范圍。概而言之,當(dāng)某個(gè)索引局限于特定的分割時(shí),可以充分利用它的優(yōu)點(diǎn)。可以協(xié)調(diào)特定分割的性能,也可以最小化對(duì)某個(gè)特定分割采取動(dòng)作所產(chǎn)生的影響。(2)行一致的維護(hù)操作成為可能。Oracle8i也能執(zhí)行select和DML操作,它們不受維護(hù)操作的影響。這就意味著可以采用直接路徑方法裝載數(shù)據(jù)。裝載數(shù)據(jù)的這種方法是將數(shù)據(jù)直接寫進(jìn)物理分區(qū),并且不產(chǎn)生數(shù)據(jù)庫(kù)日志。這可能是Oracle8i數(shù)據(jù)庫(kù)裝載數(shù)據(jù)中最快速的一種方法。對(duì)于支持超大型數(shù)據(jù)庫(kù)而言,這是一種至關(guān)重要的功能。在裝載數(shù)據(jù)的同時(shí),用戶應(yīng)用程序可以對(duì)未進(jìn)行裝載的數(shù)據(jù)庫(kù)分區(qū)執(zhí)行查詢(select)和其他DML操作。提示Oracle8i支持分割獨(dú)立性。意味著像數(shù)據(jù)庫(kù)恢復(fù)或直接路徑裝載這樣的操作可在一個(gè)分割上進(jìn)行,而同時(shí)應(yīng)用系統(tǒng)正在另一個(gè)分割上進(jìn)行DML和SQL操作。分割獨(dú)立性對(duì)涉及數(shù)據(jù)移動(dòng)的操作特別重要。這樣的操作可能要花很長(zhǎng)的時(shí)間(數(shù)分鐘,數(shù)小時(shí)或者數(shù)天)。分割在涉及數(shù)據(jù)移動(dòng)的操作中可在其他分割上把不可得的時(shí)間之窗減到很短(幾秒),假定不存在存放構(gòu)造(全局索引和參照完整性約束)的交互分割。TB的數(shù)據(jù)庫(kù)上分布關(guān)鍵任務(wù)應(yīng)用成為可能,也使得支持成千上萬(wàn)的用戶成為可能??傊指钍且粋€(gè)很好的處理。定律總在你最不情愿時(shí)靈驗(yàn)。記住時(shí)出現(xiàn)?!睌?shù)據(jù)庫(kù)越大就越容易出問(wèn)題。換句話說(shuō),好消息是磁盤驅(qū)動(dòng)的故障率每年只有1/100。壞消息是有500個(gè)磁盤驅(qū)動(dòng)器。要點(diǎn)是在超大型數(shù)據(jù)庫(kù)中會(huì)遇到數(shù)據(jù)庫(kù)災(zāi)難。要很多次地重建數(shù)據(jù)庫(kù)部分。利用Oracle8可以把數(shù)據(jù)庫(kù)分解成更小更易管理的片段,而且裝載這些分割不(2)Oracle8i中可以在DDL和DML實(shí)用程序時(shí)引用。這種在DDL和DML語(yǔ)句中指定分割名的能力,結(jié)合分割獨(dú)立性概念就是為什么能獨(dú)立備份和恢復(fù)分割的原因。 下面的清單給出了一些相應(yīng)于分割信息的SQLOracl8iDDL和DML正如前述,并行機(jī)制是把一個(gè)任務(wù)分解成許多可以并行處理的更小的作業(yè)的能力。過(guò)去要花數(shù)小時(shí)才能完成的作業(yè)現(xiàn)在只要數(shù)分鐘就能完成。Oracle8i3-l示出了具有松耦合機(jī)器都能訪問(wèn)相同的數(shù)據(jù)庫(kù)和磁盤組。使用松耦合一詞表示機(jī)器不共享內(nèi)存。以并行服務(wù)器方式配置Oracle8i的能力為用戶Oracle8i并行服務(wù)器增加了很高的可用性,因?yàn)楝F(xiàn)在用兩臺(tái)以上的機(jī)器來(lái)完成一般由一臺(tái)3-1中,有一臺(tái)機(jī)器不可用,但其他三臺(tái)機(jī)器仍然能訪問(wèn)數(shù)據(jù)庫(kù)。此配置利用非獨(dú)占平臺(tái)提供了高容錯(cuò)功能。這也增加了擴(kuò)充能力和附加處理的能力。如果一臺(tái)機(jī)器不夠用,再加一臺(tái)。Oracle8i并行服務(wù)器在增加另外節(jié)點(diǎn)后性能也得到了提高。圖3- 第3 Oracle8i支持并行select、insert、update、delete以及恢復(fù),這表示可以讓數(shù)據(jù)庫(kù)并行進(jìn)行某些操作。一個(gè)并行處理的操作如下:l)給定任務(wù)(insert、update、delete、select)若對(duì)給定任務(wù)選擇的并行度是3(比如說(shuō)select被分解成3個(gè)獨(dú)立的select語(yǔ)句),每個(gè)并圖3-2示出了此過(guò)程。如果一個(gè)典型的select語(yǔ)句用一個(gè)小時(shí),通過(guò)把它分解成三個(gè)任務(wù),Oracle8i可使它的執(zhí)行和處理時(shí)間大量地減少。過(guò)去一天也處理不完的任務(wù),現(xiàn)在只要較少的時(shí)間就能并行地處理完畢。
圖3-2Oracle8在一個(gè)過(guò)去不可能的程度上支持并行機(jī)制。下表列出引發(fā)并行機(jī)制的許多方法中的少數(shù)幾個(gè)。Oracle8i在數(shù)據(jù)庫(kù)的每個(gè)主要功能中都提供這種能力。在創(chuàng)建一個(gè)表時(shí),可以賦予它一個(gè)并行度,此后不管什么時(shí)間在它上面執(zhí)行一個(gè)語(yǔ)句,并行處理將透明地發(fā)生。Oracle8中并行機(jī)制完全是可配制的,以很少的時(shí)間利用該機(jī)制從數(shù)據(jù)庫(kù)中獲取信息。也可以用它來(lái)并行地恢復(fù)數(shù)據(jù)庫(kù),與過(guò)去相比所花時(shí)間少得多。Oracle8i 正如前面所討論的那樣,關(guān)系模型用來(lái)把數(shù)據(jù)表示成一系列的表列和屬性組成的表。Oracle8i是一個(gè)對(duì)象關(guān)系數(shù)據(jù)庫(kù),這表示它把面向?qū)ο蟮募夹g(shù)嵌入了它的內(nèi)部。記住這一點(diǎn),我們希望能在Oracle8i中建立復(fù)合對(duì)象類型(復(fù)合意指我們希望能夠使對(duì)象套對(duì)象,并利用對(duì)象來(lái)綁定或封裝方法)。不會(huì)令大家失望的是Oracle8i確實(shí)支持復(fù)合對(duì)象類型。 Oracle8i中能通過(guò)說(shuō)明帶有一個(gè)或多個(gè)屬性的名字再結(jié)合一些 PL/SQL代碼聲明一個(gè)對(duì)象類型這屬性可引其他對(duì)的varchar2字段一樣簡(jiǎn)單。而這些對(duì)象類型自然是復(fù)合的,因?yàn)樵试S對(duì)象引用對(duì)象。所引用對(duì)象也允許內(nèi)嵌對(duì)象。一旦對(duì)象被創(chuàng)建,任何地方都引用。正如所看到的這樣,支持復(fù)合對(duì)象是對(duì)象關(guān)系數(shù)據(jù)庫(kù)的基礎(chǔ)。我們進(jìn)一步來(lái)看看某些Oracle8i支持的對(duì)象類型。Oracle8i支持嵌套對(duì)象(NestedObject)的概念。用createtype命令能創(chuàng)建另外的數(shù)據(jù)類型,并createtyperoom_capacity_typeasobject(auditorium_setting /下面的清單給出在conference_facility表中如何引用新建的數(shù)據(jù)類型。不管表conference_facility存在不存在,類型room_capacity_type都存在??梢杂煤芏嗖煌姆椒ê驮诤芏嗖煌牡胤揭迷擃愋?。能以另外的數(shù)據(jù)類型來(lái)擴(kuò)充數(shù)據(jù)庫(kù)是一個(gè)很重要的功能,它也是一個(gè)有助于簡(jiǎn)化處理復(fù)合數(shù)據(jù)類型的復(fù)雜程度的有用功能。提示用createtype33.4.2可變數(shù)組 racle8i的一個(gè)新類型。數(shù)組是元素的有序表。 racle8i中,組稱為RR每個(gè)房間在此大盒子中都有一個(gè)槽,放著房門鑰匙。在racle8i中,數(shù)組是內(nèi)部類型或?qū)ο蟮挠行蚣?,此類型或?qū)ο蠓Q為元素。因?yàn)閞acle8i中的數(shù)組是大小可變的,因此在創(chuàng)建時(shí)必須指明最大尺寸。下面的說(shuō)明使用了RR:createtypepriceasvarray(100)of當(dāng)在Oracle8i中創(chuàng)建此數(shù)組時(shí),Oracle8數(shù)據(jù)庫(kù)并不為它實(shí)際分配數(shù)據(jù)庫(kù)表空間。它僅定義createtablecar(car_namevarchar2(25),car_val在racle8i中支持可變數(shù)組使其功能得到了很好的增強(qiáng)。這個(gè)功能很多時(shí)候使我們的工作Oracle8i能使用類型中的類型(TYPEWithinTYPE)。意思是一個(gè)類型可以是另一個(gè)類型的Oracle8i中創(chuàng)建新類型是很強(qiáng)有力的特點(diǎn),它有助于標(biāo)準(zhǔn)化諸如對(duì)象這樣的類型。通過(guò)創(chuàng)建像地址這樣常用項(xiàng)的公共類型能避免工作中出現(xiàn)的很多問(wèn)題。我們知道,標(biāo)準(zhǔn)化對(duì)于保持正常Oracle8i的另一增強(qiáng)功能是能綁定數(shù)據(jù)和代碼。我們將這些代碼段稱為方法(Method)記住方法的定義:方法為過(guò)程或函數(shù),它是對(duì)象類型定義的一部分,并且可在對(duì)象類型的數(shù)據(jù)屬性上進(jìn)行操作。這是實(shí)現(xiàn)封裝的必由之路,是面向?qū)ο蟮臄?shù)據(jù)庫(kù)的基礎(chǔ)。下列的清單給出連接到某些方法的類型定義:Oracle8i提供了將代碼和數(shù)據(jù)綁在一起的強(qiáng)有力的功能。例中,創(chuàng)建了這項(xiàng)業(yè)務(wù)特有的一個(gè)新數(shù)據(jù)類型。因?yàn)樗且粋€(gè)數(shù)據(jù)類型,可以在數(shù)據(jù)庫(kù)范圍內(nèi)引用它以保證一致性。例中也示出了將數(shù)據(jù)類型good_bad_type與某些代碼綁在一起,并且,在此是把它與函數(shù)Neutral綁在一起。這樣就把代碼和數(shù)據(jù)緊密地聯(lián)系起來(lái)了。這比傳統(tǒng)的數(shù)據(jù)庫(kù)觸發(fā)器要強(qiáng)有力得多。對(duì)象套對(duì)象和數(shù)據(jù)連代碼的這種能力使Oracle8i成了一個(gè)非常強(qiáng)有力的工具。經(jīng)驗(yàn)表明,標(biāo)準(zhǔn)化在關(guān)鍵任務(wù)中是一個(gè)非常需要的特性。把方法與類型綁在一起的功能將有
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年房產(chǎn)租賃權(quán)益轉(zhuǎn)移合同
- 2024年情侶共同居住權(quán)利義務(wù)規(guī)定
- 2024年新建棚戶區(qū)購(gòu)房意向書
- 2024年式假山施工合同書樣本
- 04版定制家具制造合同
- 2024年數(shù)據(jù)信息采集授權(quán)書
- 2024年教育機(jī)構(gòu)裝潢工程
- 公司總經(jīng)理秘書下半年計(jì)劃(3篇)
- 2024年承包合同:地鐵隧道工程承包合同
- 2024年新一代信息技術(shù)轉(zhuǎn)讓與合作合同
- 二年級(jí)排球教案
- 小數(shù)乘除法豎式計(jì)算專項(xiàng)練習(xí)題大全(每日一練共15份)
- 天津市和平區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期中考試英語(yǔ)試題
- 2024版抗菌藥物DDD值速查表
- 小學(xué)二年級(jí)數(shù)學(xué)上冊(cè)期中試卷(全套)
- DB11T 1580-2018 生產(chǎn)經(jīng)營(yíng)單位安全生產(chǎn)應(yīng)急資源調(diào)查規(guī)范
- 各省中國(guó)鐵路限公司2024招聘(目前38183人)高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 猜想04整式的乘法與因式分解(易錯(cuò)必刷30題10種題型專項(xiàng)訓(xùn)練)
- 2024二十屆三中全會(huì)知識(shí)競(jìng)賽題庫(kù)及答案
- 預(yù)防接種工作規(guī)范(2023年版)解讀課件
- 醫(yī)院檢驗(yàn)外包服務(wù)項(xiàng)目招標(biāo)文件
評(píng)論
0/150
提交評(píng)論