專利名稱:一種元數(shù)據(jù)同步方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更具體的說是涉及一種元數(shù)據(jù)同步方法和系統(tǒng)。
背景技術(shù):
元數(shù)據(jù)是用于描述要素、數(shù)據(jù)集或數(shù)據(jù)集系列的內(nèi)容、覆蓋范圍、質(zhì)量、管理方式、 數(shù)據(jù)的所有者和數(shù)據(jù)的提供方式等有關(guān)的信息,即是用于描述數(shù)據(jù)的數(shù)據(jù),元數(shù)據(jù)可以為數(shù)據(jù)說明其元素或?qū)傩曰蚪Y(jié)構(gòu)或其相關(guān)數(shù)據(jù)等,是最小的數(shù)據(jù)單元。比如,一條職員實體信息記錄中,其中包括字段姓名(name)、年齡(age)、性別(male)等,那么name、age和male 就是元數(shù)據(jù)。元數(shù)據(jù)通常是在開發(fā)環(huán)境即源數(shù)據(jù)庫中創(chuàng)建和維護,在生產(chǎn)環(huán)境即目標數(shù)據(jù)庫中使用,如果元數(shù)據(jù)有變化需要更新時,需要在源數(shù)據(jù)庫中進行變更,然后在同步到目標數(shù)據(jù)庫中來實現(xiàn)目標數(shù)據(jù)庫中元數(shù)據(jù)的更新。現(xiàn)有的同步方式通常是將源數(shù)據(jù)庫中的元數(shù)據(jù)導出為數(shù)據(jù)庫腳本,然后將目標數(shù)據(jù)庫中描述相同對象的元數(shù)據(jù)刪除,之后在目標數(shù)據(jù)庫中執(zhí)行該數(shù)據(jù)庫腳本,重新創(chuàng)建該元數(shù)據(jù),從而實現(xiàn)元數(shù)據(jù)的同步。但是,現(xiàn)有的這種以遷移方式實現(xiàn)數(shù)據(jù)同步的方法,并沒有考慮目標數(shù)據(jù)庫中的元數(shù)據(jù)與源數(shù)據(jù)庫中的元數(shù)據(jù)是否相同。元數(shù)據(jù)相同或部分相同的情況下,仍需全部刪除目標數(shù)據(jù)庫中的元數(shù)據(jù),造成了數(shù)據(jù)資源的浪費,從而就會影響處理器的處理性能。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種元數(shù)據(jù)同步方法,解決了數(shù)據(jù)資源浪費,從而影響處理器處理性能的問題。本發(fā)明還提供了一種元數(shù)據(jù)同步系統(tǒng),用以保證上述方法在實際中的實現(xiàn)和應用。為實現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案—種元數(shù)據(jù)同步方法,分別根據(jù)源數(shù)據(jù)庫中和目標數(shù)據(jù)中的元數(shù)據(jù)描述的對象結(jié)構(gòu),分析出所述的對象結(jié)構(gòu)分別對應的源可擴展標記語言XML結(jié)構(gòu)和目標XML結(jié)構(gòu),包括根據(jù)所述源XML結(jié)構(gòu)和目標XML結(jié)構(gòu),分別將源數(shù)據(jù)庫中和目標數(shù)據(jù)庫中的元數(shù)據(jù)轉(zhuǎn)換成源XML和目標XML ;在源數(shù)據(jù)庫中將所述源XML保存為文件,并將所述文件遷移到目標數(shù)據(jù)庫中;依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點,所述差異節(jié)點表示元數(shù)據(jù)需要變更的類型,所述變更的類型包括新增、更新和/或刪除;根據(jù)所述差異節(jié)點生成對應的目標數(shù)據(jù)庫操作腳本;在目標數(shù)據(jù)庫中執(zhí)行所述目標數(shù)據(jù)庫操作腳本以實現(xiàn)目標數(shù)據(jù)庫與源數(shù)據(jù)庫中元數(shù)據(jù)的同步。優(yōu)選地,所述依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點,具體包括
采用XML Diff算法獲取所述目標XML和/或源XML所有不同的節(jié)點;從所述不同的節(jié)點中確定所述源XML相對于目標XML的差異節(jié)點。優(yōu)選地,所述依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點還包括當獲取不到差異節(jié)點時,則結(jié)束流程。優(yōu)選地,所述方法還包括將源XML標記出所述的差異節(jié)點;將目標XML和標記出差異節(jié)點的源XML顯示在用戶界面上。優(yōu)選地,所述在目標數(shù)據(jù)庫中執(zhí)行所述目標數(shù)據(jù)庫操作腳本,具體包括接收用戶在用戶界面點擊的變更操作請求;依據(jù)所述變更操作請求觸發(fā)所述目標數(shù)據(jù)庫操作腳本的執(zhí)行。優(yōu)選地,所述的源XML結(jié)構(gòu)中的節(jié)點名稱和目標XML結(jié)構(gòu)中的節(jié)點名稱分別對應元數(shù)據(jù)所描述對象結(jié)構(gòu)中的元素名稱。一種元數(shù)據(jù)同步系統(tǒng),所述系統(tǒng)包括預處理模塊,用于分別根據(jù)源數(shù)據(jù)庫中和目標數(shù)據(jù)中的元數(shù)據(jù)描述的對象結(jié)構(gòu), 分析出所述的對象結(jié)構(gòu)分別對應的源可擴展標記語言XML結(jié)構(gòu)和目標XML結(jié)構(gòu);XML生成模塊,用于根據(jù)所述源XML結(jié)構(gòu)和目標XML結(jié)構(gòu),分別將源數(shù)據(jù)庫中和目標數(shù)據(jù)庫中的元數(shù)據(jù)表示成源XML和目標XML ;XML保存模塊,用于在源數(shù)據(jù)庫中將所述源XML保存為文件,并將所述文件遷移到目標數(shù)據(jù)庫中;差異節(jié)點獲取模塊,用于依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點,所述差異節(jié)點表示元數(shù)據(jù)需要變更的類型,所述變更類型包括新增、更新和/或刪除;腳本生成模塊,用于根據(jù)所述差異節(jié)點的內(nèi)容,生成對應的數(shù)據(jù)庫操作腳本,所述的數(shù)據(jù)庫操作腳本用于變更目標數(shù)據(jù)庫中的元數(shù)據(jù);數(shù)據(jù)變更模塊,用于在目標數(shù)據(jù)庫中執(zhí)行所述目標數(shù)據(jù)庫操作腳本以實現(xiàn)目標數(shù)據(jù)庫與源數(shù)據(jù)庫中元數(shù)據(jù)的同步。優(yōu)選地,所述差異節(jié)點獲取模塊包括第一獲取模塊,用于采用XML Diff算法獲取所述目標XML和/或源XML所有不同的節(jié)點;第二獲取模塊,用于從第一獲取模塊得到的不同節(jié)點中確定所述源XML相對于目標XML的差異節(jié)點。優(yōu)選地,所述系統(tǒng)還包括差異標記模塊,用于將所述源XML標記出所述的差異節(jié)點;差異顯示模塊,用于將目標XML和標記出差異節(jié)點的源XML顯示在用戶界面上。優(yōu)選地,所述數(shù)據(jù)變更模塊包括接收請求模塊,用于接收用戶在用戶界面點擊的變更操作請求;變更觸發(fā)模塊,用于依據(jù)所述變更操作請求觸發(fā)所述目標數(shù)據(jù)庫操作腳本的執(zhí)行。
優(yōu)選地,所述系統(tǒng)還包括結(jié)束模塊,用于當差異節(jié)點獲取模塊獲取不到差異節(jié)點時,結(jié)束流程。經(jīng)由上述的技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本發(fā)明公開了一種元數(shù)據(jù)同步方法和系統(tǒng),分別根據(jù)元數(shù)據(jù)所述描述對象對應的XML (Extensible Markup Language可擴展標記語言)結(jié)構(gòu),將源數(shù)據(jù)庫中和目標數(shù)據(jù)庫中的元數(shù)據(jù)表示成兩個XML形式并進行比較,通過比較兩個XML得出差異節(jié)點,即得出需要變更的類型新增、更新或刪除。然后根據(jù)差異節(jié)點對應的具體內(nèi)容生成對應的數(shù)據(jù)庫腳本,在目標數(shù)據(jù)庫中執(zhí)行該腳本從而實現(xiàn)元數(shù)據(jù)在目標數(shù)據(jù)庫中的同步,無需刪除目標數(shù)據(jù)庫中所有元數(shù)據(jù)再重新創(chuàng)建,節(jié)約了數(shù)據(jù)資源, 從而提高了處理器的處理性能。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1為本發(fā)明一種元數(shù)據(jù)同步方法實施例一的流程圖;圖2為本發(fā)明一種元數(shù)據(jù)同步方法實施例一中XML結(jié)構(gòu)圖;圖3為本發(fā)明一種元數(shù)據(jù)同步方法實施例二的流程圖;圖4為本發(fā)明一種元數(shù)據(jù)同步方法實施例二中用戶界面顯示圖;圖5為本發(fā)明一種元數(shù)據(jù)同步系統(tǒng)實施例一的結(jié)構(gòu)圖;圖6為本發(fā)明一種元數(shù)據(jù)同步系統(tǒng)實施例二的結(jié)構(gòu)圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例公開了一種元數(shù)據(jù)同步方法和系統(tǒng),通過將源數(shù)據(jù)庫和目標數(shù)據(jù)庫中的元數(shù)據(jù)分別轉(zhuǎn)換成XML (Extensible Markup Language可擴展標記語言)形式并進行比較,通過比較兩個XML得出差異節(jié)點,即可知需要變更的類型新增、更新或刪除。根據(jù)差異節(jié)點生成對應的操作腳本,并在目標數(shù)據(jù)庫中執(zhí)行該腳本,即可實現(xiàn)目標數(shù)據(jù)庫與源數(shù)據(jù)庫中元數(shù)據(jù)的同步,無需刪除目標數(shù)據(jù)庫中所有元數(shù)據(jù)在重新創(chuàng)建,節(jié)約了數(shù)據(jù)資源,從而提高了處理器的處理性能。參考圖1,示出了本發(fā)明一種元數(shù)據(jù)同步方法實施例1的流程圖,可以包括以下步驟步驟101 分別根據(jù)源數(shù)據(jù)庫中和目標數(shù)據(jù)庫中的元數(shù)據(jù)描述的對象結(jié)構(gòu),分析出所述的對象結(jié)構(gòu)分別對應的源XML結(jié)構(gòu)和目標XML結(jié)構(gòu)。XML (Extensible Markup Language可擴展標記語言)是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標記描述數(shù)據(jù)。為了實現(xiàn)目標數(shù)據(jù)庫和源數(shù)據(jù)庫中的元數(shù)據(jù)同步,首先分別分析源數(shù)據(jù)庫和目標數(shù)據(jù)庫中的元數(shù)據(jù)描述的對象結(jié)構(gòu),對應得出相應的XML結(jié)構(gòu)。現(xiàn)以職員實體記錄表信息為例,獲取元數(shù)據(jù)所描述的記錄表信息結(jié)構(gòu)對應的XML 結(jié)構(gòu)具體為參見表1和表2,表1和表2用于來描述職員實體的結(jié)構(gòu)。表 權(quán)利要求
1.一種元數(shù)據(jù)同步方法,其特征在于,分別根據(jù)源數(shù)據(jù)庫中和目標數(shù)據(jù)中的元數(shù)據(jù)描述的對象結(jié)構(gòu),分析出所述的對象結(jié)構(gòu)分別對應的源可擴展標記語言XML結(jié)構(gòu)和目標XML 結(jié)構(gòu),所述方法包括根據(jù)所述源XML結(jié)構(gòu)和目標XML結(jié)構(gòu),分別將源數(shù)據(jù)庫中和目標數(shù)據(jù)庫中的元數(shù)據(jù)轉(zhuǎn)換成源XML和目標XML ;在源數(shù)據(jù)庫中將所述源XML保存為文件,并將所述文件遷移到目標數(shù)據(jù)庫中; 依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點,所述差異節(jié)點表示元數(shù)據(jù)需要變更的類型,所述變更的類型包括新增、更新和/或刪除; 根據(jù)所述差異節(jié)點生成對應的目標數(shù)據(jù)庫操作腳本;在目標數(shù)據(jù)庫中執(zhí)行所述目標數(shù)據(jù)庫操作腳本以實現(xiàn)目標數(shù)據(jù)庫與源數(shù)據(jù)庫中元數(shù)據(jù)的同步。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點,具體包括采用XML Diff算法獲取所述目標XML和/或源XML所有不同的節(jié)點; 從所述不同的節(jié)點中確定所述源XML相對于目標XML的差異節(jié)點。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點還包括當獲取不到差異節(jié)點時,則結(jié)束流程。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括 將源XML標記出所述的差異節(jié)點;將目標XML和標記出差異節(jié)點的源XML顯示在用戶界面上。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述在目標數(shù)據(jù)庫中執(zhí)行所述目標數(shù)據(jù)庫操作腳本,具體包括接收用戶在用戶界面點擊的變更操作請求;依據(jù)所述變更操作請求觸發(fā)所述目標數(shù)據(jù)庫操作腳本的執(zhí)行。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的源XML結(jié)構(gòu)中的節(jié)點名稱和目標 XML結(jié)構(gòu)中的節(jié)點名稱分別對應元數(shù)據(jù)所描述對象結(jié)構(gòu)中的元素名稱。
7.—種元數(shù)據(jù)同步系統(tǒng),其特征在于,所述系統(tǒng)包括預處理模塊,用于分別根據(jù)源數(shù)據(jù)庫中和目標數(shù)據(jù)中的元數(shù)據(jù)描述的對象結(jié)構(gòu),分析出所述的對象結(jié)構(gòu)分別對應的源可擴展標記語言XML結(jié)構(gòu)和目標XML結(jié)構(gòu);XML生成模塊,用于根據(jù)所述源XML結(jié)構(gòu)和目標XML結(jié)構(gòu),分別將源數(shù)據(jù)庫中和目標數(shù)據(jù)庫中的元數(shù)據(jù)表示成源XML和目標XML ;XML保存模塊,用于在源數(shù)據(jù)庫中將所述源XML保存為文件,并將所述文件遷移到目標數(shù)據(jù)庫中;差異節(jié)點獲取模塊,用于依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點,所述差異節(jié)點表示元數(shù)據(jù)需要變更的類型,所述變更類型包括新增、更新和/或刪除;腳本生成模塊,用于根據(jù)所述差異節(jié)點的內(nèi)容,生成對應的數(shù)據(jù)庫操作腳本,所述的數(shù)據(jù)庫操作腳本用于變更目標數(shù)據(jù)庫中的元數(shù)據(jù);數(shù)據(jù)變更模塊,用于在目標數(shù)據(jù)庫中執(zhí)行所述目標數(shù)據(jù)庫操作腳本以實現(xiàn)目標數(shù)據(jù)庫與源數(shù)據(jù)庫中元數(shù)據(jù)的同步。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述差異節(jié)點獲取模塊包括第一獲取模塊,用于采用XML Diff算法獲取所述目標XML和/或源XML所有不同的節(jié)占.第二獲取模塊,用于從第一獲取模塊得到的不同節(jié)點中確定所述源XML相對于目標 XML的差異節(jié)點。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括 差異標記模塊,用于將所述源XML標記出所述的差異節(jié)點;差異顯示模塊,用于將目標XML和標記出差異節(jié)點的源XML顯示在用戶界面上。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述數(shù)據(jù)變更模塊包括 接收請求模塊,用于接收用戶在用戶界面點擊的變更操作請求;變更觸發(fā)模塊,用于依據(jù)所述變更操作請求觸發(fā)所述目標數(shù)據(jù)庫操作腳本的執(zhí)行。
11.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括結(jié)束模塊,用于當差異節(jié)點獲取模塊獲取不到差異節(jié)點時,結(jié)束流程。
全文摘要
本發(fā)明提供了一種元數(shù)據(jù)同步方法和系統(tǒng),所述方法包括根據(jù)預先分析出的源XML結(jié)構(gòu)和目標XML結(jié)構(gòu),分別將源數(shù)據(jù)庫中和目標數(shù)據(jù)庫中的元數(shù)據(jù)轉(zhuǎn)換成源XML和目標XML;在源數(shù)據(jù)庫中將所述源XML保存為文件,并將所述文件遷移到目標數(shù)據(jù)庫中;依據(jù)所述目標XML和所述保存在文件中的源XML獲取差異節(jié)點,所述差異節(jié)點表示元數(shù)據(jù)需要變更的類型,所述變更的類型包括新增、更新和/或刪除;根據(jù)所述差異節(jié)點生成對應的目標數(shù)據(jù)庫操作腳本;在目標數(shù)據(jù)庫中執(zhí)行所述目標數(shù)據(jù)庫操作腳本以實現(xiàn)目標數(shù)據(jù)庫與源數(shù)據(jù)庫中元數(shù)據(jù)的同步。本發(fā)明無需刪除目標數(shù)據(jù)庫中所有元數(shù)據(jù)再重新創(chuàng)建,節(jié)約了數(shù)據(jù)資源,從而提高了處理器的處理性能。
文檔編號G06F17/30GK102467529SQ20101054040
公開日2012年5月23日 申請日期2010年11月11日 優(yōu)先權(quán)日2010年11月11日
發(fā)明者董洪兵 申請人:金蝶軟件(中國)有限公司