一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步、校驗方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步、校驗方法、裝置及系統(tǒng),其中,異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法包括:在線狀態(tài)下,監(jiān)聽客戶端數(shù)據(jù)庫的數(shù)據(jù)操作;獲取監(jiān)聽到的發(fā)生變化的數(shù)據(jù)記錄并將所述數(shù)據(jù)記錄發(fā)送給服務器端;服務器端根據(jù)接收到的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù);所述離線數(shù)據(jù)同步部分包括:查詢客戶端數(shù)據(jù)庫中與預置的臨時表中相同ID字段與時間字段的數(shù)據(jù)記錄,獲取所述數(shù)據(jù)記錄并發(fā)送給服務器端;根據(jù)接收到所述數(shù)據(jù)記錄,服務器端查詢數(shù)據(jù)庫中是否存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄;若存在,服務器端根據(jù)接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)。
【專利說明】一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步、校驗方法、裝置及系統(tǒng)
【技術(shù)領域】
[0001]本發(fā)明涉及數(shù)據(jù)同步【技術(shù)領域】,具體涉及一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步、校驗方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]目前常用的差異數(shù)據(jù)捕捉方法主要有快照法(Snapshot)、日志法、API (Application Program Interface)法、影子表法、控制表法、時間戳法和觸發(fā)器法。
[0003]快照法就是在某一時刻對數(shù)據(jù)庫中數(shù)據(jù)進行一次“照相”,生成一個描述數(shù)據(jù)庫中數(shù)據(jù)的瞬時狀態(tài)的靜態(tài)文件,最后在規(guī)定時間內(nèi)復制到目標數(shù)據(jù)庫。
[0004]日志法就是通過分析數(shù)據(jù)庫日志信息來捕獲復制對象的變化序列。
[0005]API (Application Program Interface,應用程序接口)法就是在應用程序和數(shù)據(jù)庫之間引入一類中間件,由它提供一系列API,在API上完成應用程序?qū)?shù)據(jù)庫修改的同時,記錄下同步對象的變化序列。
[0006]影子表法是初始化數(shù)據(jù)庫時,為每一個同步對象表建立一個影子表,即作為一份當前的拷貝,以后通過比較當前的影子表與源表獲取變化信息。
[0007]控制表法是為每個要同步的源表創(chuàng)建一個控制表,控制表只包括源表的主鍵字段和一些控制信息字段(更新時間、更新類型等),當源表中的某條記錄發(fā)生變化時,同時添加或修改控制表相應的主鍵記錄。
[0008]時間戳法是需要相關應用系統(tǒng)中的每個表中都有一個時間戳字段,以記錄每個表的修改時間。
[0009]觸發(fā)器法是為復制對象創(chuàng)建相應的觸發(fā)器,當對復制對象進行修改、插入和刪除等DML(Data Manipulation Language,數(shù)據(jù)操作語言)命令時,觸發(fā)器被喚醒,將變化捕獲。
[0010]采用上述快照法不依賴任何機制,不占用額外的系統(tǒng)資源,但因為它是對數(shù)據(jù)庫的完整拷貝,因此效率很低且無法區(qū)分哪些具體項發(fā)生變化;另外,快照法只能在同種數(shù)據(jù)庫之間使用,不適用異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)同步。
[0011]由于大多數(shù)數(shù)據(jù)庫都有日志,利用日志法不僅方便而且也不會占用太多額外的系統(tǒng)資源,但是采用日志法也存在一些缺點:首先,一些數(shù)據(jù)庫系統(tǒng)不公開其日志的格式,要開發(fā)一個基于日志的變化捕獲程序非常困難;其次,不同的數(shù)據(jù)庫在具體細節(jié)上存在很大差異,會給異構(gòu)數(shù)據(jù)庫帶來新的問題;最后,日常數(shù)據(jù)庫管理工作已經(jīng)非常繁重,而日志法無疑會加重這種負擔,日志法同快照法一樣,只能在同種數(shù)據(jù)庫之間完成,不適用異構(gòu)數(shù)據(jù)庫。
[0012]API法可以實現(xiàn)日志法大多數(shù)的優(yōu)點,但對于不經(jīng)過API的操作所引起的數(shù)據(jù)變化,API無法捕獲,另外應用程序的可移植性比較差;在數(shù)據(jù)離線的方式下,通過API的數(shù)據(jù)庫操作也不能保持數(shù)據(jù)的一致性。
[0013]影子表法使用范圍比較廣,容易移植,很適合解決異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步,但是占用空間大,不能獲得中間操作信息和控制信息,并且每次捕獲變化都要掃描源表和影子表,效率低下。
[0014]控制表法可以獲得同步對象的凈變化,運行和數(shù)據(jù)傳輸?shù)男识己芨?,控制表占用存儲空間小于影子表,易于管理,并且控制表中保存的更新時間、操作者等控制信息,彌補了解決同步?jīng)_突的不足。但由于控制表法要依賴觸發(fā)器實現(xiàn),因而在應用上有一定的局限性。
[0015]時間戳法雖然不影響原有應用的運行效率,但卻需要對原有系統(tǒng)做較大的調(diào)整,因而不能捕獲到哪些不通過應用系統(tǒng)引起的操作數(shù)據(jù)變化。
[0016]觸發(fā)器法占用的系統(tǒng)資源比較多,對于復雜的復制任務需要非常復雜的配置和實施,管理非常不方便;另外,觸發(fā)器在異構(gòu)數(shù)據(jù)可之間也是無效的。
【發(fā)明內(nèi)容】
[0017]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法、裝置及異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步校驗方法、系統(tǒng),采用多種機制保持數(shù)據(jù)庫的一致性,即在線狀態(tài)下保證數(shù)據(jù)實時同步,離線數(shù)據(jù)可以在網(wǎng)絡重連之后上傳,在數(shù)據(jù)出錯后可以進行校驗,保證數(shù)據(jù)的一致。
[0018]依據(jù)本發(fā)明的一個方面,提供了一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法,包括:
[0019]在線數(shù)據(jù)同步部分和離線數(shù)據(jù)同步部分;
[0020]所述在線數(shù)據(jù)同步部分包括:
[0021]實時監(jiān)聽客戶端數(shù)據(jù)庫的數(shù)據(jù)操作;
[0022]當監(jiān)聽到客戶端數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,獲取發(fā)生變化的數(shù)據(jù)記錄;
[0023]客戶端將所述數(shù)據(jù)記錄發(fā)送給服務器端;
[0024]在服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄的情況下,服務器端根據(jù)所述數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知客戶端;
[0025]所述離線數(shù)據(jù)同步部分包括:
[0026]在客戶端數(shù)據(jù)庫中查詢與預先設置的臨時表中的ID字段和時間字段均相同的ID字段與時間字段,并獲取客戶端數(shù)據(jù)庫中所述ID字段與時間字段對應的數(shù)據(jù)記錄,將所述獲取的數(shù)據(jù)記錄發(fā)送給服務器端;
[0027]服務器端接收到所述數(shù)據(jù)記錄,查詢服務器端數(shù)據(jù)庫中是否存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄;
[0028]在服務器端數(shù)據(jù)庫中存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,服務器端根據(jù)接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知給客戶端。
[0029]依據(jù)本發(fā)明的另一方面,提供了一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步裝置,包括:
[0030]在線數(shù)據(jù)同步裝置和離線數(shù)據(jù)同步裝置;
[0031]所述在線數(shù)據(jù)同步裝置包括:
[0032]監(jiān)聽單元,設置于客戶端,用于實時監(jiān)聽客戶端數(shù)據(jù)庫的數(shù)據(jù)操作;
[0033]第一數(shù)據(jù)獲取單元,設置于客戶端,用于當監(jiān)聽到客戶端數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,獲取發(fā)生變化的數(shù)據(jù)記錄;
[0034]第一數(shù)據(jù)發(fā)送單元,設置于客戶端,用于將所述數(shù)據(jù)記錄發(fā)送給服務器端;[0035]第一數(shù)據(jù)修改單元,設置于服務器端,用于在服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄的情況下,根據(jù)所述數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知客戶端;
[0036]所述離線數(shù)據(jù)同步裝置包括:
[0037]第二數(shù)據(jù)獲取單元,設置于客戶端中,用于在客戶端數(shù)據(jù)庫中查詢與預先設置的臨時表中的ID字段和時間字段均相同的ID字段與時間字段,并獲取客戶端數(shù)據(jù)庫中所述ID字段與時間字段對應的數(shù)據(jù)記錄,,并將所述數(shù)據(jù)記錄發(fā)送給服務器端;
[0038]第一查詢單元,設置于服務器端,用于根據(jù)服務器端接收到所述數(shù)據(jù)記錄,查詢服務器端數(shù)據(jù)庫中是否存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄;
[0039]第二數(shù)據(jù)修改單元,設置于服務器端,用于在服務器端數(shù)據(jù)庫中存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,根據(jù)接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知給客戶端。
[0040]依據(jù)本發(fā)明的又一方面,提供了一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)校驗方法,包括:
[0041]預先通過異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法完成異構(gòu)數(shù)據(jù)庫的同步;
[0042]獲取客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄的ID字段與時間字段,并將所述獲取的ID字段與時間字段發(fā)送給服務器端;
[0043]服務器端接收到所述ID字段與時間字段后,查詢服務器端數(shù)據(jù)庫中是否存在ID字段與所述ID字段相同,且時間字段小于所述時間字段的數(shù)據(jù)記錄;
[0044]在服務器端數(shù)據(jù)庫中存在ID字段與所述ID字段相同,且時間字段小于所述時間字段數(shù)據(jù)記錄的情況下,將服務器端滿足條件的數(shù)據(jù)記錄的ID字段反饋給客戶端;
[0045]客戶端根據(jù)接收到的服務器端發(fā)送的ID字段,獲取客戶端數(shù)據(jù)庫中與所述ID字段相同的ID字段對應的數(shù)據(jù)記錄,并將該數(shù)據(jù)記錄發(fā)送給服務器端;
[0046]服務器端根據(jù)接收到的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)并通知客戶端數(shù)據(jù)修改成功。
[0047]依據(jù)本發(fā)明的再一方面,提供了一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)校驗系統(tǒng),預先通過異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步裝置,完成異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步,且數(shù)據(jù)校驗系統(tǒng)包括:
[0048]字段獲取單元,設置于客戶端,用于獲取客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄的ID字段與時間字段,并將所述獲取的ID字段與時間字段發(fā)送給服務器端;
[0049]第二查詢單元,設置于服務器端,用于服務器端接收到所述ID字段與時間字段后,查詢服務器端數(shù)據(jù)庫中是否存在ID字段與所述ID字段相同,且時間字段小于所述時間字段的數(shù)據(jù)記錄;
[0050]反饋單元,用于在服務器端的數(shù)據(jù)庫中存在ID字段與所述ID字段相同,且時間字段小于所述時間字段的數(shù)據(jù)記錄的情況下,將服務器端滿足條件的數(shù)據(jù)記錄的ID字段反饋給客戶端;
[0051]第三數(shù)據(jù)獲取單元,設置于客戶端中,用于根據(jù)客戶端接收到的服務器端發(fā)送的ID字段,獲取客戶端數(shù)據(jù)庫中與所述ID字段相同的ID字段對應的數(shù)據(jù)記錄,并將該數(shù)據(jù)記錄發(fā)送給服務器端;[0052]第三數(shù)據(jù)修改單元,設置于服務器端,用于根據(jù)服務器端接收到的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)并通知客戶端數(shù)據(jù)修改成功。
[0053]本發(fā)明提供的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法及裝置,包括在線數(shù)據(jù)同步部分和離線數(shù)據(jù)同步部分,其中,在線數(shù)據(jù)同步部分通過將客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄發(fā)送給服務器端,服務器端根據(jù)接收到的數(shù)據(jù)記錄來對自身數(shù)據(jù)庫中的數(shù)據(jù)進行修改;離線數(shù)據(jù)同步部分是在網(wǎng)絡重連的狀態(tài)下,在客戶端中查詢最新更新的數(shù)據(jù)記錄,并將數(shù)據(jù)記錄發(fā)送給服務器端,服務器端接收到這些數(shù)據(jù)記錄,查詢自身數(shù)據(jù)庫中是否存在與前述數(shù)據(jù)記錄中的ID字段相同的ID字段,而時間字段小于前述數(shù)據(jù)記錄中的時間字段對應的數(shù)據(jù)記錄,若存在,則進行修改。通過本發(fā)明提供的方法,采用多種機制相結(jié)合的方式,例如,在線數(shù)據(jù)同步部分采用觸發(fā)器法,離線數(shù)據(jù)同步采用時間戳法方式來實現(xiàn)在線實時數(shù)據(jù)同步和離線定時數(shù)據(jù)同步,克服了單純使用一種方法來實現(xiàn)數(shù)據(jù)同步的缺點。
[0054]本發(fā)明提供的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步校驗的方法及系統(tǒng),通過將客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄對應的ID字段與時間字段發(fā)送給服務器端,服務器端接收到ID字段與時間字段,在自身數(shù)據(jù)庫中查詢是否存在ID相同,而時間字段小于客戶端發(fā)送的時間字段的數(shù)據(jù)記錄,若存在,則將滿足條件的ID字段反饋給客戶端,客戶端將該ID字段對應的數(shù)據(jù)記錄發(fā)送給服務器端,服務器端根據(jù)接收到的數(shù)據(jù)記錄,修改自身數(shù)據(jù)庫中的數(shù)據(jù)。通過本發(fā)明提供的方法,采用控制表法與時間戳法的結(jié)合,實現(xiàn)異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步校驗,對于數(shù)據(jù)出錯部分做了進一步的補充,進一步的保證數(shù)據(jù)的同步。
【專利附圖】
【附圖說明】
[0055]圖1為本發(fā)明實施例一的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法流程圖;
[0056]圖2為本發(fā)明實施例一的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法中在線數(shù)據(jù)同步部分流程圖;
[0057]圖3為本發(fā)明實施例一的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法中離線數(shù)據(jù)同步部分流程圖;
[0058]圖4為本發(fā)明實施例中客戶端與服務器端的數(shù)據(jù)傳輸過程示意圖;
[0059]圖5為本發(fā)明實施例二的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步裝置示意圖;
[0060]圖6為本發(fā)明實施例三的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)校驗方法流程圖;
[0061]圖7為本發(fā)明實施例三的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)校驗方法整體流程圖;
[0062]以及,
[0063]圖8為本發(fā)明實施例四的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)校驗系統(tǒng)示意圖。
【具體實施方式】
[0064]以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0065]實施例一、一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法。下面結(jié)合圖1-圖4對本發(fā)明提供的方法進行詳細說明。
[0066]參見圖1與圖2,本發(fā)明所提供的數(shù)據(jù)庫的數(shù)據(jù)同步方法包括在線數(shù)據(jù)同步部分和離線數(shù)據(jù)同步部分,其中,在線狀態(tài)下數(shù)據(jù)的同步方法包括:[0067]SlOl、實時監(jiān)聽客戶端的數(shù)據(jù)庫的數(shù)據(jù)操作。
[0068]具體的,在在線狀態(tài)(即網(wǎng)絡通信正常)下,客戶端會實時地監(jiān)聽本地數(shù)據(jù)庫是否有數(shù)據(jù)庫操作信息,比如數(shù)據(jù)庫的增加、更改等操作。
[0069]S102、當監(jiān)聽到客戶端的數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,獲取發(fā)生變化的數(shù)據(jù)記錄。
[0070]具體的,當客戶端監(jiān)聽到本地數(shù)據(jù)庫中的數(shù)據(jù)由于增加、更改等操作發(fā)生變化時,客戶端會獲取本地數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄,其中,數(shù)據(jù)記錄包括數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)所在的表的表名、數(shù)據(jù)記錄的各字段的名稱以及各字段對應的具體內(nèi)容。
[0071]S103、客戶端將上述數(shù)據(jù)記錄發(fā)送給服務器端。
[0072]S104、在服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄的情況下,服務器端根據(jù)接收到的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知客戶端。
[0073]具體的,當服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄時,會根據(jù)接收到的數(shù)據(jù)記錄修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)記錄,使客戶端數(shù)據(jù)庫中的數(shù)據(jù)與服務器端數(shù)據(jù)庫中的數(shù)據(jù)保持一致。具體的一個實現(xiàn)的例子,當服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄時,首先根據(jù)預先設置的客戶端的數(shù)據(jù)庫中的表名與服務器端的數(shù)據(jù)庫中的表名的對應關系在服務器端找到與客戶端的數(shù)據(jù)庫表名對應的表;然后可以獲取客戶端發(fā)生變化的數(shù)據(jù)記錄的ID字段,并在服務器端的數(shù)據(jù)庫相應的表中查找與該ID字段相同的ID字段對應的數(shù)據(jù)記錄,根據(jù)客戶端發(fā)送的數(shù)據(jù)記錄,對服務器端數(shù)據(jù)庫中的數(shù)據(jù)進行修改更新;當服務器端的數(shù)據(jù)庫修改數(shù)據(jù)成功時,服務器端會將數(shù)據(jù)修改結(jié)果狀態(tài)設置為數(shù)據(jù)修改成功狀態(tài)(或true),當服務器端的數(shù)據(jù)庫修改數(shù)據(jù)失敗時,數(shù)據(jù)庫會將數(shù)據(jù)修改結(jié)果狀態(tài)設置為數(shù)據(jù)修改失敗狀態(tài)(或false);之后服務器端會將數(shù)據(jù)修改結(jié)果狀態(tài)通知客戶端。
[0074]S105、在臨時表中修改或插入ID字段或時間字段。
[0075]具體的,上述步驟S103客戶端將發(fā)生改變的數(shù)據(jù)記錄發(fā)送給服務器端,而服務器端未接收到客戶端發(fā)送的數(shù)據(jù)記錄或執(zhí)行步驟S104后客戶端未接收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)時,可能客戶端與服務器端的網(wǎng)絡通信異常,客戶端會在預先設置的臨時表中查詢是否存在與客戶端發(fā)生變化的數(shù)據(jù)記錄的ID字段相同的ID字段,若存在,則根據(jù)上述數(shù)據(jù)記錄中的ID字段與時間字段,修改臨時表中與上述數(shù)據(jù)記錄的ID字段相同的ID字段對應的時間字段,使臨時表中的ID字段與時間字段與上述數(shù)據(jù)記錄中的ID字段和時間字段相同;若不存在,在臨時表中插入客戶端發(fā)生變化的數(shù)據(jù)記錄的ID字段與時間字段。
[0076]同樣的,當客戶端接收到的從服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)為修改失敗狀態(tài)時,也對臨時表中的ID字段和/或時間字段進行修改更新。
[0077]需要說明的是,本實施例中的臨時表設置于客戶端中,并且臨時表中的數(shù)據(jù)包括客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)所在的表的表名、發(fā)生變化的數(shù)據(jù)的ID字段及此ID字段對應的時間字段。
[0078]參見圖1和圖3,本發(fā)明提供的數(shù)據(jù)同步方法還包括離線數(shù)據(jù)同步方法部分,包括:
[0079]S111、在客戶端數(shù)據(jù)庫中查詢與預先設置的臨時表中的ID字段和時間字段均相同的ID字段與時間字段,并獲取客戶端數(shù)據(jù)庫中所述ID字段與時間字段對應的數(shù)據(jù)記錄,將所述獲取的數(shù)據(jù)記錄發(fā)送給服務器端。[0080]具體的,在上述在線數(shù)據(jù)同步的實現(xiàn)方法中,有可能存在客戶端與服務器端之間的網(wǎng)絡通信異常,這個時候可以將客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄的ID字段與時間字段保存在臨時表中,其中,臨時表中保存有客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)所在表的表名、發(fā)生變化的數(shù)據(jù)的ID字段及時間字段。當客戶端與服務器端之間的網(wǎng)絡通信重新連接好后,客戶端會根據(jù)預定時間間隔查詢客戶端數(shù)據(jù)庫中與臨時表中的ID字段與時間字段相同的ID字段與時間字段,并獲取這些ID字段與時間字段對應的數(shù)據(jù)記錄,這些數(shù)據(jù)記錄通常是最新的數(shù)據(jù),獲取到這些最新的數(shù)據(jù)記錄后,將它們發(fā)送給服務器。具體實現(xiàn)時,可以根據(jù)臨時表中記錄的發(fā)生變化的數(shù)據(jù)所在的表名在客戶端數(shù)據(jù)庫中查找該表,然后在該表中查找與臨時表中記錄的該表的發(fā)生變化的數(shù)據(jù)的ID字段與時間字段相同的ID字段與時間字段對應的數(shù)據(jù)記錄,并將該表名以及ID字段和時間字段對應的數(shù)據(jù)記錄發(fā)送給服務器端。
[0081]S112、服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄,查詢服務器端數(shù)據(jù)庫中是否存在與該數(shù)據(jù)記錄的ID字段相同,且時間字段小于數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄。
[0082]具體的,當服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄后,查詢服務器端數(shù)據(jù)庫中是否存在與接收到的數(shù)據(jù)記錄中的ID字段相同的ID字段,但時間字段小于接收到的數(shù)據(jù)記錄中的時間字段對應的數(shù)據(jù)記錄。如果滿足這些條件,表明服務器端的這些數(shù)據(jù)不是最新的數(shù)據(jù),即需要更新。具體實現(xiàn)時,可以根據(jù)接收到的客戶端發(fā)送的表名及客戶端數(shù)據(jù)庫中的表名與服務器端數(shù)據(jù)庫中的表名的一一對應關系,在服務器端數(shù)據(jù)庫中找到與客戶端數(shù)據(jù)庫中的表名對應的表,然后根據(jù)接收到的客戶端發(fā)送的數(shù)據(jù)記錄中的ID字段與時間字段,服務器端在對應的表中查詢是否存在與接收到的數(shù)據(jù)記錄中的ID字段相同的ID字段,但時間字段小于接收到的數(shù)據(jù)記錄中的時間字段對應的數(shù)據(jù)記錄。
[0083]S113、在服務器端數(shù)據(jù)庫中存在與客戶端發(fā)送的數(shù)據(jù)記錄的ID字段相同,且時間字段小于客戶端發(fā)送的數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,服務器端根據(jù)接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知給客戶端。
[0084]具體的,若服務器端數(shù)據(jù)庫中存在滿足上述步驟S113中的條件的數(shù)據(jù)記錄,則這些數(shù)據(jù)記錄需要更新。此時可以根據(jù)服務器端接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器中數(shù)據(jù)庫中需要修改更新的數(shù)據(jù),若服務器端數(shù)據(jù)庫中的數(shù)據(jù)修改成功,服務器端會將數(shù)據(jù)修改結(jié)果狀態(tài)設置為數(shù)據(jù)修改成功狀態(tài)(或設置為True),若服務器端數(shù)據(jù)庫中的數(shù)據(jù)修改失敗,服務器端會將數(shù)據(jù)修改結(jié)果狀態(tài)設置為數(shù)據(jù)修改失敗狀態(tài)(或設置為false)。服務器端會將此數(shù)據(jù)修改結(jié)果狀態(tài)發(fā)送給客戶端。
[0085]另外,當服務器端數(shù)據(jù)庫中不存在滿足上述S113步驟中的條件的數(shù)據(jù)時,服務器會直接將數(shù)據(jù)修改結(jié)果狀態(tài)設置為數(shù)據(jù)修改成功狀態(tài),并將此數(shù)據(jù)修改成功狀態(tài)發(fā)送給客戶端。
[0086]當客戶端接收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)為數(shù)據(jù)修改成功狀態(tài)信息時,將客戶端臨時表中與服務器端修改成功的數(shù)據(jù)記錄對應的ID字段與時間字段相同的ID字段與時間字段刪除,以釋放臨時表的空間。
[0087]最后,需要說明的是,客戶端中的數(shù)據(jù)庫與服務器中的數(shù)據(jù)庫屬于異構(gòu)數(shù)據(jù)庫,客戶端與服務器端之間是通過WebService的方式進行通信的。參見圖4,在數(shù)據(jù)傳輸?shù)倪^程中,在客戶端與服務器端定義相同的數(shù)據(jù)對象,不同的開發(fā)語言,定義的字段名稱保持一致。在客戶端/服務器端發(fā)送數(shù)據(jù)前,將要發(fā)送的數(shù)據(jù)對象先進行Json格式化,轉(zhuǎn)換為Json字符串,然后再將Json字符串轉(zhuǎn)化為二進制字節(jié),進行壓縮,通過WebService將壓縮后的二進制字節(jié)發(fā)送給服務器端/客戶端,當服務器端/客戶端接收到二進制字節(jié)時,首先對二進制字節(jié)進行解壓縮,然后將解壓縮的二進制字節(jié)轉(zhuǎn)換為Json字符串,再對Json字符串反格式化,將Json字符串轉(zhuǎn)化為服務器端/客戶端上的數(shù)據(jù)對象,這樣就完成了客戶端與服務器端的數(shù)據(jù)傳輸,在整個網(wǎng)絡傳輸?shù)倪^程中都使用二進制代碼的形式,保證了數(shù)據(jù)的安全性。
[0088]實施例二、一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步裝置。下面結(jié)合圖5對本發(fā)明提供的裝置進行詳細說明。
[0089]圖5中,本發(fā)明提供的數(shù)據(jù)同步裝置包括在線數(shù)據(jù)同步部分和離線數(shù)據(jù)同步部分。其中,在線數(shù)據(jù)同步部分包括監(jiān)聽單元501、第一數(shù)據(jù)獲取單元502、第一數(shù)據(jù)發(fā)送單元503、第一數(shù)據(jù)修改單元504和臨時表維護單元505。
[0090]監(jiān)聽單元501主要用于實時監(jiān)聽客戶端的數(shù)據(jù)庫的數(shù)據(jù)操作。
[0091]第一數(shù)據(jù)獲取單元502主要用于當監(jiān)聽單元501監(jiān)聽到客戶端的數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,獲取發(fā)生變化的數(shù)據(jù)記錄。
[0092]第一數(shù)據(jù)發(fā)送單元503主要用于客戶端將第一數(shù)據(jù)獲取單元502獲取的數(shù)據(jù)記錄發(fā)送給服務器端。
[0093]第一數(shù)據(jù)修改單元504主要用于在服務器端接收到客戶端中的第一數(shù)據(jù)發(fā)送單元503發(fā)送的數(shù)據(jù)記錄的情況下,根據(jù)服務器端該接收到的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知客戶端。
[0094]臨時表維護單元504設置于客戶端中,主要用于當服務器端未接收到第一數(shù)據(jù)發(fā)送單元503發(fā)送的數(shù)據(jù)記錄時或當客戶端未收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)時或當客戶端接收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)為失敗狀態(tài)時,查詢在客戶端預先設置的臨時表中是否存在與第一數(shù)據(jù)獲取單元502獲取的數(shù)據(jù)記錄的ID字段相同的ID字段;若存在,則根據(jù)第一數(shù)據(jù)獲取單元502獲取的該ID字段對應的時間字段,修改臨時表中該ID字段對應的時間字段;若不存在,則在臨時表中插入第一數(shù)據(jù)獲取單元502獲取的數(shù)據(jù)記錄對應的ID字段和時間字段。
[0095]離線數(shù)據(jù)同步部分包括第二數(shù)據(jù)獲取單元511、第一查詢單元512、第二數(shù)據(jù)修改單元513。
[0096]第一數(shù)據(jù)獲取單元511設置于客戶端,主要用于查詢客戶端數(shù)據(jù)庫中與上述臨時表維護單元505維護的臨時表中的ID字段與時間字段相同的ID字段與時間字段,并獲取客戶端數(shù)據(jù)庫中該ID字段與時間字段對應的數(shù)據(jù)記錄,并將該數(shù)據(jù)記錄發(fā)送給服務器端。
[0097]第一查詢單元512設置于服務器端,主要用于根據(jù)服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄,查詢服務器端數(shù)據(jù)庫中是否存在與該數(shù)據(jù)記錄的ID字段相同,且時間字段小于該數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄。
[0098]第二數(shù)據(jù)修改單元513主要用于在服務器端數(shù)據(jù)庫中存在與客戶端發(fā)送的數(shù)據(jù)記錄的ID字段相同,且時間字段小于該數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,根據(jù)接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知給客戶端。
[0099]需要說明的是,當?shù)谝徊樵儐卧?12在服務器端數(shù)據(jù)庫中未查詢到與客戶端發(fā)送的數(shù)據(jù)記錄的ID字段相同,且時間字段小于該數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,服務器端直接將數(shù)據(jù)修改結(jié)果狀態(tài)設置為數(shù)據(jù)修改成功狀態(tài)并通知客戶端數(shù)據(jù)修改結(jié)果。
[0100]當客戶端接收到的服務器發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)為數(shù)據(jù)修改成功狀態(tài)時,將臨時表中與第二數(shù)據(jù)修改單元513修改成功的數(shù)據(jù)記錄的ID字段與時間字段相同的ID字段與時間字段刪除,以釋放臨時表的空間。
[0101]本發(fā)明提供的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法及裝置,包括在線實時數(shù)據(jù)同步部分和離線定時數(shù)據(jù)同步部分。其中,在線數(shù)據(jù)同步部分通過監(jiān)聽客戶端數(shù)據(jù)庫中的數(shù)據(jù)操作,獲取數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄,并將這些數(shù)據(jù)記錄發(fā)送給服務器端,服務器端根據(jù)客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知客戶端。離線數(shù)據(jù)同步部分獲取客戶端數(shù)據(jù)庫中與預先設置的臨時表中的ID字段和時間字段相同的ID字段和時間字段對應的數(shù)據(jù)記錄,并將這些數(shù)據(jù)記錄發(fā)送給服務器端,服務器端接收到這些數(shù)據(jù)記錄,在服務器端數(shù)據(jù)庫中查詢是否存在與前述ID字段相同的ID字段,但該ID字段對應的時間字段小于上述時間字段的數(shù)據(jù)記錄,若存在,則根據(jù)客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)。通過本發(fā)明提供的數(shù)據(jù)同步方法,采用將多種機制相結(jié)合的方式,實現(xiàn)了在在線狀態(tài)下保證數(shù)據(jù)實時同步,在離線狀態(tài)時,將客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄保存起來,當網(wǎng)絡重新連接之后,保證數(shù)據(jù)同步,即實現(xiàn)了在在線和離線狀態(tài)下均能保證數(shù)據(jù)同步,同時采用多種機制,比如在線數(shù)據(jù)同步部分采用觸發(fā)器法,離線數(shù)據(jù)同步部分采用時間戳法,克服了單純使用一種方法的缺點,同時較現(xiàn)有技術(shù)的方法也具有很大的靈活性。
[0102]實施例三、一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步校驗方法。下面結(jié)合圖6和圖7對本發(fā)明提供的數(shù)據(jù)同步校驗方法進行詳細說明。
[0103]參見圖6和圖7,其中,圖6中,S601、預先通過異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法完成異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步。
[0104]具體的,通過實施例一的方法實現(xiàn)異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步,此時,有可能服務器端數(shù)據(jù)庫中的數(shù)據(jù)未修改成功或修改出錯等情況,此時可以采用本實施例的方法對客戶端數(shù)據(jù)庫中的數(shù)據(jù)與服務器端數(shù)據(jù)庫中的數(shù)據(jù)進行數(shù)據(jù)同步校驗。
[0105]S602、獲取客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄的ID字段與時間字段,并將獲取的這些ID字段與時間字段發(fā)送給服務器端。
[0106]具體的,為了減少收集的數(shù)據(jù)量,節(jié)約系統(tǒng)的資源,提高操作效率,本步驟采取只提取客戶端數(shù)據(jù)庫中的主要字段數(shù)據(jù),例如ID字段和時間字段,當然,還需要獲取該ID字段與時間字段所在的表的表名。在數(shù)據(jù)校驗的過程中,根據(jù)預定時間間隔定時地去校驗,可以使客戶端數(shù)據(jù)庫中的數(shù)據(jù)與服務器端數(shù)據(jù)庫中的數(shù)據(jù)隨時保持一致性。當提取到客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄所在的表的表名、數(shù)據(jù)記錄的ID字段和時間字段之后,將這些數(shù)據(jù)發(fā)送給服務器端。
[0107]S603、服務器端接收到客戶端發(fā)送的ID字段與時間字段后,查詢服務器端數(shù)據(jù)庫中是否存在ID字段與前述ID字段相同,且時間字段小于前述時間字段的數(shù)據(jù)記錄。
[0108]具體的,當服務器端接收到客戶端發(fā)送的表名、ID字段和時間字段,根據(jù)客戶端數(shù)據(jù)庫中的表名與服務器端數(shù)據(jù)庫中的表名的一一對應關系,在自身數(shù)據(jù)庫中查找與上述表名對應的表,然后根據(jù)上述ID字段和時間字段,查找在服務器端的對應的表中查詢是否存在ID字段與前述ID字段相同,且時間字段小于前述時間字段的數(shù)據(jù)記錄。
[0109]S604、在服務器端數(shù)據(jù)庫中存在滿足步驟S603中條件的數(shù)據(jù)記錄的情況下,將服務器端的數(shù)據(jù)庫中滿足條件的這些數(shù)據(jù)記錄的ID字段反饋給客戶端。
[0110]具體的,數(shù)據(jù)庫中的ID字段唯一標識一條數(shù)據(jù)記錄,當服務器端數(shù)據(jù)庫中的某條數(shù)據(jù)記錄的ID字段與客戶端發(fā)送的ID字段相同,而這條數(shù)據(jù)記錄的時間字段小于客戶端發(fā)送的時間字段,則表明這條數(shù)據(jù)記錄并非最新記錄,需要更新。此時,服務器端會將需要更新的數(shù)據(jù)記錄的ID字段反饋給客戶端。
[0111]S605、客戶端根據(jù)接收到的服務器端發(fā)送的ID字段,獲取客戶端數(shù)據(jù)庫中與該ID字段相同的ID字段對應的數(shù)據(jù)記錄,并將該數(shù)據(jù)記錄發(fā)送給服務器端。
[0112]S607、服務器端根據(jù)接收到的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)并通知客戶端數(shù)據(jù)修改成功。
[0113]具體的,當服務器端數(shù)據(jù)庫中存在需要更新的數(shù)據(jù)記錄時,將這些需要更新的數(shù)據(jù)記錄對應的ID字段反饋給客戶端,客戶端根據(jù)服務器反饋的ID字段,獲取客戶端數(shù)據(jù)庫中與該ID字段相同的ID字段對應的數(shù)據(jù)記錄,然后將這些數(shù)據(jù)記錄發(fā)送給服務器端,月艮務器端根據(jù)這些數(shù)據(jù)來更新自身數(shù)據(jù)庫中的數(shù)據(jù),使服務器端數(shù)據(jù)庫中的數(shù)據(jù)保持最新狀態(tài),并與客戶端數(shù)據(jù)庫中的數(shù)據(jù)保持一致,最后通知客戶端數(shù)據(jù)修改成功。至此,數(shù)據(jù)同步校驗完成。
[0114]實施例四、一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步校驗系統(tǒng)。下面結(jié)合圖8對本發(fā)明提供的數(shù)據(jù)同步校驗系統(tǒng)進行詳細的說明。
[0115]圖8中,本發(fā)明提供的數(shù)據(jù)同步校驗系統(tǒng)包括異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步裝置801、字段獲取單元802、第二查詢單元803、反饋單元804、第三數(shù)據(jù)獲取單元805和第三數(shù)據(jù)修改單元806。
[0116]異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步裝置801用于實現(xiàn)異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步,具體的實現(xiàn)數(shù)據(jù)同步的過程可以參見實施例二,在此不再重復說明。
[0117]字段獲取單元802用于獲取客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄的ID字段與時間字段,并將獲取的ID字段與時間字段發(fā)送給服務器端。
[0118]第二查詢單元803設置于服務器端,用于在服務器端接收到客戶端發(fā)送的ID字段與時間字段后,查詢服務器端數(shù)據(jù)庫中是否存在ID字段與服務器端接收的ID字段相同,且時間字段小于服務器端接收到的時間字段的數(shù)據(jù)記錄。
[0119]反饋單元804用于在第二查詢單元803查詢到存在滿足上述條件的數(shù)據(jù)記錄的情況下,將滿足條件的數(shù)據(jù)記錄的ID字段反饋給客戶端。
[0120]第三數(shù)據(jù)獲取單元805設置于客戶端中,用于根據(jù)客戶端接收到的反饋單元804發(fā)送的ID字段,獲取客戶端數(shù)據(jù)庫中與該ID字段相同的ID字段對應的數(shù)據(jù)記錄,并將這些數(shù)據(jù)記錄發(fā)送給服務器端。
[0121]第三數(shù)據(jù)修改單元806,設置于服務器端,用于根據(jù)服務器端接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)并通知客戶端數(shù)據(jù)修改成功。
[0122]需要說明的是,在數(shù)據(jù)同步校驗的過程中,客戶端與服務器端之間的數(shù)據(jù)通信是通過WebService方式實現(xiàn)的,具體的技術(shù)特征可以參見實施例一部分,在此不再重復說明。
[0123]本發(fā)明提供的一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步校驗方法及系統(tǒng),通過提取客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄的ID字段和時間字段,并將提取的ID字段與時間字段發(fā)送給服務器端服務器端查詢自身數(shù)據(jù)庫中是否存在與接收到的ID字段相同的ID字段、而時間字段小于接收到的時間字段的數(shù)據(jù)記錄,若存在,將滿足條件的數(shù)據(jù)記錄的ID字段反饋給客戶端,客戶端在自身數(shù)據(jù)庫中獲取該ID字段對應的數(shù)據(jù)記錄并發(fā)送給服務器端,服務器端接收到這些數(shù)據(jù)記錄,根據(jù)這些數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)。本發(fā)明結(jié)合控制表法和時間戳法相結(jié)合的方式實現(xiàn)了數(shù)據(jù)同步校驗,對于通過上述數(shù)據(jù)同步方法過程中出現(xiàn)的數(shù)據(jù)不完全一致或數(shù)據(jù)修改失敗導致的客戶端與服務器端的數(shù)據(jù)不完全一致的情況,本方法進行了補充,確??蛻舳酥械臄?shù)據(jù)與服務器端的數(shù)據(jù)保持一致。
[0124]另外,在上述整個過程中,客戶端與服務器端之間是通過WebService來實現(xiàn)數(shù)據(jù)傳輸?shù)?,在網(wǎng)絡的傳輸過程中都采用二進制代碼的形式來實現(xiàn),保證了數(shù)據(jù)的安全性。
[0125]在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0126]在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0127]類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0128]本領域那些技術(shù)人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0129]此外,本領域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0130]本發(fā)明實施例中客戶端可以以Andriod實現(xiàn),服務器端可以以PC實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術(shù)人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置以及數(shù)據(jù)處理系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(如計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0131]應該注意的是,上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設計出替換實施例。在權(quán)利要求中,不應將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的Andriod以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個Andriod項來具體體現(xiàn)。單詞第一、第二以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
【權(quán)利要求】
1.一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法,其特征在于,包括: 在線數(shù)據(jù)同步部分和離線數(shù)據(jù)同步部分; 所述在線數(shù)據(jù)同步部分包括: 步驟S101、實時監(jiān)聽客戶端數(shù)據(jù)庫的數(shù)據(jù)操作; 步驟S102、當監(jiān)聽到客戶端數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,獲取發(fā)生變化的數(shù)據(jù)記錄; 步驟S103、客戶端將所述數(shù)據(jù)記錄發(fā)送給服務器端; 步驟S104、在服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄的情況下,服務器端根據(jù)所述數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知客戶端; 所述離線數(shù)據(jù)同步部分包括: 步驟S111、在客戶端數(shù)據(jù)庫中查詢與預先設置的臨時表中的ID字段和時間字段均相同的ID字段與時間字段,并獲取客戶端數(shù)據(jù)庫中所述ID字段與時間字段對應的數(shù)據(jù)記錄,將所述獲取的數(shù)據(jù)記錄發(fā)送給服務器端; 步驟S112、服務器端 接收到所述數(shù)據(jù)記錄,查詢服務器端數(shù)據(jù)庫中是否存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄; 步驟S113、在服務器端數(shù)據(jù)庫中存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,服務器端根據(jù)接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知給客戶端。
2.如權(quán)利要求1所述的數(shù)據(jù)同步方法,其特征在于,所述在線數(shù)據(jù)同步部分還包括: 當服務器端未接收到客戶端發(fā)送的數(shù)據(jù)記錄時或當客戶端未收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)時或當客戶端接收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)為失敗狀態(tài)時,查詢在客戶端預先設置的臨時表中是否存在與客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄的ID字段相同的ID字段;若存在,則根據(jù)所述客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄的時間字段,修改臨時表中的時間字段;若不存在,則在臨時表中插入所述客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄對應的ID字段和時間字段。
3.如權(quán)利要求1所述的數(shù)據(jù)同步方法,其特征在于,離線數(shù)據(jù)同步部分還包括: 在服務器端數(shù)據(jù)庫中不存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,服務器端直接將數(shù)據(jù)修改結(jié)果狀態(tài)設置為數(shù)據(jù)修改成功狀態(tài)并通知客戶端數(shù)據(jù)修改結(jié)果。
4.如權(quán)利要求1或3所述的數(shù)據(jù)同步方法,其特征在于,還包括: 當客戶端接收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)為數(shù)據(jù)修改成功狀態(tài)時,將臨時表中與服務器端數(shù)據(jù)庫中修改成功的數(shù)據(jù)記錄對應的ID字段和時間字段刪除。
5.一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步裝置,其特征在于,包括: 在線數(shù)據(jù)同步裝置和離線數(shù)據(jù)同步裝置; 所述在線數(shù)據(jù)同步裝置包括: 監(jiān)聽單元,設置于客戶端,用于實時監(jiān)聽客戶端數(shù)據(jù)庫的數(shù)據(jù)操作; 第一數(shù)據(jù)獲取單元,設置于客戶端,用于當監(jiān)聽到客戶端數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,獲取發(fā)生變化的數(shù)據(jù)記錄; 第一數(shù)據(jù)發(fā)送單元,設置于客戶端,用于將所述數(shù)據(jù)記錄發(fā)送給服務器端; 第一數(shù)據(jù)修改單元,設置于服務器端,用于在服務器端接收到客戶端發(fā)送的數(shù)據(jù)記錄的情況下,根據(jù)所述數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知客戶端; 所述離線數(shù)據(jù)同步裝置包括: 第二數(shù)據(jù)獲取單元,設置于客戶端中,用于在客戶端數(shù)據(jù)庫中查詢與預先設置的臨時表中的ID字段和時間字段均相同的ID字段與時間字段,并獲取客戶端數(shù)據(jù)庫中所述ID字段與時間字段對應的數(shù)據(jù)記錄,并將所述數(shù)據(jù)記錄發(fā)送給服務器端; 第一查詢單元,設置于服務器端,用于根據(jù)服務器端接收到所述數(shù)據(jù)記錄,查詢服務器端數(shù)據(jù)庫中是否存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄; 第二數(shù)據(jù)修改單元,設置于服務器端,用于在服務器端數(shù)據(jù)庫中存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,根據(jù)接收到的客戶端發(fā)送的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù),并將數(shù)據(jù)修改結(jié)果狀態(tài)通知給客戶端。
6.如權(quán)利要求5所述的數(shù)據(jù)同步裝置,其特征在于,所述在線數(shù)據(jù)同步裝置還包括: 臨時表維護單元,設置于客戶端,用于當服務器端未接收到客戶端發(fā)送的數(shù)據(jù)記錄時或當客戶端未收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)時或當客戶端接收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)為失敗狀態(tài)時,查詢在客戶端預先設置的臨時表中是否存在與客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄的ID字段相同的ID字段;若存在,則根據(jù)所述客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄的時間字段,修改臨時表中的時間字段;若不存在,則在臨時表中插入所述客戶端數(shù)據(jù)庫中發(fā)生變化的數(shù)據(jù)記錄對應的ID字段和時間字段。
7.如權(quán)利要求5所述的數(shù)據(jù)同步裝置,其特征在于,所述離線數(shù)據(jù)同步裝置還包括: 狀態(tài)設置裝置,設置于服務器端,用于在服務器端數(shù)據(jù)庫中不存在與所述數(shù)據(jù)記錄的ID字段相同,且時間字段小于所述數(shù)據(jù)記錄的時間字段的數(shù)據(jù)記錄的情況下,在服務器端直接將數(shù)據(jù)修改結(jié)果狀態(tài)設置為數(shù)據(jù)修改成功狀態(tài)并通知客戶端數(shù)據(jù)修改結(jié)果。
8.如權(quán)利要求5或7所述的數(shù)據(jù)同步裝置,其特征在于,還包括: 刪除單元,用于當客戶端接收到服務器端發(fā)送的數(shù)據(jù)修改結(jié)果狀態(tài)為數(shù)據(jù)修改成功狀態(tài)時,將臨時表中與服務器端數(shù)據(jù)庫中修改成功的數(shù)據(jù)記錄對應的ID字段和時間字段刪除。
9.一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)校驗方法,其特征在于,包括: 步驟S601、預先通過權(quán)利要求1-4任一項所述的異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步方法,完成異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步; 步驟S602、獲取客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄的ID字段與時間字段,并將所述獲取的ID字段與時間字段發(fā)送給服務器端; 步驟S603、服務器端接收到所述ID字段與時間字段后,查詢服務器端數(shù)據(jù)庫中是否存在ID字段與所述ID字段相同,且時間字段小于所述時間字段的數(shù)據(jù)記錄; 步驟S604、在服務器端數(shù)據(jù)庫中存在ID字段與所述ID字段相同,且時間字段小于所述時間字段數(shù)據(jù)記錄的情況下,將服務器端滿足條件的數(shù)據(jù)記錄的ID字段反饋給客戶端;步驟S605、根據(jù)客戶端接收到的服務器端發(fā)送的ID字段,獲取客戶端數(shù)據(jù)庫中與所述ID字段相同的ID字段對應的數(shù)據(jù)記錄,并將該數(shù)據(jù)記錄發(fā)送給服務器端;步驟S606、服務器端根據(jù)接收到的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)并通知客戶端數(shù)據(jù)修改成功。
10.一種異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)校驗系統(tǒng),其特征在于,預先通過權(quán)利要求5-8任一項所述的異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步裝置,完成異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)同步,且所述數(shù)據(jù)校驗系統(tǒng)包括: 字段獲取單元,設置于客戶端,用于獲取客戶端數(shù)據(jù)庫中數(shù)據(jù)記錄的ID字段與時間字段,并將所述獲取的ID字段與時間字段發(fā)送給服務器端; 第二查詢單元,設置于服務器端,用于服務器端接收到所述ID字段與時間字段后,查詢服務器端數(shù)據(jù)庫中是否存在ID字段與所述ID字段相同,且時間字段小于所述時間字段的數(shù)據(jù)記錄; 反饋單元,用于在服務器端的數(shù)據(jù)庫中存在ID字段與所述ID字段相同,且時間字段小于所述時間字段的數(shù)據(jù)記錄的情況下,將服務器端滿足條件的數(shù)據(jù)記錄的ID字段反饋給客戶端; 第三數(shù)據(jù)獲取單元,設置于客戶端中,用于根據(jù)客戶端接收到的服務器端發(fā)送的ID字段,獲取客戶端數(shù)據(jù)庫中與所述ID字段相同的ID字段對應的數(shù)據(jù)記錄,并將該數(shù)據(jù)記錄發(fā)送給服務器端; 第三數(shù)據(jù)修改單元,設置于服務器端,用于根據(jù)服務器端接收到的數(shù)據(jù)記錄,修改服務器端數(shù)據(jù)庫中的數(shù)據(jù)并通知客戶端數(shù)據(jù)修改成功。
【文檔編號】G06F17/30GK103984715SQ201410192546
【公開日】2014年8月13日 申請日期:2014年5月8日 優(yōu)先權(quán)日:2014年5月8日
【發(fā)明者】胡三波 申請人:武漢庫百網(wǎng)絡技術(shù)有限公司