本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)恢復(fù)的方法和裝置。
背景技術(shù):
隨著終端技術(shù)的快速發(fā)展,各種類型的終端不斷涌現(xiàn),如臺(tái)式機(jī)、筆記本電腦、手機(jī)、平板電腦等,這些終端已經(jīng)成為人們?nèi)粘9ぷ骱蜕畹闹匾ぞ?,被人們使用的頻率越來越高。用戶在使用終端的過程中,會(huì)在終端中產(chǎn)生各種各樣的數(shù)據(jù),比如照片、視頻文件、聯(lián)系人等數(shù)據(jù)。隨著時(shí)間的積累,終端中存儲(chǔ)的數(shù)據(jù)越來越多,而終端的存儲(chǔ)容量是有限的,所以,很多用戶通過云服務(wù)將終端中的數(shù)據(jù)進(jìn)行備份。為了防止數(shù)據(jù)丟失,目前大多數(shù)云服務(wù)已具備數(shù)據(jù)自動(dòng)備份的功能,云服務(wù)會(huì)定期將系統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)備份到備份數(shù)據(jù)庫中,一旦系統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)丟失,可利用備份數(shù)據(jù)庫中的備份數(shù)據(jù)對系統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行恢復(fù)。但是,如果將備份數(shù)據(jù)庫中的全部備份數(shù)據(jù)都恢復(fù)到系統(tǒng)數(shù)據(jù)庫中,恢復(fù)時(shí)間較長、效率較差。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種數(shù)據(jù)恢復(fù)的方法和裝置,將系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)快速準(zhǔn)確的恢復(fù)到某一備份節(jié)點(diǎn)時(shí)的數(shù)據(jù)。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種數(shù)據(jù)恢復(fù)的裝置,包括:
獲取模塊,用于從云服務(wù)的會(huì)話緩存中獲取對比結(jié)果,所述對比結(jié)果包括:終端信息、數(shù)據(jù)類型信息、第一版本號(hào)信息以及差異數(shù)據(jù);
判斷模塊,用于判斷所述云服務(wù)的系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)是否與所述第一版本號(hào)相同;
恢復(fù)模塊,用于在所述最新版本號(hào)與所述第一版本號(hào)相同的情況下,根據(jù)所述差異數(shù)據(jù),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù)操作。
進(jìn)一步的,所述系統(tǒng)數(shù)據(jù)庫用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)。
進(jìn)一步的,所述差異數(shù)據(jù)為所述終端的所述數(shù)據(jù)類型的第二版本號(hào)的數(shù)據(jù)相對于所述終端的所述數(shù)據(jù)類型的第一版本號(hào)的數(shù)據(jù)的新增數(shù)據(jù)、刪除數(shù)據(jù)和修改數(shù)據(jù)。
進(jìn)一步的,所述第二版本號(hào)的數(shù)據(jù)存儲(chǔ)在所述云服務(wù)的備份數(shù)據(jù)庫中;
所述備份數(shù)據(jù)庫用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的各個(gè)版本號(hào)的數(shù)據(jù)。
進(jìn)一步的,所述判斷模塊,還用于:
當(dāng)接收到所述對比結(jié)果時(shí),判斷所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)是否已加鎖,若是,則結(jié)束數(shù)據(jù)恢復(fù)操作;若否,則對所述最新版本號(hào)的數(shù)據(jù)進(jìn)行加鎖操作;
所述裝置,還包括:
解鎖模塊,用于當(dāng)所述數(shù)據(jù)恢復(fù)操作結(jié)束時(shí),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的恢復(fù)后的數(shù)據(jù)進(jìn)行解鎖操作。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種數(shù)據(jù)恢復(fù)的方法,包括:
從云服務(wù)的會(huì)話緩存中獲取對比結(jié)果,所述對比結(jié)果包括:終端信息、數(shù)據(jù)類型信息、第一版本號(hào)信息以及差異數(shù)據(jù);
判斷所述云服務(wù)的系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)是否與所述第一版本號(hào)相同;
在所述最新版本號(hào)與所述第一版本號(hào)相同的情況下,根據(jù)所述差異數(shù)據(jù),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù)操作。
進(jìn)一步的,所述系統(tǒng)數(shù)據(jù)庫用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)。
進(jìn)一步的,所述差異數(shù)據(jù)為所述終端的所述數(shù)據(jù)類型的第二版本號(hào)的數(shù)據(jù)相對于所述終端的所述數(shù)據(jù)類型的第一版本號(hào)的數(shù)據(jù)的新增數(shù)據(jù)、刪除數(shù)據(jù)和修改數(shù)據(jù)。
進(jìn)一步的,所述第二版本號(hào)的數(shù)據(jù)存儲(chǔ)在所述云服務(wù)的備份數(shù)據(jù)庫中;
所述備份數(shù)據(jù)庫用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的各個(gè)版本號(hào)的數(shù)據(jù)。
進(jìn)一步的,所述方法,還包括:
當(dāng)接收到所述對比結(jié)果時(shí),判斷所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)是否已加鎖,若是,則結(jié)束數(shù)據(jù)恢復(fù)操作;若否,則對所述最新版本號(hào)的數(shù)據(jù)進(jìn)行加鎖操作;
當(dāng)所述數(shù)據(jù)恢復(fù)操作結(jié)束時(shí),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的恢復(fù)后的數(shù)據(jù)進(jìn)行解鎖操作。
本發(fā)明提出的數(shù)據(jù)恢復(fù)的方法和裝置,利用數(shù)據(jù)對比結(jié)果,將系統(tǒng)數(shù)據(jù)庫的最新版本的數(shù)據(jù)恢復(fù)到之前任一備份節(jié)點(diǎn)時(shí)的數(shù)據(jù),所述對比結(jié)果中只包括指定版本號(hào)的數(shù)據(jù)與最新版本號(hào)的數(shù)據(jù)之間的差異數(shù)據(jù),所以利用所述差異數(shù)據(jù)就可對當(dāng)前最新版本的數(shù)據(jù)進(jìn)行恢復(fù)。本發(fā)明可以將系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)快速準(zhǔn)確的恢復(fù)到某一備份節(jié)點(diǎn)時(shí)的數(shù)據(jù)。
附圖說明
圖1為本發(fā)明第一實(shí)施例的數(shù)據(jù)恢復(fù)的裝置的組成結(jié)構(gòu)示意圖;
圖2為本發(fā)明第二實(shí)施例的數(shù)據(jù)恢復(fù)的裝置的組成結(jié)構(gòu)示意圖;
圖3為本發(fā)明第三實(shí)施例的數(shù)據(jù)恢復(fù)的方法的流程圖;
圖4為本發(fā)明第四實(shí)施例的數(shù)據(jù)恢復(fù)的方法的流程圖;
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,本發(fā)明第一實(shí)施例提出一種數(shù)據(jù)恢復(fù)的裝置,具體包括以下組成部分:
1)獲取模塊101,用于從云服務(wù)的會(huì)話緩存中獲取對比結(jié)果,所述對比結(jié)果包括:終端信息、數(shù)據(jù)類型信息、第一版本號(hào)信息以及差異數(shù)據(jù)。
所述終端信息為在所述云服務(wù)中注冊的終端用戶的信息。
所述數(shù)據(jù)類型包括:聯(lián)系人、通話記錄、短信、記事本、鬧鈴、日歷和書簽。
第一版本號(hào)為發(fā)起數(shù)據(jù)對比操作時(shí)的所述終端的所述數(shù)據(jù)類型的在所述系統(tǒng)數(shù)據(jù)庫中的版本號(hào)。
所述差異數(shù)據(jù)為所述終端的所述數(shù)據(jù)類型的第二版本號(hào)的數(shù)據(jù)相對于所述終端的所述數(shù)據(jù)類型的第一版本號(hào)的數(shù)據(jù)的新增數(shù)據(jù)、刪除數(shù)據(jù)和修改數(shù)據(jù)。
所述第二版本號(hào)的數(shù)據(jù)存儲(chǔ)在所述云服務(wù)的備份數(shù)據(jù)庫中。
所述系統(tǒng)數(shù)據(jù)庫用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)。
所述備份數(shù)據(jù)庫用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的各個(gè)版本號(hào)的數(shù)據(jù)。
2)判斷模塊102,用于判斷所述云服務(wù)的系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)是否與所述第一版本號(hào)相同;
若是,則觸發(fā)恢復(fù)模塊103,執(zhí)行數(shù)據(jù)恢復(fù)操作;
若否,則說明所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)已發(fā)生變更,需要將所述最新版本號(hào)的數(shù)據(jù)與所述第二版本號(hào)的數(shù)據(jù)進(jìn)行重新對比。
具體的,判斷模塊102,還用于:
當(dāng)接收到所述對比結(jié)果時(shí),判斷所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)是否已加鎖,若是,則說明所述最新版本的數(shù)據(jù)正在被使用或者正在進(jìn)行更新中,結(jié)束數(shù)據(jù)恢復(fù)操作;若否,則對所述最新版本號(hào)的數(shù)據(jù)進(jìn)行加鎖操作,以防止所述最新版本的數(shù)據(jù)在恢復(fù)過程中所述終端對所述最新版本的數(shù)據(jù)進(jìn)行修改、刪除或添加操作。
3)恢復(fù)模塊103,用于在所述最新版本號(hào)與所述第一版本號(hào)相同的情況下,根據(jù)所述差異數(shù)據(jù),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù)操作。
具體的,恢復(fù)模塊103,包括:
新增單元,用于將所述差異數(shù)據(jù)中的新增數(shù)據(jù)添加到所述最新版本的數(shù)據(jù)中,并為所述新增數(shù)據(jù)設(shè)置小版本號(hào),與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
修改單元,用于將所述差異數(shù)據(jù)中的修改數(shù)據(jù)添加到所述最新版本的數(shù)據(jù)中,并為所述修改數(shù)據(jù)設(shè)置小版本號(hào),與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
刪除單元,用于在所述最新版本的數(shù)據(jù)中查找所述差異數(shù)據(jù)中的刪除數(shù)據(jù),并將所述最新版本中的所述刪除數(shù)據(jù)的狀態(tài)標(biāo)識(shí)status標(biāo)記為0,與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
在云服務(wù)中,為每個(gè)數(shù)據(jù)庫中的數(shù)據(jù)設(shè)置專題標(biāo)識(shí)status,當(dāng)status=0時(shí),表示所述數(shù)據(jù)處于正常狀態(tài);當(dāng)status=1時(shí),表示刪除所述數(shù)據(jù)的內(nèi)容,但可對所述數(shù)據(jù)進(jìn)行恢復(fù)操作;當(dāng)status=2時(shí),表示徹底刪除所述數(shù)據(jù),且不能進(jìn)行恢復(fù)操作。
進(jìn)一步的,所述裝置還包括:
解鎖模塊,用于當(dāng)所述數(shù)據(jù)恢復(fù)操作結(jié)束時(shí),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的恢復(fù)后的數(shù)據(jù)進(jìn)行解鎖操作。對所述最新版本的數(shù)據(jù)進(jìn)行加鎖和解鎖操作,是為了保證所述最新版本的數(shù)據(jù)在數(shù)據(jù)恢復(fù)過程中的一致性。
如圖2所示,本發(fā)明第二實(shí)施例提出一種數(shù)據(jù)恢復(fù)的裝置,具體包括以下組成部分:
1)接收模塊201,用于接收終端發(fā)送來的數(shù)據(jù)恢復(fù)請求信息,所述數(shù)據(jù)恢復(fù)請求信息包括:對比結(jié)果索引信息。
2)獲取模塊202,用于根據(jù)所述數(shù)據(jù)恢復(fù)請求信息中的對比結(jié)果索引信息從所述云服務(wù)的會(huì)話緩存中獲取與之對應(yīng)的對比結(jié)果,開始執(zhí)行數(shù)據(jù)恢復(fù)操作。
所述對比結(jié)果包括:終端信息、數(shù)據(jù)類型信息、第一版本號(hào)信息以及差異數(shù)據(jù)。
所述終端信息為所述終端的用戶信息。
所述數(shù)據(jù)類型包括:聯(lián)系人、通話記錄、短信、記事本、鬧鈴、日歷和書簽。
第一版本號(hào)為發(fā)起數(shù)據(jù)對比操作時(shí)的所述終端的所述數(shù)據(jù)類型的在所述MySQL數(shù)據(jù)庫中的版本號(hào)。.
所述MySQL數(shù)據(jù)庫相當(dāng)于本發(fā)明第一實(shí)施例中的系統(tǒng)數(shù)據(jù)庫。所述MySQL數(shù)據(jù)庫位于所述云服務(wù)中,用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)。
所述差異數(shù)據(jù)為所述終端的所述數(shù)據(jù)類型的第二版本號(hào)的數(shù)據(jù)相對于所述終端的所述數(shù)據(jù)類型的第一版本號(hào)的數(shù)據(jù)的新增數(shù)據(jù)、刪除數(shù)據(jù)和修改數(shù)據(jù)。
所述第二版本號(hào)的數(shù)據(jù)存儲(chǔ)在所述云服務(wù)的Mongo數(shù)據(jù)庫中。
所述Mongo數(shù)據(jù)庫相當(dāng)于所述本發(fā)明第一實(shí)施例中的備份數(shù)據(jù)庫,用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的各個(gè)版本號(hào)的數(shù)據(jù)。
3)預(yù)處理模塊203,用于對所述數(shù)據(jù)恢復(fù)請求進(jìn)行預(yù)處理操作,判斷發(fā)送所述數(shù)據(jù)恢復(fù)請求的終端是否已在所述云服務(wù)中注冊,若是,則觸發(fā)加鎖模塊204;若否,則拒絕所述數(shù)據(jù)恢復(fù)請求。
4)加鎖模塊204,用于判斷所述MySQL數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)是否已加鎖;
若是,則說明所述最新版本的數(shù)據(jù)正在被使用或者正在進(jìn)行更新中,結(jié)束數(shù)據(jù)恢復(fù)操作;
若否,則對所述最新版本號(hào)的數(shù)據(jù)進(jìn)行加鎖操作,以防止所述最新版本的數(shù)據(jù)在恢復(fù)過程中所述終端對所述最新版本的數(shù)據(jù)進(jìn)行修改、刪除或添加操作。
5)判斷模塊205,用于判斷所述云服務(wù)的MySQL數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)是否與所述第一版本號(hào)相同;
若是,則執(zhí)行數(shù)據(jù)恢復(fù)操作;
若否,則說明所述MySQL數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)已發(fā)生變更,需要將所述最新版本號(hào)的數(shù)據(jù)與所述第二版本號(hào)的數(shù)據(jù)進(jìn)行重新對比。
6)恢復(fù)模塊206,用于在所述最新版本號(hào)與所述第一版本號(hào)相同的情況下,根據(jù)所述差異數(shù)據(jù),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù)操作。
具體的,恢復(fù)模塊206,包括:
新增單元,用于將所述差異數(shù)據(jù)中的新增數(shù)據(jù)添加到所述最新版本的數(shù)據(jù)中,并為所述新增數(shù)據(jù)設(shè)置小版本號(hào),與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
修改單元,用于將所述差異數(shù)據(jù)中的修改數(shù)據(jù)添加到所述最新版本的數(shù)據(jù)中,并為所述修改數(shù)據(jù)設(shè)置小版本號(hào),與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
刪除單元,用于在所述最新版本的數(shù)據(jù)中查找所述差異數(shù)據(jù)中的刪除數(shù)據(jù),并將所述最新版本中的所述刪除數(shù)據(jù)的狀態(tài)標(biāo)識(shí)status標(biāo)記為0,與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
在云服務(wù)中,為每個(gè)數(shù)據(jù)庫中的數(shù)據(jù)設(shè)置專題標(biāo)識(shí)status,當(dāng)status=0時(shí),表示所述數(shù)據(jù)處于正常狀態(tài);當(dāng)status=1時(shí),表示刪除所述數(shù)據(jù)的內(nèi)容,但可對所述數(shù)據(jù)進(jìn)行恢復(fù)操作;當(dāng)status=2時(shí),表示徹底刪除所述數(shù)據(jù),且不能進(jìn)行恢復(fù)操作。
7)解鎖模塊207,用于當(dāng)所述數(shù)據(jù)恢復(fù)操作結(jié)束時(shí),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的恢復(fù)后的數(shù)據(jù)進(jìn)行解鎖操作。對所述最新版本的數(shù)據(jù)進(jìn)行加鎖和解鎖操作,是為了保證所述最新版本的數(shù)據(jù)在數(shù)據(jù)恢復(fù)過程中的一致性。
如圖3所示,本發(fā)明第三實(shí)施例提出一種數(shù)據(jù)恢復(fù)的方法,具體包括以下步驟:
步驟S301,從云服務(wù)的會(huì)話緩存中獲取對比結(jié)果,所述對比結(jié)果包括:終端信息、數(shù)據(jù)類型信息、第一版本號(hào)信息以及差異數(shù)據(jù)。
所述終端信息為在所述云服務(wù)中注冊的終端用戶的信息。
所述數(shù)據(jù)類型包括:聯(lián)系人、通話記錄、短信、記事本、鬧鈴、日歷和書簽。
第一版本號(hào)為發(fā)起數(shù)據(jù)對比操作時(shí)的所述終端的所述數(shù)據(jù)類型的在所述系統(tǒng)數(shù)據(jù)庫中的版本號(hào)。
所述差異數(shù)據(jù)為所述終端的所述數(shù)據(jù)類型的第二版本號(hào)的數(shù)據(jù)相對于所述終端的所述數(shù)據(jù)類型的第一版本號(hào)的數(shù)據(jù)的新增數(shù)據(jù)、刪除數(shù)據(jù)和修改數(shù)據(jù)。
所述第二版本號(hào)的數(shù)據(jù)存儲(chǔ)在所述云服務(wù)的備份數(shù)據(jù)庫中。
所述系統(tǒng)數(shù)據(jù)庫用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)。
所述備份數(shù)據(jù)庫用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的各個(gè)版本號(hào)的數(shù)據(jù)。
步驟S302,判斷所述云服務(wù)的系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)是否與所述第一版本號(hào)相同;
若是,則執(zhí)行步驟S303,執(zhí)行數(shù)據(jù)恢復(fù)操作;
若否,則說明所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)已發(fā)生變更,需要將所述最新版本號(hào)的數(shù)據(jù)與所述第二版本號(hào)的數(shù)據(jù)進(jìn)行重新對比。
具體的,在步驟S302之前,所述方法還包括:
當(dāng)接收到所述對比結(jié)果時(shí),判斷所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)是否已加鎖,若是,則說明所述最新版本的數(shù)據(jù)正在被使用或者正在進(jìn)行更新中,結(jié)束數(shù)據(jù)恢復(fù)操作;若否,則對所述最新版本號(hào)的數(shù)據(jù)進(jìn)行加鎖操作,以防止所述最新版本的數(shù)據(jù)在恢復(fù)過程中所述終端對所述最新版本的數(shù)據(jù)進(jìn)行修改、刪除或添加操作。
步驟S303,在所述最新版本號(hào)與所述第一版本號(hào)相同的情況下,根據(jù)所述差異數(shù)據(jù),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù)操作。
具體的,步驟S303,包括:
將所述差異數(shù)據(jù)中的新增數(shù)據(jù)添加到所述最新版本的數(shù)據(jù)中,并為所述新增數(shù)據(jù)設(shè)置小版本號(hào),與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
將所述差異數(shù)據(jù)中的修改數(shù)據(jù)添加到所述最新版本的數(shù)據(jù)中,并為所述修改數(shù)據(jù)設(shè)置小版本號(hào),與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
在所述最新版本的數(shù)據(jù)中查找所述差異數(shù)據(jù)中的刪除數(shù)據(jù),并將所述最新版本中的所述刪除數(shù)據(jù)的狀態(tài)標(biāo)識(shí)status標(biāo)記為0,與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
在云服務(wù)中,為每個(gè)數(shù)據(jù)庫中的數(shù)據(jù)設(shè)置專題標(biāo)識(shí)status,當(dāng)status=0時(shí),表示所述數(shù)據(jù)處于正常狀態(tài);當(dāng)status=1時(shí),表示刪除所述數(shù)據(jù)的內(nèi)容,但可對所述數(shù)據(jù)進(jìn)行恢復(fù)操作;當(dāng)status=2時(shí),表示徹底刪除所述數(shù)據(jù),且不能進(jìn)行恢復(fù)操作。
進(jìn)一步的,所述方法還包括:
當(dāng)所述數(shù)據(jù)恢復(fù)操作結(jié)束時(shí),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的恢復(fù)后的數(shù)據(jù)進(jìn)行解鎖操作。對所述最新版本的數(shù)據(jù)進(jìn)行加鎖和解鎖操作,是為了保證所述最新版本的數(shù)據(jù)在數(shù)據(jù)恢復(fù)過程中的一致性。
如圖4所示,本發(fā)明第四實(shí)施例提出一種數(shù)據(jù)恢復(fù)的方法,具體包括以下步驟:
步驟S401:云服務(wù)接收終端發(fā)送來的數(shù)據(jù)恢復(fù)請求信息,所述數(shù)據(jù)恢復(fù)請求信息包括:對比結(jié)果索引信息。
步驟S402,所述云服務(wù)根據(jù)所述數(shù)據(jù)恢復(fù)請求信息中的對比結(jié)果索引信息從所述云服務(wù)的會(huì)話緩存中獲取與之對應(yīng)的對比結(jié)果,開始執(zhí)行數(shù)據(jù)恢復(fù)操作。
所述對比結(jié)果包括:終端信息、數(shù)據(jù)類型信息、第一版本號(hào)信息以及差異數(shù)據(jù)。
所述終端信息為所述終端的用戶信息。
所述數(shù)據(jù)類型包括:聯(lián)系人、通話記錄、短信、記事本、鬧鈴、日歷和書簽。
第一版本號(hào)為發(fā)起數(shù)據(jù)對比操作時(shí)的所述終端的所述數(shù)據(jù)類型的在所述MySQL數(shù)據(jù)庫中的版本號(hào)。.
所述MySQL數(shù)據(jù)庫相當(dāng)于本發(fā)明第一實(shí)施例和第三實(shí)施例中的系統(tǒng)數(shù)據(jù)庫。所述MySQL數(shù)據(jù)庫位于所述云服務(wù)中,用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)。
所述差異數(shù)據(jù)為所述終端的所述數(shù)據(jù)類型的第二版本號(hào)的數(shù)據(jù)相對于所述終端的所述數(shù)據(jù)類型的第一版本號(hào)的數(shù)據(jù)的新增數(shù)據(jù)、刪除數(shù)據(jù)和修改數(shù)據(jù)。
所述第二版本號(hào)的數(shù)據(jù)存儲(chǔ)在所述云服務(wù)的Mongo數(shù)據(jù)庫中。
所述Mongo數(shù)據(jù)庫相當(dāng)于所述本發(fā)明第一實(shí)施例和第三實(shí)施例中的備份數(shù)據(jù)庫,用于存儲(chǔ)所述云服務(wù)中的各個(gè)終端的各種數(shù)據(jù)類型的各個(gè)版本號(hào)的數(shù)據(jù)。
步驟S403,所述云服務(wù)對所述數(shù)據(jù)恢復(fù)請求進(jìn)行預(yù)處理操作,判斷發(fā)送所述數(shù)據(jù)恢復(fù)請求的終端是否已在所述云服務(wù)中注冊,若是,則執(zhí)行步驟S404;若否,則拒絕所述數(shù)據(jù)恢復(fù)請求。
步驟S404,判斷所述MySQL數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)是否已加鎖;
若是,則恢復(fù)失敗,說明所述最新版本的數(shù)據(jù)正在數(shù)據(jù)同步中,請稍后再更新數(shù)據(jù)
若否,則執(zhí)行步驟S405。
步驟S405,對所述最新版本號(hào)的數(shù)據(jù)進(jìn)行加鎖操作,以防止所述最新版本的數(shù)據(jù)在恢復(fù)過程中所述終端對所述最新版本的數(shù)據(jù)進(jìn)行修改、刪除或添加操作。
步驟S406,判斷所述云服務(wù)的MySQL數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)是否與所述第一版本號(hào)相同;
若是,則執(zhí)行步驟S407;
若否,則恢復(fù)失敗,終端數(shù)據(jù)已變更,請重新比對數(shù)據(jù);說明所述MySQL數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)已發(fā)生變更,需要將所述最新版本號(hào)的數(shù)據(jù)與所述第二版本號(hào)的數(shù)據(jù)進(jìn)行重新對比。
恢復(fù)失敗,提示用戶數(shù)據(jù)已變更,請重新比對數(shù)據(jù)
步驟S407,在所述最新版本號(hào)與所述第一版本號(hào)相同的情況下,根據(jù)所述差異數(shù)據(jù),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的最新版本號(hào)的數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù)操作。
具體的,步驟S407,包括:
將所述差異數(shù)據(jù)中的新增數(shù)據(jù)添加到所述最新版本的數(shù)據(jù)中,并為所述新增數(shù)據(jù)設(shè)置小版本號(hào),與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
將所述差異數(shù)據(jù)中的修改數(shù)據(jù)添加到所述最新版本的數(shù)據(jù)中,并為所述修改數(shù)據(jù)設(shè)置小版本號(hào),與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
在所述最新版本的數(shù)據(jù)中查找所述差異數(shù)據(jù)中的刪除數(shù)據(jù),并將所述最新版本中的所述刪除數(shù)據(jù)的狀態(tài)標(biāo)識(shí)status標(biāo)記為0,與此同時(shí),在所述最新版本號(hào)的基礎(chǔ)上加1,形成新的最新版本號(hào)。
在云服務(wù)中,為每個(gè)數(shù)據(jù)庫中的數(shù)據(jù)設(shè)置專題標(biāo)識(shí)status,當(dāng)status=0時(shí),表示所述數(shù)據(jù)處于正常狀態(tài);當(dāng)status=1時(shí),表示刪除所述數(shù)據(jù)的內(nèi)容,但可對所述數(shù)據(jù)進(jìn)行恢復(fù)操作;當(dāng)status=2時(shí),表示徹底刪除所述數(shù)據(jù),且不能進(jìn)行恢復(fù)操作。
步驟S408,當(dāng)所述數(shù)據(jù)恢復(fù)操作結(jié)束時(shí),對所述系統(tǒng)數(shù)據(jù)庫中的所述終端的所述數(shù)據(jù)類型的恢復(fù)后的數(shù)據(jù)進(jìn)行解鎖操作。對所述最新版本的數(shù)據(jù)進(jìn)行加鎖和解鎖操作,是為了保證所述最新版本的數(shù)據(jù)在數(shù)據(jù)恢復(fù)過程中的一致性。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。