專利名稱:在分布式數(shù)據(jù)庫中執(zhí)行快照隔離的系統(tǒng)和方法
技術領域:
本發(fā)明涉及數(shù)據(jù)庫,并且具體地,涉及分布式數(shù)據(jù)庫中的快照隔離。
背景技術:
除非這里指出,本部分中描述的方法不是本申請中權利要求的現(xiàn)有技術并且不因為包含在本部分中而被認為是現(xiàn)有技術??煺崭綦x正成為大多數(shù)現(xiàn)代數(shù)據(jù)庫系統(tǒng)中用于并行操作控制的事實標準。幾乎所有的商業(yè)數(shù)據(jù)庫都支持它。許多開源數(shù)據(jù)庫系統(tǒng)也使用它。快照隔離允許某些不可串行化調(diào)度,但是這種警示對于多數(shù)應用程序而言是可以容忍的。在正面的方面,可以高效地實現(xiàn)快照隔離以使能高事務吞吐量。此外,快照隔離允許以無阻塞方式執(zhí)行只讀事務,它對于涉及對事務數(shù)據(jù)的長期決策支持查詢的所謂的操作BI工作負載是重要的。雖然快照隔離對于集中式數(shù)據(jù)庫系統(tǒng)是好理解的,但是對于其中事務可以從多個節(jié)點讀取并更新數(shù)據(jù)項目的分布式數(shù)據(jù)庫系統(tǒng)還沒有較多的探索。顯然,隨著正在呈現(xiàn)的在云端部署數(shù)據(jù)庫并將所有數(shù)據(jù)保留在主存儲器中的趨勢,這樣的分布式數(shù)據(jù)系統(tǒng)變得越來越重要。例如,對于存儲器內(nèi)數(shù)據(jù)庫系統(tǒng),分布式快照隔離是有用的,因為數(shù)據(jù)庫可能無法裝入單個機器的主存儲器中,但是很可能可以裝入由機器群簇提供的聚集主存儲器中。一種支持分布式快照隔離的商業(yè)數(shù)據(jù)庫系統(tǒng)是0racle(例如,Oracle數(shù)據(jù)庫Ilg Release2)。令人遺憾的是,Oracle沒有發(fā)布實現(xiàn)和隔離性質(zhì)的細節(jié)。在學術界,分布式快照隔離已經(jīng)在 R.Schenkel, G.Weikum, N.Weissenberg,以及 X.Wu, “FederatedTransaction Management with Snapshot Isolation, inSelected papers from theEight International Wokrshop on Foundations of Modelsand Languages for Dataand Objects, Transactions and Database Dynamics,,,第 1-25 頁(2000)[以下稱為“Schenkel”]中討論過(主要是在關聯(lián)數(shù)據(jù)庫的環(huán)境中)。在Schenkel中,將數(shù)據(jù)庫作為黑匣子處理并且不考慮本地事務。分布式快照隔離的三種一般方法是全局(global)法、悲觀(pessimistic)法、和樂觀(optimistic)法。下面對其作簡要描述,細節(jié)可以在Schenkel中找到。為了提供那些訪問多于一個節(jié)點的事務的一致的快照,當前系統(tǒng)(例如,我們使用的商業(yè)數(shù)據(jù)庫)需要協(xié)調(diào)所有事務。我們稱該方法為全局法,因為使用發(fā)布全局有效的快照的(概念上)集中的協(xié)調(diào)器來實行協(xié)調(diào)。這是如下工作的:新的事務X在它的事務開始(begin-of-transaction)從中央?yún)f(xié)調(diào)器請求全局有效的快照。協(xié)調(diào)器是列舉快照的僅有的一個,從而它可以發(fā)布這樣的快照而無需聯(lián)系本地節(jié)點。利用來自協(xié)調(diào)器的信息,事務X可以訪問不發(fā)布它們自己的快照而是直接使用來自協(xié)調(diào)器的信息的本地節(jié)點。為了提交,系統(tǒng)與包括協(xié)調(diào)器的所有參與節(jié)點運行原子提交協(xié)議(例如,兩階段提交)。這樣,協(xié)調(diào)器知曉所有提交并可以向新的事務提供正確的快照信息。全局法的優(yōu)點是其簡單性以及在所有場景中的生存力。悲觀法不同于全局法的一個重要方面是:中央?yún)f(xié)調(diào)器不是自己產(chǎn)生全局有效的快照,而是聯(lián)系本地節(jié)點以協(xié)調(diào)分布式快照的建立。這意味著,只有分布式事務需要聯(lián)系中央?yún)f(xié)調(diào)器,但是開始分布式事務的開銷增加。該方法需要系統(tǒng)預先知曉哪些事務是分布式的、以及事務將要訪問哪些節(jié)點。這是因為協(xié)調(diào)器為性能的原因而僅僅聯(lián)系節(jié)點的最小集合以建立分布式快照。我們稱該需求為完整先驗知識(full a-priori knowledge)。如果訪問的節(jié)點的集合未知,則不得不使用保守的候選集合,其限制性能。所有分布式事務的開始(begin)和提交(commit)操作由中央?yún)f(xié)調(diào)器同步。于是,在協(xié)調(diào)器準備用于事務x的分布式快照的同時,沒有其他的分布式事務可以開始或提交。協(xié)調(diào)器通過在每個本地節(jié)點上發(fā)布事務開始操作來構(gòu)建分布式快照。事務可以接著利用已準備的事務環(huán)境訪問節(jié)點。為了提交,系統(tǒng)運行由協(xié)調(diào)器同步的原子提交協(xié)議。悲觀法的優(yōu)點在于,本地事務不與中央?yún)f(xié)調(diào)器交互作用,如果大部分事務是本地的則其改善性能。悲觀法的示例構(gòu)建部分數(shù)據(jù)庫復制協(xié)議,即,在事務開始時,通知所有可能涉及的節(jié)點。參照J.E.Armendariz-1nigo,A.Mauch-Goya, J.R.Gonzalez de Mendivil,以及 F.D.Munoz Escoi, SIPRe:“a partialdatabase replication protocol with SI replicas, in Proceedings of the2008ACMsymposium on Applied Computing”,第 2181-2185 頁(2008)。為了去除對完整先驗知識的需求,可以采用被稱為樂觀法的方法?;舅悸吩谟?,除了同步分布式事務提交的原子提交協(xié)議之外,事務運行無需協(xié)調(diào)器。在提交時刻,系統(tǒng)檢測是否發(fā)生潛在異常。這可以通過在中央?yún)f(xié)調(diào)器上跟蹤分布式事務的開始和提交操作的相對次序來實現(xiàn)。利用該方法,不需要確切的先驗知識。然而,如果系統(tǒng)預先知曉哪些事務將成為分布式,從而可以將簿記限制于分布式事務,則可以改善性能。如果存在沒有被兩個事務訪問的節(jié)點,則該算法拒絕任何兩個并發(fā)事務中的一個。樂觀法的優(yōu)點在于,其不需要完整先驗知識,但是仍然允許本地事務僅僅與它們的本地節(jié)點交互作用。此外,僅為想要提交的事務付出強制分布式快照隔離的開銷。在廣義的快照隔離中,事務開始(即快照)與第一個實際操作分離。參看ff.Elnikety, ff.Zwaenepoel,以及 F.Pedone, “Database Replication UsingGeneralizedSnapshot Isolation, in Proceedings of the 24th IEEE Symposium onReliableDistributed Systems”,第 73-84 頁(2005)[以下稱為 “Elnikety” ]。該開始僅可以早于
第一個實際操作。如果相同客戶端的連續(xù)事務(即,相同會話)了解之前的事務寫了什么以及快照隔離持有什么,則系統(tǒng)確保會話快照隔離。參照K.Daudjee和K.Salem, Lazy databasereplication with snapshot isolation, in VLDB,第 715-726 頁(2006)[以下稱為“Daudjee”]。該定義是有用的,因為普通快照隔離不需要客戶得到最新快照。如果每個事務得到最新快照,則Daudjee稱之為強快照隔離??煺崭綦x已經(jīng)在列存儲數(shù)據(jù)庫中執(zhí)行。參照C.Zhang和H.de Sterck, Supportingmult1-row distributed transactions with global snapshot isolationusingbare-bones HBase, in GRID,第 177-184 頁(2010 年 10 月)[以下稱為 “Zhangl” ];以及 C.Zhang 和 H.de Sterck, HBase SI:Mult1-Row DistributedTransactions withGlobal String Snapshot Isolation on Clouds, in ScalableComputing:Practice andExperience, 12 (2011)[以下稱為“Zhang 2]”。該方式類似于全局法,因為關于事務的所有信息被保存在一束(概念上的)集中式表中。
系統(tǒng)在每個提交后打開虛擬事務,其可以隨后用于處理來自需要較早快照的其他節(jié)點的請求。參照 D.Serrano, M.Patino Martinez, R.Jimenez-Peris,以及 B.Kemme,Boosting Database Replication Scalability through PartialReplication and1-Copy-Snapshot-1soIation, in Proceedings of the 13th PacificRim InterationalSymposium on Dependable Computing,第 290-297 頁(2007)。在該系統(tǒng)中,為了保持節(jié)點同步,他們使用群組通信來提交所有節(jié)點上的所有事務。
發(fā)明內(nèi)容
鑒于上述背景,需要關于分布式數(shù)據(jù)庫中的快照的改進。本發(fā)明的實施例針對用于分布式數(shù)據(jù)庫的遞增式快照隔離。這里描述被稱為遞增法的一種用于分布式數(shù)據(jù)庫中的快照隔離的方法。與現(xiàn)有方法相比,遞增法需要較少的關于工作負載知識,同時提供比現(xiàn)有方法相同或較好的一致性保證。此外,性能試驗顯示遞增法利用節(jié)點的數(shù)量提供可伸縮性。遞增式技術在兩種情形下特別吸引人。第一種,如果多數(shù)事務僅涉及單個節(jié)點。如果數(shù)據(jù)庫可以被合理地分割(即分區(qū)),則出現(xiàn)該情形。例如,TPC-C基準程序(benchmark)模擬其中客戶訂購存貨在不同倉庫中的產(chǎn)品的應用程序。TPC-C基準程序的許多事務僅涉及存貨在單個倉庫中的產(chǎn)品。所以,如果每個節(jié)點代表一個倉庫,則許多事務僅命中一個單獨節(jié)點,并且只有很少事務涉及多于一個節(jié)點。遞增式技術的優(yōu)點在于,這樣的局部事務如同在傳統(tǒng)集中式數(shù)據(jù)庫系統(tǒng)中一樣高效地執(zhí)行。只有實際訪問來自多個節(jié)點的數(shù)據(jù)的事務需要支付用于全局同步的成本。遞增式技術的第二個優(yōu)點在于,其不需要關于事務訪問哪些節(jié)點的先驗知識。為了保持分布式數(shù)據(jù)庫系統(tǒng)中的透明度和數(shù)據(jù)獨立,該性質(zhì)至關重要。相比之下,不難理解,Schenkel中討論的技術僅當其先驗地知曉事務將要訪問哪些節(jié)點時才顯示出良好性能。一個實施例是一種在分布式數(shù)據(jù)庫中執(zhí)行快照隔離的方法。該方法包括在硬件設備上實現(xiàn)節(jié)點,所述節(jié)點實現(xiàn)分布式數(shù)據(jù)庫。該方法進一步包括由節(jié)點存儲本地快照信息,其中對于特定節(jié)點,相應的本地快照信息強制該特定節(jié)點的快照隔離。該方法進一步包括由第一節(jié)點部分地處理分布式事務。該方法進一步包括由第一節(jié)點向硬件協(xié)調(diào)器發(fā)送訪問第二節(jié)點的請求。該方法進一步包括由第一節(jié)點從該硬件協(xié)調(diào)器接收全局提交標識符。該方法進一步包括由第一節(jié)點和第二節(jié)點根據(jù)該全局提交標識符繼續(xù)處理該分布式事務。以該方式,選擇適當?shù)目煺沼糜趫?zhí)行事務。所述硬件設備之一可以被配置為實現(xiàn)所述節(jié)點的至少兩個。所述硬件設備之一可以被配置為實現(xiàn)所述節(jié)點之一。每個節(jié)點可以存儲該分布式數(shù)據(jù)庫的不同部分。該全局提交標識符可以是多個全局提交標識符之一。每個全局提交標識符可以標識多個分布式事務的每一個的提交。該硬件協(xié)調(diào)器可以產(chǎn)生該全局提交標識符。該硬件協(xié)調(diào)器可以在多個分布式事務之一成功提交時產(chǎn)生該全局提交標識符。該硬件協(xié)調(diào)器可以在多個分布式事務成功提交時產(chǎn)生多個全局提交標識符。第一節(jié)點可以在發(fā)送該請求之前檢查另一個分布式事務還沒有提交。第一節(jié)點可以在繼續(xù)處理該分布式事務之前檢查另一個分布式事務還沒有提交。繼續(xù)處理該分布式事務可以包括:由第一節(jié)點檢查另一個分布式事務還沒有提交;從第一節(jié)點向第二節(jié)點發(fā)送該局提交標識符;以及由第二節(jié)點根據(jù)在該全局提交標識符之前產(chǎn)生的第二節(jié)點上的本地快照信息的快照來處理該分布式事務。該本地快照信息可以對應于所述節(jié)點上的分布式數(shù)據(jù)庫的多個快照。該本地快照信息可以對應于所述節(jié)點上遞增地創(chuàng)建的分布式數(shù)據(jù)庫的多個快照。一種計算機系統(tǒng)可以操作以實現(xiàn)上述方法。該計算機系統(tǒng)可以存儲、執(zhí)行控制該計算機系統(tǒng)實現(xiàn)上述方法的一個或多個計算機程序,或者由該一個或多個計算機程序控制。一種非暫時性計算機可讀介質(zhì)可以存儲用于控制計算機系統(tǒng)執(zhí)行上述方法的指令。所述指令包括分布式數(shù)據(jù)庫組件和協(xié)調(diào)器組件。該分布式數(shù)據(jù)庫組件和該協(xié)調(diào)器組件可以控制硬件設備和硬件協(xié)調(diào)器以實現(xiàn)上述方法。以下詳細說明和附圖提供本發(fā)明本質(zhì)和優(yōu)點的更好理解。
圖1是用于遞增式快照隔離的系統(tǒng)的框圖;圖2示出串行并發(fā)模式異常的示例;圖3示出交叉異常的示例;圖4示出遞增式快照的選擇的示例;圖5A-5D不出第一選擇方法的不例;圖6是用于遞增式快照隔離的示例系統(tǒng)的框圖;圖7是在分布式數(shù)據(jù)庫中執(zhí)行快照隔離方法的流程圖;以及圖8是用于實現(xiàn)本發(fā)明實施例的示例計算機系統(tǒng)和網(wǎng)絡2400的框圖。
具體實施例方式1.介紹這里描述用于分布式數(shù)據(jù)庫中的快照隔離的技術。在下面的說明中,出于解釋的目的,闡述許多示例和具體細節(jié)以便提供本發(fā)明的徹底理解。然而,本領域技術人員顯然可知,如權利要求定義的本發(fā)明可以單獨地、或與下面描述的其他特征結(jié)合地包括這些示例中的一些或所有特征,并且可以進一步包括這里描述的特征和概念的修改和等價物。在本文件中,具體介紹了多種方法、處理和過程。雖然具體步驟可能以特定次序描述,但這樣的次序主要是為了方便和清楚。特定步驟可以重復多于一次,可以在其他步驟之前或之后發(fā)生(即使那些步驟在另一個序列中描述),并且可以與其他步驟并行發(fā)生。僅當?shù)谝徊襟E必須在第二步驟開始之前完成時,才要求第二步驟跟隨第一步驟。當上下文不清楚時,這樣的情況將被特別指出。個別步驟可以被忽略;僅當其省略將實質(zhì)性地影響另一個步驟時才需要該個別步驟。在本文件中,使用術語“和”、“或”以及“和/或”。這樣的術語應當被理解為具有相同的意思;即,包含地。例如,“A和B”可以意味著至少以下:“既A又B”、“僅A”、“僅B”、“至少既A又B”。作為另一個示例,“A或B”可以意味著至少以下:“僅A”、“僅B”、“既A又B”、“至少既A又B”。當意指排他的或時,將特別指出(例如,“要么A要么B”,“A和B的最多一個”)。
在本文件中,描述多種計算機實現(xiàn)方法、處理和過程。應當理解,動作操作(接收、存儲、發(fā)送、通信、顯示等)由硬件設備來執(zhí)行,即使該動作可以由用戶授權、發(fā)起或觸發(fā),或者即使硬件設備由計算機程序、軟件、固件等控制。進一步,應當理解,硬件設備在數(shù)據(jù)上操作,即使數(shù)據(jù)可以表示概念或現(xiàn)實世界對象,因而省略明確的標簽如“數(shù)據(jù)”。例如,當硬件設備被描述為“存儲記錄”是,應當理解,硬件設備存儲代表記錄的數(shù)據(jù)。2.問題聲明該部分給出用于我們的系統(tǒng)的客戶端-服務器架構(gòu)。此外,我們介紹必需的基礎并給出可以在分布式快照隔離中發(fā)生的異常,之后是避免給出的異常的足夠用于強制調(diào)度的一組正確性準則。2.1 架構(gòu)一般系統(tǒng)架構(gòu)是實現(xiàn)快照隔離的分布式數(shù)據(jù)庫。圖1示出系統(tǒng)100的架構(gòu)。幾個客戶端102訪問系統(tǒng)100。系統(tǒng)100包括數(shù)據(jù)庫104和中央?yún)f(xié)調(diào)器106。(該系統(tǒng)100還包括其他組件(未示出),其執(zhí)行下文中進一步討論的諸如事務處理、事務管理、事務協(xié)調(diào)等功能;這些組件可以與中央?yún)f(xié)調(diào)器106由一個或多個硬件計算機來實現(xiàn)。)分布式意味著數(shù)據(jù)庫104可以建立在虛擬地或物理地分離的多個節(jié)點108上。系統(tǒng)100具有對所有節(jié)點的完全控制并能夠在那些節(jié)點內(nèi)實現(xiàn)新的協(xié)議。這與其中節(jié)點自治地操作且不能被改變的聯(lián)合(federated)系統(tǒng)(例如,如理解的在Schenkel中使用的)形成對比。網(wǎng)絡110連接各種組件??梢砸赃@樣的方式分割數(shù)據(jù),以使得多數(shù)事務僅訪問來自單個節(jié)點的數(shù)據(jù)。這是在多租用場景中的情況,其中在許多客戶端(租戶)之間共享一個數(shù)據(jù)庫系統(tǒng),并且他們的數(shù)據(jù)通常裝在一個節(jié)點中。另外,一些系統(tǒng)數(shù)據(jù)在節(jié)點之間共享。因而,少量事務需要一致訪問多于一個節(jié)點或者甚至整個數(shù)據(jù)庫,例如,為了對提及的系統(tǒng)數(shù)據(jù)的更新。這樣的可分割工作負載的另一示例是TPC-C基準程序。在該基準程序中,數(shù)據(jù)可以被倉庫分割(即,分區(qū)),并且多數(shù)事務僅訪問來自一個倉庫(即,一個節(jié)點)的數(shù)據(jù)。僅少量事務需要來自多于一個節(jié)點的數(shù)據(jù)。為了實現(xiàn)訪問來自多個節(jié)點數(shù)據(jù)的那些分布式事務的一致性,系統(tǒng)100提供分布式快照隔離??煺崭綦x的基本思路在于,每個事務獲得其自己的(虛擬的)數(shù)據(jù)庫“拷貝”用于工作,并且因此原則上不會被并發(fā)事務阻塞。(快照隔離的一些實施方式使用鎖定,該情況下寫入事務可能被阻塞)。在事務結(jié)尾,數(shù)據(jù)庫僅當其寫集合與其他并發(fā)事務沒有沖突時才允許事務提交。系統(tǒng)100可以支持數(shù)據(jù)的同步(eager)復制。其他實施例中可以支持異步(lazy)復制。實施例使用中央?yún)f(xié)調(diào)器106用于特定任務。這樣的中央?yún)f(xié)調(diào)器106可以被看作單個故障點。為了改善容錯性,可以應用多種技術(例如,復制),因為協(xié)調(diào)器106僅保持有限數(shù)量的狀態(tài)。此外,中央?yún)f(xié)調(diào)器106也是潛在的瓶頸。實施例被設計為減少與協(xié)調(diào)器106的通信以便改善性能。2.2 預備我們使用以下術語來指代不同種類的事務:分布式事務是訪問(讀或?qū)?來自多于一個節(jié)點的數(shù)據(jù)的事務。這樣的分布式事務被分割為在相同節(jié)點上執(zhí)行的操作的子集。這些子集不是獨立的,因而事務的語義(semantics)應用于整個操作集合(例如,如果事務被中止(abort),則其在所有節(jié)點上的操作必須被復原)。本地事務是僅訪問(讀或?qū)?來自單個節(jié)點的數(shù)據(jù)的事務。分布式快照是分布式數(shù)據(jù)庫的多個節(jié)點上而不必是所有節(jié)點上的快照。在記號方面,我們用x、y、z表示當前討論的事務;用s、t表示用于完成進度所需、但是不被關注的事務;并用1、j表示節(jié)點。bx表示事務X的開始,同時Cx表示事務X的提交。wx (a)和rx(b)表示事務X對對象a、b的寫(或讀)。操作的上標意味著給定操作在
指定節(jié)點上發(fā)生,例如,%是事務X在節(jié)點i上開始。N(X)包含由事務X訪問的所有節(jié)點,
即,X已經(jīng)在其上訪問對象的所有節(jié)點。SN(x,y)包含由X和y 二者訪問的(共享的)所有節(jié)點,即 SN(X, y) = N(X) Π N(y)。系統(tǒng)100在每個節(jié)點108的實現(xiàn)本地快照隔離,即,由本地節(jié)點產(chǎn)生的調(diào)度在快照隔離下正確。集中式單節(jié)點系統(tǒng)中快照隔離的實現(xiàn)在過去已經(jīng)被大量研究,并且所有主要數(shù)據(jù)庫產(chǎn)品已經(jīng)支持它。此外我們注意到,被中止的事務不改變調(diào)度或快照隔離方案的正確性,因而系統(tǒng)可以忽略由用戶或應用程序引起的中止。2.3分布式SI的定義下面,我們將現(xiàn)有的本地快照隔離的定義擴展到分布式設置。訪問該節(jié)點上的數(shù)據(jù)的本地事務以及分布式事務的操作子集形成本地調(diào)度。該調(diào)度的正確性被本地節(jié)點強制(即,本地快照隔離成立)。定義I (分布式SI)。當且僅當存在組合所有本地調(diào)度的等效的單個調(diào)度、并且該單個調(diào)度根據(jù)本地快照隔離是正確的時,一組多個本地正確的調(diào)度在分布式快照隔離下正確。該定義類似于所謂的I副本快照隔離,但是不限于復制的數(shù)據(jù)庫。注意到,文章中的其他定義可以僅指代在復制的數(shù)據(jù)庫環(huán)境中的操作。注意到,定義I中的等效的單個調(diào)度從理論角度來看很有意思。在一些情況下,本地調(diào)度中的某些操作的次序可以被改變,例如,如果事務X不讀或?qū)懹墒聞誽寫的任何對象,則事務X的開始可以要么早于要么晚于y的提交,因而對于一組本地調(diào)度可以有多于一個等效的全局調(diào)度。從實踐角度來看,該“自由度”沒有很大幫助,因為它總是需要檢查讀取關系(read-fromrelationship),即,事務X是否讀或?qū)懹墒聞誽讀或?qū)懙囊恍〇|西。監(jiān)視該關系開銷巨大,尤其是在分布式設置中。因而,第2.5小節(jié)中的正確性準則以及第3節(jié)中給出的方法不使用該自由度,并且僅僅允許或構(gòu)建其中操作的本地次序不改變的調(diào)度。2.4分布式設置中的異常當將快照隔離應用于分布式數(shù)據(jù)庫時發(fā)生的一種異常是串行并發(fā)模式(serial-concurrent-pattern)。如圖2所示,如果事務x在節(jié)點I上與另一事務y并發(fā)運行并且在節(jié)點2上與其串行運行時,發(fā)生異常。因此,X不讀取I在節(jié)點I上寫入的東西,但是讀取I在節(jié)點2上寫入的東西。如果在節(jié)點2上事務y在事務X開始之前提交則發(fā)生上述情況。這可以導致在不同節(jié)點上相同的分布式事務讀取的不一致的快照。第3節(jié)中給出的方法將提供用于避免這樣的情形的機制。在分布式設置中可以發(fā)生的另一種異常被稱為交叉異常。在圖3所示的示例中,分布式事務X在節(jié)點I上忽略本地事務S,并且在節(jié)點2上從本地事務t讀取。同時,分布式事務I在節(jié)點I上從事務S讀取,并且在節(jié)點2上忽略事務t。如果我們組合兩個本地調(diào)度以使得用于事務X的快照是一致的,則事務t在s之前提交,因為X從t而不是從s讀取。這意味著不存在用于從事務s讀取而不是從事務t讀取的事務I的一致的快照,因為如果I從s讀取,則其必須從在s之前提交的所有事務(即,同樣從t)讀取。如果我們組合本地調(diào)度以使得用于事務I的快照是正確的,則反之亦然。該異常僅當事務X、y實際讀取事務s、t寫入的東西時發(fā)生。但是如之前所述,監(jiān)控讀取關系開銷巨大。因而,如果我們希望避免交叉異常,則系統(tǒng)必須確保分布式事務的開始事務次序在所有涉及的節(jié)點上是相同的。在第3節(jié)給出的方法當中,只有樂觀法和多快照法允許該異常,而悲觀法避免它。2.5正確性準則下面四個規(guī)則允許檢查一組本地正確的調(diào)度根據(jù)分布式快照隔離(定義I)是否是正確的:規(guī)則1:c;〈c; 4 Vj e SN(x, y): cJx(cJy規(guī)則2 -X〈c; 4 V/.6 SN(x, y): bJx (cJy規(guī)則3 -X1x (bly -> Vy 6 SN(x, y): c'x (bJy規(guī)則4:b[ (b'y Vy e SN(x, y): bJx {bJySN(x, y)是事務x和y 二者訪問的節(jié)點集合。換句話說,分布式事務的所有開始(begin)和提交(commit)操作需要有總的次序,簡而言之:如果一個操作(開始或提交)對于一個節(jié)點上的另一個操作是處于某一次序(即,之前或之后),則另一個節(jié)點上的相應操作必須處于相同的次序。(除非,如果兩個開始操作在一個節(jié)點上為特定次序,則它們還可以在其他節(jié)點上為同時,或為相同的次序。)如果這四個條件對于系統(tǒng)中的所有事務x、y成立,則根據(jù)本地快照隔離是正確的本地調(diào)度集合根據(jù)分布式快照隔離是正確的。注意,所述規(guī)則由于忽略了來自讀取關系的自由度而是充分的而非必要的,即,存在不滿足這些規(guī)則的正確的調(diào)度(尤其是規(guī)則4產(chǎn)生許多不必要的拒絕)。如試驗所示,這不限制吞吐量。替換的解決方案考慮讀取關系,其監(jiān)視開銷巨大。規(guī)則I確保我們可以使用提交ID來指代快照,并且快照包括所有之前提交的事務。規(guī)則2和3(與規(guī)則I 一起)確保串行并發(fā)模式不會發(fā)生。規(guī)則4避免交叉異常。如圖3所示,規(guī)則1-3本身不足以保證分布式快照隔離(定義I),所以將規(guī)則4包括在內(nèi)。證明:我們現(xiàn)在簡述四個規(guī)則足以保證分布式快照隔離的證明。基本思路在于,分布式事務的開始和提交操作在統(tǒng)一的調(diào)度中擔當固定點。由于將它們一總排序(四個規(guī)則隱含了分布式事務的所有開始和提交操作之間的總次序),總是可以將它們組合為單個調(diào)度而無需重新排序。接著可以在這些定點之間調(diào)度僅本地的操作。由于本地調(diào)度根據(jù)本地快照隔離是正確的,所以構(gòu)建的調(diào)度因為數(shù)據(jù)的分割而同樣是正確的。可以調(diào)度僅本地的操作而不改變來自相同節(jié)點的操作之間的次序,并且與其他節(jié)點上的操作獨立,因為它們不會與來自另一個節(jié)點的本地事務共享共同的對象(讀或?qū)?。3.遞增式快照隔離遞增法是用于分布式快照隔離的新技術。遞增法被設計用于其中多數(shù)事務是本地的、并且預先不知曉事務是本地的還是分布式的情形。遞增法克服了其他方法的許多缺點,如下所述。全局法的缺點在于,本地和分布式事務均必須聯(lián)系中央?yún)f(xié)調(diào)器以獲得全局有效快照,如果事務僅訪問來自單個節(jié)點的數(shù)據(jù)則這構(gòu)成開銷。如果多數(shù)事務僅僅是本地的,則該開銷限制整個系統(tǒng)的性能。悲觀法的缺點是需要額外的關于事務的先驗知識。因而,必須改變協(xié)議以使得應用程序能提供額外的知識。這樣的改變在現(xiàn)有系統(tǒng)中是不可能的。樂觀法的缺點在于,其不能防止交叉異常,S卩,其不提供與其他方法一樣的一致性保障??偟膩碚f,遞增法彌補了樂觀法的缺點,即,交叉異常的潛在發(fā)生。同時,我們希望實現(xiàn)類似的性能而無需任何先驗知識(即,無需預先知曉哪些事務將成為分布式的)。在遞增法中,每個節(jié)點保存用于在本地強制快照隔離所需的本地信息。主要思路在于,事務在本地開始并且可以遞增地請求訪問其他節(jié)點上的數(shù)據(jù)。注意到,對另一個節(jié)點上的數(shù)據(jù)的訪問并不立即向事務提供數(shù)據(jù)庫的所有節(jié)點上的全局快照。它只是觸發(fā)收集用于將快照擴展到其他節(jié)點所需的信息。本地事務可以在相應的節(jié)點上處理而無需聯(lián)系協(xié)調(diào)器106。對于分布式事務,遞增法使用原子提交協(xié)議(例如,兩階段提交)來協(xié)調(diào)提交。更具體地,協(xié)調(diào)器106產(chǎn)生全局提交標識符以標識每個分布式事務的提交。GCID指代作為整個事務,而不只是提交本身。更具體地,GCID是所有分布式提交的枚舉——每個提交的分布式事務獲取下一個可用GCID。這意味著GCID總是在增加并且沒有間隔(除了在提交協(xié)議失敗時的非常奇特的情況下)。另外,原子提交協(xié)議擔當遞增法中的第二個目的。重要的觀點在于,事務X的分布式快照由其事務開始(begin-of-transaction)在其他分布式事務的(排序的)提交內(nèi)的位置來定義。這類似于本地快照隔離在一些系統(tǒng)中(例如,Oracle Databasellg Release2)的實現(xiàn)。本質(zhì)上,在事務X開始之前提交的最后一個分布式事務的提交ID (CID ;或Oracle中的系統(tǒng)更改編號SCN)捕獲所有需要的信息。從另一個角度來看,事務X從X開始之前最后提交的事務y讀取,并且忽略緊接著y之后提交的事務z。這定義了可以在其他節(jié)點上考慮的潛在的本地快照的時間間隔[y,z)。哪些事務被忽略的信息對我們來說更重要,因為在我們的方案中,不是所有事務在所有節(jié)點上提交。為了得到更近的快照,我們使用關于忽略什么而不是讀取什么的信息。因而,如果事務需要訪問來自另一個節(jié)點的數(shù)據(jù),則其執(zhí)行圖4中給出的以下步驟(GCID代表全局提交ID,LCID代表本地提交ID)。1.事務X請求訪問來自節(jié)點2的數(shù)據(jù)。2.系統(tǒng)100通過在本地檢查從事務X開始以來是否有其他分布式事務被提交來計算事務X可以在其他節(jié)點上讀取的快照的時間間隔[y,Z)。3.如果系統(tǒng)中尚未有稍后的提交,則系統(tǒng)詢問中央?yún)f(xié)調(diào)器106其將要分配的下一個全局提交ID。問題在于,當事務希望訪問來自另一個節(jié)點的數(shù)據(jù)時,關于時間間隔的上端點的信息通常在本地不可用,因為可能不存在其他分布式事務同時在該節(jié)點上提交。因此而,系統(tǒng)需要特別的關注以找出被X忽略的事務。4.中央?yún)f(xié)調(diào)器106以其將要分配的下一個全局CID回應。協(xié)調(diào)器106分配的最后一個GCID是6(GCID2-5在圖中被省略;它們與在其他節(jié)點上提交的事務關聯(lián)),使得協(xié)調(diào)器106分配GCID7.
5.系統(tǒng)100與協(xié)調(diào)器106通信期間再次在節(jié)點I上本地檢查是否從系統(tǒng)100繼續(xù)常規(guī)工作以來仍然沒有其他提交的分布式事務。6.如果沒有稍后的提交,則X訪問節(jié)點2,忽略協(xié)調(diào)器106返回的下一個分布式事務ID。如果另一個分布式事務z同時提交,則X忽略該分布式事務。在示例中,計算的時間間隔是[1,7),因為X從事務I讀取并且從此沒有其他的分布式事務提交,于是其使用來自協(xié)調(diào)器106的響應。7.系統(tǒng)100使用忽略事務7的最近快照作為節(jié)點2上用于事務x的快照,其在該情況下是本地事務9寫入的內(nèi)容。(注意到,GCID7本身沒有示出,因為其與在另一個節(jié)點上提交的事務相關。)由于節(jié)點2將GCID12與LCIDlO關聯(lián),其使用早于LCIDlO的快照;與LCID9關聯(lián)的快照是早于LCIDlO的最近的快照,所以使用該快照可以導致比選擇與LCID7或8關聯(lián)的快照更好的性能。下面是關于如何確切地選擇本地快照的更具體的細節(jié)。由于所有分布式事務的提交被集中協(xié)調(diào)(為了確保規(guī)則I成立),產(chǎn)生全局有效CID不會有開銷。使用上面描述的時間間隔[y,z)以及全局和本地事務標識符之間的映射,系統(tǒng)100可以通過構(gòu)造用于事務X的本地快照(圖4中的步驟6)來向給事務遞增地添加更多節(jié)點。如果本地機制被適配為、或本地快照被構(gòu)建為使得本地節(jié)點表現(xiàn)的好像事務真的在調(diào)度中計算的點開始,則系統(tǒng)100可以確保本地快照隔離。此外,系統(tǒng)100分配最近的快照給在時間間隔內(nèi)的可能的事務以確保相同的快照在所有節(jié)點108上被選擇。如上所述,當分布式事務成功提交時(即,當所有節(jié)點同意提交并且協(xié)調(diào)器106決定提交時),發(fā)布GCID。圖4的示例省略了在其上其他分布式事務提交以遞增GCID的其他節(jié)點。這說明系統(tǒng)100實現(xiàn)了遞增法以選擇使用合適的快照,因為如果僅涉及兩個節(jié)點且沒有其他的繼續(xù),則問題是平凡的。取決于確切地選擇本地快照,遞增式技術可以實現(xiàn)為不同的變體。在下文中,我們詳細描述被稱為第一選擇的一種變體。3.1 第一選擇第一選擇法的主要思路在于,系統(tǒng)100允許分布式事務的兩個提交之間的僅一個本地快照被其他分布式事務使用。因而,如果分布式事務x、y和Z在相同節(jié)點i上執(zhí)行,y從X讀取且忽略Z,其在所有其他節(jié)點上唯一地定義其本地快照。不需要用于這個的本地快照精確地是由X產(chǎn)生的快照。為此存在兩個原因:a)分布式事務可能沒有訪問所有節(jié)點,因而分布式快照的本地部分對這些節(jié)點沒有定義;以及b)只要我們可以確保分布式事務的開始在每個節(jié)點上是相同的次序,我們在快照中考慮僅本地的事務時就有一些自由,即,雖然快照在全局層面被唯一定義,但是本地實施可以遞增地構(gòu)建。因而,如果事務y希望訪問來自另一個節(jié)點的數(shù)據(jù),則其執(zhí)行如圖5A- 所示的下面的步驟:圖5A:事務y通過如上所述計算時間間隔[x,z)來計算其分布式快照,并且在節(jié)點3上指定其自己的快照為在X之后的一個。圖中,圓圈502表示快照,并且代表指定的或標記的快照。圖5B:利用該信息,系統(tǒng)在節(jié)點2上構(gòu)建事務y的快照如下:-如果存在被指定為分布式快照z-Ι(在z之前提交的分布式事務)的本地部分的本地快照,則y使用該快照。
-如果沒有這樣的快照,則系統(tǒng)指定由在z之前提交的最晚本地事務產(chǎn)生的快照作為X之后的一個。圖中,將區(qū)域504擴展到節(jié)點2,并且將數(shù)據(jù)庫的相應狀態(tài)標記為*x。-如果節(jié)點2上沒有事務z提交,則我們采用節(jié)點2上恰巧在下一個分布式事務提交之前的最晚本地快照,或者如果節(jié)點2上自此沒有其他的分布式事務提交,則采用最近快照。這仍然是忽略z的快照,因為分布式提交被一總排序,因而系統(tǒng)知曉z沒有訪問節(jié)點2。圖5C:系統(tǒng)可以遞增地添加更多節(jié)點到事務,例如,事務y可以在節(jié)點I上擴展其快照(圖中較大的區(qū)域506和標簽)。圖ro:注意到,如果其本地快照匹配其原始節(jié)點上指定的快照,或者如果其快照可以被提升為該指定的快照,則本地事務可以僅訪問來自另一個節(jié)點的數(shù)據(jù)。因而,圖中具有示出的快照的事務(圓圈508)不能訪問來自另一個節(jié)點的數(shù)據(jù),因為它不使用被標記為*x的指定快照。正如本方法的名稱,只有在兩個分布式提交之間開始的第一次事務可以選擇快照。如果這不可能,則操作失敗(事務仍然可以在本地節(jié)點上繼續(xù),但是它不能訪問其他節(jié)點)。為了理解該限制的理由,考慮下面的示例:如果我們允許具有與指定的快照不同的快照的來自節(jié)點i的事務X訪問另一節(jié)點,則它的事務開始在節(jié)點i上與所有其他分布式事務的開始不同(為便于表述,假定它較早),但是在所有其他節(jié)點上相同。如果現(xiàn)在另一個事務I被允許在不同節(jié)點j上進行相同操作,而且稍后X訪問j (即%〈~)且I訪問i (即~火),則開始的順序不相同。當然這是非常約束性的,但是監(jiān)視事務是否訪問哪些節(jié)點的開銷巨大。如果事務在其開始時通知系統(tǒng)它想要訪問來自另一個節(jié)點的數(shù)據(jù),則系統(tǒng)可以通過分配指定的快照給該事務來確保這是可能的。第一選擇法強制第2.5小節(jié)中建立的四個規(guī)則如下:通過集中協(xié)調(diào)所有分布式提交來強制規(guī)則I。通過在其訪問的每個節(jié)點上的向事務X提供精確地包括X在任何其他節(jié)點上讀取的全部分布式事務的快照來強制規(guī)則2和3(基于時間間隔以及總是選擇時間間隔內(nèi)最近的快照的規(guī)則)。通過為兩個連續(xù)的分布式事務之間的每個時間間隔,將每個節(jié)點上快照的可能選擇限定為單個快照,而強制規(guī)則4。因而,在相同的兩個分布式提交之間開始的每個事務在所有節(jié)點上也采用相同快照。第一選擇法可以被視為對悲觀法的改進。其具有相同的保證,但是偶爾提供更近的快照。遞增地構(gòu)建快照,而不是在事務開始時選擇所有的快照。因而,我們可以考慮事務在其第一節(jié)點上工作的同時提交的其他節(jié)點上的一些本地事務。另外,該方法不需要任何先驗知識,因為快照是遞增地構(gòu)建的。知曉事務是否最終訪問來自其他節(jié)點的數(shù)據(jù)可以減少中止率但不是必需的。遞增(第一選擇)法的值得注意的優(yōu)點在于,僅僅需要協(xié)調(diào)分布式事務,并且之前不需要關于事務的知識,即,本地事務可以升級為分布式事務。遞增法可以對應用程序透明地實現(xiàn)。缺點在于,該方法更復雜并且需要一些對底層數(shù)據(jù)庫的改變。3.2討論以及比較全局法、悲觀法、樂觀法以及遞增法之間的主要區(qū)別是需要的關于事務的先驗知識。悲觀法需要關于事務開始之前訪問的節(jié)點集合的精確的知識(或者必須假定安全的超集,或者如果不在初始節(jié)點集合中的節(jié)點被訪問的話就中止該事務)。樂觀法得益于事務是將要分布還是本地化的信息。遞增法預先不需要關于事務的任何信息。在保證方面,樂觀法提供比其他方法更低等級的一致性,S卩,不防止交叉異常。最后,這些方法在它們對時間點恢復的支持上不同。普通的恢復對所有方法是可能的,但是如果數(shù)據(jù)庫的節(jié)點獨立運行,則在特定時間點訪問分布式數(shù)據(jù)庫的狀態(tài)更加困難。對于全局法,分配給所有事務的全局唯一的CID可以用于時間點恢復。在樂觀法中,沒有分布式數(shù)據(jù)庫的一致視圖,因此時間點恢復總是混亂的。在悲觀法和遞增法中,時間點恢復對分布式事務的提交是可能的。由于無論如何系統(tǒng)都發(fā)布全局CID用于分布式事務,這對于遞增式幾乎毫無開銷。在任何情況下,僅為那些參與分布式事務的節(jié)點定義快照義。因而,完整的時間點恢復僅對涉及所有節(jié)點的分布式事務的提交是可能的。系統(tǒng)100通過將事務的開始放在適合的位置而不是第一次操作發(fā)生的位置而使用類似于Elnikety的廣義快照隔離的自由度。但是與其中開始僅可以較早的Elnikety的廣義快照隔離相反,系統(tǒng)100還允許事務開始較晚(根據(jù)墻鐘時間(wall clock time))以確保不超出限制的最近可能的快照。系統(tǒng)100通過為每個事務提供仍然一致的最近快照而使用類似于Daudjee的對話快照隔離的實現(xiàn)。在一些情況下,這甚至可以是比Daudjee中的強快照隔離的定義允許的更近的快照,因為系統(tǒng)可以僅考慮本地事務,只要它們不破壞全局一致性。系統(tǒng)100的實施例被組織為列存儲。然而與使用全局法的Zhangl和Zhang2相比,系統(tǒng)100采用遞增法。與Schenkel相比,系統(tǒng)100的實施例考慮一個節(jié)點上的本地事務及多于一個節(jié)點上的分布式事務。用于本地事務的樂觀法在某些實施例中很重要。系統(tǒng)100的值得注意的區(qū)別是,尤其是與使用基于快照隔離的復制、但是在整個系統(tǒng)中實現(xiàn)較高的隔離等級的系統(tǒng)相比,我們最小化了在節(jié)點之間運送的關于事務的信息(例如,讀-或?qū)?集合)。這是我們的系統(tǒng)中值得注意的設計決策,因而我們無法實現(xiàn)比底層系統(tǒng)提供的更高的隔離水平。4.示例配置圖6示出系統(tǒng)100的示例設置。系統(tǒng)100采用在兩個服務器602a和602b上運行的數(shù)據(jù)庫的8個實例(節(jié)點108)作為分布式數(shù)據(jù)庫104,每個服務器具有32核以及256GB主存儲器(即,4個實例共享一臺機器)。每個實例彼此獨立運行,在本地強制快照隔離。使用具有8核以及16GB主存儲器的另一服務器作為驅(qū)動器(協(xié)調(diào)器)機器106,其包括所需的事務協(xié)調(diào)設施。事務的協(xié)調(diào)在該機器上集中并且使用普通OS鎖來實現(xiàn)。數(shù)據(jù)庫被組裝成8個倉庫并且通過倉庫分割(即,每個實例一個倉庫)。終端(客戶端102)的數(shù)量被固定為32。更精確地,終端是客戶端在其上輸入它們的請求的系統(tǒng),一次一個客戶端。更具體地,控制器106包括事務處理器610和事務協(xié)調(diào)器612。事務處理器610處理事務,例如作為用戶與提供到使用分布式數(shù)據(jù)庫104執(zhí)行應用程序的應用程序服務器的接口的客戶端機器交互作用的結(jié)果。事務可以因用戶操作(創(chuàng)建指令、撤銷指令等)、因系統(tǒng)請求(處理指令傳遞,新庫存進入系統(tǒng)等)等而發(fā)生。事務處理器610將本地事務路由到各個節(jié)點,并將全局事務(訪問多于一個節(jié)點)路由到事務協(xié)調(diào)器612。事務協(xié)調(diào)器612執(zhí)行上述事務協(xié)調(diào)處理(產(chǎn)生GCID,圖4和相關文本等)。
圖7是在分布式數(shù)據(jù)庫中執(zhí)行快照隔離的方法700的流程圖。方法700可以由系統(tǒng)100執(zhí)行(參見圖1、圖6等),例如由一個或多個計算機程序控制。在702,多個硬件設備實現(xiàn)多個節(jié)點,該多個節(jié)點實現(xiàn)分布式數(shù)據(jù)庫。例如,服務器602a和602b實現(xiàn)節(jié)點108,節(jié)點108實現(xiàn)分布式數(shù)據(jù)庫104.
在704,節(jié)點存儲本地快照信息。對于特定節(jié)點,對應的本地快照信息強制用于該特定節(jié)點的快照隔離。例如,每個節(jié)點108存儲它們自己相應的本地快照新鮮。還參見圖5A-5D0在706,第一節(jié)點部分地處理事務。例如,在圖4中節(jié)點I在LCID4正在部分地處
理事務X。在708,第一節(jié)點向硬件協(xié)調(diào)器發(fā)送訪問第二節(jié)點的請求。例如,在圖4中,節(jié)點I向協(xié)調(diào)器106發(fā)送訪問節(jié)點2的請求。在710,第一節(jié)點從硬件協(xié)調(diào)器接收全局提交標識符。例如,在圖4中,節(jié)點I從協(xié)調(diào)器106接收GCID7。在712,第一節(jié)點和第二節(jié)點根據(jù)全局提交標識符繼續(xù)處理事務。例如,圖4中,節(jié)點I使用GCID7來檢查是否沒有其他提交的分布式事務,而節(jié)點2使用GCID7來選擇對應于LCID9的快照,用于處理事務X。另外,注意到,不僅來自全局協(xié)調(diào)器106的信息,本地環(huán)境也可以影響用于在其他節(jié)點上恢復快照的GCID。例如,如果自X開始以來另一個事務已經(jīng)在節(jié)點I上提交,則不必聯(lián)系協(xié)調(diào)器106 ;使用該事務的GCID作為信息就夠了。(相比于上面描述的用于聯(lián)系協(xié)調(diào)器的情況,該情況較少發(fā)生。)圖8是用于實現(xiàn)本發(fā)明的實施例的示例計算機系統(tǒng)和網(wǎng)絡2400的框圖。計算機系統(tǒng)2410包括用于傳遞信息的總線2405或其他通信機制、以及耦接于總線2405用于處理信息的處理器2401。計算機系統(tǒng)2410還包括耦接于總線2405的存儲器2402用于存儲信息和將要由處理器2401執(zhí)行的指令,包括用于執(zhí)行上面描述的技術的信息和指令。該存儲器還可以用于存儲處理器2401執(zhí)行的指令執(zhí)行期間的臨時變量或其他中間信息。該存儲器的可能的實施方式可以是但不限于隨機存取存儲器(RAM)、只讀存儲器(ROM)(當不存儲臨時變量或其他中間信息時)、或兩者。還提供存儲設備2403用于存儲信息和指令。存儲設備的常見形式包括例如硬盤驅(qū)動器、磁盤、光盤、CD-R0M、DVD、閃存、USB存儲卡、固態(tài)驅(qū)動器、或計算機可以讀取的任何其他介質(zhì)。例如,存儲設備2403可以存儲用于執(zhí)行以上構(gòu)建的技術或者具體表述的源代碼、二進制代碼、或軟件文件。計算機系統(tǒng)2410可以經(jīng)由總線2405耦接到顯示器2412,諸如陰極射線管(CRT)或液晶顯示器(LCD),用于顯示信息給計算機用戶。諸如鍵盤和/或鼠標的輸入設備2411被耦接到總線2405用于將信息和指令選擇從用戶傳遞到處理器2401。這些組件的組合允許用戶與系統(tǒng)通信。在一些系統(tǒng)中,總線2405可以被劃分為多條專用總線。計算機系統(tǒng)2410還包括耦接于總線2405的網(wǎng)絡接口 2404。網(wǎng)絡接口 2404可以在計算機系統(tǒng)2410與本地網(wǎng)絡2420之間提供雙向數(shù)據(jù)通信。例如,網(wǎng)絡接口 2404可以是數(shù)字用戶線(DSL)或調(diào)制解調(diào)器,用于通過電話線提供數(shù)據(jù)通信連接。網(wǎng)絡接口的另一個示例是局域網(wǎng)(LAN)卡,用于提供到兼容的LAN的數(shù)據(jù)通信連接。無線鏈路也可以是另一個示例。在任何這樣的實施方式中,網(wǎng)絡接口 2404發(fā)送和接收攜帶表示各種類型信息的數(shù)字數(shù)據(jù)流的電子、電磁、或光信號。計算機系統(tǒng)2410可以通過網(wǎng)絡接口 2404向內(nèi)部網(wǎng)或互聯(lián)網(wǎng)2430發(fā)送和接收包括消息或其他接口操作的信息。在互聯(lián)網(wǎng)示例子中,軟件組件或服務可以駐留在橫跨網(wǎng)絡的多個不同的計算機系統(tǒng)2410或服務器2431、2432、2433、2434和2435上。服務器2431可以通過互聯(lián)網(wǎng)2430、本地網(wǎng)絡2420、和網(wǎng)絡接口 2404從一個組件向計算機系統(tǒng)2410上的組件發(fā)送操作或消息。 計算機系統(tǒng)和網(wǎng)絡2400可以以客戶端服務器方式來配置。例如,計算機系統(tǒng)2410可以實現(xiàn)服務器??蛻舳?415可以包括類似于計算機系統(tǒng)2410的組件的組件。更具體地,如上所述,計算機系統(tǒng)2410可以實現(xiàn)控制器106(參見圖1);服務器2431和2432可以實現(xiàn)分布式數(shù)據(jù)庫;而客戶端2415可以是客戶端102之一?;ヂ?lián)網(wǎng)2430可以是另一個本地網(wǎng)絡。以上說明描述了本發(fā)明的各種實施例以及如何實現(xiàn)本發(fā)明的各方面的示例。以上的示例和實施例不應當被認為是僅有的實施例,而是給出用于說明如所附權利要求限定的本發(fā)明的靈活性和優(yōu)點。基于上述公開和所附權利要求,其他配置、實施例、實現(xiàn)以及等價物對于本領域技術人員而言是顯而易見的,并且可以被采用而不背離如權利要求限定的本發(fā)明的精神和范圍。
權利要求
1.一種在分布式數(shù)據(jù)庫中執(zhí)行快照隔離的計算機實現(xiàn)方法,包括: 在多個硬件設備上實現(xiàn)多個節(jié)點,該多個節(jié)點實現(xiàn)分布式數(shù)據(jù)庫; 由該多個節(jié)點存儲多個本地快照信息,其中對于特定節(jié)點,相應的本地快照信息強制該特定節(jié)點的快照隔離; 由該多個節(jié)點的第一節(jié)點部分地處理分布式事務; 由第一節(jié)點向硬件協(xié)調(diào)器發(fā)送訪問該多個節(jié)點的第二節(jié)點的請求; 由第一節(jié)點從該硬件協(xié)調(diào)器接收全局提交標識符; 由第一節(jié)點和第二節(jié)點根據(jù)該全局提交標識符繼續(xù)處理該分布式事務。
2.如權利要求1所述的計算機實現(xiàn)方法,其中該多個硬件設備之一被配置為實現(xiàn)該多個節(jié)點的至少兩個。
3.如權利要求1所述的計算機實現(xiàn)方法,其中該多個硬件設備之一被配置為實現(xiàn)該多個節(jié)點之一。
4.如權利要求1所述的計算機實現(xiàn)方法,其中該多個節(jié)點的每一個存儲該分布式數(shù)據(jù)庫的不同部分。
5.如權利要求1所述的計算機實現(xiàn)方法,其中該全局提交標識符是多個全局提交標識符之一,其中該多個全局提交標識符的每一個標識多個分布式事務的每一個的提交。
6.如權利要求1所述的計算機實現(xiàn)方法,進一步包括: 由該硬件協(xié)調(diào)器產(chǎn)生該全局提交標識符。
7.如權利要求1所述的計算機實現(xiàn)方法,進一步包括: 當多個分布式事務之一提交成功時,由該硬件協(xié)調(diào)器產(chǎn)生該全局提交標識符。
8.如權利要求1所述的計算機實現(xiàn)方法,其中該全局提交標識符是多個全局提交標識符之一,進一步包括: 當多個分布式事務提交成功時,由該硬件協(xié)調(diào)器產(chǎn)生該多個全局提交標識符。
9.如權利要求1所述的計算機實現(xiàn)方法,進一步包括: 在發(fā)送該請求之前,由第一節(jié)點檢查另一個分布式事務還沒有提交。
10.如權利要求1所述的計算機實現(xiàn)方法,進一步包括: 在繼續(xù)處理該分布式事務之前,由第一節(jié)點檢查另一個分布式事務還沒有提交。
11.如權利要求1所述的計算機實現(xiàn)方法,其中繼續(xù)處理該分布式事務包括: 由第一節(jié)點檢查另一個分布式事務還沒有提交; 從第一節(jié)點向第二節(jié)點發(fā)送該全局提交標識符;以及 由第二節(jié)點根據(jù)在該全局提交標識符之前產(chǎn)生的第二節(jié)點上的多個本地快照信息的快照來處理該分布式事務。
12.如權利要求1所述的計算機實現(xiàn)方法,其中該多個本地快照信息對應于該多個節(jié)點上的該分布式數(shù)據(jù)庫的多個快照。
13.如權利要求1所述的計算機實現(xiàn)方法,其中該多個本地快照信息對應于在該多個節(jié)點上遞增地創(chuàng)建的 該分布式數(shù)據(jù)庫的多個快照。
14.一種在分布式數(shù)據(jù)庫中執(zhí)行快照隔離的系統(tǒng),包括: 多個硬件設備,被配置為實現(xiàn)多個節(jié)點,該多個節(jié)點實現(xiàn)分布式數(shù)據(jù)庫;以及 硬件協(xié)調(diào)器,被配置為產(chǎn)生全局提交標識符,其中,該多個節(jié)點被配置為存儲多個本地快照信息,其中對于特定節(jié)點,相應的本地快照信息強制該特定節(jié)點的快照隔離, 其中,該多個節(jié)點的第一節(jié)點被配置為部分地處理分布式事務, 其中,第一節(jié)點被配置為向該硬件協(xié)調(diào)器發(fā)送訪問該多個節(jié)點的第二節(jié)點的請求, 其中,第一節(jié)點被配置為從該硬件協(xié)調(diào)器接收該全局提交標識符,而且 其中,第一節(jié)點和第二節(jié)點被配置為根據(jù)該全局提交標識符繼續(xù)處理該分布式事務。
15.如權利要求14所述的系統(tǒng),其中該硬件協(xié)調(diào)器包括: 事務控制器,被配置為產(chǎn)生該全局提交標識符;以及 事務處理器,被配置為將本地事務路由到該多個節(jié)點之一,并將該分布式事務路由到該事務控制器。
16.如權利要求14所述的系統(tǒng),其中該全局提交標識符是多個全局提交標識符之一,其中該多個全局提交標識符的每一個標識多個分布式事務的每一個的提交。
17.如權利要求14所述的系統(tǒng),其中該多個本地快照信息對應于該多個節(jié)點上的該分布式數(shù)據(jù)庫的多個快照。
18.如權利要求14所述的 系統(tǒng),其中第一節(jié)點被配置為檢查另一個分布式事務還沒有提交, 其中,第一節(jié)點被配置為向第二節(jié)點發(fā)送該全局提交標識符,而且其中,第二節(jié)點被配置為根據(jù)在該全局提交標識符之前產(chǎn)生的第二節(jié)點上的多個本地快照信息的快照來處理該分布式事務。
19.一種存儲用于控制在分布式數(shù)據(jù)庫中執(zhí)行快照隔離的計算機系統(tǒng)的指令的非暫時性計算機可讀介質(zhì),包括: 分布式數(shù)據(jù)庫組件,被配置為控制多個硬件設備在多個節(jié)點上實現(xiàn)分布式數(shù)據(jù)庫;以及 協(xié)調(diào)器組件,被配置為控制硬件協(xié)調(diào)器產(chǎn)生全局提交標識符, 其中,該分布式數(shù)據(jù)庫組件被配置為該控制多個節(jié)點存儲多個本地快照信息,其中對于特定節(jié)點,相應的本地快照信息強制該特定節(jié)點的快照隔離, 其中,該分布式數(shù)據(jù)庫組件被配置為控制該多個節(jié)點的第一節(jié)點部分地處理分布式事務, 其中,該分布式數(shù)據(jù)庫組件被配置為控制第一節(jié)點向該硬件協(xié)調(diào)器發(fā)送訪問該多個節(jié)點的第二節(jié)點的請求, 其中,該分布式數(shù)據(jù)庫組件被配置為控制第一節(jié)點從該硬件協(xié)調(diào)器接收該全局提交標識符,而且 其中,該分布式數(shù)據(jù)庫組件被配置為控制第一節(jié)點和第二節(jié)點根據(jù)該全局提交標識符繼續(xù)處理該分布式事務。
20.如權利要求19所述的非暫時性計算機可讀介質(zhì),其中該協(xié)調(diào)器組件包括: 事務控制器組件,被配置為控制該硬件協(xié)調(diào)器產(chǎn)生該全局提交標識符;以及 事務處理器組件,被配置為控制該硬件協(xié)調(diào)器將本地事務路由到該多個節(jié)點之一,并將該分布式事務路由到該事務控制器。
全文摘要
一種在分布式數(shù)據(jù)庫中執(zhí)行快照隔離的系統(tǒng)和方法。每個節(jié)點存儲本地快照信息,其強制該節(jié)點的快照隔離。該方法包括由第一節(jié)點部分地處理分布式事務;從協(xié)調(diào)器接收全局提交標識符;以及由第一節(jié)點和第二節(jié)點根據(jù)該全局提交標識符繼續(xù)處理該分布式事務。
文檔編號G06F17/30GK103116596SQ20121044860
公開日2013年5月22日 申請日期2012年9月28日 優(yōu)先權日2011年11月16日
發(fā)明者S·希爾頓布蘭德, C·賓尼格, F·費爾伯, D·科斯曼, J·李, N·梅 申請人:Sap股份公司