基本介紹
- 中文名:面向對象資料庫系統
- 外文名:Object oriented database system
- 英文簡稱:OODBS
特點
(1)使用對象數據模型將客觀世界按語義組織成由各個相互關聯的對象單元組成的複雜系統 。對象可以定義為對象的屬性和對象的行為描述,對象間的關係分為直接和間接關係。(2)語義上相似的對象被組織成類,類是對象的集合,對象只是類的一個實例[6],通過創建類的實例實現對象的訪問和操作。(3) 對象數據模型具有“封裝”、“繼承”、“多態”等基本概念[7]。(4) 方法實現類似於關係資料庫中的存儲過程,但存儲過程並不和特定對象相關聯,方法實現是類的一部分。(5) 實際套用中,面向對象資料庫可以實現一些帶有複雜數據描述的套用系統,如時態和空間事務、多媒體數據管理等。
體系結構
發展
重要技術
由於關係資料庫在當今資料庫套用領域處於主導地位,而面向對象資料庫如果要滿足更高一級資料庫要求,實現異構資料庫之間資料庫模式和操作的轉換是一個關鍵研究課題。資料庫轉換技術包括數據模式技術和數據操作轉換技術,轉換時要保證一致性(對象語義和動作信息在轉換過程中不丟失)。
模式演進技術
OODB的類為適應需求變化而隨時間變化稱為模式演進,包括創建新類、刪除舊類、修改類屬性和操作等模式演進必須保持模式一致性(模式自身內部不能有矛盾),這由模式一致性約束描述。模式一致性約束分為唯一性約束、存在性約束和子類型約束等,滿足所有這些一致性約束的模式稱為一致模式。模式演化是面向對象資料庫研究重點與難點,實現途徑一般有兩種:模式改變考慮現有應用程式使二者相互集成和適應;開發新的高級資料庫程式語言。
視圖類實現技術
面向對象資料庫中很多操作(如統計、連線查詢和視圖操作)都能自由訪問資料庫數據,這些操作益於實現視圖操作及降低複雜度並提高效率,但易破壞對象封裝性。為了不破壞對象封裝性,必須對面向對象資料庫的核心模型進行擴充,在對象中設計一組接口,系統通過這組接口完成視圖操作,這樣會增加對象複雜性和面向對象資料庫系統設計難度,因此需要對這些接口實行標準化。基於上述條件,設計相應類數據結構和操作則可實現OODBS視圖操作。
OODBS事務管理子系統包括死鎖管理器、鎖管理器、恢復管理器和日誌管理器幾個部分。相比傳統RDBS,OODBS加鎖具如下特點:①加鎖單位是對象而不是類;②給類對象加鎖比給關係對象加鎖需更多信息;③當類實例被加鎖時,其父類也被加鎖。OODBS採用粗粒度加鎖具有很高的並行性,加鎖的一般是對象,若某一事務要訪問同一類多數實例,則對整個類加鎖,保證可靠性又降低系統開鎖代價。另外,OODBS還具有恢復機制,其中包括多媒體日誌恢復和索引頁日誌恢復兩種。多媒體日誌恢復是指OODBS把多媒體數據和其描述部分分開,後者通過對象標識符引用前者。若創建多媒體數據事務失敗,則置空描述部分引用並復位。索引頁日誌恢復的方法有兩種:一是分裂索引頁的插入操作,系統把當前索引頁一半表項分給新頁,除拷貝的表項外其餘都記錄在日誌中,發生故障時則去掉整個新頁;二是合併索引頁的刪除操作,系統把當前索引頁表項拷貝到新頁,除了從當前頁刪除的表項外其餘都記錄在日誌中,發生故障時則重新使用當前頁。
套用
面向對象資料庫的產生主要是為了解決“阻抗失配”,它強調高級程式設計語言與資料庫的無縫連線。無縫連線即假設不使用資料庫,而使用某種程式語言編寫一個程式,可以基本不經任何改動地將它作用於資料庫,即可以用程式語言透明訪問資料庫,就好像資料庫根本不存在一樣,所以也有人把面向對象資料庫理解為語言的持久化。
面向對象方法綜合了在關係資料庫中發展的全部工程原理,以及系統分析、軟體工程和專家系統領域的內容,符合一般人的思維規律,將現實世界分解成明確的對象。系統設計人員用OODBMS創建的計算機模型能更直接反映客觀世界,使得非計算機專業人員的最終用戶也可以通過這些模型理解和評述資料庫系統。這些都是傳統資料庫所缺乏的,正因為如此,OODBS更能在新興套用領域中發揮作用。這些領域集中在以下幾個方向:(1)工程套用領域:此領域(如CAD/CAM)涉及到的數據種類多,操作和數據間涉及的關係都極為複雜,由於面向對象資料庫實現了無縫連線,能夠支持非常複雜的數據模型,從而特別適用於工程設計領域;(2)多媒體套用領域:由於多媒體中數據種類很多,他們之間有複雜的聯繫使之成為一個整體,在多媒體領域這些要求也能在面向對象資料庫中得到解決;(3)集成套用領域:隨著計算機越來越集成,系統也跟著越發複雜,這要求多種套用的集成需要一個能適應不同套用要求的結構模型;(4)傳統套用領域:近年來商業、事務處理的需求發生了很大的變化,而面向對象資料庫很能適應這些新的變化,因此在傳統領域面向對象資料庫也有著重要的套用市場。
存在的問題
(1)實現複雜性問題:在實現複雜性和思維複雜性問題上,面向對象模型和關係模型之間存在很大差距——關係模型構造集合以及在集合基礎上發展出來的關係,對一個有數學基礎的人而言其操作語義顯然有思維簡潔性,對計算機而言,關係運算可以遞歸並具有能行性的,計算簡潔;而對面向對象模型而言,其思想主要是控制流為主導,也就是通過對象的行為,指引數據的傳遞。比如在服務驅動的分散式系統中,如SOA,其數據是用XML描述的,但由於其互動性,以及訊息扮演的控制流的角色,導致用面向對象的傳遞信息方式不能發揮作用,所以在資料庫的流程和運算上,OODB並不占優勢。
(2)理論支持問題:面向對象資料庫,並沒有嚴格的理論支持。雖然對象間的關係有聚合、組合、關聯、繼承登,但這些並不是理論,而是實踐結果。不能從理論上推導出這些關係,也就無法實現出支持這些關係的對象資料庫。
(3)模型複雜度問題:由於模型較為複雜(而且缺乏數學基礎),使得很多系統管理功能難以實現(如許可權管理),也不具備SQL處理集合數據的強大能力。
(4)性能問題:由於面向對象資料庫中數據被存放在許多地方,因此,有效對象聚集是性能好壞的關鍵因素。面向對象資料庫技術要想能取代傳統的資料庫技術,性能改善是必不可少的。