一種數(shù)據(jù)容災(zāi)同步的方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)容災(zāi)同步的方法及裝置,該方法包括接收源數(shù)據(jù)庫發(fā)送的日志信息,從所述日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作;將所述數(shù)據(jù)修改操作的參數(shù)綁定到與所述數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句;將所述數(shù)據(jù)修改操作語句添加到語句組中;當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行所述數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改。該方法實(shí)現(xiàn)提高數(shù)據(jù)容災(zāi)同步效率。
【專利說明】
一種數(shù)據(jù)容災(zāi)同步的方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)容災(zāi)技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)容災(zāi)同步的方法及裝置。
【背景技術(shù)】
[0002]目前,數(shù)據(jù)容災(zāi)通常包括如下部署模式:主備模式、雙主模式、跨地域主備容災(zāi)模式、異構(gòu)數(shù)據(jù)庫復(fù)制模式等。其中,雙主模式是指兩個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫都支持業(yè)務(wù)訪問,支持負(fù)載均衡,當(dāng)一個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),可以將業(yè)務(wù)切換到另一個(gè)節(jié)點(diǎn)。上述任何部署模式都需要復(fù)制源節(jié)點(diǎn)的更新事務(wù)到對(duì)端節(jié)點(diǎn),復(fù)制的方式通常有物理復(fù)制和邏輯復(fù)制,物理復(fù)制是將數(shù)據(jù)文件物理位置的修改復(fù)制到目標(biāo)節(jié)點(diǎn)同樣的位置,這種方式只適用于主備模式。邏輯復(fù)制是將源節(jié)點(diǎn)的修改操作記錄為日志信息,在目標(biāo)節(jié)點(diǎn)上以重放事務(wù)的方式完成數(shù)據(jù)同步復(fù)制。邏輯復(fù)制的處理流程比物理復(fù)制復(fù)雜的多,其處理性能與系統(tǒng)的可靠性緊密相關(guān)。
[0003]但是,現(xiàn)有數(shù)據(jù)庫雙主模式中,源數(shù)據(jù)庫在修改事務(wù)時(shí)產(chǎn)生日志信息,接收端將日志信息還原成結(jié)構(gòu)化查詢語言sql,對(duì)于每一條日志信息,均需要解析和編譯sql語句,并逐條執(zhí)行sql語句,完成事務(wù)同步,執(zhí)行的語句數(shù)目沒有限制,這種方式使得數(shù)據(jù)庫同步效率低下,即數(shù)據(jù)容災(zāi)同步效率較低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種數(shù)據(jù)容災(zāi)同步的方法及裝置,以實(shí)現(xiàn)提高數(shù)據(jù)容災(zāi)同步效率。
[0005]為解決上述技術(shù)問題,本發(fā)明提供一種數(shù)據(jù)容災(zāi)同步的方法,包括:
[0006]接收源數(shù)據(jù)庫發(fā)送的日志信息,從所述日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作;
[0007]將所述數(shù)據(jù)修改操作的參數(shù)綁定到與所述數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句;
[0008]將所述數(shù)據(jù)修改操作語句添加到語句組中;
[0009]當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行所述數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改。
[0010]優(yōu)選的,所述語句模板包括3條結(jié)構(gòu)化sql查詢語句,分別用于實(shí)現(xiàn)刪除、插入和更新功能。
[0011]優(yōu)選的,所述方法還包括:
[0012]當(dāng)所述數(shù)據(jù)修改操作的參數(shù)與語句模板不匹配時(shí),利用目標(biāo)數(shù)據(jù)庫的內(nèi)置函數(shù)調(diào)整所述語句模板,使所述數(shù)據(jù)修改操作的參數(shù)與調(diào)整后的語句模板相匹配,將所述數(shù)據(jù)修改操作的參數(shù)綁定到調(diào)整后的語句模板中,生成數(shù)據(jù)修改操作語句。
[0013]優(yōu)選的,將所述數(shù)據(jù)修改操作語句添加到語句組中,包括:
[0014]確定所述數(shù)據(jù)修改操作語句的類型;
[0015]依據(jù)所述數(shù)據(jù)修改操作語句的類型,將所述數(shù)據(jù)修改操作添加至與所述數(shù)據(jù)修改操作語句的類型相同的語句組中。
[0016]優(yōu)選的,將所述數(shù)據(jù)修改操作語句添加到語句組中之前,還包括:
[0017]利用目標(biāo)數(shù)據(jù)庫的申請函數(shù)申請所述語句組。
[0018]本發(fā)明還提供一種數(shù)據(jù)容災(zāi)同步的裝置,包括:
[0019]接收模塊,用于接收源數(shù)據(jù)庫發(fā)送的日志信息,從所述日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作;
[0020]綁定模塊,用于將所述數(shù)據(jù)修改操作的參數(shù)綁定到與所述數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句;
[0021 ]添加模塊,用于將所述數(shù)據(jù)修改操作語句添加到語句組中;
[0022]修改模塊,用于當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行所述數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改。
[0023]優(yōu)選的,所述語句模板包括3條結(jié)構(gòu)化sql查詢語句,分別用于實(shí)現(xiàn)刪除、插入和更新功能。
[0024]優(yōu)選的,所述裝置還包括:
[0025]調(diào)整模塊,用于當(dāng)所述數(shù)據(jù)修改操作的參數(shù)與語句模板不匹配時(shí),利用目標(biāo)數(shù)據(jù)庫的內(nèi)置函數(shù)調(diào)整所述語句模板,使所述數(shù)據(jù)修改操作的參數(shù)與調(diào)整后的語句模板相匹配,將所述數(shù)據(jù)修改操作的參數(shù)綁定到調(diào)整后的語句模板中,生成數(shù)據(jù)修改操作語句。
[0026]優(yōu)選的,所述添加模塊包括:
[0027]確定單元,用于確定所述數(shù)據(jù)修改操作語句的類型;
[0028]添加單元,用于依據(jù)所述數(shù)據(jù)修改操作語句的類型,將所述數(shù)據(jù)修改操作添加至與所述數(shù)據(jù)修改操作語句的類型相同的語句組中。
[0029]優(yōu)選的,所述裝置還包括:
[0030]申請模塊,用于利用目標(biāo)數(shù)據(jù)庫的申請函數(shù)申請所述語句組。
[0031]本發(fā)明所提供的一種數(shù)據(jù)容災(zāi)同步的方法及裝置,接收源數(shù)據(jù)庫發(fā)送的日志信息,從所述日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作;將所述數(shù)據(jù)修改操作的參數(shù)綁定到與所述數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句;將所述數(shù)據(jù)修改操作語句添加到語句組中;當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行所述數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改??梢?,將數(shù)據(jù)修改操作語句添加至語句組中,當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí)才執(zhí)行數(shù)據(jù)修改操作語句,如此語句組中包括的數(shù)據(jù)修改操作語句是有限的,從而有效提高源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫同步的效率,即通過在目標(biāo)庫中設(shè)置語句組,從而提升數(shù)據(jù)容災(zāi)同步效率。
【附圖說明】
[0032]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0033]圖1為本發(fā)明所提供一種數(shù)據(jù)容災(zāi)同步的方法的流程圖;
[0034]圖2為本發(fā)明所提供一種數(shù)據(jù)容災(zāi)同步的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0035]本發(fā)明的核心是提供一種數(shù)據(jù)容災(zāi)同步的方法及裝置,以實(shí)現(xiàn)提高數(shù)據(jù)容災(zāi)同步效率。
[0036]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0037]請參考圖1,圖1為本發(fā)明所提供一種數(shù)據(jù)容災(zāi)同步的方法的流程圖,該方法包括:
[0038]Sll:接收源數(shù)據(jù)庫發(fā)送的日志信息,從日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作;
[0039]S12:將數(shù)據(jù)修改操作的參數(shù)綁定到與數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句;
[0040]S13:將數(shù)據(jù)修改操作語句添加到語句組中;
[0041 ] S14:當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改。
[0042]可見,該方法將數(shù)據(jù)修改操作語句添加至語句組中,當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí)才執(zhí)行數(shù)據(jù)修改操作語句,如此語句組中包括的數(shù)據(jù)修改操作語句是有限的,從而有效提高源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫同步的效率,即通過在目標(biāo)庫中設(shè)置語句組,從而提升數(shù)據(jù)容災(zāi)同步效率。
[0043]其中,數(shù)據(jù)庫雙主模式下,在業(yè)務(wù)切換的過程中,對(duì)源數(shù)據(jù)庫所做的更新操作需要更新到目標(biāo)數(shù)據(jù)庫,具體是將源數(shù)據(jù)庫的修改操作記錄為日志信息,在目標(biāo)數(shù)據(jù)庫上以重新執(zhí)行日志信息的方式完成對(duì)目標(biāo)數(shù)據(jù)庫的同步操作。因此,接收到的源數(shù)據(jù)庫發(fā)送的日志信息,該日志信息用于表示源數(shù)據(jù)庫中的數(shù)據(jù)修改操作,目標(biāo)數(shù)據(jù)庫接收源數(shù)據(jù)庫發(fā)送的日志信息后,可將其放入目標(biāo)數(shù)據(jù)庫的緩沖區(qū)。
[0044]其中,語句模板包括3條結(jié)構(gòu)化sql查詢語句,分別用于實(shí)現(xiàn)刪除、插入和更新功會(huì)K。
[0045]基于上述方法,具體的,當(dāng)數(shù)據(jù)修改操作的參數(shù)與語句模板不匹配時(shí),利用目標(biāo)數(shù)據(jù)庫的內(nèi)置函數(shù)調(diào)整語句模板,使數(shù)據(jù)修改操作的參數(shù)與調(diào)整后的語句模板相匹配,將數(shù)據(jù)修改操作的參數(shù)綁定到調(diào)整后的語句模板中,生成數(shù)據(jù)修改操作語句。
[0046]其中,將數(shù)據(jù)修改操作語句添加到語句組中的過程具體為:確定數(shù)據(jù)修改操作語句的類型;依據(jù)數(shù)據(jù)修改操作語句的類型,將數(shù)據(jù)修改操作添加至與數(shù)據(jù)修改操作語句的類型相同的語句組中。
[0047]其中,將數(shù)據(jù)修改操作語句添加到語句組中之前,利用目標(biāo)數(shù)據(jù)庫的申請函數(shù)申請語句組。
[0048]基于上述方法,詳細(xì)的,接收源數(shù)據(jù)庫發(fā)送的日志信息,日志信息用于表示源數(shù)據(jù)庫中的數(shù)據(jù)修改操作;獲取日志信息中數(shù)據(jù)修改操作的類型和參數(shù),并將獲取的數(shù)據(jù)修改操作的參數(shù)綁定到與數(shù)據(jù)修改操作的類型對(duì)應(yīng)的語句模板中,生成數(shù)據(jù)修改操作語句;在數(shù)據(jù)修改操作的參數(shù)與語句模板不匹配時(shí),利用內(nèi)置函數(shù)調(diào)整語句模板,并將數(shù)據(jù)修改操作的參數(shù)綁定到調(diào)整后的語句模板中生成數(shù)據(jù)修改操作語句;將數(shù)據(jù)修改操作語句添加到語句組,當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),運(yùn)行數(shù)據(jù)修改操作語句,完成對(duì)目標(biāo)數(shù)據(jù)庫中相同存儲(chǔ)位置的數(shù)據(jù)的修改。如此主要通過在目標(biāo)數(shù)據(jù)庫中設(shè)置語句組,從而提高數(shù)據(jù)容災(zāi)同步效率,也就提高了數(shù)據(jù)庫同步效率,用以解決在數(shù)據(jù)容災(zāi)雙主系統(tǒng)中事務(wù)復(fù)制同步的性能瓶頸問題,從而提升事務(wù)復(fù)制同步的效率。
[0049]其中,由于數(shù)據(jù)修改操作的類型包括刪除,插入和更新三種,因此目標(biāo)數(shù)據(jù)庫包括對(duì)應(yīng)的語句模板,該語句模板包括3條結(jié)構(gòu)化sql查詢語句,3條sql語句分別用于實(shí)現(xiàn)刪除,插入和更新功能,在目標(biāo)數(shù)據(jù)庫啟動(dòng)過程中,語句模板中所包括的3條sql語句完成編譯和解析,目標(biāo)數(shù)據(jù)庫獲取數(shù)據(jù)修改操作的類型和參數(shù)后,將獲取的數(shù)據(jù)修改操作的參數(shù)綁定到與數(shù)據(jù)修改操作的類型對(duì)應(yīng)的語句模板中生成數(shù)據(jù)修改操作語句,其中數(shù)據(jù)修改操作語句形式是上述3條sql語句。
[0050]當(dāng)目標(biāo)數(shù)據(jù)庫將獲取的數(shù)據(jù)修改操作的參數(shù)綁定到對(duì)應(yīng)的語句模板中生成數(shù)據(jù)修改操作語句后,運(yùn)行數(shù)據(jù)修改操作語句,完成對(duì)目標(biāo)數(shù)據(jù)庫中相同存儲(chǔ)位置的數(shù)據(jù)的修改。其中相同存儲(chǔ)位置指的是源數(shù)據(jù)庫中數(shù)據(jù)與目標(biāo)數(shù)據(jù)庫對(duì)應(yīng)數(shù)據(jù)具有相同的表項(xiàng)標(biāo)識(shí)和字段標(biāo)識(shí)。
[0051]其中,數(shù)據(jù)修改操作的類型包括刪除、插入和修改,參數(shù)包括數(shù)據(jù)庫中表名、表中的字段名、以及字段名所對(duì)應(yīng)的參數(shù)等。將獲取的數(shù)據(jù)修改操作的參數(shù)綁定到與數(shù)據(jù)修改操作的類型對(duì)應(yīng)的語句模板中,生成數(shù)據(jù)修改操作語句之前還需要生成語句模板,從而在執(zhí)行數(shù)據(jù)修改操作語句時(shí),只需將獲得的數(shù)據(jù)修改操作的參數(shù)綁定到語句模板執(zhí)行即可。
[0052]其中,由于根據(jù)日志信息生成的數(shù)據(jù)修改操作語句可能存在數(shù)目較多的情況,因此在目標(biāo)數(shù)據(jù)庫中可以設(shè)置語句組。首先確定數(shù)據(jù)修改操作語句的類型,并根據(jù)數(shù)據(jù)修改操作語句的類型將數(shù)據(jù)修改操作語句添加到對(duì)應(yīng)的語句組。具體可以將數(shù)據(jù)修改操作語句進(jìn)行分類,并根據(jù)分類添加到對(duì)應(yīng)語句組中,其中分類方式可以為將同類型數(shù)據(jù)修改操作語句放入同一個(gè)語句組,也可以為不同類型,此處不限制分類方式。將數(shù)據(jù)修改操作語句添加至語句組可以通過gm_execute_add函數(shù)實(shí)現(xiàn),即利用gm_execute_add函數(shù)將數(shù)據(jù)修改操作語句添加到語句組中。
[0053]在目標(biāo)數(shù)據(jù)庫啟動(dòng)時(shí),目標(biāo)數(shù)據(jù)庫通過一個(gè)申請函數(shù)申請上述語句組。目標(biāo)數(shù)據(jù)庫在執(zhí)行上述的數(shù)據(jù)修改操作語句之前,首先要通過申請函數(shù)申請語句組。申請函數(shù)可以為gm_a Ilo c_group函數(shù),即利用gm_a Ilo c_group函數(shù)申請語句組。
[0054]其中,目標(biāo)數(shù)據(jù)庫為每一個(gè)語句組設(shè)置預(yù)設(shè)值,使得語句組中包括的數(shù)據(jù)修改操作語句有限,從而有效提高源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫同步的效率。并且數(shù)據(jù)庫雙主模式下,源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫都支持業(yè)務(wù)訪問,數(shù)據(jù)庫中數(shù)據(jù)以表的形式存儲(chǔ)。每一個(gè)二維表對(duì)應(yīng)一個(gè)關(guān)系,二維表中的每一行有若干個(gè)數(shù)據(jù)項(xiàng),每一列稱為一個(gè)字段。所謂數(shù)據(jù)的表項(xiàng)標(biāo)識(shí)表示的是該數(shù)據(jù)屬于哪一張表。所謂數(shù)據(jù)的字段標(biāo)識(shí)指的是該數(shù)據(jù)屬于哪一列。源數(shù)據(jù)庫的表項(xiàng)和字段與目標(biāo)數(shù)據(jù)庫的表項(xiàng)和字段存在對(duì)應(yīng)關(guān)系。同時(shí)存在對(duì)應(yīng)關(guān)系的表項(xiàng)則具有相同的表項(xiàng)標(biāo)識(shí)。存在一一對(duì)應(yīng)關(guān)系的字段則具有相同的字段標(biāo)識(shí)。因此,如果在源數(shù)據(jù)庫的一個(gè)數(shù)據(jù)與目標(biāo)數(shù)據(jù)庫中的另一個(gè)數(shù)據(jù)具有相同的表項(xiàng)標(biāo)識(shí)和字段標(biāo)識(shí),則可以確定這兩個(gè)數(shù)據(jù)具有相同的存儲(chǔ)位置。
[0055]在業(yè)務(wù)切換的過程中,對(duì)源數(shù)據(jù)庫所做的更新操作需要更新到目標(biāo)數(shù)據(jù)庫,當(dāng)確定完日志信息所涉及的源數(shù)據(jù)庫中的數(shù)據(jù)的表項(xiàng)標(biāo)識(shí)和字段標(biāo)識(shí)后,則需要對(duì)目標(biāo)數(shù)據(jù)庫中相同表項(xiàng)標(biāo)識(shí)和字段標(biāo)識(shí)的數(shù)據(jù)執(zhí)行對(duì)應(yīng)類型的數(shù)據(jù)修改操作語句。其中執(zhí)行數(shù)據(jù)修改操作語句可通過gm_eXeCute_all函數(shù)實(shí)現(xiàn),目標(biāo)數(shù)據(jù)庫執(zhí)行完一個(gè)語句組中所有的數(shù)據(jù)修改操作語句后,可以通過目標(biāo)數(shù)據(jù)庫中的初始化函數(shù)對(duì)該語句組進(jìn)行初始化,經(jīng)過初始化后的語句組可以被重復(fù)使用?;蛘呷粼撜Z句組不再被使用時(shí),可以通過目標(biāo)數(shù)據(jù)庫中的釋放函數(shù)來釋放語句組所占用的資源。其中,初始化函數(shù)形式為gm_clean_group,釋放函數(shù)形式可以為gm_free_group 0
[0056]詳細(xì)的,數(shù)據(jù)修改操作語句具體為3條sql語句,分別具有刪除,插入和更新的功會(huì)K。
[0057]3條sql語句模板分別為:
[0058](l)、Delete sql:
[0059]DELETE FROM TBL_DML WHERE A=:A AND NVL(ROffVER,0) =:ROffVER
[0060](2)、Insert sql:
[0061]INSERT INTO TBL_DML(A,B,C,D,ROffVER)VALUES(:A,:B,:C,:D,:ROffVER)
[0062](3)、Update sql:
[0063]UPDATE TBL_DML SET A = NVLFN(:A,A,:0) ,B = NVLFN(:B,B,:1),
[0064]C = NVLFN(: C, C,: 2),D = NVLFN(: D,D,: 3),ROffVER = NVLFN(: ROffVER,ROffVER,:4)
[0065]WHERE A =: A AND NVL(ROffVER,0) =:ROffVER
[0066]其中,每個(gè)表創(chuàng)建時(shí)都需創(chuàng)建主鍵,同時(shí)添加ROWVER用作兩端操作的沖突處理。NVL(R0WVER,0)功能為:如果ROWVER為NULL,則NVL函數(shù)返回O,否則返回ROWVER的值。
[0067]其中,獲取日志信息中數(shù)據(jù)修改操作的類型和參數(shù),并將獲取的數(shù)據(jù)修改操作的參數(shù)綁定到與數(shù)據(jù)修改操作的類型對(duì)應(yīng)的語句模板中,生成數(shù)據(jù)修改操作語句的過程具體包括:獲取日志信息中數(shù)據(jù)修改操作的類型和參數(shù),在數(shù)據(jù)修改操作的參數(shù)不匹配語句模板時(shí),利用內(nèi)置函數(shù)調(diào)整語句模板,并將數(shù)據(jù)修改操作的參數(shù)綁定到調(diào)整過的語句模板中生成數(shù)據(jù)修改操作語句。
[0068]其中,內(nèi)置函數(shù)具體為:NVLFN(express1nl,express1n2,val),其功能為:如果express1nlSNULL,ivalS“l(fā)”,則返回NULL。
[0069]當(dāng)val 為 “O”,則返回 express 1n2。如果express 1n I 為非NULL,則返回express1nl0
[0070]該內(nèi)置函數(shù)用于對(duì)一個(gè)字段進(jìn)行多種操作,多種操作包括:修改為新值、不修改、置空。
[0071]上述修改操作模板包括的3條sql語并不能實(shí)現(xiàn)對(duì)多個(gè)字段進(jìn)行多種操作,即數(shù)據(jù)修改操作的參數(shù)存在不匹配語句模板的情況,因此通過將用來完成更新操作的sql語句與該內(nèi)置函數(shù)結(jié)合可以實(shí)現(xiàn)對(duì)多個(gè)字段進(jìn)行多種操作,從而提升了數(shù)據(jù)容災(zāi)同步的效率。
[0072]請參考圖2,圖2為本發(fā)明所提供一種數(shù)據(jù)容災(zāi)同步的裝置的結(jié)構(gòu)示意圖,該裝置包括:
[0073]接收模塊101,用于接收源數(shù)據(jù)庫發(fā)送的日志信息,從日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作;
[0074]綁定模塊102,用于將數(shù)據(jù)修改操作的參數(shù)綁定到與數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句;
[0075]添加模塊103,用于將數(shù)據(jù)修改操作語句添加到語句組中;
[0076]修改模塊104,用于當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改。
[0077]可見,該裝置將數(shù)據(jù)修改操作語句添加至語句組中,當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí)才執(zhí)行數(shù)據(jù)修改操作語句,如此語句組中包括的數(shù)據(jù)修改操作語句是有限的,從而有效提高源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫同步的效率,即通過在目標(biāo)庫中設(shè)置語句組,從而提升數(shù)據(jù)容災(zāi)同步效率。
[0078]具體的,語句模板包括3條結(jié)構(gòu)化sql查詢語句,分別用于實(shí)現(xiàn)刪除、插入和更新功會(huì)K。
[0079]所述裝置還包括:調(diào)整模塊,用于當(dāng)數(shù)據(jù)修改操作的參數(shù)與語句模板不匹配時(shí),利用目標(biāo)數(shù)據(jù)庫的內(nèi)置函數(shù)調(diào)整語句模板,使數(shù)據(jù)修改操作的參數(shù)與調(diào)整后的語句模板相匹配,將數(shù)據(jù)修改操作的參數(shù)綁定到調(diào)整后的語句模板中,生成數(shù)據(jù)修改操作語句。
[0080]添加模塊包括:
[0081 ]確定單元,用于確定數(shù)據(jù)修改操作語句的類型;
[0082]添加單元,用于依據(jù)數(shù)據(jù)修改操作語句的類型,將數(shù)據(jù)修改操作添加至與數(shù)據(jù)修改操作語句的類型相同的語句組中。
[0083]詳細(xì)的,所述裝置還包括:申請模塊,用于利用目標(biāo)數(shù)據(jù)庫的申請函數(shù)申請語句組。需要說明的是,該裝置應(yīng)用于目標(biāo)數(shù)據(jù)庫中。
[0084]綜上,本發(fā)明所提供的一種數(shù)據(jù)容災(zāi)同步的方法及裝置,接收源數(shù)據(jù)庫發(fā)送的日志信息,從日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作;將數(shù)據(jù)修改操作的參數(shù)綁定到與數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句;將數(shù)據(jù)修改操作語句添加到語句組中;當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改。可見,將數(shù)據(jù)修改操作語句添加至語句組中,當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí)才執(zhí)行數(shù)據(jù)修改操作語句,如此語句組中包括的數(shù)據(jù)修改操作語句是有限的,從而有效提高源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫同步的效率,即通過在目標(biāo)庫中設(shè)置語句組,從而提升數(shù)據(jù)容災(zāi)同步效率。
[0085]以上對(duì)本發(fā)明所提供的一種數(shù)據(jù)容災(zāi)同步的方法及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)容災(zāi)同步的方法,其特征在于,包括: 接收源數(shù)據(jù)庫發(fā)送的日志信息,從所述日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作; 將所述數(shù)據(jù)修改操作的參數(shù)綁定到與所述數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句; 將所述數(shù)據(jù)修改操作語句添加到語句組中; 當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行所述數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改。2.如權(quán)利要求1所述的方法,其特征在于,所述語句模板包括3條結(jié)構(gòu)化sql查詢語句,分別用于實(shí)現(xiàn)刪除、插入和更新功能。3.如權(quán)利要求1所述的方法,其特征在于,還包括: 當(dāng)所述數(shù)據(jù)修改操作的參數(shù)與語句模板不匹配時(shí),利用目標(biāo)數(shù)據(jù)庫的內(nèi)置函數(shù)調(diào)整所述語句模板,使所述數(shù)據(jù)修改操作的參數(shù)與調(diào)整后的語句模板相匹配,將所述數(shù)據(jù)修改操作的參數(shù)綁定到調(diào)整后的語句模板中,生成數(shù)據(jù)修改操作語句。4.如權(quán)利要求1所述的方法,其特征在于,將所述數(shù)據(jù)修改操作語句添加到語句組中,包括: 確定所述數(shù)據(jù)修改操作語句的類型; 依據(jù)所述數(shù)據(jù)修改操作語句的類型,將所述數(shù)據(jù)修改操作添加至與所述數(shù)據(jù)修改操作語句的類型相同的語句組中。5.如權(quán)利要求1至4中任意一項(xiàng)所述的方法,其特征在于,將所述數(shù)據(jù)修改操作語句添加到語句組中之前,還包括: 利用目標(biāo)數(shù)據(jù)庫的申請函數(shù)申請所述語句組。6.一種數(shù)據(jù)容災(zāi)同步的裝置,其特征在于,包括: 接收模塊,用于接收源數(shù)據(jù)庫發(fā)送的日志信息,從所述日志信息中獲取源數(shù)據(jù)庫的數(shù)據(jù)修改操作; 綁定模塊,用于將所述數(shù)據(jù)修改操作的參數(shù)綁定到與所述數(shù)據(jù)修改操作的類型相匹配的語句模板中,生成數(shù)據(jù)修改操作語句; 添加模塊,用于將所述數(shù)據(jù)修改操作語句添加到語句組中; 修改模塊,用于當(dāng)語句組的語句數(shù)量達(dá)到預(yù)設(shè)值時(shí),在目標(biāo)數(shù)據(jù)庫中查找到與源數(shù)據(jù)庫中修改的數(shù)據(jù)具有相同存儲(chǔ)位置的數(shù)據(jù),運(yùn)行所述數(shù)據(jù)修改操作語句,完成對(duì)在目標(biāo)數(shù)據(jù)庫中查找到的數(shù)據(jù)的修改。7.如權(quán)利要求6所述的裝置,其特征在于,所述語句模板包括3條結(jié)構(gòu)化sql查詢語句,分別用于實(shí)現(xiàn)刪除、插入和更新功能。8.如權(quán)利要求6所述的裝置,其特征在于,還包括: 調(diào)整模塊,用于當(dāng)所述數(shù)據(jù)修改操作的參數(shù)與語句模板不匹配時(shí),利用目標(biāo)數(shù)據(jù)庫的內(nèi)置函數(shù)調(diào)整所述語句模板,使所述數(shù)據(jù)修改操作的參數(shù)與調(diào)整后的語句模板相匹配,將所述數(shù)據(jù)修改操作的參數(shù)綁定到調(diào)整后的語句模板中,生成數(shù)據(jù)修改操作語句。9.如權(quán)利要求6所述的裝置,其特征在于,所述添加模塊包括: 確定單元,用于確定所述數(shù)據(jù)修改操作語句的類型; 添加單元,用于依據(jù)所述數(shù)據(jù)修改操作語句的類型,將所述數(shù)據(jù)修改操作添加至與所述數(shù)據(jù)修改操作語句的類型相同的語句組中。10.如權(quán)利要求6至9中任意一項(xiàng)所述的裝置,其特征在于,還包括: 申請模塊,用于利用目標(biāo)數(shù)據(jù)庫的申請函數(shù)申請所述語句組。
【文檔編號(hào)】G06F17/30GK105912427SQ201610282532
【公開日】2016年8月31日
【申請日】2016年4月29日
【發(fā)明人】薛強(qiáng), 陳良華, 杜彥魁
【申請人】浪潮(北京)電子信息產(chǎn)業(yè)有限公司