李金來,吳濤
(海洋石油工程(青島)有限公司,青島266100)
基于JSON數據交換的移動終端與服務器端異構數據庫的數據交互
李金來,吳濤
(海洋石油工程(青島)有限公司,青島266100)
隨著移動互聯網發展和Android平臺的SQLite數據庫系統的應用日益廣泛以及企業間信息交換的日益頻繁,移動端數據庫與服務器端不同種類數據庫之間進行數據共享或傳輸的問題日益突出。傳統的數據庫轉換工具已不能很好地解決數據類型復雜的數據庫之間的數據交換。針對以上問題,對Android終端SQLite數據庫和服務器端異構數據庫的數據交換進行研究,借助新興的JSON數據交換格式和JavaBean技術,對移動端SQLite數據庫與服務器端數據庫數據交換進行實現。
數據交換;SQLite;JSON;異構數據庫;Android
隨著移動互聯網技術的迅速發展和Android操作系統的應用,目前,在許多行業、單位或機構、部門內部對于一些實時的業務數據使用Android移動終端的SQLite數據庫來存儲。由于在后臺對數據提取、分析、挖掘的要求和Android數據終端受限于存儲容量小的缺點,移動端數據庫需要按時與服務器端數據庫進行數據交換。因時間推移、人事變遷以及數據庫技術的發展和數據庫時常變化,再加上實施數據管理系統的階段性、技術性以及其他經濟和人為因素的影響,在一個單獨企業內部采用不同的數據管理系統的現象非常普遍,從簡單的文件數據庫到復雜的網絡數據庫,它們構成了企業的異構數據源。為了進行信息的交流,或者當目前使用的服務器端數據庫已經不能滿足數據的日益增加而要求更大更高級的數據庫的需求時,需要適應在異構數據庫間進行數據的傳輸和交換,特別是對于后者,則需要在移動端SQLite數據庫和服務器端異構數據庫間進行數據的上傳和下載。另外,對于數據庫軟件開發公司而言,其項目開發過程中也經常涉及數據的導入和導出操作。
Google為Andriod平臺處理大量數據提供了SQLite數據庫技術。SQLite是一款輕型的數據庫,它的設計目標是服務于嵌入式系統,而且目前已經廣泛使用。其占用資源非常低,能夠支持Windows/Linux/Unix等主流的操作系統,也能夠跟很多程序語言相結合,例如C#、PHP、Java等。
2.1基于JSON數據交換的移動終端與服務器端異構數據庫的數據交互的方法簡介
本文提出的數據交換方法成功應用在海洋石油工程(青島)有限公司信息化科研綜合攻關研究的“基于C/S架構下的臺賬監控與統計系統軟件的開發與應用”課題中。海洋石油工程(青島)有限公司臺賬監控與統計系統采用C/S架構,Android系統移動端集成了數據交換功能,通過無線網絡將數據上傳至服務器,由服務器接口程序分析并將數據插入到后臺數據庫中。系統架構圖如圖1所示:

圖1 系統架構圖示
利用“SQLite數據庫+JavaBean技術+JSON數據交換格式+服務器端數據庫”的四位一體的設計模式,本系統規定了協議數據單元(Protocol Data Unit,PDU)內容包括請求與回復格式,請求類別定義,回復類別定義,斷點續傳方式,無響應處理等。將SQLite數據庫表中的每一行數據對應成一個JavaBean對象,通過JSON技術對JavaBean對象進行序列化,最終和請求組根據自定義協議內容封裝成數據包并壓縮,通過無線網絡,發送到服務器并由服務器端通信接口程序進行解析。服務器端解壓縮并拆包,根據協議內容及數據組織格式分析出移動端發來的數據類型存入服務器端的數據庫,并對移動端的請求進行響應。其技術路線如圖2所示。

圖2 技術路線圖示
2.2 SQLite數據庫與服務器端異構數據庫數據交換設計
為實現數據交換,首先應該把移動端SQL數據庫字段設計為一個JavaBean類:
CREATE TABLE storage(record_id integer primary key autoincrement,machine_id integer,storage_time date,price integer)
轉化對應的JavaBean類結構為:


在程序中為JavaBean實體對象賦值,其代碼為:

將JavaBean序列化為JSON對象,經過JSON封裝以后會變成以下格式:

最后將請求組和數據JSON對象拼接成一個JSON字符串,進行壓縮,其代碼為:

數據經壓縮后發送,服務器端接口程序進行解析,其步驟為:解壓縮,JSON反序列化為JavaBean對象,數據插入數據庫中。其代碼是發送的逆過程,不再贅述。
2.3數據交換關鍵問題的解決方案
對于Android平臺的移動端設備而言,大量的應用利用SQLite數據庫的目的是為搜集實時數據。而在實時數據存儲結構中,主鍵作為唯一性標示是沒有特定意義的,這一點與業務主鍵有所區別。如表1所示,員工信息表中的員工編號是人為設計或指定的編號,因此表1中員工編號為業務主鍵。

表1 員工信息表
邏輯主鍵是為標示數據在數據表唯一性和方便開發而設置,是無特殊含義的主鍵。如表2所示,實時統計表中自增主鍵record_id并無實際意義,其作用則是利于后期數據庫開發并保證記錄的時間有序性。

表2 實時統計表
當多個Android移動端數據庫通過數據交換插入到服務端數據庫中,以局表為例使用邏輯主鍵會產生兩個問題。其一,不同移動終端上傳的數據到服務器端數據庫,會產生主鍵沖突。例如每個終端數據庫中的局表都含有value值為1的主鍵record_id。其二,相同的移動終端上傳的數據到服務器端數據庫,會產生主鍵沖突。例如相同的數據重復上傳,主鍵相同,產生沖突。再例如移動終端重新安裝應用,主鍵record_id將從1開始自增,與之前本終端上傳的數據發生主鍵沖突。
為區分不同終端的數據導致的上傳數據主鍵沖突,移動端上傳數據時,為終端編碼或獲取終端MAC地址來作為終端在整個系統中的唯一標示。在上傳過程中,移動端數據包請求組攜帶唯一標識與數據一起上傳。在服務器數據庫局表中,將這個唯一標示作為主屬性。
為解決同一移動端重復上傳數據導致主鍵沖突,移動端采取“傳完就刪”的策略。即移動端數據上傳到服務器端并獲取服務端響應之后,從移動端數據庫中刪除這些記錄,避免重復上傳或篩選已上傳數據才能上傳。
為解決應用因故障重裝或者移動端數據庫被清空,主鍵重新自增而導致的本終端上傳數據發生的主鍵沖突,服務器端接收到上傳數據,在插入到服務器端數據庫之前,將移動端自增的Integer型主鍵轉為String型的“當前系統時間+移動端Integer型主鍵”,作為服務器端數據庫表的主鍵。移動端數據庫中以自增Integer型主鍵作為外鍵關系的表需要同時上傳到服務器端,以此來保證服務器端的當前系統時間取相同值,外鍵關系依舊成立。將移動端Integer型外鍵轉為String型的“當前系統時間+移動端Integer型外鍵”,作為服務器端的外鍵。按照這種處理方式,移動端上傳的數據在服務器端不會出現主鍵沖突,且沒有破壞各種外鍵關系。
借用以上解決方案,在移動端的下載方面,服務器數據庫基于分析之后,根據移動端唯一標示,將分析結果下載到移動端,并把數據插入到對應的表中。
這種方案有兩大優點。第一,更符合實際應用的需求,前臺移動端在采集實時數據之后,將數據上傳到服務器,接下來對歷史數據的需求其實就是查看其規律和分析結果。移動端也可以通過下載瀏覽歷史數據。第二、在操作上是簡單可行并成功避免不同移動端和統一移動端數據之間的主鍵沖突。
本文提出的數據交換方法成功應用在海洋石油工程(青島)有限公司信息化科研綜合攻關研究的“基于C/S架構下的臺賬監控與統計系統軟件的開發與應用”課題中。移動端系統在臺賬情況實時記錄后,系統對數據進行統計和簡單分析,并以簡潔、直觀的報表方式提供給管理人員。服務器端系統是對移動端系統的功能擴展,通過數據通信持久化保存移動端的數據,對數據加以提取、分析、整合、挖掘。最終形成一個能夠直觀反映臺賬數據的統計平臺。平板電腦利用無線網絡,將臨場技戰術統計數據和訓練質量監控數據匯集,形成一個以SQLite數據庫平臺作為支撐的綜合移動端數據體系。利用該系統所提供數據通信功能,管理人員能夠將移動端數據上傳至服務器端持久化保存,對這些移動端數據進行詳細的分析和挖掘,從中提取到規律化的賬目特點,供公司的信息管理人員改進管理方法。
本文通過建立JSON中間數據源,以JSON對象作為異構數據庫之間數據轉換的橋梁,充分利用了JSON具有較好的系統擴展性、可移植性、跨平臺等特性和優點,為實現移動端SQLite數據庫與服務器端異構數據庫間的數據轉換提供了轉換模型。由于JSON和異構數據庫本身的特點,我們有理由相信JSON在異構數據庫系統中的應用將會越來越廣泛,它們之間的結合也將會越來越緊密。
[1]丘廣華,張文敏.XML編程實例教程[M].北京:科學出版社,2004:34-50.
[2]閻宏.Java與模式[M].北京:電子工業出版社,2003:179-200,992-1000.
[3]Brett McLaughlin.使用JSON進行數據傳輸[EB/OL].[2014-06-09].http://www.ibm.com/developerworks/cn/web/wa-ajaxintro10/.
[4]徐周,黃上騰.基于XML實現數據庫間信息交換的方法[J].計算機工程,2001,27(4):167-175.
[5]Horstmann C.S,Cornell G.Java核心技術卷Ⅱ:高級特性[M].北京:機械工業出版社,2006:50-66.
[6]勒巖,姚尚郎.Google Android開發入門與實戰[M].北京:人民郵電出版社,2009:54-125.
Data Exchange For Database of Mobile Terminals and Heterogeneous Database of Server Based on JSON Data Interchange Format
LI Jin-lai,WU Tao
(Offshore Oil Engineering Co.Ltd.,Qingdao 266100)
With the development of mobile Internet applications,Android SQLite database systems widely spreading and the exchange of information between enterprises frequently progressive,the problem of mobile and server-side database for data sharing or transmission between different types of database become increasingly prominent.Traditional data conversion tools do not have a good solution for data exchange between complex data types database.To solve these problems,studies data exchange based on SQLite database of Android terminals and heterogeneous database data of server.With emerging JSON and JavaBean technology,it achieves the data exchange between SQLite database of mobile client and server database.
Data Exchange;SQLite;JSON;Heterogeneous Database;Android
1007-1423(2016)16-0055-04DOI:10.3969/j.issn.1007-1423.2016.16.016
李金來(1979-),男,山東青島人,本科,中級工程師,研究方向為軟件工程與智能信息系統
2016-03-16
2016-05-15
吳濤(1988-),男,山東青島人,碩士研究生,初級工程師,研究方向為軟件工程與智能信息系統