国产精品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>

      使用全局確認(rèn)的提交進行分布式事務(wù)的基于日志的復(fù)制的制作方法

      文檔序號:6593175閱讀:231來源:國知局
      專利名稱:使用全局確認(rèn)的提交進行分布式事務(wù)的基于日志的復(fù)制的制作方法
      使用全局確認(rèn)的提交進行分布式事務(wù)的基于日志的復(fù)制技術(shù)領(lǐng)域
      本發(fā)明一般涉及聯(lián)網(wǎng)環(huán)境中的數(shù)據(jù)的復(fù)制。更具體而言,本發(fā)明涉及使用全局確 認(rèn)的提交進行分布式事務(wù)的基于日志的復(fù)制。
      背景技術(shù)
      在分布式數(shù)據(jù)庫系統(tǒng)中,可以在多個節(jié)點或站點提交與事務(wù)相關(guān)聯(lián)的操作。事務(wù) 是工作的原子單位,其在數(shù)據(jù)庫中由于恢復(fù)和一致性原因要么被充分提交要么完全回滾 (roll back)。分布式數(shù)據(jù)庫系統(tǒng)內(nèi)的大多數(shù)事務(wù)管理器實現(xiàn)兩階段提交協(xié)議的某些變化。 兩階段提交協(xié)議是指定何時分布式系統(tǒng)中的所有節(jié)點都同意提交事務(wù)的分布式算法。該協(xié) 議甚至在網(wǎng)絡(luò)故障或節(jié)點故障的情況下也可令所有節(jié)點都提交事務(wù)或者都中止。該算法的 兩個階段是提交-請求階段,在該階段,協(xié)調(diào)器試圖準(zhǔn)備好所有參與者;以及提交階段,在 該階段,協(xié)調(diào)器完成事務(wù)。此方案中的每一參與節(jié)點都將其本地變更寫入到其自己的事務(wù) 日志,并將由事務(wù)管理器發(fā)送的后續(xù)的提交/中止記錄記錄到其事務(wù)日志。
      在基于日志的復(fù)制方案中(其中,源系統(tǒng)和目標(biāo)系統(tǒng)之間的分布式事務(wù)正在被異 步地復(fù)制以便在發(fā)生災(zāi)難的情況下進行最終的故障轉(zhuǎn)移),站點/網(wǎng)絡(luò)/進程故障可能阻止 變更從分布式事務(wù)所涉及的每一參與的源站點成功傳播到目標(biāo)系統(tǒng)。由于效率原因,目標(biāo) 系統(tǒng)中的復(fù)制進程可以決定獨立地(即,作為非分布式事務(wù))提交從每一源站點到達的變 更,而不是重新組合來自每一源站點的本地工作和使用兩階段提交協(xié)議作為分布式事務(wù)來 提交該本地工作。在故障轉(zhuǎn)移到目標(biāo)系統(tǒng)的情況下,事務(wù)一致性語義要求目標(biāo)數(shù)據(jù)庫不反 映任何部分的分布式事務(wù)。因此,復(fù)制必須確保在作為非分布式事務(wù)提交每個本地工作單 元之前從每一站點接收到充分反映源端分布式事務(wù)的所有本地工作單元。作為替代地,復(fù) 制必須取消分布式事務(wù)的部分地應(yīng)用的部分。在沒有這樣的方法的情況下,來自一個或更 多的(但不全部)站點的部分變更可以反映在目標(biāo)數(shù)據(jù)庫系統(tǒng)中,從而破壞了事務(wù)一致性。
      需要提供用于分布式事務(wù)的基于日志的復(fù)制的改進的技術(shù)。發(fā)明內(nèi)容
      本發(fā)明包括具有可執(zhí)行指令的計算機可讀存儲介質(zhì),該可執(zhí)行指令使得讀取源節(jié) 點事務(wù)日志以捕捉事務(wù)數(shù)據(jù),包括本地事務(wù)數(shù)據(jù)、全局事務(wù)標(biāo)識符以及參與節(jié)點數(shù)據(jù)。全局 事務(wù)標(biāo)識符和參與節(jié)點數(shù)據(jù)存儲在目標(biāo)節(jié)點隊列中。訪問目標(biāo)節(jié)點隊列以形成全局事務(wù)數(shù) 據(jù)。基于本地事務(wù)數(shù)據(jù)和全局事務(wù)數(shù)據(jù)構(gòu)建目標(biāo)表。


      通過下面的結(jié)合附圖對本發(fā)明進行的詳細說明,可以比較全面地理解本發(fā)明,其 中
      圖1示出了根據(jù)本發(fā)明的實施例構(gòu)建的系統(tǒng)。
      圖2示出了與本發(fā)明的實施例相關(guān)聯(lián)的處理操作。
      在全部多幅附圖中,類似的附圖標(biāo)記表示相應(yīng)的部分。
      具體實施方式
      在下面定義的術(shù)語背景中公開本發(fā)明。
      分布式數(shù)據(jù)庫是在邏輯上相互關(guān)聯(lián)的數(shù)據(jù)庫的集合。這些數(shù)據(jù)庫通常分布在計算 機網(wǎng)絡(luò)上。在數(shù)據(jù)庫中提交的事務(wù)一般是橫跨多個數(shù)據(jù)庫的分布式事務(wù)或只修改本地數(shù)據(jù) 庫的非分布式事務(wù)的組合。
      分布式數(shù)據(jù)庫管理系統(tǒng)是管理分布式數(shù)據(jù)庫并提供用戶界面的軟件。
      事務(wù)是符合ACID (原子性、一致性、隔離性和持久性)屬性的工作單元。事務(wù)通常 修改資源。分布式事務(wù)是由通常分布在網(wǎng)絡(luò)上的單個資源(數(shù)據(jù)庫)執(zhí)行的總的工作。事 務(wù)管理器負(fù)責(zé)跨所有資源地管理全局事務(wù),而同時保持ACID屬性。換言之,分布式事務(wù)更 新同一個邏輯工作單元內(nèi)的多個完全不同的資源。由iThe Open Group發(fā)布的Distributed Transaction Processing-Reference Mode, Version 3 定義了 X/0pen 分布式事務(wù)處理 (DTP)模型。此模型定義了五個基本組件應(yīng)用程序(AP)、資源管理器(RM)、事務(wù)管理器 (TM)、通信資源管理器(CRM),以及通信協(xié)議。AP定義了事務(wù)邊界,而TM啟動并跨參與的RM 地協(xié)調(diào)事務(wù)。通常,RM是負(fù)責(zé)執(zhí)行由AP分發(fā)給它的工作的數(shù)據(jù)庫或文件存取方法。術(shù)語 “全局事務(wù)”和“分布式事務(wù)”可互換地使用。
      非全局事務(wù)是不參與全局事務(wù)的單個資源執(zhí)行的自主工作單元。非全局事務(wù)的提 交不需要跨多個節(jié)點或站點的兩階段提交協(xié)議。
      本地事務(wù)定義由參與全局事務(wù)的單個資源執(zhí)行的工作單元。這不應(yīng)該與非全局或 非分布式事務(wù)相混淆。一旦所有參與者都已經(jīng)成功地為提交做好準(zhǔn)備,根據(jù)兩階段提交協(xié) 議,由事務(wù)管理器請求每一本地事務(wù)的提交。
      部分地應(yīng)用的分布式事務(wù)的應(yīng)用反映分布式數(shù)據(jù)庫的一種狀態(tài),其中,包括分布 式事務(wù)的一個或多個但不是全部本地事務(wù)都已經(jīng)被提交到數(shù)據(jù)庫。
      大多數(shù)關(guān)系數(shù)據(jù)庫的實現(xiàn)都使用存儲變更的數(shù)據(jù)的之前和之后的圖像并將這些 變更清洗到位于非易失性存儲器(例如,磁盤存儲器)中的事務(wù)日志中的日志記錄技術(shù)。有 許多維護事務(wù)日志的有用的原因,但是,基本的用途是支持事務(wù)性、崩潰,以及數(shù)據(jù)恢復(fù)。數(shù) 據(jù)庫事務(wù)日志捕捉對數(shù)據(jù)頁(屬于數(shù)據(jù)庫表)作出的修改,將其作為表示數(shù)據(jù)庫內(nèi)的原子 狀態(tài)變遷的事務(wù)日志記錄。每一事務(wù)日志記錄是在滿足保證數(shù)據(jù)庫中的已提交的事務(wù)的永 久性(持久性)的基本屬性(ACID)中起著關(guān)鍵作用的原子變化。
      事務(wù)日志通常實現(xiàn)為文件、或一系列文件,并表示被提交到數(shù)據(jù)庫的所有事務(wù)的 檔案。對于某些數(shù)據(jù)庫,一旦在線日志文件已滿,則日志記錄移動到序列中的下一文件。前 面的日志文件通常出于恢復(fù)目的被存檔。每一日志文件都具有與它相關(guān)聯(lián)的唯一日志序列 號(LSN)。對于其他數(shù)據(jù)庫,事務(wù)日志是循環(huán)的,并且頁面被存檔和重復(fù)使用,因為那些頁面 是另外的日志記錄所需要的。
      一個事務(wù)可以生成多個變更數(shù)據(jù)記錄;每個變改數(shù)據(jù)記錄在生成時都帶有唯一變 更或排序或序列號,這幫助維護由多個事務(wù)作出的變更之間的排序。在分布式數(shù)據(jù)庫中,每 個節(jié)點都負(fù)責(zé)管理其本地事務(wù)。事務(wù)管理器負(fù)責(zé)跨各個資源(數(shù)據(jù)庫)的全局(分布式) 事務(wù)。與所公開的技術(shù)相關(guān)的事務(wù)日志記錄的重要屬性是
      1.本地工作單元的唯一事務(wù)標(biāo)識符(TXID)。
      2.全局工作單元的唯一全局事務(wù)標(biāo)識符(GTXID)。
      3.全局事務(wù)中的參與節(jié)點的數(shù)量。
      4.參與全局事務(wù)的每個節(jié)點的唯一標(biāo)識符的列表。
      在大多數(shù)情況下,這些屬性由全局事務(wù)管理器或協(xié)調(diào)器來維護和記錄。然而,也可 以為兩個獨立的數(shù)據(jù)庫提供此信息。在此情形下,應(yīng)用程序負(fù)責(zé)生成相關(guān)的全局事務(wù)屬性 并確保變更記錄被寫入到事務(wù)日志,以包括每個本地事務(wù)的上述屬性。通過執(zhí)行插入或更 新到被稱為本地數(shù)據(jù)庫內(nèi)的“標(biāo)記”表的特殊表,可以在事務(wù)日志內(nèi)生成變更記錄。對標(biāo)記 表作出的變更被反映在事務(wù)日志中,并可以用來檢索全局事務(wù)屬性。
      本發(fā)明的一個實施例包括有效的復(fù)制方案,該方案基于在目標(biāo)站點確認(rèn)來自每個 源站點的工作的本地部分,以保證故障轉(zhuǎn)移決不會導(dǎo)致部分地應(yīng)用的分布式事務(wù)。不需要 事務(wù)的部分退出或回滾。
      本發(fā)明可應(yīng)用于具有兩個或更多參與的節(jié)點(例如,共享磁盤集群數(shù)據(jù)庫或不共 享任何東西的分區(qū)數(shù)據(jù)庫)的源端數(shù)據(jù)庫和也具有兩個或更多節(jié)點的目標(biāo)數(shù)據(jù)庫之間的 環(huán)境中的分布式事務(wù)基于日志的復(fù)制領(lǐng)域。本發(fā)明還適用于其中源端跨多個獨立數(shù)據(jù)庫, 而目標(biāo)端跨一個或多個獨立數(shù)據(jù)庫或單一數(shù)據(jù)庫的一個或多個節(jié)點的環(huán)境中的分布式事 務(wù)基于日志的復(fù)制。
      本發(fā)明的實施例提供了用于在復(fù)制環(huán)境內(nèi)以高效的方式協(xié)調(diào)分布式事務(wù)的方法, 以便在故障轉(zhuǎn)移之后,當(dāng)停止復(fù)制時或獲取適當(dāng)?shù)逆i定以阻止讀取部分地應(yīng)用的分布式事 務(wù)時,維護全局讀取一致性。這是通過基于本地事務(wù)的全局事務(wù)標(biāo)識符(GTXID)和參與的 節(jié)點的信息(PNI)來協(xié)調(diào)本地事務(wù)來完成的。
      只有在所有參與的節(jié)點都已經(jīng)接收到它們的完整的本地工作單元的情況下,本地 事務(wù)才應(yīng)用于目標(biāo)節(jié)點。此“延遲的應(yīng)用”策略在故障轉(zhuǎn)移的情況下提供跨分布式數(shù)據(jù)庫管 理系統(tǒng)的事務(wù)完整性。假設(shè)在故障轉(zhuǎn)移之前所有懸置的本地事務(wù)都被清洗/提交到目標(biāo)。 在活著的應(yīng)用程序正在從目標(biāo)進行讀取的主動復(fù)制場景下,必須使用兩階段提交協(xié)議來確 保在允許任何本地事務(wù)提交之前每一本地事務(wù)都已經(jīng)獲取了數(shù)據(jù)庫內(nèi)的必要的鎖。
      前面所描述的X/Open分布式事務(wù)協(xié)議(DTP)定義了分布式系統(tǒng)的組件。應(yīng)用程 序(AP)定義了全局事務(wù)邊界和每個資源管理器(RM)要做的工作。事務(wù)管理器(TM)管理 全局事務(wù)。RM向資源(通常是數(shù)據(jù)庫)發(fā)布變更,并負(fù)責(zé)本地事務(wù)。
      一般而言,分布式事務(wù)是由分布式DBMS (數(shù)據(jù)庫管理系統(tǒng))管理的。TM和RM包括 在同一個分布式DBMS內(nèi)。諸如全局事務(wù)標(biāo)識符(GTXID)和參與的節(jié)點(RM)之類的信息包 括在由每個節(jié)點(RM)所擁有的事務(wù)日志內(nèi)。
      管理它們自己的不同的事務(wù)日志的獨立數(shù)據(jù)庫共享TM也是可以的。該TM是一 個邏輯組件,并可以實際嵌入在AP內(nèi)。在此場景下,GTXID以及有關(guān)參與的RM的信息可以 不隱含地包括在由每個RM所擁有的事務(wù)日志中。TM(或AP)可以被修改以顯式地包括該 GTXID和PNI。由TM (或AP)來確定適當(dāng)?shù)腉TXID并能夠唯一地標(biāo)識每個參與的節(jié)點。將 此信息包括在事務(wù)日志中的一個手段是利用每個參與的RM的本地事務(wù)內(nèi)的相關(guān)的信息來 更新“標(biāo)記”資源(例如,數(shù)據(jù)庫中的表)。
      總而言之,此方法可以用于其中在每個RM的事務(wù)日志內(nèi)可獲得GTXID和PNI的所有分布式數(shù)據(jù)庫配置。對于其中GTXID和PNI不輕易可獲得的那些數(shù)據(jù)庫,可以使用“標(biāo) 記”資源策略來在事務(wù)日志內(nèi)提供此信息,其中,它直接與每個本地事務(wù)相關(guān)聯(lián)。
      位于美國加州舊金山市的GoldenGate Software, Inc.銷售事務(wù)性數(shù)據(jù)管理 (TDM)平臺,該平臺允許事務(wù)(從而允許數(shù)據(jù))被跨異質(zhì)的以及同質(zhì)的系統(tǒng)復(fù)制。TDM允許 跨不同的數(shù)據(jù)庫系統(tǒng)以及不同的機器體系結(jié)構(gòu)地復(fù)制數(shù)據(jù),以提供基于日志的復(fù)制(LBR)。 該復(fù)制是通過讀取源數(shù)據(jù)庫的事務(wù)日志并將捕捉到的事務(wù)傳播到目標(biāo)數(shù)據(jù)庫來異步地執(zhí) 行的。LBR的流程如下
      1.應(yīng)用程序啟動新事務(wù)。
      2.事務(wù)生成變更數(shù)據(jù)和事務(wù)控制記錄。
      3.數(shù)據(jù)庫日志管理器或另一進程將變更數(shù)據(jù)和事務(wù)控制記錄寫入到事務(wù)日志中。
      4.捕捉進程讀取事務(wù)日志并提取事務(wù)的操作。
      5.捕捉進程維護所有事務(wù)操作的隊列。
      6. 一旦事務(wù)提交,就將變更發(fā)送給按提交順序排列的輸出隊列(永久性存儲器)。 輸出一般駐留在目標(biāo)系統(tǒng)上。
      7.目標(biāo)系統(tǒng)上的傳遞進程讀取輸出隊列,并在該數(shù)據(jù)庫中重放該變更。
      因此,基于事務(wù)性日志的復(fù)制因此是通過將來自事務(wù)日志的變更數(shù)據(jù)和事務(wù)控制 記錄轉(zhuǎn)換為隨后在目標(biāo)數(shù)據(jù)庫中執(zhí)行的事務(wù)來實現(xiàn)的數(shù)據(jù)復(fù)制方法。
      為支持分布式系統(tǒng)中的事務(wù)性一致性,在操作6和7之間需要協(xié)調(diào)操作。目標(biāo)端協(xié) 調(diào)器確保直到參與全局事務(wù)的所有節(jié)點都已經(jīng)確認(rèn)收到它們的完整的本地工作單元之前, 在本地數(shù)據(jù)庫中沒有傳遞進程重放變更。有四個主要組件用于支持分布式事務(wù)的復(fù)制LBR 捕捉進程、LBR協(xié)調(diào)進程、LBR讀取器進程和LBR傳遞進程。
      LBR捕捉進程是讀取源數(shù)據(jù)庫的事務(wù)日志并將本地事務(wù)性的變更捕捉到按提交順 序排列的隊列中的機器進程。LBR協(xié)調(diào)進程是協(xié)調(diào)全局事務(wù)并確定傳遞進程何時可以將變 更應(yīng)用到目標(biāo)數(shù)據(jù)庫的機器進程。LBR讀取器進程是作為協(xié)調(diào)進程的代理以從每個目標(biāo)節(jié) 點上的隊列中進行讀取,以收集有關(guān)全局事務(wù)的信息的機器進程。LBR傳遞進程是從按提交 順序排列的隊列中進行讀取并在目標(biāo)數(shù)據(jù)庫中應(yīng)用由LBR捕捉進程所捕捉的變更的機器 進程。
      通過參考圖1,可更加充分地理解前述的進程。圖1示出了系統(tǒng)100,其包括經(jīng)由 網(wǎng)絡(luò)104被復(fù)制為節(jié)點102_A'、102_B'和102_C'的第一組節(jié)點102_A、102_B和102_C。 每一個節(jié)點都可以是諸如服務(wù)器之類的單獨的機器。在此示例中,節(jié)點102_A運行應(yīng)用或 應(yīng)用程序(AP) 106,該應(yīng)用程序106生成被記錄在表108_A(客戶表)、108_B (帳戶表)和 108_C(訂單表)中的變更。此外,變更還被記錄在由單個資源管理器RM(例如,數(shù)據(jù)庫)所 擁有的本地事務(wù)日志110_A、110_B* 110_C中。捕捉進程112_A、112_B* 112_(用于每一 源節(jié)點上,以捕捉被記錄在各自的事務(wù)日志110_A、110_B* 110_C中的變更數(shù)據(jù)。捕捉進程 使用在事務(wù)日志中表示的唯一事務(wù)標(biāo)識符(TXID)來分組本地事務(wù)內(nèi)的所有記錄??梢栽?每一個節(jié)點上使用多個捕捉進程來實現(xiàn)可縮放性。對于每一個事務(wù),捕捉進程也捕捉事務(wù) 的將被協(xié)調(diào)器用來分組和協(xié)調(diào)分布式事務(wù)的上下文信息。此上下文信息最低限度地包含進 行協(xié)調(diào)所需的GTXID和PNI。還可以包括諸如提交時間戳、提交操作的邏輯序列號(LSN)、 事務(wù)的開始的LSN、事務(wù)中的記錄數(shù)目,以及發(fā)起節(jié)點標(biāo)識符之類的另外的上下文信息以用于審計目的。
      一旦事務(wù)提交,該事務(wù)的所有變更數(shù)據(jù)記錄都被寫入到永久性隊列中。具體而言, 變更數(shù)據(jù)記錄被通過網(wǎng)絡(luò)104傳遞到隊列114。圖1示出了隊列114_A、114_B和114_C。
      協(xié)調(diào)器進程(CP) 118用于“延遲的應(yīng)用”策略,以便直到整個全局事務(wù)都跨本地隊 列地完全被確認(rèn)之前,沒有傳遞進程將傳播變更到目標(biāo)數(shù)據(jù)庫。CP可以駐留在任何一個目 標(biāo)節(jié)點上,或者甚至網(wǎng)絡(luò)中的一個單獨的節(jié)點上。在此示例中,在節(jié)點102_A'上示出了協(xié) 調(diào)器118。CP負(fù)責(zé)收集和跟蹤從各個讀取器進程接收到的全局事務(wù)信息。
      讀取器進程(RP) 116作為CP的代理,以跨所有目標(biāo)節(jié)點讀取由捕捉進程所生成的 永久性的按提交順序排列的隊列。這些隊列一般駐留在互補的目標(biāo)節(jié)點或附加的存儲器 上。如此,如圖1所示,讀取器進程116_Α,116_Β Ρ 116_C分別與隊列114_A、114_B* 114_ C相關(guān)聯(lián)。
      RP掃描它們的本地隊列,以查找作為全局事務(wù)的一部分有多于一個的節(jié)點參與的 事務(wù)。當(dāng)它發(fā)現(xiàn)一個時,它將該事務(wù)的起始位置存儲在該隊列內(nèi)。當(dāng)RP已經(jīng)讀取了完整的 事務(wù)之后,將全局事務(wù)標(biāo)識符(GTXID)添加到RP的應(yīng)答緩存中。
      當(dāng)應(yīng)答緩存已滿或當(dāng)發(fā)生超時時,清洗緩存,并將信息發(fā)回到CP 118。在一個實施 例中,對CP的應(yīng)答包括(1)唯一隊列標(biāo)識符,(2)表示全局事務(wù)的開始的唯一隊列位置, (3)GTXID(全局事務(wù)標(biāo)識符),(4)父節(jié)點號碼,以及(5)參與的節(jié)點信息(PNI)。如果RP 只正在處理非全局事務(wù),那么它必須仍以其讀取位置周期性地對CP作出響應(yīng)??梢酝ㄟ^計 時器控制或通過使用在RP必須以其當(dāng)前讀取位置作出響應(yīng)之前可以處理的非全局事務(wù)的 最大數(shù)量的閾值來進行控制。當(dāng)在空隊列中等待或在文件結(jié)束處等待時,RP也必須周期性 地作出響應(yīng)。
      CP將事務(wù)信息存儲在事務(wù)表中。此事務(wù)表是持久的,用于從中斷停機狀態(tài)恢復(fù)。 為提高效率可以使用存儲器映射的文件。CP也維護每一個RP的讀取位置的檢查點。例如, 表120可以用來存儲檢查點信息。RP的設(shè)置檢查點的讀取位置保持與持久的事務(wù)表122同 步。CP迫使到事務(wù)表122的臟頁在寫入檢查點之前排除(fault out)。在恢復(fù)之后,CP重 新加載事務(wù)表122,并基于為每個RP記錄的檢查點位置繼續(xù)讀取(經(jīng)由RP)。
      CP使用它從所有RP接收到的事務(wù)信息來跟蹤跨所有目標(biāo)節(jié)點表示的本地事務(wù)。 它使用此事務(wù)信息來基于PNI確定何時跨所有參與的節(jié)點地完全表示全局事務(wù)。當(dāng)每個參 與的節(jié)點(PN)的完整的本地事務(wù)在本地隊列內(nèi)已持續(xù)存在時,CP確定可以由單個傳遞進 程124_A、124_B* 124_C處理(S卩,應(yīng)用)全局事務(wù)。結(jié)果,重構(gòu)原始表。重構(gòu)的表通過圖 1 的表 108_A' U08_B'和 108_C'來表示。
      注意,為提高效率,使用上文定義的不使用兩階段提交的協(xié)議??杀WC目標(biāo)表現(xiàn)出 全局讀取一致性(跨所有目標(biāo)節(jié)點),只要傳遞進程已經(jīng)對于已經(jīng)被CP確認(rèn)的事務(wù)應(yīng)用了 所有變更數(shù)據(jù)。對于主動-被動式的故障轉(zhuǎn)移,或?qū)τ诋?dāng)前正在應(yīng)用的全局事務(wù)在本地節(jié) 點之間目標(biāo)應(yīng)用程序不暴露于較小的不一致性的任何場景,這是有效的解決方案。
      也可以稍微修改此協(xié)議,以保證沒有本地節(jié)點提交全局事務(wù)的它的部分,直到每 一本地節(jié)點都已經(jīng)成功地應(yīng)用其自己的本地事務(wù)的所有數(shù)據(jù)。協(xié)調(diào)器和傳遞進程之間的此 兩階段提交協(xié)議確保資源管理器(數(shù)據(jù)庫)在任何本地提交之前跨所有目標(biāo)節(jié)點地保留鎖 定,以保證活著的應(yīng)用程序的一致性。如果應(yīng)用程序訪問已經(jīng)被全局事務(wù)修改的數(shù)據(jù),那么,它必須等待懸置的鎖定,并將具有數(shù)據(jù)的讀取一致視圖。這是對于主動目標(biāo)系統(tǒng)的有效 解決方案。
      使用傳遞進程來將變更數(shù)據(jù)從目標(biāo)上的按提交順序排列的隊列傳播到本地目標(biāo) 節(jié)點。多個傳遞進程可以駐留在同一個目標(biāo)節(jié)點上。為取得可縮放性,可以給每一傳遞進程 分配同一個隊列的一組數(shù)據(jù)。此分配可以按表名稱、鍵范圍,或基于邏輯數(shù)據(jù)分區(qū)來進行。
      在配置期間,每一傳遞進程都與CP相關(guān)聯(lián)。當(dāng)傳遞進程從隊列中讀取時,它必須 首先判斷事務(wù)對于其目標(biāo)節(jié)點是否是自治的(非全局的)或它是否為全局事務(wù)的一部分。 如果事務(wù)是非全局的,那么,傳遞進程可以將該事務(wù)應(yīng)用到目標(biāo)。如果事務(wù)是全局事務(wù)的一 部分,那么該傳遞進程必須向CP發(fā)送請求,以確認(rèn)傳遞進程是否可以處理該事務(wù)。CP跨所 有節(jié)點使用其對全局事務(wù)的知識,以判斷傳遞進程是否可以對于本地事務(wù)應(yīng)用變更數(shù)據(jù)。
      如果參與全局事務(wù)的每一個節(jié)點上的隊列都包含完整的本地事務(wù),則處理事務(wù)是 安全的,并且CP向傳遞進程發(fā)送“ack”。否則,發(fā)送“nak”,并且傳遞進程延遲指定的時間 段,隨后查詢CP。在“nak” 了可配置次數(shù)的重試之后,傳遞進程可以輸出警告消息。
      當(dāng)傳遞進程向CP發(fā)出請求時,CP可能已經(jīng)吸取了傳遞進程還沒有讀取的有關(guān)源 隊列內(nèi)的事務(wù)的信息。為降低流量,CP可以以對于懸置的事務(wù)請求的“ack”作出響應(yīng),加上 對于“已確認(rèn)的”事務(wù)的在隊列內(nèi)表示高水位線的唯一位置。在向CP發(fā)出另一請求之前, 傳遞進程可以安全地應(yīng)用所有變更,直到該高水位線。
      如果傳遞進程結(jié)束,則它可向CP作出副本請求。如果傳遞進程請求帶有隊列位置 的GTXID以及CP中的最舊的已知事務(wù)之前的時間(基于相關(guān)聯(lián)的隊列位置),則CP指出處 理事務(wù)是安全的。
      為提高效率,傳遞進程可以將本地事務(wù)分組到單一事務(wù)中(帶有單一提交)。如果 傳遞進程具有未完成的“分組的”事務(wù)并且等待有關(guān)全局事務(wù)的“ack”持續(xù)了一段時間,那 么,傳遞進程應(yīng)該提交“分組的”事務(wù),以消除目標(biāo)中的任何爭用(鎖),而同時等待全局事 務(wù)被CP確認(rèn)。
      可以按如下方式來表征本發(fā)明的實施例。
      ·全局事務(wù)標(biāo)識符G表示跨所有參與的節(jié)點的工作單元。
      ·本地事務(wù)T表示參與被標(biāo)識為G的全局事務(wù)中的單一節(jié)點的本地工作單元。
      ·列表L表示全局事務(wù)G內(nèi)的被唯一地標(biāo)識的參與節(jié)點的列表。
      ·持久性按提交順序排列的事務(wù)隊列Q。
      ·事務(wù)隊列Q內(nèi)的唯一位置P。
      ·事務(wù)表TT在協(xié)調(diào)期間管理懸置的全局事務(wù)。
      ·檢查點C支持恢復(fù)協(xié)調(diào)進程。
      基于前面的內(nèi)容,可以按如下方式表征本發(fā)明的實施例。
      1.對于參與分布式事務(wù)的獨立數(shù)據(jù)庫,G和L可以未隱含地表示在它們各自的事 務(wù)日志中。
      1. 1在此場景下,應(yīng)用或事務(wù)管理器(可以在應(yīng)用程序內(nèi))可以被修改,以通過作 為每一本地事務(wù)T的一部分來更新“標(biāo)記”表,以迫使此信息到事務(wù)日志中。
      1. 2在每一本地事務(wù)T的范圍內(nèi),“標(biāo)記”記錄最低限度地包含G和L。
      2.對于每一個源節(jié)點
      2. 1讀取相關(guān)聯(lián)的事務(wù)日志并捕捉完整的本地事務(wù)T。
      2. 2如果T是全局事務(wù)中的參與者
      2. 2. 1記錄相關(guān)聯(lián)的全局事務(wù)標(biāo)識符G。
      2. 2. 2記錄唯一地標(biāo)識的參與的節(jié)點的列表L。
      2. 3 一旦提交了 T,就將T的內(nèi)容,與G和L 一起,寫入到持久性按提交順序排列的 隊列Q。
      3.對于每一個目標(biāo)節(jié)點
      3. 1傳遞進程從其本地隊列Q中讀取。
      3. 2應(yīng)用并提交任何非全局事務(wù)。
      3. 3 一旦被協(xié)調(diào)進程確認(rèn),就處理任何本地事務(wù)T。
      3. 4如果等待了對全局性地分布式事務(wù)的確認(rèn)指定的時間段,則提交任何懸置的 本地事務(wù)T。
      4.協(xié)調(diào)器從每一本地節(jié)點上的Q讀取。
      4. 1可以使用讀取器進程來通過網(wǎng)絡(luò)進行遠程讀取。
      5.協(xié)調(diào)器組合來自所有目標(biāo)隊列的與全局事務(wù)G相關(guān)聯(lián)的信息,并將它存儲在TT 中。
      6. 一旦L中的所有參與的節(jié)點被跨所有目標(biāo)隊列地表示,則為發(fā)出請求的傳遞進 程確認(rèn)處理G是安全的。直到該時間,所有請求都接收到否定確認(rèn)。
      7.協(xié)調(diào)器周期性地保持TT中的信息,并寫入檢查點C,包括每個Q的每個位置P。
      在圖2的過程流中概述了前面的操作。讀取源節(jié)點事務(wù)日志以捕捉事務(wù)數(shù)據(jù),包 括本地事務(wù)數(shù)據(jù)、全局事務(wù)標(biāo)識符以及參與的節(jié)點數(shù)據(jù)200。全局事務(wù)標(biāo)識符和參與的節(jié)點 數(shù)據(jù)存儲在目標(biāo)節(jié)點隊列202中。然后,訪問目標(biāo)節(jié)點隊列以構(gòu)建全局事務(wù)數(shù)據(jù)204。基于 本地事務(wù)數(shù)據(jù)和全局事務(wù)數(shù)據(jù)206構(gòu)建目標(biāo)表。
      本領(lǐng)域的技術(shù)人員將認(rèn)識到與所公開的技術(shù)相關(guān)聯(lián)的若干個優(yōu)點。首先,它在故 障轉(zhuǎn)移之后在復(fù)制環(huán)境中提供跨分布式數(shù)據(jù)庫的數(shù)據(jù)的事務(wù)性的讀取一致性。當(dāng)通常在目 標(biāo)端停止復(fù)制時,它在復(fù)制環(huán)境中提供跨分布式數(shù)據(jù)庫的數(shù)據(jù)的讀取一致性。它減輕兩階 段提交對于消極目標(biāo)以最少的開銷和最大吞吐量提供事務(wù)性的讀取一致性的要求。當(dāng)“活 著的”應(yīng)用程序正在從活動目標(biāo)讀取數(shù)據(jù)時,它允許協(xié)調(diào)器和傳遞進程之間的兩階段提交 協(xié)議維護事務(wù)性的讀取一致性。它允許分布式協(xié)調(diào)進程駐留在網(wǎng)絡(luò)中的任何節(jié)點上,以根 據(jù)需要降低源和目標(biāo)系統(tǒng)上的開銷或資源爭用。不需要中止或回滾即可在目標(biāo)系統(tǒng)上取得 一致性??梢允褂霉?yīng)商提供的“標(biāo)記”資源,以將全局事務(wù)標(biāo)識符和參與的節(jié)點信息包括 到源上的每個本地事務(wù)日志中,以跨獨立數(shù)據(jù)庫地支持全局事務(wù)。此外,還可以跨不是單一 分布式數(shù)據(jù)庫管理系統(tǒng)的一部分的獨立數(shù)據(jù)庫管理系統(tǒng)來協(xié)調(diào)事務(wù)。它允許將數(shù)據(jù)應(yīng)用到 不支持分布式事務(wù)語義的目標(biāo)數(shù)據(jù)庫。協(xié)調(diào)狀態(tài)是可恢復(fù)的,以承受故障。
      本發(fā)明的實施例涉及帶有計算機可讀介質(zhì)的計算機存儲器產(chǎn)品,該計算機可讀介 質(zhì)具有用于執(zhí)行各種計算機實現(xiàn)的操作的計算機代碼。介質(zhì)和計算機代碼可以是為本發(fā)明 的用途而設(shè)計和構(gòu)建的那些,或者,它們可以是公知的并且對精通軟件技術(shù)的人可用的類 型。計算機可讀介質(zhì)的示例包括,但不僅限于諸如硬盤、軟盤,以及磁帶之類的磁性介質(zhì); 諸如CD-ROM、DVD和全息照相裝置之類的光學(xué)介質(zhì);磁光介質(zhì);以及,專門地被配置為存儲和執(zhí)行程序代碼的硬件設(shè)備,比如專用集成電路(“ASIC”)、可編程邏輯器件(“PLD”)、以 及ROM和RAM設(shè)備。計算機代碼的示例包括諸如由編譯器產(chǎn)生的機器代碼,以及包含由計 算機使用解釋器來執(zhí)行的更高級別的代碼的文件。例如,可以使用Java、C++,或其他面向 對象的編程語言和開發(fā)工具來實現(xiàn)本發(fā)明的實施例。本發(fā)明的另一實施例可以通過硬連線 的電路代替機器可執(zhí)行的軟件指令或與機器可執(zhí)行的軟件指令相結(jié)合地實現(xiàn)。
      前面的描述,為解釋起見,使用了特定命名法來提供對本發(fā)明的全面理解。然而, 對所屬領(lǐng)域技術(shù)人員顯而易見的是,不需要具體細節(jié)來實施本發(fā)明。如此,前面的對本發(fā)明 的特定實施例的描述只是為了說明和描述的目的。它們不旨在成為詳盡的公開或?qū)⒈景l(fā) 明限于所公開的準(zhǔn)確的形式;顯然,考慮到上文的原理,許多修改和變化也是可以的。選擇 和描述的實施例只為了最好地說明本發(fā)明的原理以及其實際應(yīng)用,從而使精通本技術(shù)領(lǐng)域 的其他人最佳地利用本發(fā)明,帶有適合于特定用途的各種修改的各種實施例也是可以想見 的。旨在由下面的權(quán)利要求以及它們的等效內(nèi)容限定本發(fā)明的范圍。
      權(quán)利要求
      1.一種計算機可讀存儲介質(zhì),包括用于執(zhí)行下列操作的可執(zhí)行的指令讀取源節(jié)點事務(wù)日志以捕捉事務(wù)數(shù)據(jù),包括本地事務(wù)數(shù)據(jù)、全局事務(wù)標(biāo)識符以及參與 節(jié)點數(shù)據(jù);將所述全局事務(wù)標(biāo)識符和參與節(jié)點數(shù)據(jù)存儲在目標(biāo)節(jié)點隊列中;訪問目標(biāo)節(jié)點隊列以形成全局事務(wù)數(shù)據(jù);以及基于所述本地事務(wù)數(shù)據(jù)和所述全局事務(wù)數(shù)據(jù)構(gòu)建目標(biāo)表。
      2.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,利用數(shù)據(jù)捕捉模塊來處理所述源 節(jié)點事務(wù)日志。
      3.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),還包括經(jīng)由標(biāo)記表來將所述全局事務(wù)標(biāo) 識符和參與節(jié)點數(shù)據(jù)應(yīng)用到事務(wù)日志的可執(zhí)行的指令。
      4.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括形成包括按提交順序排列 的本地事務(wù)和相關(guān)聯(lián)的全局事務(wù)標(biāo)識符和參與節(jié)點數(shù)據(jù)的永久性隊列的可執(zhí)行的指令。
      5.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,所述用于訪問的可執(zhí)行的指令包 括經(jīng)由網(wǎng)絡(luò)訪問目標(biāo)節(jié)點隊列的可執(zhí)行的指令。
      6.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括處理所述全局事務(wù)標(biāo)識符 以全局性地確認(rèn)收到所有本地事務(wù)的可執(zhí)行的指令。
      7.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括保留事務(wù)信息和所述目標(biāo) 節(jié)點隊列內(nèi)的讀取位置以便于數(shù)據(jù)恢復(fù)的可執(zhí)行的指令。
      8.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括標(biāo)識整個全局事務(wù)被跨所 述目標(biāo)節(jié)點隊列地表示的可執(zhí)行的指令。
      9.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括實現(xiàn)兩階段提交協(xié)議以確 保在為每一個節(jié)點上的每個本地事務(wù)獲取鎖定之前沒有本地事務(wù)被提交的可執(zhí)行的指令。
      10.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括促進同質(zhì)的分布式源節(jié)點 的基于日志的復(fù)制的可執(zhí)行的指令。
      11.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括促進異質(zhì)的分布式源節(jié)點 的基于日志的復(fù)制的可執(zhí)行的指令。
      12.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括在指定的時間點為了目標(biāo) 側(cè)的事務(wù)一致性而在目標(biāo)節(jié)點處暫停數(shù)據(jù)復(fù)制的可執(zhí)行的指令。
      13.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括在同質(zhì)的分布式目標(biāo)系統(tǒng) 中構(gòu)建目標(biāo)表的可執(zhí)行的指令。
      14.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括在異質(zhì)的分布式目標(biāo)系統(tǒng) 中構(gòu)建目標(biāo)表的可執(zhí)行的指令。
      15.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括在非分布式目標(biāo)系統(tǒng)中構(gòu) 建目標(biāo)表的可執(zhí)行的指令。
      16.如權(quán)利要求1所述的計算機可讀存儲介質(zhì),其中,還包括在不支持兩階段提交語義 的目標(biāo)系統(tǒng)中構(gòu)建目標(biāo)表的可執(zhí)行的指令。
      全文摘要
      計算機可讀存儲介質(zhì)包括讀取源節(jié)點事務(wù)日志,以捕捉包括本地事務(wù)數(shù)據(jù)、全局事務(wù)標(biāo)識符以及參與節(jié)點數(shù)據(jù)的事務(wù)數(shù)據(jù)的可執(zhí)行指令。全局事務(wù)標(biāo)識符和參與節(jié)點數(shù)據(jù)存儲在目標(biāo)節(jié)點隊列中。訪問目標(biāo)節(jié)點隊列以形成全局事務(wù)數(shù)據(jù)。基于本地事務(wù)數(shù)據(jù)和全局事務(wù)數(shù)據(jù)構(gòu)建目標(biāo)表。
      文檔編號G06F17/30GK102037463SQ200980110934
      公開日2011年4月27日 申請日期2009年1月16日 優(yōu)先權(quán)日2008年2月26日
      發(fā)明者A·帕里克, C·麥卡利斯特, J·謝潑德, S·科爾賓 申請人:甲骨文國際公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1