Android開發-面向對象的數據庫Db4o

領先的開源面向對象數據庫提供廠商db4objects宣佈db4o已能夠順利運行於Android平臺。先前的InfoQ新聞「Db4Objects發佈Db4o 7.0,支持透明激活」中曾經報道db4objects公司和愛好者積極推動db4o運行於Google Android平臺,以期待讓db4o成爲Android上的首選數據庫平臺,如今db4o已經成功走出了這一步。程序員

Android是Google宣佈成立的「開放手機聯盟」的移動開發平臺。開發者拿到的Andorid SDK是一個包含完整的移動設備開發工具包,包括應用程序框架、開發環境和工具(基於Eclipse)、調試和虛擬運行環境,默認的開發語言是Java,讓開發者可使用熟悉的面向對象方式開發移平臺動應用程序。Andorid平臺的操做系統使用Linux內核,其上架設了基於C/C++編寫的OpenGL、字體、編解碼器、SQLite和用於Web渲染的Webkit。更多細節,能夠回顧新聞「Google Android SDK捨棄Java ME,支持Java Lite和Apache Harmony」。在這個SDK發佈以後,其Dalvik虛擬機背離標準Java虛擬機的基於寄存器的實現,並且配合使用了Apache的Harmony基礎類庫,這種選擇說明了Google實現開放聯盟的決心,雖然引起了是否會形成Java移動開發平臺的分裂的爭議,可是從長遠的角度講開放平臺可以擁有更高的市場佔有率。數據庫

db4o是一個被普遍歡迎的面向對象數據庫,起初它基於Java平臺,然後發佈了.Net平臺的版本,db4o具備雙受權(GPLv2和商業受權),因此在不少開源項目中均可以看到db4o的身影。面向對象數據庫的出現是爲了更好的適合面向對象方式開發應用程序,由於傳統的關係型數據庫與OO模型具備「阻抗不匹配」問題,目前廣被接受的方案是使用ORM(對象關係映射)框架來解決。可是Java中的Hibernate、基於標準的JPA、輕量級iBatis或.Net下的NHibernate都沒法解決複雜度問題,且ORM框架中普遍使用的動態加強方式在資源受限環境下的性能開銷(Dalvik不使用堆實現VM的其中一個緣由就是性能優化的考慮)很難被接受,因此在Android發佈時選擇了資源佔用小內核簡單的SQLite做爲數據庫引擎,但這意味着Android平臺將默認使用關係模型數據庫。db4objects這樣評價了這個組合的遺憾之處:編程

然而,使人驚訝的是Android推出時依然使用了關係型數據庫,它是與整個平臺的面向對象風格所不和諧的惟一部分。幸運的是,db4objects有相應的解決方案。db4o能夠無縫的運行於Android,使簡單的實現原生對象存取成爲可能。緩存

雖然關係型數據庫對於大多數開發者來講都很是熟悉,可是對於喜歡使用一致的OO模型進行持久化的程序員來講這就有些「困擾」了,由於前面所述在這種環境下選擇ORM是不現實的。db4o擁有方便嵌入應用程序中的引擎,適合與應用程序共同分發,並且它具備輕量特性,運行文件只有600k左右。這些特性與SQLite相呼應,由於SQLite也是以容易嵌入、資源佔用小見長的,db4o做爲面向對象數據庫在這些對應方面不會遜色,能夠做爲一個SQLite的很好的面向對象替代方案。db4o的新聞中這樣描述了使用了像db4o這類面向對象數據庫的好處:安全

使用像db4o這樣的面向對象數據庫有不少好處,包括代碼更容易維護、能夠基於更靈活的數據模型建立各類新穎的應用程序。不一樣於僵化的,預先定義的SQL表(table),db4o容許存儲靈活、形式自由的數據,這些數據能夠隨時更改或修正。並且,db4o還容許經過dRS(db4o複製系統)高效的複製數據,這也是Android中一個缺失的環節。經過dRS,開發者能夠編寫應用程序讓用戶的數據備份到後臺服務器或者家中的PC上。也就是說,一個用戶能夠在電話上開始玩一個遊戲,而後暫停,晚上能夠在家中繼續玩。商業的應用場景包括基於地點的自動配置信息同步(field force automation),RFID的數據採集,和複雜導航系統的本地地理數據緩存。性能優化

db4o支持Android平臺對於程序員來講就是提供了在移動平臺使用面向對象API(創新的數據查詢方式,使用原生查詢能夠語義化、類型安全的對數據進行查詢)進行持久化和查詢的工具,也補全了Android平臺開發API中惟一不符合面向對象的模塊(即SQLite對應的關係型數據庫),對於「開放手機聯盟」來講意味着更多的開源廠商開始向開放聯盟靠攏。Db4Objects的新聞稿中這樣描述了讓db4o運行於Android平臺的過程和一些相關的示例項目:服務器

在下載了Android SDK後幾分鐘,db4objects的工程師就使db4o運行於Android上了。Android上的db4o經過了3,500個單元測試。如今db4o擁有達到設備級別(device-grade)的軟件質量,在關鍵性場合獲得了證實,它被部署於高速列車、飛行器、複印機等設備中,它也能夠被部署於Android開發者的掌上設備中。框架

如今db4o剛剛宣佈支持Android,因此能夠參考的程序範例並很少。db4o的社區經理German Viscuso將PasswordSafe移植到db4o,它多是第一個能夠在Android下與db4o協同工做的軟件包。而PasswordSafe的做者Steven Osborn也稱讚說:「太棒了,db4o的代碼比個人更優雅」。另一個樣例程序是MapMe,它能夠在 Android上面顯示2D地圖,使用了db4o存儲和查詢Google地圖的數據信息。工具

Ted Neward曾經屢次提到過使用db4o帶來的好處,InfoQ曾經在「借用對象數據庫db4o簡化開發過程」中描述過db4o在優化開發過程方面的優點,它可以更簡單的適應持久化模型不斷的變化,可以平滑的實現數據模型重構,因此在測試驅動開發中會帶來實際的紅利。對於db4o與Android都還處於觀望態度的程序員能夠藉此機會一塊兒嘗試一下這個移動開發平臺和麪向對象數據庫帶來的新編程模型。性能

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/iefreer/archive/2009/08/20/4467607.aspx

相關文章
相關標籤/搜索