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