J2ME移動數據庫的選擇
當然PointBase并不是J2ME移動數據庫產品的唯一選擇。在本文的剩余部分我會比較和討論幾種主流的競爭者。在開始以前先讓我來闡述一下這個產品的前景。
高端設備上的JDBC數據庫
對于運行PersonalJava或Personal Profile的高端設備,數據庫能夠通過JDBC API被訪問。JDBC數據庫對于程序來說是最容易的數據庫類型。所有的廠商已經至少有一個這種種類的產品。最大的挑戰是如何平衡這些功能。我們想要最小而且最快的數據庫。它能夠支持應用程序所需功能的準確集合。
MIDP設備上的輕量級數據
CLDC(有限連接設備配置Connected Limited Device Configuration)/MIDP并不支持JDBC接口。在MIDP設備上支持復雜數據管理的兩個通用方法是:
執行非常輕量的數據庫和RMS上的類似JDBC的訪問API。這個方法很耗費資源,但根據開發者開發能力和性能支持證明是最好的。
直接擴展RMS類并在擴展的類上執行簡單的行序列化,數據訪問,索引/搜索和同步方法。這個擴展類是RMS上的一個細小的層次。它能模擬關系表的行為。
在產品評論的章節里我將討論這兩種方法。
同步服務器
眾所周知,同步是移動數據庫的一個關鍵性能。大多數數據庫廠商有他們自己專有的同步服務器。這些服務器提供許多附加功能來優化在移動環境下的同步過程。同步服務器的重要性能包括如下幾點:
智能沖突解決方案
帶寬減少
端到端編密碼
后臺引擎性能調整
異步和可擴展更新
接下來的幾章里我將檢查和比較幾種主流廠商的產品。
HSQL 數據庫引擎
開放源碼的數據庫引擎?DHSQL是基于Thomas Mueller的Hypersonic SQL項目。它完全是由Java是編寫的同時也是一種廣泛用于嵌入式的數據庫。它被包含在許多J2EE應用服務器中。在移動設備上,HSQL運行在PersonalJava和FP/PP平臺上。HSQL是完全免費的。你能自由地將它重新部署到你的應用程序中,這對移動應用程序來說是容易的。
HSQL提供一個支持%95JDBC接口和所有JDBC數據類型的JDBC驅程。它支持事務,外鍵甚至Java存儲過程。在HSQL中的表能寄存在內存中和保存在磁盤文件中。HSQL只有少于160-KB的存儲器足跡footprint。它也為PersonalJava設備發布了一個數據庫管理控制臺(經過Sharp Zaurus上的測試)
然而,HSQL缺少一些商業移動數據庫上所需的高級性能和安全功能。更重要的是,HSQL不能提供任何同步解決方案。它也缺少一個為MIDP設備的解決方案。
PointBase Micro
PointBase是一個純Java嵌入式數據庫方面的主流廠商。PointBase Micro數據庫能運行在FP/PP/PersonalJava和MIDP平臺上。
在FP/PP/PersonalJava平臺上PointBase Micro 數據庫僅用91 KB 存儲器足跡就能支持大多數JDBC和SQL功能。它也支持例如數據庫編密碼這樣的高級功能。它不支持存儲過程和接口CallableStatement。因此MIDP不支持JDBC,PointBase為MIDP提供它自己的輕量級類似JDBC的API。PointBase Micro 數據庫的MIDP版本提供了一個用瀏覽器打開的MIDlet數據庫控制臺。
PointBase Micro 數據庫通過UniSync 同步服務器能容易地同服務器端PointBase嵌入式數據庫和Oracle 數據庫同步。
Sybase iAnywhere 解決方案
在膝上型電腦上的輕量級數據庫ianywhere的SQL Anywhere Studio已經擁有巨大的市場份額。在普遍設備上的移動數據庫市場它也有一個強大的份額。Anywhere SQL Studio 的自定義數據庫生成器是它一個關鍵創新。它讓用戶而不是數據庫廠商決定如何平衡數據庫存儲器足跡和它所支持的功能。
在Anywhere SQL Studio中用戶能指定將在應用程序中調用的SQL狀態SQL statement。它根據用戶對根本性質和事務功能的選擇生成一個自定義數據庫。所生成的數據庫是一個純Java類以及伴隨的一系列用戶應用程序能調用的API。使用iAnywhere MobiLink 同步服務器的數據同步API也能加入到自定義數據庫中去。
除了自定義數據庫生成器,iAnywhere也提供大存儲器足跡和移動數據庫的一般用途。它包括支持Java儲存過程 Java stored procedure在內的許多安全,優化和可用性方面的功能。這些數據庫為了達到更好的性能天生就運行在流行的移動平臺上。Sybase iAnywhere SQL Studio 現在仍然不能支持MIDP數據庫的自動生成。
IBM DB2 Everyplace
IBM DB2 Everyplace是IBM在移動數據庫的禮物。對于IBM的客戶來說,DB2 Everyplace非常好地整合了其他IBM企業組件(例如,DB2 Universal Database 和WebSphere MQ Everyplace)和IBM開發工具(例如,IBM WebSphere Studio Device Developer)。DB2 Everyplace本身運行在包括Palm OS,Symbian OS,Pocket PC,QNX 軟件系統和嵌入式Linux在內的許多平臺上。DB2 Everyplace支持加密數據域和表存儲優化功能。
在MIDP平臺上,DB2 Everyplace有一個叫FastRecordStore的產品。它仿效在MIDP RMS記錄存儲之上的可索引和可搜索的關系表。
DB2 Everyplace 數據庫和FastRecordStore通過IBM同步引擎與后臺數據庫同步。DB2 Everyplace也附帶一個叫Mobile Application Builder 的工具,它允許開發者可視化地創建DB2 Everyplace 應用程序。
Oracle9i Lite
Oracle9i Lite是Oracle在移動數據庫上的產品。它可運行在Plam OS,Pocket PC,Symbian OS和Win32 等平臺上。Win32這個版本是為了能運行在膝上電腦上并支持JDBC,多用戶模式以及Java存儲過程。Oracle9i Lite的Pocket PC和Symbian OS版本支持JDBC。而Palm OS版本僅支持Oracle自身專用的OKAPI(對象核心API Object Kernel API)和ODBC(開放數據庫連接Open Database Connectivitiy)。Oracle9i Lite suite包括一個移動開發工具Mobile Development Kit,它能夠根據用戶自定義需求自動生成和打包移動數據庫應用程序。目前它只能生成本身客戶端應用程序。
Oracle9i 移動數據庫通過Oracle移動服務器和后臺Oracle數據庫服務器同步。如果我們使用Oracle9i Lite 移動開發工具來創建應用程序則移動服務器會自動為這個應用程序生成同步邏輯。Oracle9i Lite支持任何基于TCP/IP的網絡上的同步,包括HTTP,CDPD(單元數字包數據cellular digital packet data),802.11b無線局域網。通過使用移動服務器的開放傳輸API Open Transport APIs,我們也能增加新的傳輸。另外Oracle移動服務器支持非同時的同步。在高峰期每個設備只是把同步內容提交到一個隊列中然后退出。異步操作是可擴展解決方案的關鍵。
在MIDP平臺上Oracle提供SODA(簡單對象數據庫訪問Simple Object Database Aclearcase/" target="_blank" >ccess),這個產品是基于RMS的。SODA實際上是一個支持MIDP設備的面向對象數據庫。它允許存儲,搜索和恢復類似JavaBean的數據對象。
選擇正確的移動數據庫
選擇正確的移動數據庫產品是個復雜的商業決定。由于移動數據庫嵌入在客戶端應用程序中,你需要為你所開發的每個產品支付版稅。為減少總開銷而簽訂一個好的合同是非常重要的。由于同步解決方案所特有的性質每個產品都在某種程度上鎖定了廠商。因此開發人員不僅應該考慮到產品的技術優點而且應該考慮到廠商的一貫聲譽和穩定性。例如,如果你的移動客戶端需要MIDP和Personal Profile 數據庫,你應該選擇同一廠商中更好傳輸率的產品和更易管理的同步解決方案。
PointBase和Sybase iAnywhere提供極好的移動數據庫解決方案。然而,如果你的企業基礎架構主要是IBM或Oracle,那么最好選擇DB2 Everyplace 或Oracle9i Lite 移動數據庫。
移動數據庫和同步解決方案是高可靠性移動應用程序的重要組件。他們提供了新的而且有前途的偶然連接移動應用程序范例。在閱讀完本文后,你應該已經能夠使用JDBC和PointBase APIs設計和執行移動數據庫應用程序。由于移動數據庫運行在小設備上,當選擇商業產品時你需要仔細權衡特征和儲存器足跡而不是性能。