[發明專利]復制數據庫環境下保持數據一致性的方法和系統無效
| 申請號: | 200710111966.2 | 申請日: | 2007-06-20 |
| 公開(公告)號: | CN101329670A | 公開(公告)日: | 2008-12-24 |
| 發明(設計)人: | 廖國瓊;周雷 | 申請(專利權)人: | 諾基亞西門子通信公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30;H04L29/08 |
| 代理公司: | 中國專利代理(香港)有限公司 | 代理人: | 劉杰;劉春元 |
| 地址: | 芬蘭*** | 國省代碼: | 芬蘭;FI |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 復制 數據庫 環境 保持 數據一致性 方法 系統 | ||
技術領域
本發明涉及數據庫技術領域,特別是涉及一種在復制數據庫環境下保持數據一致性的方法和系統。
背景技術
為了支持各種數據無關(data-less)應用,即數據庫層和應用層分離,通常需要提供具有高可用性服務的可靠架構,如三層架構。
三層架構包括應用客戶端(AC)、數據庫前端(DB-FE)和數據庫后端(DB-BE)??蛻舳擞糜谙驍祿烨岸税l起請求。為了負載均衡和冗余性考慮,客戶端可以連接到一個或者多個數據庫前端。數據庫前端接收來自于客戶端的請求,將該請求路由到數據庫后端,并接收由數據庫后端返回的請求結果,然后將請求結果再回傳給用客戶端,其中請求結果既可以是成功的請求結果,也可以是失敗的請求結果。數據庫后端用于保存用戶數據,執行來自于數據庫前端的操作請求,并且將執行結果/響應返回到數據庫前端。同樣,為了冗余性考慮,多個數據庫后端可以組成集群(cluster)。組成集群的目的是為了保證系統的高可用性。一個集群中所有數據庫后端保持數據相互復制的關系,這樣可保證一個數據庫后端發生故障時,該集群中的其它數據庫后端仍能提供服務。集群中各數據庫后端之間的協同由復制管理器負責,以協調集群內數據的一致性。一個集群的數據庫后端既可以放置在一起,也可以在地理上間隔較遠。
由于硬件節點故障、軟件故障或連接錯誤等失敗原因,上述架構中的組成元件可能會出現故障。為了保證某個數據庫后端出現故障時數據庫前端仍然能夠存取一致性數據,位于同一集群中各個數據庫后端中的數據應嚴格保持同步復制。即只要某一數據庫后端中的數據產生了更新,那么該集群中所有數據庫后端中的相應數據也應同時更新,從而保證數據一致性。廣而言之,同步復制的目的就是保證集群中的所有單元具有相同的數據值。
在現有技術中,如果某一個單元的數據不能成功更新,那么為了保證集群中所有單元的數據一致性,該更新請求將會被拒絕。如果這種更新失敗較為頻繁,則對系統的高可用性會帶來負面的影響。
為了保證數據一致性,現有技術中有一種兩階段提交(2PC)協議。2PC協議是保證分布式數據庫一致性和原子性的標準協議。2PC協議是一種在事務管理器和所有加入到事務中的資源之間的協議,確保了要么所有的資源管理器都提交了事務,要么所有的資源管理器都撤銷了事務。在這個協議中,當應用程序請求提交事務時,事務管理器向所有涉及的資源管理器發出準備請求。每個資源都會依次發送一個應答,指出是否準備好提交它的操作。只有當所有的資源管理器都準備好提交以后,事務管理器才會向所有的資源管理器發出提交命令。否則,事務管理器會發出一個回退命令,從而回退事務。
在2PC協議中,只有當收到所有參與者投票“已準備好(ready)”,才能決定全局事務“提交(commit)”,并且只要收到一個參與者投票“夭折(abort)”,則決定全局事務“夭折”。實際上,對于復制數據庫環境下的復制事務來說,由于需要所有的參與者都能在響應前完成更新,因此做出全局事務“提交”的條件非??量蹋@就造成很多實際上能完成復制事務的參與者卻不能正常提交復制事務。另外,當一個參與者失敗時,大量的復制事務都會隨之“夭折”,因此現有技術中做出全局事務“夭折”的條件又過于寬松,從而造成大量的資源浪費。不僅于此,如果有某一個參與者始終不能成功更新,那么整個更新事務就都不能夠獲得“提交”,而這顯然不合乎復制數據庫環境下的高可用性要求。
因此,現有2PC協議做出全局決定的條件并不能有效地應用到復制數據庫環境,這一方面會帶來資源浪費,另一方面又會導致一些正常事務無法提交。
發明內容
本發明提供一種復制數據庫環境下保持數據一致性的方法和系統,從而克服現有技術中資源浪費,又不能保證正常事務實現提交的缺點。
為了達到上述目的,本發明的技術方案是這樣實現的:
一種復制數據庫環境下保持數據一致性的方法,包括:
協調者向復制數據庫環境中的參與者發送事務請求,所述參與者根據所述事務請求在本地執行復制事務;
參與者根據本地復制事務執行結果向協調者投票,協調者根據參與者返回的投票結果做出全局決定,其中如果至少有一個參與者投票已準備好,則協調者做出全局提交的全局決定,否則協調者做出全局夭折的全局決定;
參與者執行所述全局決定。
較佳地,該方法包括:當至少有一個參與者投票已準備好時,協調者進一步向投票夭折的參與者發送重試命令;投票夭折的參與者收到所述重試命令后,重新在本地執行復制事務。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于諾基亞西門子通信公司,未經諾基亞西門子通信公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200710111966.2/2.html,轉載請聲明來源鉆瓜專利網。





