對象數(shù)據(jù)庫 VS 關(guān)系數(shù)據(jù)庫
2024-07-21 02:06:48
供稿:網(wǎng)友
對象數(shù)據(jù)庫 vs 關(guān)系數(shù)據(jù)庫
我們將對象數(shù)據(jù)庫管理系統(tǒng)(odbms)定義為一個(gè)集成了數(shù)據(jù)庫能力與面向?qū)ο缶幊陶Z言能力的數(shù)據(jù)庫管理系統(tǒng)(dbms),odbms使數(shù)據(jù)庫對象看起來像是已有的一個(gè)或多個(gè)程序設(shè)計(jì)語言中的程序設(shè)計(jì)語言以象。——rick cattell,omg-93委員會(huì)主席。
odbms在多用戶客戶機(jī)/服務(wù)器環(huán)境中提供了持久性存儲(chǔ)器。odbms可以處理對象的并行訪問,提供鎖定和事務(wù)保護(hù),保護(hù)對象存儲(chǔ)器免遭各種類型的威脅,照管像備份和恢復(fù)之類傳統(tǒng)任務(wù)。odbms這所以與關(guān)系數(shù)據(jù)庫不同,是因?yàn)閛dbms存儲(chǔ)的是對象,而不是表格。對象的引用通過持久性標(biāo)識(shí)(pid)進(jìn)行,pid可以獨(dú)一無二地識(shí)別各個(gè)對象,可以用來在對象之間建立標(biāo)記和容器關(guān)系。odbms還加強(qiáng)了封裝,支持繼承。odbms結(jié)合了對象屬性和傳統(tǒng)的dbms功能,如鎖定、保護(hù)、事務(wù)處理、查詢、版式本、并發(fā)和持久性。
odbms不是利用分離的語言(如sql)定義、檢索和處理數(shù)據(jù),而是利用類定義和傳統(tǒng)的面向?qū)ο蟮某绦蛘Z言(通常是c++、smalltalk和java語言)構(gòu)造來定義和訪問數(shù)據(jù)。odbms只來過是存儲(chǔ)器內(nèi)語言數(shù)據(jù)結(jié)構(gòu)的多用戶、持久性擴(kuò)展。換句話說,客戶就是c++或是java程序,服務(wù)器就是odbms——沒有像sql和rpc這樣的可視中間對象。odbms將數(shù)據(jù)庫能力直接集成進(jìn)語言。
odbms的價(jià)值。很顯然,最好是以自然的形式存儲(chǔ)那些對象,而不是將數(shù)據(jù)修飾得光光滑滑或撕得七零八落之后放進(jìn)關(guān)系表格中。
對于那些數(shù)據(jù)復(fù)雜難以在表格里簡單排列的用戶來說,odbms特別適合。odbms曾經(jīng)長期是學(xué)者和oo研究人員極為感興趣的領(lǐng)域。最早的商品化odbms出現(xiàn)在1986年,是servio公司(現(xiàn)在的gemstone公司)和ontos公司推出的。后來(九十年代)object design(odi)、versant、objectivity、o2 technology、poet、ibex、unisql和adb matisse等公司也加入了這個(gè)開拓行列。這些odbms廠商首先瞄準(zhǔn)了那些復(fù)雜數(shù)據(jù)結(jié)構(gòu)和長命期事務(wù)處理的應(yīng)用程序——包括計(jì)算機(jī)輔助設(shè)計(jì)、case和智能辦公室等。隨著多媒體、群件、公布式對象和萬維網(wǎng)技術(shù)的出現(xiàn),odbms與那些深?yuàn)W難懂的特性現(xiàn)在變成了客戶機(jī)/服務(wù)器系統(tǒng)的主流要求。odbms技術(shù)填補(bǔ)關(guān)系數(shù)據(jù)庫最弱的那些空隙——復(fù)雜數(shù)據(jù)、版式本和長生命期事務(wù)、持久性對象存儲(chǔ)、繼承和用戶定義的數(shù)據(jù)類型等等。
以下是odbms廠商開拓的各個(gè)特性:
n 自由創(chuàng)建新的信息類型
n 快速存取
n 組合結(jié)構(gòu)的靈活視圖
n 與面向?qū)ο蟮某绦蛘Z言緊密集成
n 利用多繼承支持可定制的信息結(jié)構(gòu)
n 支持版本事務(wù)、嵌套事務(wù)和長生命期事務(wù)
n 分布式對象儲(chǔ)庫
n 支持復(fù)合對象的生命期管理
對象狂已經(jīng)掌握了整個(gè)行業(yè)。面向?qū)ο蠹夹g(shù)支持者正在宣告,對象關(guān)系數(shù)據(jù)庫和odbms將成為醫(yī)治關(guān)系技術(shù)的所謂弱點(diǎn)的良藥。這純屬胡說……在數(shù)據(jù)庫上直接地和不加區(qū)分地就應(yīng)用面向?qū)ο蠹夹g(shù),將再次引入關(guān)系數(shù)據(jù)庫花了二十年才克服的那些問題。
在用戶中間,很少有人會(huì)懷疑odbms最終將成為rdbms的后繼技術(shù)。在詩人william blake的比喻中,年輕的革命上帝orc已經(jīng)開始衰老,變成冷冰冰的暴君urizen——戒律和標(biāo)準(zhǔn)的守護(hù)人。
我們可以兩者兼得。要點(diǎn)是將這兩項(xiàng)技術(shù)結(jié)合起來,而不是相互扔泥塊。對二十多處踏踏實(shí)實(shí)的關(guān)系數(shù)據(jù)庫研究的開發(fā)熟視無睹,不加以利用,就不太應(yīng)該了。
date和pascal都承認(rèn)目前的sql數(shù)據(jù)庫實(shí)現(xiàn)有缺點(diǎn);但他們兩人都有覺得關(guān)系模型本身能夠處理odbms將解決的那些問題,odbms有能力,可以利用嵌套關(guān)系、域(或用戶定義的數(shù)據(jù)封裝類型)以及一種比sql更強(qiáng)大的面向集合語言在關(guān)系技術(shù)世界里近似。這些特性完成這項(xiàng)工作,無需追逐對象指針或操縱低級的專用語言記錄結(jié)構(gòu)。沒有必要減輕關(guān)系理論的聯(lián)合能力。開發(fā)者沒有必要退回到用手工方法去最佳化或重新優(yōu)化應(yīng)用程序的性能——將時(shí)鐘倒拔回去了。date認(rèn)為域和對象是同一回事,解決辦法是由關(guān)系技術(shù)廠商擴(kuò)展其系統(tǒng),以包括“適當(dāng)?shù)挠蛑С?#8221;。
stonebraker注意到純粹的odbms還缺乏復(fù)雜搜索、查詢優(yōu)化器和服務(wù)器可擴(kuò)展性等領(lǐng)域的功能。而且,許多odbms在用戶編程的同一個(gè)地址空間里運(yùn)行其產(chǎn)品。這意味著在客戶應(yīng)用程序和odbms之間沒有任何屏蔽。此外,與關(guān)系dbms相比,odbms的市場突破還極小。最后,對象/關(guān)系和sql數(shù)據(jù)類型擴(kuò)展器正在rdbms語言政治協(xié)商環(huán)境內(nèi)滿足某些對象要求。
支持odbms的人們覺得,除了僅僅擴(kuò)展關(guān)系模型之外,還有更多的方法。事實(shí)上,他們已經(jīng)拒絕了sql3,理由是不足(正在達(dá)成休戰(zhàn)協(xié)定)。odbms頑固分子認(rèn)為他們正在為一個(gè)新創(chuàng)世界創(chuàng)造更好的管道系統(tǒng),在這個(gè)世界里信息系統(tǒng)完全建產(chǎn)在對象基礎(chǔ)之上。在一個(gè)由orb、對象服務(wù)、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言和object web組成的管道里,關(guān)系數(shù)據(jù)庫成了阻礙。所需要的正是一個(gè)純粹的odbms。為什么要堅(jiān)持用blob、存儲(chǔ)過程和用戶定義類型來擴(kuò)展一個(gè)像sql這樣的舊基礎(chǔ)呢?他們寧愿自始至終堅(jiān)持用對象技術(shù),有時(shí)從sql借來某些東西(比如查詢)。他們還在創(chuàng)建一個(gè)多用戶、堅(jiān)實(shí)的基礎(chǔ)、包括鎖定、事物處理、恢復(fù)和各種工具。
當(dāng)然我們這里談?wù)摰氖莇avid和goliath。sql數(shù)據(jù)庫是目前的山中之王,它們擁有巨額的開發(fā)經(jīng)費(fèi),在從mis商店到客戶機(jī)/服務(wù)器低端市場里有著極好的市場接受度。是不是因?yàn)閛dbms能與更好地處理對象,這個(gè)山中之王就會(huì)被黜?這還有待進(jìn)一步地觀察。不過,正如esther dyson表達(dá)的,“利用表格存儲(chǔ)對象,就象是將汽車開回家,然后拆成零碎件放進(jìn)車庫里,早晨可以再把汽車裝配起來。但是人們不禁要問:這是不是泊車的最有效的方法呢”