[發(fā)明專利]一種支持分布式事務(wù)的數(shù)據(jù)庫的連接方法有效
| 申請?zhí)枺?/td> | 201210591754.X | 申請日: | 2012-12-29 |
| 公開(公告)號: | CN103064964A | 公開(公告)日: | 2013-04-24 |
| 發(fā)明(設(shè)計)人: | 陳文亭;王雪松;呂迅;崔維力;武新;趙偉 | 申請(專利權(quán))人: | 天津南大通用數(shù)據(jù)技術(shù)有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 天津濱海科緯知識產(chǎn)權(quán)代理有限公司 12211 | 代理人: | 孫春玲 |
| 地址: | 300384 天津市濱海新區(qū)高新區(qū)*** | 國省代碼: | 天津;12 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 支持 分布式 事務(wù) 數(shù)據(jù)庫 連接 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明屬于分布式數(shù)據(jù)存儲領(lǐng)域,尤其是涉及一種支持分布式事務(wù)的數(shù)據(jù)庫的連接方法。
背景技術(shù)
隨著信息化技術(shù)的快速發(fā)展,一個企業(yè)的應(yīng)用系統(tǒng)也越來越多,應(yīng)用所涉及的業(yè)務(wù)也越來越復(fù)雜,一個業(yè)務(wù)經(jīng)常需要訪問企業(yè)內(nèi)多個不同的數(shù)據(jù)庫來完成,也有可能訪問外部的數(shù)據(jù)庫,并且要保障事務(wù)的ACID屬性以及高并發(fā)性。
為了適應(yīng)應(yīng)用業(yè)務(wù)的發(fā)展需要,目前主流關(guān)系數(shù)據(jù)庫系統(tǒng)都支持分布式事務(wù)操作,并遵循國際XA/OPEN標(biāo)準(zhǔn)。為了保障訪問數(shù)據(jù)庫的并發(fā)性能,減少建立到數(shù)據(jù)庫連接的時間,各廠商提供的中間件產(chǎn)品都提供了支持分布式事務(wù)的分布式數(shù)據(jù)庫連接池。
所述分布式數(shù)據(jù)庫連接池,在系統(tǒng)初始化時,讀取配置文件確定所連接的數(shù)據(jù)庫,并建立到指定數(shù)據(jù)庫的連接,緩存供使用。對于多個數(shù)據(jù)庫,需要建立多個相應(yīng)的連接池,并進(jìn)行配置。當(dāng)應(yīng)用系統(tǒng)需要訪問多個數(shù)據(jù)庫時,需要一一向各個連接池發(fā)出請求,獲取支持分布式事務(wù)的數(shù)據(jù)庫連接,然后應(yīng)用系統(tǒng)生成全局分布式事務(wù)ID,并一一啟動分布式事務(wù),進(jìn)行SQL執(zhí)行操作,發(fā)送SQL結(jié)束操作,最后進(jìn)行提交。對于每個事務(wù)都要進(jìn)行上述過程。對于應(yīng)用的每次請求,連接池都隨機(jī)分配空閑的連接供應(yīng)用使用,避免了頻繁地向數(shù)據(jù)庫建立實際的連接,有效地提高了數(shù)據(jù)庫連接的利用率,減少了建立連接所需的時間,極大地提高了系統(tǒng)的并發(fā)性能。但也存在著兩個問題需要解決,問題一:應(yīng)用系統(tǒng)開發(fā)極為不便,面對多個數(shù)據(jù)庫,需要自己完成分布式事務(wù)所需的各項細(xì)致操作;問題二:同一線程的不同事務(wù)操作或者同一事務(wù)的不同操作無法使用相同的數(shù)據(jù)庫連接,造成性能降低和數(shù)據(jù)操作錯誤。
如圖1,假設(shè)應(yīng)用系統(tǒng)有五個事務(wù),需要訪問三個不同的數(shù)據(jù)庫A、B、C,則需要配置三個連接池,分別緩存到三個數(shù)據(jù)庫的連接。從圖中可以看出應(yīng)用需要向三個連接池共發(fā)出11次獲取分布式連接對象的請求。配置不方便,邏輯也較復(fù)雜。同時為了執(zhí)行真正的事務(wù),應(yīng)用系統(tǒng)還必須執(zhí)行圖2所示的以下過程:
步驟201,從連接池中獲取所需的分布式連接;需要從連接池一中獲取分布式連接對象A1,從連接池2中獲取分布式連接對象B1;
步驟202,生成全局分布式事務(wù)標(biāo)識XID;應(yīng)用系統(tǒng)自已生成分布式事務(wù)的全局標(biāo)識XID,要求全局唯一;
步驟203,通知所有分布式連接執(zhí)行分布式事務(wù)啟動操作;應(yīng)用系統(tǒng)需要逐個調(diào)用所獲得的分布式連接對象的Xa_start方法,通知數(shù)據(jù)庫啟動分布式事務(wù);
步驟204,在分布式連接對象上執(zhí)行SQL操作;應(yīng)用系統(tǒng)據(jù)事務(wù)需要,在分布式連接對象上執(zhí)行SQL操作;這些分布式SQL操作組成整個分布式事務(wù);
步驟205,在各個分布式連接上執(zhí)行結(jié)束操作;應(yīng)用系統(tǒng)逐個調(diào)用分布式對象,執(zhí)行Xa_end操作,通知各數(shù)據(jù)庫準(zhǔn)備提交;
步驟206,提交整個分布式事務(wù);應(yīng)用系統(tǒng)提交整個分布式事務(wù),最終完成跨數(shù)據(jù)庫的整個事務(wù)操作。
由以上操作可以看出,所述分布式數(shù)據(jù)庫連接池,只是緩存了一個分布式事務(wù)所需的到多個數(shù)據(jù)庫連接中的一個連接,而非實際意義上的對分布式事務(wù)所需的所有連接的緩存,也就必然要執(zhí)行步驟202、203、205這樣的細(xì)節(jié)操作,給應(yīng)用開發(fā)帶來很多不便,使得應(yīng)用邏輯更加復(fù)雜。
在另一個場景中,如圖1和圖3所示,參考圖1,假設(shè)只考慮應(yīng)用事務(wù)一和應(yīng)用事務(wù)四。事務(wù)一和事務(wù)四屬于同一個線程,事務(wù)都只涉及數(shù)據(jù)庫A和數(shù)據(jù)庫B。此時,由于到數(shù)據(jù)庫A和數(shù)據(jù)庫B的連接池各自維護(hù)到各自數(shù)據(jù)庫的連接,并隨機(jī)分配連接給請求者,所以事務(wù)一執(zhí)行完后,事務(wù)四所獲得的實際連接則有可能與事務(wù)一曾使用的連接不同。這樣如果事務(wù)四與事務(wù)一有關(guān)聯(lián)的話,則可能造成數(shù)據(jù)操作錯誤。應(yīng)用系統(tǒng)執(zhí)行事務(wù)一和事務(wù)四的過程參見圖2所示,詳細(xì)說明如下:
步驟301,從連接池中獲取所需的分布式連接;應(yīng)用系統(tǒng)從連接池一中獲得分布式連接對象A1,從連接池2中獲取分布式連接對象B1;
步驟302,使用分布式連接執(zhí)行事務(wù)一;應(yīng)用系統(tǒng)按圖1步驟202到步驟206完成事務(wù)一的執(zhí)行;
步驟303,從連接池中獲取所需的分布式連接;應(yīng)用系統(tǒng)從連接池一中獲得分布式連接對象A2,從連接池2中獲取分布式連接對象B1;注意此處,由于連接池隨機(jī)分配分布式連接,所以從連接池一中獲得是分布式連接對象A2,與事務(wù)一請求獲得的不同;連接池二中獲得連接對象與事務(wù)一時相同,也不代表一定相同,此處只是示意,有可能相同,也有可能不同。如果緩存的連接很多,則不相同的概率將大大增加。
步驟304,使用分布式連接執(zhí)行事務(wù)四;應(yīng)用系統(tǒng)按圖1步驟202到步驟206完成事務(wù)四的執(zhí)行;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于天津南大通用數(shù)據(jù)技術(shù)有限公司,未經(jīng)天津南大通用數(shù)據(jù)技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210591754.X/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種事務(wù)處理的方法和裝置
- 分布式事務(wù)處理方法與系統(tǒng)
- 一種融合原生事務(wù)和邏輯事務(wù)的方法
- 用于聚結(jié)內(nèi)存事務(wù)的方法和系統(tǒng)
- 事務(wù)處理方法、事務(wù)參與節(jié)點及事務(wù)協(xié)調(diào)節(jié)點
- 跨進(jìn)程分布式事務(wù)控制方法及相關(guān)系統(tǒng)
- 一種分布式事務(wù)管理方法及系統(tǒng)
- 一種分布式事務(wù)處理的智能監(jiān)控方法及服務(wù)器
- 分布式事務(wù)處理方法及裝置
- 讀寫事務(wù)控制方法、系統(tǒng)、終端設(shè)備及存儲介質(zhì)
- 數(shù)據(jù)庫
- 數(shù)據(jù)庫管理系統(tǒng)及數(shù)據(jù)庫
- 數(shù)據(jù)庫構(gòu)筑裝置、數(shù)據(jù)庫檢索裝置、數(shù)據(jù)庫裝置、數(shù)據(jù)庫構(gòu)筑方法、以及數(shù)據(jù)庫檢索方法
- 數(shù)據(jù)庫和數(shù)據(jù)庫處理方法
- 數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫更新方法、數(shù)據(jù)庫以及數(shù)據(jù)庫更新程序
- 容器數(shù)據(jù)庫
- 數(shù)據(jù)庫同步方法及數(shù)據(jù)庫
- 一種MongoDB數(shù)據(jù)庫對象復(fù)制延遲監(jiān)控方法和裝置
- 數(shù)據(jù)分布式存儲方法、裝置、電子設(shè)備及存儲介質(zhì)
- 數(shù)據(jù)庫語句執(zhí)行方法及裝置





