楊麗雯 尹華松 張永繼
摘要:介紹了面向?qū)ο髷?shù)據(jù)庫系統(tǒng)(OODBS)的基本原理,引入了利用基于開源的面向?qū)ο髷?shù)據(jù)庫DB4O實現(xiàn)OODBS的方法。在此基礎(chǔ)上,利用DB4O對“新聞信息系統(tǒng)中的內(nèi)容管理器”進行了設(shè)計,展示了利用DB4O實現(xiàn)OODBS具體應(yīng)用的方法和途徑。
關(guān)鍵詞:面向?qū)ο髷?shù)據(jù)庫系統(tǒng);數(shù)據(jù)模型;內(nèi)容管理系統(tǒng)
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)09-2033-04
1 面向?qū)ο笈c面向?qū)ο髷?shù)據(jù)庫系統(tǒng)
面向?qū)ο螅∣O)方法的核心思想,是將系統(tǒng)問題域中的實體對象,直接映射為軟件的構(gòu)成元素。認為客觀世界本來是由許多不同種類的對象構(gòu)成的,在不同對象之間的相互聯(lián)系和相互作用下,才構(gòu)成完整的事物。
面向?qū)ο蠓椒▽W(xué)所引入的對象、方法、消息、類、實例、繼承性、封裝性等重要概念,為軟件開發(fā)的分析和設(shè)計帶來新的思維過程和方法,對于實現(xiàn)大型的、復(fù)雜的系統(tǒng)分析和設(shè)計奠定了良好的科學(xué)技術(shù)基礎(chǔ)。
近年以來,數(shù)據(jù)庫開發(fā)商們都已經(jīng)在關(guān)系數(shù)據(jù)庫系統(tǒng)中很好地支持了對象到關(guān)系表的映射,如Oracle8i 、DB2-5等等。但是,利用面向?qū)ο蠼<夹g(shù)所建立起來的對象模型,無法直接映射到關(guān)系結(jié)構(gòu)中,需要通過某種方法,進行必不可少的轉(zhuǎn)換。但是更重要的,是概念上的混亂和額外開發(fā)負擔(dān)所帶來的問題。
面向?qū)ο髷?shù)據(jù)庫系統(tǒng)(OODBS)能直接對應(yīng)面向?qū)ο螅∣O)數(shù)據(jù)模型,支持自定義的各種數(shù)據(jù)類型和結(jié)構(gòu),并提供數(shù)據(jù)建?;A(chǔ)上的復(fù)雜數(shù)據(jù)操縱能力,包括:定義專用的控制運算,定義語義關(guān)系運算,以及事務(wù)管理運算,等等。
OODBS 是持久共享對象庫的管理者;每個對象庫對應(yīng)模型所定義的對象集合。
2 面向?qū)ο髷?shù)據(jù)庫系統(tǒng)的特性
面向?qū)ο髷?shù)據(jù)庫系統(tǒng)(OODBS) 賦予數(shù)據(jù)庫設(shè)計和應(yīng)用開發(fā)人員很強的面向?qū)ο竽芰?,從而大大擴展了數(shù)據(jù)庫系統(tǒng)的應(yīng)用領(lǐng)域,提高了開發(fā)人員的工作效率和應(yīng)用系統(tǒng)的質(zhì)量。面向?qū)ο髷?shù)據(jù)庫系統(tǒng)具有以下特性:
① 具有表示和構(gòu)造復(fù)雜對象的能力。
② 封裝性和信息隱藏技術(shù)提供了程序的模塊化機制。
③ 能夠表達繼承和類層次的關(guān)系。
④ 一般為原生數(shù)據(jù)庫,直接使用編程語言操作數(shù)據(jù)庫,提高程序員開發(fā)持久層階段的效率。
3 開源的面向?qū)ο蟮臄?shù)據(jù)庫DB4O
DB4O(Database 4 Object)就是一家來自加州硅谷的開源面向?qū)ο髷?shù)據(jù)庫公司 db4objects 設(shè)計和實現(xiàn)的一款開源的性能卓越的純面向?qū)ο髷?shù)據(jù)庫。目前支持.NET和java兩種編程語言。
db4o主要特性如下:
① 100% 原生的面向?qū)ο髷?shù)據(jù)庫。
② 高性能db4o 官方公布的基準測試數(shù)據(jù),如表1所示(表中的數(shù)值表示相對速度)。db4o 比采用 Hibernate/MySQL 方案在某些測試線路上速度高出 44 倍之多!并且安裝簡單,僅僅需要 400Kb 左右的 .jar 或 .dll 庫文件。
③ 支持多種平臺db4o 支持從 Java 1.1 到 Java 5.0,此外還支持 .NET 、 CompactFramework 、 Mono 等。
④ 開源模式 與其他 ODBMS 不同,db4o 為開源軟件,通過開源社區(qū)的力量驅(qū)動開發(fā) db4o 產(chǎn)品。
4 J2EE系統(tǒng)的設(shè)計
目前比較成熟的WEB應(yīng)用的模型,即J2EE系統(tǒng)的架構(gòu)模型——MVC2,MVC+Struts,如圖1所示。
本研究結(jié)合面向?qū)ο髷?shù)據(jù)庫DB4O的特性和J2EE系統(tǒng)的特性,以內(nèi)容管理系統(tǒng)CMS(Content Management System)作為實現(xiàn)的載體。
4.1 內(nèi)容管理系統(tǒng)模塊的設(shè)計
根據(jù)新聞管理系統(tǒng)的特殊性,分為前臺系統(tǒng)和后臺管理系統(tǒng)。前臺系統(tǒng)的功能模塊如圖2所示。
后臺管理的系統(tǒng)功能模塊如圖3所示。
4.2 內(nèi)容管理系統(tǒng)數(shù)據(jù)庫設(shè)計
內(nèi)容管理系統(tǒng)最為主要的數(shù)據(jù)庫表的設(shè)計新聞這張表,其他的表的設(shè)計都是圍繞這張表進行,所以整個系統(tǒng)的數(shù)據(jù)庫表的設(shè)計如圖4所示。
所有表的id都由系統(tǒng)生成唯一的標識,User作為News表的user屬性的類型,Type作為News表的type屬性的類型,Comment作為News表的comments屬性的類型,并且comments還是數(shù)組類型,這樣能夠很好的體現(xiàn)此系統(tǒng)中每個數(shù)據(jù)表的對象關(guān)系。
4.3 內(nèi)容管理系統(tǒng)的實現(xiàn)
由于面向?qū)ο髷?shù)據(jù)庫DB4O不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,而其中最大的特點是不再有sql語句對數(shù)據(jù)庫進行操作,所以對于和數(shù)據(jù)庫交互的開啟、關(guān)閉、增、刪、改、查的操作封裝城公用類(BaseDAO)進行相關(guān)的操作。而這些對數(shù)據(jù)庫的操作中最有特點的則是查詢,因為沒有sql語句,所以在此封裝了一個玫舉用于判斷對于某個字段的查詢是相等,相似,大于,小于,還是不相等。查詢操作符的玫舉封裝代碼,如圖5所示。
在查詢操作時就能夠和關(guān)系數(shù)據(jù)庫類似的進行相等、相似、大于、小于、不相等的查詢。生成組合查詢條件的代碼,如圖6所示。
生成組合查詢條件的代碼說明:傳入?yún)?shù),query為查詢條件的實例,fields為查詢的字段名,values為對應(yīng)查詢字段具體的值,queryTypes為對應(yīng)查詢條件的操作類型即相等、相似、大于、小于、不相等之一。Fields,values,queryTypes為相同大小的數(shù)組,并且按照數(shù)組下標一一對應(yīng)。
4.4 新聞系統(tǒng)的特殊查詢
新聞系統(tǒng)大部分的操作都是查看最新的新聞,結(jié)合DB4O數(shù)據(jù)庫在執(zhí)行查詢(client.query())時的一些特性,即每次會取出數(shù)據(jù)庫中此對象類的所有IDs,此處為所有News對象的ID。所以,單獨對這部分操作進行處理。多個查詢操作在一段短時間訪問getNewsList方法時,在第一個查詢操作還沒有關(guān)閉數(shù)據(jù)庫之前到來的查詢,繼續(xù)使用第一個操作查詢打開的連接和得到的數(shù)據(jù)集合對象(ObjectSet)由此提高性能。
5 結(jié)束語
面向?qū)ο蟮臄?shù)據(jù)庫在J2EE系統(tǒng)中的應(yīng)用,就目前而言應(yīng)用不是很廣泛,但是就其自身的特性在某一些領(lǐng)域運用面向?qū)ο蟮臄?shù)據(jù)庫可能會起到優(yōu)化系統(tǒng),提高性能的作用。目前DB4O是主要用于嵌入式應(yīng)用開發(fā)的數(shù)據(jù)庫,但是它優(yōu)良的性能,而且比較優(yōu)秀的事務(wù)管理,同樣能讓其在企業(yè)應(yīng)用中合理的應(yīng)用能發(fā)揮很好的作用。此內(nèi)容管理系統(tǒng)是把面向?qū)ο蟮臄?shù)據(jù)庫DB4O用于J2EE項目中的一次嘗試,并且取得了不錯的效果。不過是不是適合更復(fù)雜的企業(yè)應(yīng)用系統(tǒng)還需要進一步的探索和研究。
參考文獻:
[1] 夏素霞,袁宗福,金立平.OO模型中ODL語言的研究與實現(xiàn)[J].計算機應(yīng)用與軟件,2005(5).
[2] 王意潔.面向?qū)ο髷?shù)據(jù)庫的并行查詢處理與事務(wù)管理[M].長沙:國防科技大學(xué)出版社,2005.
[3] 徐潔磐.面向?qū)ο髷?shù)據(jù)庫系統(tǒng)及其應(yīng)用[M].北京:科學(xué)出版社,2003.
[4] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概念[M].北京:高等教育出版社,2006.
[5] (印度) Kumar B V, Sangeetha S, Subrahmanya S V.深入淺出J 2 EE架構(gòu) 應(yīng)用程序設(shè)計與部署的原理[M].北京:清華大學(xué)出版社,2006.
[6] (美) Darren Broemmer.J 2 EE應(yīng)用與實踐技巧 Java設(shè)計模式、自動化與性能[M].北京:電子工業(yè)出版社,2004.
[7] Rosen Jiang,張黃矚,Chris.開源面向?qū)ο髷?shù)據(jù)庫DB4O之旅[EB/OL].http://www.ibm.com/developerworks/cn/java/j-db4o/
[8] 《DB4O-6.1-tutorial》,DB4O開發(fā)手冊.