對象資料庫
對象資料庫
對象資料庫,有表,索引,視圖,圖表,預設值,規則,觸發器,用戶,函數等。
對象資料庫是一種以對象形式表示信息的資料庫。對象資料庫的資料庫管理系統被稱為ODBMS或OODBMS。兩個主要原因讓用戶使用
對象資料庫
對象資料庫管理系統在1980年代早中期grewoutofresearch對圖結構的對象有了本質的資料庫管理支持。“面向對象資料庫系統”這一術語第一次出現於1985年。著名的研究項目包括Encore-Ob/Server(布朗大學),EXODUS(Wisconsin大學),IRIS(惠普),ODE(Bell實驗室),ORION(MCC),Vodak(GMD-IPSI),andZeitgeist(TexasInstruments)。其中以ORION項目發表的論文數為最多。MCC的WonKim將這些論文中最有價值的一部分彙編成書並由MIT出版社出版。
對象資料庫管理系統為面向對象編程語言增加了持久的概念。早期的商品資料庫集成了多種語言:GemStone(Smalltalk),gbase(Lisp),andVbase(COP).COP是C對象處理器(CObjectProcessor),一種基於C的早於C++的專有語言。1990年代大部分時間由C++統治著商品對象資料庫管理系統市場。廠商在1990年代晚期加入了Java並於最近加入了C#。
基於持久編程的對象資料庫在一些應用領域獲得了認可,如工程和空間資料庫,通信和科學領域如高能物理和分子生物。他們對主流的商業數據處理沒有什麼影響,儘管在獲得了一些應用在部分特殊領域如金融服務。值得指出對象資料庫保持著世界上最大的資料庫(超過1000terabytes在斯坦福線性加速中心)和被記錄到的最高攝取率(一Terabyte每小時)。
2004年以來,當出現了易用和普遍可支付的開放源代碼對象資料庫時,對象資料庫進入了第二次增長期。這些開放源代碼的對象資料庫完全用OOP語言如Java,C++,或C#寫出。ObjectDB是對象關係資料庫的一個例子。
在純物件式資料庫中,資料以物件的形式存儲,這些對象只能由其所屬的類中定義的方法來操作。對象被組成一種類型層次(有時是格式lattic),子類繼承其超類的特性。對象中可以有到其他對象的引用,於是應用程序可以以一種導航式的編程風格訪問數據。多數物件式資料庫也提供了一些查詢語言,允許用聲明式編程訪問對象。在對象查詢語言以及查詢和導航介面的集成領域,產品間出現了很大的區別。ODMG用對象查詢語言OQL作了標準化的嘗試。
訪問數據可以更快,表的聯合常常是不必要的(在關係資料庫的表實現方式下)。這是因為無需查詢只需通過指針就可以直接獲得對象。產品間的另一點不同是資料庫定義模式的方式。然而一般的特徵是編程語言和資料庫模式使用相同類型的定義。多媒體應用程序將變得容易因為與數據相關的類方法保證了數據的正確解釋。
許多對象資料庫提供對版本的支持。一個對象可以看作是他所有版本的集合。同時,對象版本也可以被看作是對象自身的屬性。一些對象資料庫也提供了對觸發器和約束的語義支持,這些特性是活躍資料庫(activedatabase)的基礎。
對ODBMS和關係DBMS的基準測試顯示ODBMS在某些任務上優勢明顯。主要原因是許多操作使用導航式而不是聲明式介面,並且對數據的導航式訪問通常可以有指針高效得實現。對基於導航資料庫技術,如ODBMS的批評指出,基於指針的技術為一些特殊的搜索路徑或視點(viewpoint)作了優化。而且,對一般目的的查詢,基於指針的技術比關係型要慢並難於形式化。導航式顯得適合與特定應用而失了普遍,未來的使用。ODBMS的其他技術顯得缺失了與SQL世界中大量工具或特性的互操作性包括但不限於產業標準互聯性,報告工具,OLAP工具以及備份和恢復標準。另外,不像關係資料庫,對象資料庫缺少形式化的數學基礎,而這反過來導致他們在查詢支持上的弱勢。不過,這一缺陷被部分彌補,因為一些ODBMS除了導航式訪問外也提供了對SQL的完全支持,如Objectivity/SQL++。
事實上,在概念封裝即隱藏數據使他只能通過公布的一些介面訪問和關係資料庫技術假定數據只能由基於數據內容的查詢而不是預定義的查詢路徑的形式訪問之間存在著本質的張力。資料庫中心論傾向於用聲明和屬性驅動的觀點看世界,而面向對象傾向於從行為的觀點看世界。這就是圍繞著OOP和資料庫的許多impedancemismatch問題之一。儘管很多評論認為對象資料庫是失敗的,但主要的辯護者仍很活躍,更緊密得整合資料庫的功能和對象編程語言的嘗試在研究和產業社區里仍在繼續。