專利名稱:一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊和計算機(jī)領(lǐng)域,特別是涉及通訊和計算機(jī)領(lǐng)域中一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法和裝置。
背景技術(shù):
呼叫中心(Call Center)是指以電話接入為主的呼叫響應(yīng)中心,它為用戶提供各種電話響應(yīng)服務(wù)。呼叫中心發(fā)展到今天,已能夠為客戶提供語音、傳真、eMail(電子郵件)、Internet(互聯(lián)網(wǎng))接入等,向用戶提供全方位的服務(wù)。隨著呼叫中心規(guī)模和業(yè)務(wù)量的發(fā)展,很多模塊均需要頻繁快速地訪問數(shù)據(jù)庫,商用數(shù)據(jù)庫的查詢性能可能不滿足這部分模塊的實時快速訪問要求,部分模塊頻繁的或大數(shù)據(jù)量的數(shù)據(jù)庫訪問,使得數(shù)據(jù)庫性能下降,造成整個呼叫中心的性能下降,因此在呼叫中心中使用內(nèi)存數(shù)據(jù)庫系統(tǒng)已經(jīng)成為一種趨勢。對于部分需要頻繁快速訪問的數(shù)據(jù),可從商用數(shù)據(jù)庫中同步到內(nèi)存數(shù)據(jù)庫中,基于內(nèi)存數(shù)據(jù)庫基礎(chǔ)上作查詢、數(shù)據(jù)加工處理等。
對于內(nèi)存數(shù)據(jù)庫數(shù)據(jù)的同步,較好的一種方法是專利文獻(xiàn)01139144.8(中國專利公開號CN 1426244A)中采用的主備內(nèi)存區(qū)方式,應(yīng)用只訪問內(nèi)存主內(nèi)存區(qū),新的數(shù)據(jù)同步到備內(nèi)存區(qū),當(dāng)同步完成后,立即切換主備區(qū),應(yīng)用就可以訪問新的內(nèi)存區(qū),新的數(shù)據(jù)繼續(xù)同步到備內(nèi)存區(qū)。這種方式能夠快速地處理數(shù)據(jù)同步。
但是這種方法并不完全適用于基于查詢事務(wù)的內(nèi)存數(shù)據(jù)庫的同步,基于查詢事務(wù)的內(nèi)存數(shù)據(jù)庫存在兩個重要特性,一個是并發(fā)性,指在內(nèi)存庫上存在并發(fā)的連續(xù)的查詢事務(wù),一個是完整性,指一個查詢事務(wù)的查詢可以包含多張表的數(shù)據(jù),多張表的數(shù)據(jù)應(yīng)該是一致的。在內(nèi)存庫上存在并發(fā)的連續(xù)的查詢事務(wù),因此備內(nèi)存數(shù)據(jù)庫完成刷新后不會等待主內(nèi)存庫上的查詢事務(wù)全部完成,就會強(qiáng)制切換主備內(nèi)存庫,完成主備內(nèi)存庫倒換,此時仍然有部分查詢事務(wù)未完成,它們現(xiàn)在所處的位置位于備內(nèi)存庫中,當(dāng)新的數(shù)據(jù)同步到備內(nèi)存庫中時,就會破壞這些查詢事務(wù)的數(shù)據(jù)完整性。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法和裝置,解決現(xiàn)有技術(shù)查詢事務(wù)不能保證完整性和數(shù)據(jù)一致性的問題。
為達(dá)到上述目的,本發(fā)明提供了一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特點(diǎn)在于,各內(nèi)存數(shù)據(jù)庫具有主用、備用和留守三種狀態(tài),所有的數(shù)據(jù)同步都在處于備用狀態(tài)的內(nèi)存數(shù)據(jù)庫上進(jìn)行;備用狀態(tài)的內(nèi)存數(shù)據(jù)庫上的數(shù)據(jù)同步完成后,進(jìn)行一次切換,原來處于主用狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為留守狀態(tài),原來處于備用狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為主用狀態(tài),所有的新的查詢事務(wù)都在處于主用狀態(tài)的內(nèi)存數(shù)據(jù)庫上執(zhí)行,切換時未完成的查詢事務(wù)在處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫上執(zhí)行;處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫上的查詢事務(wù)執(zhí)行完后,進(jìn)行二次切換,處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為備用狀態(tài)。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特點(diǎn)在于,所述各內(nèi)存數(shù)據(jù)庫是通過指針確定為所述主用、備用或留守狀態(tài)。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特點(diǎn)在于,所述內(nèi)存數(shù)據(jù)庫為兩個,且所述兩個內(nèi)存數(shù)據(jù)庫中的一個處于主用狀態(tài),另一個處于備用或留守狀態(tài)。
為了更好的實現(xiàn)本發(fā)明的目的,本發(fā)明又提供了一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,利用數(shù)據(jù)加載模塊和浮動指針管理模塊將商用數(shù)據(jù)庫的數(shù)據(jù)同步到兩個內(nèi)存數(shù)據(jù)庫,其特點(diǎn)在于,包括如下步驟步驟一、設(shè)置浮動指針管理模塊使其通過設(shè)置三種不同指針指定內(nèi)存數(shù)據(jù)庫的工作狀態(tài);步驟二、數(shù)據(jù)加載模塊向浮動指針管理模塊申請備用內(nèi)存數(shù)據(jù)庫的地址,得到備用內(nèi)存數(shù)據(jù)庫地址后,開始同步新數(shù)據(jù)到備用內(nèi)存數(shù)據(jù)庫;步驟三、數(shù)據(jù)加載模塊判斷同步是否正確完成,是則執(zhí)行步驟五,否則執(zhí)行步驟四;步驟四、同步失敗,忽略本次同步,結(jié)束;步驟五、向浮動指針管理模塊發(fā)出通知消息;浮動指針管理模塊進(jìn)行一次切換,將原來的備份內(nèi)存數(shù)據(jù)庫指定為主用內(nèi)數(shù)據(jù)存庫,并且同時將原來的主用內(nèi)數(shù)據(jù)存庫指定為留守內(nèi)存數(shù)據(jù)庫;新的查詢事務(wù)在主內(nèi)存數(shù)據(jù)庫上執(zhí)行,原有的未完成的查詢事務(wù)繼續(xù)在留守內(nèi)存數(shù)據(jù)庫上執(zhí)行;步驟六、當(dāng)留守內(nèi)存數(shù)據(jù)庫上的所有的查詢事務(wù)都完成后,向浮動指針管理模塊發(fā)出通知消息,浮動指針管理模塊進(jìn)行二次切換,將留守內(nèi)存數(shù)據(jù)庫指定為備用內(nèi)存數(shù)據(jù)庫。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特點(diǎn)在于,在步驟一中所述的指針為主用內(nèi)存數(shù)據(jù)庫指針、備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特點(diǎn)在于,在所述步驟一中,所述內(nèi)存數(shù)據(jù)庫中的一個為主用內(nèi)存數(shù)據(jù)庫,另一個為備用內(nèi)存數(shù)據(jù)庫或留守內(nèi)存數(shù)據(jù)庫。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特點(diǎn)在于,所述備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針在同一時刻只有一個有效,另外一個指向為空。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特點(diǎn)在于,所述主用內(nèi)存數(shù)據(jù)庫指針、備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針設(shè)置在所述浮動指針管理模塊的維護(hù)信息塊中。
為了更好的實現(xiàn)本發(fā)明的目的,本發(fā)明還提供了一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的裝置,連接商用數(shù)據(jù)庫,其特點(diǎn)在于,包括浮動指針管理模塊、第一內(nèi)存數(shù)據(jù)庫、第二內(nèi)存數(shù)據(jù)庫和數(shù)據(jù)加載模塊;浮動指針管理模塊通過指針,將兩個內(nèi)存數(shù)據(jù)庫分別指定為主用內(nèi)存數(shù)據(jù)庫、備用內(nèi)存數(shù)據(jù)庫或留守內(nèi)存數(shù)據(jù)庫;數(shù)據(jù)加載模塊連接商用數(shù)據(jù)庫和浮動指針管理模塊,用于將數(shù)據(jù)同步到備用內(nèi)存數(shù)據(jù)庫;數(shù)據(jù)加載模塊完成數(shù)據(jù)同步后,浮動指針管理模塊進(jìn)行一次切換,將原來的備份內(nèi)存數(shù)據(jù)庫指定為主用內(nèi)數(shù)據(jù)存庫,并且同時將原來的主用內(nèi)數(shù)據(jù)存庫指定為留守內(nèi)存數(shù)據(jù)庫;新的查詢事務(wù)在主內(nèi)存數(shù)據(jù)庫上執(zhí)行,原有的未完成的查詢事務(wù)繼續(xù)在留守內(nèi)存數(shù)據(jù)庫上執(zhí)行;當(dāng)留守內(nèi)存數(shù)據(jù)庫上的所有的查詢事務(wù)都完成后,浮動指針管理模塊進(jìn)行二次切換,將留守內(nèi)存數(shù)據(jù)庫指定為備用內(nèi)存數(shù)據(jù)庫。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的裝置,其特點(diǎn)在于,所述浮動指針管理模塊中包括一個維護(hù)信息塊,所述指針設(shè)置在所述維護(hù)信息塊中。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的裝置,其特點(diǎn)在于,所述指針包括主用內(nèi)存數(shù)據(jù)庫指針、備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針。
上述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的裝置,其特點(diǎn)在于,所述備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針在同一時刻只有一個有效,另外一個指向為空。
本發(fā)明的技術(shù)效果在于
本發(fā)明提供的內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法和裝置,采用內(nèi)存數(shù)據(jù)庫二次切換的技術(shù),各內(nèi)存數(shù)據(jù)庫具有主用、備用和留守三種狀態(tài)。所有的新的查詢事務(wù)都在主內(nèi)存庫上執(zhí)行,數(shù)據(jù)同步在備用數(shù)據(jù)庫上進(jìn)行,而在切換時未完成的查詢事務(wù)在留守數(shù)據(jù)庫上執(zhí)行。利用本發(fā)明的二次切換方法,不論在查詢事務(wù)執(zhí)行期間是否發(fā)生了內(nèi)存數(shù)據(jù)庫的狀態(tài)切換,均能保證查詢事務(wù)的完整性,從而本發(fā)明能夠保證內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)時,所有的查詢事務(wù)都能保證完整性和數(shù)據(jù)一致性。
圖1是本發(fā)明的數(shù)據(jù)同步的模塊示意圖;圖2是本發(fā)明的數(shù)據(jù)同步的過程示意圖;圖3A、3B、3C是本發(fā)明的一個具體例子的分析示意圖。
具體實施例方式
下面結(jié)合附圖和實施例詳細(xì)說明本發(fā)明的方法。
如圖1所示,浮動指針管理模塊100具有地址維護(hù)信息塊,維護(hù)信息塊中有主用內(nèi)存數(shù)據(jù)庫指針、備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針,分別指向內(nèi)存數(shù)據(jù)庫A101和內(nèi)存數(shù)據(jù)庫B102的地址。內(nèi)存數(shù)據(jù)庫A101和內(nèi)存數(shù)據(jù)庫B102不能同時為主內(nèi)存數(shù)據(jù)庫,當(dāng)其中一個為主內(nèi)存數(shù)據(jù)庫(即處于主用狀態(tài)),另一個內(nèi)存數(shù)據(jù)庫只能作備用數(shù)據(jù)庫或留守數(shù)據(jù)庫。因此備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針同一時刻只有一個有效,另外一個指向為空。浮動指針管理模塊100通過數(shù)據(jù)加載模塊103連接商用數(shù)據(jù)庫104。
如圖2所示,本發(fā)明的數(shù)據(jù)同步的過程包括如下步驟步驟201、浮動指針管理模塊具有地址維護(hù)信息塊,維護(hù)信息塊中有主用內(nèi)存數(shù)據(jù)庫指針、備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針,分別指向內(nèi)存數(shù)據(jù)庫A和內(nèi)存數(shù)據(jù)庫B的地址。
步驟202、數(shù)據(jù)加載模塊向浮動指針管理模塊申請備內(nèi)存數(shù)據(jù)庫地址,得到備用內(nèi)存數(shù)據(jù)庫地址后,開始同步新的數(shù)據(jù)數(shù)據(jù)到備內(nèi)存庫。
步驟203、判斷同步加載是否成功,是則執(zhí)行步驟205,否則執(zhí)行步驟204。
步驟204、同步?jīng)]有完成,忽略本次同步,同步失敗。
步驟205、同步完成且沒有錯誤,向浮動指針管理模塊發(fā)出通知消息。浮動指針管理模塊進(jìn)行一次切換,備內(nèi)存數(shù)據(jù)庫切入主用狀態(tài),并且同時將原來的主內(nèi)數(shù)據(jù)存庫切入留守狀態(tài)。新的查詢事務(wù)在主內(nèi)存數(shù)據(jù)庫上執(zhí)行,原有的未完成的查詢事務(wù)繼續(xù)在留守內(nèi)存數(shù)據(jù)庫上執(zhí)行。
步驟206、當(dāng)留守內(nèi)存數(shù)據(jù)庫上的所有的查詢事務(wù)都完成后,向浮動指針管理模塊發(fā)出通知消息,浮動指針管理模塊進(jìn)行二次切換,將留守內(nèi)存數(shù)據(jù)庫切入備用內(nèi)存數(shù)據(jù)庫。
步驟207、數(shù)據(jù)同步成功。
對于數(shù)據(jù)加載模塊103來說,需要得到當(dāng)前的備用內(nèi)存庫指針指向的地址。數(shù)據(jù)加載模塊向浮動指針管理模塊申請該地址,浮動指針管理模塊根據(jù)當(dāng)前的備用內(nèi)存數(shù)據(jù)庫指針取出內(nèi)存庫地址。
如果當(dāng)前內(nèi)存數(shù)據(jù)庫A和內(nèi)存數(shù)據(jù)庫B都不處于備用狀態(tài),備用內(nèi)存數(shù)據(jù)庫指針指向為空,則無法取出地址,數(shù)據(jù)加載模塊暫停加載。如果能夠得到該地址,數(shù)據(jù)加載模塊開始從商用數(shù)據(jù)庫同步到該內(nèi)存數(shù)據(jù)庫上。當(dāng)數(shù)據(jù)加載完成后,向浮動地址管理模塊發(fā)送消息,浮動地址管理模塊進(jìn)行一次切換,使主用內(nèi)存數(shù)據(jù)庫的狀態(tài)變?yōu)榱羰貭顟B(tài),如果此時在原主用內(nèi)存數(shù)據(jù)庫上的查詢事務(wù)未完成,就會隨之在留守內(nèi)存數(shù)據(jù)庫上繼續(xù)查詢,同時備用內(nèi)存數(shù)據(jù)庫的狀態(tài)變?yōu)橹饔茫瑫r各指針的指向分別發(fā)生改變。
留守內(nèi)存數(shù)據(jù)庫指針指向的內(nèi)存數(shù)據(jù)庫處于留守狀態(tài),既不能同步數(shù)據(jù),也不能提供給新的查詢事務(wù)使用。當(dāng)留守內(nèi)存數(shù)據(jù)庫上的原有的查詢事務(wù)完成后,向浮動地址管理模塊發(fā)送消息,浮動地址管理模塊進(jìn)行二次切換,使得留守數(shù)據(jù)庫的狀態(tài)變?yōu)閭溆?,同時備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針的指向分別發(fā)生改變。
對于查詢事務(wù)來說,在查詢開始時,首先向浮動指針管理模塊申請得到當(dāng)前主內(nèi)存數(shù)據(jù)庫指針指向的地址,然后再此地址上開始查詢事務(wù),如果在查詢過程中所在的數(shù)據(jù)庫發(fā)生了切換,進(jìn)入了留守狀態(tài),對查詢事務(wù)不會產(chǎn)生影響,查詢事務(wù)仍然在此內(nèi)存數(shù)據(jù)庫地址上進(jìn)行查詢,直到查詢完成。
請參閱圖3A、圖3B和圖3C,它是一個具體案例處理流程?,F(xiàn)在以呼叫中心的CTIServer模塊301向數(shù)據(jù)查詢和鑒權(quán)模塊302(Auserver)請求對操作員登陸的鑒權(quán)認(rèn)證為例,來說明如何利用二次切換保證該查詢事務(wù)的完整性。
步驟1呼叫中心系統(tǒng)管理模塊303(ZXCCMAN)修改了多個表的數(shù)據(jù),修改的數(shù)據(jù)寫入了商用數(shù)據(jù)庫。
步驟2ZXCCMAN需要通知AUserver模塊重新同步商用數(shù)據(jù)庫中的數(shù)據(jù)。ZXCCMAN向AUServer模塊的數(shù)據(jù)加載請求接口發(fā)送消息。
步驟3數(shù)據(jù)加載請求接口通知數(shù)據(jù)加載管理對象,數(shù)據(jù)加載管理對象開始數(shù)據(jù)同步流程。
步驟4數(shù)據(jù)加載管理對象向浮動指針申請備用內(nèi)存庫地址,由于此時備內(nèi)存指針指向的是內(nèi)存數(shù)據(jù)庫B,因此數(shù)據(jù)加載管理對象得到內(nèi)存數(shù)據(jù)庫B的地址。
步驟5數(shù)據(jù)加載管理對象從數(shù)據(jù)庫中提取表的數(shù)據(jù)步驟6數(shù)據(jù)加載管理對象完成了內(nèi)存數(shù)據(jù)庫中表f1,f2的數(shù)據(jù)同步,并開始表f3的同步。
步驟7假設(shè)此時CTIServer向AUserver發(fā)送對操作員的登陸進(jìn)行鑒權(quán)認(rèn)證的請求,請求提交到AUserver的查詢和鑒權(quán)接口。
步驟8查詢和鑒權(quán)接口向浮動指針申請主用內(nèi)存庫地址,由于此時備內(nèi)存指針指向的是內(nèi)存數(shù)據(jù)庫A,因此數(shù)據(jù)加載管理對象得到內(nèi)存數(shù)據(jù)庫A的地址。
步驟9查詢和鑒權(quán)接口將鑒權(quán)請求數(shù)據(jù)和內(nèi)存數(shù)據(jù)庫A的地址傳遞給鑒權(quán)函數(shù)庫。
步驟10鑒權(quán)函數(shù)調(diào)用操作員登陸認(rèn)證函數(shù),該函數(shù)需要訪問多個內(nèi)存數(shù)據(jù)庫表,包括表f2,f3?,F(xiàn)在認(rèn)證函數(shù)開始訪問內(nèi)存數(shù)據(jù)庫A的表f2。
步驟11此時數(shù)據(jù)庫完成了對內(nèi)存數(shù)據(jù)庫B的同步,通知浮動指針管理對象,浮動指針管理進(jìn)行一次切換內(nèi)存數(shù)據(jù)庫指針。主庫指針指向內(nèi)存數(shù)據(jù)庫B,備庫指針指向空(NULL),留守庫指針指向內(nèi)存數(shù)據(jù)庫A。
步驟12認(rèn)證函數(shù)仍然在內(nèi)存數(shù)據(jù)庫A查詢表f3。
步驟13,14,15即使此時有同步數(shù)據(jù)庫的請求發(fā)到數(shù)據(jù)加載管理對象,由于此時備庫指針指向NULL,此時同步數(shù)據(jù)不能進(jìn)行。
步驟16,17認(rèn)證函數(shù)完成在內(nèi)存數(shù)據(jù)庫A上的查詢向CTIServer返回結(jié)果。
步驟18當(dāng)內(nèi)存數(shù)據(jù)庫A上所有的查詢事務(wù)執(zhí)行完后,通知浮動指針管理對象,進(jìn)行二次切換內(nèi)存數(shù)據(jù)庫指針。備庫指針指向內(nèi)存數(shù)據(jù)庫A,留守庫指針指向空(NULL)。由于備庫指針現(xiàn)在不為空,數(shù)據(jù)加載管理對象可以再次開始數(shù)據(jù)同步流程。
通過以上分析,通過使用內(nèi)存數(shù)據(jù)庫的二次切換方法保證了查詢事務(wù)的完整性。不論在查詢事務(wù)執(zhí)行期間是否發(fā)生了內(nèi)存數(shù)據(jù)庫的狀態(tài)切換,均能保證查詢事務(wù)的完整性。并且上述操作都是內(nèi)存中指針指向的改變和狀態(tài)標(biāo)記的改變,不會影響系統(tǒng)效率。
以上所述僅為本發(fā)明的較佳實施例,并非用來限定本發(fā)明的實施范圍;凡是依本發(fā)明所作的等效變化與修改,都被本發(fā)明的專利范圍所涵蓋。
權(quán)利要求
1.一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特征在于,各內(nèi)存數(shù)據(jù)庫具有主用、備用和留守三種狀態(tài),所有的數(shù)據(jù)同步都在處于備用狀態(tài)的內(nèi)存數(shù)據(jù)庫上進(jìn)行;備用狀態(tài)的內(nèi)存數(shù)據(jù)庫上的數(shù)據(jù)同步完成后,進(jìn)行一次切換,原來處于主用狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為留守狀態(tài),原來處于備用狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為主用狀態(tài),所有的新的查詢事務(wù)都在處于主用狀態(tài)的內(nèi)存數(shù)據(jù)庫上執(zhí)行,切換時未完成的查詢事務(wù)在處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫上執(zhí)行;處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫上的查詢事務(wù)執(zhí)行完后,進(jìn)行二次切換,處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為備用狀態(tài)。
2.根據(jù)權(quán)利要求1所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特征在于,所述各內(nèi)存數(shù)據(jù)庫是通過指針確定為所述主用、備用或留守狀態(tài)。
3.根據(jù)權(quán)利要求2所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特征在于,所述內(nèi)存數(shù)據(jù)庫為兩個,且所述兩個內(nèi)存數(shù)據(jù)庫中的一個處于主用狀態(tài),另一個處于備用或留守狀態(tài)。
4.一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,用于利用數(shù)據(jù)加載模塊和浮動指針管理模塊將商用數(shù)據(jù)庫的數(shù)據(jù)同步到至少兩個內(nèi)存數(shù)據(jù)庫,其特征在于,包括如下步驟步驟一、設(shè)置浮動指針管理模塊使其通過設(shè)置三種不同指針指定內(nèi)存數(shù)據(jù)庫的工作狀態(tài);步驟二、數(shù)據(jù)加載模塊向浮動指針管理模塊申請備用內(nèi)存數(shù)據(jù)庫的地址,得到備用內(nèi)存數(shù)據(jù)庫地址后,開始同步新數(shù)據(jù)到備用內(nèi)存數(shù)據(jù)庫;步驟三、數(shù)據(jù)加載模塊判斷同步是否正確完成,是則執(zhí)行步驟五,否則執(zhí)行步驟四;步驟四、同步失敗,忽略本次同步,結(jié)束;步驟五、向浮動指針管理模塊發(fā)出通知消息;浮動指針管理模塊進(jìn)行一次切換,將原來的備份內(nèi)存數(shù)據(jù)庫指定為主用內(nèi)數(shù)據(jù)存庫,并且同時將原來的主用內(nèi)數(shù)據(jù)存庫指定為留守內(nèi)存數(shù)據(jù)庫;新的查詢事務(wù)在主內(nèi)存數(shù)據(jù)庫上執(zhí)行,原有的未完成的查詢事務(wù)繼續(xù)在留守內(nèi)存數(shù)據(jù)庫上執(zhí)行;步驟六、當(dāng)留守內(nèi)存數(shù)據(jù)庫上的所有的查詢事務(wù)都完成后,向浮動指針管理模塊發(fā)出通知消息,浮動指針管理模塊進(jìn)行二次切換,將留守內(nèi)存數(shù)據(jù)庫指定為備用內(nèi)存數(shù)據(jù)庫。
5.根據(jù)權(quán)利要求4所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特征在于,在步驟一中所述的指針為主用內(nèi)存數(shù)據(jù)庫指針、備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針。
6.根據(jù)權(quán)利要求4或5所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特征在于,在所述步驟一中,所述內(nèi)存數(shù)據(jù)庫中的一個為主用內(nèi)存數(shù)據(jù)庫,另一個為備用內(nèi)存數(shù)據(jù)庫或留守內(nèi)存數(shù)據(jù)庫。
7.根據(jù)權(quán)利要求5所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特征在于,所述備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針在同一時刻只有一個有效,另外一個指向為空。
8.根據(jù)權(quán)利要求5或7所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,其特征在于,所述主用內(nèi)存數(shù)據(jù)庫指針、備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針設(shè)置在所述浮動指針管理模塊的維護(hù)信息塊中。
9.一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的裝置,連接商用數(shù)據(jù)庫,其特征在于,包括浮動指針管理模塊、第一內(nèi)存數(shù)據(jù)庫、第二內(nèi)存數(shù)據(jù)庫和數(shù)據(jù)加載模塊;浮動指針管理模塊通過指針,將兩個內(nèi)存數(shù)據(jù)庫分別指定為主用內(nèi)存數(shù)據(jù)庫、備用內(nèi)存數(shù)據(jù)庫或留守內(nèi)存數(shù)據(jù)庫;數(shù)據(jù)加載模塊連接商用數(shù)據(jù)庫和浮動指針管理模塊,用于將數(shù)據(jù)同步到備用內(nèi)存數(shù)據(jù)庫;數(shù)據(jù)加載模塊完成數(shù)據(jù)同步后,浮動指針管理模塊進(jìn)行一次切換,將原來的備份內(nèi)存數(shù)據(jù)庫指定為主用內(nèi)數(shù)據(jù)存庫,并且同時將原來的主用內(nèi)數(shù)據(jù)存庫指定為留守內(nèi)存數(shù)據(jù)庫;新的查詢事務(wù)在主內(nèi)存數(shù)據(jù)庫上執(zhí)行,原有的未完成的查詢事務(wù)繼續(xù)在留守內(nèi)存數(shù)據(jù)庫上執(zhí)行;當(dāng)留守內(nèi)存數(shù)據(jù)庫上的所有的查詢事務(wù)都完成后,浮動指針管理模塊進(jìn)行二次切換,將留守內(nèi)存數(shù)據(jù)庫指定為備用內(nèi)存數(shù)據(jù)庫。
10.根據(jù)權(quán)利要求9所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的裝置,其特征在于,所述浮動指針管理模塊中包括一個維護(hù)信息塊,所述指針設(shè)置在所述維護(hù)信息塊中。
11.根據(jù)權(quán)利要求10所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的裝置,其特征在于,所述指針包括主用內(nèi)存數(shù)據(jù)庫指針、備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針。
12.根據(jù)權(quán)利要求11所述內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的裝置,其特征在于,所述備用內(nèi)存數(shù)據(jù)庫指針和留守內(nèi)存數(shù)據(jù)庫指針在同一時刻只有一個有效,另外一個指向為空。
全文摘要
本發(fā)明公開了一種內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)的方法,各內(nèi)存數(shù)據(jù)庫具有主用、備用和留守三種狀態(tài),所有的數(shù)據(jù)同步都在處于備用狀態(tài)的內(nèi)存數(shù)據(jù)庫上進(jìn)行;備用狀態(tài)的內(nèi)存數(shù)據(jù)庫上的數(shù)據(jù)同步完成后,進(jìn)行一次切換,原來處于主用狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為留守狀態(tài),原來處于備用狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為主用狀態(tài),所有的新的查詢事務(wù)都在處于主用狀態(tài)的內(nèi)存數(shù)據(jù)庫上執(zhí)行,切換時未完成的查詢事務(wù)在處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫上執(zhí)行;處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫上的查詢事務(wù)執(zhí)行完后,進(jìn)行二次切換,處于留守狀態(tài)的內(nèi)存數(shù)據(jù)庫切換為備用狀態(tài)。本發(fā)明利用二次切換方法,內(nèi)存數(shù)據(jù)庫同步數(shù)據(jù)時,所有的查詢事務(wù)都能保證完整性和數(shù)據(jù)一致性。
文檔編號G06F11/14GK1737768SQ20041000947
公開日2006年2月22日 申請日期2004年8月20日 優(yōu)先權(quán)日2004年8月20日
發(fā)明者游波, 何兵, 周濤, 鄧宇 申請人:中興通訊股份有限公司