王 韌, 朱金連 , 周 亮, 王 婷, 皮德常, 方黎明
(1.江蘇出入境檢驗檢疫局信息化處 江蘇 南京 200001;2.南京航空航天大學 計算機學院,江蘇 南京 210016)
目前企業級應用程序都是基于關系型數據庫進行數據存儲與管理是,關系數據庫管理系統采用存儲過程和觸發器的形式進行應用程序邏輯處理,并使用通用SQL語言存取數據與通過標準ODBC或JDBC標準化數據庫應用程序接口進行數據庫數據查詢,這種技術已經完全融入到了企業級應用程序中,且應用程序離開了關系數據庫管理系統就無法正常運行。然而,隨著移動互聯網技術發展與移動用戶數量的增長,應用程序和數據管理逐步向“可移動化”發展,雖然如:Palm OS和 Window CE平臺支持本地文件系統管理數據,但由于文件中的數據存儲不支持SQL查詢,需要人工將列表中的數據轉換成可自定義數據存儲與檢索格式,如何實現移動應用程序與企業應用程序間的有效數據管理與如何有效進行移動平臺數據庫訪問已經成為了當前面臨的問題。
1)中間件概念
中間件主要是位于應用層與數據層間的由API定義的軟件層,主要負責不兼容操作系統、數據庫、文件系統間的數據通信與上下層通信服務的獨立[1]。
中間件作為一個獨立部分可以在多個平臺上進行實現、部署,提供很好的跨平臺的交互能力,應用程序在中間件提供的環境中可以更好地集中于業務邏輯上,最終自然而然地在異構環境中實現良好的協同工作。中間件的使用減少了系統平臺的差異性對業務系統開發的過多影響,并為應用軟件的平滑演進提供一個堅實的基礎。
2)中間件分類
中間件類型主要包括數據庫中間件、遠程調用中間件、對象請求代理、事務處理管理中間件、專用中間件、面向消息中間件[2]。遠程調用中間件采用基于客戶機/服務器模式實現本地應用程訪問遠程數據庫,同時將遠程數據庫執行的結果獲取到本地中;面向消息中間件主要是采用基于消息傳遞和消息隊列管理模式實現客戶機與服務器間的數據同步或者異步傳輸,通過該中間件可以實現網絡中斷環境下客戶端與服務端間的數據一致性;對象請求代理則采用分布式請求或服務信息處理方式實現非結構或非關系數據庫間數據交互;事務處理管理中間件則主要是用于多用戶、分布式數據庫環境控制管理;專用中間件主要大型客戶機/服務器使用的專用中間件;數據庫中間件位于客戶機與數據庫之間的應用層,起到客戶機與數據庫間的數據交互與弱化客戶端數據處理的作用,同時通過對中間件增強數據并行處理與改善安全性能。
數據庫中間件種類包括通用網關接口 CGI、WebAPI、DJBC 技術[3]。
1)通用網關接口CGI
通用網關接口CGI主要是用于WEB服務器與CGI應用程序數據傳遞標準,CGI部署在應用服務器中,同時目前所有Web服務器都支持CGI標準。在CGI接口中,當客戶端通過瀏覽器訪問服務器時[1],首先調用CGI接口進行服務器數據訪問,服務器則將數據處理結果通過WebService返回給客戶端,由于CGI采用為每個請求創建一個CGI程序實例,導致當具有相同查詢實例時也需要建立獨立CGI程序實例,無法實現多個客戶請求共享,也容易導致服務器資源大量消耗。
2)WebAPI
WebAPI數據庫中間件主要是以DLL方式運行的ASNPI和ISAPI,其內部中的地址都不相同,當客戶端發起的ULR地址相同情況下WebAPI提供了可調用數據操作進程,加速了數據庫服務器通信效率和性能,但通過WebAPI部署的中間件智能用于基于WEB的服務器上,可移植性低;
3)DJBC 技術
DJBC技術主要采用基于Java語言的書庫訪問接口,DJBC通過數據庫通用驅動管理器調用具體的數據庫驅動程序執行SQL語句,并根據底層操作系統的環境自動選擇驅動程序,其具有很好的跨平臺性與可移植性,但由于Java的性能問題,其DJBC訪問數據效率很低[2]。
移動數據庫中間件就有可移植性、集成、易于擴充、使用簡單等特點。移動數據庫中間件屏蔽了底層通信協議與操作系統細節,只需要對中間件進行配置就可以實現與底層通信,而當應用程序需要使用底層服務時,只需要將中間件中的服務寫入應用程序中即可,無需要對集成環境做大量代碼修改,同時當中間件的功能無法滿足應用程序需求時,可以通過中間件功能擴展方法增強中間件能力,數據庫中間件還可以實現各種數據源的統一訪問方法。
一般情況下,移動數據庫融合了復制、緩存、數據廣播、位置管理、查詢處理與優化技術[4]。移動終端中的數據同步主要通過管道(conduit)進行處理,當用戶在應用程序中點擊提交或者Sync按鈕時,基于系統中的DLL或者COM對象的管道軟件會自動調用系統數據庫操作數據,并通過調用ODBC/JDBC中間件技術同步到企業級應用程序更新數據庫。但隨著不同移動終端的出現,要實現應用程序如能被Windows CE支持也要被手提電腦支持,其數據庫應用程序接口就需要使用3個數據庫模塊,例如在移動電腦中使用JDBC/ODBC/ADO數據庫模塊,在OS系統中使用Palm數據庫應用程序接口,在Windows CE中使用ADOCE數據庫訪問接口,以及要實現3個數據模塊互相通信的服務器TCP/IP套接子接口等。為了實現移動應用數據庫的跨平臺支持,可以采用如 C/C++、JAVA等流行語言編寫移動應用程序或者采用跨平臺中間件技術實現不同平臺底層數據操作與管理,并采用服務端數據合并與同步化解決方案實現數據一致性管理。
移動數據庫在移動終端中主要承擔了數據管理、查詢處理、交換管理等功能,在進行移動數據庫設計時需要重點考慮數據類型、響應時間、備份與恢復,同時也需要支持并發數據操作與數據安全管理。
本研究中的中間件應用用于和檢驗檢疫局原有核心業務系統對接。通過接口交互,可從原業務系統獲取業務數據信息,并將“國檢通”系統處理后的業務數據同步至原系統。
移動計算系統是服務端采用固定節點與客戶端采用移動節點構成了分布式計算結構,客戶端具有可移動性、斷接性、弱可靠性等特點,其移動環境下的數據庫就是移動數據庫,與應用程序相結合共同形成了動態連接的分布式系統。其移動應用數據庫中間件結構如圖1所示。

圖1 移動數據庫中間件結構Fig.1 Mobile database middleware structure
在移動數據庫中間件結構中,當上層應用需要與底層移動操作系統、外圍系統、移動數據庫交互信息時,首先中間件判斷上層應用程序需要調用的服務,如數據訪問,則中間件通過數據訪問組件調用數據訪問DAO組件實現與移動數據庫數據訪問,同時若應用程序需要調用遠程數據庫[3],則也可以通過數據訪問組件調用遠程數據庫,若上層應用程序通過傳輸中間件調用遠程組件,若首先調用中間件中的傳輸封裝組件接口,然后中間件自動調用壓縮組件和傳輸組件進行數據收發。這樣移動應用程序就不需要關系發送數據信息的底層細節,只需要向互聯網用戶一樣調用底層服務即可。在移動數據庫中間件中,為了支持移動設備與移動應用程序的差異性,數據庫中間件支持通過XML服務實現組件功能調用、數據轉換,移動數據庫中間件服務組件啟動時會自動加載XML服務,通過XML加載移動設備軟硬件信息,并更加硬件設備不同自動選擇最優配置,實現在不同制式和設備信息交互時提供不同層次的服務水平。
由于移動數據庫首先要與數據庫建立連接,然后才能發送SQL語句并執行該語句,當數據處理結束后數據庫自動關閉該連接,由于移動應用程序有時存在多個應用程序同時調用一個移動數據庫的環境,當多個應用程序需要同時調用一個移動數據時,由于建立多個會話,其數據庫工作效率會降低。在本論文中,移動數據庫中間件中已經包含了連接移動數據庫的 Connnection 類、Statement類、ResultSet類[5],分別描述了移動應用程序創建數據庫連接、提交SQL語句、包含了處理數據庫執行結果反饋ResultSet類[4]。移動數據庫中間件中利用3個基礎類完成數據庫連接的過程,在移動數據中間件中首先利用Class.forName加載支持本移動設備的數據庫驅動程序,然后利用DriverManager.getConnection函數創建移動數據庫連接Connection實例,接著利用Connection.createStatement方法創建移動數據庫Statement實例,最后分別利用 executeUpdate、executeQuery、ResultSet執行應用程序提交的SQL,完成數據更新、查詢、結果反饋等操作[6]。
而當移動應用程序數據操作涉及遠程數據調用時,移動應用程序通過數據訪問組件中的webdataQuery類實現服務端數據調用,其調用方法如圖3所示,在圖3中中間件首先通過中間件傳輸組件調用遠程企業應用Webservices應用程序模塊,由企業應用WEB應用程序完成遠端數據操作[5],其操作結果由webservices返回,并通過XML服務組件進行數據格式轉換,然后更新到移動數據庫中。

圖2 遠程調用流程Fig.2 Remote call process
文中主要探討了基于中間件的移動數據庫設計,利用中間件技術處理移動數據庫在移動終端和網絡的不可靠性下的數據處理,提高了移動應用程序的擴展性、健壯性的需求。
[1]錢文海,賀元啟.基于數據復制技術的移動數據庫系統[J].計算機應用研究,2012(7):34-35.QIAN Wen-hai,HE Yuan-qi.The mobile database system based on the data replication technology[J].Computer Application Research,2012(7):34-35.
[2]王宗江,樂嘉錦.Sybase移動和嵌入式數據庫的同步技術[J].中原工學院學報是,2012(1):123-124.WANGZong-jiang,LE Jia-jin.Sybase mobile and embedded database synchronization technology[J].Journal of Zhongyuan Institute of Technology,2012(1):123-124.
[3]王彤,王良.嵌入式移動數據庫的綜述及評價[J].計算機工程,2011(12):34-35.WANG Tong,WANG Liang.Review and evaluation of the embedded mobile database[J].Computer Engineering,2011(12):34-35.
[4]Imielinski T,Viswanathan S,Badrinath B.R.Energy efficient indexing on air[C]//Proceedings of International Conference on Management of Data,2010.
[5]S.Acharya,M.Franklin and S.Zdonik.Dissemination-based data delivery using broadcast disks[C]//IEEE Personal Communications,2009.
[6]Andrea Bono.Historical seismometry database project:A comprehensive relational database for historical seismic records[J].Computers&Geosciences,2007:45-46.