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