一種移動(dòng)設(shè)備信息傳輸方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)通信,特別涉及一種在信息系統(tǒng)中的移動(dòng)設(shè)備同步方法。
【背景技術(shù)】
[0002]醫(yī)院信息系統(tǒng)為醫(yī)護(hù)人員提供一個(gè)能夠獲取醫(yī)療信息的綜合醫(yī)療信息平臺(tái),可更加有效地輔助醫(yī)療工作的開(kāi)展。隨著移動(dòng)設(shè)備的應(yīng)用,新形勢(shì)下的移動(dòng)醫(yī)療為醫(yī)療行業(yè)的智能化、自動(dòng)化工作的開(kāi)展提供了可能,也是對(duì)現(xiàn)行固定醫(yī)療的一種完善與補(bǔ)充。然而,移動(dòng)醫(yī)療涉及到了移動(dòng)設(shè)備與主服務(wù)器端的數(shù)據(jù)同步。因此,如何解決服務(wù)器端存儲(chǔ)的數(shù)據(jù)與移動(dòng)設(shè)備的數(shù)據(jù)副本的數(shù)據(jù)一致性就成為目前系統(tǒng)無(wú)縫擴(kuò)展亟待解決的問(wèn)題。目前主流的數(shù)據(jù)同步解決方案中,數(shù)據(jù)同步的掃描與分發(fā)工作由服務(wù)器端處理,無(wú)法充分利用硬件性能優(yōu)越的移動(dòng)設(shè)備,由此增加了服務(wù)器的壓力,并且智能終端與服務(wù)器端的耦合程度復(fù)雜,增強(qiáng)數(shù)據(jù)同步的不靈活。
[0003]因此,針對(duì)相關(guān)技術(shù)中所存在的上述問(wèn)題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]為解決上述現(xiàn)有技術(shù)所存在的問(wèn)題,本發(fā)明提出了一種移動(dòng)設(shè)備信息傳輸方法,用于在移動(dòng)設(shè)備與服務(wù)器之間實(shí)現(xiàn)數(shù)據(jù)同步,包括:
[0005]移動(dòng)設(shè)備從服務(wù)器端下載數(shù)據(jù)的散列文件,對(duì)本地?cái)?shù)據(jù)進(jìn)行散列運(yùn)算并將運(yùn)算結(jié)果與所述散列文件進(jìn)行比對(duì),若存在數(shù)據(jù)變化,則發(fā)起數(shù)據(jù)同步過(guò)程。
[0006]優(yōu)選地,所述散列運(yùn)算包括根據(jù)數(shù)據(jù)文件及消息計(jì)算相應(yīng)的散列文件及散列消息,所述散列文件由文件頭與文件內(nèi)容兩部分組成,其中文件內(nèi)容由不同的散列消息組成,文件頭由四個(gè)組成部分,分別是文件名映射數(shù)組、散列文件的大小、文件內(nèi)容的起始偏移量、文件內(nèi)容的當(dāng)前偏移量;散列消息是對(duì)本地?cái)?shù)據(jù)庫(kù)中捕獲的變化數(shù)據(jù)的封裝,它由消息頭和消息內(nèi)容兩部分組成,消息頭是同步文件的文件名對(duì)應(yīng)的散列映射,消息內(nèi)容是同步文件的文件內(nèi)容對(duì)應(yīng)的散列映射,消息頭由5個(gè)部分組成,分別是文件名映射、下一個(gè)消息的起始偏移量、消息狀態(tài)標(biāo)記字段、消息內(nèi)容標(biāo)記字段、消息內(nèi)容偏移量,所述消息內(nèi)容由3個(gè)部分組成,分別是總長(zhǎng)度、文件全路徑以及文件內(nèi)容的散列映射。
[0007]優(yōu)選地,在所述移動(dòng)設(shè)備捕獲數(shù)據(jù)變化之前,該方法還包括:
[0008]移動(dòng)設(shè)備先從服務(wù)器端下載相應(yīng)的散列文件,散列文件的初始化由服務(wù)器端完成,在移動(dòng)設(shè)備完成信息比對(duì)的過(guò)程,比對(duì)的依據(jù)是終端的散列文件的Status_Flag字段,代表移動(dòng)設(shè)備與服務(wù)器端文件的狀態(tài)值。
[0009]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
[0010]本發(fā)明以散列數(shù)據(jù)計(jì)算為核心,具有高度的可行性和高效性,數(shù)據(jù)同步過(guò)程中在移動(dòng)設(shè)備用戶的參與下,有效地解決移動(dòng)設(shè)備與服務(wù)器端的數(shù)據(jù)不一致問(wèn)題。
【附圖說(shuō)明】
[0011]圖1是根據(jù)本發(fā)明實(shí)施例的移動(dòng)設(shè)備信息傳輸方法的流程圖。
【具體實(shí)施方式】
[0012]下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無(wú)這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
[0013]本發(fā)明提出一種新的數(shù)據(jù)同步方法,由移動(dòng)設(shè)備發(fā)起數(shù)據(jù)同步過(guò)程。圖1是根據(jù)本發(fā)明實(shí)施例的移動(dòng)設(shè)備信息傳輸方法流程圖。如圖1所示,實(shí)施本發(fā)明的具體步驟如下:
[0014]本發(fā)明的數(shù)據(jù)同步結(jié)構(gòu)由兩部分組成,分別是移動(dòng)設(shè)備和服務(wù)器FSC。
[0015](I)移動(dòng)設(shè)備MU。它由通信模塊與數(shù)據(jù)同步應(yīng)用模塊兩部分組成,移動(dòng)設(shè)備的通信模塊負(fù)責(zé)散列指紋信息的封裝與解析、格式轉(zhuǎn)換、數(shù)據(jù)傳遞等。移動(dòng)設(shè)備的數(shù)據(jù)同步應(yīng)用模塊負(fù)責(zé)同步數(shù)據(jù)的捕獲、信息比對(duì)、變化數(shù)據(jù)的存儲(chǔ)與讀取等。
[0016](2)服務(wù)器FSC。它由數(shù)據(jù)同步應(yīng)用模塊與通信模塊兩部分組成,服務(wù)器的通信模塊負(fù)責(zé)散列指紋信息的封裝與解析、格式轉(zhuǎn)換、數(shù)據(jù)傳遞等。服務(wù)器的數(shù)據(jù)同步應(yīng)用模塊負(fù)責(zé)同步數(shù)據(jù)的捕獲、變化數(shù)據(jù)的存儲(chǔ)與讀取等,與移動(dòng)設(shè)備的主要區(qū)別是不提供變化數(shù)據(jù)的比對(duì)。
[0017]基于散列的數(shù)據(jù)同步方法:
[0018]本發(fā)明采用了散列方法作為數(shù)據(jù)同步方法,該模型的優(yōu)勢(shì)在于將數(shù)據(jù)同步的工作交由移動(dòng)設(shè)備負(fù)責(zé),所以設(shè)計(jì)上首先要解決的問(wèn)題是移動(dòng)設(shè)備如何借助散列方法捕獲數(shù)據(jù)變化,其次是解決如何同步的問(wèn)題。在解決這兩個(gè)問(wèn)題之前我們需要定義散列文件及散列消息的格式。
[0019]散列文件由文件頭與文件內(nèi)容兩部分組成,其中文件內(nèi)容由不同的散列消息組成。散列文件頭由四個(gè)組成部分,分別是文件名映射數(shù)組、散列文件的大小、文件內(nèi)容的起始偏移量、文件內(nèi)容的當(dāng)前偏移量。散列消息是對(duì)本地?cái)?shù)據(jù)庫(kù)中捕獲的變化數(shù)據(jù)的封裝。它由消息頭和消息內(nèi)容兩部分組成。消息頭是同步文件的文件名對(duì)應(yīng)的散列映射,消息內(nèi)容是同步文件的文件內(nèi)容對(duì)應(yīng)的散列映射。消息頭由5個(gè)部分組成,分別是文件名映射、下一個(gè)消息的起始偏移量、消息狀態(tài)標(biāo)記字段、消息內(nèi)容標(biāo)記字段、消息內(nèi)容偏移量。消息內(nèi)容由3個(gè)部分組成,分別是總長(zhǎng)度、文件全路徑以及文件內(nèi)容的散列映射。
[0020]每個(gè)文件的文件名映射為不同的散列值,不同的散列值存儲(chǔ)在相應(yīng)的映射數(shù)組中,同一散列值文件以鏈表形式組織起來(lái)。
[0021]第η個(gè)文件的文件名信息塊包含兩個(gè)指針,一個(gè)是指向下一文件的文件名信息塊指針,另一個(gè)指針指向自身文件內(nèi)容信息塊。散列映射文件中第一個(gè)文件的起始指針,方便快速查找信息塊鏈表的起始位置,散列映射文件中最后一個(gè)文件的結(jié)束指針是在插入下一個(gè)文件信息塊時(shí)快速定位。不同文件通過(guò)散列映射數(shù)組快速找到鏈表的
[0022]入口地址,同一入口地址下的文件以鏈表形式組織起來(lái)。
[0023]散列同步方法具體的過(guò)程描述如下:
[0024]步驟1:設(shè)某個(gè)發(fā)生變化的文件File,其文件名為File_Name,文件內(nèi)容為File_Content,生成該文件對(duì)應(yīng)的消息Mf ;
[0025]步驟2:構(gòu)造散列映射數(shù)組Mapping_Array,其大小為N,選擇散列函數(shù):
[0026]散列(key)= key MOD P,其中 P 彡 N ;
[0027]步驟3:選取合適的P值,由經(jīng)驗(yàn)得知,一般情況下可以選擇P為質(zhì)數(shù)或者不包含20的質(zhì)因數(shù)的合數(shù);
[0028]步驟4:對(duì)文件名與文件內(nèi)容取模運(yùn)算,設(shè)文件名的模值為FNK,文件內(nèi)容的模值為 FCK0
[0029]FNK = File_Name Mod P ;
[0030]FCK = File_ContentMod P ;
[0031]步驟5:查找映射數(shù)組 Mapping_Array。即 Mapping_Array [FNK] =FNK
[0032]步驟6:判斷Mapping_Array[FNK]的數(shù)組鏈表長(zhǎng)度,若為無(wú)后繼節(jié)點(diǎn),添加消息節(jié)點(diǎn),并將散列文件大小加I操作;
[0033]第一個(gè)文件的起始指針和最后一個(gè)文件的結(jié)束指針均指向該文件對(duì)應(yīng)的消息Mf。
[0034]步驟7:若Mapping_Array[FNK]后繼節(jié)點(diǎn)非空,添加消息節(jié)點(diǎn),并將散列文件大小加I操作;最后一個(gè)文件的結(jié)束指針指向該文件對(duì)應(yīng)的消息Mf的后繼節(jié)點(diǎn)。
[0035]由上,移動(dòng)設(shè)備與服務(wù)器端的數(shù)據(jù)同步過(guò)程分為變化數(shù)據(jù)捕獲、數(shù)據(jù)比對(duì)和數(shù)據(jù)存儲(chǔ)三個(gè)過(guò)程,同步處理的主要思想是:(I)不管移動(dòng)設(shè)備是否需要重新初始化,都要先從服務(wù)器端下載相應(yīng)的散列文件,也稱捕獲日志文件。這是服務(wù)器端數(shù)據(jù)信息穩(wěn)定同步的前提。(2)散列文件的初始化由服務(wù)器端完成,移動(dòng)設(shè)備與服務(wù)器端的同步對(duì)象為“散列文件”和“變化的本地文件”兩類。(3)信息比對(duì)的過(guò)程發(fā)生在移動(dòng)設(shè)備,比對(duì)的依據(jù)是終端的散列文件Status_Flag字段。不同的Status_Flag值代表移動(dòng)設(shè)備與服務(wù)器端文件的狀態(tài)。其中,在Status_Flag取0_6的狀態(tài)下,文件狀態(tài)分別為
[0036]Status_Flag為O:移動(dòng)設(shè)備無(wú)此文件、服務(wù)器端新增此文件
[0037]Status_Flag為1:移動(dòng)設(shè)備已刪除此文件,服務(wù)器端有此文件
[0038]Status_Flag為2:移動(dòng)設(shè)備有此文件、服務(wù)器端已刪除此文件
[0039]Status_Flag為3:移動(dòng)設(shè)備文件新增此文件,服務(wù)器端無(wú)此文件
[0040]Status_Flag為4:移動(dòng)設(shè)備有此文件并已修改,服務(wù)器端有此文件但未修改
[0041]Status_Flag為5:移動(dòng)設(shè)備有此文件但未修改,服務(wù)器端有此文件并已修改
[0042]Status_Flag為6:移動(dòng)設(shè)備