999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JSON的離線數據同步策略及應用①

2018-01-08 03:12:48穆鑫鑫蔣同海馬玉鵬
計算機系統應用 2017年12期
關鍵詞:數據庫效率策略

穆鑫鑫,蔣同海,程 力,馬玉鵬

1(中國科學院 新疆理化技術研究所,烏魯木齊 830011)

2(新疆民族語音語言信息處理實驗室,烏魯木齊 830011)

3(中國科學院大學 計算機與控制學院,北京 100049)

基于JSON的離線數據同步策略及應用①

穆鑫鑫1,2,3,蔣同海1,程 力1,馬玉鵬1

1(中國科學院 新疆理化技術研究所,烏魯木齊 830011)

2(新疆民族語音語言信息處理實驗室,烏魯木齊 830011)

3(中國科學院大學 計算機與控制學院,北京 100049)

針對智能移動應用的特殊性及其在離線情況下的數據同步問題,提出了一種數據同步方案,使用JSON技術設計數據交換協議,移動端離線數據存放在SQLite數據庫中、使用基于時間戳的沖突檢測算法提高同步的準確性,并采用增量同步方式保證同步的效率和準確性. 將該策略應用在智慧安防系統中,結果表明,基于JSON離線數據同步效率相比傳統基于XML的方案提高約8%.

數據同步; JSON; SQLite; 混合移動應用

引言

隨著移動互聯網的跨越式發展,移動智能應用的也呈現井噴式增長,通常系統所有的信息都保存在服務端 (Server-side),客戶端 (Mobile device)數據暫存在客戶端,為了保障數據的一致性,一般需要進行客戶端和服務端數據的沖突檢測以及雙向的數據同步,所以,數據同步問題也成了最近國內外移動計算研究領域中的熱點. 然而移動應用在以下幾個方面有特殊性: 無線網絡帶寬限制,移動應用資源有限(如存儲),移動性(設備和網絡),網絡中斷,電池容量有限[1]. 為了在上述各種情況下很好地進行數據在客戶端和服務端間的同步,研究者們提出了許多方法和策略. MY Choi等提出了一種基于信息摘要(Message digest)的數據同步算法SAMD[2],包括移動端數據庫、同步數據服務器和服務端數據庫服務器三個組件,和傳統關系型數據庫管理系統(RDBMS)中數據同步框架類似(如圖1),該策略雖然保證了數據同步的安全性和準確性,但由于加入了中間層同步服務器來進行數據同步服務,所以在性能上大打折扣,不能滿足移動應用的需求; D Sethia等人提出了一種基于元組時間戳的同步策略MRDMS[3],由移動端和服務端兩部分組成,因為省去了中間同步數據服務器的處理,相比文獻[2]中的SAMD省去了同步數據服務器處理數據時間,不足是MRDMS采用的基于元組的時間戳,要維護每個元組的時間戳組成的時間戳表,雖然,這樣做同步的數據更加精確,但是維護大量時間戳表會消耗很多時間和系統資源,而移動端系統資源本身很有限,所以該方法的效率有待提高; 本文提出一種基于JSON和SQLite數據庫的離線數據同步策略,設計了基于JSON的數據交換協議,利用時間戳技術檢測數據沖突,使用增量同步方式保證傳輸數據的高效性,避免不必要的冗余數據傳輸,使用 HTTP POST 請求進行數據傳輸,并將該同步策略應用于混合移動應用“智慧安防”中,結果表明,該策略不僅能保證離線情況下的數據完整性,而且在離線數據同步效率上優于傳統的同步方法.

圖1 經典數據同步框架

1 問題描述

互聯網的高速發展和移動計算技術的不斷發展,使得移動智能設備在日常生活中扮演的角色越來越重要,移動應用的數量急劇增長,通常,系統數據保存在服務端,應用端也會保存少量備份,當數據在不同的移動終端中被修改后,就要將修改的結果同步到服務端,在網絡連接正常的情況下,可以進行實時的數據同步.但是,由于各種原因會發生移動終端離線的情況,在網絡連接中斷的時候,數據的一致性和完整性就顯得格外重要. 離線情況下的數據同步算法應當滿足如下幾個要求[4]:

(1) 應當保證最少的數據傳輸量.

(2) 離線后的數據改變在網絡重新連接之后要同步到服務端.

(3) 數據同步算法要能很容易地用現有技術實現.

(4) 數據傳輸格式要簡單高效.

基于以上各方面的綜合考慮,本文提出了一種基于JSON和SQLite的離線數據同步策略(ODSSJS),后面部分將對ODSSJS做詳細說明.

2 同步策略

離線數據同步策略主要包括: 移動端數據存儲策略、數據交換協議、沖突檢測策略和同步算法,下面對各個組成部分做詳細解釋.

2.1 移動端存儲策略

目前移動應用中使用的存儲數據的方法主要有Android存儲類SharedPreference、文件存儲、HTML5 Local Storage 存儲以及 SQLite 數據庫. 然而不同的存儲方式有各自特殊的特點和適用范圍,如表1所示.

表1 移動端數據存儲方式

由于在安防系統中數據中會有圖片等多媒體數據,另外,離線情況下的數據同步是本文的關注點,所以綜合考慮各種因素之后,選擇SQLite數據庫存儲移動端數據.

2.2 數據交換協議

數據交換協議指的是數據交換的格式,以往的移動應用數據交換多數采用XML格式的數據(如文獻[8]),XML用標簽對來包含數據,然后通過XML解析器來進行解析. JSON(JavaScript object notation)是一種比XML使用更加容易的數據交換格式,可以直接使用 JavaScript來解析,所以,相比 XML ,JSON 使用更加便捷而且效率要比XML高[9]. 從簡潔和高效兩個方面考慮,本文數據交換采用JSON格式,具體做法為:我們將要同步的數據按照事先定義的協議格式表示成JSON對象,然后將其轉換成JSON字符串寫入文本文件中,壓縮后發送到要同步的一端,同步端將數據解壓,解析其中的JSON對象,然后將數據通過SQL插入到移動端SQLite數據庫或者服務端數據庫中.

服務端發送給移動端的JSON數據格式定義為:

{“success”:“true”,

“message”:“服務器操作異常時的提示信息”,

“obj”: {plans:[巡檢任務],items:[巡檢明細]}”,//服務端數據

}

移動端上傳給服務端的JSON數據格式定義為為:

{“success”:“true”,

“message”:“服務器操作異常時的提示信息”,

“obj”: {items:[巡檢任務],appendix:[資源信息],station:[定位信息]}”,//客戶端數據

}

“success”: 表示數據傳輸成功與否,true 代表成功,false代表失敗.

“message”: 由數據發送端傳給接受端的關于數據操作中的具體情況,如數據庫鏈接錯誤時提示數據庫連接錯誤.

“obj”: 協議中的數據主要存放在 obj中,上傳協議和下載協議中的obj具體內容略有差別.

下載協議(服務端發送給移動端)obj中包含:

“plan”: 存放具體任務的信息.

“item”: 存放任務的明細,這里就是要同步數據存放的地方.

上傳協議(移動端發送給服務端)obj中的字段有:

“item”: 和下載協議一樣,存放任務的明細,存放主要同步數據存.

“appendix”: 存放要上傳服務端的其他資源信息,如圖片等多媒體資源.

“station”: 位置信息,為了在 PC 端應用中將具體設備等顯示在地圖上.

2.3 同步算法描述

目前實現數據同步的方式主要有基于觸發器、時間戳、標志位以及日志處理等方式,其中觸發器方式需要消耗的系統資源很大,對于移動客戶端來說資源有限,觸發器的方式不是很適用[8]; 而讀日志的方式也需要耗用額外的時間和資源來進行日志解析,所以效率較低,在移動設備資源有限的情況下,讀日志的方式效率低下; 基于時間戳和基于標志位的方式類似,但時間戳能明確給出數據的修改時間,對于要使用數據修改時間的系統能獲取操作時間是很重要的,所以,本文的離線數據同步策略中采用的是時間戳方式來檢測數據的沖突.

離線數據的同步可以分為上傳和下載兩個部分.上傳由MC(移動客戶端)發起,當MC連接到S(服務端)時,將離線操作數據發送給S; 而下載可以有不同的實現方式,可以由MC發起,也可以是先由MC將離線操作數據上傳后,S將差異數據返回給MC.

數據同步方式有全量同步和增量同步兩種方式,全量同步一次性同步數據庫中的所有數據,而增量同步則只對兩個數據庫中的差異數據進行同步. 對于離線數據的同步,要保證傳輸最少的數據量[10],所以本文中的離線同步采用增量同步方式.

MC和S數據表中數據沖突檢測需要的字段為:

T_MC T_S IS_VALID MC修改時間 S修改時間 是否刪除

(1) 數據下載算法

BEGIN

① 同步.

② MC將本地最大的T_MC作為參數向S發出同步請求.

③ S將T_S > T_MC的數據從數據表抽取出來,按下載協議格式組裝成JSON文件F,將F壓縮成壓縮文件D發送給MC.

④ MC收到壓縮文件D,解壓出JSON文件F.

⑤ 如果 F為空,則轉到 END.

⑥ 如果F不為空,則MC解析JSON文件F內容:

a) 將F中的obj中攜帶的數據轉換成SQL操作.

b) 創建SQLite數據庫DB.

c) 新建事先設計的SQLite數據表T.

d) 通過事先封裝的Angular服務(service)API將每條記錄插入T中.

⑦ 數據寫入完成后向服務器發送SUCCESS消息.

END

(2) 數據上傳算法

BEGIN

① MC將待上傳數據按照同步協議格式組裝成JSON文件F.

② MC將F壓縮成D發送給S.

③ S 收到數據 D,響應 SUCCESS(上傳成功).

④ 如果D為空,則轉到END.

⑤ 如果D不為空,轉到⑥.

⑥ S將D加壓為JSON文件F后解析.

a) 將F中的obj中的數據記錄和對應的表中的記錄作對比.

b) 如果 T_MC > T_S,則插入新數據到服務端數據表中.

c) 更新 T_MC 和 T_S.

d) 否則轉到 a).

⑦ 刪除D和F.

END

整個離線數據同步過程時序圖如圖2所示.

圖2 離線數據同步時序圖

3 應用及分析

3.1 應用場景

在安防系統中,需要對園區設施設備等進行巡檢,可以通過如掃描NFC卡的方式來檢查設施和設備,而為此開發的移動應用需要在有網絡的情況下才能將檢測數據上傳到服務器,但園區通常很大,很多絕大部分區域都沒有網絡覆蓋,這就需要在離線的狀態下對設備設施進行檢查,然后將數據在有網絡環境下上傳到服務端,因此,離線數據的同步策略就變得尤為重要.

筆者將本文中的離線數據同步策略作為“智慧安防”系統的離線數據同步策略,整個系統分為移動端、PC端和服務端,系統架構如圖3所示,PC端界面如圖4所示,移動端,其中移動端采用混合開發框架(Hybrid)Cordova來開發,相比原生移動應用(Native)和web移動應用,Hyper應用開發周期短,可擴展性良好,還能提供對SQLite數據庫操作的第三方JavaScript庫如cordova-sqlite-storage,大大減輕了開發難度,然而混合移動應用也有不足的地方,就是是運行速度不如Native應用快,因為它是通過第三方API來調用Android native API去操作系統硬件的,要經過中間層的額外性能損耗,所以,很自然其性能不如 Native APP[10];移動端和PC端的UI及前端業務流程都使用目前流行的Angular框架來實現,同時,利用第三方庫cordovasqlite-storage封裝了用于操作SQLite數據庫的服務(SQLiteService),通過該service來進行數據的增刪改查(CRUD)將十分方便; 系統后端使用SSH整合框架來實現,使用Oracle數據庫作為服務端數據管理系統.

圖3 智慧安防系統架構圖

圖4 PC 端界面

系統在前端實現離線數據同步協議中的數據存儲、離線數據上傳以及向服務端請求同步等功能,在服務端實現數據的沖突檢測和提供同步數據的下載.

3.2 實驗結果及分析

實驗在WiFi環境下進行,移動端Android版本是4.4.0,通過對文獻[2]中基于同步服務器的同步方法(SAMD)、文獻[8]中基于XML的同步策略和本文基于JSON的離線同步策略(ODSSJS)三種方法同步不同數據量的離線數據時的效率進行了對比,結果如圖5所示.

圖5 同步效率對比圖

由圖5可以看出,SAMD在三種策略中是效率最差的,原因在于SAMD采用如圖1的架構,通過中間層數據同步服務器來進行數據同步,這樣做就在中間層處理同步數據過程中確實損失了效率; 而文獻[8]中基于XML的同步策略雖然也是用增量同步的方式保證傳輸數據量最少,但在攜帶相同數據的情況下,相比JSON 格式,XML 總數據量更大,解析效率低,所以整體效率不如本文的ODSSJS.

4 結束語

本文提出了一種基于JSON的離線數據同步方案,設計了基于JSON的數據交換協議,通過HTTP POST傳輸數據,使用SQLite存儲移動離線數據,通過時間戳技術來檢測數據沖突,同時,采用增量同步的方式保證數據同步過程的高效. 該方案已經在“智慧安防”混合移動應用中實現,可靠性和高效性完全達到移動應用離線數據同步的要求. 下一步研究可在進一步提高同步效率及在其他設備(如POS機、PDA設備)中的擴展應用等方面進行.

1Imam AA,Basri S,Ahmad R. Data synchronization between mobile devices and server-side databases: A systematic literature review. Journal of Theoretical & Applied Information Technology,2015,81(2): 364–382.

2Choi MY,Cho EA,Park DH,et al. A database synchronization algorithm for mobile devices. IEEE Trans. on Consumer Electronics,2010,56(2): 392–398. [doi: 10.1109/TCE.2010.5505945]

3Sethia D,Mehta S,Chowdhary A,et al. MRDMS-mobile replicated database management synchronization. Proc. of International Conference on Signal Processing and Integrated Networks. Noida,India. 2014. 624–631.

4郝平,林原沖. 一種移動網絡下基于雙時間戳的數據增量同步研究. 計算機應用與軟件,2016,33(4): 143–145,226.

5知乎. Android 開發時,如何實現和服務器的數據同步?https://www.zhihu.com/question/19708808. [2016-06-14].

6陳俊龍. Android平臺的數據傳輸與同步的設計與實現[碩士學位論文]. 北京: 北京郵電大學,2015.

7Imam AA,Basri S. Data synchronization patterns in mobile application design. Journal of Theoretical and Applied Information Technology,2015,81(2): 364–382.

8劉宇,戴鴻君,郭鳳華,等. Android 平臺可增量同步的網絡應用協議. 計算機工程,2011,37(18): 59–61. [doi: 10.3969/j.issn.1000-3428.2011.18.020]

9w3schools. JSON introduction. http://www.w3schools.in/json/intro/. [2016-11-01].

10Carmatec. Hybrid apps vs native apps in the mobile app development world. http://www.carmatec.com/blog/hybridapps-vs-native-apps. [2015-08-13].

Offline Data Synchronization Strategy Based on JSON and its Application

MU Xin-Xin1,2,3,JIANG Tong-Hai1,CHENG Li1,MA Yu-Peng1

1(Xinjiang Technical Institute of Physics and Chemistry,Chinese Academy of Sciences,Urumqi 830011,China)
2(Xinjiang Key Laboratory of Minority Speech and Language Information Processing,Urumqi 830011,China)
3(School of Computer and Control Engineering,University of Chinese Academy of Sciences,Beijing 100049,China)

In view of the particularity of intelligent mobile applications and its data offline synchronization problems,we put forward a scheme of data synchronization,using JSON technology to design data exchange protocol and the SQLite database to store the mobile terminal offline data,using the conflict detection algorithm based on time stamp to improve the accuracy of synchronization as well as the incremental synchronization mode to ensure the efficiency and accuracy of synchronization. This proposed method is applied to an intelligent security system,and the results show that the efficiency of offline data synchronization based on JSON is about 8% higher than that of the traditional XML based scheme.

data synchronization; JSON; SQLite; hybrid mobile applications

穆鑫鑫,蔣同海,程力,馬玉鵬.基于JSON的離線數據同步策略及應用.計算機系統應用,2017,26(12):257–261. http://www.c-sa.org.cn/1003-3254/6084.html

中國科學院西部之光人才培養計劃項目(XBBS201319); 新疆維吾爾自治區青年科技創新人才培養工程基金項目(2014721033)

2017-03-08; 修改時間: 2017-03-27; 采用時間: 2017-03-29

猜你喜歡
數據庫效率策略
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
例談未知角三角函數值的求解策略
我說你做講策略
高中數學復習的具體策略
數學大世界(2018年1期)2018-04-12 05:39:14
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
跟蹤導練(一)2
“錢”、“事”脫節效率低
中國衛生(2014年11期)2014-11-12 13:11:32
主站蜘蛛池模板: 久久人搡人人玩人妻精品| 免费无码又爽又刺激高| 国产小视频在线高清播放| 国产自无码视频在线观看| 国产成人高清在线精品| 小蝌蚪亚洲精品国产| 国产在线精彩视频论坛| 国产91无码福利在线| 国产毛片片精品天天看视频| 天堂网亚洲综合在线| 成人精品视频一区二区在线| 特级精品毛片免费观看| 久久久精品无码一二三区| 呦系列视频一区二区三区| 亚洲国产亚洲综合在线尤物| 亚洲国产中文欧美在线人成大黄瓜| 国产三级视频网站| 丁香亚洲综合五月天婷婷| 精品無碼一區在線觀看 | 色婷婷综合激情视频免费看| 黄色国产在线| 国产精品成人第一区| 亚洲精品福利视频| 亚洲综合激情另类专区| 亚洲精品无码av中文字幕| 国产麻豆aⅴ精品无码| 国产99精品久久| 欧美在线三级| 久久亚洲高清国产| 天天做天天爱夜夜爽毛片毛片| 国产白浆一区二区三区视频在线| 欧美高清视频一区二区三区| 国产呦精品一区二区三区下载| 欧美精品在线免费| 97国产成人无码精品久久久| 99青青青精品视频在线| 亚洲男人的天堂久久香蕉 | 最新国产精品鲁鲁免费视频| 国产第四页| 人人妻人人澡人人爽欧美一区| 亚洲视频一区在线| 欧美一级特黄aaaaaa在线看片| 五月激情婷婷综合| 国产福利微拍精品一区二区| 91破解版在线亚洲| 国产女人在线观看| 国产精品xxx| 91在线视频福利| 日本久久免费| 亚洲欧美日韩中文字幕在线一区| 亚洲综合极品香蕉久久网| 亚洲人成人伊人成综合网无码| 日韩精品欧美国产在线| 日韩在线网址| AV在线天堂进入| 99精品视频在线观看免费播放| 久久国产成人精品国产成人亚洲| 在线精品亚洲一区二区古装| 久久一级电影| 夜夜操国产| 美女亚洲一区| 欧美一区二区人人喊爽| 老司国产精品视频91| 在线五月婷婷| 亚洲国产成人久久精品软件| 国内精自视频品线一二区| 国产精品嫩草影院视频| 国内熟女少妇一线天| 夜夜高潮夜夜爽国产伦精品| 色婷婷在线影院| 特级欧美视频aaaaaa| 精品91自产拍在线| 999精品色在线观看| 制服丝袜一区| 福利姬国产精品一区在线| 亚洲国产成人综合精品2020 | 国产成人凹凸视频在线| 国产精品yjizz视频网一二区| 亚洲一区二区无码视频| 91麻豆精品国产高清在线| 日韩在线成年视频人网站观看| 亚洲v日韩v欧美在线观看|