在不可靠的無線網絡中應用程序可靠性已經成為關系移動商業成功的一個中心話題。J2ME(Java 2 平臺微型版)是支持離線模式智能移動客戶端的完美平臺。整合了移動關系數據庫的企業J2ME客戶端能夠管理在設備上的復雜數據并能在需要時和后臺服務器同步。
在這篇文章中,Michael Yuan首先他討論了高可靠性移動移用應用程序的“偶然連接”(oclearcase/" target="_blank" >ccasionally-connected)范例。他在這個范例中解釋了移動數據庫的作用。他還用一個J2ME應用程序闡述了移動數據庫應用程序的關鍵組件。最后,他評論了主流的J2ME數據庫公司,為你在購買所需要的數據庫時提供一個指導。
目前的無線網絡是極不可靠的。不可靠的應用程序毀壞了移動商業的核心價值,而它又許諾無論何時何地都可以訪問到信息。實際上,總是保持連接的需求正是基于無線應用協議(WAP)的瘦客戶移動商業失敗的主要原因。移動商業需要智能的移用客戶端,它能夠操縱當地的應用程序并且甚至在網絡出現臨時的不可靠時可以持續的工作(例如,離線操作)?!芭既贿B接”移動應用程序需要高級的移動數據儲存和管理工具。這樣的工具在J2ME上是容易得到的。
在這篇文章中,我首先討論了移動數據庫的一般概念和規范。我用了一個應用程序例子來闡述J2ME移動數據庫應用程序的重要設計和關鍵組件。我也對現在變化的市場如何正確選擇正確的移動數據庫提供了建議。
設備上的數據存儲和管理
對離線操作的首要需求是存儲和管理設備自身的應用數據。標準的J2ME僅僅提供有限的數據存儲和管理能力。在低端的MIDP(移動信息設備描述)電話上,我們僅靠記錄管理系統record management system(RMS)得到線性的記錄儲存;在基礎描述里(或PersonalJava)我們有簡單的隨機文件。應用程序開發者們必須用那些一般工具來組織數據,這些工具會對大應用程序導致乏味、低效率和錯誤的傾向。
在J2SE(Java2平臺標準版)和J2EE(Java2平臺企業版)的世界中,關系數據庫代表著數據管理的關鍵技術。大多數開發人員已經非常熟悉通過如JDBC(Java數據庫連接)的API訪問普通數據庫。因此輕量級關系數據庫是我們對移動數據管理自然的選擇。
除了提供離線操作模式外,設備上數據庫on-device databases還有其他的重要好處:
他們能管理用戶參數。極度的個性化已經作為移動商業的一個主要優點被吹捧。
他們能提供一個性能高速緩存器performance cache來減少網絡往返回調。這樣就能大大的增強在目前低速和反應慢的無線網絡中應用程序的性能。
JDBC可選包
標準JDBC API對高端Java移動設備已經是可以選擇利用了。PersonalJava運行時常常和可選的JDBC1.x API捆綁在一起。PersonalJava的繼承物,J2ME 基礎/個性化的描述Foundation/Personal Profile(FP/PP),它沒有委托JDBC來訪問數據庫。相反,FP/PP設備通過J2ME JDBC可選包(JDBC OP)使用JDBC 3.x API 的一個富子集。JSR Java Specification Request(Java 規范需求)169正在發展這個可選包的規范,它的草案已在2002年11月提交上去。JDBC OP除了以下幾個特點外支持大多數用于JDBC的公共特性:
連接池
ParameterMetaData接口
在CallableStatement interface里為已經存儲的程序通過名稱來設置參數
SQL 99的類型(如Struct,Array,Ref,SQLData,SQLInput,和SQLOutput接口 )
自定義類型映射(如setTypeMap() 和getTypeMap() 方法)
數據同步
偶然連接應用程序范例的另一個重要特性是數據同步。獨立的移動數據庫被數據包所隔開。當我們用強大的后臺服務器連接那些“孤島”時移動應用程序非常有用。已連接上的移動數據庫有如下優點:
移動客戶端常常需要訪問企業的基礎設施。例如,移動銷售應用程序需要更新庫存數據。
后端應用程序需要上卷數據和聚集數據來制定智能商業決策或生成正確的報表。例如,供應鏈應用程序在決定它應該從供應商那里定購多少貨物之前需要得到移動銷售人員的聚集數據。
后臺能共享每個移動終端信息
因此智能客戶端不但應該提供離線設備數據管理,而且應該當網絡可用時提供后臺數據庫的數據同步。后臺數據庫當作簡單移動設備管理的一個內容儲存庫是同步解決方案的額外收益。
理論上應用程序開發者能操縱整個同步邏輯,然而開發一個優化的,安全的和可擴展的同步解決方案需要非常專業的技能。移動數據庫產品同其附帶的同步工具和API一起趕走了開發人員的痛苦。
什么是SyncML?
SyncML是一個流行的應用層同步協議。除了包括像J2ME這樣的通用客戶應用平臺,移動設備通常還預裝一些智能應用程序。例如在智能電話或PDA上包括有日歷,地址本和聯系表(個人信息管理 personal information management, 或PIM應用程序)這些應用程序通常能夠通過設備軟件供應商所提供的協議與桌面PC或其他中央數據儲存庫進行數據同步。協議間的不兼容造成用戶的許多問題。例如,在Pocket PC上的Mac 和Linux兩平臺進行同步是非常困難的;如果一個人擁有多個移動設備,那他必須安裝多個驅動程序,而這些驅動程序是存在潛在沖突的。用戶需要一個標準的同步協議,它允許任何設備在不需要專門驅動程序條件下與任何后端應用程序進行同步。
SyncML是一個標準的XML數據格式,它定義語法描述簡單PIM數據例如vCard和vCalendar。SyncML能訪問數據庫驅動的企業后端信息系統。例如,IBM WebSphere Everyplace Access提供SyncML客戶端訪問Lotus Notes和Microsoft Exchange servers。像IBM DB2和Oracle9i Database這樣重要的企業數據庫已經建立了對SyncML的支持。由于SyncML只是在PIM類型應用程序上發揮作用,它還沒有強大到足以和通用關系數據庫同步的地步,因此本文沒有集中在SyncML上。