異步分布式數(shù)據(jù)庫(kù)管理的系統(tǒng)和方法
【專利摘要】本發(fā)明的實(shí)施例包括異步分布式數(shù)據(jù)庫(kù)管理的系統(tǒng)和方法。在一個(gè)實(shí)施例中,系統(tǒng)和方法等待執(zhí)行或更新數(shù)據(jù)庫(kù)的事務(wù)或命令,直到特定的條件得到滿足,基本上從單個(gè)表達(dá)式的賦值中的更新時(shí)間分離讀取時(shí)間。因此,本文所描述的系統(tǒng)和方法可以,在某些情況下,解決暫時(shí)的不一致性,而無(wú)需中止和/或以其他方式終止數(shù)據(jù)庫(kù)事務(wù),該數(shù)據(jù)庫(kù)事務(wù)將以其他方式被中止。
【專利說明】異步分布式數(shù)據(jù)庫(kù)管理的系統(tǒng)和方法
[0001]優(yōu)先權(quán)要求
[0002]本申請(qǐng)要求2011年08月01日遞交的第61/513,932號(hào),名稱為“Reconciling aDistributed Database from Hierarchical Viewpoints,,,代理人案號(hào)為 58520-8006.USOO的美國(guó)臨時(shí)申請(qǐng),其內(nèi)容以引用方式被明示地合并于此。
[0003]對(duì)相關(guān)申請(qǐng)的交互引用
[0004]本申請(qǐng)涉及題為“Reconciling a Distributed Database from HierarchicalViewpoints",也由賈森.盧卡斯發(fā)明的,于2012年8月I日提交的,代理人案號(hào)為
58520-8006.USOI的共同未決的美國(guó)專利申請(qǐng)_,其內(nèi)容以引用的方式被明示
地合并于此。
[0005]本申請(qǐng)涉及題為“Generalized Reconciliation in a Distributed Database,,,也是由賈森.盧卡斯發(fā)明的,于2012年8月I日提交的,代理案號(hào)為58520-8007.USOl的共同未決的美國(guó)專利申請(qǐng)_,其的內(nèi)容以引用的方式被明示地合并于此。
【技術(shù)領(lǐng)域】
[0006]本發(fā)明的具體實(shí)施例一般涉及數(shù)據(jù)庫(kù)管理技術(shù)以及,更具體地說,異步分布式數(shù)
據(jù)庫(kù)管理。
【背景技術(shù)】
[0007]分布式數(shù)據(jù)庫(kù)是一種不是所有的存儲(chǔ)裝置都被連接到共同的中央處理單元(CPU)的數(shù)據(jù)庫(kù)。分布式數(shù)據(jù)庫(kù)可以被存儲(chǔ)在位于同一物理位置的多臺(tái)計(jì)算機(jī)中,或可以分散在處于多個(gè)物理位置的互連的計(jì)算機(jī)網(wǎng)絡(luò)。分布式系統(tǒng)的位置或場(chǎng)所可能分布在大的區(qū)域(如美國(guó)或世界),或在一個(gè)小的區(qū)域(如建筑物或校園)。在分布式數(shù)據(jù)庫(kù)中的數(shù)據(jù)集合也可以分布在多個(gè)物理位置。
[0008]通常情況下,分布式數(shù)據(jù)庫(kù)系統(tǒng)的目的是讓很多用戶(客戶端或應(yīng)用)在相同時(shí)間的數(shù)據(jù)集合中的相同信息的使用,同時(shí)使它看起來好像每個(gè)用戶獨(dú)占訪問整個(gè)數(shù)據(jù)集合。分布式數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)以性能的損失最小(潛伏期)和最大事務(wù)吞吐量來提供這項(xiàng)服務(wù)。也就是說,在位置A的用戶必須能夠訪問(也許更新)在位置B的數(shù)據(jù)。如果用戶更新信息,該更新必須被整個(gè)傳播分布式數(shù)據(jù)庫(kù)系統(tǒng)的資源以維護(hù)在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一致性。
[0009]更新(或數(shù)據(jù)庫(kù)事務(wù))都必須在分布式數(shù)據(jù)庫(kù)系統(tǒng)中串行化以維護(hù)一致性。如果事務(wù)以串行順序被執(zhí)行,同時(shí)沖突永遠(yuǎn)不會(huì)發(fā)生,因?yàn)槊恳粋€(gè)事務(wù)將是在特定時(shí)間的系統(tǒng)上被執(zhí)行的唯一事務(wù),并有專用的系統(tǒng)資源。新的事務(wù)將看到以前事務(wù)的結(jié)果,再加上由該事務(wù)作出的變化,但永遠(yuǎn)不會(huì)看到那些尚未啟動(dòng)的事務(wù)的結(jié)果。在操作中,事務(wù)通常同時(shí)執(zhí)行,并且要求到相同資源的同時(shí)訪問和修改。因此,維護(hù)在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一致性可能非常復(fù)雜并且經(jīng)常導(dǎo)致不可接受的響應(yīng)時(shí)間。
[0010]當(dāng)前存在各種同時(shí)控制機(jī)制,例如,開放式同時(shí)控制機(jī)制,其通過事后檢測(cè)無(wú)效使用進(jìn)行操作。這些類型的機(jī)制的基本思想是把數(shù)據(jù)庫(kù)事務(wù)的生命周期分為三個(gè)階段:讀取、驗(yàn)證和發(fā)布。在讀階段,事務(wù)獲取資源而不計(jì)沖突或有效性,但它維護(hù)它采時(shí)用的資源集合(讀集)的紀(jì)錄和它已經(jīng)修改資源集合(寫集)。在驗(yàn)證階段,開放式同時(shí)控制機(jī)制檢查事務(wù)的讀集,并決定那些資源的當(dāng)前狀態(tài)是否已經(jīng)改變。如果讀集并沒有改變,那么事務(wù)的開放式的假設(shè)被證實(shí)是正確的,并且系統(tǒng)發(fā)布寫集,提交事務(wù)的更改。如果讀集有變化,那么事務(wù)的開放式假設(shè)被證明是錯(cuò)誤的,并且系統(tǒng)將中止導(dǎo)致所有更改的損失的事務(wù)。
[0011]不幸的是,在一些高度分布式數(shù)據(jù)庫(kù)中,遠(yuǎn)程事件和連續(xù)異步協(xié)調(diào)可以暫時(shí)建立不一致性,其導(dǎo)致假設(shè)被證明是暫時(shí)錯(cuò)誤的事務(wù)的不必要的中止。
【發(fā)明內(nèi)容】
[0012]本發(fā)明的實(shí)施例包括異步分布式數(shù)據(jù)庫(kù)管理的系統(tǒng)和方法。在一個(gè)實(shí)施例中,系統(tǒng)和方法等待執(zhí)行和/或更新數(shù)據(jù)庫(kù)事務(wù)或命令,直到特定的條件得到滿足,從單個(gè)表達(dá)式的賦值中的更新時(shí)間分離讀取時(shí)間,相應(yīng)地,在此描述的系統(tǒng)和方法可以,在某些情況下,解決暫時(shí)的不一致性,而無(wú)需中止和/或以其他方式終止數(shù)據(jù)庫(kù)事務(wù),該數(shù)據(jù)庫(kù)事務(wù)將以其他方式被中止。
[0013]根據(jù)各種實(shí)施例,數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)通過從分布式數(shù)據(jù)庫(kù)系統(tǒng)中的多個(gè)客戶端系統(tǒng)接收與事務(wù)序列相關(guān)聯(lián)的數(shù)據(jù)庫(kù)事務(wù),異步地管理分布式數(shù)據(jù)庫(kù),其中數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)斷言,輪詢關(guān)于被包括在數(shù)據(jù)庫(kù)事務(wù)中的一個(gè)或多個(gè)斷言的有效性的多個(gè)數(shù)據(jù)庫(kù)資源以達(dá)成共識(shí),以及如果共識(shí)被在超時(shí)時(shí)間間隔內(nèi)達(dá)成,基于達(dá)成共識(shí),在數(shù)據(jù)庫(kù)管理系統(tǒng)更新在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)庫(kù)事務(wù),其中共識(shí)最初并未在多個(gè)數(shù)據(jù)庫(kù)資源之間被達(dá)成。
[0014]在一個(gè)實(shí)施例中,DBMS通過通知在所述分布式數(shù)據(jù)庫(kù)中的所述客戶端,如果所述共識(shí)未在所述超時(shí)時(shí)間內(nèi)被達(dá)成,則所述數(shù)據(jù)庫(kù)事務(wù)被中止來異步地管理分布式數(shù)據(jù)庫(kù)。
[0015]在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)事務(wù)是由在客戶端上運(yùn)行的應(yīng)用程序啟動(dòng)。
[0016]在一個(gè)實(shí)施例中,DBMS通過在更新分布式數(shù)據(jù)庫(kù)系統(tǒng)之前,通知所述客戶端所述數(shù)據(jù)庫(kù)事務(wù)已經(jīng)被成功完成。
[0017]在一個(gè)實(shí)施例中,超時(shí)時(shí)間間隔包括時(shí)間的半秒和3秒之間的持續(xù)時(shí)間和小于半秒的持續(xù)時(shí)間。
[0018]在一個(gè)實(shí)施例中,其中更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)一步包括異步地協(xié)調(diào)所述數(shù)據(jù)庫(kù)事務(wù)與在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)其他數(shù)據(jù)庫(kù)事務(wù)。
[0019]在一個(gè)實(shí)施例中,DBMS通過在更新分布式數(shù)據(jù)庫(kù)系統(tǒng)之前,從分布式數(shù)據(jù)庫(kù)系統(tǒng)讀取相關(guān)于數(shù)據(jù)庫(kù)事務(wù)的信息,和傳送信息給客戶端,而不論共識(shí)是否已經(jīng)被達(dá)到來異步管理分布式數(shù)據(jù)庫(kù)。
[0020]在一個(gè)實(shí)施例中,DBMS通過在數(shù)據(jù)庫(kù)管理系統(tǒng)從在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的第二客戶端接收與第二事務(wù)序列相關(guān)聯(lián)的第二數(shù)據(jù)庫(kù)事務(wù)來異步管理分布式數(shù)據(jù)庫(kù),其中第二數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)第二斷言,并且其中一個(gè)或多個(gè)第二斷言要求讀取與數(shù)據(jù)庫(kù)事務(wù)相關(guān)的信息。
[0021]在一個(gè)實(shí)施例中,其中更新分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)一步包括提交數(shù)據(jù)庫(kù)事務(wù)至全局事務(wù)序列,以及遍及分布式數(shù)據(jù)庫(kù)的多個(gè)數(shù)據(jù)庫(kù)資源復(fù)制全局事務(wù)序列。[0022]在一個(gè)實(shí)施例中,DBMS通過確定所述共識(shí)可以被達(dá)成的可能性來異步管理數(shù)據(jù)庫(kù)。
[0023]在一個(gè)實(shí)施例中,DBMS通過基于共識(shí)可以被達(dá)成的可能性,在數(shù)據(jù)庫(kù)管理系統(tǒng)設(shè)置超時(shí)時(shí)間間隔來異步管理數(shù)據(jù)庫(kù)。
[0024]在一個(gè)實(shí)施例中,多個(gè)數(shù)據(jù)庫(kù)資源包括在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)其它數(shù)據(jù)庫(kù)管理系統(tǒng)或在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)存儲(chǔ)管理系統(tǒng)。
[0025]根據(jù)各種實(shí)施例中,DBMS通過從分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端接收與事務(wù)序列相關(guān)聯(lián)的數(shù)據(jù)庫(kù)事務(wù)來異步管理分布式數(shù)據(jù)庫(kù),其中數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)斷言,處理數(shù)據(jù)庫(kù)事務(wù)以識(shí)別一個(gè)或多個(gè)斷言,其中一個(gè)或多個(gè)斷言必須有特定的配置以便更新在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)庫(kù)事務(wù),在第一時(shí)間在數(shù)據(jù)庫(kù)管理系統(tǒng)確定關(guān)于一個(gè)或多個(gè)斷言的多個(gè)數(shù)據(jù)庫(kù)資源之間的第一配置,其中第一配置不同于特定配置,以及如果關(guān)于一個(gè)或多個(gè)斷言的多個(gè)數(shù)據(jù)庫(kù)資源之間的第二配置與在第二時(shí)間的特定配置是一樣的,在數(shù)據(jù)庫(kù)管理系統(tǒng)在第二時(shí)間更新在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)庫(kù)事務(wù)。
[0026]在一個(gè)實(shí)施例中,特定配置要求所述一個(gè)或多個(gè)斷言是有效的。
[0027]根據(jù)各種實(shí)施例,DBMS可以異步管理分布式數(shù)據(jù)庫(kù)。DBMS可以包括處理單元、接口和內(nèi)存單元。接口可以從分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端系統(tǒng)接收與事務(wù)序列相關(guān)聯(lián)的數(shù)據(jù)庫(kù)事務(wù),其中數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)斷言。內(nèi)存儲(chǔ)單元可以具有存儲(chǔ)在其上的指令,其中當(dāng)指令由處理單元執(zhí)行時(shí),使處理單元處理數(shù)據(jù)庫(kù)事務(wù)以確定一個(gè)或多個(gè)斷言,其中一個(gè)或多個(gè)斷言必須具有特定配置,以便更新在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)庫(kù)事務(wù),在第一時(shí)間確定關(guān)于一個(gè)或多個(gè)斷言的多個(gè)數(shù)據(jù)庫(kù)資源之間的第一配置,其中第一配置不同于特定配置,并且如果在關(guān)于一個(gè)或多個(gè)斷言的多個(gè)數(shù)據(jù)庫(kù)資源之間的第二配置與在第二時(shí)間的特定配置相同,則在第二時(shí)間更新全局事務(wù)序列中的數(shù)據(jù)庫(kù)事務(wù)。
【專利附圖】
【附圖說明】
[0028]圖1根據(jù)一個(gè)實(shí)施例示出了示例性分布式數(shù)據(jù)庫(kù)環(huán)境的框圖,其說明了本發(fā)明的各種特征可被用于其內(nèi)的多個(gè)分布式數(shù)據(jù)庫(kù)站點(diǎn)和客戶端系統(tǒng)。
[0029]圖2根據(jù)本發(fā)明一個(gè)實(shí)施例示出了本發(fā)明的各種特征可被用于其內(nèi)的分布式數(shù)據(jù)庫(kù)環(huán)境的示例性節(jié)點(diǎn)的框圖。
[0030]圖3示出了根據(jù)一個(gè)實(shí)施例的異步分布式數(shù)據(jù)庫(kù)管理的數(shù)據(jù)庫(kù)管理系統(tǒng)的組件的框圖。
[0031]圖4根據(jù)一個(gè)實(shí)施例示出了流程圖,其說明了異步分布式數(shù)據(jù)庫(kù)管理的示例性過程。
[0032]圖5根據(jù)一個(gè)實(shí)施例描述了流程圖,其說明了異步分布式數(shù)據(jù)庫(kù)管理的示例性過程。
[0033]圖6根據(jù)一個(gè)實(shí)施例描述了流程圖,其說明了異步分布式數(shù)據(jù)庫(kù)管理的示例性過程。
[0034]圖7根據(jù)本發(fā)明一個(gè)實(shí)施例示出了說明數(shù)據(jù)庫(kù)環(huán)境的組件的示例性操作的序列圖
[0035]圖8示出了根據(jù)一個(gè)實(shí)施例的在計(jì)算機(jī)系統(tǒng)的示例形式中的機(jī)器的示意性表示,一組指令在計(jì)算機(jī)系統(tǒng)之內(nèi),用于使機(jī)器執(zhí)行在此討論的任何一個(gè)或多個(gè)的方法,可被執(zhí)行。
【具體實(shí)施方式】
[0036]異步分布式數(shù)據(jù)庫(kù)管理的系統(tǒng)和方法被在此進(jìn)行描述。特別地,數(shù)據(jù)庫(kù)命令或事務(wù)通常被在一組特定的現(xiàn)有條件之上被斷定。如果條件存在,則該命令可以成功實(shí)施。然而,如果條件不立即存在,則該命令被終止,并生成錯(cuò)誤代碼。命令或數(shù)據(jù)庫(kù)事務(wù)的立即終止在大型的、高度分布式數(shù)據(jù)庫(kù)中是尤其嚴(yán)重的問題,其中遠(yuǎn)程事件和持續(xù)協(xié)調(diào)往往造成暫時(shí)的不一致。因此,本文所述的系統(tǒng)和方法等待執(zhí)行或更新數(shù)據(jù)庫(kù)事務(wù),直到特定的一組條件被滿足。
[0037]在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)事務(wù)可以包括事務(wù)所依賴的一個(gè)或多個(gè)斷言。通常情況下,斷言必須具有特定的配置或有效的,以便被更新和/或協(xié)調(diào)為全局事務(wù)序列。無(wú)效的斷言導(dǎo)致在數(shù)據(jù)庫(kù)中的可以是臨時(shí)的不一致性。有利的是,本文所述的系統(tǒng)和方法可以在某些情況下,解決暫時(shí)的不一致性,而無(wú)需中止和/或以其他方式終止數(shù)據(jù)庫(kù)事務(wù)。
[0038]在一個(gè)實(shí)施例中,該目標(biāo)可通過從單個(gè)表達(dá)式的賦值中的更新時(shí)間分離讀出時(shí)間來完成??梢岳斫獾氖?,在一些實(shí)施例中,命令或數(shù)據(jù)庫(kù)事務(wù)可能因其他原因而超時(shí)。
[0039]下面的描述和附圖是說明性的,并且不應(yīng)當(dāng)被解釋為限制性的。許多具體的細(xì)節(jié)被描述以提供對(duì)本發(fā)明的徹底理解。然而,在某些情況下,公知的或常規(guī)的細(xì)節(jié)不被描述是為了避免混淆本說明。在本發(fā)明中的一個(gè)實(shí)施例的參考可以是,但不一定是,參考相同的實(shí)施例,以及,這樣的引用指的是實(shí)施例中的至少一個(gè)。
[0040]在本說明書中參考文獻(xiàn)對(duì)“一個(gè)實(shí)施例”或“實(shí)施例”意味著特定的特征、結(jié)構(gòu)或連同實(shí)施例所描述的特性被包括在本發(fā)明的至少一個(gè)實(shí)施例中。在說明書中各個(gè)地方的“在一個(gè)實(shí)施例中”的短語(yǔ)的出現(xiàn)并不必要的都是指的同一實(shí)施例,也不是指單獨(dú)的或其他實(shí)施例的互相排斥的替代實(shí)施例。此外,各種特征被描述,其可通過一些實(shí)施例而不是其他實(shí)施例被展示。同樣,各種要求被描述,其可以是一些實(shí)施例而不是其他實(shí)施例的要求。
[0041]在本說明書中使用的術(shù)語(yǔ)通常具有本領(lǐng)域中、本
【發(fā)明內(nèi)容】
的范圍內(nèi)以及在每個(gè)術(shù)語(yǔ)使用的特定上下文之內(nèi)的普通含義。被用于描述本發(fā)明的某些術(shù)語(yǔ)將在下面或者在說明書的其它地方進(jìn)行討論,以為關(guān)于本發(fā)明描述的實(shí)踐者提供額外的指導(dǎo)。為方便起見,某些術(shù)語(yǔ)可能會(huì)被突出顯示,例如使用斜體和/或引號(hào)。突出顯示的使用不會(huì)對(duì)術(shù)語(yǔ)的范圍和含義造成影響,在同樣的情況下,術(shù)語(yǔ)的范圍和含義是一樣的,不論它是否被突出顯示。將理解的是,同樣的事物可以以一種以上的方式進(jìn)行表述。
[0042]因此,替代語(yǔ)言和同義詞可用于在此所討論的任何一個(gè)或多個(gè)的術(shù)語(yǔ),也不是被賦予術(shù)語(yǔ)是否被在此闡述或描述的任何特殊的意義。若干術(shù)語(yǔ)的同義詞被提供。一個(gè)或多個(gè)同義詞的列舉不排除使用其他的同義詞。包括任何在此討論的術(shù)語(yǔ)的例子的本說明書中的任何位置的例子的使用,僅是說明性的,而不是為了進(jìn)一步限制本發(fā)明的范圍和含義或任何示例性術(shù)語(yǔ)。同樣地,本發(fā)明并不限定于在本說明書中給出的各種實(shí)施例。
[0043]在不意圖以進(jìn)一步限制本發(fā)明的范圍,根據(jù)本發(fā)明的實(shí)施例的儀器、裝置、方法及其相關(guān)結(jié)果的例子被給定如下。應(yīng)注意的是,標(biāo)題或副標(biāo)題為了方便讀者可以被使用在實(shí)施例中,其絕不應(yīng)該限制本發(fā)明的范圍。除非另有定義,在此使用的所有技術(shù)和科學(xué)術(shù)語(yǔ)具有通常由本
【發(fā)明內(nèi)容】
所屬的領(lǐng)域的普通技術(shù)人員的通常理解的相同的含義。在沖突的情況下,以本文件(包括定義)為準(zhǔn)。
[0044]本發(fā)明公開的【具體實(shí)施方式】包括各種步驟,這些步驟將在下面描述。步驟可以通過硬件組件來執(zhí)行,或者可以被以機(jī)器可執(zhí)行指令體現(xiàn),其可被用來使以指令編程的通用或?qū)S锰幚砥鲌?zhí)行這些步驟??商鎿Q地,這些步驟可以由硬件,軟件和/或固件的組合來執(zhí)行。
[0045]本發(fā)明的【具體實(shí)施方式】可被提供為計(jì)算機(jī)程序產(chǎn)品,其可以包括其上存儲(chǔ)有指令的機(jī)器可讀介質(zhì),其可被用來對(duì)計(jì)算機(jī)(或其他電子設(shè)備)編程以執(zhí)行過程。該機(jī)器可讀介質(zhì)可以包括,但不限于,軟盤、光盤、光盤只讀存儲(chǔ)器(CD-ROM),和磁光盤、ROM、隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路(ASIC)、車輛身份模塊(VIMS)、磁卡或光卡、閃存、或其他類型的適合于存儲(chǔ)電子指令的介質(zhì)/機(jī)器可讀介質(zhì)。
[0046]此外,本發(fā)明的實(shí)施例也可以下載作為計(jì)算機(jī)程序產(chǎn)品使用的計(jì)算機(jī)程序產(chǎn)品或數(shù)據(jù),其中程序、數(shù)據(jù)和/或指令可以經(jīng)由體現(xiàn)在載波或其它傳播介質(zhì)中的數(shù)據(jù)信號(hào)通過通信鏈路(例如,調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)從遠(yuǎn)程計(jì)算機(jī)或移動(dòng)設(shè)備傳送到發(fā)出請(qǐng)求的計(jì)算機(jī)或移動(dòng)設(shè)備。在某些情況下,程序、數(shù)據(jù)或指令中的部分可通過外部網(wǎng)絡(luò),例如電話網(wǎng)絡(luò)(例如,公共交換電話網(wǎng)絡(luò)、蜂窩式網(wǎng)絡(luò)、W1-Fi和其它語(yǔ)音、數(shù)據(jù)和無(wú)線網(wǎng)絡(luò)),或互聯(lián)網(wǎng)被提供。該通信鏈路可以包括多個(gè)網(wǎng)絡(luò),甚至多個(gè)異構(gòu)網(wǎng)絡(luò),例如一個(gè)或多個(gè)邊界網(wǎng)絡(luò)、語(yǔ)音網(wǎng)絡(luò)、寬帶網(wǎng)絡(luò)、服務(wù)提供商網(wǎng)絡(luò)、互聯(lián)網(wǎng)服務(wù)提供商(ISP)網(wǎng)絡(luò),和/或公共交換電話網(wǎng)絡(luò)(PSTN)、多個(gè)網(wǎng)絡(luò)通過網(wǎng)關(guān)互連可操作地促進(jìn)網(wǎng)絡(luò)之間的通信連接。
[0047]術(shù)語(yǔ)
[0048]貫穿本申請(qǐng)使用的術(shù)語(yǔ)的簡(jiǎn)要定義被給定如下。
[0049]術(shù)語(yǔ)“連接”或“接合”和相關(guān)術(shù)語(yǔ)是在操作意義中使用,并且不限于直接連接或接合。
[0050]術(shù)語(yǔ)“實(shí)施例”、短語(yǔ)例如“在一些實(shí)施例中”、“在各實(shí)施例中”之類的,通常指的是特定的特征、結(jié)構(gòu)、方法或特性,之前或之后的術(shù)語(yǔ)或短語(yǔ)被包括在本發(fā)明的至少一個(gè)實(shí)施例中,并且可以被包括在本發(fā)明的一個(gè)以上的實(shí)施例中。此外,這樣的術(shù)語(yǔ)或短語(yǔ)不一定指相同的實(shí)施例。
[0051]如果說明書規(guī)定組件或特征“可以”,“能夠”,“可能”或“可能”被包括或有一個(gè)特點(diǎn),并特定的組件或特征并不需要被包含或具有的特點(diǎn)。
[0052]術(shù)語(yǔ)“模塊”是泛指軟件、硬件和/或固件(或其任何組合)。模塊通常是功能性組件,其可以使用指定輸入生成有用的數(shù)據(jù)或其他輸出。模塊可以是或可以不是獨(dú)立的。應(yīng)用程序(也稱為“application”)可以包括一個(gè)或多個(gè)模塊和/或模塊可以包括一個(gè)或多個(gè)應(yīng)用程序。
[0053]術(shù)語(yǔ)“應(yīng)答”包括完全和部分的應(yīng)答。
[0054]分布式數(shù)據(jù)庫(kù)環(huán)境示例
[0055]分布式數(shù)據(jù)庫(kù)環(huán)境100的例子,表示多個(gè)分布式數(shù)據(jù)庫(kù)站點(diǎn)和客戶端系統(tǒng),在其中本發(fā)明的各種特征也可以被使用,現(xiàn)在將參考圖1被描述。在這個(gè)例子中,分布式數(shù)據(jù)庫(kù)環(huán)境100包括多個(gè)節(jié)點(diǎn)10,多個(gè)客戶端系統(tǒng)25,以及網(wǎng)絡(luò)150。每個(gè)節(jié)點(diǎn)10可以位于不同的站點(diǎn)或地理位置。類似地,每個(gè)客戶端系統(tǒng)25可位于網(wǎng)絡(luò)150的連接的任何地方。
[0056]在本例中,節(jié)點(diǎn)10個(gè)設(shè)在與其他節(jié)點(diǎn)10經(jīng)由網(wǎng)絡(luò)150通信。節(jié)點(diǎn)10可以是集中式數(shù)據(jù)庫(kù)系統(tǒng),例如數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)集市,遠(yuǎn)程站點(diǎn),如臺(tái)式個(gè)人計(jì)算機(jī),便攜式計(jì)算機(jī)或其他移動(dòng)計(jì)算設(shè)備,或任何其它類型的數(shù)據(jù)處理器。如本例中所示,節(jié)點(diǎn)10包括與分布式數(shù)據(jù)庫(kù)20通信的數(shù)據(jù)庫(kù)管理系統(tǒng)18。數(shù)據(jù)庫(kù)管理系統(tǒng)18可以與數(shù)據(jù)庫(kù)20經(jīng)由任何通信裝置通信用于傳送數(shù)據(jù)和/或控制信息。雖然為了簡(jiǎn)單起見未被示出,數(shù)據(jù)庫(kù)管理系統(tǒng)18還可以包括分布式數(shù)據(jù)庫(kù)管理系統(tǒng)和局部數(shù)據(jù)庫(kù)管理系統(tǒng)。類似地,盡管未示出,數(shù)據(jù)庫(kù)20可包括分布式數(shù)據(jù)庫(kù)和局部數(shù)據(jù)庫(kù)。
[0057]在一些實(shí)施例中,一個(gè)或多個(gè)的分布式數(shù)據(jù)庫(kù)管理系統(tǒng)18可被指定主管理系統(tǒng)或主機(jī)服務(wù)器系統(tǒng)。主管理系統(tǒng)可能在某些情況下如本文中所公開的負(fù)責(zé)協(xié)調(diào)數(shù)據(jù)庫(kù)事務(wù)和/或數(shù)據(jù)庫(kù)事務(wù)序列,雖然替代配置是可能的。
[0058]網(wǎng)絡(luò)150,客戶端系統(tǒng)25和節(jié)點(diǎn)10通過該網(wǎng)絡(luò)150通信,可以是局域、城域網(wǎng)、廣域網(wǎng)、全球數(shù)據(jù)通信網(wǎng)絡(luò),如因特網(wǎng),私人“內(nèi)部網(wǎng)”或“外部網(wǎng)”的網(wǎng)絡(luò)或任何其他合適的數(shù)據(jù)通信介質(zhì)-包括其組合或變體。例如,Internet可以提供文件傳輸、遠(yuǎn)程登錄、電子郵件、新聞、RSS,以及通過任何已知的或合適的協(xié)議的服務(wù),例如,但并不限定于TCP/IP協(xié)議、開放系統(tǒng)互連(OSI)、FTP、UPnP、iSCS1、NSF、ISDN、PDH、RS-232、SDH、SONET,等等。
[0059]可替換地或附加地,網(wǎng)絡(luò)150可以是全部或部分地操作連結(jié)提供連接到客戶端系統(tǒng)25和節(jié)點(diǎn)10的不同的網(wǎng)絡(luò)的任何集合,并且可以表現(xiàn)為到所服務(wù)的系統(tǒng)和設(shè)備的一個(gè)或多個(gè)網(wǎng)絡(luò)。在一個(gè)實(shí)施例中,到客戶端系統(tǒng)25和來自客戶端系統(tǒng)25的通信可通過一個(gè)開放網(wǎng)絡(luò)(如因特網(wǎng))或?qū)S镁W(wǎng)絡(luò)(例如企業(yè)內(nèi)部網(wǎng)和/或外聯(lián)網(wǎng))來。在一個(gè)實(shí)施例中,通信可以通過安全通信協(xié)議(如安全套接字層(SSL)或傳輸層安全(TLS))來。
[0060]此外,通信可以經(jīng)由一個(gè)或多個(gè)無(wú)線網(wǎng)絡(luò)被,無(wú)線網(wǎng)絡(luò)例如,但是不限于,一個(gè)或多個(gè)的局域網(wǎng)(LAN)、無(wú)線局域網(wǎng)(wLAN)、個(gè)人區(qū)域網(wǎng)(PAN)、校園區(qū)域網(wǎng)(CAN)、城域網(wǎng)(MAN)、廣域網(wǎng)(WAN)、無(wú)線廣域網(wǎng)(wwAN)、全球移動(dòng)通信系統(tǒng)(GSM)、個(gè)人通信服務(wù)(PCS)、數(shù)字高級(jí)移動(dòng)電話服務(wù)(D-AMPS)、藍(lán)牙、無(wú)線網(wǎng)絡(luò)、固定無(wú)線數(shù)據(jù)、2G、2.5G、3G網(wǎng)絡(luò)、GSM演進(jìn)的增強(qiáng)型數(shù)據(jù)速率(EDGE)、通用分組無(wú)線服務(wù)(GPRS)、增強(qiáng)型GPRS、短信協(xié)議,如TCP/IP、短信、彩信、可擴(kuò)展通信與表示協(xié)議(XMPP)、實(shí)時(shí)消息協(xié)議(RTMP)、即時(shí)通信和表示協(xié)議(MPP)、即時(shí)消息、USSD, IRC或者任何其他無(wú)線數(shù)據(jù)網(wǎng)絡(luò)或通信協(xié)議。
[0061]客戶端系統(tǒng)(或客戶端)25經(jīng)由網(wǎng)絡(luò)150與一個(gè)或多個(gè)節(jié)點(diǎn)10通信??蛻舳讼到y(tǒng)25可以是任何系統(tǒng)和/或裝置,和/或能夠建立與另一個(gè)設(shè)備、服務(wù)器和/或其他系統(tǒng)的連接的裝置/系統(tǒng)的任何組合??蛻舳讼到y(tǒng)25通常包括顯示器或其他輸出功能,以呈現(xiàn)設(shè)備到用戶之間的數(shù)據(jù)交換。例如,客戶端系統(tǒng)25可以是,但不限于,服務(wù)器桌面、臺(tái)式計(jì)算機(jī)、計(jì)算機(jī)集群、移動(dòng)計(jì)算設(shè)備,例如筆記本、膝上型計(jì)算機(jī)、手持式計(jì)算機(jī)、移動(dòng)電話、智能電話、PDA、黑莓設(shè)備、Treo和/或iPhone等等。在一個(gè)實(shí)施例中,客戶端系統(tǒng)25被接合到網(wǎng)絡(luò)150。在一些實(shí)施例中,客戶端系統(tǒng)25可被直接連接到彼此或另一個(gè)節(jié)點(diǎn)10。
[0062]客戶端系統(tǒng)25包括查詢接口 22和一個(gè)或多個(gè)應(yīng)用程序26。應(yīng)用程序26可以在客戶端25上執(zhí)行,并可能包括用于調(diào)用查詢接口 22的功能,該查詢接口 22用于將數(shù)據(jù)庫(kù)查詢傳遞到數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行處理。應(yīng)用程序26可調(diào)用查詢接口 22用于從分布式數(shù)據(jù)庫(kù)20的數(shù)據(jù)庫(kù)表中讀出數(shù)據(jù)或?qū)?shù)據(jù)寫入到分布式數(shù)據(jù)庫(kù)20的數(shù)據(jù)庫(kù)表中。在一般情況下,應(yīng)用程序26和查詢接口 22可以是任何類型的可解釋或可執(zhí)行軟件代碼,例如內(nèi)核組件,應(yīng)用程序,腳本,鏈接庫(kù),或者具有方法的對(duì)象,包括其組合或變體。在一個(gè)示例中,應(yīng)用程序26包括一個(gè)多用戶交互游戲,但是,可以理解,其它的應(yīng)用程序也是可能的。
[0063]在一些實(shí)施例中,一個(gè)或多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)18通過異步地和同時(shí)地從各個(gè)層次觀點(diǎn)協(xié)調(diào)數(shù)據(jù)庫(kù)事務(wù)為每個(gè)客戶端系統(tǒng)25維護(hù)一個(gè)或多個(gè)事務(wù)序列。該事務(wù)序列可以包含一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)。在操作中,數(shù)據(jù)庫(kù)事務(wù)可以由客戶端系統(tǒng)25內(nèi)的應(yīng)用程序26產(chǎn)生并經(jīng)由由查詢接口 22產(chǎn)生的查詢被轉(zhuǎn)移到關(guān)聯(lián)的數(shù)據(jù)庫(kù)管理系統(tǒng)18。如在圖1的例子中所示,查詢被通過網(wǎng)絡(luò)150傳遞并在數(shù)據(jù)庫(kù)管理系統(tǒng)18中的一個(gè)被接收。
[0064]在一些實(shí)施例中,每個(gè)事務(wù)序列可能是一個(gè)連續(xù)的獨(dú)立的序列或線性時(shí)間模型,其從個(gè)人的觀點(diǎn)指示數(shù)據(jù)庫(kù)事務(wù)。個(gè)人的觀點(diǎn)可以是,例如,在客戶端上運(yùn)行的一個(gè)或多個(gè)應(yīng)用程序的觀點(diǎn)和/或客戶端系統(tǒng)或客戶端系統(tǒng)的操作者(例如,用戶或玩家)的觀點(diǎn)。
[0065]在一些實(shí)施例中,事務(wù)序列可以通過一個(gè)圖形,如因果圖或序列圖來表示。因果圖和序列圖包含有關(guān)當(dāng)前和歷史數(shù)據(jù)庫(kù)事務(wù)或操作,如從客戶端系統(tǒng)接收到數(shù)據(jù)庫(kù)查詢的信肩、O
[0066]在一些實(shí)施例中,數(shù)據(jù)庫(kù)管理系統(tǒng)18維護(hù)客戶端系統(tǒng)25的現(xiàn)關(guān)聯(lián)的事務(wù)序列以及異步地和同時(shí)地協(xié)調(diào)事務(wù)序列之內(nèi)的數(shù)據(jù)庫(kù)事務(wù),該事務(wù)序列具有在分布式數(shù)據(jù)庫(kù)系統(tǒng)中接收的其它事務(wù)序列中的其他相關(guān)數(shù)據(jù)庫(kù)事務(wù)。
[0067]在一些實(shí)施例中,每個(gè)數(shù)據(jù)庫(kù)事務(wù)用數(shù)據(jù)庫(kù)事務(wù)所依賴的一組假設(shè)操作。如在此所描述的,假設(shè)被斷言所控制,該斷言可以用來代替鎖以允許操作的交錯(cuò)并增加并行性。在一些實(shí)施例中,斷言使用各種機(jī)制執(zhí)行一致性,該機(jī)制例如,例如,多版本同時(shí)控制(MVCC)機(jī)制。如在此所述,同時(shí)控制機(jī)制促進(jìn)在斷言是真實(shí)的過去尋求時(shí)間的能力。這個(gè)過程在此稱為“時(shí)間旅行”,并且被參照?qǐng)D6進(jìn)行更詳細(xì)地討論。
[0068]在一些實(shí)施例中,數(shù)據(jù)庫(kù)20包括含有已提交數(shù)據(jù)庫(kù)事務(wù)的全局事務(wù)序列。在一些實(shí)施例中,全局事務(wù)序列跨越一些或全部的在分布式數(shù)據(jù)庫(kù)環(huán)境100中的數(shù)據(jù)庫(kù)20進(jìn)行復(fù)制。
[0069]圖2示出了根據(jù)一個(gè)實(shí)施例的在分布式數(shù)據(jù)庫(kù)環(huán)境200中的示例節(jié)點(diǎn)210的框圖。分布式數(shù)據(jù)庫(kù)環(huán)境200可以類似于圖1的分布式數(shù)據(jù)庫(kù)環(huán)境100,雖然替代配置是可能的。
[0070]在本例中,節(jié)點(diǎn)210包括與數(shù)據(jù)庫(kù)220-D和220-L (分布的和局部的,分別地)以及網(wǎng)絡(luò)250通信的數(shù)據(jù)庫(kù)管理系統(tǒng)218。網(wǎng)絡(luò)250可以是任何網(wǎng)絡(luò),如,例如,圖1的網(wǎng)絡(luò)150。節(jié)點(diǎn)210可以類似于圖1的節(jié)點(diǎn)10。1,雖然替代配置是可能的。在一些實(shí)施例中,雖然每個(gè)節(jié)點(diǎn)包括局部數(shù)據(jù)庫(kù)管理系統(tǒng)219-L,但只有一個(gè)主分布式數(shù)據(jù)庫(kù)系統(tǒng)219-D的存在。在這種情況下,分布式數(shù)據(jù)庫(kù)系統(tǒng)219-D控制整個(gè)數(shù)據(jù)庫(kù)的交互。
[0071]數(shù)據(jù)庫(kù)管理系統(tǒng)218還包括分布式數(shù)據(jù)庫(kù)管理系統(tǒng)219-D、局部數(shù)據(jù)庫(kù)管理系統(tǒng)
219-L、可選的應(yīng)用程序219-A。分布式數(shù)據(jù)庫(kù)管理系統(tǒng)219-D協(xié)調(diào)訪問在各個(gè)節(jié)點(diǎn)的數(shù)據(jù)。分布式數(shù)據(jù)庫(kù)管理系統(tǒng)219-D可以執(zhí)行一些或全部的后續(xù)功能:
[0072]1、跟蹤數(shù)據(jù)在分布式數(shù)據(jù)字典中的所在位置。這包括向開發(fā)者和用戶呈現(xiàn)邏輯數(shù)據(jù)庫(kù)和架構(gòu)。
[0073]2、確定從其檢索請(qǐng)求的數(shù)據(jù)的位置和在其進(jìn)行處理分布式查詢的每個(gè)部分而無(wú)需開發(fā)人員或用戶的任何特殊的操作的位置。
[0074]3、如果有必要,使用局部DBMS轉(zhuǎn)換在一個(gè)節(jié)點(diǎn)的請(qǐng)求到另一個(gè)合適的節(jié)點(diǎn)使用不同的DBMS和數(shù)據(jù)模型轉(zhuǎn)換到另一個(gè)節(jié)點(diǎn),并返回?cái)?shù)據(jù)到該節(jié)點(diǎn)所接受的格式中的請(qǐng)求節(jié)點(diǎn)。
[0075]4、提供數(shù)據(jù)管理功能,如安全性,同時(shí)性和死鎖控制,全局查詢優(yōu)化,以及自動(dòng)故障記錄和恢復(fù)。
[0076]5、提供貫穿整個(gè)遠(yuǎn)程站點(diǎn)的數(shù)據(jù)備份之間的一致性(例如,通過使用多相提交協(xié)議)。
[0077]6、呈現(xiàn)在物理上被分布的單個(gè)邏輯數(shù)據(jù)庫(kù)。數(shù)據(jù)的這一觀點(diǎn)的衍生物是全局主鍵控制,意味著關(guān)于同一業(yè)務(wù)對(duì)象的數(shù)據(jù)都與相同主鍵關(guān)聯(lián),而無(wú)論數(shù)據(jù)存儲(chǔ)在分布式數(shù)據(jù)庫(kù)的何處,以及不同對(duì)象被與不同的主鍵相關(guān)聯(lián)。
[0078]7、可擴(kuò)展性??蓴U(kuò)展性是增長(zhǎng)、減少規(guī)模,并根據(jù)企業(yè)變革的需要變得更加多樣化的能力。因此,分布式數(shù)據(jù)庫(kù)必須是動(dòng)態(tài)的,并能夠在合理范圍內(nèi)變化,而無(wú)需重新設(shè)計(jì)??蓴U(kuò)展性也意味著,有簡(jiǎn)便的方法添加新的站點(diǎn)(或訂購(gòu)),并進(jìn)行初始化(例如,使用復(fù)制的數(shù)據(jù))。
[0079]8、跨分布式數(shù)據(jù)庫(kù)的節(jié)點(diǎn)對(duì)數(shù)據(jù)和存儲(chǔ)程序進(jìn)行復(fù)制。分發(fā)存儲(chǔ)程序的需要被由同樣的原因激活以用于分發(fā)數(shù)據(jù)。
[0080]9、透明地使用剩余的計(jì)算能力以提高數(shù)據(jù)庫(kù)處理的性能。這意味著,例如,當(dāng)在不同的時(shí)間提交時(shí),同一個(gè)數(shù)據(jù)庫(kù)查詢可以在不同的地點(diǎn)并以不同的方式取決于在查詢提交時(shí)的跨分布式數(shù)據(jù)庫(kù)的特定負(fù)載進(jìn)行處理。
[0081]10、允許不同節(jié)點(diǎn)運(yùn)行不同的DBMS。中間件(見第9章)可由分布式DBMS進(jìn)行使用以及各局部DBMS掩蓋查詢語(yǔ)言的差別和局部數(shù)據(jù)的細(xì)微差別。
[0082]11、允許應(yīng)用程序代碼的不同版本位于分布式數(shù)據(jù)庫(kù)的不同節(jié)點(diǎn)上。在具有多個(gè)分布式服務(wù)器的大型組織中,每個(gè)服務(wù)器/節(jié)點(diǎn)運(yùn)行軟件的版本相同可能不太現(xiàn)實(shí)。
[0083]在一個(gè)實(shí)施例中,每個(gè)節(jié)點(diǎn)包括局部數(shù)據(jù)庫(kù)系統(tǒng)219-L和分布式數(shù)據(jù)庫(kù)管理系統(tǒng)219-D。在圖2的例子中,每個(gè)站點(diǎn)都有局部DBMS219-L和相關(guān)的分布式數(shù)據(jù)字典/目錄(DD/D),局部DBMS219-L管理存儲(chǔ)在站點(diǎn)處的局部數(shù)據(jù)庫(kù)220-L和分布式DBMS數(shù)據(jù)庫(kù)
220-D的副本。分布式DD/D包含在網(wǎng)絡(luò)中的所有數(shù)據(jù)的位置,以及數(shù)據(jù)定義。
[0084]由用戶或應(yīng)用程序請(qǐng)求的數(shù)據(jù)首先由分布式數(shù)據(jù)庫(kù)管理系統(tǒng)219-D進(jìn)行處理,其決定事務(wù)是局部的或全局的。局部事務(wù)是要求的數(shù)據(jù)被完全在局部站點(diǎn)存儲(chǔ)在其中的事務(wù)。全局事務(wù)要求參考在一個(gè)或多個(gè)非局部站點(diǎn)的數(shù)據(jù)以滿足請(qǐng)求。對(duì)于局部事務(wù),分布式數(shù)據(jù)庫(kù)管理系統(tǒng)219-D將請(qǐng)求傳遞給局部DBMS219-L。對(duì)于全局事務(wù),分布式數(shù)據(jù)庫(kù)管理系統(tǒng)219-D必要時(shí)將請(qǐng)求路由到其他站點(diǎn)。分布式數(shù)據(jù)庫(kù)管理系統(tǒng)在參與站點(diǎn)根據(jù)需要交換消息以協(xié)調(diào)事務(wù)的處理直到它被完成(或中止,如果需要的話)。
[0085]圖3根據(jù)一個(gè)實(shí)施例示出了異步分布式數(shù)據(jù)庫(kù)管理的數(shù)據(jù)庫(kù)管理系統(tǒng)350的部件的框圖。數(shù)據(jù)庫(kù)管理系統(tǒng)350可以是圖1的數(shù)據(jù)庫(kù)管理系統(tǒng)18,雖然替代配置是可能的。
[0086]數(shù)據(jù)庫(kù)管理系統(tǒng)350包括網(wǎng)絡(luò)接口 302、通信模塊305、數(shù)據(jù)庫(kù)事務(wù)接收模塊310、數(shù)據(jù)庫(kù)事務(wù)歷史模塊315、因果圖生成模塊320、斷言識(shí)別/提取模塊325,以及全局事務(wù)序列模塊330。在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)管理系統(tǒng)350也被接合到數(shù)據(jù)庫(kù)345。數(shù)據(jù)庫(kù)345可以是圖1的數(shù)據(jù)庫(kù)20,雖然替代配置是可能的。在部偏離本公開的新穎領(lǐng)域的更多或更少的模塊可以被包括。此外,圖3的示例中的每個(gè)模塊可以包括用硬件和/或軟件的任何組合來的任何數(shù)量的子模塊和/或系統(tǒng)和/或子模塊和/或系統(tǒng)的組合。
[0087]數(shù)據(jù)庫(kù)管理系統(tǒng)350,雖然示出為由分布式組件(物理分布和/或功能上分布)組成,可以被為集體元件。在一些實(shí)施例中,一些或所有的模塊,和/或由每個(gè)模塊所代表的功能可以以任何方便的或已知的方式進(jìn)行組合。此外,由模塊所代表的功能可以部分地或全部地在硬件,軟件或硬件和軟件的組合中被單獨(dú)或以任何組合來實(shí)施。
[0088]在圖3的例子中,網(wǎng)絡(luò)接口 302可以是網(wǎng)絡(luò)設(shè)備,其使數(shù)據(jù)庫(kù)管理系統(tǒng)350用實(shí)體介導(dǎo)在網(wǎng)絡(luò)中數(shù)據(jù),該實(shí)體在數(shù)據(jù)庫(kù)管理系統(tǒng)350的外部,通過任何已知的和/或合適的由主機(jī)和外部實(shí)體支持的通信協(xié)議。數(shù)據(jù)庫(kù)管理系統(tǒng)350可以包括一個(gè)或多個(gè)網(wǎng)絡(luò)適配器卡、無(wú)線網(wǎng)絡(luò)接口卡、路由器、接入點(diǎn)、無(wú)線路由器、交換機(jī)、多層交換機(jī)、協(xié)議轉(zhuǎn)換器、網(wǎng)關(guān)、網(wǎng)橋、網(wǎng)橋路由器、集線器、數(shù)字媒體接收器和/或中繼器。
[0089]在數(shù)據(jù)庫(kù)管理系統(tǒng)350的一個(gè)實(shí)施例包括通信模塊305。通信模塊305可以是能夠識(shí)別、檢測(cè)、跟蹤、管理、接收、記錄和/或處理數(shù)據(jù)訪問請(qǐng)求的軟件代理和/或硬件模塊的任意組合。通信模塊305,在操作的時(shí)候,能夠與網(wǎng)絡(luò)接口 302進(jìn)行通信以識(shí)別、檢測(cè)、跟蹤、管理、接收、記錄和/或處理數(shù)據(jù)訪問請(qǐng)求,該數(shù)據(jù)訪問請(qǐng)求包括但不限于來自分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端系統(tǒng)和/或其他節(jié)點(diǎn)的數(shù)據(jù)庫(kù)查詢和/或數(shù)據(jù)庫(kù)事務(wù)從。
[0090]數(shù)據(jù)庫(kù)管理系統(tǒng)350的一個(gè)實(shí)施例包括數(shù)據(jù)庫(kù)事務(wù)接收模塊310。數(shù)據(jù)庫(kù)事務(wù)接收模塊310可以是能夠從客戶端設(shè)備和其它節(jié)點(diǎn)接收和處理數(shù)據(jù)請(qǐng)求的軟件代理和/或硬件組件的任何組合。例如,數(shù)據(jù)庫(kù)事務(wù)接收模塊310被配置為接收和處理來自客戶端設(shè)備數(shù)據(jù)庫(kù)查詢和來自系統(tǒng)中的其他節(jié)點(diǎn)的其他數(shù)據(jù)請(qǐng)求。數(shù)據(jù)庫(kù)事務(wù)接收模塊310可接著分害I]、路由,和/或以其它方式處理該請(qǐng)求和/或標(biāo)識(shí)具有數(shù)據(jù)請(qǐng)求或查詢的數(shù)據(jù)庫(kù)事務(wù)。
[0091]數(shù)據(jù)庫(kù)管理系統(tǒng)350的一個(gè)實(shí)施例包括數(shù)據(jù)庫(kù)事務(wù)歷史模塊315。數(shù)據(jù)庫(kù)事務(wù)歷史模塊315可以是能夠跟蹤和存儲(chǔ)歷史事務(wù)的軟件代理和/或硬件組件的任何組合。例如,歷史可能包括事務(wù)順序、依賴的假設(shè)/斷言等。有利的是,架構(gòu)并不需要包括歷史,因?yàn)閿?shù)據(jù)庫(kù)跟蹤該信息。
[0092]數(shù)據(jù)庫(kù)管理系統(tǒng)350的一個(gè)實(shí)施例包括因果關(guān)系圖形生成模塊320。因果關(guān)系圖形生成模塊320可以是能夠與事務(wù)歷史模塊315交互以為事務(wù)序列中的或由事務(wù)序列指示的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)生成因果關(guān)系圖的軟件代理和/或硬件組件的任意組合。例如,因果圖生成模塊320可以基于接收到的數(shù)據(jù)庫(kù)查詢識(shí)別事務(wù)序列。如所討論的,數(shù)據(jù)庫(kù)查詢指示一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)。因果圖生成模塊320可以使用數(shù)據(jù)庫(kù)事務(wù)信息與數(shù)據(jù)庫(kù)事務(wù)歷史模塊315進(jìn)行交互,以為了識(shí)別當(dāng)前數(shù)據(jù)庫(kù)事務(wù)所依賴的歷史事務(wù)以及基于歷史信息建立因果關(guān)系圖。
[0093]在一個(gè)實(shí)施例中,因果關(guān)系圖形生成模塊320生成用于指示每個(gè)數(shù)據(jù)庫(kù)事務(wù)所依賴的一個(gè)或多個(gè)斷言的因果關(guān)系圖。例如,在一些實(shí)施例中,同時(shí)控制機(jī)制通過在事實(shí)之后檢測(cè)無(wú)效使用來控制同時(shí)性。這些同時(shí)控制可分割事務(wù)的存在為讀取、驗(yàn)證和發(fā)布階段。在讀取階段,該機(jī)制從一個(gè)或多個(gè)關(guān)于事務(wù)所依賴的假設(shè)的潛在價(jià)值的分布式數(shù)據(jù)庫(kù)資源獲取假設(shè),而不考慮那些假設(shè)的沖突或有效性。該事務(wù)序列本身和/或數(shù)據(jù)庫(kù)事務(wù)歷史模塊可能表明一組資源和/或依賴于事務(wù)序列中的每個(gè)數(shù)據(jù)庫(kù)事務(wù)的假設(shè)。在一些實(shí)施例中,斷言可以是,例如,數(shù)據(jù)庫(kù)鍵值;雖然替代配置是可能的。
[0094]數(shù)據(jù)庫(kù)管理系統(tǒng)350的一個(gè)實(shí)施例包括斷言識(shí)別/提取模塊325。斷言識(shí)別/提取模塊325可以是能夠識(shí)別和/或提取與一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)相關(guān)聯(lián)的斷言的軟件代理和/或硬件組件的任何組合。例如,斷言識(shí)別/提取模塊325可以處理數(shù)據(jù)庫(kù)事務(wù)、事務(wù)序列,和/或數(shù)據(jù)庫(kù)查詢以識(shí)別和/或提取數(shù)據(jù)庫(kù)事務(wù)所依賴的潛在斷言。
[0095]在一個(gè)實(shí)施例中,每個(gè)數(shù)據(jù)庫(kù)事務(wù)用一組數(shù)據(jù)庫(kù)事務(wù)所依賴的假設(shè)進(jìn)行操作。如本文中所述,假設(shè)被用斷言進(jìn)行控制,斷言可以用來代替鎖,以允許操作的交錯(cuò)和增加并行性。斷言可以使用各種機(jī)制,例如,如本文中所描述的多版本同時(shí)控制(MVCC)機(jī)制執(zhí)行一致性。
[0096]數(shù)據(jù)庫(kù)管理系統(tǒng)350的一個(gè)實(shí)施例包括全局事務(wù)序列模塊330。全局事務(wù)序列模塊330可以是能夠維護(hù)、協(xié)調(diào)和提交至全局事務(wù)序列的的軟件代理和/或硬件組件的任意組合。全局事務(wù)序列模塊330可以維護(hù)、協(xié)調(diào)、以及提價(jià)來自個(gè)別的數(shù)據(jù)庫(kù)序列(例如,來自私人序列)的數(shù)據(jù)庫(kù)事務(wù)。在該示例中,共享事務(wù)序列模塊330包括共識(shí)引擎332、輪詢引擎333、協(xié)調(diào)引擎334、通知引擎335和更新/提交引擎336。
[0097]在一個(gè)實(shí)施例中,共識(shí)引擎332被配置為獲得關(guān)于每個(gè)斷言的有效性的分布式數(shù)據(jù)庫(kù)系統(tǒng)的多個(gè)數(shù)據(jù)庫(kù)資源之間的共識(shí)。多個(gè)資源或系統(tǒng)可以包括,例如,在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的節(jié)點(diǎn)或數(shù)據(jù)庫(kù)管理系統(tǒng)。在一個(gè)實(shí)施例中,本文描述的系統(tǒng)和方法可以根據(jù)該CAP定理,也被稱為布魯爾定理進(jìn)行操作。CAP理論指出,分布式計(jì)算機(jī)系統(tǒng)同時(shí)保證一致性、可用性和分區(qū)容忍性是不可能的。
[0098]一致性保證了分布式數(shù)據(jù)庫(kù)的所有節(jié)點(diǎn)在同一時(shí)間看到同一數(shù)據(jù)??捎眯员WC每個(gè)請(qǐng)求收到有關(guān)請(qǐng)求是否成功或失敗的響應(yīng)。分區(qū)容忍性保證系統(tǒng)繼續(xù)操作,盡管任意消息丟失。根據(jù)CAP定理,分布式系統(tǒng)可以同時(shí)滿足以上保證的任意兩個(gè),但不是所有的三個(gè)保證。
[0099]數(shù)據(jù)庫(kù)系統(tǒng)上的某些限制維護(hù)分布式可擴(kuò)展的狀態(tài),由于,至少部分的,不可靠的處理器。一個(gè)解決方案是允許共識(shí)。共識(shí)是商定一組參與者(或資源)之間的單個(gè)結(jié)果的過程。共識(shí)協(xié)議是分布式計(jì)算的狀態(tài)機(jī)方法的基礎(chǔ)。狀態(tài)機(jī)方法是用于轉(zhuǎn)換算法為容錯(cuò)的,分布式實(shí)施的技術(shù)。每一個(gè)潛在的故障必須有一種方法來處理,以及特設(shè)技術(shù)常常會(huì)留下未解決故障的重大情況。
[0100]在一些實(shí)施例中,在此描述的系統(tǒng)和方法使用共識(shí)協(xié)議,如,例如,Paxos算法。Paxos算法描述了用于解決不可靠處理器的網(wǎng)絡(luò)中的共識(shí)的協(xié)議。當(dāng)參加者或他們的通信媒介體驗(yàn)故障時(shí),這個(gè)問題變得困難。Paxos方法提供了一種技術(shù)以確保所有的情況下被安全地處理。然而,這些情況可能仍然需要被單獨(dú)編碼。
[0101]Paxos協(xié)議定義了許多角色,并通過他們?cè)趨f(xié)議中的角色(客戶端、接受者、申請(qǐng)者、學(xué)習(xí)者、和領(lǐng)導(dǎo)者)描述了過程的動(dòng)作。在典型的實(shí)施例中,單個(gè)處理器可以同時(shí)扮演一個(gè)或多個(gè)角色。這并不影響協(xié)議的正確性,它通常聯(lián)合角色以改善在協(xié)議中的消息的延時(shí)和/或數(shù)量。
[0102]Paxos協(xié)議包括處理器數(shù)量之間的權(quán)衡的頻譜,在學(xué)習(xí)約定價(jià)值之前消息延遲的數(shù)量,個(gè)體參與者的活動(dòng)水平,發(fā)送的消息的數(shù)量和故障的類型。然而,沒有容錯(cuò)共識(shí)協(xié)議可以保證進(jìn)展。[0103]客戶端:客戶端發(fā)出請(qǐng)求至分布式系統(tǒng),并等待響應(yīng)。例如,在分布式文件服務(wù)器中的文件上的寫入請(qǐng)求。接受者:接受者充當(dāng)協(xié)議的容錯(cuò)“記憶”的角色。接受者被集合到稱為Quorums的組。發(fā)送到接受者的任何消息必須被發(fā)送到接受者的Quorums,并且從接受者接收到的任何消息被忽略,除非副本是從Quorums中的每個(gè)接受者收到的。申請(qǐng)者:申請(qǐng)者倡導(dǎo)客戶端請(qǐng)求,試圖說服接受者同意,并充當(dāng)調(diào)節(jié)器的角色以當(dāng)發(fā)生沖突時(shí)向前推進(jìn)協(xié)議。學(xué)習(xí)者:學(xué)習(xí)者充當(dāng)協(xié)議的復(fù)制因子的角色。一旦客戶端請(qǐng)求已由接受者同意,學(xué)習(xí)者可采取行動(dòng)(即,執(zhí)行請(qǐng)求同時(shí)送響應(yīng)至客戶端)。為了提高處理的可用性,額外的學(xué)習(xí)者可以被加入。領(lǐng)導(dǎo)者:領(lǐng)導(dǎo)者是被要求取得進(jìn)步的杰出的申請(qǐng)者。許多過程可能會(huì)認(rèn)為他們是領(lǐng)導(dǎo)者,但協(xié)議只保證進(jìn)度,如果他們中的一個(gè)被最終選擇。如果兩個(gè)過程相信他們是領(lǐng)導(dǎo)者,可能通過不斷提出沖突更新來搪塞協(xié)議。無(wú)論如何安全性能被保存。
[0104]在一個(gè)實(shí)施例中,輪詢引擎333被配置為輪詢或以其它方式連續(xù)地反復(fù)(例如,多于一次),和/或周期性地生成被發(fā)送到共識(shí)引擎332的觸發(fā)以輪詢有關(guān)被包括在數(shù)據(jù)庫(kù)事務(wù)內(nèi)的一個(gè)或多個(gè)斷言的有效性的數(shù)據(jù)庫(kù)資源。
[0105]在一個(gè)實(shí)施例中,協(xié)調(diào)引擎334被配置為通過連續(xù)和異步地協(xié)調(diào)多個(gè)事務(wù)序列來維護(hù)全局事務(wù)序列。例如,協(xié)調(diào)引擎334可以根據(jù)潛在的斷言協(xié)調(diào)數(shù)據(jù)庫(kù)序列。S卩,斷言可以用來代替鎖,以允許數(shù)據(jù)庫(kù)事務(wù)的交錯(cuò)和增加同時(shí)性。
[0106]在一個(gè)實(shí)施例中,通知引擎335被配置為當(dāng)數(shù)據(jù)庫(kù)事務(wù)已中止(失敗)或者當(dāng)數(shù)據(jù)庫(kù)事務(wù)已經(jīng)成功完成時(shí)通知客戶端。例如,如果共識(shí)未在超時(shí)時(shí)間間隔或超時(shí)周期內(nèi)被達(dá)成,則當(dāng)數(shù)據(jù)庫(kù)事務(wù)已被中止時(shí),通知引擎335通知在分布式數(shù)據(jù)庫(kù)中的客戶端。相似地,通知引擎335可以提供關(guān)于數(shù)據(jù)庫(kù)事務(wù)已經(jīng)被成功完成的的及早指示給客戶端系統(tǒng)或在客戶端系統(tǒng)上的應(yīng)用程序(例如,在使用數(shù)據(jù)庫(kù)事務(wù)更新分布式數(shù)據(jù)庫(kù)系統(tǒng)之前)。有利的是,當(dāng)實(shí)際上事務(wù)是不完整的時(shí)候,通過引導(dǎo)客戶端系統(tǒng)相信事務(wù)被完成,提供及早通知將讀取時(shí)間從在表達(dá)式的賦值或數(shù)據(jù)庫(kù)事務(wù)中的更新時(shí)間分離。
[0107]在一個(gè)實(shí)施例中,更新/提交引擎336被配置為提交數(shù)據(jù)庫(kù)事務(wù)至全局事務(wù)序列。為確保實(shí)時(shí)、分布式更新操作的數(shù)據(jù)完整性,合作事務(wù)管理器可以執(zhí)行提交協(xié)議。提交協(xié)議是一個(gè)良好定義的過程(包括信息的交換),以確保全局事務(wù)要么是在每個(gè)站點(diǎn)被成功完成,要么被中止。
[0108]最廣泛使用的協(xié)議被稱為兩階段提交。兩階段提交協(xié)議保證了在多個(gè)站點(diǎn)同時(shí)事務(wù)就好像他們?cè)谒芯W(wǎng)站使用同一串行順序被執(zhí)行一樣的被處理。兩階段提交分兩期進(jìn)行。首先,發(fā)起全局事務(wù)的站點(diǎn)或整體協(xié)調(diào)站點(diǎn)發(fā)送請(qǐng)求到每一個(gè)將處理事務(wù)的某一部分的站點(diǎn)。每個(gè)站點(diǎn)處理該子事務(wù)(如果可能的話),但不會(huì)立即提交(或存儲(chǔ))結(jié)果到局部數(shù)據(jù)庫(kù)。相反,結(jié)果被存儲(chǔ)在臨時(shí)文件中。此外,每個(gè)站點(diǎn)鎖定(或禁止他人更新)其正在被更新數(shù)據(jù)庫(kù)的部分,當(dāng)它已經(jīng)完成了它的子事務(wù)時(shí),并通知始發(fā)站點(diǎn)。當(dāng)所有的站點(diǎn)都回應(yīng)時(shí),始發(fā)站點(diǎn)現(xiàn)在啟動(dòng)兩階段提交協(xié)議。
[0109]在準(zhǔn)備階段,消息被廣播到每個(gè)參與站點(diǎn)(或節(jié)點(diǎn)),詢問站點(diǎn)是否愿意在該站點(diǎn)上提交其部分的事務(wù)。每個(gè)站點(diǎn)都將返回“0K”或“不0K”的消息。“0K”表示遠(yuǎn)程站點(diǎn)承諾允許發(fā)起請(qǐng)求以在遠(yuǎn)程數(shù)據(jù)庫(kù)管理事務(wù)。接下來,在提交階段,始發(fā)站點(diǎn)收集來自所有字典的消息。如果一切都是“0K”,它會(huì)廣播一個(gè)消息給所有的站點(diǎn)以提交在每個(gè)站點(diǎn)處理的事務(wù)的一部分。但是,如果一個(gè)或多個(gè)響應(yīng)是“不0K”,它會(huì)廣播一個(gè)消息給所有站點(diǎn)以中止事務(wù)。
[0110]無(wú)人過問的事務(wù)可以通過超時(shí)或輪詢來識(shí)別。以超時(shí)(指定的時(shí)間段沒有提交確認(rèn)),忙碌的或故障的站點(diǎn)之間的區(qū)分是不可能的。以網(wǎng)絡(luò)負(fù)載和處理時(shí)間而言輪詢是昂貴的。用同步分布式數(shù)據(jù)的兩階段提交策略,提交事務(wù)比如果始發(fā)站點(diǎn)能夠單獨(dú)工作的速度慢。
[0111]數(shù)據(jù)庫(kù)管理系統(tǒng)350的實(shí)施例包括數(shù)據(jù)庫(kù)345。數(shù)據(jù)庫(kù)345可以存儲(chǔ)任何數(shù)據(jù)項(xiàng)目/條目,該數(shù)據(jù)項(xiàng)目/條目包括,但不限于,軟件,描述性數(shù)據(jù),圖像,系統(tǒng)信息,驅(qū)動(dòng)程序,和/或由數(shù)據(jù)庫(kù)管理系統(tǒng)和/或任何其它操作系統(tǒng)中使用的任何其他數(shù)據(jù)項(xiàng)。數(shù)據(jù)庫(kù)345可以被接合到數(shù)據(jù)庫(kù)管理系統(tǒng)350。數(shù)據(jù)庫(kù)345可以由數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)進(jìn)行管理,DBMS包括但不限于,Oracle、DB2、Microsoft Access、Microsoft SQL Server 和 PostgreSQL、MySQL和FileMaker,等等。用戶數(shù)據(jù)儲(chǔ)存庫(kù)128可以通過面向?qū)ο蠹夹g(shù)和/或通過文本文件來,并且可以通過分布式數(shù)據(jù)庫(kù)管理系統(tǒng)、面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)(OODBMS)(例如,概念庫(kù)、快速數(shù)據(jù)庫(kù)主內(nèi)存數(shù)據(jù)庫(kù)管理系統(tǒng)、JDO儀器、對(duì)象數(shù)據(jù)庫(kù)等)、對(duì)象關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS)(例如,Informix,OpenLink大師、VMDS等)、文件系統(tǒng),和/或任何其它方便的或已知的數(shù)據(jù)庫(kù)管理程序包進(jìn)行管理。
[0112]圖4根據(jù)一個(gè)實(shí)施例描繪了說明異步分布式數(shù)據(jù)庫(kù)管理的示例過程400的流程圖。一個(gè)或多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng),諸如,圖1的數(shù)據(jù)庫(kù)管理系統(tǒng)18,除其他功能之外,控制事務(wù)一致性包括維護(hù)和/或協(xié)調(diào)在本文所述的分布式數(shù)據(jù)庫(kù)系統(tǒng)和異步分布式數(shù)據(jù)庫(kù)管理特征中的數(shù)據(jù)庫(kù)事務(wù)。在一個(gè)實(shí)施例中,每一個(gè)事務(wù)序列指示一個(gè)或多個(gè)未提交的數(shù)據(jù)庫(kù)事務(wù)以及每個(gè)未提交的數(shù)據(jù)庫(kù)事務(wù)包括要求在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的多個(gè)資源之間達(dá)成共識(shí)以用于協(xié)調(diào)的一個(gè)或多個(gè)斷言。
[0113]在操作410,數(shù)據(jù)庫(kù)管理系統(tǒng)從分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端系統(tǒng)接收與事務(wù)序列相關(guān)的數(shù)據(jù)庫(kù)事務(wù)。如上所述,數(shù)據(jù)庫(kù)事務(wù)包括要求在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的多個(gè)資源之間達(dá)成共識(shí)以用于協(xié)調(diào)的一個(gè)或多個(gè)斷言
[0114]在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)事務(wù)可以被接收作為包括一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)的一個(gè)或多個(gè)客戶端查詢的結(jié)果。在一些實(shí)施例中,數(shù)據(jù)庫(kù)查詢可以指示由在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用程序啟動(dòng)的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)。數(shù)據(jù)庫(kù)查詢可以由在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的任意數(shù)量的數(shù)據(jù)庫(kù)管理系統(tǒng)接收,然而,圖4的例子被參考單個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行討論。
[0115]在一些實(shí)施例中,每個(gè)事務(wù)序列可能是一個(gè)連續(xù)的獨(dú)立序列或線性時(shí)間模型,其從個(gè)人的觀點(diǎn)或客戶端上運(yùn)行的一個(gè)或多個(gè)應(yīng)用程序的觀點(diǎn)指示數(shù)據(jù)庫(kù)事務(wù)。個(gè)人的觀點(diǎn)可能是,例如,客戶端系統(tǒng)或客戶端系統(tǒng)的操作者的觀點(diǎn)。
[0116]在一些實(shí)施例中,事務(wù)序列可以通過一個(gè)圖形,如因果圖或序列圖來表示。因果圖和序列圖包含有關(guān)當(dāng)前和歷史數(shù)據(jù)庫(kù)事務(wù)或操作,如從客戶端系統(tǒng)接收到數(shù)據(jù)庫(kù)查詢的信
肩、O
[0117]在一些實(shí)施方案中,序列圖算法(SGAs)通過計(jì)算等效串行順序來控制暫時(shí)重疊事務(wù)的同時(shí)操作。SGAs視圖“排解”由多個(gè)事務(wù)的操作的令人費(fèi)解的序列為單一的內(nèi)聚的執(zhí)行線程。SGAs通過創(chuàng)建序列圖運(yùn)行。圖中的節(jié)點(diǎn)對(duì)應(yīng)于系統(tǒng)中的事務(wù)。圖的弧對(duì)應(yīng)等效串行順序。由于弧被添加到圖形,算法尋找周期。如果沒有周期,則事務(wù)具有一個(gè)等效串行順序以及一致性得到保證。但是,如果發(fā)現(xiàn)一個(gè)序列周期,則一致性將被放棄,如果在周期中的所有事務(wù)被允許提交。在這種情況下,SGA將通過中止形成周期的一個(gè)或多個(gè)事務(wù)來
恢復(fù)一致性。
[0118]在一些實(shí)施例中,每個(gè)因果圖表示客戶端系統(tǒng)的觀點(diǎn),因此,事務(wù)序列指示從客戶端發(fā)起的所有事務(wù)。在其它實(shí)施例中,每個(gè)客戶端系統(tǒng)可以具有任意數(shù)目的相關(guān)聯(lián)的事務(wù)序列。例如,因果圖可以表示為從在線交互動(dòng)游戲的單個(gè)玩家感知到的數(shù)據(jù)庫(kù)事務(wù)。因此,個(gè)別事務(wù)順序通過臨時(shí)(在讀取階段)考慮到僅僅那些有關(guān)個(gè)別事務(wù)序列的數(shù)據(jù)庫(kù)事務(wù)來提供最終重疊數(shù)據(jù)庫(kù)事務(wù)的能力。
[0119]在識(shí)別操作420中,數(shù)據(jù)庫(kù)管理系統(tǒng)處理數(shù)據(jù)庫(kù)事務(wù)以識(shí)別斷言,該斷言要求在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的多個(gè)資源之間達(dá)成共識(shí)以用于協(xié)調(diào)。如上所討論的,數(shù)據(jù)庫(kù)事務(wù)可以包括事務(wù)所依賴于的一個(gè)或多個(gè)斷言。
[0120]在輪詢操作430中,數(shù)據(jù)庫(kù)管理系統(tǒng)輪詢有關(guān)的一個(gè)或多個(gè)斷言的有效性的數(shù)據(jù)庫(kù)資源。例如,數(shù)據(jù)庫(kù)管理系統(tǒng)可以輪詢關(guān)于被包括在數(shù)據(jù)庫(kù)事務(wù)中的一個(gè)或多個(gè)斷言的有效性的多個(gè)數(shù)據(jù)庫(kù)資源以達(dá)成共識(shí)。
[0121]在更新操作440中,如果共識(shí)是在指定的時(shí)間內(nèi)達(dá)成,數(shù)據(jù)庫(kù)管理系統(tǒng)基于達(dá)成共識(shí)更新數(shù)據(jù)庫(kù)事務(wù)。例如,如果共識(shí)是在超時(shí)時(shí)間間隔內(nèi)達(dá)成,數(shù)據(jù)庫(kù)管理系統(tǒng)可以基于達(dá)成共識(shí)更新在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)庫(kù)事務(wù)。在這個(gè)例子中,共識(shí)最初并未在多個(gè)數(shù)據(jù)庫(kù)資源之間被達(dá)成,因此,數(shù)據(jù)庫(kù)管理系統(tǒng)必須在未能達(dá)成共識(shí)以后達(dá)成共識(shí)。未能達(dá)成共識(shí),從而避免了因多個(gè)資源不同意作為一個(gè)或多個(gè)斷言的有效性的結(jié)果。同樣,未能達(dá)成共識(shí)可能發(fā)生針對(duì)由多個(gè)資源達(dá)成的共識(shí)的斷言并非有效的結(jié)果。例如,如果斷言認(rèn)為“X=l”且多個(gè)資源認(rèn)為“X=3”,則針對(duì)于由多個(gè)資源達(dá)成的共識(shí)的斷言是無(wú)效的。
[0122]最后,在通知操作450中,在更新操作440之前,數(shù)據(jù)庫(kù)管理系統(tǒng)通知客戶端系統(tǒng)數(shù)據(jù)庫(kù)事務(wù)已被成功完成。例如,如果共識(shí)未在超時(shí)時(shí)間間隔內(nèi)被達(dá)成,則數(shù)據(jù)庫(kù)管理系統(tǒng)可以通知在分布式數(shù)據(jù)庫(kù)中的客戶端數(shù)據(jù)庫(kù)事務(wù)被中止。有利的是,當(dāng)實(shí)際上事務(wù)并未在分布式數(shù)據(jù)庫(kù)系統(tǒng)中被更新的時(shí)候,通過引導(dǎo)客戶端系統(tǒng)相信事務(wù)已被完成,提供及早通知將讀取時(shí)間從在表達(dá)式的賦值或數(shù)據(jù)庫(kù)事務(wù)中的更新時(shí)間分離。
[0123]圖5根據(jù)一個(gè)實(shí)施例示出了一流程圖,其說明了用于控制在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的事務(wù)一致性的示例性過程500。更具體地,過程500說明了異步分布式數(shù)據(jù)庫(kù)觀看的示例。一個(gè)或多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)中,諸如,例如,圖1的數(shù)據(jù)庫(kù)管理系統(tǒng)18,在其他功能之間,控制在此所述的分布式數(shù)據(jù)庫(kù)系統(tǒng)和異步分布式數(shù)據(jù)庫(kù)管理特征中的包括維護(hù)和/或協(xié)調(diào)數(shù)據(jù)庫(kù)事務(wù)的事務(wù)一致性。
[0124]在操作502中,數(shù)據(jù)庫(kù)管理系統(tǒng)從客戶端系統(tǒng)接收查詢。查詢可以指示由客戶端系統(tǒng)上運(yùn)行的應(yīng)用程序啟動(dòng)的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)。分布式數(shù)據(jù)庫(kù)系統(tǒng)可以分布式數(shù)據(jù)庫(kù)系統(tǒng)中的任意數(shù)量的客戶端系統(tǒng)上運(yùn)行的任意數(shù)量的應(yīng)用程序接收任意數(shù)量的查詢,但是,在單個(gè)查詢的操作和處理被在圖5的示例性過程500進(jìn)行了討論。
[0125]在操作504中,數(shù)據(jù)庫(kù)管理系統(tǒng)處理查詢以識(shí)別一個(gè)或多個(gè)斷言,斷言要求在分布式數(shù)據(jù)庫(kù)內(nèi)的多個(gè)機(jī)器(即數(shù)據(jù)庫(kù)資源或數(shù)據(jù)庫(kù)管理系統(tǒng))之間共識(shí),以為了協(xié)調(diào)。
[0126]在操作506中,數(shù)據(jù)庫(kù)管理系統(tǒng)可選地設(shè)置超時(shí)間隔。超時(shí)時(shí)間間隔通常表示共識(shí)必須被達(dá)成以提交、更新或以其他方式完成數(shù)據(jù)庫(kù)事務(wù)的時(shí)間間隔。如果超時(shí)間隔過期,數(shù)據(jù)庫(kù)事務(wù)將時(shí)間無(wú)法完成(即,數(shù)據(jù)庫(kù)事務(wù)將失敗)。在某些情況下,數(shù)據(jù)庫(kù)管理系統(tǒng)將不得不采取一定的措施,撤消依賴于未完成數(shù)據(jù)庫(kù)事務(wù)的其他數(shù)據(jù)庫(kù)事務(wù),并指示該數(shù)據(jù)庫(kù)事務(wù)(其可能被指示客戶端系統(tǒng)正常完成)沒有正常完成。
[0127]在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)管理系統(tǒng)確定共識(shí)能夠達(dá)成的可能性。這個(gè)可能性可以基于,例如,在數(shù)據(jù)庫(kù)密鑰值中的差異、斷言的類型,斷言的密鑰值等。數(shù)據(jù)庫(kù)管理系統(tǒng)可以基于共識(shí)可以達(dá)成的可能性設(shè)置超時(shí)時(shí)間間隔。在一個(gè)實(shí)施例中,超時(shí)時(shí)間間隔包括在半秒或3秒之間的持續(xù)時(shí)間或時(shí)間范圍。數(shù)據(jù)庫(kù)管理系統(tǒng)可以動(dòng)態(tài)地設(shè)置該值,或者它可以是一個(gè)預(yù)先確定的值,例如,由應(yīng)用程序開發(fā)者預(yù)先確定的值。在其它實(shí)施例中,超時(shí)時(shí)間間隔包括小于半秒的持續(xù)時(shí)間或時(shí)間范圍。
[0128]在操作508中,數(shù)據(jù)庫(kù)管理系統(tǒng)查詢?cè)谙到y(tǒng)中的被動(dòng)學(xué)習(xí)者以識(shí)別從被動(dòng)學(xué)習(xí)者感知的斷言的歷史。在一些實(shí)施例中,從每個(gè)被動(dòng)學(xué)習(xí)者感知的斷言的歷史表示,例如,他們相信數(shù)據(jù)庫(kù)密鑰是為一個(gè)時(shí)間序列(特定數(shù)據(jù)庫(kù)的事務(wù)之前和/或之后的)的值。改變斷言的歷史被由被動(dòng)學(xué)習(xí)者保持,以使系統(tǒng)能夠最終確定在斷言或數(shù)據(jù)庫(kù)鍵的值上的機(jī)器(或數(shù)據(jù)庫(kù)資源)之間的共識(shí)的的最后時(shí)間。參考操作512進(jìn)行更詳細(xì)的討論。
[0129]在操作510中,數(shù)據(jù)庫(kù)管理系統(tǒng)參考由在查詢中指定的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)所依據(jù)的斷言確定共識(shí)是否存在于資源之間。如果共識(shí)存在,那么,在操作512中,數(shù)據(jù)庫(kù)事務(wù)被更新以及在操作514中,斷言可以被排入或排向在下一個(gè)(或更高的)分層等級(jí)的下一個(gè)事務(wù)序列。在該例中,下一個(gè)事務(wù)序列是遍及分布式數(shù)據(jù)庫(kù)系統(tǒng)中的所有機(jī)器復(fù)制的全局事務(wù)序列。
[0130]如果共識(shí)不存在,那么在操作512中,數(shù)據(jù)庫(kù)管理系統(tǒng)確定時(shí)間間隔是否已過期。如果超時(shí)間隔已過期,則,在操作518中,數(shù)據(jù)庫(kù)事務(wù)被中止或以其他方式被終止。然而,如果時(shí)間間隔尚未過期,則數(shù)據(jù)庫(kù)管理系統(tǒng)再次查詢被動(dòng)學(xué)習(xí)者的斷言的當(dāng)前歷史記錄。
[0131]圖6根據(jù)一個(gè)實(shí)施例示出了一個(gè)流程圖,該流程圖說明了用于控制在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的事務(wù)一致性的示例性過程600。圖6的過程600類似圖5的過程500,然而,過程600還包括時(shí)間旅行的能力以便協(xié)調(diào)數(shù)據(jù)庫(kù)事務(wù)。
[0132]特別地,如果共識(shí)不存在,并且超時(shí)時(shí)間間隔已過期,則在操作618中,數(shù)據(jù)庫(kù)管理系統(tǒng)回退到一直存在于所有的被動(dòng)學(xué)習(xí)者的歷史的斷言,直到共識(shí)被達(dá)成。這個(gè)過程在本文中稱為“時(shí)間旅行”。在操作514中,系統(tǒng)確定共識(shí)是否能在資源之間被達(dá)到,參考由在查詢中指定的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)所依賴的斷言。如果時(shí)間旅行期間共識(shí)被達(dá)成,那么在操作616中,有共識(shí)的數(shù)據(jù)庫(kù)事務(wù)排向到下一序列以及其他事務(wù)序列被刪除。
[0133]圖7根據(jù)一個(gè)實(shí)施例示出了序列圖700,圖700說明了分布式數(shù)據(jù)庫(kù)環(huán)境的組件的示例性操作。更具體地說,序列圖700示出了將讀取時(shí)間從在表達(dá)式中的賦值或數(shù)據(jù)庫(kù)事務(wù)中的更新時(shí)間基本上分離的例子。
[0134]如圖所示,分布式數(shù)據(jù)庫(kù)系統(tǒng)的環(huán)境包括客戶端#1,以及數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)A-D。單個(gè)客戶端(客戶端#1)被在本例中示出,然而,如上所討論的,任何數(shù)量的客戶端可以被激活和/或存在于分布式數(shù)據(jù)庫(kù)系統(tǒng)中的任何數(shù)量的位置。在此例中,數(shù)據(jù)庫(kù)管理系統(tǒng)都位于不同的地點(diǎn),盡管一些或全部的數(shù)據(jù)庫(kù)管理系統(tǒng)可以在同一地點(diǎn)。
[0135]首先,客戶端#1發(fā)送數(shù)據(jù)庫(kù)事務(wù)A到數(shù)據(jù)庫(kù)管理系統(tǒng)A。數(shù)據(jù)庫(kù)管理系統(tǒng)A然后確定數(shù)據(jù)庫(kù)事務(wù)所需的特定配置。例如,數(shù)據(jù)庫(kù)管理系統(tǒng)可以處理數(shù)據(jù)庫(kù)事務(wù)以確定一個(gè)或多個(gè)斷言,其中,一個(gè)或多個(gè)斷言必須具有特定配置以便更新分布式數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)庫(kù)事務(wù)。特定配置可以指示,例如,具有必須是特定值的密鑰或數(shù)據(jù)庫(kù)條目的一個(gè)或多個(gè)斷言。即,數(shù)據(jù)庫(kù)管理系統(tǒng)中作出關(guān)于斷言(例如,密鑰或數(shù)據(jù)庫(kù)條目)的某些假設(shè)(基于先前讀取的值)。特定配置可能需要額外的和/或替代形式。
[0136]數(shù)據(jù)庫(kù)管理系統(tǒng)可稍后確定關(guān)于在第一時(shí)間的一個(gè)或多個(gè)斷言的多個(gè)數(shù)據(jù)庫(kù)資源中的第一配置。在這個(gè)例子中,第一配置最初不同于特定配置。第一配置可能導(dǎo)致,例如,通過查詢被動(dòng)學(xué)習(xí)者(即,DBMS C-D)的方式,雖然替換配置和/或變化是可能的。
[0137]此例中,數(shù)據(jù)庫(kù)管理系統(tǒng)確定第一配置不同于特定配置。第一配置可以因任何數(shù)量的原因不同于特定配置。例如,在一些實(shí)施例中,第一配置將會(huì)不同于特定配置,如果共識(shí)相對(duì)于斷言的有效性(或值)并未在被動(dòng)學(xué)習(xí)者之間被達(dá)成。這可能會(huì)導(dǎo)致未確定的第一配置永遠(yuǎn)不同于特定配置。可替代地或另外地,第一配置可以不同于特定配置,如果特定配置(例如,來自客戶端#1的斷言)不同于來自被動(dòng)學(xué)習(xí)者達(dá)成的共識(shí)。
[0138]因?yàn)榈谝慌渲貌煌c特定配置,數(shù)據(jù)庫(kù)管理系統(tǒng)可以在輪詢或以其他方式再次查詢被動(dòng)學(xué)習(xí)者之前等待。在這個(gè)例子中,在第一配置中的第二查詢結(jié)果與特定配置相同。因此,數(shù)據(jù)庫(kù)事務(wù)可以被更新和/或以其他方式全局地提交至分布式數(shù)據(jù)庫(kù)系統(tǒng)。
[0139]圖8示出了在計(jì)算機(jī)系統(tǒng)800的示例形式中的示意性表示,在其中的一組指令用于使該機(jī)器執(zhí)行在此所討論的一個(gè)或多個(gè)方法的任何一個(gè),可被執(zhí)行。
[0140]在另一個(gè)實(shí)施例中,機(jī)器操作作為一個(gè)獨(dú)立的設(shè)備或可以被連接(例如,聯(lián)網(wǎng))到其它機(jī)器。在聯(lián)網(wǎng)的部署中,機(jī)器可以操作在客戶端-服務(wù)器網(wǎng)絡(luò)環(huán)境中的服務(wù)器或機(jī)器的能力,或作為在點(diǎn)對(duì)點(diǎn)(或分布式)網(wǎng)絡(luò)環(huán)境中的對(duì)等機(jī)器。
[0141]該機(jī)器可以是服務(wù)器計(jì)算機(jī)、客戶端計(jì)算機(jī)、個(gè)人計(jì)算機(jī)(PO、平板PC、機(jī)頂盒(STB)、個(gè)人數(shù)字助理(PDA)、蜂窩電話、網(wǎng)絡(luò)家電、網(wǎng)絡(luò)路由器、交換機(jī)或橋接器、或能夠執(zhí)行指定將由該機(jī)器采取的動(dòng)作的一組指令(順序的或其他方式)的任何機(jī)器。
[0142]雖然機(jī)器可讀介質(zhì)被在示例性實(shí)施例中示出為單個(gè)介質(zhì),但是術(shù)語(yǔ)“機(jī)器可讀介質(zhì)”應(yīng)當(dāng)被理解為包括一個(gè)單一介質(zhì)或多個(gè)介質(zhì)(例如,集中式或分布式數(shù)據(jù)庫(kù),和/或相關(guān)聯(lián)的緩存和服務(wù)器),其用于存儲(chǔ)一個(gè)或多個(gè)指令集。術(shù)語(yǔ)“機(jī)器可讀介質(zhì)”還應(yīng)當(dāng)被視為包括能夠存儲(chǔ),編碼或攜帶一組指令用于由機(jī)器執(zhí)行和導(dǎo)致該機(jī)器執(zhí)行本發(fā)明任一所述的一個(gè)或多個(gè)的方法的任何介質(zhì)。
[0143]通常,被執(zhí)行以本公開的實(shí)施例的例程,可以被為操作系統(tǒng)或特定應(yīng)用的一部分、組件、程序、對(duì)象、模塊或稱作“計(jì)算機(jī)程序”的指令序列。計(jì)算機(jī)程序通常包括在一臺(tái)計(jì)算機(jī)內(nèi)的各種存儲(chǔ)器和存儲(chǔ)設(shè)備中的在不同時(shí)間的一個(gè)或多個(gè)指令集,并且當(dāng)由計(jì)算機(jī)中的一個(gè)或多個(gè)處理器讀取和執(zhí)行時(shí),使得計(jì)算機(jī)執(zhí)行操作以執(zhí)行涉及本公開的各個(gè)方面的元素。
[0144]此外,雖然實(shí)施例已經(jīng)在全功能的計(jì)算機(jī)和計(jì)算機(jī)系統(tǒng)的上下文中進(jìn)行了描述,本領(lǐng)域技術(shù)人員將會(huì)理解,各種實(shí)施例能夠被分布為各種形式的程序產(chǎn)品,并且該發(fā)明同樣適用于不論特定類型的用于實(shí)際上分發(fā)的機(jī)器或計(jì)算機(jī)可讀介質(zhì)。
[0145]機(jī)器或計(jì)算機(jī)可讀介質(zhì)的其它例子包括但不限于可記錄型介質(zhì),諸如易失性和非易失性存儲(chǔ)器設(shè)備,軟盤和其它可移動(dòng)磁盤,硬盤驅(qū)動(dòng)器,光盤(例如,壓縮盤只讀只讀存儲(chǔ)器(⑶ROMS),數(shù)字多功能盤(DVD)等),等等,以及傳輸型介質(zhì),諸如數(shù)字和模擬通信鏈路。
[0146]除非上下文清楚地要求,否則遍及說明書和權(quán)利要求書,詞語(yǔ)“包括”,“包含”等將被解釋為包含的意義,而不是排他或詳盡的意義,也就是就是說,在這個(gè)意義上“包括,但不限于”。如本文所用,術(shù)語(yǔ)“連接”,“耦合”或其任何變體,是指任何連接或耦合,無(wú)論是直接的還是間接的,兩個(gè)或更多元件之間的;元件之間的連接的連接可以是物理的,邏輯的,或它們的組合。此外,在本文中單詞“以上”,“以下”,以及類似含義的詞語(yǔ),在本申請(qǐng)中使用時(shí),應(yīng)指本申請(qǐng)的整體而非本申請(qǐng)的任何特定部分。如文義許可,在上述詳細(xì)說明使用單數(shù)或復(fù)數(shù)的話也可以包括復(fù)數(shù)或單數(shù)分別。詞語(yǔ)“或”,在提及的兩個(gè)或多個(gè)項(xiàng)目的列表,包括了所有的單詞的以下解釋:任何在列表中的項(xiàng)目,所有的在列表中的項(xiàng)目,以及該項(xiàng)目的任何組合中列表。
[0147]本發(fā)明的實(shí)施例的以上詳細(xì)描述并不是為了窮舉或者限制本教導(dǎo)為以上公開的精確形式。然而,本公開的上述具體實(shí)施例和示例是用于說明的目的,各種等同修改是可能的公開內(nèi)容的范圍之內(nèi),因?yàn)槟切┫嚓P(guān)領(lǐng)域技術(shù)人員將認(rèn)識(shí)。例如,盡管處理或模塊以給定的順序呈現(xiàn),替代實(shí)施例可以具有以下步驟執(zhí)行例程或采用具有系統(tǒng)塊,以不同的順序,并且一些處理或模塊可以被刪除,移動(dòng),添加,細(xì)分,組合和/或修改,以提供替代性或子組合。這些處理或模塊的每一個(gè)可以以多種不同的方式來。此外,盡管過程或塊有時(shí)示為被串聯(lián)執(zhí)行,這些過程或塊可以改為并行執(zhí)行,或可以在不同的時(shí)間執(zhí)行。進(jìn)一步,本文指出的任何特定數(shù)字僅僅是示例:替代性實(shí)施方式可以采用不同的值或范圍。
[0148]本文提供的公開內(nèi)容的教導(dǎo)可以應(yīng)用于其它系統(tǒng),而不一定是上述系統(tǒng)。上面描述的各種實(shí)施例的元素和動(dòng)作可以被組合以提供進(jìn)一步的實(shí)施例。
[0149]任何專利和申請(qǐng)以及上面提到的其他參考文獻(xiàn),包括任何可能被列在隨附的申請(qǐng)文件,通過引用并入本文。本公開的方面可以修改,如果需要的話,采用本系統(tǒng),功能和上述參考文獻(xiàn)的概念提供本公開的再進(jìn)一步的實(shí)施例。
[0150]這些和其它的變化可根據(jù)上述詳細(xì)說明被作出。雖然上述說明描述了本發(fā)明的某些實(shí)施例,并且描述所考慮的最佳模式,上述出現(xiàn)在文本中的無(wú)論多么詳盡,本教導(dǎo)可以以多種方式實(shí)施。系統(tǒng)的細(xì)節(jié)可以在其實(shí)施細(xì)節(jié)上產(chǎn)生相當(dāng)?shù)淖兓?,同時(shí)仍然包含在在此所公開的主題之中。如上所述,當(dāng)描述本發(fā)明的某些特征或方面時(shí)使用的特定術(shù)語(yǔ)不應(yīng)被認(rèn)為暗示該術(shù)語(yǔ)在此被重新定義以被限制為任何特定特性,特征,或者與該術(shù)語(yǔ)相關(guān)聯(lián)的本發(fā)明的方面。在一般情況下,在以下權(quán)利要求中使用的術(shù)語(yǔ)不應(yīng)當(dāng)被解釋為限制本公開為在說明書中公開的具體實(shí)施例,除非上述詳細(xì)說明部分明確定義了此種術(shù)語(yǔ)。因此,本發(fā)明的實(shí)際范圍不僅包括所公開的實(shí)施例,還包括在權(quán)利要求下或?qū)嵤┑乃械韧姆绞健?br>
[0151]雖然本公開的某些方面以某些權(quán)利要求的形式所示如下,發(fā)明人在任何數(shù)量的權(quán)利要求形式中考慮本公開的各個(gè)方面。例如,雖然本公開的一個(gè)方面是被根據(jù)35USC § 112,16列舉作為裝置加功能的權(quán)利要求,其它方面同樣可實(shí)施為裝置加功能的權(quán)利要求,或在其它形式,例如被包含在計(jì)算機(jī)可讀介質(zhì)上。(任何旨在根據(jù)35USC§ 112,1|6對(duì)待的權(quán)利要求將以“的裝置”開始。)因此, 申請(qǐng)人:有權(quán)在提出申請(qǐng)之后增加額外的權(quán)利要求以追求這種公開的其他發(fā)明的額外的權(quán)利要求形式。
【權(quán)利要求】
1.一種異步分布式數(shù)據(jù)庫(kù)管理的方法,所述方法包括: 在數(shù)據(jù)庫(kù)管理系統(tǒng),從分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端接收與事務(wù)序列相關(guān)聯(lián)的數(shù)據(jù)庫(kù)事務(wù),其中所述數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)斷言; 在所述數(shù)據(jù)庫(kù)管理系統(tǒng),輪詢關(guān)于被包括在所述數(shù)據(jù)庫(kù)事務(wù)中的所述一個(gè)或多個(gè)斷言的所述有效性的多個(gè)數(shù)據(jù)庫(kù)資源以達(dá)成共識(shí);以及 如果所述共識(shí)被在超時(shí)時(shí)間間隔內(nèi)達(dá)成,基于達(dá)成所述共識(shí),在所述數(shù)據(jù)庫(kù)管理系統(tǒng)更新在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的所述數(shù)據(jù)庫(kù)事務(wù),其中所述共識(shí)最初并未在所述多個(gè)數(shù)據(jù)庫(kù)資源之間被達(dá)成。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括: 在所述數(shù)據(jù)庫(kù)管理系統(tǒng)通知在所述分布式數(shù)據(jù)庫(kù)中的所述客戶端,如果所述共識(shí)未在所述超時(shí)時(shí)間內(nèi)被達(dá)成,則所述數(shù)據(jù)庫(kù)事務(wù)被中止。
3.如權(quán)利要求1所述的方法,其中所述數(shù)據(jù)庫(kù)事務(wù)是由在所述客戶端上運(yùn)行的應(yīng)用程序所啟動(dòng)。
4.如權(quán)利要求1所述的方法,進(jìn)一步包括: 在更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)之前,通知所述客戶端所述數(shù)據(jù)庫(kù)事務(wù)已經(jīng)被成功完成。
5.如權(quán)利要求1所述的方法,其中所述超時(shí)時(shí)間間隔包括半秒和3秒之間的持續(xù)時(shí)間。
6.如權(quán)利要求1所述的方法,其中所述超時(shí)間隔包括小于半秒的持續(xù)時(shí)間。
7.如權(quán)利要求1所述的方法,其中更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)一步包括: 異步地協(xié)調(diào)所述數(shù)據(jù)庫(kù)事務(wù)與在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)其他數(shù)據(jù)庫(kù)事務(wù)。
8.如權(quán)利要求1所述的方法,進(jìn)一步包括: 在更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)之前,從所述分布式數(shù)據(jù)庫(kù)系統(tǒng)讀取相關(guān)于所述數(shù)據(jù)庫(kù)事務(wù)的信息; 傳送所述信息給所述客戶端,而不論是否已經(jīng)達(dá)到所述共識(shí)。
9.如權(quán)利要求1所述的方法,進(jìn)一步包括: 在所述數(shù)據(jù)庫(kù)管理系統(tǒng),從在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的第二客戶端接收與第二事務(wù)序列相關(guān)聯(lián)的第二數(shù)據(jù)庫(kù)事務(wù),其中所述第二數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)第二斷言,并且其中所述一個(gè)或多個(gè)第二斷言要求讀取與所述數(shù)據(jù)庫(kù)事務(wù)相關(guān)的信息。
10.如權(quán)利要求1所述的方法,其中更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)一步包括: 提交所述數(shù)據(jù)庫(kù)事務(wù)至全局事務(wù)序列;以及 在遍及所述分布式數(shù)據(jù)庫(kù)的所述多個(gè)數(shù)據(jù)庫(kù)資源復(fù)制所述全局事務(wù)序列。
11.如權(quán)利要求1所述的方法,進(jìn)一步包括: 在所述數(shù)據(jù)庫(kù)管理系統(tǒng)確定所述共識(shí)可以被達(dá)成的可能性。
12.如權(quán)利要求11所述的方法,還包括: 基于所述共識(shí)可以被達(dá)成的可能性,在所述數(shù)據(jù)庫(kù)管理系統(tǒng)設(shè)置所述超時(shí)時(shí)間間隔。
13.如權(quán)利要求1所述的方法,其中所述多個(gè)數(shù)據(jù)庫(kù)資源包含在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)其他數(shù)據(jù)庫(kù)管理系統(tǒng),或者在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)存儲(chǔ)管理系統(tǒng)。
14.一種異步分布式數(shù)據(jù)庫(kù)管理的方法,所述方法包括: 在數(shù)據(jù)庫(kù)管理系統(tǒng),從分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端接收與事務(wù)序列相關(guān)聯(lián)的數(shù)據(jù)庫(kù)事務(wù),其中所述數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)斷言; 在所述數(shù)據(jù)庫(kù)管理系統(tǒng),處理所述數(shù)據(jù)庫(kù)事務(wù)以識(shí)別所述一個(gè)或多個(gè)斷言,其中所述一個(gè)或多個(gè)斷言必須有特定的配置,以便更新在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的所述數(shù)據(jù)庫(kù)事務(wù); 于第一時(shí)間,在所述數(shù)據(jù)庫(kù)管理系統(tǒng)確定關(guān)于所述一個(gè)或多個(gè)斷言的多個(gè)數(shù)據(jù)庫(kù)資源之間的第一配置,其中所述第一配置不同于所述特定配置;以及 如果關(guān)于所述一個(gè)或多個(gè)斷言的所述多個(gè)數(shù)據(jù)庫(kù)資源之間的第二配置與在所述第二時(shí)間的所述特定配置相同,在所述數(shù)據(jù)庫(kù)管理系統(tǒng)于所述第二時(shí)間更新在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的所述數(shù) 據(jù)庫(kù)事務(wù)。
15.如權(quán)利要求14所述的方法,其中所述特定配置要求所述一個(gè)或多個(gè)斷言是有效的。
16.如權(quán)利要求14所述的方法,進(jìn)一步包括: 如果所述第二配置與在所述第二時(shí)間的所述特定配置不同,在所述數(shù)據(jù)庫(kù)管理系統(tǒng)通知在所述分布式數(shù)據(jù)庫(kù)中的所述客戶端所述數(shù)據(jù)庫(kù)事務(wù)已被中止。
17.如權(quán)利要求14所述的方法,其中所述數(shù)據(jù)庫(kù)事務(wù)是由在所述客戶端上運(yùn)行應(yīng)用程序所啟動(dòng)。
18.如權(quán)利要求17所述的方法,進(jìn)一步包括: 在更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)之前,通知所述應(yīng)用程序所述數(shù)據(jù)庫(kù)事務(wù)已經(jīng)被成功完成。
19.如權(quán)利要求14所述的方法,其中更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)一步包括: 異步地協(xié)調(diào)所述數(shù)據(jù)庫(kù)事務(wù)與在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)其他數(shù)據(jù)庫(kù)事務(wù)。
20.如權(quán)利要求14所述的方法,還包括: 在更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)之前,從所述分布式數(shù)據(jù)庫(kù)系統(tǒng)讀取相關(guān)于所述數(shù)據(jù)庫(kù)事務(wù)的信息; 傳送所述信息給所述客戶端,而不論所述共識(shí)是否已經(jīng)被達(dá)成。
21.如權(quán)利要求14所述的方法,還包括: 在所述數(shù)據(jù)庫(kù)管理系統(tǒng),從在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的第二客戶端接收與第二事務(wù)序列相關(guān)聯(lián)的第二數(shù)據(jù)庫(kù)事務(wù),其中所述第二數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)第二斷言,并且其中所述一個(gè)或多個(gè)第二斷言要求讀取與所述數(shù)據(jù)庫(kù)事務(wù)相關(guān)的信息。
22.如權(quán)利要求14所述的方法,其中,更新的分布式數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)一步包括: 提交所述數(shù)據(jù)庫(kù)事務(wù)至全局事務(wù)序列;以及 在遍及所述分布式數(shù)據(jù)庫(kù)的所述多個(gè)數(shù)據(jù)庫(kù)資源復(fù)制所述全局事務(wù)序列。
23.如權(quán)利要求14所述的方法,還包括: 在所述數(shù)據(jù)庫(kù)管理系統(tǒng)確定所述共識(shí)可以被達(dá)成的可能性。。
24.如權(quán)利要求23所述的方法,還包括: 基于所述共識(shí)可以被達(dá)成的可能性,在所述數(shù)據(jù)庫(kù)管理系統(tǒng)設(shè)置所述超時(shí)時(shí)間間隔。
25.如權(quán)利要求14所述的方法,其中所述多個(gè)資源包含在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)其他數(shù)據(jù)庫(kù)管理系統(tǒng),或者在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的一個(gè)或多個(gè)存儲(chǔ)管理系統(tǒng)。
26.一種數(shù)據(jù)庫(kù)管理系統(tǒng),包括: 處理單元; 接口,其被配置為從在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端接收與事務(wù)序列相關(guān)聯(lián)的數(shù)據(jù)庫(kù)事務(wù),其中所述數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)斷言; 內(nèi)存單元,其具有存儲(chǔ)在其上的指令,其中所述指令當(dāng)由所述處理單元執(zhí)行時(shí),使所述處理單元處理所述數(shù)據(jù)庫(kù)事務(wù)以確定所述一個(gè)或多個(gè)斷言,其中所述一個(gè)或多個(gè)斷言必須具有特定配置,以便更新在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的所述數(shù)據(jù)庫(kù)事務(wù),在第一時(shí)間確定關(guān)于所述一個(gè)或多個(gè)斷言的多個(gè)數(shù)據(jù)庫(kù)資源之間的第一配置,其中所述第一配置不同于所述特定配置 ,并且如果在關(guān)于所述一個(gè)或多個(gè)斷言的所述多個(gè)數(shù)據(jù)庫(kù)資源之間的第二配置與在第二時(shí)間的所述特定配置相同,則在第二時(shí)間更新所述全局事務(wù)序列中的所述數(shù)據(jù)庫(kù)事務(wù)。
27.如權(quán)利要求26所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其中所述特定配置要求所述一個(gè)或多個(gè)斷目是有效的。
28.如權(quán)利要求26所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其中所述指令當(dāng)由所述處理單元執(zhí)行時(shí),進(jìn)一步使所述處理單元通知在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的所述客戶端所述數(shù)據(jù)庫(kù)的事務(wù)已被中止,如果所述第二配置不同于在第二時(shí)間的所述特定配置。
29.如權(quán)利要求26所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其中所述數(shù)據(jù)庫(kù)事務(wù)是由在所述客戶端上運(yùn)行的應(yīng)用程序所啟動(dòng)。
30.如權(quán)利要求29所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其中所述指令當(dāng)由所述處理單元執(zhí)行時(shí),進(jìn)一步使所述處理單元通知所述應(yīng)用程序所述數(shù)據(jù)庫(kù)事務(wù)在更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)之前已被成功完成。
31.如權(quán)利要求26所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其中所述指令當(dāng)由所述處理單元執(zhí)行時(shí),進(jìn)一步使所述處理單元確定所述共識(shí)可以被達(dá)成的可能性。
32.如權(quán)利要求31所述的數(shù)據(jù)庫(kù)管理系統(tǒng),其中所述指令當(dāng)由所述處理單元執(zhí)行時(shí),進(jìn)一步使所述處理單元設(shè)置超時(shí)時(shí)間間隔,其中所述第二時(shí)間小于或等于所述超時(shí)時(shí)間間隔。
33.一種數(shù)據(jù)庫(kù)管理系統(tǒng),包括: 處理單元; 接口,被配置為從在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端接收與事務(wù)序列相關(guān)聯(lián)的數(shù)據(jù)庫(kù)事務(wù),其中所述數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)斷言; 內(nèi)存單元,其上存儲(chǔ)有指令,其中所述指令當(dāng)由所述處理單元執(zhí)行時(shí),使所述處理單元能夠反復(fù)查詢關(guān)于被包括在所述數(shù)據(jù)庫(kù)事務(wù)中的一個(gè)或多個(gè)斷言的所述有效性的數(shù)據(jù)庫(kù)資源以達(dá)成共識(shí),以及如果所述共識(shí)被在超時(shí)時(shí)間間隔內(nèi)達(dá)成,基于達(dá)成所述共識(shí),更新所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的所述數(shù)據(jù)庫(kù)事務(wù),其中所述共識(shí)并未最初在所述多個(gè)資源之間被達(dá)成,并且如果所述共識(shí)并未在所述超時(shí)間隔內(nèi)被達(dá)成,通知在所述分布式數(shù)據(jù)庫(kù)中的所述客戶端所述數(shù)據(jù)庫(kù)事務(wù)被中止。
34.一種數(shù)據(jù)庫(kù)管理系統(tǒng),包括: 用于從在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的客戶端接收與事務(wù)序列相關(guān)聯(lián)的數(shù)據(jù)庫(kù)事務(wù)的裝置,其中所述數(shù)據(jù)庫(kù)事務(wù)包括一個(gè)或多個(gè)斷言; 用于輪詢關(guān)于被包括在所述數(shù)據(jù)庫(kù)事務(wù)內(nèi)的所述一個(gè)或多個(gè)斷言的所述有效性的多個(gè)數(shù)據(jù)庫(kù)資源以達(dá)成共識(shí)的裝置;以及 如果所述共識(shí)并未被在超時(shí)時(shí)間間隔內(nèi)達(dá)成,基于達(dá)成所述共識(shí),用于更新在所述分布式數(shù)據(jù)庫(kù)系統(tǒng)中的所述數(shù)據(jù)庫(kù)事務(wù)的裝置,其中所述共識(shí)最初并未被在所述多個(gè)數(shù)據(jù)庫(kù)資源之間被達(dá)成。
【文檔編號(hào)】G06F15/16GK103842994SQ201280048364
【公開日】2014年6月4日 申請(qǐng)日期:2012年8月1日 優(yōu)先權(quán)日:2011年8月1日
【發(fā)明者】詹森·盧卡斯 申請(qǐng)人:標(biāo)記公司