一、關(guān)系數(shù)據(jù)庫系統(tǒng)的優(yōu)點(diǎn)a.靈活性和建庫的簡單性:從軟件開發(fā)的前景來看,用戶與關(guān)系數(shù)據(jù)庫編程之間的接口是靈活與友好的。
目前在多數(shù)RDDMS產(chǎn)品中使用標(biāo)準(zhǔn)查詢語言SQL,允許用戶幾乎毫無差別地從一個產(chǎn)品到另一個產(chǎn)品存取信息。與關(guān)系數(shù)據(jù)庫接口的應(yīng)用軟件具有相似的程序訪問機(jī)制,提供大量標(biāo)準(zhǔn)的數(shù)據(jù)存取方法。b.結(jié)構(gòu)簡單:從數(shù)據(jù)建模的前景看,關(guān)系數(shù)據(jù)庫具有相當(dāng)簡單的結(jié)構(gòu)(元組),可為用戶或程序提供多個復(fù)雜的視圖。數(shù)據(jù)庫設(shè)計和規(guī)范化過程也簡單易行和易于理解。由于關(guān)系數(shù)據(jù)庫的強(qiáng)有力的、多方面的功能,已經(jīng)有效地支持許多數(shù)據(jù)庫納應(yīng)用。
二、關(guān)系數(shù)據(jù)庫系統(tǒng)的缺點(diǎn)a.?dāng)?shù)據(jù)類型表達(dá)能力差:從下一代應(yīng)用軟件的發(fā)展角度來看,關(guān)系數(shù)據(jù)庫的根本缺陷在于缺乏直接構(gòu)造與這些應(yīng)用有關(guān)的信息的類型表達(dá)能力,缺乏這種能力將產(chǎn)生以下有害的影響,例如:大多數(shù)RDBMS產(chǎn)品所采用的簡單類型在重構(gòu)復(fù)雜數(shù)據(jù)的過程中將會出現(xiàn)性能問題;數(shù)據(jù)庫設(shè)計過程中的額外復(fù)雜性;RDBMS產(chǎn)品和編程語言在數(shù)據(jù)類型方面的不協(xié)調(diào)。大多數(shù)現(xiàn)代的RDBMS產(chǎn)品已成熟地用于商務(wù)和財政方面,而這些領(lǐng)域不要求很高和很復(fù)雜的數(shù)據(jù)模型。雖然這些產(chǎn)品多多少少克服了一些以上所述的缺點(diǎn),但從理論上看關(guān)系數(shù)據(jù)模型不直接支持復(fù)雜的數(shù)據(jù)類型,這是由于第一范式的要求,所有的數(shù)據(jù)必須轉(zhuǎn)換為簡單的類型,如整數(shù)、實(shí)數(shù)、雙精度數(shù)和字符串。對于工程應(yīng)用來說,這種不能支持復(fù)雜數(shù)據(jù)類型的典型結(jié)果就是需要額外地分解數(shù)據(jù)結(jié)構(gòu)工作,這些被分解的結(jié)構(gòu)不能直接表示應(yīng)用數(shù)據(jù),且從基本成分重構(gòu)時也非常繁瑣和費(fèi)時間。b.復(fù)雜查詢功能差:關(guān)系數(shù)據(jù)庫系統(tǒng)的某些優(yōu)點(diǎn)也同時是它的不足之處。雖然SQL語言為數(shù)據(jù)查詢提供了很好的定義方法,但當(dāng)用于復(fù)雜信息的查詢時可能是非常繁瑣的。此外,在工程應(yīng)用時規(guī)范化的過程通常會產(chǎn)生大量的簡單表。在這種環(huán)境下由存取信息產(chǎn)生的查詢必須處理大量的表和復(fù)雜的碼聯(lián)系以及連接運(yùn)算。除非這些查詢以固定的例行程序方式提供,否則用戶就必須對SQL非常熟悉,以便適當(dāng)?shù)貫g覽數(shù)據(jù)庫,查出所需的信息。然而,一旦查詢方式按固定例行程序方式進(jìn)行,用戶最終就進(jìn)行應(yīng)用軟件的常規(guī)維護(hù)。但應(yīng)用或人機(jī)接口軟件的變化又可能要求經(jīng)常修改例行的查詢,數(shù)據(jù)庫結(jié)構(gòu)的變化也可能導(dǎo)致例行查詢程序以及應(yīng)用或人機(jī)接口軟件的失效。由于這些原因,關(guān)系數(shù)據(jù)庫系統(tǒng)的維護(hù)開銷可能是很大的。由于關(guān)系數(shù)據(jù)庫不能提供足夠的構(gòu)造能力及性能方面的原因,在進(jìn)行較復(fù)雜的數(shù)據(jù)庫設(shè)計過程中,不可能將許多工程問題直接分解成一些簡單的部分。由于缺乏直接指針存取方法,所以查詢有關(guān)的信息需要花費(fèi)時間。c.支持長事務(wù)能力差;由于RDBMS記錄鎖機(jī)制的顆粒度限制,對于支持多種記錄類型的大段數(shù)據(jù)的登記和檢查來說,簡單的記錄級的鎖機(jī)制是不夠的,但基于鍵值關(guān)系的較復(fù)雜的鎖機(jī)制來說卻很難推廣也難以實(shí)現(xiàn)。d.環(huán)境應(yīng)變能力差:在要求系統(tǒng)頻繁改變的環(huán)境下,關(guān)系系統(tǒng)的成本高且修改困難。在工程應(yīng)用中支持"模式演變"(schema evolution)的功能是很重要的,而RDBMS不容易支持這種功能。另外,關(guān)系數(shù)據(jù)庫和編程語言所提供的數(shù)據(jù)類型的不一致,使得從一個環(huán)境轉(zhuǎn)換到另一個環(huán)境時需要多至30%的附加代碼。
三、面向?qū)ο髷?shù)據(jù)庫系統(tǒng)的優(yōu)點(diǎn)a.能有效地表達(dá)客觀世界和有效地查詢信息:面向?qū)ο蠓椒ňC合了在關(guān)系數(shù)據(jù)庫中發(fā)展的全部工程原理、系統(tǒng)分析、軟件工程和專家系統(tǒng)領(lǐng)域的內(nèi)容。面向?qū)ο蟮姆椒ǚ弦话闳说乃季S規(guī)律、即將現(xiàn)實(shí)世界分解成明確的對象,這些對象具有屬性和行為。系統(tǒng)設(shè)計人員用ODBMS創(chuàng)建的計算機(jī)模型能更直接反映客觀世界,最終用戶不管是否是計算機(jī)專業(yè)人員,都可以通過這些模型理解和評述數(shù)據(jù)庫系統(tǒng)。工程中的一些問題對關(guān)系數(shù)據(jù)庫來說顯得太復(fù)雜,不采取面向?qū)ο蟮姆椒ê茈y實(shí)現(xiàn)。從構(gòu)造復(fù)雜數(shù)據(jù)的前景看,信息不再需要手工地分解為細(xì)小的單元。ODBMS擴(kuò)展了面向?qū)ο蟮木幊汰h(huán)境,該環(huán)境可以支持高度復(fù)雜數(shù)據(jù)結(jié)構(gòu)的直接建模。b.可維護(hù)性好:在耦合性和內(nèi)聚性方面,面向?qū)ο髷?shù)據(jù)庫的性能尤為突出。這使得數(shù)據(jù)庫設(shè)計者可在盡可能少影響現(xiàn)存代碼和數(shù)據(jù)的條件下修改數(shù)據(jù)庫結(jié)構(gòu),在發(fā)現(xiàn)有不能適合原始模型的特殊情況下,能增加一些特殊的類來處理這些情況而不影響現(xiàn)存的數(shù)據(jù)。如果數(shù)據(jù)庫的基本模式或設(shè)計發(fā)生變化,為與模式變化保持一致,數(shù)據(jù)庫可以建立原對象的修改版本。這種先進(jìn)的耦合性和內(nèi)聚性也簡化了在異種硬件平臺的網(wǎng)絡(luò)上的分布式數(shù)據(jù)庫的運(yùn)行。c.能很好地解決"阻抗不匹配"(impedance mismatch)問題。面向?qū)ο髷?shù)據(jù)庫還解決了一個關(guān)系數(shù)據(jù)庫運(yùn)行中的典型問題:應(yīng)用程序語言與數(shù)據(jù)庫管理系統(tǒng)對數(shù)據(jù)類型支持的不一致問題,這一問題通常稱之為阻抗不匹配問題。
四、面向?qū)ο髷?shù)據(jù)庫系統(tǒng)的缺點(diǎn)a.技術(shù)還不成熟。面向?qū)ο髷?shù)據(jù)庫技術(shù)的根本缺點(diǎn)是這項技術(shù)還不成熟,還不廣為人知。與許多新技術(shù)一樣,風(fēng)險就在于應(yīng)用。從事面向?qū)ο髷?shù)據(jù)庫產(chǎn)品和編程環(huán)境的銷售活動的公司還不令人信服,因為這些公司的歷史還相當(dāng)短暫,就該十幾年前關(guān)系數(shù)據(jù)庫的情況一樣。ODBMS如今還存在著標(biāo)準(zhǔn)化問題,由于缺乏標(biāo)準(zhǔn)化,許多不同的ODBMS之間不能通用。此外,是否修改SQL以適應(yīng)面向?qū)ο蟮某绦?,還是用新的對象查詢語言來代替它,目前還沒有解決,這些因素表明隨著標(biāo)準(zhǔn)化的出現(xiàn),ODBMS還會變化。b.面向?qū)ο蠹夹g(shù)需要一定的訓(xùn)練時間:有面向?qū)ο笙到y(tǒng)開發(fā)經(jīng)驗的公司的專業(yè)人員認(rèn)為,要成功地開發(fā)這種系統(tǒng)的關(guān)鍵是正規(guī)的訓(xùn)練,訓(xùn)練之所以重要是由于面向?qū)ο髷?shù)據(jù)庫的開發(fā)是從關(guān)系數(shù)據(jù)庫和功能分解方法轉(zhuǎn)化而來的,人們還需要學(xué)習(xí)一套新的開發(fā)方法使之與現(xiàn)有技術(shù)相結(jié)合。此外,面向?qū)ο笙到y(tǒng)開發(fā)的有關(guān)原理才剛開始具有雛形,還需一段時間在可靠性、成本等方面令人可接受。c.理論還需完善:從正規(guī)的計算機(jī)科學(xué)方面看,還需要設(shè)計出堅實(shí)的演算或理論方法來支持ODBMS的產(chǎn)品。此外,既不存在一套數(shù)據(jù)庫設(shè)計方法學(xué),也沒有關(guān)于面向?qū)ο蠓治龅囊惶浊逦母拍钅P停鯓釉O(shè)計獨(dú)立于物理存儲的信息還不明確。面向?qū)ο髷?shù)據(jù)庫和關(guān)系數(shù)據(jù)庫系統(tǒng)之間的爭論不同于70年代關(guān)系數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫的爭論,那時的爭論是在同一主要領(lǐng)域(即商業(yè)事務(wù)應(yīng)用)中究竟是誰代替誰的問題?,F(xiàn)在是肯定關(guān)系數(shù)據(jù)庫系統(tǒng)基本適合商業(yè)事務(wù)處理的前提下,對非傳統(tǒng)的應(yīng)用,特別是工程中的應(yīng)用用面向?qū)ο髷?shù)據(jù)庫來補(bǔ)充不足的問題。面向?qū)ο髷?shù)據(jù)庫系統(tǒng)將成為下一代數(shù)據(jù)庫的典型代表,并和關(guān)系數(shù)據(jù)庫系統(tǒng)并存(而不是替代)。它將在不同的應(yīng)用領(lǐng)域支持不同的應(yīng)用需求。