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