国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種支持分布式事務(wù)的數(shù)據(jù)庫(kù)的連接方法

      文檔序號(hào):6386409閱讀:312來(lái)源:國(guó)知局
      專利名稱:一種支持分布式事務(wù)的數(shù)據(jù)庫(kù)的連接方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于分布式數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其是涉及一種支持分布式事務(wù)的數(shù)據(jù)庫(kù)的連接方法。
      背景技術(shù)
      隨著信息化技術(shù)的快速發(fā)展,一個(gè)企業(yè)的應(yīng)用系統(tǒng)也越來(lái)越多,應(yīng)用所涉及的業(yè)務(wù)也越來(lái)越復(fù)雜,一個(gè)業(yè)務(wù)經(jīng)常需要訪問(wèn)企業(yè)內(nèi)多個(gè)不同的數(shù)據(jù)庫(kù)來(lái)完成,也有可能訪問(wèn)外部的數(shù)據(jù)庫(kù),并且要保障事務(wù)的ACID屬性以及高并發(fā)性。為了適應(yīng)應(yīng)用業(yè)務(wù)的發(fā)展需要,目前主流關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都支持分布式事務(wù)操作,并遵循國(guó)際XA/0PEN標(biāo)準(zhǔn)。為了保障訪問(wèn)數(shù)據(jù)庫(kù)的并發(fā)性能,減少建立到數(shù)據(jù)庫(kù)連接的時(shí)間,各廠商提供的中間件產(chǎn)品都提供了支持分布式事務(wù)的分布式數(shù)據(jù)庫(kù)連接池。所述分布式數(shù)據(jù)庫(kù)連接池,在系統(tǒng)初始化時(shí),讀取配置文件確定所連接的數(shù)據(jù)庫(kù),并建立到指定數(shù)據(jù)庫(kù)的連接,緩存供使用。對(duì)于多個(gè)數(shù)據(jù)庫(kù),需要建立多個(gè)相應(yīng)的連接池,并進(jìn)行配置。當(dāng)應(yīng)用系統(tǒng)需要訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)時(shí),需要一一向各個(gè)連接池發(fā)出請(qǐng)求,獲取支持分布式事務(wù)的數(shù)據(jù)庫(kù)連接,然后應(yīng)用系統(tǒng)生成全局分布式事務(wù)ID,并一一啟動(dòng)分布式事務(wù),進(jìn)行SQL執(zhí)行操作,發(fā)送SQL結(jié)束操作,最后進(jìn)行提交。對(duì)于每個(gè)事務(wù)都要進(jìn)行上述過(guò)程。對(duì)于應(yīng)用的每次請(qǐng)求,連接池都隨機(jī)分配空閑的連接供應(yīng)用使用,避免了頻繁地向數(shù)據(jù)庫(kù)建立實(shí)際的連接,有效地提高了數(shù)據(jù)庫(kù)連接的利用率,減少了建立連接所需的時(shí)間,極大地提高了系統(tǒng)的并發(fā)性能。但也存在著兩個(gè)問(wèn)題需要解決,問(wèn)題一應(yīng)用系統(tǒng)開(kāi)發(fā)極為不便,面對(duì)多個(gè)數(shù)據(jù)庫(kù),需要自己完成分布式事務(wù)所需的各項(xiàng)細(xì)致操作;問(wèn)題二 同一線程的不同事務(wù)操作或者同一事務(wù)的不同操作無(wú)法使用相同的數(shù)據(jù)庫(kù)連接,造成性能降低和數(shù)據(jù)操作錯(cuò)誤。如圖1,假設(shè)應(yīng)用系統(tǒng)有五個(gè)事務(wù),需要訪問(wèn)三個(gè)不同的數(shù)據(jù)庫(kù)A、B、C,則需要配置三個(gè)連接池,分別緩存到三個(gè)數(shù)據(jù)庫(kù)的連接。從圖中可以看出應(yīng)用需要向三個(gè)連接池共發(fā)出11次獲取分布式連接對(duì)象的請(qǐng)求。配置不方便,邏輯也較復(fù)雜。同時(shí)為了執(zhí)行真正的事務(wù),應(yīng)用系統(tǒng)還必須執(zhí)行圖2所示的以下過(guò)程步驟201,從連接池中獲取所需的分布式連接;需要從連接池一中獲取分布式連接對(duì)象Al,從連接池2中獲取分布式連接對(duì)象BI ;步驟202,生成全局分布式事務(wù)標(biāo)識(shí)XID ;應(yīng)用系統(tǒng)自已生成分布式事務(wù)的全局標(biāo)識(shí)XID,要求全局唯一;步驟203,通知所有分布式連接執(zhí)行分布式事務(wù)啟動(dòng)操作;應(yīng)用系統(tǒng)需要逐個(gè)調(diào)用所獲得的分布式連接對(duì)象的Xa_start方法,通知數(shù)據(jù)庫(kù)啟動(dòng)分布式事務(wù);步驟204,在分布式連接對(duì)象上執(zhí)行SQL操作;應(yīng)用系統(tǒng)據(jù)事務(wù)需要,在分布式連接對(duì)象上執(zhí)行SQL操作;這些分布式SQL操作組成整個(gè)分布式事務(wù);步驟205,在各個(gè)分布式連接上執(zhí)行結(jié)束操作;應(yīng)用系統(tǒng)逐個(gè)調(diào)用分布式對(duì)象,執(zhí)行Xa_end操作,通知各數(shù)據(jù)庫(kù)準(zhǔn)備提交;
      步驟206,提交整個(gè)分布式事務(wù);應(yīng)用系統(tǒng)提交整個(gè)分布式事務(wù),最終完成跨數(shù)據(jù)庫(kù)的整個(gè)事務(wù)操作。由以上操作可以看出,所述分布式數(shù)據(jù)庫(kù)連接池,只是緩存了一個(gè)分布式事務(wù)所需的到多個(gè)數(shù)據(jù)庫(kù)連接中的一個(gè)連接,而非實(shí)際意義上的對(duì)分布式事務(wù)所需的所有連接的緩存,也就必然要執(zhí)行步驟202、203、205這樣的細(xì)節(jié)操作,給應(yīng)用開(kāi)發(fā)帶來(lái)很多不便,使得應(yīng)用邏輯更加復(fù)雜。在另一個(gè)場(chǎng)景中,如圖1和圖3所不,參考圖1,假設(shè)只考慮應(yīng)用事務(wù)一和應(yīng)用事務(wù)四。事務(wù)一和事務(wù)四屬于同一個(gè)線程,事務(wù)都只涉及數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)B。此時(shí),由于到數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)B的連接池各自維護(hù)到各自數(shù)據(jù)庫(kù)的連接,并隨機(jī)分配連接給請(qǐng)求者,所以事務(wù)一執(zhí)行完后,事務(wù)四所獲得的實(shí)際連接則有可能與事務(wù)一曾使用的連接不同。這樣如果事務(wù)四與事務(wù)一有關(guān)聯(lián)的話,則可能造成數(shù)據(jù)操作錯(cuò)誤。應(yīng)用系統(tǒng)執(zhí)行事務(wù)一和事務(wù)四的過(guò)程參見(jiàn)圖2所示,詳細(xì)說(shuō)明如下步驟301,從連接池中獲取所需的分布式連接;應(yīng)用系統(tǒng)從連接池一中獲得分布式連接對(duì)象Al,從連接池2中獲取分布式連接對(duì)象BI ;步驟302,使用分布式連接執(zhí)行事務(wù)一;應(yīng)用系統(tǒng)按圖1步驟202到步驟206完成事務(wù)一的執(zhí)行;步驟303,從連接池中獲取所需的分布式連接;應(yīng)用系統(tǒng)從連接池一中獲得分布式連接對(duì)象A2,從連接池2中獲取分布式連接對(duì)象BI ;注意此處,由于連接池隨機(jī)分配分布式連接,所以從連接池一中獲得是分布式連接對(duì)象A2,與事務(wù)一請(qǐng)求獲得的不同;連接池二中獲得連接對(duì)象與事務(wù)一時(shí)相同,也不代表一定相同,此處只是示意,有可能相同,也有可能不同。如果緩存的連接很多,則不相同的概率將大大增加。步驟304,使用分布式連接執(zhí)行事務(wù)四;應(yīng)用系統(tǒng)按圖1步驟202到步驟206完成事務(wù)四的執(zhí)行;綜上所述,現(xiàn)有分布式數(shù)據(jù)庫(kù)連接池?zé)o法有效地降低應(yīng)用系統(tǒng)使用分布式事務(wù)的復(fù)雜性,也無(wú)法解決同一線程多次使用分布式數(shù)據(jù)庫(kù)連接時(shí)可能出現(xiàn)的數(shù)據(jù)操作錯(cuò)誤和失敗的問(wèn)題。

      發(fā)明內(nèi)容
      本發(fā)明要解決的問(wèn)題是提供一種支持分布式事務(wù)的數(shù)據(jù)庫(kù)的連接方法,尤其適合于面對(duì)多個(gè)不同的數(shù)據(jù)庫(kù)。為解決上述技術(shù)問(wèn)題,本發(fā)明采用的設(shè)計(jì)思想是對(duì)全局分布式事務(wù)所涉及的多個(gè)數(shù)據(jù)庫(kù)連接上的各個(gè)分布式事務(wù)操作進(jìn)行封裝,抽象出新的對(duì)象,多節(jié)點(diǎn)執(zhí)行器,并進(jìn)行緩存,方便應(yīng)用系統(tǒng)使用,同時(shí)為應(yīng)用系統(tǒng)的同一請(qǐng)求線程分配相同的多節(jié)點(diǎn)執(zhí)行器對(duì)象。本發(fā)明采用的技術(shù)方案是一種支持分布式事務(wù)的數(shù)據(jù)庫(kù)的連接方法,包括I)將分布式事務(wù)所涉及的分布式數(shù)據(jù)庫(kù)連接對(duì)象作為一個(gè)整體進(jìn)行封裝,形成多節(jié)點(diǎn)執(zhí)行器,并將多節(jié)點(diǎn)執(zhí)行器對(duì)象作為分布式數(shù)據(jù)庫(kù)連接池的緩存對(duì)象進(jìn)行緩存,并建立與應(yīng)用系統(tǒng)的對(duì)應(yīng)關(guān)聯(lián)關(guān)系;2)分布式數(shù)據(jù)庫(kù)連接池接收到應(yīng)用系統(tǒng)請(qǐng)求后,確定與該請(qǐng)求對(duì)應(yīng)的有邏輯關(guān)系的緩存的封裝的對(duì)象;
      3)將上一步驟所確定的多節(jié)點(diǎn)執(zhí)行器對(duì)象分配給應(yīng)用系統(tǒng)用于對(duì)數(shù)據(jù)庫(kù)的分布式事務(wù)操作。進(jìn)一步的,所述的第一步驟包括將對(duì)所有分布式數(shù)據(jù)庫(kù)連接上的分布式全局XID生成、分布式事務(wù)啟動(dòng)、分布式事務(wù)結(jié)束以及其它分布式事務(wù)提交進(jìn)行封裝,為應(yīng)用提供方便的接口。進(jìn)一步的,所述的第二步驟中的邏輯關(guān)系是指向連接池請(qǐng)求的線程的標(biāo)識(shí),包括由線程標(biāo)識(shí)衍生出的標(biāo)識(shí);封裝對(duì)象屬性指其與應(yīng)用系統(tǒng)屬性相對(duì)應(yīng)的標(biāo)識(shí)與封裝對(duì)象屬性之間的關(guān)系。進(jìn)一步的,所述的第一步驟中建立與應(yīng)用系統(tǒng)的對(duì)應(yīng)關(guān)聯(lián)關(guān)系為構(gòu)造HASH算法。進(jìn)一步的,所述的第二步驟還包括在應(yīng)用系統(tǒng)第一次請(qǐng)求時(shí),連接池生成多節(jié)點(diǎn)執(zhí)行器對(duì)象并進(jìn)行緩存,同時(shí)建立與應(yīng)用系統(tǒng)屬性對(duì)應(yīng)的關(guān)聯(lián)關(guān)系;再次請(qǐng)求時(shí),根據(jù)請(qǐng)求中的應(yīng)用系統(tǒng)屬性,通過(guò)所構(gòu)造的HASH算法獲得緩存的多節(jié)點(diǎn)執(zhí)行器對(duì)象。進(jìn)一步的,所述的連接方法還包括建立并維護(hù)應(yīng)用系統(tǒng)所使用的多節(jié)點(diǎn)執(zhí)行器對(duì)象的閑表和忙表;所述的閑表記錄了連接池中緩存的未被應(yīng)用程序使用的多節(jié)點(diǎn)執(zhí)行器,閑表中的多節(jié)點(diǎn)執(zhí)行器可以分配給應(yīng)用程序使用;所述的忙表記錄了連接池中緩存的正在被應(yīng)用程序使用的多節(jié)點(diǎn)執(zhí)行器,忙表中的多節(jié)點(diǎn)執(zhí)行器只有使用該執(zhí)行器的應(yīng)用程序?qū)⑵錃w還給連接池后,才能分配使用更進(jìn)一步的,所述的連接方法還包括I)根據(jù)請(qǐng)求中的應(yīng)用系統(tǒng)的標(biāo)識(shí),查詢閑表,如果有空閑多節(jié)點(diǎn)執(zhí)行器可用,將所確定的多節(jié)點(diǎn)執(zhí)行器對(duì)象分配給應(yīng)用系統(tǒng)用于對(duì)數(shù)據(jù)庫(kù)的分布式事務(wù)操作;否則執(zhí)行下一步驟;2)根據(jù)請(qǐng)求中的應(yīng)用系統(tǒng)的標(biāo)識(shí),查詢忙表,如果有對(duì)應(yīng)多節(jié)點(diǎn)執(zhí)行器,將所確定的多節(jié)點(diǎn)執(zhí)行器對(duì)象分配給應(yīng)用系統(tǒng)用于對(duì)數(shù)據(jù)庫(kù)的分布式事務(wù)操作;否則,建立新的多節(jié)點(diǎn)執(zhí)行器對(duì)象,將分布式事務(wù)所涉及的分布式數(shù)據(jù)庫(kù)連接對(duì)象作為一個(gè)整體封裝和緩存。本發(fā)明具有的優(yōu)點(diǎn)和積極效果是能夠使應(yīng)用系統(tǒng)從繁雜的分布式事務(wù)處理邏輯中解脫出來(lái),專心于業(yè)務(wù)邏輯;同時(shí),也能夠保障對(duì)多個(gè)數(shù)據(jù)庫(kù)的分布式訪問(wèn)讀寫(xiě)操作的正確性,有效提高對(duì)多數(shù)據(jù)庫(kù)進(jìn)行分布式事務(wù)操作的利用率。


      圖1為現(xiàn)有技術(shù)分布式數(shù)據(jù)庫(kù)連接資源分配情況示意圖;圖2為現(xiàn)有技術(shù)應(yīng)用系統(tǒng)單事務(wù)使用分布式數(shù)據(jù)庫(kù)連接池流程示意圖;圖3為現(xiàn)有技術(shù)應(yīng)用系統(tǒng)同線程兩事務(wù)使用分布式數(shù)據(jù)庫(kù)連接池流程示意圖;圖4為本發(fā)明一實(shí)施例分布式數(shù)據(jù)庫(kù)連接資源分配情況示意圖;圖5為本發(fā)明一實(shí)施例中應(yīng)用系統(tǒng)單事務(wù)使用分布式數(shù)據(jù)庫(kù)連接池流程示意圖;圖6為本發(fā)明一實(shí)施例中應(yīng)用系統(tǒng)同線程兩事務(wù)使用分布式數(shù)據(jù)庫(kù)連接池流程示意圖;圖7為本發(fā)明分布式數(shù)據(jù)庫(kù)連接資源確定流程示意圖。
      具體實(shí)施例方式對(duì)于多節(jié)點(diǎn)執(zhí)行器的封裝,一個(gè)多節(jié)點(diǎn)執(zhí)行器對(duì)象將包含多個(gè)分布式數(shù)據(jù)庫(kù)連接,并將所包含的分布式數(shù)據(jù)庫(kù)連接的職能進(jìn)行封裝,對(duì)應(yīng)用系統(tǒng)提供方便易用的接口。如封裝后只提供簡(jiǎn)單的啟動(dòng)事務(wù)操作、執(zhí)行SQL操作、提交操作、回滾操作等。多節(jié)點(diǎn)執(zhí)行器對(duì)象將進(jìn)行緩存,以提高性能,以及為同一線程提供復(fù)用,以方便應(yīng)用系統(tǒng)可以決定在多次調(diào)用后統(tǒng)一提交。下面結(jié)合附圖和本發(fā)明的一個(gè)實(shí)例對(duì)本發(fā)明做詳細(xì)的說(shuō)明,仍以圖4中應(yīng)用事務(wù)一為例說(shuō)明應(yīng)用系統(tǒng)如何使用本發(fā)明的支持分布式事務(wù)的數(shù)據(jù)庫(kù)連接資源管理方法來(lái)應(yīng)用系統(tǒng)單一事務(wù),如圖5所不步驟501,從連接池中獲取所需的多節(jié)點(diǎn)執(zhí)行器;向連接池請(qǐng)求對(duì)數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B的多節(jié)點(diǎn)執(zhí)行器;連接池建立到數(shù)據(jù)庫(kù)A和數(shù)據(jù)庫(kù)B的分布式連接對(duì)象Al和BI,并建立多節(jié)點(diǎn)執(zhí)行器對(duì)象多節(jié)點(diǎn)執(zhí)行器一;返回給應(yīng)用系統(tǒng);步驟502,使用多節(jié)點(diǎn)執(zhí)行器啟動(dòng)分布式事務(wù);應(yīng)用系統(tǒng)調(diào)用多節(jié)點(diǎn)執(zhí)行器啟動(dòng)分布式事務(wù);步驟503,使用多節(jié)點(diǎn)執(zhí)行器在分布式節(jié)點(diǎn)上執(zhí)行SQL ;應(yīng)用系統(tǒng)調(diào)用多節(jié)點(diǎn)執(zhí)行器執(zhí)行SQL操作;步驟504,使用多節(jié)點(diǎn)執(zhí)行器提交分布式事務(wù);應(yīng)用系統(tǒng)調(diào)用多節(jié)點(diǎn)執(zhí)行器提交事務(wù),完成操作。對(duì)于確定應(yīng)用系統(tǒng)屬性與多節(jié)點(diǎn)執(zhí)行器之間的關(guān)聯(lián)關(guān)系時(shí),可以使用應(yīng)用系統(tǒng)請(qǐng)求線程的ID來(lái)建立與緩存的多節(jié)點(diǎn)執(zhí)行器對(duì)象的關(guān)聯(lián)關(guān)系。以圖4中應(yīng)用事務(wù)一、應(yīng)用事務(wù)四為例,來(lái)說(shuō)明應(yīng)用系統(tǒng)同一線程如何獲得同一多節(jié)點(diǎn)執(zhí)行器對(duì)象的操作過(guò)程,如圖6所示步驟601,從連接池中獲取所需的多節(jié)點(diǎn)執(zhí)行器;向連接池請(qǐng)求對(duì)數(shù)據(jù)庫(kù)A、數(shù)據(jù)庫(kù)B的多節(jié)點(diǎn)執(zhí)行器;獲得多節(jié)點(diǎn)執(zhí)行器對(duì)象多節(jié)點(diǎn)執(zhí)行器一;步驟602,使用多節(jié)點(diǎn)執(zhí)行器執(zhí)行事務(wù)一;此處可以提交事務(wù),也可以不提交事務(wù),可由應(yīng)用系統(tǒng)據(jù)業(yè)務(wù)自行決定;步驟603,從連接池中獲取所需的多節(jié)點(diǎn)執(zhí)行器;此時(shí)連接池將據(jù)應(yīng)用系統(tǒng)請(qǐng)求線程的標(biāo)識(shí),返回多節(jié)點(diǎn)執(zhí)行器對(duì)象一,也就是剛才事務(wù)一所用的多節(jié)點(diǎn)執(zhí)行器對(duì)象;步驟604,使用多節(jié)點(diǎn)執(zhí)行器執(zhí)行事務(wù)四;此時(shí)由于獲得的多節(jié)點(diǎn)執(zhí)行器對(duì)象與事務(wù)一相同,所以當(dāng)事務(wù)一未提交時(shí),此處仍然可以進(jìn)行SQL操作,最終與事務(wù)一中執(zhí)行的SQL操作一同提交或者回滾,保障分布式事務(wù)的正確性。從以上步驟可以看出,本發(fā)明對(duì)于應(yīng)用系統(tǒng)同一線程完全可以分配相同的多節(jié)點(diǎn)執(zhí)行器,以保障對(duì)多個(gè)數(shù)據(jù)庫(kù)操作的正確性。并可以由應(yīng)用程序決定提交的頻度,最大程度地利用數(shù)據(jù)庫(kù)的性能。下面結(jié)合圖7說(shuō)明在本發(fā)明中,連接池如何為請(qǐng)求分配緩存的多節(jié)點(diǎn)執(zhí)行器。連接池在接收到應(yīng)用系統(tǒng)的請(qǐng)求時(shí)的流程如下步驟701,接收應(yīng)用線程對(duì)多節(jié)點(diǎn)執(zhí)行器的申請(qǐng);步驟702,該線程是否已有緩存的多節(jié)點(diǎn)執(zhí)行器?接收到請(qǐng)求后,連接池將到維護(hù)的閑表、忙表中尋找是否已有緩存的多節(jié)點(diǎn)執(zhí)行器,此處使用本發(fā)明提到的構(gòu)造的HASH算法,據(jù)線程標(biāo)識(shí)獲得對(duì)應(yīng)的多節(jié)點(diǎn)執(zhí)行器;如果沒(méi)有執(zhí)行步驟703,否則執(zhí)行步驟704 ;步驟703,創(chuàng)建多節(jié)點(diǎn)執(zhí)行器并進(jìn)行緩存;據(jù)請(qǐng)求中的信息建立到各數(shù)據(jù)庫(kù)的分布式連接,并創(chuàng)建多節(jié)點(diǎn)執(zhí)行器對(duì)象,進(jìn)行初始化;建立與請(qǐng)求線程標(biāo)識(shí)的關(guān)聯(lián),并緩存該對(duì)象,同時(shí)放入忙對(duì)列;執(zhí)行步驟705 ;步驟704,把已緩存的多節(jié)點(diǎn)執(zhí)行器分配給該線程;執(zhí)行步驟705 ;步驟705,返回多節(jié)點(diǎn)執(zhí)行器給應(yīng)用執(zhí)行事務(wù);連接池將確定的多節(jié)點(diǎn)執(zhí)行器對(duì)象返回給應(yīng)用系統(tǒng)使用,用以完成分布式事務(wù)操作。以上對(duì)本發(fā)明的一個(gè)實(shí)施例進(jìn)行了詳細(xì)說(shuō)明,但所述內(nèi)容僅為本發(fā)明的較佳實(shí)施例,不能被認(rèn)為用于限定本發(fā)明的實(shí)施范圍。凡依本發(fā)明申請(qǐng)范圍所作的均等變化與改進(jìn)等,均應(yīng)仍歸屬于本發(fā)明的專利涵蓋范圍之內(nèi)。
      權(quán)利要求
      1.一種支持分布式事務(wù)的數(shù)據(jù)庫(kù)的連接方法,包括 1)將分布式事務(wù)所涉及的分布式數(shù)據(jù)庫(kù)連接對(duì)象作為一個(gè)整體進(jìn)行封裝,形成多節(jié)點(diǎn)執(zhí)行器,并將多節(jié)點(diǎn)執(zhí)行器對(duì)象作為分布式數(shù)據(jù)庫(kù)連接池的緩存對(duì)象進(jìn)行緩存,并建立與應(yīng)用系統(tǒng)的對(duì)應(yīng)關(guān)聯(lián)關(guān)系; 2)分布式數(shù)據(jù)庫(kù)連接池接收到應(yīng)用系統(tǒng)請(qǐng)求后,確定與該請(qǐng)求對(duì)應(yīng)的有邏輯關(guān)系的緩存的封裝的對(duì)象; 3)將上一步驟所確定的多節(jié)點(diǎn)執(zhí)行器對(duì)象分配給應(yīng)用系統(tǒng)用于對(duì)數(shù)據(jù)庫(kù)的分布式事務(wù)操作。
      2.根據(jù)權(quán)利要求1所述的連接方法,其特征在于所述的第一步驟包括 將對(duì)所有分布式數(shù)據(jù)庫(kù)連接上的分布式全局XID生成、分布式事務(wù)啟動(dòng)、分布式事務(wù)結(jié)束以及其它分布式事務(wù)提交進(jìn)行封裝,為應(yīng)用提供方便的接口。
      3.根據(jù)權(quán)利要求1所述的連接方法,其特征在于所述的第二步驟中的邏輯關(guān)系是指向連接池請(qǐng)求的線程的標(biāo)識(shí),包括由線程標(biāo)識(shí)衍生出的標(biāo)識(shí);封裝對(duì)象屬性指其與應(yīng)用系統(tǒng)屬性相對(duì)應(yīng)的標(biāo)識(shí)與封裝對(duì)象屬性之間的關(guān)系。
      4.根據(jù)權(quán)利要求1所述的連接方法,其特征在于所述的第一步驟中建立與應(yīng)用系統(tǒng)的對(duì)應(yīng)關(guān)聯(lián)關(guān)系為構(gòu)造HASH算法。
      5.根據(jù)權(quán)利要求4所述的連接方法,其特征在于所述的第二步驟還包括在應(yīng)用系統(tǒng)第一次請(qǐng)求時(shí),連接池生成多節(jié)點(diǎn)執(zhí)行器對(duì)象并進(jìn)行緩存,同時(shí)建立與應(yīng)用系統(tǒng)屬性對(duì)應(yīng)的關(guān)聯(lián)關(guān)系;再次請(qǐng)求時(shí),根據(jù)請(qǐng)求中的應(yīng)用系統(tǒng)屬性,通過(guò)所構(gòu)造的HASH算法獲得緩存的多節(jié)點(diǎn)執(zhí)行器對(duì)象。
      6.根據(jù)權(quán)利要求1所述的連接方法,其特征在于所述的連接方法還包括 建立并維護(hù)應(yīng)用系統(tǒng)所使用的多節(jié)點(diǎn)執(zhí)行器對(duì)象的閑表和忙表;所述的閑表記錄了連接池中緩存的未被應(yīng)用程序使用的多節(jié)點(diǎn)執(zhí)行器,閑表中的多節(jié)點(diǎn)執(zhí)行器可以分配給應(yīng)用程序使用;所述的忙表記錄了連接池中緩存的正在被應(yīng)用程序使用的多節(jié)點(diǎn)執(zhí)行器,忙表中的多節(jié)點(diǎn)執(zhí)行器只有使用該執(zhí)行器的應(yīng)用程序?qū)⑵錃w還給連接池后,才能分配使用。
      7.根據(jù)權(quán)利要求6所述的連接方法,所述的連接方法還包括 1)根據(jù)請(qǐng)求中的應(yīng)用系統(tǒng)的標(biāo)識(shí),查詢閑表,如果有空閑多節(jié)點(diǎn)執(zhí)行器可用,將所確定的多節(jié)點(diǎn)執(zhí)行器對(duì)象分配給應(yīng)用系統(tǒng)用于對(duì)數(shù)據(jù)庫(kù)的分布式事務(wù)操作;否則執(zhí)行下一步驟; 2)根據(jù)請(qǐng)求中的應(yīng)用系統(tǒng)的標(biāo)識(shí),查詢忙表,如果有對(duì)應(yīng)多節(jié)點(diǎn)執(zhí)行器,將所確定的多節(jié)點(diǎn)執(zhí)行器對(duì)象分配給應(yīng)用系統(tǒng)用于對(duì)數(shù)據(jù)庫(kù)的分布式事務(wù)操作;否則,建立新的多節(jié)點(diǎn)執(zhí)行器對(duì)象,將分布式事務(wù)所涉及的分布式數(shù)據(jù)庫(kù)連接對(duì)象作為一個(gè)整體進(jìn)行封裝和緩存。
      全文摘要
      本發(fā)明提供了一種支持分布式事務(wù)的數(shù)據(jù)庫(kù)的連接方法,包括將分布式事務(wù)所涉及的分布式數(shù)據(jù)庫(kù)連接對(duì)象作為一個(gè)整體進(jìn)行封裝,形成多節(jié)點(diǎn)執(zhí)行器,并將多節(jié)點(diǎn)執(zhí)行器對(duì)象作為分布式數(shù)據(jù)庫(kù)連接池的緩存對(duì)象進(jìn)行緩存,并建立與應(yīng)用系統(tǒng)的對(duì)應(yīng)關(guān)聯(lián)關(guān)系;分布式數(shù)據(jù)庫(kù)連接池接收到應(yīng)用系統(tǒng)請(qǐng)求后,確定與該請(qǐng)求對(duì)應(yīng)的有邏輯關(guān)系的緩存的多節(jié)點(diǎn)執(zhí)行器對(duì)象;將上一步驟所確定的多節(jié)點(diǎn)執(zhí)行器對(duì)象分配給應(yīng)用系統(tǒng)用于對(duì)數(shù)據(jù)庫(kù)的分布式事務(wù)操作。本發(fā)明的有益效果是能夠使應(yīng)用系統(tǒng)從繁雜的分布式事務(wù)處理邏輯中解脫出來(lái),專心于業(yè)務(wù)邏輯;同時(shí),也能夠保障對(duì)多個(gè)數(shù)據(jù)庫(kù)的分布式訪問(wèn)讀寫(xiě)操作的正確性,有效提高對(duì)多數(shù)據(jù)庫(kù)進(jìn)行分布式事務(wù)操作的利用率。
      文檔編號(hào)G06F17/30GK103064964SQ20121059175
      公開(kāi)日2013年4月24日 申請(qǐng)日期2012年12月29日 優(yōu)先權(quán)日2012年12月29日
      發(fā)明者陳文亭, 王雪松, 呂迅, 崔維力, 武新, 趙偉 申請(qǐng)人:天津南大通用數(shù)據(jù)技術(shù)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1