論面向?qū)ο蟮臄?shù)據(jù)庫(kù)技術(shù)論文
論文摘要:面向?qū)ο蟮臄?shù)據(jù)庫(kù)極有可能是數(shù)據(jù)庫(kù)發(fā)展的方向,關(guān)系型數(shù)據(jù)庫(kù)已顯得力不從心,面向?qū)ο蠹夹g(shù)已經(jīng)滲透到了數(shù)據(jù)庫(kù)領(lǐng)域,把面向?qū)ο蟮姆椒ê蛿?shù)據(jù)庫(kù)技術(shù)結(jié)合起來(lái)可以使數(shù)據(jù)庫(kù)系統(tǒng)的分析、設(shè)計(jì)最大程度地與人們對(duì)客觀世界的認(rèn)識(shí)相一致。面向?qū)ο髷?shù)據(jù)庫(kù)的技術(shù)機(jī)理并不高深,但它的設(shè)計(jì)思想?yún)s極有價(jià)值。
論文關(guān)鍵詞:關(guān),鍵,詞,數(shù)據(jù)庫(kù),面向?qū)ο?技術(shù)
(JinchangMunicipalPublicSecurityBureauGansuJingchang737100)隨著應(yīng)用的日趨復(fù)雜和智能化,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)的缺點(diǎn)一點(diǎn)點(diǎn)的暴露出來(lái),人們迫切希望產(chǎn)生一種新的數(shù)據(jù)庫(kù)解決方案來(lái)適應(yīng)這些復(fù)雜需求。一種新的解決方案呼之欲出。而這個(gè)解決方案極有可能就是面向?qū)ο髷?shù)據(jù)庫(kù)技術(shù)。面向?qū)ο髷?shù)據(jù)庫(kù)的技術(shù)機(jī)理并不高深,但它的設(shè)計(jì)思想?yún)s極有價(jià)值。在傳統(tǒng)的面向?qū)ο髴?yīng)用開發(fā)中,由于傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)開發(fā)風(fēng)格完全不同于面向?qū)ο箫L(fēng)格,使得許多程序員難以從復(fù)雜的SQL編程中解脫出來(lái)(盡管已經(jīng)有一些成熟的ORM技術(shù)框架,如Hibernate,但程序員仍需要做大量的數(shù)據(jù)庫(kù)代碼工作),從而也無(wú)法從實(shí)質(zhì)上提高工作效率。
1、面向?qū)ο髷?shù)據(jù)庫(kù)技術(shù)概述
面向?qū)ο笫钱?dāng)前計(jì)算機(jī)界關(guān)心的重點(diǎn),面向?qū)ο笫且环N新的方法學(xué),也是一種認(rèn)知方法學(xué)。它是一種支持模塊化設(shè)計(jì)和軟件重用的實(shí)際可行的編程方法,它把程序間的邏輯活動(dòng)建立在對(duì)象間的消息傳遞之上,且設(shè)計(jì)上更加符合現(xiàn)實(shí)世界,更加自然,所以面向?qū)ο蠓椒ǖ玫搅烁鼜V泛的應(yīng)用。
面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)是為了滿足新的數(shù)據(jù)庫(kù)應(yīng)用需要而產(chǎn)生的新一代數(shù)據(jù)庫(kù)系統(tǒng)。在數(shù)據(jù)庫(kù)中提供面向?qū)ο蟮募夹g(shù)是為了滿足特定應(yīng)用的需要。隨著許多基本設(shè)計(jì)應(yīng)用(如MACD和ECAD)中的數(shù)據(jù)庫(kù)向面向?qū)ο髷?shù)據(jù)庫(kù)的過(guò)渡,面向?qū)ο笏枷胍仓饾u延伸到其它涉及復(fù)雜數(shù)據(jù)的應(yīng)用中,其中包括輔助軟件工程(CASE)、計(jì)算機(jī)輔助印刷(CAP)和材料需求計(jì)劃(MRP)。這些應(yīng)用如同設(shè)計(jì)應(yīng)用一樣在程序設(shè)計(jì)方面和數(shù)據(jù)類型方面都是數(shù)據(jù)密集型的,它們需要識(shí)別于類型關(guān)系的存儲(chǔ)技術(shù),并能對(duì)相近數(shù)據(jù)備份進(jìn)行調(diào)整。
セ褂行磯嚶τ靡求多媒體數(shù)據(jù)庫(kù)。它們要求以集成方式和文本或圖形信息一起處理關(guān)系數(shù)據(jù),這些應(yīng)用包括高級(jí)辦公室系統(tǒng)的其它文檔管理系統(tǒng)。
ッ嫦蚨韻笫據(jù)庫(kù)從面向程序設(shè)計(jì)語(yǔ)言的擴(kuò)充著手使之成為基于面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的面向?qū)ο髷?shù)據(jù)庫(kù)。例如:ONTOS、ORION等,它們均是C++的擴(kuò)充,熟悉C++的人均能很方便地掌握并使用這類系統(tǒng)。
面向?qū)ο髷?shù)據(jù)庫(kù)研究的另一個(gè)進(jìn)展是在現(xiàn)有關(guān)系數(shù)據(jù)庫(kù)中加入許多純面向?qū)ο髷?shù)據(jù)庫(kù)的功能。在商業(yè)應(yīng)用中對(duì)關(guān)系模型的面向?qū)ο髷U(kuò)展著重于性能優(yōu)化,處理各種環(huán)境的對(duì)象的物理表示的優(yōu)化和增加SQL模型以賦予面向?qū)ο筇卣。如UNISQL、O2等,它們均具有關(guān)系數(shù)據(jù)庫(kù)的基本功能,采用類似于SQL的語(yǔ)言,用戶很容易掌握。
2.面向?qū)ο髷?shù)據(jù)庫(kù)的優(yōu)點(diǎn)
面向?qū)ο髷?shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)技術(shù)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法相結(jié)合的產(chǎn)物,由于同是面向?qū)ο蠓椒▽W(xué),所以其具有了所有面向?qū)ο蟮膬?yōu)點(diǎn)。同時(shí),由于數(shù)據(jù)庫(kù)主要操作的'是集合(而不是單個(gè)數(shù)據(jù)),所以其又具有自身的特點(diǎn)和優(yōu)點(diǎn)。
。1)提高數(shù)據(jù)庫(kù)開發(fā)效率
由于面向?qū)ο蟊旧淼挠H和性,使得人們可以使用更自然的方式來(lái)開發(fā)數(shù)據(jù)庫(kù),而不必像關(guān)系數(shù)據(jù)庫(kù)那樣考慮到方方面面諸如規(guī)范到第幾范式等等問(wèn)題,大大的提高了開發(fā)效率。同時(shí),由于面向?qū)ο箝_發(fā)的流行,人們往往更熱衷于使用面向?qū)ο蟮姆绞剿伎紗?wèn)題,這也無(wú)形中提高了數(shù)據(jù)庫(kù)系統(tǒng)的開發(fā)效率。再有,應(yīng)用于數(shù)據(jù)庫(kù)間的交互將變得更加直接和方便,因?yàn)榧尤霊?yīng)用也是面向?qū)ο蟮,那么可以將面向(qū)ο髷?shù)據(jù)庫(kù)中的對(duì)象直接映射到應(yīng)用程序的對(duì)象中。比如當(dāng)前J2EE開發(fā)中流行的EJB以及開源的Hibernate等框架技術(shù)就是在關(guān)系數(shù)據(jù)數(shù)據(jù)庫(kù)與面向?qū)ο箝g搭橋方面做了積極的工作。而對(duì)于面向?qū)ο髷?shù)據(jù)庫(kù)來(lái)數(shù),EJB和Hibernate等中間技術(shù)將顯得無(wú)用,人們可以直接將數(shù)據(jù)庫(kù)中的信息轉(zhuǎn)換到基于面向?qū)ο蠹夹g(shù)應(yīng)用程序的對(duì)象中,而且效率更高(因?yàn)闊o(wú)需中間層的轉(zhuǎn)化)。程序員可以徹底的從持久層復(fù)雜的開發(fā)邏輯中解放出來(lái),投入跟為重要的業(yè)務(wù)邏輯開發(fā)中,而且再也不用寫復(fù)雜的SQL語(yǔ)句,因?yàn)閼?yīng)用中的編程和數(shù)據(jù)庫(kù)中的編程時(shí)一致的【1】。
。2)數(shù)據(jù)庫(kù)本身可以完成復(fù)雜的邏輯
由于使用了面向?qū)ο蠓椒▽W(xué),在數(shù)據(jù)庫(kù)中編寫復(fù)雜的邏輯變得簡(jiǎn)單了,于是,人們可以在數(shù)據(jù)庫(kù)中加入復(fù)雜的邏輯,而且可以和在應(yīng)用中添加的邏輯相互銜接。目前,主流數(shù)據(jù)庫(kù)都提供了過(guò)程化查詢語(yǔ)言,但畢竟還是過(guò)程化的,它天生就不如面向?qū)ο蠓椒ǜ咝Ш?jiǎn)單,因此人們往往并不想使用過(guò)程化查詢語(yǔ)言實(shí)現(xiàn)太復(fù)雜的邏輯,因?yàn)樗鼘?dǎo)致開發(fā)和維護(hù)困難,提升成本。
在數(shù)據(jù)庫(kù)中使用數(shù)據(jù)庫(kù)查詢語(yǔ)言實(shí)現(xiàn)復(fù)雜的基于面向?qū)ο蟮臉I(yè)務(wù)邏輯是面向?qū)ο髷?shù)據(jù)庫(kù)的一大亮點(diǎn)。這不僅使得程序的開發(fā)和維護(hù)變得簡(jiǎn)單,而且執(zhí)行性能也得到了提升(因?yàn)樵跀?shù)據(jù)中實(shí)現(xiàn)的邏輯總比在應(yīng)用中實(shí)現(xiàn)的邏輯快那么一兩步)。
。3)低冗余性和高效性
在關(guān)系數(shù)據(jù)庫(kù)中,低冗余和高效一直是魚和熊掌不可兼得的狀態(tài)。低冗余往往會(huì)使得查詢困難并最終導(dǎo)致數(shù)據(jù)庫(kù)效率降低(因?yàn)閷a(chǎn)生可觀的笛卡爾集或者生成復(fù)雜的查詢優(yōu)化方案,從而降低效率)。而在面向?qū)ο髷?shù)據(jù)庫(kù)中,查詢將變成對(duì)對(duì)象ID和消息的傳遞(也就是方法調(diào)用),從而消除了大范圍的笛卡爾集帶來(lái)的困擾,提高數(shù)據(jù)庫(kù)的訪問(wèn)效率。同時(shí),由于面向?qū)ο蟮姆庋b性,使得面向?qū)ο髷?shù)據(jù)庫(kù)在設(shè)計(jì)程序時(shí)天生就已經(jīng)達(dá)到了相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)中的第三范式的設(shè)計(jì)準(zhǔn)則。因此面向?qū)ο蟮臄?shù)據(jù)庫(kù)天生就是低冗余的。
(4)提高軟件的可重用性
原因很簡(jiǎn)單,因?yàn)槊嫦驅(qū)ο蟮脑O(shè)計(jì)思想本來(lái)就要求你把業(yè)務(wù)邏輯封裝到一個(gè)個(gè)對(duì)象中,并通過(guò)給它們傳遞消息調(diào)用業(yè)務(wù)邏輯計(jì)算。這樣,你就不得不首先把一些通用的業(yè)務(wù)邏輯設(shè)計(jì)在一個(gè)個(gè)類中,下次使用只需調(diào)用它們即可。同時(shí),面向?qū)ο蠓椒ㄟ有繼承該概念,繼承使得功能可以從一個(gè)類直接擴(kuò)展到它的子類中。另外,多態(tài),動(dòng)態(tài)聯(lián)編等技術(shù)以及設(shè)計(jì)模式的應(yīng)用使得代碼的可復(fù)用性得到了最大限度的擴(kuò)展【2】。
3.面向?qū)ο蠓椒▽W(xué)在計(jì)算機(jī)領(lǐng)域中的應(yīng)用
面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)可以應(yīng)用于復(fù)雜的諸如人工智能等領(lǐng)域,也可以使用于傳統(tǒng)的企業(yè)級(jí)應(yīng)用。總之,面向?qū)ο髷?shù)據(jù)庫(kù)可以應(yīng)用在所有關(guān)系數(shù)據(jù)庫(kù)能夠應(yīng)用的地方,且在許多方面效能更高,比如人工智能和其他較為復(fù)雜的應(yīng)用中。面向?qū)ο髷?shù)據(jù)庫(kù)現(xiàn)在已經(jīng)存在一些實(shí)現(xiàn),主要是三條路線:
。1)以關(guān)系數(shù)據(jù)庫(kù)和SQL為基礎(chǔ)的擴(kuò)展關(guān)系模型
這種方式的優(yōu)點(diǎn)是適宜于市場(chǎng)推廣,缺點(diǎn)是無(wú)法做到純粹的面向?qū)ο笮浴_@個(gè)方式已經(jīng)在各大主流數(shù)據(jù)庫(kù)總得到實(shí)現(xiàn),如Oracle、DB2等。
。2)以面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言為基礎(chǔ)
這種方式是以面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言為基礎(chǔ)的,研究持久的程序設(shè)計(jì)語(yǔ)言。這種方式的優(yōu)點(diǎn)是它是純粹的面向?qū)ο蟮模秉c(diǎn)是難以進(jìn)行市場(chǎng)推廣。
。3)建立新的面向?qū)ο髷?shù)據(jù)庫(kù)
這種方式已經(jīng)有一些實(shí)現(xiàn),如法國(guó)O2Technology公司的O2系統(tǒng)。優(yōu)缺點(diǎn)與第二條路線一致,基于研究的目的,本文中的面向?qū)ο髷?shù)據(jù)庫(kù)的簡(jiǎn)易實(shí)現(xiàn)版本是以這種方式為基礎(chǔ)的。
4.面向?qū)ο蠹夹g(shù)和數(shù)據(jù)庫(kù)技術(shù)的結(jié)合沿著三種途徑發(fā)展【3】:
1)面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)(OODBMS)
面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)以一種面向?qū)ο笳Z(yǔ)言為基礎(chǔ),增加數(shù)據(jù)庫(kù)的功能,主要支持持久對(duì)象和實(shí)現(xiàn)數(shù)據(jù)共享。利用類來(lái)描述復(fù)雜對(duì)象,利用封裝方法來(lái)模擬對(duì)象行為,利用繼承性來(lái)實(shí)現(xiàn)對(duì)象的結(jié)構(gòu)和方法的重用。但是這種純粹的面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)不能支持SQL語(yǔ)言,不能和現(xiàn)有的數(shù)據(jù)庫(kù)結(jié)合起來(lái),在擴(kuò)展性和通用性方面受到限制。
2)對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS)
對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)既支持SQL語(yǔ)句,也支持面向?qū)ο蠹夹g(shù),實(shí)現(xiàn)了傳統(tǒng)數(shù)據(jù)庫(kù)技術(shù)和面向?qū)ο蠹夹g(shù)的完美結(jié)合。全球的數(shù)據(jù)庫(kù)生產(chǎn)商爭(zhēng)相研發(fā)這種數(shù)據(jù)庫(kù)產(chǎn)品,數(shù)據(jù)庫(kù)生產(chǎn)商競(jìng)爭(zhēng)的一個(gè)焦點(diǎn)是如何在現(xiàn)有的數(shù)據(jù)庫(kù)中加入面向?qū)ο蠹夹g(shù)。
3)對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)系統(tǒng)(ORMDBMS)
對(duì)象關(guān)系映射數(shù)據(jù)庫(kù)系統(tǒng)是在對(duì)象層和關(guān)系層之間建立一個(gè)映射層,使得數(shù)據(jù)源中的關(guān)系數(shù)據(jù)能夠進(jìn)入對(duì)象領(lǐng)域,并且作為對(duì)象供上層應(yīng)用使用。
5、面向?qū)ο蠹夹g(shù)在數(shù)據(jù)庫(kù)中的實(shí)現(xiàn)
將面向?qū)ο蠹夹g(shù)應(yīng)用到關(guān)系數(shù)據(jù)庫(kù)中可以有兩種方式:
一種方式是把面向?qū)ο蠹夹g(shù)中的對(duì)象作為關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的一種新的數(shù)據(jù)模型。關(guān)系表中的屬性值包含對(duì)象指針,對(duì)象數(shù)據(jù)的操作在關(guān)系數(shù)據(jù)庫(kù)之外進(jìn)行。把面向?qū)ο髷?shù)據(jù)模型(ODM)和關(guān)系數(shù)據(jù)模型(RDM)結(jié)合起來(lái),對(duì)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行擴(kuò)充,但對(duì)象查詢功能受到一定的限制。
另一種方式是把面向?qū)ο蠼涌谔砑釉陉P(guān)系數(shù)據(jù)庫(kù)中,在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中增加一個(gè)對(duì)象至關(guān)系轉(zhuǎn)換器,將上層的面向?qū)ο竽J睫D(zhuǎn)化為關(guān)系存儲(chǔ)模式,存放到關(guān)系數(shù)據(jù)庫(kù)中。這樣,在面向?qū)ο蟮臄?shù)據(jù)庫(kù)中關(guān)系存儲(chǔ)模型位于底層,數(shù)據(jù)庫(kù)用戶可以利用標(biāo)準(zhǔn)的面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言進(jìn)行查詢處理,用戶輸入的面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言被轉(zhuǎn)換成關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,從而對(duì)底層的關(guān)系存儲(chǔ)模式進(jìn)行查詢等處理,同時(shí)將操作結(jié)果按照對(duì)象方式返回給用戶。這種實(shí)現(xiàn)方式使得數(shù)據(jù)庫(kù)管理系統(tǒng)在實(shí)現(xiàn)關(guān)系模型和面向?qū)ο竽P椭g的模型轉(zhuǎn)換時(shí)需要一定的開銷,執(zhí)行效率比直接面向?qū)ο髷?shù)據(jù)庫(kù)要低一些,但這種擴(kuò)充方式實(shí)現(xiàn)比較簡(jiǎn)單。下面主要介紹一下第二種方式是如何實(shí)現(xiàn)的:
面向?qū)ο蠹夹g(shù)通過(guò)映射接口和關(guān)系數(shù)據(jù)庫(kù)相結(jié)合,面向?qū)ο髷?shù)據(jù)庫(kù)強(qiáng)調(diào)的是對(duì)象的屬性、方法和對(duì)象間的關(guān)系,設(shè)計(jì)這種類型的數(shù)據(jù)庫(kù)需要理解對(duì)象到關(guān)系數(shù)據(jù)庫(kù)表的映射方法。這種映射方法通過(guò)將對(duì)象類生成為SQL語(yǔ)言中的數(shù)據(jù)定義語(yǔ)言(DDL)來(lái)將對(duì)象轉(zhuǎn)換成一個(gè)好的概念層的數(shù)據(jù)模型(DDL)【4】。
6.結(jié)論
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,現(xiàn)有的數(shù)據(jù)庫(kù)技術(shù)不能滿足計(jì)算機(jī)網(wǎng)絡(luò)、多媒體技術(shù)、CAD/CASE等領(lǐng)域的需要,面向?qū)ο蠹夹g(shù)應(yīng)用到現(xiàn)有的數(shù)據(jù)庫(kù)中應(yīng)運(yùn)而生。面向?qū)ο蠹夹g(shù)和數(shù)據(jù)庫(kù)技術(shù)結(jié)合的三種途徑以及面向?qū)ο蠹夹g(shù)應(yīng)用到數(shù)據(jù)庫(kù)中的優(yōu)勢(shì),通過(guò)在關(guān)系數(shù)據(jù)庫(kù)中增加一個(gè)對(duì)象至關(guān)系轉(zhuǎn)換器,把面向?qū)ο蠼涌谔砑拥疥P(guān)系數(shù)據(jù)庫(kù)中來(lái)實(shí)現(xiàn)面向?qū)ο蠹夹g(shù)在關(guān)系數(shù)據(jù)庫(kù)中的應(yīng)用。
參考文獻(xiàn)
1 Alex Kriegel and Boris M.Trukhnov.SQL寶典[M].北京:電子工業(yè)出版社,2003. 1~200
2 Bruce Eckel.Thinking In Java 4 [M].北京:機(jī)械工業(yè)出版社,2006.1~600
【論面向?qū)ο蟮臄?shù)據(jù)庫(kù)技術(shù)論文】相關(guān)文章:
面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)淺析的論文07-05
論面向主動(dòng)式配網(wǎng)的微電網(wǎng)技術(shù)論文05-20
遞進(jìn)案例在面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)應(yīng)用論文01-11
高等職業(yè)教育面向?qū)ο蠼虒W(xué)模式之構(gòu)建論文07-04
論地質(zhì)鉆探技術(shù)的應(yīng)用論文04-05
探究統(tǒng)一建模語(yǔ)言在面向?qū)ο蠓治雠c設(shè)計(jì)中的應(yīng)用論文04-22
不能錯(cuò)過(guò)的關(guān)于面向?qū)ο蟮膉ava筆試題03-19
論蔬菜輪作原理和技術(shù)論文01-12
淺析面向?qū)ο蟮亩鄺U機(jī)構(gòu)多目標(biāo)多約束優(yōu)化設(shè)計(jì)方法的論文04-19