mysql多客戶端數據不同步_一種多終端設備上的數據同步方法

一種多終端設備上的數據同步方法

【技術領域】

[0001] 屬于移動通信技術領域,特別是涉及基于離網環境下多種移動終端設備之間的數 據同步的方法。 技術背景

[0002] 90年代未,數據同步始于有線連接,如MAC機作為數據中心,與終端設備(iPod)通 過FireWire進行同步。2000年以后,云服務迅速發展,以PC/MAC機為代表的數據中心逐漸 轉向了云端只要設備有網絡,就可以使用,如通訊錄,微信的消息備份與恢復,AppStore。

[0003] 近年來伴隨著互聯網和芯片技術的高速發展,移動終端設備的種類也越來越多。 移動終端設備是指可以在移動中使用的計算機設備,例如手機、筆記本、平板電腦、POS機甚 至包括車載電腦都屬于移動終端設備,這些設備的出現,極大的方便和豐富了人們的工作 和生活,顯著的優點促使人們根據自己的需求選擇適合自己的智能終端設備。

[0004] 然而,人們在使用中經常需要對各種信息進行修改,導致在設備中的所儲存的 數據信息需要比定期改變,而且同一種類型的數據需要存儲在多種終端設備中,這樣就產 生了一個需要保持各種終端中同類型數據的一致性和完整性問題。由于無線網絡通信能力 自身存在的局限性,不能隨時連接網絡進行數據交換,使得離線應用的需求逐漸普及。

[0005] 在現有的技術中,解決此問題的方法主要是同步式的云服務訪問方式,雖然這種 方法比較方便,但現有的大部分云服務并沒有充分考慮移動客戶端的特性,傳輸數據量很 大,為移動設備帶來較大的計算資源消耗和網絡帶寬占用,使其響應并不流暢,無法高效便 捷地訪問云服務。

[0006] 因此為滿足人們于同時使用多種移動終端設備時各終端設備間對于數據同步的 要求,以及在訪問數據過程中更加流暢、高效的體驗要求,需要找到一種新型的數據同步方 法,以實現多種移動終端設備之間數據同步的一致性和用戶體驗的流暢性。該類應用不再 同步地與云交互,而是直接訪問本地文件系統交換數據,取而代之的是,數據在后臺與云端 進行通信,數據訪問與同步兩個過程是異步執行的。

【發明內容】

[0007] 針對現有技術的缺點的基礎上,本發明的目的在于提供一種能夠滿足在離網環境 下多終端設備間的保持數據最終一致性的解決方式。

[0008] 為實現上述目的,本發明提供一種多終端設備上的數據同步方法,主要包括以下 幾個步驟: (1) 在終端設備中識別出相應的變化對象并將其進行標注; (2) 將標注的變化對象寫入到本地數據庫; (3) 在本地數據庫中,調取標注的變化對象,將其打上時間戳抽象為事務日志; (4) 將事務日志寫入本地同步表中; (5) 終端設備后臺啟動同步服務,循環讀取本地同步表中的事務日志,并將其批量提交 到服務器端,存入服務器端數據庫中; (6) 提交成功的日志,將事務日志從本地同步表中刪除; (7) 服務器端循環讀取事務日志,逐條進行解析還原變化對象; (8) 另一終端設備接入后,從服務器端獲取最新的事務日志; (9) 將獲取的事務日志在本地數據庫中回放; (10) 通過訪問本地數據庫中新的事務日志,記錄事務日志的當前時間戳; (11) 數據同步工作完成后,即可通知上層界面去更新數據。

[0009] 進一步,所述步驟(1)中,根據業務邏輯劃分變化對象,變化對象通過全局描述符 ⑶ID標識,變化對象之間的關系通過變化對象ID關聯。

[0010] 進一步,所述步驟(2)中,本地數據庫使用Sqlite數據庫。

[0011] 進一步,所述步驟(3)中,設定變化對象的一次變化打上時間戳封裝為一條事務日

[0012] 進一步,所述步驟(4)中,本地同步表是終端設備中維護的一個增量更新表,用于 記錄事務日志。

[0013] 進一步,所述步驟(5 )中,服務器端數據庫為MySQL或MongoDB等非關系型數據庫。

[0014] 進一步,所述步驟(7)中,若服務器端在對象變化時做其它處理,僅需設置一系列 數據處理器,將事件分開處理。

[0015] 進一步,所設置的數據處理器還包括以下幾個步驟: 將讀取的事務日志提交到處理器; 處理完成的事務日志存儲到本地數據庫中; 等待其它終端設備獲取并同步到本地。

[0016] 進一步,所述步驟(10)中,記錄當前時間戳,用于下一次獲取事務日志時,服務器 端計算這段時間內的增量日志列表。

[0017] 結合附圖閱讀本發明實施方式的詳細描述后,本發明的其他特點和優點將變得更 加清楚。

[0018] 本方法與現有數據同步方案相比,具有以下幾點優勢:數據訪問與數據同步分離, 用戶信息的展示與用戶的修改操作可以離線完成,本地操作快速體驗好;服務器端不需要 提供若干的變化對象讀寫接口,僅需要維護一個數據同步接口和一系列注冊后的任務處理 器,業務擴展僅增加任務處理器,體現了軟件設計中的開閉原則;事務日志抽象成變化對象 的事務日志,而不是SQL語句,事務日志可以在客戶端對接sqlite,在服務器端對接MySQL 或MongoDB等非關系型數據庫;服務器端主要功能為事務日志透傳與數據備份,能夠在多 個應用中復用,節省了后臺開發成本與開發時間。

【附圖說明】

[0019] 下面結合附圖與【具體實施方式】對本發明作進一步詳細的說明: 圖1為本發明的用于多終端設備上數據同步方法的流程圖 圖2為服務器端事務日志處理流程圖。

【具體實施方式】

[0020] 為了使本發明的目的、技術方案和優點更加清楚,下面將對本發明的具體實施方 式作進一步的詳細描述。

[0021] 參見圖1,本實施例的適用于多終端設備上的數據同步方法,包括以下步驟: (1)在終端設備中識別出相應的變化對象并將其進行標注; 具體根據業務邏輯劃分變化對象,變化對象通過全局描述符GUID標識,變化對象之間 的關系通過變化對象ID關聯。

[0022] (2)將標注的變化對象寫入到本地數據庫; 本地數據庫使用Sql

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534623.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oem監控mysql_OEM12c 安裝配置MySQL Plug-in用來監控MySQL

Plug-in--注冊信息[roottest agent]# /oem/emcli setup -urlhttps://omsdb.localdomain:7301/em -usernamesysmanOracle Enterprise Manager 12c 3.Copyright (c) 1996, 2013 Oracle Corporation and/or its affiliates. All rights reserved.The configuration directory &quo…

怎么利用迭代器寫入mysql_range()是什么?為什么不生產迭代器?

本篇文章給大家帶來的內容是關于range()是什么?為什么不生產迭代器?有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。迭代器是 23 種設計模式中最常用的一種(之一),在 Python 中隨處可見它的身影&#x…

java 流式_Java開發筆記(七十二)Java8新增的流式處理

通過前面幾篇文章的學習,大家應能掌握幾種容器類型的常見用法,對于簡單的增刪改和遍歷操作,各容器實例都提供了相應的處理方法,對于實際開發中頻繁使用的清單List,還能利用Arrays工具的asList方法給清單對象做初始化賦…

java保留二位小數_java使double保留兩位小數的多方法 java保留兩位小數

復制代碼代碼如下:mport java.text.DecimalFormat;DecimalFormat df new DecimalFormat("######0.00");double d1 3.23456double d2 0.0;double d3 2.0;df.format(d1);df.format(d2);df.format(d3);3個結果分別為:復制代碼代碼如下:3.230.002.00java保留兩位…

linux java jar打包_【Java】Java程序打包成jar包在Linux上運行

當需要把在Windows上開發的Java程序用在Linux上運行時,就需要吧該Java程序打包成jar包上傳到Linux上去運行。1.Java程序用MyEclipse打包成可運行的jar包(1)在MyEclipse中選中需要打包的項目,點擊右鍵,選擇:Export... 如下圖所示&a…

java匿名對象 回收_Java 匿名對象

我們知道一般實例化一個對象的格式,如下:Car car new Car();其中,變量名 car 就是 new Car() 這個對象的名字。car 是引用類型的變量,它的值存放的是對象的引用(或地址),通過 car 這個變量我們就可以間接使用對象。那…

java int 正則表達式_java正則表達式

Java正則表達式正則表達式定義了字符串的模式。正則表達式可以用來搜索、編輯或處理文本。正則表達式并不僅限于某一種語言,但是在每種語言中有細微的差別。Java正則表達式和Perl的是最為相似的。java.util.regex包主要包括以下三個類:Pattern類&#xf…

mysql.h 動態編譯命令_Linux環境編譯動態庫和靜態庫總結

對Linux環境動態庫和靜態庫的一些基礎知識做一些總結,首先總結靜態庫的編譯步驟。1 先基于.cpp或者.c文件生成對應的.o文件2將幾個.o文件 使用ar -cr命令 生成libname.a文件libname.a 為靜態庫, name 為靜態庫的名字,可以根據模塊功能命名。舉…

netbeans java中文_Ubuntu?下jdk安裝中文字體?java?解決netbeans?方塊字?中文亂碼

安裝環境Ubuntu 11.04、javajdk1.6.0_27首先找到你需要的字體,比如我就是從windows系統里拷出來的,C:\WINDOWS\Fonts這里有很多字體,我只拷貝了simsun.ttc(中文 宋體,從xp系統拷貝的,win7 下沒有這個文件)安裝java后&a…

python 教學_「Python基礎」一次就裝好Python手把手裝到好

一、前言:安裝Python有兩個主要的方法,視情況而定我兩個都會用:(1)安裝 AnacondaAnaconda像一個懶人包,安裝它等于把Python安裝好連同把Python大部分的套件也下載好了,不只如此連通較常用的Python IDE一同幫你裝到好。…

java求二維數組每行的最大值_用JAVA輸入一個二維數組a[3][4]的元素值,求輸出其元素最大值...

展開全部這個簡單啊,把所有元素遍歷一邊62616964757a686964616fe58685e5aeb931333335343963代碼:import java.util.Scanner;public class Help2 {public static void main(String[] args) {Scanner inputnew Scanner(System.in);System.out.print("…

java redis 面試題_Java開發人員怎么面試 常見Redis面試題有哪些

Java開發人員怎么面試?常見Redis面試題有哪些?Redis是目前各大企業都在使用的人們技術,也是企業選拔人才時考核的一個難題。有很多同學只是簡單了解Redis的應用,但對于為什么要用Redis以及企業面試中有關Redis的問題卻答不上來。接…

java方法重載實事例_零基礎java入門教程函數重載function實例化格式案例

java函數的重載,說白了就是函數塊函數名一樣,但函數類型和參數類型和參數列表個數不同重載之和參數列表有關系,與返回值無關java函數重載函數重載鋪墊如下圖函數重載鋪墊上圖功能顯示,功能一致所以功能一致所以用的功能函數名一致…

java 類 屬性數量_跟我學java編程—Java類的屬性與成員變量

在定義類時,經常需要抽象出它的屬性,并定義在類的主體中。下面就來介紹與屬性相關的內容。常量屬性在類中定義的屬性有常量屬性和成員屬性之分。常量屬性用final關鍵字修飾,常量只能賦值一次,在程序中不能修改它的值。一般來說&am…

java獲取界面輸入數字_通過JAVA設計 GUI 界面的計算器程序,用戶可以通過鼠標依次輸入參加計算的數值,進行加、減、乘、...

通過JAVA設計 GUI 界面的計算器程序,用戶可以通過鼠標依次輸入參加計算的數值,進行加、減、乘、2016-08-22 0 0 0 4.0分其他1積分下載如何獲取積分?通過JAVA設計 GUI 界面的計算器程序,用戶可以通過鼠標依次輸入參加計算的數值&am…

java自定義錯誤碼類_如何編寫和應用Java的自定義異常類

11.7.1編寫自定義異常類的模式編寫自定義異常類實際上是繼承一個API標準異常類,用新定義的異常處理信息覆蓋原有信息的過程。常用的編寫自定義異常類的模式如下:public class CustomException extends Exception {//或者繼承任何標準異常類public Custom…

java對mysql查詢_如何利用java對mysql數據庫進行增刪改查

代碼如下:增:Test//數據插入public void demo1() {Connection connnull;Statement stmtnull;try {//注冊驅動Class.forName("com.mysql.jdbc.Driver");//創建連接connDriverManager.getConnection("jdbc:mysql://localhost:3306/name&quo…

util.java_TelnetUtil.java

package com.ailk.ess.webapp2.servermng.net;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import org.apache.commons.net.telnet.TelnetClient;public class TelnetUtil {//telnet客戶端對象VT220/VT52Telnet…

生活中java繼承例子_簡單繼承例子:java

通用類,來繼承出圓和矩形。package circle;public class Geometric {private String color"white";private boolean filled;private java.util.Date dateCreated;public Geometric(){dateCreatednew java.util.Date();}public Geometric(String color,boo…

java技術簡介英文_Java技術常見的英文縮寫

1、 URL,Uniform Resource Location,統一資源定位符。2、 JDBC,Java DataBase Connectivity,Java數據庫連接。3、 JSP,Java Server Pages,Java服務器頁面。4、 JVM,Java Virtual Machine&#x…