數(shù)據(jù)更新方法及裝置和產(chǎn)品的制作方法
【專利摘要】本發(fā)明實施例提供一種數(shù)據(jù)更新方法及裝置和產(chǎn)品,該方法包括:根據(jù)節(jié)點更新消息確定待更新節(jié)點的根節(jié)點,通過根節(jié)點的當(dāng)前版本信息確定待更新節(jié)點,更新待更新節(jié)點,更新根節(jié)點的歷史版本信息,將根節(jié)點的歷史版本信息更新為當(dāng)前版本信息,對待更新節(jié)點的更新不會引起對其它樹的更新,更新效率高。
【專利說明】數(shù)據(jù)更新方法及裝置和產(chǎn)品
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及數(shù)據(jù)處理技術(shù),尤其涉及一種數(shù)據(jù)更新方法及裝置和產(chǎn)品。
【背景技術(shù)】
[0002]在文件系統(tǒng)、類文件系統(tǒng)或數(shù)據(jù)庫系統(tǒng)中,通常會采用b_樹(b-tree)、b+樹 (b+tree)或b*樹(b*tree)類的數(shù)據(jù)結(jié)構(gòu)來存儲系統(tǒng)的目錄或索引信息,以便于對系統(tǒng)的 目錄或索引進行更新、查詢、插入或者刪除等操作。
[0003]圖1為文件系統(tǒng)的數(shù)據(jù)存儲結(jié)構(gòu)示意圖,如圖1所示,超級塊(super block)包含 一 b-樹,該b-樹例如用于存儲某文件系統(tǒng)的目錄,該b-樹包含一根節(jié)點(Root)用于存儲 該文件系統(tǒng)的根目錄,根節(jié)點下面包含三個節(jié)點Z、Zl和Z2分別用于存儲該文件系統(tǒng)的根 目錄下的三個一級子目錄,節(jié)點Z包含一樹A,該樹A包含三個節(jié)點Y、Y1和Y2,分別用于存 儲該文件系統(tǒng)的一級子目錄下的二級子目錄,節(jié)點Y包含一樹C,該樹C包含三個節(jié)點x、n 和X2,分別用于存儲該二級子目錄下的三級子目錄,根節(jié)點、節(jié)點Z、樹A、節(jié)點Y、樹C和節(jié) 點X2實際上均為b-樹的節(jié)點,依次為上下級關(guān)系。
[0004]現(xiàn)有技術(shù)中采用寫時復(fù)制技術(shù)進行數(shù)據(jù)的寫入。例如,當(dāng)需要對節(jié)點X中存儲的 三級子目錄進行更新時,并非直接覆蓋節(jié)點X中的數(shù)據(jù),而是由計算機中對存儲空間進行 管理的塊管理模塊,首先向硬盤申請一塊跟X節(jié)點大小相同的存儲空間形成節(jié)點V,將修 改后的數(shù)據(jù)寫入節(jié)點X'。為保證對寫入節(jié)點X'中的數(shù)據(jù)進行查詢、刪除等操作,進一步 需要修改該節(jié)點X的上級節(jié)點C,即將上級節(jié)點C中指向節(jié)點X的指針修改為指向節(jié)點X'。 但是,對于上級節(jié)點C的更新也采用寫時復(fù)制技術(shù),即并非直接覆蓋根節(jié)點的數(shù)據(jù),而是先 創(chuàng)建一個節(jié)點C',將修改后的新數(shù)據(jù)寫入節(jié)點C'。類似的,當(dāng)節(jié)點C發(fā)生變化以后相應(yīng)的 繼續(xù)修改節(jié)點C的上級節(jié)點Y,即將上級節(jié)點Y中指向節(jié)點C的指針修改為指向節(jié)點C', 則根據(jù)寫時復(fù)制技術(shù),將修改后的新數(shù)據(jù)寫入新創(chuàng)建的節(jié)點V,以此類推直至修改到根節(jié) 點。
[0005]可見,基于現(xiàn)有的數(shù)據(jù)存儲結(jié)構(gòu),更新下級節(jié)點時會導(dǎo)致需要更新該下級節(jié)點的 上級節(jié)點,以及該上級節(jié)點的上級節(jié)點直至最高級根節(jié)點,因此,對該結(jié)構(gòu)中存儲的數(shù)據(jù)進 行修改、查詢、插入或者刪除等更新操作時的效率很低。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實施例提供一種數(shù)據(jù)更新方法及裝置和產(chǎn)品,以解決對數(shù)據(jù)進行更新操作 時效率低的問題。
[0007]第一方面,本發(fā)明實施例提供一種數(shù)據(jù)更新方法,包括:
[0008]接收節(jié)點更新消息,所述更新消息中包含待更新節(jié)點的關(guān)鍵字標識、根節(jié)點名稱 標識及更新操作指令,根據(jù)所述根節(jié)點名稱標識確定所述待更新節(jié)點的根節(jié)點;
[0009]確定所述根節(jié)點的當(dāng)前版本信息,并通過所述當(dāng)前版本信息確定所述待更新節(jié)占.[0010]根據(jù)所述更新操作,更新所述待更新節(jié)點;
[0011]更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含所 述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定所述更新后 的待更新節(jié)點;
[0012]將所述根節(jié)點的歷史版本信息更新為當(dāng)前版本信息。
[0013]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,根據(jù)所述更新消息,更新 所述待更新節(jié)點包括:
[0014]創(chuàng)建第一復(fù)制節(jié)點,根據(jù)所述更新操作將所述待更新節(jié)點的更新后的數(shù)據(jù)內(nèi)容更 新至所述第一復(fù)制節(jié)點。
[0015]結(jié)合第一方面,在第一方面的第二種可能的實現(xiàn)方式中,所述更新所述待更新節(jié) 點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含所述根節(jié)點的所有下一級節(jié) 點的新的地址信息,根據(jù)所述新的地址信息可以確定所述更新后的待更新節(jié)點之前,還包 括:
[0016]當(dāng)所述待更新節(jié)點的上一級節(jié)點不是根節(jié)點時,創(chuàng)建第二復(fù)制節(jié)點,所述第二復(fù) 制節(jié)點作為所述待更新節(jié)點的上一級節(jié)點的復(fù)制節(jié)點,將所述待更新節(jié)點的更新后的地址 信息更新至所述第二復(fù)制節(jié)點。
[0017]結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式或第一方面的第二種可能的 實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,確定所述根節(jié)點的當(dāng)前版本信息,包 括:
[0018]根據(jù)所述根節(jié)點的當(dāng)前版本信息的校驗和,校驗所述當(dāng)前版本信息的內(nèi)容是否完 整,若是,則根據(jù)所述更新操作,更新所述待更新節(jié)點,若否,則將更新時間最近的版本號所 對應(yīng)的歷史版本信息作為所述當(dāng)前版本信息。
[0019]第二方面,本發(fā)明實施例提供一種數(shù)據(jù)更新裝置,包括:
[0020]接收單元,用于接收節(jié)點更新消息,所述更新消息中包含待更新節(jié)點的關(guān)鍵字標 識、根節(jié)點名稱標識及更新操作指令,根據(jù)所述根節(jié)點名稱標識確定所述待更新節(jié)點的根 節(jié)點;
[0021]確定單元,用于確定所述根節(jié)點的當(dāng)前版本信息,并通過所述當(dāng)前版本信息確定 所述待更新節(jié)點;
[0022]第一子節(jié)點更新單元,用于根據(jù)所述更新操作,更新所述待更新節(jié)點;
[0023]根節(jié)點更新單元,用于更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的 歷史版本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信 息可以確定所述更新后的待更新節(jié)點;將所述根節(jié)點的歷史版本信息更新為當(dāng)前版本信
肩、O
[0024]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,
[0025]第一子節(jié)點更新單元,具體用于創(chuàng)建第一復(fù)制節(jié)點,根據(jù)所述更新操作將所述待 更新節(jié)點的更新后的數(shù)據(jù)內(nèi)容更新至所述第一復(fù)制節(jié)點。
[0026]結(jié)合第二方面,在第二方面的第二種可能的實現(xiàn)方式中,還包括:
[0027]第二子節(jié)點更新模塊,用于當(dāng)所述待更新節(jié)點的上一級節(jié)點不是根節(jié)點時,在所 述根節(jié)點更新單元更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定所 述更新后的待更新節(jié)點之前,創(chuàng)建第二復(fù)制節(jié)點,所述第二復(fù)制節(jié)點作為所述待更新節(jié)點 的上一級節(jié)點的復(fù)制節(jié)點,將所述待更新節(jié)點的更新后的地址信息更新至所述第二復(fù)制節(jié) 點。
[0028]結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式或第二方面的第二種可能的 實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,
[0029]確定單元,具體用于根據(jù)所述根節(jié)點的當(dāng)前版本信息的校驗和,校驗所述當(dāng)前版 本信息的內(nèi)容是否完整,若是,則根據(jù)所述更新操作,更新所述待更新節(jié)點,若否,則將更新 時間最近的版本號所對應(yīng)的歷史版本信息作為所述當(dāng)前版本信息。
[0030]第三方面,本發(fā)明實施例提供一種數(shù)據(jù)更新裝置,包括:
[0031]處理器和存儲器,所述存儲器存儲執(zhí)行指令,當(dāng)所述數(shù)據(jù)更新裝置運行時,所述處 理器與所述存儲器之間通信,所述處理器執(zhí)行所述執(zhí)行命令使得所述數(shù)據(jù)更新裝置執(zhí)行如 第一方面、第一方面的第一種可能的實現(xiàn)方式至第一方面的第三種可能的實現(xiàn)方式中任一 可能的數(shù)據(jù)更新方法。
[0032]第四方面,本發(fā)明實施例提供一種執(zhí)行數(shù)據(jù)處理的計算機程序產(chǎn)品,包括存儲了 程序代碼的計算機可讀存儲介質(zhì),所述程序代碼包括的指令用于執(zhí)行如第一方面、第一方 面的第一種可能的實現(xiàn)方式至第一方面的第三種可能的實現(xiàn)方式中任一可能的數(shù)據(jù)更新 方法。
[0033]本發(fā)明實施例提供的數(shù)據(jù)更新方法及裝置,通過接收節(jié)點更新消息,根據(jù)節(jié)點更 新消息中包含的根節(jié)點名稱標識確定待更新節(jié)點的根節(jié)點;確定根節(jié)點的當(dāng)前版本信息, 并通過當(dāng)前版本信息確定待更新節(jié)點;根據(jù)更新操作,更新待更新節(jié)點;更新待更新節(jié)點 的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含根節(jié)點的所有下一級節(jié)點的新的 地址信息,根據(jù)新的地址信息可以確定更新后的待更新節(jié)點;將根節(jié)點的歷史版本信息更 新為當(dāng)前版本信息,由于對待更新節(jié)點進行更新操作,相關(guān)聯(lián)地,只會引起對待更新節(jié)點所 在樹的更新,不會引起對其它樹的更新,更新效率高。
【專利附圖】
【附圖說明】
[0034]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根 據(jù)這些附圖獲得其他附圖。
[0035]圖1為文件系統(tǒng)的數(shù)據(jù)存儲結(jié)構(gòu)示意圖;
[0036]圖2為本發(fā)明數(shù)據(jù)更新方法實施例一的流程圖;
[0037]圖3為本發(fā)明實施例二的數(shù)據(jù)存儲結(jié)構(gòu)示意圖;
[0038]圖4為本發(fā)明數(shù)據(jù)更新裝置實施例一的結(jié)構(gòu)示意圖;
[0039]圖5為本發(fā)明數(shù)據(jù)更新裝置實施例二的結(jié)構(gòu)示意圖。
【具體實施方式】
[0040]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,雖然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0041]本實施例的數(shù)據(jù)更新方法可以采用數(shù)據(jù)更新裝置來實現(xiàn),該數(shù)據(jù)更新裝置可以通 過硬件或軟件的方式實現(xiàn),數(shù)據(jù)更新裝置可以集成在計算機中實現(xiàn)數(shù)據(jù)更新方法。
[0042]圖2為本發(fā)明數(shù)據(jù)更新方法實施例一的流程圖,如圖2所示,本實施例的數(shù)據(jù)更新 方法包括:
[0043]201、接收節(jié)點更新消息,所述更新消息中包含待更新節(jié)點的關(guān)鍵字標識、根節(jié)點 名稱標識及更新操作指令,根據(jù)所述根節(jié)點名稱標識確定所述待更新節(jié)點的根節(jié)點。
[0044]具體地,數(shù)據(jù)更新裝置接收節(jié)點更新消息,該更新消息中包含待更新節(jié)點的更新 操作指令,該更新操作指令具體地例如:可以為修改數(shù)據(jù)內(nèi)容、刪除數(shù)據(jù)內(nèi)容、增加新的數(shù) 據(jù)內(nèi)容;該更新消息中還包含根節(jié)點名稱標識,該根節(jié)點名稱標識可以為待更新節(jié)點所屬 的樹的名稱,該待更新節(jié)點為名稱為根節(jié)點名稱標識的樹的子節(jié)點;該更新消息中還包含 待更新節(jié)點的關(guān)鍵字標識,該關(guān)鍵字標識用于標識需要執(zhí)行更新操作指令中指定的更新操 作的數(shù)據(jù)內(nèi)容所對應(yīng)的關(guān)鍵字,數(shù)據(jù)更新裝置根據(jù)根節(jié)點名稱標識可以確定待更新節(jié)點的 根節(jié)點的位置。
[0045]202、確定所述根節(jié)點的當(dāng)前版本信息,并通過所述當(dāng)前版本信息確定所述待更新 節(jié)點。
[0046]具體地,可以將根節(jié)點的存儲空間進行劃分,例如對根節(jié)點的內(nèi)存空間進行2等 份,則根節(jié)點具有2個版本信息,該兩個版本信息可以通過版本號進行區(qū)分,以區(qū)分該2個 版本信息是當(dāng)前版本信息或歷史版本信息,在上述201中根據(jù)根節(jié)點名稱標識確定待更新 節(jié)點的根節(jié)點的位置之后,通過根節(jié)點的版本信息的版本號確定該根節(jié)點的當(dāng)前版本信 息,并根據(jù)該根節(jié)點的當(dāng)前版本信息中包含的地址信息確定該待更新節(jié)點。
[0047]203、根據(jù)所述更新消息,更新所述待更新節(jié)點。
[0048]具體地,根據(jù)更新消息中包含的關(guān)鍵字標識和更新操作指令,對上述202中確定 的待更新節(jié)點中通過寫時復(fù)用的方式對與該關(guān)鍵字標識所對應(yīng)的數(shù)據(jù)內(nèi)容執(zhí)行更新操作 指令所指示的更新操作,例如修改數(shù)據(jù)內(nèi)容。
[0049]204、更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包 含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定所述更 新后的待更新節(jié)點。
[0050]具體地,將待更新節(jié)點更新后的新的地址信息更新至該待更新節(jié)點的根節(jié)點的歷 史版本信息中,使得根節(jié)點的更新后的歷史版本信息為最新的版本信息即當(dāng)前版本信息, 該當(dāng)前版本信息中包含該根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)該當(dāng)前版本信息 中的地址信息可以確定更新后的待更新節(jié)點。
[0051]當(dāng)根節(jié)點具有三個及以上的版本信息時,在最近的一個歷史版本信息中進行更 新。確定最近的一個歷史版本信息的方式可以通過各個版本信息的版本號確定,例如:根 節(jié)點的存儲空間劃分為三等份,每一份版本信息占用根節(jié)點總的存儲空間的1/3的存儲空 間,3份版本信息的版本號分別為0、1、2,第一次更新該根節(jié)點的版本信息時,更新后的信 息存儲在將該根節(jié)點的版本號為0的歷史版本信息中,將版本號由0變?yōu)?,下一次更新時,將更新后的信息存儲在將該根節(jié)點的版本號為I的歷史版本信息中,將版本號由I變?yōu)?, 以此類推。
[0052]數(shù)據(jù)更新裝置可以根據(jù)節(jié)點更新消息通過根節(jié)點確定待更新節(jié)點時,數(shù)據(jù)更新裝 置可以首先讀取該上級節(jié)點的所有版本信息的數(shù)據(jù)頭,比較數(shù)據(jù)頭中記錄的版本號,將版 本號的值最大的版本號所對應(yīng)的版本信息作為當(dāng)前版本信息,將該當(dāng)前版本信息中的數(shù)據(jù) 內(nèi)容作為該上級節(jié)點的最新內(nèi)容;或者,若每次更新版本號時,在原版本號的基礎(chǔ)上累加的 值為負數(shù)時,即更新后的版本號依次變小時,則取版本號的值最小的版本號所對應(yīng)的版本 信息作為當(dāng)前版本信息,將該當(dāng)前版本信息中的數(shù)據(jù)內(nèi)容作為該上級節(jié)點的最新內(nèi)容;又 或者,還可以根據(jù)各個版本信息的更新時間,以版本號更新時間最接近當(dāng)前時間的版本號 所對應(yīng)的版本信息作為當(dāng)前版本信息。
[0053]通過在根節(jié)點中設(shè)置多個版本信息,可以避免當(dāng)數(shù)據(jù)更新裝置在數(shù)據(jù)更新過程中 發(fā)生斷電時導(dǎo)致當(dāng)前版本信息的數(shù)據(jù)內(nèi)容不完整,從而造成數(shù)據(jù)更新裝置依據(jù)該當(dāng)前版本 信息無法正常訪問該上級節(jié)點的內(nèi)容的問題,在根節(jié)點中存儲多個版本信息以后,即使數(shù) 據(jù)更新裝置在數(shù)據(jù)更新過程中發(fā)生斷電,數(shù)據(jù)更新裝置在下一次啟動時還可以通過該上級 節(jié)點的歷史版本信息訪問該上級節(jié)點的內(nèi)容。此外,還可以根據(jù)需要查詢當(dāng)前版本信息之 前,該待更新節(jié)點的內(nèi)容,例如執(zhí)行撤銷操作時,還能夠訪問該待更新節(jié)點中的數(shù)據(jù)內(nèi)容。
[0054]205、將所述根節(jié)點的歷史版本信息更新為當(dāng)前版本信息。
[0055]具體地,若以版本號標識版本信息,則更新根節(jié)點的歷史版本信息中的版本號,使 更新后的版本號標識該根節(jié)點的版本信息為最新的當(dāng)前版本信息。
[0056]本實施例中,通過接收節(jié)點更新消息,根據(jù)根節(jié)點名稱標識確定待更新節(jié)點的根 節(jié)點,確定根節(jié)點的當(dāng)前版本信息,并通過當(dāng)前版本信息確定待更新節(jié)點,根據(jù)更新操作更 新待更新節(jié)點,更新待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含 根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)新的地址信息可以確定更新后的待更新節(jié) 點,由于對待更新節(jié)點進行更新操作,相關(guān)聯(lián)地,只會引起對待更新節(jié)點所在的樹的更新, 不會引起對其它樹的更新,更新效率高。
[0057]在上述實施例的基礎(chǔ)上,進一步地,根據(jù)更新消息,更新所述待更新節(jié)點包括:創(chuàng) 建第一復(fù)制節(jié)點,根據(jù)所述更新操作將所述待更新節(jié)點的更新后的數(shù)據(jù)內(nèi)容更新至所述第 一復(fù)制節(jié)點。
[0058]具體地,根據(jù)更新消息在確定的待更新節(jié)點中對與關(guān)鍵字標識所對應(yīng)的數(shù)據(jù)內(nèi)容 執(zhí)行更新操作指令所指示的更新操作時,創(chuàng)建一新的節(jié)點,該節(jié)點為待更新節(jié)點的復(fù)制節(jié) 點,在該復(fù)制節(jié)點中將與關(guān)鍵字標識對應(yīng)的數(shù)據(jù)內(nèi)容按照更新操作指令的執(zhí)行進行更新。
[0059]在上述實施例的基礎(chǔ)上,進一步地,所述更新所述待更新節(jié)點的根節(jié)點的歷史版 本信息,更新后的歷史版本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根 據(jù)所述新的地址信息可以確定所述更新后的待更新節(jié)點之前,還包括:
[0060]當(dāng)所述待更新節(jié)點的上一級節(jié)點不是根節(jié)點時,創(chuàng)建第二復(fù)制節(jié)點,所述第二復(fù) 制節(jié)點作為所述待更新節(jié)點的上一級節(jié)點的復(fù)制節(jié)點,將所述待更新節(jié)點的更新后的地址 信息更新至所述第二復(fù)制節(jié)點;
[0061]具體地,圖3為本發(fā)明實施例二的數(shù)據(jù)存儲結(jié)構(gòu)示意圖,如圖3所示,待更新節(jié)點 為X,節(jié)點X的上級節(jié)點為M,節(jié)點M不是C樹的根節(jié)點,此時,待更新節(jié)點X更新后的數(shù)據(jù)內(nèi)容存儲在節(jié)點X'中,為了通過上級節(jié)點M可以確定節(jié)點X',創(chuàng)建一第二復(fù)制節(jié)點M',該 第二復(fù)制節(jié)點M'為節(jié)點M的復(fù)制節(jié)點,將節(jié)點X'的的地址信息更新至第二復(fù)制節(jié)點M' 中。
[0062]在上述實施例的基礎(chǔ)上,進一步地,確定所述根節(jié)點的當(dāng)前版本信息包括:根據(jù)所 述根節(jié)點的當(dāng)前版本信息的校驗和,校驗所述當(dāng)前版本信息的內(nèi)容是否完整,若是,則根據(jù) 所述更新操作,更新所述待更新節(jié)點,若否,則將更新時間最近的版本號所對應(yīng)的歷史版本 信息作為所述當(dāng)前版本信息。
[0063]具體地,確定根節(jié)點的當(dāng)前版本信息時可以根據(jù)校驗和檢驗當(dāng)前版本信息的內(nèi)容 是否完整,在其它實施例中也可以采用其它檢驗數(shù)據(jù)完整性的算法對當(dāng)前版本信息的內(nèi)容 是否完整進行檢驗,以避免誤將發(fā)生損壞的數(shù)據(jù)作為最新版本信息進行相關(guān)操作,若經(jīng)校 驗當(dāng)前版本信息的內(nèi)容完整,則根據(jù)該當(dāng)前版本信息中的信息確定待更新節(jié)點;若經(jīng)校驗 當(dāng)前版本信息的內(nèi)容不完整,則與當(dāng)前版本信息最接近的歷史版本信息進行檢驗,確定與 當(dāng)前版本信息最接近的歷史版本信息可以通過版本號判斷,例如:根節(jié)點的版本信息的版 本號分別為4、5、6,版本號為6的版本信息為當(dāng)前版本信息,則版本號為5的版本信息為與 當(dāng)前版本信息最接近的歷史版本信息,對最接近的歷史版本信息進行檢驗判斷接近的歷史 版本信息的完整性,最終獲取完整的歷史版本信息,并將該完整的歷史版本信息作為當(dāng)前 版本信息,依據(jù)該當(dāng)前版本信息進行節(jié)點更新操作。
[0064]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序 在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者 光盤等各種可以存儲程序代碼的介質(zhì)。
[0065]圖4為本發(fā)明數(shù)據(jù)更新裝置實施例一的結(jié)構(gòu)示意圖,如圖4所示,本實施例的數(shù)據(jù) 更新裝置400包括:接收單元401、確定單元402、第一子節(jié)點更新單元403和根節(jié)點更新單 元404,其中:
[0066]接收單元401用于接收節(jié)點更新消息,所述更新消息中包含待更新節(jié)點的關(guān)鍵字 標識、根節(jié)點名稱標識及更新操作指令,根據(jù)所述根節(jié)點名稱標識確定所述待更新節(jié)點的 根節(jié)點;
[0067]確定單元402用于確定所述根節(jié)點的當(dāng)前版本信息,并通過所述當(dāng)前版本信息確 定所述待更新節(jié)點;
[0068]第一子節(jié)點更新單元403用于根據(jù)所述更新操作,更新所述待更新節(jié)點;
[0069]根節(jié)點更新單元404用于更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后 的歷史版本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址 信息可以確定所述更新后的待更新節(jié)點;將所述根節(jié)點的歷史版本信息更新為當(dāng)前版本信
肩、O
[0070]本實施例的數(shù)據(jù)更新裝置可以用于執(zhí)行數(shù)據(jù)更新方法實施例一的數(shù)據(jù)更新方法, 具體執(zhí)行方式和有益效果與數(shù)據(jù)更新方法實施例一類似,請參考數(shù)據(jù)更新方法實施例一, 此處不再贅述。
[0071]進一步地,第一子節(jié)點更新單元403,具體用于創(chuàng)建第一復(fù)制節(jié)點,根據(jù)所述更新 操作將所述待更新節(jié)點的更新后的數(shù)據(jù)內(nèi)容更新至所述第一復(fù)制節(jié)點。[0072]進一步地,數(shù)據(jù)更新裝置400還可以包括:第二子節(jié)點更新模塊。
[0073]第二子節(jié)點更新模塊可以用于當(dāng)所述待更新節(jié)點的上一級節(jié)點不是根節(jié)點時,在 所述根節(jié)點更新單元更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信 息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定 所述更新后的待更新節(jié)點之前,創(chuàng)建第二復(fù)制節(jié)點,所述第二復(fù)制節(jié)點作為所述待更新節(jié) 點的上一級節(jié)點的復(fù)制節(jié)點,將所述待更新節(jié)點的更新后的地址信息更新至所述第二復(fù)制 節(jié)點。
[0074]進一步地,確定單元402具體可以用于根據(jù)所述根節(jié)點的當(dāng)前版本信息的校驗 和,校驗所述當(dāng)前版本信息的內(nèi)容是否完整,若是,則根據(jù)所述更新操作,更新所述待更新 節(jié)點,若否,則將更新時間最近的版本號所對應(yīng)的歷史版本信息作為所述當(dāng)前版本信息。
[0075]圖5為本發(fā)明數(shù)據(jù)更新裝置實施例二的結(jié)構(gòu)示意圖。如圖5所示,本實施例的 數(shù)據(jù)更新裝置500包括至少一個CPU 501,至少一個接口 502或者其他用戶接口 503,存 儲器504。存儲器504可能包含高速RAM存儲器,也可能還包括非易失性存儲器(英文為 non-volatile memory,以下簡稱NVM),例如至少一個磁盤存儲器。存儲器504可選的可以 包含至少一個存儲裝置,存儲各種代碼等,用于實現(xiàn)各種基礎(chǔ)業(yè)務(wù)以及處理基于硬件的任 務(wù)。
[0076]其中,CPU 501根據(jù)存儲器504存儲的代碼的指示執(zhí)行如下動作:
[0077]接收節(jié)點更新消息,所述更新消息中包含待更新節(jié)點的關(guān)鍵字標識、根節(jié)點名稱 標識及更新操作指令,根據(jù)所述根節(jié)點名稱標識確定所述待更新節(jié)點的根節(jié)點;
[0078]確定所述根節(jié)點的當(dāng)前版本信息,并通過所述當(dāng)前版本信息確定所述待更新節(jié)
占.[0079]根據(jù)所述更新操作,更新所述待更新節(jié)點;
[0080]更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含所 述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定所述更新后 的待更新節(jié)點;
[0081 ] 將所述根節(jié)點的歷史版本信息更新為當(dāng)前版本信息。
[0082]進一步地,根據(jù)所述更新消息,更新所述待更新節(jié)點包括:
[0083]創(chuàng)建第一復(fù)制節(jié)點,根據(jù)所述更新操作將所述待更新節(jié)點的更新后的數(shù)據(jù)內(nèi)容更 新至所述第一復(fù)制節(jié)點。
[0084]進一步地,所述更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版 本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以 確定所述更新后的待更新節(jié)點之前,還包括:
[0085]當(dāng)所述待更新節(jié)點的上一級節(jié)點不是根節(jié)點時,創(chuàng)建第二復(fù)制節(jié)點,所述第二復(fù) 制節(jié)點作為所述待更新節(jié)點的上一級節(jié)點的復(fù)制節(jié)點,將所述待更新節(jié)點的更新后的地址 信息更新至所述第二復(fù)制節(jié)點。
[0086]進一步地,確定所述根節(jié)點的當(dāng)前版本信息,包括:
[0087]根據(jù)所述根節(jié)點的當(dāng)前版本信息的校驗和,校驗所述當(dāng)前版本信息的內(nèi)容是否完 整,若是,則根據(jù)所述更新操作,更新所述待更新節(jié)點,若否,則將更新時間最近的版本號所 對應(yīng)的歷史版本信息作為所述當(dāng)前版本信息。[0088]本實施例的數(shù)據(jù)更新裝置可以用于執(zhí)行數(shù)據(jù)更新方法實施例一所述的數(shù)據(jù)更新 方法,具體執(zhí)行方式和有益效果與數(shù)據(jù)更新方法實施例一類似,請參考數(shù)據(jù)更新方法實施 例一,此處不再贅述。
[0089]本發(fā)明實施例還提供一種執(zhí)行數(shù)據(jù)處理的計算機程序產(chǎn)品,包括存儲了程序代碼 的計算機可讀存儲介質(zhì),所述程序代碼包括的指令用于使數(shù)據(jù)集更新裝置執(zhí)行方法。
[0090]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制; 盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其 依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征 進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技 術(shù)方案的范圍。
【權(quán)利要求】
1.一種數(shù)據(jù)更新方法,其特征在于,包括:接收節(jié)點更新消息,所述更新消息中包含待更新節(jié)點的關(guān)鍵字標識、根節(jié)點名稱標識及更新操作指令,根據(jù)所述根節(jié)點名稱標識確定所述待更新節(jié)點的根節(jié)點;確定所述根節(jié)點的當(dāng)前版本信息,并通過所述當(dāng)前版本信息確定所述待更新節(jié)點;根據(jù)所述更新操作,更新所述待更新節(jié)點;更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定所述更新后的待更新節(jié)點;將所述根節(jié)點的歷史版本信息更新為當(dāng)前版本信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述更新消息,更新所述待更新節(jié)點包括:創(chuàng)建第一復(fù)制節(jié)點,根據(jù)所述更新操作將所述待更新節(jié)點的更新后的數(shù)據(jù)內(nèi)容更新至所述第一復(fù)制節(jié)點。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定所述更新后的待更新節(jié)點之前,還包括:當(dāng)所述待更新節(jié)點的上一級節(jié)點不是根節(jié)點時,創(chuàng)建第二復(fù)制節(jié)點,所述第二復(fù)制節(jié)點作為所述待更新節(jié)點的上一級節(jié)點的復(fù)制節(jié)點,將所述待更新節(jié)點的更新后的地址信息更新至所述第二復(fù)制節(jié)點。
4.根據(jù)權(quán)利要求1或2或3所述的方法,其特征在于,確定所述根節(jié)點的當(dāng)前版本信息,包括:根據(jù)所述根節(jié)點的當(dāng)前版本信息的校驗和,校驗所述當(dāng)前版本信息的內(nèi)容是否完整, 若是,則根據(jù)所述更新操作,更新所述待更新節(jié)點,若否,則將更新時間最近的版本號所對應(yīng)的歷史版本信息作為所述當(dāng)前版本信息。
5.一種數(shù)據(jù)更新裝置,.其特征在于,包括:接收單元,用于接收節(jié)點更新消息,所述更新消息中包含待更新節(jié)點的關(guān)鍵字標識、根節(jié)點名稱標識及更新操作指令,根據(jù)所述根節(jié)點名稱標識確定所述待更新節(jié)點的根節(jié)點;確定單元,用于確定所述根節(jié)點的當(dāng)前版本信息,并通過所述當(dāng)前版本信息確定所述待更新節(jié)點;第一子節(jié)點更新單元,用于根據(jù)所述更新操作,更新所述待更新節(jié)點;根節(jié)點更新單元,用于更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定所述更新后的待更新節(jié)點;將所述根節(jié)點的歷史版本信息更新為當(dāng)前版本信息。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,第一子節(jié)點更新單元,具體用于創(chuàng)建第一復(fù)制節(jié)點,根據(jù)所述更新操作將所述待更新節(jié)點的更新后的數(shù)據(jù)內(nèi)容更新至所述第一復(fù)制節(jié)點。
7.根據(jù)權(quán)利要求5所述的裝置,其特征在于,還包括:第二子節(jié)點更新模塊,用于當(dāng)所述待更新節(jié)點的上一級節(jié)點不是根節(jié)點時,在所述根節(jié)點更新單元更新所述待更新節(jié)點的根節(jié)點的歷史版本信息,更新后的歷史版本信息中包含所述根節(jié)點的所有下一級節(jié)點的新的地址信息,根據(jù)所述新的地址信息可以確定所述更新后的待更新節(jié)點之前,創(chuàng)建第二復(fù)制節(jié)點,所述第二復(fù)制節(jié)點作為所述待更新節(jié)點的上一級節(jié)點的復(fù)制節(jié)點,將所述待更新節(jié)點的更新后的地址信息更新至所述第二復(fù)制節(jié)點。
8.根據(jù)權(quán)利要求5或6或7所述的裝置,其特征在于,確定單元,具體用于根據(jù)所述根節(jié)點的當(dāng)前版本信息的校驗和,校驗所述當(dāng)前版本信息的內(nèi)容是否完整,若是,則根據(jù)所述更新操作,更新所述待更新節(jié)點,若否,則將更新時間最近的版本號所對應(yīng)的歷史版本信息作為所述當(dāng)前版本信息。
9.一種數(shù)據(jù)更新裝置,其特征在于,包括:處理器和存儲器,所述存儲器存儲執(zhí)行指令,當(dāng)所述數(shù)據(jù)更新裝置運行時,所述處理器與所述存儲器之間通信,所述處理器執(zhí) 行所述執(zhí)行命令使得所述數(shù)據(jù)更新裝置執(zhí)行如權(quán)利要求1至4任一項所述的方法。
10.一種執(zhí)行數(shù)據(jù)處理的計算機程序產(chǎn)品,包括存儲了程序代碼的計算機可讀存儲介質(zhì),所述程序代碼包括的指令用于執(zhí)行如權(quán)利要求1-4任一所述的方法。
【文檔編號】G06F17/30GK103430178SQ201380000064
【公開日】2013年12月4日 申請日期:2013年1月30日 優(yōu)先權(quán)日:2013年1月30日
【發(fā)明者】曾華榮, 彭幼武 申請人:華為技術(shù)有限公司