相關申請案交叉申請
本申請要求2015年1月16日遞交的發(fā)明名稱為“用于數(shù)據(jù)劃分的分布式關系數(shù)據(jù)庫管理系統(tǒng)中事務的高吞吐量處理的系統(tǒng)(systemforhigh-throughputhandlingoftransactionsinadata-partitioned,distributed,relationaldatabasemanagementsystem)”的第14/599,043號美國非臨時專利申請案的在先申請優(yōu)先權,該在先申請的全部內容以引用的方式并入本文本中。
背景技術:
硬件技術的發(fā)展,具體是計算機處理和存儲能力的發(fā)展,促使電子數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)(databasemanagementsystems,dbms)在幾乎每種商業(yè)和產業(yè)中激增。數(shù)據(jù)庫對于存儲、操作和處理信息集合來說已變得必不可少。通常,數(shù)據(jù)庫中收集的一個或多個數(shù)據(jù)單元通過一個事務訪問。訪問通過一個或多個進程執(zhí)行,這些進程可以是專用事務處理線程。當數(shù)據(jù)必須由若干線程同時訪問時會產生各種問題。
在傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)中,各個事務的訪問模式是任意的且不協(xié)調的,因此各個線程的訪問模式也是如此。為了確保數(shù)據(jù)完整性,每個線程進入其執(zhí)行的每個事務的生命周期中的一個或多個部分。為了防止數(shù)據(jù)損壞,在線程訪問一個部分時,將邏輯鎖應用到該部分,以便在當前線程在進行處理時不允許其它線程訪問該部分。然而關鍵部分會引起鎖獲取和釋放,獲取和釋放的開銷隨著并行線程數(shù)量的增加而增加。但是,在競爭激烈的關鍵部分會發(fā)生延遲,對性能產生不利影響。競爭的主要原因是數(shù)據(jù)訪問不協(xié)調,即傳統(tǒng)事務處理系統(tǒng)的特性。因為這些系統(tǒng)(通常)將每個事務分配給一個單獨的線程,所以在共享數(shù)據(jù)訪問期間,線程經(jīng)常相互競爭。
為了減輕將邏輯鎖應用到整個數(shù)據(jù)區(qū)的影響,可以將數(shù)據(jù)區(qū)劃分為較小的部分。每個“鎖”僅應用到線程正在操作的特定分區(qū),從而使其它分區(qū)由執(zhí)行其它事務的其它線程自由訪問。鎖管理器負責保持并發(fā)執(zhí)行事務之間的隔離,從而提供接口供事務請求、升級、和釋放鎖。但是,當并發(fā)執(zhí)行事務的數(shù)量由于處理能力的提高而增長時,在典型的事務處理系統(tǒng)中,集中式鎖管理器經(jīng)常是第一競爭組件和可擴展性瓶頸。
根據(jù)最近提議的針對競爭問題的替代方案(面向數(shù)據(jù)的架構),一種方案是將每個線程與數(shù)據(jù)庫的一個不同子集耦合,而不是將每個線程與一個事務耦合。事務在訪問不同的數(shù)據(jù)時從一個線程流向另一個線程。事務根據(jù)它們訪問的數(shù)據(jù)分解為較小的動作,并路由到對應的線程來執(zhí)行。在這一方案下,數(shù)據(jù)對象跨同一事務的多個動作進行共享,以便控制事務的分布式執(zhí)行并且在有數(shù)據(jù)依賴關系的動作之間傳輸數(shù)據(jù)。這些共享對象稱為“集合點”或“rvp”。如果兩個動作之間存在數(shù)據(jù)依賴關系,則在它們之間放置一個rvp。rvp將事務執(zhí)行分為不同的階段。系統(tǒng)無法并發(fā)執(zhí)行同一事務中的不同階段的動作。
然而,雖然所提議的替代方案針對競爭相關的延遲提供了一種方案,但是這一方案是針對處理器緊密耦合并構成單個數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)存儲實施方式,對分布式數(shù)據(jù)庫來說不適用于和/或是次優(yōu)的。在分布式數(shù)據(jù)庫中,存儲設備并非全部附接到cpu等常見處理單元,而可以存儲在分散在互聯(lián)計算機網(wǎng)絡上的多個計算機中。
技術實現(xiàn)要素:
本發(fā)明內容以簡化的方式介紹了下文在具體實施方式中進一步描述的概念的選擇。本發(fā)明內容并不旨在識別請求保護的主題的關鍵特征或基本特征,也不旨在用于限制請求保護的主題的范圍。
本發(fā)明針對將在分布式面向數(shù)據(jù)的oltp環(huán)境中使用的一種新穎的、基于主題的消息架構(包括模式、協(xié)議、命名規(guī)則等)。根據(jù)請求保護的主題的一個方面,所述基于主題的消息架構可以實施為一種發(fā)布-訂閱(publication-subscription,pub-sub)消息模式。
在所述基于主題的系統(tǒng)的一項或多項實施例中,消息被發(fā)布到“主題”或命名為邏輯信道。基于主題的系統(tǒng)中的訂戶將收到發(fā)布到他們所訂閱的主題的所有消息,一個主題的所有訂戶將收到相同的消息。發(fā)布方負責定義訂戶可以訂閱的消息類別?;谥黝}的消息接口提高了分布式數(shù)據(jù)庫管理系統(tǒng)的可擴展性,并且為消息遞送提供了一種穩(wěn)健的機制。通過在分布式面向數(shù)據(jù)的架構上使用基于主題的消息,兩個主要因素促進了系統(tǒng)吞吐量的增長,即,消除了鎖競爭以及將通信消息委托給一個單獨的消息系統(tǒng)。這兩個因素都能夠顯著減輕cpu工作負載,使得數(shù)據(jù)庫節(jié)點中的cpu能夠專注于執(zhí)行有用的數(shù)據(jù)庫工作。這就是說,分布式面向數(shù)據(jù)的事務處理系統(tǒng)的吞吐量因此顯著提高,并且系統(tǒng)能夠執(zhí)行更大的分布式規(guī)模的事務。
根據(jù)請求保護的主題的一個方面,提供了一種用于在聯(lián)機分布式數(shù)據(jù)庫系統(tǒng)中執(zhí)行數(shù)據(jù)庫事務的方法。在一實施例中,可通過以下操作執(zhí)行數(shù)據(jù)庫事務:從客戶端設備接收面向數(shù)據(jù)的事務,在協(xié)調器中為所述事務生成提交信道和事務計劃,從現(xiàn)有多個邏輯信道中識別對應的邏輯信道,以及為映射到所述邏輯信道的處理線程訂閱所述提交信道。然后,將指令和通知從所述協(xié)調器發(fā)布到所述提交信道,并轉發(fā)給訂閱線程。所述線程根據(jù)所述發(fā)布的指令執(zhí)行數(shù)據(jù)庫動作,所述動作的完成被發(fā)布到所述協(xié)調器和所述提交信道(然后發(fā)布到所述提交信道的訂戶)。
在一項或多項實施例中,事務計劃包括分布在多個階段的多個數(shù)據(jù)庫動作,一個階段的所述動作的完成在各個序列化點處跟蹤,所述序列化點分隔所述多個階段并傳達當前階段的完成。在同一個階段中執(zhí)行的數(shù)據(jù)庫動作可并行執(zhí)行或大致并行執(zhí)行,一個事務中的所有階段都完成后,所述事務結束。在一項或多項其它實施例中,所有階段的完成提示所述協(xié)調器執(zhí)行兩階段提交協(xié)議,其可包括向所述處理線程發(fā)送查詢以進行提交或回滾投票。如果所有處理線程都返回提交選票,則將所述數(shù)據(jù)庫動作的執(zhí)行結果提交給所述數(shù)據(jù)庫節(jié)點,所述事務完成。
根據(jù)本文描述的請求保護的主題的實施例,實現(xiàn)了一種具有高性能、吞吐量、審計、調試和監(jiān)控屬性的高吞吐量、分布式、多分區(qū)事務系統(tǒng)。另外,可實現(xiàn)處理單元的一種松散耦合的分布式系統(tǒng),所述系統(tǒng)已經(jīng)具有內部的、面向數(shù)據(jù)的事務管理機制。結合下文的描述,本發(fā)明的附加優(yōu)勢和特征將變得顯而易見,并且可通過隨附權利要求書中特別指出的工具和組合來實現(xiàn)。
附圖說明
附圖包含在并且構成本說明書的一部分,示出了本發(fā)明的各種實施例,并且與描述內容一起用于解釋本發(fā)明的原則:
圖1描繪了根據(jù)本發(fā)明實施例的分布式數(shù)據(jù)庫系統(tǒng)中的示例性基于主題的消息架構的方框圖。
圖2描繪了根據(jù)本發(fā)明實施例的分布式數(shù)據(jù)庫系統(tǒng)中的示例性發(fā)布/訂閱數(shù)據(jù)流程圖的方框圖。
圖3描繪了根據(jù)本發(fā)明實施例的跨多個階段分布的示例性事務執(zhí)行計劃的方框圖。
圖4描繪了根據(jù)本發(fā)明實施例的表示主題概要的示例性數(shù)據(jù)結構。
圖5描繪了根據(jù)本發(fā)明實施例的跨多個階段分布的示例性事務的時序圖。
圖6描繪了根據(jù)本發(fā)明實施例的用于執(zhí)行聯(lián)機分布式數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫事務的過程的示例性流程圖。
圖7描繪了本發(fā)明實施例可在其上執(zhí)行的示例性通用計算環(huán)境。
具體實施方式
現(xiàn)將詳細地對請求保護的主題的優(yōu)選實施例、用于射線成像系統(tǒng)的方法和系統(tǒng)做出參考,其示例在附圖中示出。雖然結合優(yōu)選實施例描述該請求保護的主題,但應該理解它們不是旨在將請求保護的主題限制于這些實施例。相反,請求保護的主題旨在覆蓋可以包括在由附加的權利要求書的精神和范圍內的替代物、修改和等同物。
此外,在本請求保護的主題的實施例的以下具體描述中,闡述許多具體細節(jié)以便提供對本請求保護的主題的透徹理解。然而,所屬領域的普通技術人員將認識到,可以在沒有這些具體細節(jié)的情況下實踐本請求保護的主題。在其它實例中沒有詳細描述眾所周知的方法、流程、部件和電路,以免對本請求保護的主題的各方面造成不必要地模糊。
該具體實施方式的一些部分按照程序、步驟、邏輯塊、處理、以及對計算機存儲器中的數(shù)據(jù)位的操作的其它符號表示來呈現(xiàn)。這些描述和表示是數(shù)據(jù)處理領域技術人員向該領域其他技術人員有效傳達工作實質內容使用的方法。將程序、計算機產生的步驟、邏輯塊、過程等一般設想為首尾一致的步驟或指令序列,以產生期望的結果。這些步驟需要物理量的物理操控。通常,并不是完全必須的,這些量以電信號或磁信號的形式存在,可以被存儲、轉移、合并和比較,否則將在電腦系統(tǒng)中被操控。有時候這種方法被證明是行之有效的,主要出于常見用法的考慮,將這些信號作為比特位、數(shù)值、元素、符號、字符、術語、或數(shù)字等等。
然而,應牢記,所有這些和類似術語與適當物理量相關聯(lián),且僅為應用于這些量的方便標簽。除非確切地陳述為從以下論述顯而易見,否則應了解,在本請求保護的主題中,利用例如“存儲”、“創(chuàng)建”、“保護”、“接收”、“加密”、“解密”、“破壞”等術語的論述是指將表示為計算機系統(tǒng)的寄存器和存儲器內的物理(電子)量的數(shù)據(jù)操控和變換為類似地表示為計算機系統(tǒng)存儲器或寄存器或其它此類信息儲存、傳輸或顯示設備內的物理量的其它數(shù)據(jù)的、包括內嵌系統(tǒng)的計算機系統(tǒng)或集成電路或類似電子計算設備的動作和進程。
相應地,所請求保護的主題的實施例提供了一種將在聯(lián)機事務處理(onlinetransactionprocessing,oltp)系統(tǒng)等分布式面向數(shù)據(jù)的環(huán)境中使用的基于主題的消息架構。根據(jù)一實施例,基于主題的消息架構可包括通過發(fā)布/訂閱消息總線可通信地耦合到一個或多個分布式數(shù)據(jù)庫的協(xié)調器。圖1描繪了這種架構的示例性配置100。
如圖1所示,在事務協(xié)調器103中接收事務101。在一項或多項實施例中,事務可實施為來自客戶端設備的sql請求。事務協(xié)調器可例如實施為計算設備,例如web主機和/或服務器。事務可通過存儲在一個或多個數(shù)據(jù)庫節(jié)點中的數(shù)據(jù)執(zhí)行。這些節(jié)點可包括分布式(遠程放置的)計算設備,每個計算設備存儲數(shù)據(jù)的一個或多個部分(分區(qū))。在替代性實施例中,這些節(jié)點可包括共置但不同的計算系統(tǒng),或者遠程和共置計算系統(tǒng)這兩者的組合。
包含數(shù)據(jù)事務的動作通過面向數(shù)據(jù)的事務參與者(105)中執(zhí)行,在一項或多項實施例中,面向數(shù)據(jù)的事務參與者可實施為處理線程,這些處理線程對應于一個或多個數(shù)據(jù)庫節(jié)點且在一個或多個數(shù)據(jù)庫節(jié)點中執(zhí)行。在又一實施例中,每個處理線程專門負責對與該處理線程對應的數(shù)據(jù)分區(qū)執(zhí)行動作。每個線程可實施為一個(動作)排隊線程,其中待執(zhí)行的新動作被附加到排隊線程的末端,線程按接收順序執(zhí)行動作。
在一項或多項實施例中,架構100實施為基于主題的系統(tǒng)。在這一實施例下,協(xié)調器之間的通信(消息)通過消息系統(tǒng)(例如,總線107)發(fā)布到“主題”或命名為邏輯信道。邏輯信道可對應一個特定的類別。例如,一個類別可對應一個特定分區(qū)、數(shù)據(jù)實體或者與系統(tǒng)的其它關聯(lián)或標識。面向數(shù)據(jù)的事務參與者可以訂閱一個或多個邏輯信道,系統(tǒng)中的訂戶將收到發(fā)布到他們所訂閱的主題的所有消息,一個主題的各個訂戶會收到相同的消息。發(fā)布方負責定義訂戶可以訂閱的消息類別。
同樣,當動作通過處理線程執(zhí)行時,處理線程105可通過消息總線107將通知發(fā)布到協(xié)調器(以及其它訂閱線程)。在一項或多項實施例中,一旦面向數(shù)據(jù)的事務參與者(105)執(zhí)行了所有子動作,就執(zhí)行完了事務,并且執(zhí)行兩階段提交協(xié)議來驗證事務的完成。
圖2描繪了分布式數(shù)據(jù)庫系統(tǒng)中的示例性發(fā)布/訂閱數(shù)據(jù)流程圖200。如圖2所示,上文結合圖1描述的基于主題的消息架構的協(xié)調器可實施為或者實施來包括發(fā)布/訂閱服務器(201)。如圖2所示,一個或多個消息發(fā)布方(例如,203a、203b、203c)發(fā)布消息,這些消息在發(fā)布/訂閱服務器201中接收。這些消息可包括,例如,由事務中的處理線程(面向數(shù)據(jù)的事務參與者)執(zhí)行的一個或多個動作的完成。
在一項實施例中,發(fā)布/訂閱服務器接收發(fā)布方(例如,通過消息總線)發(fā)送的消息,并且確定(或提供有)消息對應的主題或邏輯信道。隨后,發(fā)布/訂閱服務器引用將邏輯信道映射到相關訂戶的表207來確定哪些訂戶訂閱了該消息的邏輯信道。然后,通過將服務器201耦合到訂戶(205a、205b、205c)的消息總線將消息直接轉發(fā)給確定的訂戶,避免了未訂閱該消息信道的節(jié)點/線程。
根據(jù)一項或多項實施例,可將一個客戶端請求或事務作為一系列“步驟”或階段執(zhí)行,每個步驟或階段包含可以安排為并行運行的多個‘動作’,它們與前一階段中的動作有依賴關系。圖3描繪了事務的典型執(zhí)行計劃300。如圖3所示,事務的執(zhí)行計劃可包括分布在一系列或一連串階段(301、303)中的多個動作(p1、p2、p3、p4)。在一項或多項實施例中,分布在同一階段中的動作(例如,301中的p1和p2,303中的p3和p4)可以通過對應的處理線程并行執(zhí)行。
在兩個或更多動作之間出現(xiàn)依賴關系的情況下,在兩個階段之間創(chuàng)建和執(zhí)行序列化點(rvp1)。因此,例如如果動作p3依賴于動作p1的處理,動作p4依賴于p2的處理,則p3和p4在p1和p2完成后才開始,p1和p2的完成在序列化點rvp1處驗證并傳送(發(fā)布)。發(fā)布階段1(301)中的動作在序列化點rvp1處完成后,階段1結束;一旦通知被發(fā)布到處理p3和p4的線程,階段2就開始。
根據(jù)一項或多項實施例,分布式環(huán)境中的動作排隊通過向分別對應p1、p2和p3、p4的特定線程發(fā)送消息來完成。在最后一個序列化點(如圖3描繪的rvp2)處,執(zhí)行兩階段提交(two-phasecommit,2pc),因為涉及的線程可能位于不同節(jié)點中。根據(jù)一項或多項實施例,階段的數(shù)量和序列化點的數(shù)量可以是任何任意數(shù)量,不限于本文中的描寫。根據(jù)一項或多項其它實施例,事務計劃可以對應在任意數(shù)量的任何分區(qū)中執(zhí)行的數(shù)據(jù)庫動作的組合,每個分區(qū)有其自己的階段和序列化點的對應序列。
圖4描繪了包括主題概要的示例性數(shù)據(jù)結構400。在一項或多項實施例中,主題概要可表示一個分區(qū)以及與該分區(qū)對應的實體。如圖4所描繪,數(shù)據(jù)結構400可實施為描述數(shù)據(jù)庫中的主題的特性和對應實體的表或圖表。在一項或多項實施例中,數(shù)據(jù)結構400可自動生成(例如,通過客戶端協(xié)調器,或與分區(qū)對應的節(jié)點)。在一項或多項實施例中,數(shù)據(jù)結構400根據(jù)各種類別組織分區(qū)中的數(shù)據(jù)。如圖4所示,類別可包括:“主題類型”、“訂戶”、“發(fā)布方”、“消息內容”、“數(shù)量”和“命名”。
主題類型對數(shù)據(jù)事務的主題進行分類。如圖4所描繪,主題類型可對應以下類型之一:(1)分區(qū),對應于整個數(shù)據(jù)分區(qū);(2)rvp主題,對應于事務的序列化點;(3)提交主題,對應于用于發(fā)布數(shù)據(jù)庫動作執(zhí)行完成的主題。
如圖4所示,分區(qū)的訂戶就是分區(qū)所有者。根據(jù)圖4的主題所有者是對特定主題有讀寫訪問權的實體。在一項或多項實施例中,分區(qū)所有者是執(zhí)行數(shù)據(jù)庫動作的節(jié)點中的處理線程。在替代性實施例中,數(shù)據(jù)庫管理系統(tǒng)自身可以是分區(qū)的所有者。分區(qū)主題的發(fā)布方包括動作排隊線程(處理線程),發(fā)布到分區(qū)的消息內容可包括動作描述、序列化的名稱/標識和訂閱分區(qū)主題的提交主題。根據(jù)一項或多項實施例,分區(qū)數(shù)量自然對應數(shù)據(jù)庫中的節(jié)點數(shù)量,可在數(shù)據(jù)庫系統(tǒng)內使用靜態(tài)分區(qū)標識碼對分區(qū)進行命名。
對于序列化點主題(也叫做rvp主題),訂戶是序列化點的所有者,可包含分區(qū)的處理線程,在這些分區(qū)中對與該序列化點對應的給定事務的階段執(zhí)行數(shù)據(jù)庫動作。線程的發(fā)布方是事務參與者——也是分區(qū)所有者。發(fā)布到序列化主題的消息包括來自分區(qū)所有者的、在與序列化點對應的階段內在分區(qū)中執(zhí)行的數(shù)據(jù)庫動作的執(zhí)行結果。每個事務可以有多個序列化點主題,取決于事務計劃。序列化主題可在數(shù)據(jù)庫管理系統(tǒng)內通過特定命名法確定,該命名法包含將主題作為序列化點的指示,以及事務id和在與該序列化點對應的序列中的位置。
對于提交主題,訂戶是與該提交主題對應的序列化點的所有者,通常是執(zhí)行線程。提交主題的發(fā)布方包括序列化點的所有者和分區(qū)所有者。在提交信道中發(fā)布的消息的消息內容可包括序列化點所有者發(fā)布的投票(例如,在提交動作開始時)請求。其它消息內容可包括來自分區(qū)所有者的、對投票請求的響應,以及來自序列化點所有者的、基于收到的響應進行的處置(例如,提交數(shù)據(jù)庫動作結果或者中止所執(zhí)行的動作)。每個事務有一個提交主題,提交主題可在數(shù)據(jù)庫管理系統(tǒng)內通過提交前綴(帶有事務id)來標識。
圖5描繪了根據(jù)本發(fā)明實施例的跨多個階段分布的示例性事務的時序圖500。圖5描繪了可在事務期間執(zhí)行的事件的示例性時間表。如圖5所描繪,在某個時間t0可生成一個或多個邏輯信道或“主題”。例如,邏輯信道可由協(xié)調器生成。一個或多個處理/執(zhí)行線程或“工作者”(例如,工作者w1、w2、w3和w4)可分別訂閱對應主題,例如,w1訂閱p1,w2訂閱p2,w3訂閱p3,w4訂閱p4。
在時間t1,從客戶端發(fā)出事務請求。(例如,在協(xié)調器中)接收事務請求,協(xié)調器生成提交信道/主題。在一項或多項實施例中,可從已關閉(例如,由于停止使用)的預先存在的提交信道中重新分配一個提交信道。協(xié)調器確定相關邏輯信道以及針對事務的執(zhí)行計劃。根據(jù)一項或多項實施例,典型的執(zhí)行計劃可包括在一個或多個階段內執(zhí)行的一個或多個數(shù)據(jù)庫動作,其中與另一數(shù)據(jù)庫動作有依賴關系的數(shù)據(jù)庫動作被分發(fā)到一個不同的(后續(xù))階段。當該階段中的數(shù)據(jù)庫動作已執(zhí)行并且按在序列化點處執(zhí)行的那樣進行了驗證時,該階段結束。一旦確定了執(zhí)行計劃,協(xié)調器就在必要時生成序列化點。例如,如圖5所描繪,事務包括兩個階段,針對每個階段生成一個序列化點(rvp1、rvp2)。
一旦生成了第一個序列化點,就可執(zhí)行數(shù)據(jù)庫動作(編號為1-13)。協(xié)調器確定與提交信道對應的邏輯信道,并將對應關系的通知發(fā)布給特定邏輯信道。在圖5中,發(fā)布通過虛線指示,訂閱通過點虛線指示。在動作1處,例如,協(xié)調器發(fā)布提交信道到信道p1的關聯(lián)關系,訂閱信道p1的工作者(w1)接收該關聯(lián)關系。之后,工作者w1被訂閱該提交信道。類似地,在動作2處,協(xié)調器發(fā)布提交信道到信道p2的關聯(lián)關系,訂閱信道p2的工作者(w2)接收該關聯(lián)關系。之后,工作者w2被訂閱提交信道。
在一項或多項實施例中,執(zhí)行數(shù)據(jù)庫動作的指令可與發(fā)布的通知一起發(fā)送給工作者,或者分別/相繼發(fā)送。一旦執(zhí)行了數(shù)據(jù)庫動作,處理線程就將其相應數(shù)據(jù)庫動作的完成通知發(fā)布給協(xié)調器(分別在動作3和4進行)。中間結果在第一階段的序列化點處收集。如圖5所描繪,在序列化點處收到中間結果后,第一階段結束,第二序列化點生成。
然后,協(xié)調器將提交信道的關聯(lián)關系發(fā)布給與第二階段對應的信道。如圖5所描繪,發(fā)布在邏輯信道p3中接收,其在動作5處由訂閱信道p3的工作者(w3)接收;并且,發(fā)布在邏輯信道p4中接收,其在動作6處由訂閱信道p4的工作者(w4)接收。之后,工作者w3和w4被訂閱提交信道。
同樣,結合階段1,執(zhí)行數(shù)據(jù)庫動作的指令可與已發(fā)布通知一起發(fā)送給與階段2對應的工作者,或者分別/相繼發(fā)送。數(shù)據(jù)庫動作由對應的線程執(zhí)行,處理線程將其相應數(shù)據(jù)庫動作的完成通知發(fā)布給協(xié)調器(分別在動作7和8進行)。階段2的中間結果在第二階段的序列化點處收集。在階段2的序列化點處收到中間結果后,第二階段結束。
如果執(zhí)行計劃不包含額外的階段,則執(zhí)行兩階段提交來驗證在事務期間執(zhí)行的動作。在一項或多項實施例中,執(zhí)行計劃包括由協(xié)調器發(fā)起的投票(動作9)請求,投票請求被分發(fā)給提交信道的訂戶(在這種情況下,是事務中涉及的所有處理線程)。如果工作者/處理線程能夠確認線程負責執(zhí)行的數(shù)據(jù)庫動作完成,則線程發(fā)布提交選票(分別來自工作者w3、w2、w4和w1的動作10、11、12、13)。如果協(xié)調器從每個處理線程收到提交選票,則提交(即,分發(fā)到每個數(shù)據(jù)節(jié)點和分區(qū))在最后一個序列化點處收集的結果,事務完成。之后,提交信道可釋放。在替代性實施例中,后續(xù)事務可重用提交信道。在替代性實施例中,如果處理線程尚未完成其數(shù)據(jù)庫動作,或者發(fā)生錯誤,則可以收到回滾選票,其中在事務開始時,可使用數(shù)據(jù)庫中的數(shù)據(jù)重新嘗試該事務。
雖然使用四個提交主題進行描繪,但是將理解,該描繪僅出于示例性目的,不應理解為限于這一(或任何)數(shù)量。實際上,本發(fā)明非常適用于針對任意數(shù)量的階段中的任何數(shù)量的階段而包含任意數(shù)量的主題中的任何數(shù)量的主題的替代性實施例,這些階段通過任意數(shù)量的序列化點中的任何數(shù)量的序列化點進行分隔。此外,雖然圖5描繪了包含一個分區(qū)的事務計劃,但是本發(fā)明的一項或多項實施例非常適用于如圖5描繪的以及本文描述的在多個分區(qū)中并行和/或依次執(zhí)行的事務計劃。
圖6描繪了用于執(zhí)行聯(lián)機分布式數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫事務的過程600。步驟601至615描述了根據(jù)本文所述各種實施例的包括圖6描繪的過程600的示例性步驟。在一項實施例中,過程600作為存儲在計算機可讀介質中的、由計算設備中的處理器執(zhí)行的計算機可執(zhí)行指令完整地或部分地實施。
如圖6所描繪,數(shù)據(jù)庫事務通過在步驟601處從客戶端設備接收面向數(shù)據(jù)的事務開始執(zhí)行。在一項或多項實施例中,客戶端設備包括計算設備,例如個人計算機或筆記本電腦,數(shù)據(jù)庫事務可實施為或者可包括數(shù)據(jù)庫請求,例如結構化查詢語言(structuredquerylanguage,sql)請求。數(shù)據(jù)庫請求可在協(xié)調器中接收,實施為在網(wǎng)絡化計算設備中執(zhí)行的模塊或應用,該設備可遠離客戶端計算設備放置。
在步驟603處,協(xié)調器為事務生成提交信道和事務計劃。在一項或多項實施例中,事務計劃包括數(shù)據(jù)庫動作以及網(wǎng)絡化數(shù)據(jù)庫節(jié)點(和對應處理線程)的標識,其中數(shù)據(jù)庫動作將針對這些網(wǎng)絡化數(shù)據(jù)庫節(jié)點執(zhí)行。在其它實施例中,事務計劃包括一系列階段,以及數(shù)據(jù)庫動作在這一系列階段中的分布。在步驟603處,還可生成收集階段之間的中間結果的序列化點。
在步驟605處,協(xié)調器從現(xiàn)有多個邏輯信道中確定與提交信道對應的邏輯信道。在步驟607處,為映射到所確定的邏輯信道的處理線程訂閱提交信道。在一項或多項實施例中,處理線程通過參考存儲在協(xié)調器中的訂閱的映射來確定。一旦處理線程被訂閱提交信道,在步驟609處,指令和通知就從協(xié)調器發(fā)布到提交信道并轉發(fā)給訂閱線程。在一項或多項實施例中,消息(包括發(fā)布和訂閱)在持久發(fā)布/訂閱消息總線中執(zhí)行,該消息總線將協(xié)調器與數(shù)據(jù)庫節(jié)點(和處理線程)可通信地耦合。
在步驟611處,線程根據(jù)發(fā)布的指令執(zhí)行數(shù)據(jù)庫動作,一旦完成,在步驟613處就分別通過消息總線將動作的完成發(fā)布給協(xié)調器和提交信道(之后是提交信道的訂戶)。一個階段中的所有數(shù)據(jù)庫動作都完成后,該階段結束(步驟613)。如果根據(jù)執(zhí)行計劃需要后續(xù)階段,則重復步驟609至615,直到不再需要后續(xù)階段。在一項或多項其它實施例中,所有階段的完成提示協(xié)調器執(zhí)行兩階段提交協(xié)議,其可包括向處理線程發(fā)送查詢以進行提交或回滾投票。如果所有處理線程都返回提交選票,則將數(shù)據(jù)庫動作的執(zhí)行結果提交給數(shù)據(jù)庫節(jié)點,事務完成。
在一項或多項實施例中,同一個階段中的數(shù)據(jù)庫動作可并行執(zhí)行,而與一個或多個其它數(shù)據(jù)庫動作有依賴關系的數(shù)據(jù)庫動作分布在所依賴的數(shù)據(jù)庫動作之后的階段中。一個階段中的動作的完成在分隔該階段并傳達當前階段的完成的各序列化點處跟蹤。在同一個階段中執(zhí)行的數(shù)據(jù)庫動作可并行執(zhí)行或大致并行執(zhí)行,一個事務中的所有階段都完成后,該事務結束。
如圖7所示,描繪了根據(jù)本發(fā)明實施例的示例性計算環(huán)境700。在其一般配置中,計算環(huán)境700通常包括至少一個處理單元701和存儲器,以及用于傳送信息的地址/數(shù)據(jù)總線709(或其它接口)。根據(jù)計算環(huán)境的確切配置和類型,存儲器可以是易失性的(例如,ram702)、非易失性的(例如,rom703、閃存等)、易失性和非易失性存儲器的某種組合,或者能夠存儲后續(xù)召回數(shù)據(jù)和/或可在處理單元701上執(zhí)行的指令的其它合適設備。根據(jù)一項或多項實施例,處理單元701可執(zhí)行存儲在計算環(huán)境700的存儲器中的已編程指令711,以便對分布在多個分區(qū)中的數(shù)據(jù)庫中的面向數(shù)據(jù)的事務進行協(xié)調。
在一些實施例中,計算環(huán)境700還可包括可選的圖形子系統(tǒng)705,用于例如通過將信息顯示在附接的或集成的顯示設備710上來向用戶展示信息。另外,計算系統(tǒng)700還可具有其它特征/功能。例如,計算系統(tǒng)700還可包括其它(可移動和/或不可移動的)存儲器,包括但不限于,磁盤或光盤或磁帶。圖7通過數(shù)據(jù)存儲設備704示出這種其它存儲器。計算機存儲介質包括以任意方法或技術實現(xiàn)的用于存儲計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性、可移動和不可移動介質。ram702、rom703以及數(shù)據(jù)存儲設備704均為計算機存儲介質的示例。
計算環(huán)境700還可包括物理(或虛擬)字符輸入設備706、物理(或虛擬)光標控制或引導設備707??蛇x字符輸入設備706可以將信息和命令選擇傳送給中央處理器701??蛇x光標控制或引導設備707耦合到總線709,用于將用戶輸入信息和命令選擇傳送給中央處理器701。如圖7所示,計算環(huán)境700還包括一個或多個信號通信接口(輸入/輸出設備,例如網(wǎng)卡)707。信號通信接口可用于為計算環(huán)境700接收用戶輸入,和/或支持通過一個或多個可通信地耦合的計算環(huán)境發(fā)送和接收數(shù)據(jù)。
結合大量具體的可隨實現(xiàn)變化而變化的細節(jié),實施例已在上述說明書中描述。因此,判斷何為本發(fā)明以及申請人旨在認為的本發(fā)明的唯一排他性指標是:本發(fā)明申請中包括的一組特定形式的權利要求,該申請公開了該權利要求,包括任何隨后所做的校正。因此,任何在權利要求中沒有表述清楚的局限性、要素、性質、特征、優(yōu)點或屬性不應該以任何方式限制該權利要求的范圍。相應地,應認為本說明書和附圖具有說明性意義而非限制性意義。