專利名稱:內存數據庫數據同步的方法
技術領域:
本發明涉及實時內存數據庫系統領域,尤其涉及內存數據庫數 據同步的方法。
背景技術:
實時內存數據庫是將數據對象存儲在內存中,所有的數據訪問 及操作都在內存中完成,大大提高了系統的性能,因此在通信、控 制等領域已被廣泛使用。實時內存數據庫的功能主要體現在兩個方
面 一方面是為業務提供數據配置信息,保證業務的正常運行;另 一方面是相關數據配置變化后通過數據同步實時對巴數據分發到各 個歸屬數據庫,并通知業務進行更新,保證業務與數據的一致性。
數據同步是在配置修改后,把改變的表同步記錄到其他相關的 內存數據庫的過程,目的是保持各個內存數據庫中的數據一致,并 使改變的數據及時生效。 一舶:數據庫數據同步的方法為
1) 設計兩個進程, 一個為數據發送進程,另一個為數據接收 進程。發送進程通知接收進程準備同步的命令消息,接收 進程回應表示準備好接收同步數據。
2) 發送進程發送消息,表明當前數據同步過程需要同步的數 據表信息。接收進程回應確認,并記錄待同步的表信息。
3) 發送進程開始表數據的同步,接收進程接收表同步的數據放到內存緩沖區中。
4) 表數據發送結束。
5) 對待同步的表依次重復3)、 4)過程。
6) 發送進程發送同步結束消息,接收進程回應確認消息,同 步結束。
圖1示出了上述數據同步的常用過程。傳輸數據從發送和4妄收 緩沖區中提取和保存。如果出現異常,恢復到初始狀態,對于表數 據的傳送有三次重傳才幾會,否則同步失敗。這種同步流程對于表數 據比4交少的情況下,比較有效。但是存在如下問題
1 ) 進程功能簡單。發送進程只負責發送,接收進程只負責接 收同步凄t據。
2) 效率不高。表數據的同步傳送,采用發送一包等待確認后, 發送下一包的方法,從數據傳送的效率來看,不是最佳選 擇。另外上述同步方法只能單向同步,不能實現雙向同步。
3) 資源利用率4氐。進程的i殳計可以通過定義一個同步進程, 實現發送接收同時可以進4于的方式,減少進程的數量,節 約內存資源。
因此,需要提出一種既能節省資源,又能快速高效的實現雙向 ^t據同步的通用方法。
發明內容
為了實現上述目的,本發明提出一種內存數據庫數據的同步方 法。設計一個數據同步進程,通過在表數據包中添加發送序號和接 收序號以及數據包回應標志內容,在進程中定義發送序號,待4妄收 序號和祠4妄收確i人序號等私有變量,來實i見一次可以同時發送和4妄 收多包表數據包的方法,最大效率利用鏈路的帶寬,同步傳送數據。
該方法包括以下步驟為發送方和接收方設置同一個進程,在 它們之間建立通信連接,并且對要傳送的數據包添加包信息,在進 程中定義有多個數據包標識;發送方根據多個數據包標識對包信息 進行處理,并將經過處理的數據包發送給接收方;以及接收方接收 經過處理的數據包,記錄并保存經過處理的數據包的包信息,以及 發送接收響應。其中,多個數據包標識為發送序號、待接收序號、 以及待接收確認序號。且包信息包括發送方數據包序號、第一接收 方待發送數據包序號、以及回應標識。
在該方法中,發送方根據多個數據包標識對包信息進行處理包 括發送方根據發送序號以及待接收序號將每個要傳送的數據包的 發送方數據包序號以及第 一接收方待發送數據包序號編號。當連續 發送可同時發送的數據包或者最后一個數據包時,將回應標識設定 為真,以及當發送其它數據包時,將回應標識設定為假。
此外,在該方法中,將經過處理的數據包發送給接收方包括 當回應標識為真時,設置定時器,定義最大重發次數,并且發送可 同時發送的數據包或者最后一個數據包。如果定時器超時,重新發 送上一個回應標識^殳定為真的^:據包,并且重新i殳置定時器。如果 同一個數據包的發送次數超過最大重發次數,則同步失敗,并等待 下一次同步。另外,在該方法中,發送接收響應包括當接收到帶有是否需 要4妄收方回應的標識i殳定為真的lt:悟包時,向發送方發送帶有標識 的回應包。其中,回應包的標識包括第二接收方待發送數據包序號。 且第二接收方待發送數據包序號為連續接收到的下一個數據包的 發送方數據包序號。
通過本發明的上述方面,^是供了 一種高效可靠的內存^t據庫的 同步方法,既能節省資源,又能同時實現發送4妻收同步數據,而且 可以最大利用鏈路的帶寬。
本發明的其它特4i和優點將在隨后的i兌明書中闡述,并且,部
分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發 明的目的和其他優點可通過在所寫的說明書、權利要求書、以及附 圖中所特別指出的結構來實現和獲得。
附圖用來提供對本發明的進一步理解,并且構成說明書的 一部 分,與本發明的實施例一起用于解釋本發明,并不構成對本發明的
限制。在附圖中
圖1是數據同步的常用過程圖2是才艮據本發明的內存數據庫數據方法的過程圖3是根據本發明的數椐同步過程圖4是根據本發明的數據同步進程的狀態躍遷圖5是根據本發明的數據同步程序實現的流程圖[1],其示出的 是處理Tl, T2表數據開始發送的流程圖;圖6是根據本發明的數據同步程序實現的流程圖[2],其示出的 是表數據接收處理的流程圖;以及
圖7是根據本發明的數據同步程序實現的流程圖[3],其示出的 是RR包4妄收處理的流程圖。
具體實施例方式
以下結合附圖對本發明的優選實施例進行說明,應當理解,此 處所描述的優選實施例僅用于說明和解釋本發明,并不用于限定本 發明。
在本實施例中,提供了 一種用于內存數據庫數據的同步方法。
圖2是才艮據本發明的內存數據庫數據方法的過程圖。
根據本發明的一個實施例,如圖2所示,它包括以下步驟S202, 為發送方和接收方設置同一個進程,在它們之間建立通信連接,并 且對要傳送的數據包添加包信息,在進程中定義有多個數據包標 識;S204,發送方根據多個數據包標識對包信息進行處理,并將經 過處理的數據包發送給接收方;S206,接收方接收經過處理的數據 包,記錄并保存經過處理的數據包的包信息,以及發送接收響應。
圖3是4艮據本發明實施例的完整凄t據同步流程,表數據同步過 程貫穿在數據同步的表數據的同步過程中。
如圖3所示,根據本發明實施例的內存數據庫數據的同步方法, 包括以下步驟其中假定一次可以發送的最大數據包數為N-l,且 其中N>=2,(1 )進程中定義發送緩沖區,緩沖區大小為N個表數據包的大小。(2) 定義發送序號Vs為進程待發送下一包表數據序號, 0=<Vs<=N-l。(3) 定義接收序號Vr為進程待接收的下一包表數據序號, 0=<Vr<=N-l。(4 )定義表數據包中的待接收序號Nr為期望發送端發送的序 號,該變量同時表示接收端已經接收了所有并包括Nr-l序號的表數 據包。(5)定義表數據包中的發送序號Ns為當前數據包發送序號。(6 ) 定義確認序號Va為發送端進程待4妄收端確認的表數據 包序號,Va<=Nr<=Vs。(7)上述變量初始值為0,進程上電,數據同步異常或者鏈路 恢復時]1!武初始{直。(8 ) 4妄收回應RR包,該回應RR包包含Nr值,表明lt據才妄 收端已經接收到Nr之前的所有表數據包。(9) 定義數據包回應標志P/F,該標志位為1,表示接收端接 收到數據后需發送接收回應包RR或者表數據包。該標志位為0, 表明該凄t」梧包不需4妾收端回應。(10) 表數據包,包含Ns, Nr以及P/F比特位控制信息以及 表數據,其中P/F為1,表明需要對端回應RR[P/F為l]包。(11 )定義RetryCount為重發次數,初始值為0, T2超時重發 時加l,最大重發次凄t為M,其中M〉1。初始態時為1,進壽呈同步 異常或者表數據傳遞結束時賦初始值。
(12 )定義表凄t才居包變量TansmitTuples, AcknolodgeTuples和 TotalTuples: TansmitTuples表示已經插入到發送i爰沖區中的表凄t據 包數,AcknolodgeTuples為已經為對端接收確認的表數據包數, TotalTuples為表數據包總數。這些變量在表數據開始發送時賦值, 接收表數據包過程中更新這些值。
(13 )定義進程發送數據包定時器Tl和超時定時器T2。其中 0<NT1<T2<(N+1)T1。 Tl的長度大概為數據包從發送到被對端接收 處理的時長。Tl超時處理,4巴未發送的表數據包發送到對端,并更 新Vs變量,重置T1定時器。如果表數據已經發送完畢,清除T2 定時器。如果已經發送了N-1包數據,重置T1定時器。T2定時器 超時,如果超時超過M次,本次同步失敗,上述聲明變量置初始4直。 否則發送(Vs-l)。/oN的表數據包給對端,P/F位為1,設置T2的定 時器為Tl的時長,T2的時長也可以定義為Tl的時長,但是設置 的時間應該在P/F為1的表數據包發送時設置。T2定時器在接收到 P/F為1的RR包后,重置。Tl發送表數據包后或者Tl超時后但 是表數據包未發送完成時重置。
(14) 數據發送的過程,發送端每隔Tl時長發送不超過N-1 包表數據包,每隔N-1包數據后者末尾一包表數據包的P/F位置1, 等待對端確認。對端回應確i人后,更新發送序號Vs和確認序號Va, 重置T2定時器,繼續發送,直到表數據發送結束。如果沒有確認, T2超時處理。
(15) 表數據接收時,如果接收包為待接收的數據包,處理該 表數據包到表空間。并更新Vr。如果是錯包,根據Nr更新Va和Vs,并把待插入發送緩沖區的表數據包插入到發送緩沖區中,更新 表數據包變量。啟動數據包發送流程。如果該數據接收包P/F位為 1,發送P/FM立為1RR包。(16 ) RR數據包接收處理,根據Nr更新Va和Vs,并把待插 入發送緩沖區的表數據包插入到發送緩沖區中,更新表數據包變 量,啟動數據包發送流程。如果該數據接收包P/F位為1,重置T2 定時器。圖4是上述數據同步進程狀態的躍遷圖。數據同步進程在上電 消息后,初始化聲明的變量,然后躍遷到工作狀態,在數據同步過 程異常后,又3夭遷回初始態。表^t據同步開始后重新3夭遷到工作態。根據本發明的另一個實施例,圖5是表數據發送開始時的流程 圖,以及T1, T2超時的處理流禾呈。表發送開始流程獲取TotalTuples的數值,并置變量 TrasmitTuples和AcknolodgeTuples的4直為0。纟且織不多于N的凝:才居包 依次放到Vs開始的發送緩沖區中,并發送Vs數據包,置末尾包或者 N-l序號包的回應標志為1 。 TrasmitTuples置添加到發送緩沖區中的 數目;設置T1定時器。Vs = (Vs+l)%N,設置T2定時器。Tl超時處理流程1.如果AcknolodgeTuples等于TotalTuples,表 數據同步結束,T2定時器清除,進程到工作狀態。2.如果 TotalTuples〉AcknolodgeTuples或者Vs != (Va+N-1)。/。N,發送Vs凄t據 包纟合對端,其中Ns-Vs, Nr=Vr,重置T1定時器。Vs = (Vs+1)%N。 否則如果Vs-:(Va+N-l)。/。N,重置T1定時器。進程到工作態。T2超時處理1. RetryCounts+l,如果RetryCounts〉M,表明同 步失敗,變量初始化,進程到初始狀態。2.發送(Vs-l)。/。N序號的包給對端,P/F位為1,設置T2定時器為Tl的長度。進程到工作 態。才艮據本發明的又一個實施例,圖6為接收表凄t據的同步流程 如果Ns--Vr,表數據包處理到表空間,Vr=(Vr+l)%N。如果條件Va〈-NK二Vs不滿足,則同步錯誤,變量初始化為初 始值,進程到初始態。否則更新變量AcknolodgeTuples 4吏 AcknolodgeTuples = AcknolodgeTuples+((Nr-Va)+N)%N。如果此時表數據已經發送完畢,Tl、 T2定時器清除,并且清除 RetryCounts。進程到工作態。如果還有表數據需要傳送,如果 Va!-Nr,則把待插入的表數據包按照^^式C氣(Nr-Va)+N)。/。N, 4巴 [TrasmitTuples,TrasmitTuples+C]或者[TmsmitTuples,TotalTuples]的 數據包依次從Va添加到發送緩沖區中,對滿足TrasmitTuples。/oN-0 或者TrasmitTuples-TotalTuples的數據包,回應標志P/F位置為1;更 新TrasmitTuples-TrasmitTuples+C或者TrasmitTuples = TotalTuples; 更新Va使Va二Nr。然后,對于滿足發送條件的Vs的表數據包發送到 對端,更新Vs變量,如果P/F為1,發送RR包給對端。重置T1定時 器。進程到工作態。圖7為RR包接收處理流程。除表凄t據包處理外和圖6處理相 同。還有對于RR包的P/F為1的處理為重置T2定時器。由上可知,本發明既能節省資源,又能同時實現發送接收同步 數據,而且可以最大利用鏈路的帶寬,提供了一種高效可靠的內存 凄t據庫的同步方法。以上所述^f又為本發明的優選實施例而已,并不用于限制本發 明,對于本領域的4支術人員來i兌,本發明可以有各種更改和變化。 凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進 等,均應包含在本發明的保護范圍之內。
權利要求
1.一種內存數據庫數據的同步方法,其特征在于,包括為發送方和接收方設置同一個進程,在它們之間建立通信連接,并且對要傳送的數據包添加包信息,在所述進程中定義有多個數據包標識;所述發送方根據所述多個數據包標識對所述包信息進行處理,并將經過處理的數據包發送給所述接收方;以及所述接收方接收所述經過處理的數據包,記錄并保存所述經過處理的數據包的包信息,以及發送接收響應。
2. 根據權利要求1所述的同步方法,其特征在于,所述多個數據 包標識為發送序號、待接收序號、以及待接收確認序號。
3. 根據權利要求2所述的同步方法,其特征在于,所述包信息包 括發送方數據包序號、第一接收方待發送數據包序號、以及回 應標識。
4. 根據權利要求3所述的同步方法,其特征在于,所述發送方根 據所述多個數據包標識對所述包信息進行處理包括所述發送方4艮據所述發送序號以及所述待接收序號將每 個所述要傳送的數據包的所述發送方數據包序號以及所述第 一接收方待發送數據包序號編號。
5. 根據權利要求3所述的同步方法,其特征在于,當連續發送可 同時發送的^t據包或者最后一個^:據包時,將所述回應標識i殳 定為真,以及當發送其它數據包時,將所述回應標識設定為假。
6. 根據權利要求5所述的同步方法,其特征在于,所述將經過處 理的數據包發送給所述接收方包括當所述回應標識為真時,設置定時器,定義最大重發次 數,并且發送所述可同時發送的數據包或者所述最后一個數據 包。
7. 根據權利要求6所述的同步方法,其特征在于,如果所述定時 器超時,重新發送上一個所述回應標識i殳定為真的lt據包,并 且重新設置所述定時器。
8. 根據權利要求7所述的同步方法,其特征在于,如果同一個數 據包的發送次數超過所述最大重發次數,則同步失敗,并等待 下一次同步。
9. 根據權利要求3所述的同步方法,其特征在于,所述發送接收 響應包4舌當接收到帶有所述是否需要接收方回應的標識設定為真 的凄t據包時,向所述發送方發送帶有標識的回應包。
10. 才艮據權利要求9所述的同步方法,其特征在于,所述回應包的 標識包括第二接收方待發送數據包序號。
11. 根據權利要求10所述的同步方法,其特征在于,所述第二接 收方待發送數據包序號為連續接收到的下一個數據包的發送 方數據包序號。
全文摘要
本發明公開了一種內存數據庫數據的同步方法,它包括以下步驟為發送方和接收方設置同一個進程,在它們之間建立通信連接,并且對要傳送的數據包添加包信息,在進程中定義有多個數據包標識;發送方根據多個數據包標識對包信息進行處理,并將經過處理的數據包發送給接收方;以及接收方接收經過處理的數據包,記錄并保存經過處理的數據包的包信息,以及發送接收響應。
文檔編號H04L7/00GK101299710SQ20071010157
公開日2008年11月5日 申請日期2007年4月30日 優先權日2007年4月30日
發明者胡民鋒 申請人:中興通訊股份有限公司