一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法和裝置制造方法【專(zhuān)利摘要】本申請(qǐng)?zhí)峁┝艘环N基于數(shù)據(jù)模型的數(shù)據(jù)備份方法和裝置,所述方法包括:依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;接收所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí);依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,以得到所述當(dāng)前數(shù)據(jù)模型的當(dāng)前結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL;觸發(fā)所述當(dāng)前SQL在所述當(dāng)前數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行;將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件。采用本申請(qǐng)實(shí)施例公開(kāi)的數(shù)據(jù)備份方法和裝置,能夠解決現(xiàn)有技術(shù)的數(shù)據(jù)備份過(guò)程中存在的待備份數(shù)據(jù)的不準(zhǔn)確和不完整的問(wèn)題,保證數(shù)據(jù)的準(zhǔn)確性和完整性?!緦?zhuān)利說(shuō)明】一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法和裝置【
技術(shù)領(lǐng)域:
】[0001]本申請(qǐng)涉及數(shù)據(jù)庫(kù)領(lǐng)域,特別涉及一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法和裝置。【
背景技術(shù):
】[0002]數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),數(shù)據(jù)庫(kù)有很多種類(lèi)型,從最簡(jiǎn)單的存儲(chǔ)有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲(chǔ)的大型數(shù)據(jù)庫(kù)系統(tǒng),都在各個(gè)方面得到了廣泛的應(yīng)用。隨著數(shù)據(jù)庫(kù)業(yè)務(wù)的發(fā)展和采用數(shù)據(jù)庫(kù)的系統(tǒng)復(fù)雜度的提高,數(shù)據(jù)庫(kù)的備份就越來(lái)越常見(jiàn)。在復(fù)雜系統(tǒng)中,為了系統(tǒng)的可維護(hù)性和效率,經(jīng)常會(huì)把屬于一個(gè)實(shí)體(如用戶(hù)信息、用戶(hù)訂單、用戶(hù)賬單、用戶(hù)個(gè)性化配置等)的數(shù)據(jù)分別存儲(chǔ)在數(shù)據(jù)庫(kù)的不同表中。這些表中對(duì)應(yīng)于獨(dú)立實(shí)體的數(shù)據(jù)就稱(chēng)為數(shù)據(jù)模型。[0003]目前現(xiàn)有技術(shù)中,數(shù)據(jù)庫(kù)中數(shù)據(jù)的備份主要通過(guò)數(shù)據(jù)庫(kù)管理員(DBA)把相關(guān)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)導(dǎo)出,然后再全部導(dǎo)入到另一個(gè)數(shù)據(jù)庫(kù)中。具體的,目前常見(jiàn)的當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)備份及后續(xù)導(dǎo)入到另一個(gè)數(shù)據(jù)庫(kù)的方式,依據(jù)應(yīng)用場(chǎng)景的復(fù)雜情況分為如下兩種:第一種是對(duì)于數(shù)據(jù)不需要做復(fù)雜轉(zhuǎn)換處理的場(chǎng)景,此時(shí)從當(dāng)前數(shù)據(jù)庫(kù)中將待備份的數(shù)據(jù)先導(dǎo)出成SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢(xún)語(yǔ)言)文件,再在目標(biāo)數(shù)據(jù)庫(kù)表中執(zhí)行SQL以導(dǎo)入備份的數(shù)據(jù);另一種是需要對(duì)數(shù)據(jù)做復(fù)雜轉(zhuǎn)換的場(chǎng)景,此時(shí)先從當(dāng)前數(shù)據(jù)庫(kù)中將數(shù)據(jù)導(dǎo)出成SQL文件,在數(shù)據(jù)服務(wù)平臺(tái)上進(jìn)行轉(zhuǎn)換,得到新的SQL文件之后,再將新的SQL文件導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù)中執(zhí)行以導(dǎo)入備份的數(shù)據(jù)。[0004]但是發(fā)明人在研究過(guò)程中發(fā)現(xiàn),這個(gè)傳統(tǒng)的備份及后續(xù)導(dǎo)入的過(guò)程會(huì)遇到各種問(wèn)題:上述兩種數(shù)據(jù)庫(kù)備份的方案,都會(huì)使得待備份的數(shù)據(jù)容易被誤操作而篡改,因?yàn)樵趥浞菁昂罄m(xù)導(dǎo)入的過(guò)程中可能會(huì)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,而如果用數(shù)據(jù)庫(kù)提供的操作方法或者第三方組件實(shí)現(xiàn),難免會(huì)存在數(shù)據(jù)誤操作的問(wèn)題,導(dǎo)致備份的數(shù)據(jù)出錯(cuò);并且,數(shù)據(jù)備份操作很復(fù)雜,通常要對(duì)待備份的數(shù)據(jù)所存的大量數(shù)據(jù)庫(kù)表分別做查詢(xún)操作,而且還需要操作人員根據(jù)數(shù)據(jù)模型的定義,編寫(xiě)不同的查詢(xún)SQL,這個(gè)過(guò)程不僅復(fù)雜,而且容易出現(xiàn)多數(shù)據(jù)或者少數(shù)據(jù)的情況,影響待備份的數(shù)據(jù)的正確性;進(jìn)一步的,現(xiàn)有技術(shù)中的數(shù)據(jù)轉(zhuǎn)換的過(guò)程也比較復(fù)雜,而如果要對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的操作,特別是涉及到數(shù)據(jù)模型內(nèi)部的一些關(guān)聯(lián)邏輯,數(shù)據(jù)庫(kù)是處理不了的,必須借助第三方的數(shù)據(jù)處理平臺(tái)來(lái)進(jìn)行,這樣的話(huà)數(shù)據(jù)備份及后續(xù)導(dǎo)入過(guò)程不僅牽涉了多個(gè)操作方,更容易引入數(shù)據(jù)的不準(zhǔn)確和不完整。[0005]總之,目前需要本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問(wèn)題就是:如何能夠創(chuàng)新的提出一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法,以解決現(xiàn)有技術(shù)的數(shù)據(jù)備份過(guò)程中存在的待備份數(shù)據(jù)的不準(zhǔn)確和不完整的問(wèn)題。【
發(fā)明內(nèi)容】[0006]本申請(qǐng)所要解決的技術(shù)問(wèn)題是提供一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法,用以解決現(xiàn)有技術(shù)的數(shù)據(jù)備份過(guò)程中存在的待備份數(shù)據(jù)的不準(zhǔn)確和不完整的問(wèn)題。[0007]本申請(qǐng)還提供了一種基于數(shù)據(jù)模型的數(shù)據(jù)備份裝置,用以保證上述方法在實(shí)際中的實(shí)現(xiàn)及應(yīng)用。[0008]為了解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法,包括:[0009]依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;該方法包括:[0010]接收所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí);[0011]依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,以得到所述當(dāng)前數(shù)據(jù)模型的當(dāng)前結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL;[0012]觸發(fā)所述當(dāng)前SQL在所述當(dāng)前數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行;[0013]將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件。[0014]可選的,所述依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,具體包括:[0015]接收用戶(hù)輸入的待備份的數(shù)據(jù)的關(guān)鍵詞;[0016]在所述當(dāng)前數(shù)據(jù)庫(kù)中查找與所述關(guān)鍵詞相關(guān)聯(lián)的所有關(guān)聯(lián)數(shù)據(jù)表;[0017]判斷所述關(guān)聯(lián)數(shù)據(jù)表是否存在外表引用,如果是,則將外表導(dǎo)入至初始數(shù)據(jù)模型中;[0018]將所述關(guān)聯(lián)數(shù)據(jù)表導(dǎo)入至所述初始數(shù)據(jù)模型中,以建立所述當(dāng)前數(shù)據(jù)模型。[0019]可選的,所述依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,具體包括:[0020]依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)獲取對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;[0021]判斷所述當(dāng)前數(shù)據(jù)模型是否引用其他數(shù)據(jù)模型,如果是,則獲取所述其他數(shù)據(jù)模型和當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;如果否,則獲取所述當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;[0022]將所述目標(biāo)數(shù)據(jù)表生成與所述目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL;[0023]判斷所述目標(biāo)數(shù)據(jù)表是否引用外表,如果是,則將所述外表生成與所述外表對(duì)應(yīng)的第二SQL;[0024]將所述第二SQL,或者所述第一SQL和第二SQL作為所述當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL。[0025]可選的,所述將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件之后,還包括:[0026]依據(jù)當(dāng)前應(yīng)用的不同的業(yè)務(wù)場(chǎng)景對(duì)所述數(shù)據(jù)備份文件中的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換。[0027]可選的,所述將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件之后,還包括:[0028]將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。[0029]可選的,所述將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù),具體為:[0030]在同一個(gè)事務(wù)中將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。[0031]本申請(qǐng)公開(kāi)了一種基于數(shù)據(jù)模型的數(shù)據(jù)備份裝置,包括:[0032]創(chuàng)建模塊,用于依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;[0033]接收模塊,用于接收所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí);[0034]解析模塊,用于依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,以得到所述當(dāng)前數(shù)據(jù)模型的當(dāng)前結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL;[0035]執(zhí)行SQL模塊,用于觸發(fā)所述當(dāng)前SQL在所述當(dāng)前數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行;[0036]備份模塊,用于將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件。[0037]可選的,所述創(chuàng)建模塊具體包括:[0038]接收子模塊,用于接收用戶(hù)輸入的待備份的數(shù)據(jù)的關(guān)鍵詞;[0039]查找子模塊,用于在所述當(dāng)前數(shù)據(jù)庫(kù)中查找與所述關(guān)鍵詞相關(guān)聯(lián)的所有關(guān)聯(lián)數(shù)據(jù)表;[0040]第一判斷子模塊,用于判斷所述關(guān)聯(lián)數(shù)據(jù)表是否存在外表引用;[0041]第一導(dǎo)入子模塊,用于在所述判斷子模塊的結(jié)果為是的情況下,將外表導(dǎo)入至初始數(shù)據(jù)模型中;[0042]第二導(dǎo)入子模塊,用于將所述關(guān)聯(lián)數(shù)據(jù)表導(dǎo)入至所述初始數(shù)據(jù)模型中,以建立所述當(dāng)前數(shù)據(jù)模型。[0043]可選的,所述解析模塊具體包括:[0044]第一獲取子模塊,用于依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)獲取對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;[0045]第二判斷子模塊,用于判斷所述當(dāng)前數(shù)據(jù)模型是否引用其他數(shù)據(jù)模型;[0046]第二獲取子模塊,用于在所述第二判斷子模塊的結(jié)果為是的情況下,獲取所述其他數(shù)據(jù)模型和當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;[0047]第三獲取子模塊,用于在所述第二判斷子模塊的結(jié)果為的情況下,獲取所述當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;[0048]第一生成子模塊,用于將所述目標(biāo)數(shù)據(jù)表生成與所述目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL;[0049]第三判斷子模塊,用于判斷所述目標(biāo)數(shù)據(jù)表是否引用外表;[0050]第二生成子模塊,用于在所述第三判斷子模塊的結(jié)果為是的情況下,將所述外表生成與所述外表對(duì)應(yīng)的第二SQL;[0051]確定子模塊,用于將所述第二SQL,或者所述第一SQL和第二SQL作為所述當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL。[0052]可選的,還包括:[0053]格式轉(zhuǎn)換模塊,用于依據(jù)當(dāng)前應(yīng)用的不同的業(yè)務(wù)場(chǎng)景對(duì)所述數(shù)據(jù)備份文件中的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換。[0054]可選的,還包括:[0055]導(dǎo)入模塊,用于將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。[0056]可選的,所述導(dǎo)入模塊具體用于:在同一個(gè)事務(wù)中將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。[0057]與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):[0058]在本申請(qǐng)實(shí)施例中,由于針對(duì)待備份的數(shù)據(jù)涉及到的多個(gè)表只創(chuàng)建一個(gè)數(shù)據(jù)模型,并且,后續(xù)解析該數(shù)據(jù)模型的過(guò)程都依據(jù)該數(shù)據(jù)模型的唯一的標(biāo)識(shí)進(jìn)行,所以不會(huì)使得數(shù)據(jù)備份過(guò)程出現(xiàn)錯(cuò)誤,因此就保證了數(shù)據(jù)備份過(guò)程中數(shù)據(jù)模型的準(zhǔn)確解析,也就提高了數(shù)據(jù)備份過(guò)程中數(shù)據(jù)的正確性和完整性。進(jìn)一步的,還能使得后續(xù)導(dǎo)入數(shù)據(jù)備份文件到其他數(shù)據(jù)庫(kù)的時(shí)候,也能夠保證數(shù)據(jù)的正確性和完整性。進(jìn)一步的,本申請(qǐng)實(shí)施例中的數(shù)據(jù)模型在數(shù)據(jù)層面已經(jīng)對(duì)數(shù)據(jù)做了隔離,因此數(shù)據(jù)模型的備份和后續(xù)導(dǎo)入過(guò)程可以通過(guò)多線(xiàn)程執(zhí)行,從而提高備份和后續(xù)的導(dǎo)入效率。[0059]進(jìn)一步的,本申請(qǐng)實(shí)施例的實(shí)施也不需要對(duì)待備份的數(shù)據(jù)編寫(xiě)SQL,只要提供根據(jù)數(shù)據(jù)模型的標(biāo)識(shí),就會(huì)根據(jù)數(shù)據(jù)模型生成SQL,大大減少了數(shù)據(jù)備份操作的復(fù)雜性。[0060]進(jìn)一步的,在數(shù)據(jù)導(dǎo)入的過(guò)程中,同一個(gè)實(shí)體的數(shù)據(jù)導(dǎo)入流程在一個(gè)事務(wù)內(nèi)完成,保證了數(shù)據(jù)的完整性。并且,數(shù)據(jù)導(dǎo)入也不需要編寫(xiě)SQL,只要通過(guò)數(shù)據(jù)備份文件即可自動(dòng)導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù)。[0061]當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)?!緦?zhuān)利附圖】【附圖說(shuō)明】[0062]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0063]圖1是本申請(qǐng)的一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法實(shí)施例1的流程圖;[0064]圖2是本申請(qǐng)方法實(shí)施例1中步驟101的流程圖;[0065]圖3是本申請(qǐng)方法實(shí)施例1中步驟103的流程圖;[0066]圖4是本申請(qǐng)的一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法實(shí)施例2的流程圖;[0067]圖5是本申請(qǐng)的一種基于數(shù)據(jù)模型的數(shù)據(jù)備份裝置實(shí)施例1的結(jié)構(gòu)框圖;[0068]圖6是本申請(qǐng)裝置實(shí)施例1中創(chuàng)建模塊501的結(jié)構(gòu)框圖;[0069]圖7是本申請(qǐng)裝置實(shí)施例1中解析模塊503的結(jié)構(gòu)框圖;[0070]圖8是本申請(qǐng)的一種基于數(shù)據(jù)模型的數(shù)據(jù)備份裝置實(shí)施例2的結(jié)構(gòu)框圖。【具體實(shí)施方式】[0071]下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。[0072]本申請(qǐng)主要用于軟件或互聯(lián)網(wǎng)開(kāi)發(fā)工作通用的計(jì)算裝置環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)多處理器裝置、包括以上任何裝置或設(shè)備的分布式計(jì)算環(huán)境等等。[0073]本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。[0074]參考圖1,示出了本申請(qǐng)一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法實(shí)施例1的流程圖,可以包括以下步驟:[0075]步驟101:依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型。[0076]在本申請(qǐng)實(shí)施例中,需要先依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,具體的,根據(jù)業(yè)務(wù)需求和待備份的數(shù)據(jù)所保存的數(shù)據(jù)庫(kù)表結(jié)構(gòu)來(lái)配置數(shù)據(jù)模型,并為配置的數(shù)據(jù)模型定義其標(biāo)識(shí)。需要說(shuō)明的是,在本實(shí)施例中,定義的數(shù)據(jù)模型和待備份的數(shù)據(jù)所保存的數(shù)據(jù)庫(kù)表結(jié)構(gòu)應(yīng)當(dāng)是對(duì)應(yīng)的。[0077]參考圖2所示,步驟101在具體實(shí)施時(shí)可以包括如下步驟:[0078]步驟201:接收用戶(hù)輸入的待備份的數(shù)據(jù)的關(guān)鍵詞。[0079]首先,需要在當(dāng)前數(shù)據(jù)庫(kù)中獲取到待備份的數(shù)據(jù),則可以先獲取用戶(hù)輸入的待備份的數(shù)據(jù)的關(guān)鍵詞,例如用戶(hù)輸入的關(guān)鍵詞為“蘋(píng)果手機(jī)”,那么在當(dāng)前數(shù)據(jù)模型中的數(shù)據(jù)表中,根據(jù)模型ID,能夠與該關(guān)鍵詞匹配上的所有數(shù)據(jù),都是本申請(qǐng)實(shí)施例中的待備份的數(shù)據(jù)。[0080]步驟202:在所述當(dāng)前數(shù)據(jù)庫(kù)中查找與所述關(guān)鍵詞相關(guān)聯(lián)的所有關(guān)聯(lián)數(shù)據(jù)表。[0081]本步驟即是在當(dāng)前數(shù)據(jù)庫(kù)中查找能夠與關(guān)鍵詞匹配上的所有數(shù)據(jù)庫(kù)表,并將匹配上的數(shù)據(jù)表都作為關(guān)聯(lián)數(shù)據(jù)表,即是待備份的數(shù)據(jù)。[0082]步驟203:根據(jù)數(shù)據(jù)模型判斷所述關(guān)聯(lián)數(shù)據(jù)表是否存在外表引用,如果是,則進(jìn)入步驟204,如果否,則進(jìn)入步驟205。[0083]判斷查找到的關(guān)聯(lián)數(shù)據(jù)表是否存在外表引用,如果有外表引用,則需要先依據(jù)外表創(chuàng)建數(shù)據(jù)模型。其中,當(dāng)數(shù)據(jù)庫(kù)中存在外鍵引用時(shí),將外鍵所在的表定義為外表,如果不存在外表弓I用,則直接進(jìn)入步驟205。[0084]步驟204:將外表導(dǎo)入至初始數(shù)據(jù)模型中。[0085]在本實(shí)施例中,創(chuàng)建數(shù)據(jù)模型的過(guò)程即是將所有的關(guān)聯(lián)數(shù)據(jù)表都關(guān)聯(lián)到一起形成一個(gè)數(shù)據(jù)模型,而不像現(xiàn)有技術(shù)中在對(duì)數(shù)據(jù)進(jìn)行備份時(shí),一個(gè)數(shù)據(jù)表需要對(duì)應(yīng)一個(gè)獨(dú)立的SQL腳本。[0086]步驟205:將所述關(guān)聯(lián)數(shù)據(jù)表導(dǎo)入至所述初始數(shù)據(jù)模型中,以建立所述當(dāng)前數(shù)據(jù)模型。[0087]將外表導(dǎo)入初始數(shù)據(jù)模型之后,再將步驟202中得到的所有關(guān)聯(lián)數(shù)據(jù)表導(dǎo)入到已經(jīng)關(guān)聯(lián)了外表的初始數(shù)據(jù)模型中,最終得到關(guān)聯(lián)了所有關(guān)聯(lián)數(shù)據(jù)表及外表的當(dāng)前數(shù)據(jù)模型。[0088]需要說(shuō)明的是,在步驟201?步驟205進(jìn)行數(shù)據(jù)模型的創(chuàng)建過(guò)程中,在進(jìn)行數(shù)據(jù)庫(kù)表(包括外表或者關(guān)聯(lián)數(shù)據(jù)表)的導(dǎo)入之前,也可以檢查數(shù)據(jù)模型中是否已經(jīng)存在相同的數(shù)據(jù)庫(kù)表,可以遍歷數(shù)據(jù)模型本身和其引用的數(shù)據(jù)模型進(jìn)行迭代。而對(duì)于引用外鍵的表,也需要檢查引用的外鍵和該外鍵對(duì)應(yīng)的外表是否在數(shù)據(jù)模型中已經(jīng)存在。因此,在本申請(qǐng)實(shí)施例中,在往數(shù)據(jù)模型中導(dǎo)入數(shù)據(jù)庫(kù)表時(shí),需要先導(dǎo)入外表再導(dǎo)入關(guān)聯(lián)數(shù)據(jù)表,即是先導(dǎo)入被引用的表。同時(shí),在本申請(qǐng)實(shí)施例中,模型ID設(shè)置在每個(gè)表上,在模型解析過(guò)程中,會(huì)將每個(gè)表中的ID抽離出來(lái)作為整個(gè)模型的ID。每個(gè)ID有一個(gè)類(lèi)型號(hào)(比如USER_ID),這樣模型就知道和模型關(guān)聯(lián)的ID是哪個(gè),只要根據(jù)這個(gè)ID去逐個(gè)查詢(xún)數(shù)據(jù)庫(kù)中的數(shù)據(jù)即可。將ID設(shè)置在每個(gè)表上,也便于處理一個(gè)模型中有多個(gè)ID的情況。[0089]為了方便本領(lǐng)域技術(shù)人員在具體應(yīng)用中更清楚的了解數(shù)據(jù)模型的含義,下面對(duì)數(shù)據(jù)模型在創(chuàng)建過(guò)程中的關(guān)鍵字段進(jìn)行介紹,不過(guò)本領(lǐng)域技術(shù)人員均知,以下關(guān)鍵字段也只是舉例示意,其他能夠?qū)崿F(xiàn)本申請(qǐng)的方式也屬于本申請(qǐng)的保護(hù)范圍。[0090]數(shù)據(jù)模型在實(shí)現(xiàn)時(shí)的關(guān)鍵字段至少可以包括:“tables”指的是數(shù)據(jù)模型中的表,而采用“refs”表示當(dāng)前數(shù)據(jù)模型引用的另一個(gè)數(shù)據(jù)模型。在本申請(qǐng)實(shí)施例中,為了便于數(shù)據(jù)模型的維護(hù),一個(gè)數(shù)據(jù)模型可以引用其他數(shù)據(jù)模型。可以采用“uniqKeys、sequence”字段來(lái)實(shí)現(xiàn)數(shù)據(jù)模型中的表結(jié)構(gòu)的唯一性控制,在解析數(shù)據(jù)模型進(jìn)行待備份的數(shù)據(jù)還原時(shí)唯一還原成一個(gè)數(shù)據(jù)庫(kù)表;“foreignTable”表不外表,即是數(shù)據(jù)庫(kù)中存在外鍵引用時(shí),外鍵所在的表定義為“foreignTable”。采用“ids”表示數(shù)據(jù)模型的標(biāo)識(shí)(ID),一般是整個(gè)數(shù)據(jù)模型中的主要的幾個(gè)表都包含的且用來(lái)描述數(shù)據(jù)屬于同一個(gè)數(shù)據(jù)模型的ID,在一個(gè)數(shù)據(jù)模型中輔助的表可以另外通過(guò)外鍵來(lái)描述數(shù)據(jù)模型,即是定義在“foreignTable”的引用關(guān)系中。[0091]接著返回圖1,在步驟102中:接收所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)。[0092]在預(yù)先創(chuàng)建完數(shù)據(jù)模型之后,創(chuàng)建的當(dāng)前數(shù)據(jù)模型可以保存起來(lái),如果下一次用戶(hù)再進(jìn)行相同關(guān)鍵詞的數(shù)據(jù)庫(kù)表的備份,則可以使用上一次保存過(guò)的數(shù)據(jù)模型,這樣就節(jié)省了每次都必須創(chuàng)建數(shù)據(jù)模型的過(guò)程,更有利于節(jié)約資源。因此,雖然步驟102在步驟101之后,但是在實(shí)際應(yīng)用中,并不一定是執(zhí)行步驟101之后一定執(zhí)行步驟102,也可以在需要進(jìn)行數(shù)據(jù)備份的時(shí)候再執(zhí)行步驟102。[0093]在本步驟即是獲取到待備份的數(shù)據(jù)進(jìn)行備份時(shí),已經(jīng)針對(duì)待備份的數(shù)據(jù)創(chuàng)建的當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)。[0094]步驟103:依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,以得到所述當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL。[0095]在獲得當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)之后,再對(duì)該標(biāo)識(shí)對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型進(jìn)行解析,從而得到與當(dāng)前數(shù)據(jù)模型對(duì)應(yīng)的當(dāng)前SQL,即是解析的過(guò)程最終會(huì)生成可執(zhí)行的SQL。其中,可以包括SQL描述(Description)類(lèi)的對(duì)象集合,例如,查詢(xún)數(shù)據(jù)庫(kù)(DB)的SQL、數(shù)據(jù)表的王鍵和Sequence、表的屬性(是否允許為空)等。[0096]具體的,參考圖3所示,解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型具體可以包括:[0097]步驟301:依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)獲取對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型。[0098]首先依據(jù)當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)獲取預(yù)先創(chuàng)建好的當(dāng)前數(shù)據(jù)模型。[0099]步驟302:判斷所述當(dāng)前數(shù)據(jù)模型是否引用其他數(shù)據(jù)模型,如果是,則進(jìn)入步驟303;如果否,則進(jìn)入步驟304。[0100]再判斷當(dāng)前數(shù)據(jù)模型是否引用其他數(shù)據(jù)模型,如果引用其他數(shù)據(jù)模型,則在解析的過(guò)程中,也需要將其他數(shù)據(jù)模型一起進(jìn)行解析。[0101]步驟303:獲取所述其他數(shù)據(jù)模型和當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表,進(jìn)入步驟305。[0102]在本步驟中,即是獲得當(dāng)前數(shù)據(jù)模型和其引用的其他數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表,并將獲得的所有關(guān)聯(lián)數(shù)據(jù)表作為生成當(dāng)前SQL的目標(biāo)數(shù)據(jù)表。[0103]步驟304:獲取所述當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表。[0104]而如果當(dāng)前數(shù)據(jù)模型并沒(méi)有引用其他數(shù)據(jù)模型,則此時(shí)直接獲取當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表就可以了。[0105]步驟305:將所述目標(biāo)數(shù)據(jù)表生成與所述目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL。[0106]在本步驟,將步驟303或者步驟304中獲得到目標(biāo)數(shù)據(jù)表生成與其對(duì)應(yīng)的第一SQL,具體的,根據(jù)數(shù)據(jù)表生成SQL的過(guò)程現(xiàn)有技術(shù)也能實(shí)現(xiàn),本申請(qǐng)實(shí)施例中不做限定。[0107]步驟306:判斷所述目標(biāo)數(shù)據(jù)表是否引用外表,如果是,則進(jìn)入步驟307,如果否,則進(jìn)入步驟308。[0108]在得到目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL之后,再判斷目標(biāo)數(shù)據(jù)表是否引用外表,如果目標(biāo)數(shù)據(jù)表引用外表,那么引用的外表也應(yīng)該生成對(duì)應(yīng)的SQL。[0109]步驟307:將所述外表生成與所述外表對(duì)應(yīng)的第二SQL。[0110]步驟308:將所述第一SQL,或者所述第一SQL和第二SQL作為所述當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL。[0111]最后,在目標(biāo)數(shù)據(jù)表不存在引用外表的情況下,直接將目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL作為當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL,而在目標(biāo)數(shù)據(jù)表存在外表引用的情況下,將目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL和外表對(duì)應(yīng)的第二SQL都作都作為當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL。[0112]在介紹完解析數(shù)據(jù)模型得到SQL之后,返回圖1,步驟104:觸發(fā)所述當(dāng)前SQL在所述當(dāng)前數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行。[0113]在得到當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL之后,將得到的當(dāng)前SQL傳入到當(dāng)前數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行,本申請(qǐng)實(shí)施例中也不再對(duì)當(dāng)前SQL的執(zhí)行過(guò)程進(jìn)行詳細(xì)介紹,現(xiàn)有技術(shù)均能實(shí)現(xiàn),逐條執(zhí)行SQL即可。[0114]但是本申請(qǐng)實(shí)施例與現(xiàn)有技術(shù)中的數(shù)據(jù)備份過(guò)程不同的是,執(zhí)行過(guò)程是根據(jù)數(shù)據(jù)模型的當(dāng)前SQL來(lái)逐條執(zhí)行的,而不是按數(shù)據(jù)庫(kù)表的SQL來(lái)逐條執(zhí)行。因此,本申請(qǐng)?jiān)卺槍?duì)數(shù)據(jù)模型備份時(shí),就可以根據(jù)SQL的屬性,對(duì)執(zhí)行SQL得到的數(shù)據(jù)做一定的校驗(yàn)和控制(例如表是否允許為空,數(shù)據(jù)的條數(shù)等),從而檢查得到的數(shù)據(jù)庫(kù)表中是否存在臟數(shù)據(jù)。[0115]步驟105:將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件。[0116]最后,再將執(zhí)行當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件,其中,數(shù)據(jù)備份文件可以是XML(可擴(kuò)展標(biāo)記語(yǔ)言,ExtensibleMarkupLanguage)文件格式。具體的,在得到SQL的執(zhí)行結(jié)果之后,加入各個(gè)數(shù)據(jù)庫(kù)表的屬性,就構(gòu)成了完整的數(shù)據(jù)備份文件。[0117]可以理解的是,在不同的運(yùn)行環(huán)境中,可以用不同的XML讀寫(xiě)方案來(lái)實(shí)現(xiàn)數(shù)據(jù)模型的創(chuàng)建和解析。例如PHP(英文超文本預(yù)處理語(yǔ)言,HypertextPreprocessor)的DOM,C++語(yǔ)言的Xerces-C++等,在不同的運(yùn)行環(huán)境中,可以使用不同的模板控制類(lèi)。[0118]在本申請(qǐng)實(shí)施例中,由于針對(duì)待備份的數(shù)據(jù)涉及到的多個(gè)表只創(chuàng)建一個(gè)數(shù)據(jù)模型,并且,后續(xù)解析該數(shù)據(jù)模型的過(guò)程都依據(jù)該數(shù)據(jù)模型的唯一的標(biāo)識(shí)進(jìn)行,所以不會(huì)使得數(shù)據(jù)備份過(guò)程出現(xiàn)錯(cuò)誤,因此就保證了數(shù)據(jù)備份過(guò)程中數(shù)據(jù)模型的準(zhǔn)確解析,也就提高了數(shù)據(jù)備份過(guò)程中數(shù)據(jù)的正確性和完整性。進(jìn)一步的,還能使得后續(xù)導(dǎo)入數(shù)據(jù)備份文件到其他數(shù)據(jù)庫(kù)的時(shí)候,也能夠保證數(shù)據(jù)的正確性和完整性。進(jìn)一步的,本申請(qǐng)實(shí)施例中的數(shù)據(jù)模型在數(shù)據(jù)層面已經(jīng)對(duì)數(shù)據(jù)做了隔離,因此數(shù)據(jù)模型的備份和后續(xù)導(dǎo)入過(guò)程可以通過(guò)多線(xiàn)程執(zhí)行,從而提高備份和后續(xù)的導(dǎo)入效率。[0119]參考圖4,示出了本申請(qǐng)一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法實(shí)施例2的流程圖,除了步驟101?105之外,在得到數(shù)據(jù)備份文件之后,本實(shí)施例還可以包括以下步驟:[0120]步驟401:依據(jù)當(dāng)前應(yīng)用的不同的業(yè)務(wù)場(chǎng)景對(duì)所述數(shù)據(jù)備份文件中的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換。[0121]因?yàn)楦鶕?jù)不同的業(yè)務(wù)場(chǎng)景,數(shù)據(jù)備份文件的格式可能與實(shí)際需要的業(yè)務(wù)場(chǎng)景不匹配,例如可能是因?yàn)閿?shù)據(jù)庫(kù)的升級(jí),需要增加新字段;也有可能是要對(duì)數(shù)據(jù)做統(tǒng)一的格式轉(zhuǎn)換。,格式轉(zhuǎn)換邏輯的定義是接口化的,可以按照當(dāng)前應(yīng)用的不同的業(yè)務(wù)場(chǎng)景根據(jù)本申請(qǐng)?zhí)峁┑慕涌诿枋?,進(jìn)行不同格式的數(shù)據(jù)轉(zhuǎn)換邏輯的定義,即是將數(shù)據(jù)備份文件進(jìn)行適合當(dāng)前業(yè)務(wù)場(chǎng)景的格式轉(zhuǎn)換。其中的轉(zhuǎn)換邏輯是根據(jù)接口和實(shí)際的業(yè)務(wù)場(chǎng)景自定義實(shí)現(xiàn)的。然后,格式轉(zhuǎn)換的執(zhí)行是模板化的,本申請(qǐng)?zhí)峁┙y(tǒng)一的執(zhí)行模板,對(duì)已配置的格式轉(zhuǎn)換邏輯進(jìn)行逐個(gè)執(zhí)行。在不同的應(yīng)用環(huán)境中,可以通過(guò)不同的方法實(shí)現(xiàn)所述的模板和接口描述,如C中的函數(shù)指針、C++中的抽象函數(shù)、Java中的interface等。[0122]步驟402:將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。[0123]在本申請(qǐng)實(shí)施例中,因?yàn)閿?shù)據(jù)備份文件可持久化,例如將數(shù)據(jù)備份文件以XML或其他數(shù)據(jù)文件格式保存至服務(wù)器,以供后續(xù)多次對(duì)該一個(gè)數(shù)據(jù)備份文件進(jìn)行數(shù)據(jù)導(dǎo)入,即是將數(shù)據(jù)備份文件導(dǎo)入至目標(biāo)數(shù)據(jù)庫(kù)之后,作為目標(biāo)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。[0124]需要說(shuō)明的是,對(duì)于同一個(gè)數(shù)據(jù)模型的數(shù)據(jù)應(yīng)該批量同時(shí)導(dǎo)入,其中任意一條SQL出現(xiàn)問(wèn)題就要產(chǎn)生回滾的現(xiàn)象。在現(xiàn)有技術(shù)中,按照數(shù)據(jù)備份文件的SQL進(jìn)行逐條導(dǎo)入時(shí)無(wú)法實(shí)現(xiàn)根據(jù)數(shù)據(jù)模型做事務(wù)上的控制,因此一旦在數(shù)據(jù)導(dǎo)入過(guò)程中出現(xiàn)問(wèn)題,就必須通過(guò)嚴(yán)格的回滾方式進(jìn)行解決,而不能簡(jiǎn)單的重新執(zhí)行,這就會(huì)大大增加數(shù)據(jù)導(dǎo)入過(guò)程的風(fēng)險(xiǎn)和復(fù)雜度。[0125]可以理解的是,在實(shí)際實(shí)施本申請(qǐng)時(shí),如果不需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,則可以直接在步驟105之后執(zhí)行步驟402,即是不必須一定要在步驟401之后才能執(zhí)行步驟402。[0126]而本本申請(qǐng)實(shí)施例在執(zhí)行步驟402時(shí),可以在同一個(gè)事務(wù)中將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù),這樣就能保證了數(shù)據(jù)的完整性和正確性,避免出現(xiàn)一個(gè)數(shù)據(jù)模型的數(shù)據(jù)部分導(dǎo)入而產(chǎn)生臟數(shù)據(jù)的情況。[0127]另外,從整個(gè)導(dǎo)入過(guò)程來(lái)看,每個(gè)實(shí)體的數(shù)據(jù)是相對(duì)獨(dú)立的(因?yàn)樵谝粋€(gè)事務(wù)中),而且有多種可擴(kuò)展的自定義的模式來(lái)解決數(shù)據(jù)沖突的問(wèn)題,因此如果導(dǎo)入過(guò)程出現(xiàn)一些不可預(yù)料的問(wèn)題(如數(shù)據(jù)庫(kù)崩潰、數(shù)據(jù)格式不兼容等),只要做一定的修正后重新執(zhí)行即可。[0128]本實(shí)施例不僅可以保證數(shù)據(jù)備份的正確性和完整性,還能夠后續(xù)在對(duì)數(shù)據(jù)備份文件進(jìn)行導(dǎo)入時(shí),也能夠避免臟數(shù)據(jù)的出現(xiàn),保證導(dǎo)入數(shù)據(jù)庫(kù)的數(shù)據(jù)的完整性和正確性,也提高了數(shù)據(jù)庫(kù)的性能。[0129]對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本申請(qǐng)所必須的。[0130]與上述本申請(qǐng)一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法實(shí)施例1所提供的方法相對(duì)應(yīng),參見(jiàn)圖5,本申請(qǐng)還提供了一種基于數(shù)據(jù)模型的數(shù)據(jù)備份裝置實(shí)施例1,在本實(shí)施例中,該裝置可以包括:[0131]創(chuàng)建模塊501,用于依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型。[0132]參考圖6所示,所述創(chuàng)建模塊501具體可以包括:[0133]接收子模塊601,用于接收用戶(hù)輸入的待備份的數(shù)據(jù)的關(guān)鍵詞;[0134]查找子模塊602,用于在所述當(dāng)前數(shù)據(jù)庫(kù)中查找與所述關(guān)鍵詞相關(guān)聯(lián)的所有關(guān)聯(lián)數(shù)據(jù)表;[0135]第一判斷子模塊603,用于判斷所述關(guān)聯(lián)數(shù)據(jù)表是否存在外表引用;[0136]第一導(dǎo)入子模塊604,用于在所述判斷子模塊的結(jié)果為是的情況下,將外表導(dǎo)入至初始數(shù)據(jù)模型中;[0137]第二導(dǎo)入子模塊605,用于將所述關(guān)聯(lián)數(shù)據(jù)表導(dǎo)入至所述初始數(shù)據(jù)模型中,以建立所述當(dāng)前數(shù)據(jù)模型。[0138]接收模塊502,用于接收所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)。[0139]解析模塊503,用于依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,以得到所述當(dāng)前數(shù)據(jù)模型的當(dāng)前結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL。[0140]參考圖7所示,所述解析模塊503具體可以包括:[0141]第一獲取子模塊701,用于依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)獲取對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;[0142]第二判斷子模塊702,用于判斷所述當(dāng)前數(shù)據(jù)模型是否引用其他數(shù)據(jù)模型;[0143]第二獲取子模塊703,用于在所述第二判斷子模塊的結(jié)果為是的情況下,獲取所述其他數(shù)據(jù)模型和當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;[0144]第三獲取子模塊704,用于在所述第二判斷子模塊的結(jié)果為否的情況下,獲取所述當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;[0145]第一生成子模塊705,用于將所述目標(biāo)數(shù)據(jù)表生成與所述目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL;[0146]第三判斷子模塊706,用于判斷所述目標(biāo)數(shù)據(jù)表是否引用外表;[0147]第二生成子模塊707,用于在所述第三判斷子模塊的結(jié)果為是的情況下,將所述外表生成與所述外表對(duì)應(yīng)的第二SQL;[0148]確定子模塊708,用于將所述第二SQL,或者所述第一SQL和第二SQL作為所述當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL。[0149]執(zhí)行SQL模塊504,用于觸發(fā)所述當(dāng)前SQL在所述當(dāng)前數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行。[0150]備份模塊505,用于將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件。[0151]在本申請(qǐng)實(shí)施例中,由于針對(duì)待備份的數(shù)據(jù)涉及到的多個(gè)表只創(chuàng)建一個(gè)數(shù)據(jù)模型,并且,后續(xù)解析該數(shù)據(jù)模型的過(guò)程都依據(jù)該數(shù)據(jù)模型的唯一的標(biāo)識(shí)進(jìn)行,所以不會(huì)使得數(shù)據(jù)備份過(guò)程出現(xiàn)錯(cuò)誤,因此就保證了數(shù)據(jù)備份過(guò)程中數(shù)據(jù)模型的準(zhǔn)確解析,也就提高了數(shù)據(jù)備份過(guò)程中數(shù)據(jù)的正確性和完整性。進(jìn)一步的,還能使得后續(xù)導(dǎo)入數(shù)據(jù)備份文件到其他數(shù)據(jù)庫(kù)的時(shí)候,也能夠保證數(shù)據(jù)的正確性和完整性。進(jìn)一步的,本申請(qǐng)實(shí)施例中的數(shù)據(jù)模型在數(shù)據(jù)層面已經(jīng)對(duì)數(shù)據(jù)做了隔離,因此數(shù)據(jù)模型的備份和后續(xù)導(dǎo)入過(guò)程可以通過(guò)多線(xiàn)程執(zhí)行,從而提高備份和后續(xù)的導(dǎo)入效率。[0152]與上述本申請(qǐng)一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法實(shí)施例2所提供的方法相對(duì)應(yīng),參見(jiàn)圖8,本申請(qǐng)還提供了一種基于數(shù)據(jù)模型的數(shù)據(jù)備份裝置實(shí)施例2,在本實(shí)施例中,該裝置可以包括:[0153]格式轉(zhuǎn)換模塊801,用于依據(jù)當(dāng)前應(yīng)用的不同的業(yè)務(wù)場(chǎng)景對(duì)所述數(shù)據(jù)備份文件中的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換。[0154]導(dǎo)入模塊802,用于將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。[0155]所述導(dǎo)入模塊802具體可以用于:在同一個(gè)事務(wù)中將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。[0156]本實(shí)施例不僅可以保證數(shù)據(jù)備份的正確性和完整性,還能夠后續(xù)在對(duì)數(shù)據(jù)備份文件進(jìn)行導(dǎo)入時(shí),也能夠避免臟數(shù)據(jù)的出現(xiàn),保證導(dǎo)入數(shù)據(jù)庫(kù)的數(shù)據(jù)的完整性和正確性,也提高了數(shù)據(jù)庫(kù)的性能。[0157]需要說(shuō)明的是,本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于裝置類(lèi)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。[0158]最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)......”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。[0159]以上對(duì)本申請(qǐng)所提供的一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法和裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制?!緳?quán)利要求】1.一種基于數(shù)據(jù)模型的數(shù)據(jù)備份方法,其特征在于,依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;該方法包括:接收所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí);依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,以得到所述當(dāng)前數(shù)據(jù)模型的當(dāng)前結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL;觸發(fā)所述當(dāng)前SQL在所述當(dāng)前數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行;將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,具體包括:接收用戶(hù)輸入的待備份的數(shù)據(jù)的關(guān)鍵詞;在所述當(dāng)前數(shù)據(jù)庫(kù)中查找與所述關(guān)鍵詞相關(guān)聯(lián)的所有關(guān)聯(lián)數(shù)據(jù)表;判斷所述關(guān)聯(lián)數(shù)據(jù)表是否存在外表引用,如果是,則將外表導(dǎo)入至初始數(shù)據(jù)模型中;將所述關(guān)聯(lián)數(shù)據(jù)表導(dǎo)入至所述初始數(shù)據(jù)模型中,以建立所述當(dāng)前數(shù)據(jù)模型。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,具體包括:依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)獲取對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;判斷所述當(dāng)前數(shù)據(jù)模型是否引用其他數(shù)據(jù)模型,如果是,則獲取所述其他數(shù)據(jù)模型和當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;如果否,則獲取所述當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;將所述目標(biāo)數(shù)據(jù)表生成與所述目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL;判斷所述目標(biāo)數(shù)據(jù)表是否引用外表,如果是,則將所述外表生成與所述外表對(duì)應(yīng)的第二SQL;將所述第二SQL,或者所述第一SQL和第二SQL作為所述當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件之后,還包括:依據(jù)當(dāng)前應(yīng)用的不同的業(yè)務(wù)場(chǎng)景對(duì)所述數(shù)據(jù)備份文件中的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件之后,還包括:將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù),具體為:在同一個(gè)事務(wù)中將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。7.一種基于數(shù)據(jù)模型的數(shù)據(jù)備份裝置,其特征在于,該裝置包括:創(chuàng)建模塊,用于依據(jù)當(dāng)前數(shù)據(jù)庫(kù)中待備份的數(shù)據(jù)創(chuàng)建數(shù)據(jù)模型的標(biāo)識(shí)及對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;接收模塊,用于接收所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí);解析模塊,用于依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)解析對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型,以得到所述當(dāng)前數(shù)據(jù)模型的當(dāng)前結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL;執(zhí)行SQL模塊,用于觸發(fā)所述當(dāng)前SQL在所述當(dāng)前數(shù)據(jù)庫(kù)中進(jìn)行執(zhí)行;備份模塊,用于將執(zhí)行所述當(dāng)前SQL的執(zhí)行結(jié)果作為與所述待備份的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)備份文件。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述創(chuàng)建模塊具體包括:接收子模塊,用于接收用戶(hù)輸入的待備份的數(shù)據(jù)的關(guān)鍵詞;查找子模塊,用于在所述當(dāng)前數(shù)據(jù)庫(kù)中查找與所述關(guān)鍵詞相關(guān)聯(lián)的所有關(guān)聯(lián)數(shù)據(jù)表;第一判斷子模塊,用于判斷所述關(guān)聯(lián)數(shù)據(jù)表是否存在外表引用;第一導(dǎo)入子模塊,用于在所述判斷子模塊的結(jié)果為是的情況下,將外表導(dǎo)入至初始數(shù)據(jù)模型中;第二導(dǎo)入子模塊,用于將所述關(guān)聯(lián)數(shù)據(jù)表導(dǎo)入至所述初始數(shù)據(jù)模型中,以建立所述當(dāng)前數(shù)據(jù)模型。9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述解析模塊具體包括:第一獲取子模塊,用于依據(jù)所述當(dāng)前數(shù)據(jù)模型的標(biāo)識(shí)獲取對(duì)應(yīng)的當(dāng)前數(shù)據(jù)模型;第二判斷子模塊,用于判斷所述當(dāng)前數(shù)據(jù)模型是否引用其他數(shù)據(jù)模型;第二獲取子模塊,用于在所述第二判斷子模塊的結(jié)果為是的情況下,獲取所述其他數(shù)據(jù)模型和當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;第三獲取子模塊,用于在所述第二判斷子模塊的結(jié)果為的情況下,獲取所述當(dāng)前數(shù)據(jù)模型中的所有關(guān)聯(lián)數(shù)據(jù)表作為目標(biāo)數(shù)據(jù)表;第一生成子模塊,用于將所述目標(biāo)數(shù)據(jù)表生成與所述目標(biāo)數(shù)據(jù)表對(duì)應(yīng)的第一SQL;第三判斷子模塊,用于判斷所述目標(biāo)數(shù)據(jù)表是否引用外表;第二生成子模塊,用于在所述第三判斷子模塊的結(jié)果為是的情況下,將所述外表生成與所述外表對(duì)應(yīng)的第二SQL;確定子模塊,用于將所述第二SQL,或者所述第一SQL和第二SQL作為所述當(dāng)前數(shù)據(jù)模型的當(dāng)前SQL。10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括:格式轉(zhuǎn)換模塊,用于依據(jù)當(dāng)前應(yīng)用的不同的業(yè)務(wù)場(chǎng)景對(duì)所述數(shù)據(jù)備份文件中的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換。11.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括:導(dǎo)入模塊,用于將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)。12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述導(dǎo)入模塊具體用于:在同一個(gè)事務(wù)中將所述數(shù)據(jù)備份文件按照目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)格式導(dǎo)入至所述目標(biāo)數(shù)據(jù)庫(kù)?!疚臋n編號(hào)】G06F11/14GK103678396SQ201210353330【公開(kāi)日】2014年3月26日申請(qǐng)日期:2012年9月20日優(yōu)先權(quán)日:2012年9月20日【發(fā)明者】駱楨軒申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司