欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

從分層的觀點(diǎn)協(xié)調(diào)分布式數(shù)據(jù)庫的制作方法

文檔序號:6496707閱讀:246來源:國知局
從分層的觀點(diǎn)協(xié)調(diào)分布式數(shù)據(jù)庫的制作方法
【專利摘要】本發(fā)明的實(shí)施例包括用于通過從不同觀點(diǎn)在分布式數(shù)據(jù)庫系統(tǒng)中分層維護(hù)事務(wù)一致性來控制數(shù)據(jù)庫事務(wù)同時(shí)性的系統(tǒng)和方法。分層維護(hù)事務(wù)一致性保證了在分布式數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫事務(wù)的可串行性,并提高了從分布式數(shù)據(jù)庫系統(tǒng)的客戶端的觀點(diǎn)的整體性能(例如,響應(yīng)時(shí)間)。
【專利說明】從分層的觀點(diǎn)協(xié)調(diào)分布式數(shù)據(jù)庫
[0001]優(yōu)先權(quán)要求
[0002]本申請要求2011年08月01日遞交的第61/513,932號,名稱為“Reconciling aDistributed Database from Hierarchical Viewpoints,,,代理人案號為 58520-8006.USOO的美國臨時(shí)申請,其內(nèi)容以引用方式被明示地合并于此。
[0003]對相關(guān)申請的交互引用
[0004]本申請涉及題為“Generalized Reconciliation in a Distributed Database,,,也是由賈森.盧卡斯發(fā)明的,于2012年8月I日提交的,代理案號為58520-8007.USOl的共同未決的美國專利申請_,其的內(nèi)容以引用的方式被明示地合并于此。
[0005]本申請涉及題為“Systems and Methods for Asynchronous DistributedDatabase Management”,也由賈森.盧卡斯發(fā)明的,于2012年8月I日提交的,代理人案號
為58520-8008.USOl的共同未決的美國專利申請_,其內(nèi)容以引用的方式被明示
地合并于此。
【技術(shù)領(lǐng)域】
[0006]本發(fā)明的具體實(shí)施例一般涉及數(shù)據(jù)庫管理技術(shù)以及,更具體地說,從各層觀點(diǎn)協(xié)調(diào)和/或以其他方式維護(hù)分布式數(shù)據(jù)庫。
【背景技術(shù)】
[0007]分布式數(shù)據(jù)庫是一種不是所有的存儲裝置都被連接到共同的中央處理單元(CPU)的數(shù)據(jù)庫。分布式數(shù)據(jù)庫可以被存儲在位于同一物理位置的多臺計(jì)算機(jī)中,或可以分散在處于多個(gè)物理位置的互連的計(jì)算機(jī)網(wǎng)絡(luò)。分布式系統(tǒng)的位置或場所可能分布在大的區(qū)域(如美國或世界),或在一個(gè)小的區(qū)域(如建筑物或校園)。在分布式數(shù)據(jù)庫中的數(shù)據(jù)集合也可以分布在多個(gè)物理位置。
[0008]通常情況下,分布式數(shù)據(jù)庫系統(tǒng)的目的是讓很多用戶(客戶端或應(yīng)用)在相同時(shí)間的數(shù)據(jù)集合中的相同信息的使用,同時(shí)使它看起來好像每個(gè)用戶獨(dú)占訪問整個(gè)數(shù)據(jù)集合。分布式數(shù)據(jù)庫系統(tǒng)應(yīng)以性能的損失最小(潛伏期)和最大事務(wù)吞吐量來提供這項(xiàng)服務(wù)。也就是說,在位置A的用戶必須能夠訪問(也許更新)在位置B的數(shù)據(jù)。如果用戶更新信息,該更新必須被整個(gè)傳播分布式數(shù)據(jù)庫系統(tǒng)的資源以維護(hù)在分布式數(shù)據(jù)庫系統(tǒng)中的一致性。
[0009]分布式數(shù)據(jù)庫通常有兩種形式:同步或異步。同步數(shù)據(jù)庫是分布式數(shù)據(jù)庫技術(shù)的一種形式,其中跨網(wǎng)絡(luò)的所有數(shù)據(jù)不斷保持最新,以使得任何站點(diǎn)的用戶可以在任何時(shí)間的網(wǎng)絡(luò)上的任何地點(diǎn)訪問數(shù)據(jù),并得到相同的答案。同步技術(shù)保證了數(shù)據(jù)的完整性并減少得知最近的數(shù)據(jù)副本的所在位置的復(fù)雜性。然而,同步技術(shù)往往會導(dǎo)致非常緩慢的響應(yīng)時(shí)間,因?yàn)榉植际綌?shù)據(jù)庫管理系統(tǒng)必須花費(fèi)大量時(shí)間檢查更新是準(zhǔn)確的以及跨網(wǎng)絡(luò)的完整傳播。
[0010]更常見的數(shù)據(jù)庫是異步數(shù)據(jù)庫。異步數(shù)據(jù)庫是分布式數(shù)據(jù)庫技術(shù)的一種形式,其中復(fù)制數(shù)據(jù)的副本被存放在不同的節(jié)點(diǎn)(或資源),以使得局部服務(wù)器可以訪問數(shù)據(jù),而無需伸至整個(gè)網(wǎng)絡(luò)。使用異步技術(shù),在整個(gè)遠(yuǎn)程數(shù)據(jù)庫的傳播數(shù)據(jù)更新中會有一些延遲,所以一定程度上,至少暫時(shí)不一致是被容許的。異步技術(shù)往往有比同步技術(shù)更好的響應(yīng)時(shí)間,因?yàn)槟承└驴赡軙兄爻霈F(xiàn)以及數(shù)據(jù)副本可以以跨越網(wǎng)絡(luò)的預(yù)定時(shí)間間隔進(jìn)行同步。但是,同步副本和串行化的數(shù)據(jù)庫事務(wù)以維護(hù)同時(shí)性是艱巨的任務(wù)。
[0011]此外,使用異步技術(shù),更新或數(shù)據(jù)庫事務(wù)都必須在分布式數(shù)據(jù)庫系統(tǒng)中串行化以維護(hù)一致性和/或同時(shí)性。如果事務(wù)以串行順序被執(zhí)行,同時(shí)沖突永遠(yuǎn)不會發(fā)生,因?yàn)槊恳粋€(gè)這樣的事務(wù)將是在特定時(shí)間的系統(tǒng)上被執(zhí)行的唯一事務(wù),并有專用的系統(tǒng)資源。任何新的事務(wù)將看到以前事務(wù)的結(jié)果,再加上它的變化,而不會看到那些尚未啟動的事務(wù)的結(jié)果。在操作中,事務(wù)通常同時(shí)執(zhí)行,并且要求到相同資源的同時(shí)訪問和修改。因此,維護(hù)在異步分布式數(shù)據(jù)庫系統(tǒng)中的一致性可能非常復(fù)雜并且還可能導(dǎo)致不可接受的響應(yīng)時(shí)間。
[0012]同時(shí)控制機(jī)制被設(shè)計(jì)來控制同時(shí)性。封閉式同時(shí)控制機(jī)制通過防止資源的無效使用來控制同時(shí)性。當(dāng)一個(gè)事務(wù)試圖以可能無效另一個(gè)事務(wù)已使用資源的方式的方式使用資源的時(shí)候,封閉式同時(shí)控制機(jī)制直接請求事務(wù)以等待(例如,鎖定或限制訪問機(jī)制),直到該資源可用且沒有潛在的沖突。然而,使用封閉式同時(shí)控制機(jī)制,需要有適當(dāng)?shù)臋C(jī)制來檢測死鎖,或所有事務(wù)周期都彼此等待。此外,客戶端必須經(jīng)常不必要地等待資源。
[0013]相反,開放式機(jī)制通過事后檢測無效使用(例如,通過使用資源并隨后取得共識)來控制同時(shí)性。開放式同時(shí)控制機(jī)制優(yōu)化沖突罕見的情況。其基本思想是把事務(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ù)。
[0014]不幸的是,開放式同時(shí)機(jī)制也可能表現(xiàn)為緩慢的,因?yàn)樗鼈円笤诟潞?或提交在分布式數(shù)據(jù)庫系統(tǒng)中的任何數(shù)量的數(shù)據(jù)庫事務(wù)的改變之前在資源之間達(dá)到共識。因此,從包括系統(tǒng)響應(yīng)時(shí)間的用戶的觀點(diǎn)來看,開放式同時(shí)控制機(jī)制也阻礙了分布式數(shù)據(jù)庫的整體性能。

【發(fā)明內(nèi)容】

[0015]本發(fā)明的實(shí)施例包括用于從分層觀點(diǎn)分層地維持和/或管理分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)一致性的系統(tǒng)和方法。在一個(gè)實(shí)施例中,在此描述的系統(tǒng)和方法教導(dǎo)了選擇有意義的觀點(diǎn)用于維護(hù)包括執(zhí)行中間和解的事務(wù)一致性,如果有必要的話,所以計(jì)算機(jī)行為和性能的用戶感知被優(yōu)化。例如,對應(yīng)于在游戲中一起交互的幾個(gè)用戶(例如,結(jié)合用戶)的數(shù)據(jù)集可以被首先僅在游戲中一起進(jìn)行交互的那些用戶之間協(xié)調(diào)。數(shù)據(jù)集隨后可以從結(jié)合的用戶的觀點(diǎn)被全局地維護(hù)和/或協(xié)調(diào)至全局事務(wù)序列。
[0016]根據(jù)各種實(shí)施例,數(shù)據(jù)庫管理系統(tǒng)(DBMS)可通過基于多個(gè)數(shù)據(jù)庫查詢識別多個(gè)事務(wù)序列分層地維護(hù)在分布式數(shù)據(jù)庫中的事務(wù)一致性,其中每個(gè)數(shù)據(jù)庫查詢指示由在分布式數(shù)據(jù)庫中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用啟動的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù),選擇多個(gè)事務(wù)序列的子集,以及生成中間共享事務(wù)序列以連續(xù)地維護(hù)在多個(gè)事務(wù)序列的子集之間的事務(wù)的一致性,其中在中間共享事務(wù)序列中維護(hù)的中間共享事務(wù)隨后被用于經(jīng)由被跨分布式數(shù)據(jù)庫的多個(gè)資源進(jìn)行復(fù)制的全局事務(wù)序列來實(shí)現(xiàn)全局事務(wù)一致性。
[0017]在一個(gè)實(shí)施例中,DBMS通過跨分布式數(shù)據(jù)庫的多個(gè)資源復(fù)制全局事務(wù)序列來分層地維護(hù)在分布式數(shù)據(jù)庫中的事務(wù)一致性。
[0018]在一個(gè)實(shí)施例中,多個(gè)事務(wù)序列的子集的每個(gè)事務(wù)序列從應(yīng)用之一的觀點(diǎn)指示數(shù)據(jù)庫事務(wù)的因果歷史。
[0019]在一個(gè)實(shí)施例中,DBMS通過維護(hù)中間共享事務(wù)序列分層地維護(hù)在分布式數(shù)據(jù)中的事務(wù)一致性,其中維護(hù)中間共享事務(wù)序列包含異步地協(xié)調(diào)多個(gè)事務(wù)序列的子集到中間共享事務(wù)序列。在一個(gè)實(shí)施例中,每個(gè)數(shù)據(jù)庫事務(wù)包括一個(gè)或多個(gè)斷言以及協(xié)調(diào)多個(gè)事務(wù)序列的子集到中間共享事務(wù)序列包括確定每個(gè)斷言的有效性。
[0020]在一個(gè)實(shí)施例中,確定所述每個(gè)斷言的有效性包括在每個(gè)事務(wù)之內(nèi)從源事務(wù)一貫地移動到原因事務(wù),直到每個(gè)斷言被驗(yàn)證。
[0021]在一個(gè)實(shí)施例中,中間共享事務(wù)序列代表如從在所述多個(gè)客戶端的兩個(gè)或更多的客戶端上操作的兩個(gè)或更多的應(yīng)用感知的觀點(diǎn)共享點(diǎn)。
[0022]在一個(gè)實(shí)施例中,多個(gè)事務(wù)序列的子集的一個(gè)或多個(gè)事務(wù)序列基于由一個(gè)或多個(gè)事務(wù)序列啟動的應(yīng)用被選擇。
[0023]在一個(gè)實(shí)施例中,多個(gè)事務(wù)序列的所述子集的一個(gè)或多個(gè)事務(wù)序列基于與所述一個(gè)或多個(gè)事務(wù)序列相關(guān)聯(lián)的一個(gè)或多個(gè)客戶端的地理位置被選擇。
[0024]在一個(gè)實(shí)施機(jī)制中,多個(gè)事務(wù)序列的子集的一個(gè)或多個(gè)事務(wù)序列基于與一個(gè)或多個(gè)事務(wù)序列相關(guān)聯(lián)的一個(gè)或多個(gè)客戶端的屬性被選擇。
[0025]在一個(gè)實(shí)施例中,DBMS通過提交在中間共享事務(wù)序列中的共享事務(wù)以維護(hù)全局事務(wù)序列來分層地維護(hù)在分布式數(shù)據(jù)庫中的事務(wù)一致性,其中提交共享事務(wù)到全局事務(wù)序列包括用在分布式數(shù)據(jù)庫中的其他數(shù)據(jù)庫事務(wù)協(xié)調(diào)在中間共享事務(wù)序列中的一個(gè)或多個(gè)的
共享事務(wù)。
[0026]在一個(gè)實(shí)施例中,每個(gè)數(shù)據(jù)庫事務(wù)包括一個(gè)或多個(gè)斷言以及協(xié)調(diào)包括達(dá)成在關(guān)于每個(gè)斷言的有效性的多個(gè)數(shù)據(jù)庫資源之間的共識。在一個(gè)實(shí)施例中,達(dá)成共識包括在每個(gè)事務(wù)序列之內(nèi)從源數(shù)據(jù)庫事務(wù)一貫地移動到原因數(shù)據(jù)庫事務(wù),直到每個(gè)斷言被驗(yàn)證。
[0027]在一個(gè)實(shí)施例中,在提交共享事務(wù)到所述全局事務(wù)序列之前,通知相關(guān)聯(lián)的數(shù)據(jù)庫查詢被完成的應(yīng)用之一,DBMS分層維護(hù)在分布式數(shù)據(jù)庫中的事務(wù)一致性。
[0028]在一個(gè)實(shí)施例中,通過提交多個(gè)數(shù)據(jù)庫事務(wù)的其他未提交的數(shù)據(jù)庫事務(wù)到全局事務(wù)序列,DBMS分層維護(hù)在分布式數(shù)據(jù)庫中的事務(wù)一致性,其中其他未提交的數(shù)據(jù)庫事務(wù)不在中間共享事務(wù)序列之中。
[0029]在一個(gè)實(shí)施例中,多個(gè)事務(wù)序列的子集系基于第一應(yīng)用的用戶之間的關(guān)系而被選擇。
[0030]在一個(gè)實(shí)施例中,每個(gè)用戶具有與第一應(yīng)用相關(guān)聯(lián)的用戶配置文件并且其中多個(gè)事務(wù)序列的子集基于用戶配置文件之間的關(guān)系被選擇。在一個(gè)實(shí)施例中,多個(gè)事務(wù)序列的子集基于第一應(yīng)用程序的類型被選擇。在一個(gè)實(shí)施例中,第一應(yīng)用包括多用戶在線互動游戲。在一個(gè)實(shí)施例中,多個(gè)事務(wù)序列的子集系基于在多用戶在線互動游戲中的社會等級而被選擇。
[0031]根據(jù)各種實(shí)施例中,DBMS可以分層地維護(hù)在分布式數(shù)據(jù)庫中的事務(wù)一致性。DBMS可以包括處理單元、接口和內(nèi)存單元。接口可以被配置成接收多個(gè)數(shù)據(jù)庫查詢,其中每個(gè)數(shù)據(jù)庫查詢指示由在分布式數(shù)據(jù)庫系統(tǒng)中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用啟動的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)。內(nèi)存單元具有存儲在其上的指令,其中當(dāng)指令由處理單元執(zhí)行時(shí),使處理單元以基于多個(gè)數(shù)據(jù)庫查詢識別多個(gè)事務(wù)的序列、選擇多個(gè)事務(wù)序列的子集,并生成中間共享事務(wù)序列來維護(hù)在多個(gè)事務(wù)序列的子集之間的事務(wù)一致性。
[0032]根據(jù)各種實(shí)施例,DBMS通過從在分布式數(shù)據(jù)庫系統(tǒng)中的多個(gè)客戶端系統(tǒng)接收多個(gè)數(shù)據(jù)庫事務(wù),可以分層地維護(hù)在分布式數(shù)據(jù)庫中的事務(wù)一致性,其中,每個(gè)事務(wù)序列指示由在所述多個(gè)客戶端系統(tǒng)之一上運(yùn)行的應(yīng)用啟動的未提交數(shù)據(jù)庫事務(wù)。基于多個(gè)數(shù)據(jù)庫事務(wù),在DBMS可以識別多個(gè)事務(wù)序列,其中每個(gè)數(shù)據(jù)庫事務(wù)是由在分布式數(shù)據(jù)庫系統(tǒng)中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用啟動?;诘谝粯?biāo)準(zhǔn),在DBMS可以選擇多個(gè)事務(wù)序列的子集。DBMS可以生成中間共享事務(wù)序列來維護(hù)多個(gè)事務(wù)序列的子集之間的事務(wù)一致性。DBMS可以提交由中間共享事務(wù)序列指示的數(shù)據(jù)庫事務(wù)到全局事務(wù)序列,但在提交由中間共享事務(wù)序列指示的數(shù)據(jù)庫事務(wù)到全局事務(wù)序列之前,DBMS可以發(fā)送指示在所述中間共享事務(wù)序列中的一個(gè)或多個(gè)的所述數(shù)據(jù)庫事務(wù)的提交或故障的通知到在啟動數(shù)據(jù)庫請求的客戶端上的所述應(yīng)用。
【專利附圖】

【附圖說明】
[0033]圖1示出了根據(jù)一個(gè)實(shí)施例的示例性分布式數(shù)據(jù)庫環(huán)境的框圖,其說明了本發(fā)明的各種特征可被用于其內(nèi)的多個(gè)分布式數(shù)據(jù)庫站點(diǎn)和客戶端系統(tǒng)。
[0034]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的本發(fā)明的各種特征可被用于其內(nèi)的分布式數(shù)據(jù)庫環(huán)境的示例性節(jié)點(diǎn)的框圖。
[0035]圖3示出了根據(jù)一個(gè)實(shí)施例的用于分層地維護(hù)在分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)一致性的數(shù)據(jù)庫管理系統(tǒng)的組件的框圖。
[0036]圖4示出了根據(jù)一個(gè)實(shí)施例的流程圖,其說明了用于分層地維護(hù)在分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)一致性的示例性過程。
[0037]圖5A和5B示出了根據(jù)一個(gè)實(shí)施例的說明在分布式數(shù)據(jù)庫系統(tǒng)中的中間協(xié)調(diào)過程的一個(gè)例子的圖示。
[0038]圖6A和6B示出了根據(jù)一個(gè)實(shí)施例的說明在分布式數(shù)據(jù)庫系統(tǒng)中的示例性中間協(xié)調(diào)過程的事務(wù)序列。
[0039]圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的在分布式數(shù)據(jù)庫系統(tǒng)中的中間協(xié)調(diào)過程的例子的圖示。
[0040]圖8示出了根據(jù)一個(gè)實(shí)施例的流程圖,其說明了用于分層地維護(hù)在分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)一致性的示例性過程。
[0041]圖9示出了根據(jù)一個(gè)實(shí)施例的在計(jì)算機(jī)系統(tǒng)的示例形式中的機(jī)器的示意性表示,一組指令在計(jì)算機(jī)系統(tǒng)之內(nèi),用于使機(jī)器執(zhí)行在此討論的任何一個(gè)或多個(gè)的方法,可被執(zhí)行?!揪唧w實(shí)施方式】
[0042]公開的系統(tǒng)和方法提供通過從各種觀點(diǎn)分層地維護(hù)在分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)一致性控制數(shù)據(jù)庫事務(wù)的同時(shí)性。分層維事務(wù)一致性確保在分布式數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫事務(wù)的可串行化并從分布式數(shù)據(jù)庫系統(tǒng)的客戶端的觀點(diǎn)提高了整體性能(如響應(yīng)時(shí)間)。
[0043]本文所描述的分布式數(shù)據(jù)庫系統(tǒng)可以由多個(gè)資源或節(jié)點(diǎn)組成。在一些實(shí)施例中,每個(gè)資源或節(jié)點(diǎn)有一個(gè)系統(tǒng)鐘。現(xiàn)有技術(shù)的機(jī)制通常使用時(shí)鐘和基于鎖定機(jī)制控制來自資源的操作或數(shù)據(jù)庫事務(wù)的交錯(cuò)。然而,在此描述的分布式數(shù)據(jù)庫資源不依賴于他們的系統(tǒng)時(shí)鐘,以為了串行化請求的順序。相反,本發(fā)明的目的是基于數(shù)據(jù)庫事務(wù)所依賴的潛在斷言通過交錯(cuò)數(shù)據(jù)庫事務(wù)來提高同時(shí)性。如在此所述,每個(gè)假設(shè)由斷言進(jìn)行控制,該斷言可以用來代替鎖,以允許操作的交錯(cuò)和增加并行性。在不同的分層觀點(diǎn)的數(shù)據(jù)庫事務(wù)的交錯(cuò)(或協(xié)調(diào))增加了從分布式數(shù)據(jù)庫系統(tǒng)的用戶感知到的響應(yīng)時(shí)間。
[0044]下面的描述和附圖是說明性的,并且不應(yīng)當(dāng)被解釋為限制性的。許多具體的細(xì)節(jié)被描述以提供對本發(fā)明的徹底理解。然而,在某些情況下,公知的或常規(guī)的細(xì)節(jié)不被描述是為了避免混淆本說明。在本發(fā)明中的一個(gè)實(shí)施例的參考可以是,但不一定是,參考相同的實(shí)施例,以及,這樣的引用指的是實(shí)施例中的至少一個(gè)。
[0045]在本說明書中參考文獻(xiàn)對“一個(gè)實(shí)施例”或“實(shí)施例”意味著特定的特征、結(jié)構(gòu)或連同實(shí)施例所描述的特性被包括在本發(fā)明的至少一個(gè)實(shí)施例中。在說明書中各個(gè)地方的“在一個(gè)實(shí)施例中”的短語的出現(xiàn)并不必要的都是指的同一實(shí)施例,也不是指單獨(dú)的或其他實(shí)施例的互相排斥的替代實(shí)施例。此外,各種特征被描述,其可通過一些實(shí)施例而不是其他實(shí)施例被展示。同樣,各種要求被描述,其可以是一些實(shí)施例而不是其他實(shí)施例的要求。
[0046]在本說明書中使用的術(shù)語通常具有本領(lǐng)域中、本
【發(fā)明內(nèi)容】
的范圍內(nèi)以及在每個(gè)術(shù)語使用的特定上下文之內(nèi)的普通含義。被用于描述本發(fā)明的某些術(shù)語將在下面或者在說明書的其它地方進(jìn)行討論,以為關(guān)于本發(fā)明描述的實(shí)踐者提供額外的指導(dǎo)。為方便起見,某些術(shù)語可能會被突出顯示,例如使用斜體和/或引號。突出顯示的使用不會對術(shù)語的范圍和含義造成影響,在同樣的情況下,術(shù)語的范圍和含義是一樣的,不論它是否被突出顯示。將理解的是,同樣的事物可以以一種以上的方式進(jìn)行表述。
[0047]因此,替代語言和同義詞可用于在此所討論的任何一個(gè)或多個(gè)的術(shù)語,也不是被賦予術(shù)語是否被在此闡述或描述的任何特殊的意義。若干術(shù)語的同義詞被提供。一個(gè)或多個(gè)同義詞的列舉不排除使用其他的同義詞。包括任何在此討論的術(shù)語的例子的本說明書中的任何位置的例子的使用,僅是說明性的,而不是為了進(jìn)一步限制本發(fā)明的范圍和含義或任何示例性術(shù)語。同樣地,本發(fā)明并不限定于在本說明書中給出的各種實(shí)施例。
[0048]在不意圖以進(jìn)一步限制本發(fā)明的范圍,根據(jù)本發(fā)明的實(shí)施例的儀器、裝置、方法及其相關(guān)結(jié)果的例子被給定如下。應(yīng)注意是,標(biāo)題或副標(biāo)題為了方便讀者可以被使用在實(shí)施例中,其絕不應(yīng)該限制本發(fā)明的范圍。除非另有定義,在此使用的所有技術(shù)和科學(xué)術(shù)語具有通常由本
【發(fā)明內(nèi)容】
所屬的領(lǐng)域的普通技術(shù)人員的通常理解的相同的含義。在沖突的情況下,以本文件(包括定義)為準(zhǔn)。
[0049]本發(fā)明公開的【具體實(shí)施方式】包括各種步驟,這些步驟將在下面描述。步驟可以通過硬件組件來執(zhí)行,或者可以被以機(jī)器可執(zhí)行指令體現(xiàn),其可被用來使以指令編程的通用或?qū)S锰幚砥鲌?zhí)行這些步驟??商鎿Q地,這些步驟可以由硬件,軟件和/或固件的組合來執(zhí)行。
[0050]本發(fā)明的【具體實(shí)施方式】可被提供為計(jì)算機(jī)程序產(chǎn)品,其可以包括其上存儲有指令的機(jī)器可讀介質(zhì),其可被用來對計(jì)算機(jī)(或其他電子設(shè)備)編程以執(zhí)行過程。該機(jī)器可讀介質(zhì)可以包括,但不限于,軟盤、光盤、光盤只讀存儲器(CD-ROM),和磁光盤、ROM、隨機(jī)存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)、車輛身份模塊(VIMS)、磁卡或光卡、閃存、或其他類型的適合于存儲電子指令的介質(zhì)/機(jī)器可讀介質(zhì)。
[0051]此外,本發(fā)明的實(shí)施例也可以下載作為計(jì)算機(jī)程序產(chǎn)品使用的計(jì)算機(jī)程序產(chǎn)品或數(shù)據(jù),其中程序、數(shù)據(jù)和/或指令可以經(jīng)由體現(xiàn)在載波或其它傳播介質(zhì)中的數(shù)據(jù)信號通過通信鏈路(例如,調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)從遠(yuǎn)程計(jì)算機(jī)或移動設(shè)備傳送到發(fā)出請求的計(jì)算機(jī)或移動設(shè)備。在某些情況下,程序、數(shù)據(jù)或指令中的部分可通過外部網(wǎng)絡(luò),例如電話網(wǎng)絡(luò)(例如,公共交換電話網(wǎng)絡(luò)、蜂窩式網(wǎng)絡(luò)、W1-Fi和其它語音、數(shù)據(jù)和無線網(wǎng)絡(luò)),或互聯(lián)網(wǎng)被提供。該通信鏈路可以包括多個(gè)網(wǎng)絡(luò),甚至多個(gè)異構(gòu)網(wǎng)絡(luò),例如一個(gè)或多個(gè)邊界網(wǎng)絡(luò)、語音網(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ò)之間的通信連接。
[0052]術(shù)語
[0053]貫穿本申請使用的術(shù)語的簡要定義被給定如下。
[0054]術(shù)語“連接”或“接合”和相關(guān)術(shù)語是在操作意義中使用,并且不限于直接連接或接合。
[0055]術(shù)語“實(shí)施例”、短語例如“在一些實(shí)施例中”、“在各實(shí)施例中”之類的,通常指的是特定的特征、結(jié)構(gòu)、方法或特性,之前或之后的術(shù)語或短語被包括在本發(fā)明的至少一個(gè)實(shí)施例中,并且可以被包括在本發(fā)明的一個(gè)以上的實(shí)施例中。此外,這樣的術(shù)語或短語不一定指相同的實(shí)施例。
[0056]如果說明書規(guī)定組件或特征“可以”,“能夠”,“可能”或“可能”被包括或有一個(gè)特點(diǎn),并特定的組件或特征并不需要被包含或具有的特點(diǎn)。
[0057]術(shù)語“模塊”是泛指軟件、硬件和/或固件(或其任何組合)。模塊通常是功能性組件,其可以使用指定輸入生成有用的數(shù)據(jù)或其他輸出。模塊可以是或可以不是獨(dú)立的。應(yīng)用程序(也稱為“application”)可以包括一個(gè)或多個(gè)模塊和/或模塊可以包括一個(gè)或多個(gè)應(yīng)用程序。
[0058]術(shù)語“應(yīng)答”包括完全和部分的應(yīng)答。
[0059]分布式數(shù)據(jù)庫環(huán)境示例
[0060]分布式數(shù)據(jù)庫環(huán)境100的例子,表示多個(gè)分布式數(shù)據(jù)庫站點(diǎn)和客戶端系統(tǒng),在其中本發(fā)明的各種特征也可以被使用,現(xiàn)在將參考圖1被描述。在這個(gè)例子中,分布式數(shù)據(jù)庫環(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的連接的任何地方。
[0061]在本例中,節(jié)點(diǎn)10個(gè)設(shè)在與其他節(jié)點(diǎn)10經(jīng)由網(wǎng)絡(luò)150通信。節(jié)點(diǎn)10可以是集中式數(shù)據(jù)庫系統(tǒng),例如數(shù)據(jù)倉庫或數(shù)據(jù)集市,遠(yuǎn)程站點(diǎn),如臺式個(gè)人計(jì)算機(jī),便攜式計(jì)算機(jī)或其他移動計(jì)算設(shè)備,或任何其它類型的數(shù)據(jù)處理器。如本例中所示,節(jié)點(diǎn)10包括與分布式數(shù)據(jù)庫20通信的數(shù)據(jù)庫管理系統(tǒng)18。數(shù)據(jù)庫管理系統(tǒng)18可以與數(shù)據(jù)庫20經(jīng)由任何通信裝置通信用于傳送數(shù)據(jù)和/或控制信息。雖然為了簡單起見未被示出,數(shù)據(jù)庫管理系統(tǒng)18還可以包括分布式數(shù)據(jù)庫管理系統(tǒng)和局部數(shù)據(jù)庫管理系統(tǒng)。類似地,盡管未示出,數(shù)據(jù)庫20可包括分布式數(shù)據(jù)庫和局部數(shù)據(jù)庫。
[0062]在一些實(shí)施例中,一個(gè)或多個(gè)的分布式數(shù)據(jù)庫管理系統(tǒng)18可被指定主管理系統(tǒng)或主機(jī)服務(wù)器系統(tǒng)。主管理系統(tǒng)可能在某些情況下如本文中所公開的負(fù)責(zé)協(xié)調(diào)數(shù)據(jù)庫事務(wù)和/或數(shù)據(jù)庫事務(wù)序列,雖然替代配置是可能的。
[0063]網(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,等等。
[0064]可替換地或附加地,網(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))來實(shí)現(xiàn)。在一個(gè)實(shí)施例中,通信可以通過安全通信協(xié)議(如安全套接字層(SSL)或傳輸層安全(TLS))來實(shí)現(xiàn)。
[0065]此外,通信可以經(jīng)由一個(gè)或多個(gè)無線網(wǎng)絡(luò)被實(shí)現(xiàn),無線網(wǎng)絡(luò)例如,但是不限于,一個(gè)或多個(gè)的局域網(wǎng)(LAN)、無線局域網(wǎng)(WLAN)、個(gè)人區(qū)域網(wǎng)(PAN)、校園區(qū)域網(wǎng)(CAN)、城域網(wǎng)(MAN)、廣域網(wǎng)(WAN)、無線廣域網(wǎng)(WffAN)、全球移動通信系統(tǒng)(GSM)、個(gè)人通信服務(wù)(PCS)、數(shù)字高級移動電話服務(wù)(D-AMPS)、藍(lán)牙、無線網(wǎng)絡(luò)、固定無線數(shù)據(jù)、2G、2.5G、3G網(wǎng)絡(luò)、GSM演進(jìn)的增強(qiáng)型數(shù)據(jù)速率(EDGE)、通用分組無線服務(wù)(GPRS)、增強(qiáng)型GPRS、短信協(xié)議,如TCP/IP、短信、彩信、可擴(kuò)展通信與表示協(xié)議(XMPP)、實(shí)時(shí)消息協(xié)議(RTMP)、即時(shí)通信和表示協(xié)議(MPP)、即時(shí)消息、USSD、IRC或者任何其他無線數(shù)據(jù)網(wǎng)絡(luò)或通信協(xié)議。
[0066]客戶端系統(tǒng)(或客戶端)25經(jīng)由網(wǎng)絡(luò)150與一個(gè)或多個(gè)節(jié)點(diǎn)10通信。客戶端系統(tǒng)25可以是任何系統(tǒng)和/或裝置,和/或能夠建立與另一個(gè)設(shè)備、服務(wù)器和/或其他系統(tǒng)的連接的裝置/系統(tǒng)的任何組合。客戶端系統(tǒng)25通常包括顯示器或其他輸出功能,以呈現(xiàn)設(shè)備到用戶之間的數(shù)據(jù)交換。例如,客戶端系統(tǒng)25可以是,但不限于,服務(wù)器桌面、臺式計(jì)算機(jī)、計(jì)算機(jī)集群、移動計(jì)算設(shè)備,例如筆記本、膝上型計(jì)算機(jī)、手持式計(jì)算機(jī)、移動電話、智能電話、PDA、黑莓設(shè)備、Treo和/或iPhone等等。在一個(gè)實(shí)施例中,客戶端系統(tǒng)25被接合到網(wǎng)絡(luò)150。在一些實(shí)施例中,客戶端系統(tǒng)25可被直接連接到彼此或另一個(gè)節(jié)點(diǎn)10。
[0067]客戶端系統(tǒng)25包括查詢接口 22和一個(gè)或多個(gè)應(yīng)用程序26。應(yīng)用程序26可以在客戶端25上執(zhí)行,并可能包括用于調(diào)用查詢接口 22的功能,該查詢接口 22用于將數(shù)據(jù)庫查詢傳遞到數(shù)據(jù)庫服務(wù)器進(jìn)行處理。應(yīng)用程序26可調(diào)用查詢接口 22用于從分布式數(shù)據(jù)庫20的數(shù)據(jù)庫表中讀出數(shù)據(jù)或?qū)?shù)據(jù)寫入到分布式數(shù)據(jù)庫20的數(shù)據(jù)庫表中。在一般情況下,應(yīng)用程序26和查詢接口 22可以是任何類型的可解釋或可執(zhí)行軟件代碼,例如內(nèi)核組件,應(yīng)用程序,腳本,鏈接庫,或者具有方法的對象,包括其組合或變體。在一個(gè)示例中,應(yīng)用程序26包括一個(gè)多用戶交互游戲,但是,可以理解,其它的應(yīng)用程序也是可能的。
[0068]在一些實(shí)施例中,一個(gè)或多個(gè)數(shù)據(jù)庫管理系統(tǒng)18通過異步地和同時(shí)地從各個(gè)層次觀點(diǎn)協(xié)調(diào)數(shù)據(jù)庫事務(wù)為每個(gè)客戶端系統(tǒng)25維護(hù)一個(gè)或多個(gè)事務(wù)序列。該事務(wù)序列可以包含一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)。在操作中,數(shù)據(jù)庫事務(wù)可以由客戶端系統(tǒng)25內(nèi)的應(yīng)用程序26產(chǎn)生并經(jīng)由由查詢接口 22產(chǎn)生的查詢被轉(zhuǎn)移到關(guān)聯(lián)的數(shù)據(jù)庫管理系統(tǒng)18。如在圖1的例子中所示,查詢被通過網(wǎng)絡(luò)150傳遞并在數(shù)據(jù)庫管理系統(tǒng)18中的一個(gè)被接收。
[0069]在一些實(shí)施例中,每個(gè)事務(wù)序列可能是一個(gè)連續(xù)的獨(dú)立的序列或線性時(shí)間模型,其從個(gè)人的觀點(diǎn)指示數(shù)據(jù)庫事務(wù)。個(gè)人的觀點(diǎn)可以是,例如,在客戶端上運(yùn)行的一個(gè)或多個(gè)應(yīng)用程序的觀點(diǎn)和/或客戶端系統(tǒng)或客戶端系統(tǒng)的操作者(例如,用戶或玩家)的觀點(diǎn)。共享的觀點(diǎn)或共享的事務(wù)序列可能是從在兩個(gè)或多個(gè)客戶端(或者客戶端系統(tǒng)或運(yùn)營商)上運(yùn)行的兩個(gè)或多個(gè)應(yīng)用程序感知的觀點(diǎn)。
[0070]在一些實(shí)施例中,事務(wù)序列可以通過一個(gè)圖形,如因果圖或序列圖來表示。因果圖和序列圖包含有關(guān)當(dāng)前和歷史數(shù)據(jù)庫事務(wù)或操作,如從客戶端系統(tǒng)接收到數(shù)據(jù)庫查詢的信
肩、O
[0071]在一些實(shí)施例中,數(shù)據(jù)庫管理系統(tǒng)18維護(hù)客戶端系統(tǒng)25的現(xiàn)關(guān)聯(lián)的事務(wù)序列以及異步地和同時(shí)地協(xié)調(diào)事務(wù)序列之內(nèi)的數(shù)據(jù)庫事務(wù),該事務(wù)序列具有在分布式數(shù)據(jù)庫系統(tǒng)中接收的其它事務(wù)序列中的其他相關(guān)數(shù)據(jù)庫事務(wù)。
[0072]在一些實(shí)施例中,每個(gè)數(shù)據(jù)庫事務(wù)用數(shù)據(jù)庫事務(wù)所依賴的一組假設(shè)操作。如在此所描述的,假設(shè)被斷言所控制,該斷言可以用來代替鎖以允許操作的交錯(cuò)并增加并行性。在一些實(shí)施例中,斷言使用各種機(jī)制執(zhí)行一致性,該機(jī)制例如,例如,多版本同時(shí)控制(MVCC)機(jī)制。如在此所述,同時(shí)控制機(jī)制促進(jìn)在斷言是真實(shí)的過去尋求時(shí)間的能力。這個(gè)過程在此稱為“時(shí)間旅行”,并且被參照圖8進(jìn)行更詳細(xì)地討論。
[0073]在一些實(shí)施例中,數(shù)據(jù)庫20包括含有已提交數(shù)據(jù)庫事務(wù)的全局事務(wù)序列。在一些實(shí)施例中,全局事務(wù)序列跨越一些或全部的在分布式數(shù)據(jù)庫環(huán)境100中的數(shù)據(jù)庫20進(jìn)行復(fù)制。
[0074]圖2示出了根據(jù)一個(gè)實(shí)施例的在分布式數(shù)據(jù)庫環(huán)境200中的示例節(jié)點(diǎn)210的框圖。分布式數(shù)據(jù)庫環(huán)境200可以類似于圖1的分布式數(shù)據(jù)庫環(huán)境100,雖然替代配置是可能的。
[0075]在本例中,節(jié)點(diǎn)210包括與數(shù)據(jù)庫220-D和220-L (分布的和局部的,分別地)以及網(wǎng)絡(luò)250通信的數(shù)據(jù)庫管理系統(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ù)庫管理系統(tǒng)219-L,但只有一個(gè)主分布式數(shù)據(jù)庫系統(tǒng)219-D的存在。在這種情況下,分布式數(shù)據(jù)庫系統(tǒng)219-D控制整個(gè)數(shù)據(jù)庫的交互。
[0076]數(shù)據(jù)庫管理系統(tǒng)218還包括分布式數(shù)據(jù)庫管理系統(tǒng)219-D、局部數(shù)據(jù)庫管理系統(tǒng)
219-L、可選的應(yīng)用程序219-A。分布式數(shù)據(jù)庫管理系統(tǒng)219-D協(xié)調(diào)訪問在各個(gè)節(jié)點(diǎn)的數(shù)據(jù)。分布式數(shù)據(jù)庫管理系統(tǒng)219-D可以執(zhí)行一些或全部的后續(xù)功能:
[0077]1、跟蹤數(shù)據(jù)在分布式數(shù)據(jù)字典中的所在位置。這包括向開發(fā)者和用戶呈現(xiàn)邏輯數(shù)據(jù)庫和架構(gòu)。
[0078]2、確定從其檢索請求的數(shù)據(jù)的位置和在其進(jìn)行處理分布式查詢的每個(gè)部分而無需開發(fā)人員或用戶的任何特殊的操作的位置。
[0079]3、如果有必要,使用局部DBMS轉(zhuǎn)換在一個(gè)節(jié)點(diǎn)的請求到另一個(gè)合適的節(jié)點(diǎn)使用不同的DBMS和數(shù)據(jù)模型轉(zhuǎn)換到另一個(gè)節(jié)點(diǎn),并返回?cái)?shù)據(jù)到該節(jié)點(diǎn)所接受的格式中的請求節(jié)點(diǎn)。
[0080]4、提供數(shù)據(jù)管理功能,如安全性,同時(shí)性和死鎖控制,全局查詢優(yōu)化,以及自動故障記錄和恢復(fù)。
[0081]5、提供貫穿整個(gè)遠(yuǎn)程站點(diǎn)的數(shù)據(jù)備份之間的一致性(例如,通過使用多相提交協(xié)議)。
[0082]6、呈現(xiàn)在物理上被分布的單個(gè)邏輯數(shù)據(jù)庫。數(shù)據(jù)的這一觀點(diǎn)的衍生物是全局主鍵控制,意味著關(guān)于同一業(yè)務(wù)對象的數(shù)據(jù)都與相同主鍵關(guān)聯(lián),而無論數(shù)據(jù)存儲在分布式數(shù)據(jù)庫的何處,以及不同對象被與不同的主鍵相關(guān)聯(lián)。
[0083]7、可擴(kuò)展性??蓴U(kuò)展性是增長、減少規(guī)模,并根據(jù)企業(yè)變革的需要變得更加多樣化的能力。因此,分布式數(shù)據(jù)庫必須是動態(tài)的,并能夠在合理范圍內(nèi)變化,而無需重新設(shè)計(jì)。可擴(kuò)展性也意味著,有簡便的方法添加新的站點(diǎn)(或訂購),并進(jìn)行初始化(例如,使用復(fù)制的數(shù)據(jù))。
[0084]8、跨分布式數(shù)據(jù)庫的節(jié)點(diǎn)對數(shù)據(jù)和存儲程序進(jìn)行復(fù)制。分發(fā)存儲程序的需要被由同樣的原因激活以用于分發(fā)數(shù)據(jù)。
[0085]9、透明地使用剩余的計(jì)算能力以提高數(shù)據(jù)庫處理的性能。這意味著,例如,當(dāng)在不同的時(shí)間提交時(shí),同一個(gè)數(shù)據(jù)庫查詢可以在不同的地點(diǎn)并以不同的方式取決于在查詢提交時(shí)的跨分布式數(shù)據(jù)庫的特定負(fù)載進(jìn)行處理。
[0086]10、允許不同節(jié)點(diǎn)運(yùn)行不同的DBMS。中間件(見第9章)可由分布式DBMS進(jìn)行使用以及各局部DBMS掩蓋查詢語言的差別和局部數(shù)據(jù)的細(xì)微差別。
[0087]11、允許應(yīng)用程序代碼的不同版本位于分布式數(shù)據(jù)庫的不同節(jié)點(diǎn)上。在具有多個(gè)分布式服務(wù)器的大型組織中,每個(gè)服務(wù)器/節(jié)點(diǎn)運(yùn)行軟件的版本相同可能不太現(xiàn)實(shí)。
[0088]在一個(gè)實(shí)施例中,每個(gè)節(jié)點(diǎn)包括局部數(shù)據(jù)庫系統(tǒng)219-L和分布式數(shù)據(jù)庫管理系統(tǒng)219-D。在圖2的例子中,每個(gè)站點(diǎn)都有局部DBMS219-L和相關(guān)的分布式數(shù)據(jù)字典/目錄(DD/D),局部DBMS219-L管理存儲在站點(diǎn)處的局部數(shù)據(jù)庫220-L和分布式DBMS數(shù)據(jù)庫
220-D的副本。分布式DD/D包含在網(wǎng)絡(luò)中的所有數(shù)據(jù)的位置,以及數(shù)據(jù)定義。
[0089]由用戶或應(yīng)用程序請求的數(shù)據(jù)首先由分布式數(shù)據(jù)庫管理系統(tǒng)219-D進(jìn)行處理,其決定事務(wù)是局部的或全局的。局部事務(wù)是要求的數(shù)據(jù)被完全在局部站點(diǎn)存儲在其中的事務(wù)。全局事務(wù)要求參考在一個(gè)或多個(gè)非局部站點(diǎn)的數(shù)據(jù)以滿足請求。對于局部事務(wù),分布式數(shù)據(jù)庫管理系統(tǒng)219-D將請求傳遞給局部DBMS219-L。對于全局事務(wù),分布式數(shù)據(jù)庫管理系統(tǒng)219-D必要時(shí)將請求路由到其他站點(diǎn)。分布式數(shù)據(jù)庫管理系統(tǒng)在參與站點(diǎn)根據(jù)需要交換消息以協(xié)調(diào)事務(wù)的處理直到它被完成(或中止,如果需要的話)。
[0090]圖3示出了根據(jù)一個(gè)實(shí)施例的用于從分層的觀點(diǎn)維護(hù)分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)一致性的數(shù)據(jù)庫管理系統(tǒng)350的部件的框圖。數(shù)據(jù)庫管理系統(tǒng)350可以是圖1的數(shù)據(jù)庫管理系統(tǒng)18,雖然替代配置是可能的。
[0091]數(shù)據(jù)庫管理系統(tǒng)350包括網(wǎng)絡(luò)接口 302、通信模塊305、數(shù)據(jù)庫事務(wù)接收模塊310、數(shù)據(jù)庫事務(wù)歷史模塊315、因果圖生成模塊320、斷言識別/提取模塊325、共享事務(wù)序列模塊330,以及全局事務(wù)序列模塊340。在一個(gè)實(shí)施例中,數(shù)據(jù)庫管理系統(tǒng)350也被接合到數(shù)據(jù)庫345。數(shù)據(jù)庫345可以是圖1的數(shù)據(jù)庫20,雖然替代配置是可能的。在部偏離本公開的新穎領(lǐng)域的更多或更少的模塊可以被包括。此外,圖3的示例中的每個(gè)模塊可以包括用硬件和/或軟件的任何組合來實(shí)現(xiàn)的任何數(shù)量的子模塊和/或系統(tǒng)和/或子模塊和/或系統(tǒng)的組合。
[0092]數(shù)據(jù)庫管理系統(tǒng)350,雖然示出為由分布式組件(物理分布和/或功能上分布)組成,可以被實(shí)現(xiàn)為集體元件。在一些實(shí)施例中,一些或所有的模塊,和/或由每個(gè)模塊所代表的功能可以以任何方便的或已知的方式進(jìn)行組合。此外,由模塊所代表的功能可以部分地或全部地在硬件,軟件或硬件和軟件的組合中被單獨(dú)或以任何組合來實(shí)施。
[0093]在圖3的例子中,網(wǎng)絡(luò)接口 302可以是網(wǎng)絡(luò)設(shè)備,其使數(shù)據(jù)庫管理系統(tǒng)350用實(shí)體介導(dǎo)在網(wǎng)絡(luò)中數(shù)據(jù),該實(shí)體在數(shù)據(jù)庫管理系統(tǒng)350的外部,通過任何已知的和/或合適的由主機(jī)和外部實(shí)體支持的通信協(xié)議。數(shù)據(jù)庫管理系統(tǒng)350可以包括一個(gè)或多個(gè)網(wǎng)絡(luò)適配器卡、無線網(wǎng)絡(luò)接口卡、路由器、接入點(diǎn)、無線路由器、交換機(jī)、多層交換機(jī)、協(xié)議轉(zhuǎn)換器、網(wǎng)關(guān)、網(wǎng)橋、網(wǎng)橋路由器、集線器、數(shù)字媒體接收器和/或中繼器。
[0094]在數(shù)據(jù)庫管理系統(tǒng)350的一個(gè)實(shí)施例包括通信模塊305。通信模塊305可以是能夠識別、檢測、跟蹤、管理、接收、記錄和/或處理數(shù)據(jù)訪問請求的軟件代理和/或硬件模塊的任意組合。通信模塊305,在操作的時(shí)候,能夠與網(wǎng)絡(luò)接口 302進(jìn)行通信以識別、檢測、跟蹤、管理、接收、記錄和/或處理數(shù)據(jù)訪問請求,該數(shù)據(jù)訪問請求包括但不限于來自分布式數(shù)據(jù)庫系統(tǒng)中的客戶端系統(tǒng)和/或其他節(jié)點(diǎn)的數(shù)據(jù)庫查詢和/或數(shù)據(jù)庫事務(wù)從。
[0095]數(shù)據(jù)庫管理系統(tǒng)350的一個(gè)實(shí)施例包括數(shù)據(jù)庫事務(wù)接收模塊310。數(shù)據(jù)庫事務(wù)接收模塊310可以是能夠從客戶端設(shè)備和其它節(jié)點(diǎn)接收和處理數(shù)據(jù)請求的軟件代理和/或硬件組件的任何組合。例如,數(shù)據(jù)庫事務(wù)接收模塊310被配置為接收和處理來自客戶端設(shè)備數(shù)據(jù)庫查詢和來自系統(tǒng)中的其他節(jié)點(diǎn)的其他數(shù)據(jù)請求。數(shù)據(jù)庫事務(wù)接收模塊310可接著分害I]、路由,和/或以其它方式處理該請求和/或標(biāo)識具有數(shù)據(jù)請求或查詢的數(shù)據(jù)庫事務(wù)。
[0096]數(shù)據(jù)庫管理系統(tǒng)350的一個(gè)實(shí)施例包括數(shù)據(jù)庫事務(wù)歷史模塊315。數(shù)據(jù)庫事務(wù)歷史模塊315可以是能夠跟蹤和存儲歷史事務(wù)的軟件代理和/或硬件組件的任何組合。例如,歷史可能包括事務(wù)順序、依賴的假設(shè)/斷言等。有利的是,架構(gòu)并不需要包括歷史,因?yàn)閿?shù)據(jù)庫跟蹤該信息。
[0097]數(shù)據(jù)庫管理系統(tǒng)350的一個(gè)實(shí)施例包括因果關(guān)系圖形生成模塊320。因果關(guān)系圖形生成模塊320可以是能夠與事務(wù)歷史模塊315交互以為事務(wù)序列中的或由事務(wù)序列指示的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)生成因果關(guān)系圖的軟件代理和/或硬件組件的任意組合。例如,因果圖生成模塊320可以基于接收到的數(shù)據(jù)庫查詢識別事務(wù)序列。如所討論的,數(shù)據(jù)庫查詢指示一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)。因果圖生成模塊320可以使用數(shù)據(jù)庫事務(wù)信息與數(shù)據(jù)庫事務(wù)歷史模塊315進(jìn)行交互,以為了識別當(dāng)前數(shù)據(jù)庫事務(wù)所依賴的歷史事務(wù)以及基于歷史信息建立因果關(guān)系圖。
[0098]在一個(gè)實(shí)施例中,因果關(guān)系圖形生成模塊320生成用于指示每個(gè)數(shù)據(jù)庫事務(wù)所依賴的一個(gè)或多個(gè)斷言的因果關(guān)系圖。例如,在一些實(shí)施例中,同時(shí)控制機(jī)制通過在事實(shí)之后檢測無效使用來控制同時(shí)性。這些同時(shí)控制可分割事務(wù)的存在為讀取、驗(yàn)證和發(fā)布階段。在讀取階段,該機(jī)制從一個(gè)或多個(gè)關(guān)于事務(wù)所依賴的假設(shè)的潛在價(jià)值的分布式數(shù)據(jù)庫資源獲取假設(shè),而不考慮那些假設(shè)的沖突或有效性。該事務(wù)序列本身和/或數(shù)據(jù)庫事務(wù)歷史模塊可能表明一組資源和/或依賴于事務(wù)序列中的每個(gè)數(shù)據(jù)庫事務(wù)的假設(shè)。在一些實(shí)施例中,斷言可以是,例如,數(shù)據(jù)庫鍵值;雖然替代配置是可能的。
[0099]數(shù)據(jù)庫管理系統(tǒng)350的一個(gè)實(shí)施例包括斷言識別/提取模塊325。斷言識別/提取模塊325可以是能夠識別和/或提取與一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)相關(guān)聯(lián)的斷言的軟件代理和/或硬件組件的任何組合。例如,斷言識別/提取模塊325可以處理數(shù)據(jù)庫事務(wù)、事務(wù)序列,和/或數(shù)據(jù)庫查詢以識別和/或提取數(shù)據(jù)庫事務(wù)所依賴的潛在斷言。
[0100]在一個(gè)實(shí)施例中,每個(gè)數(shù)據(jù)庫事務(wù)用一組數(shù)據(jù)庫事務(wù)所依賴的假設(shè)進(jìn)行操作。如本文中所述,假設(shè)被用斷言進(jìn)行控制,斷言可以用來代替鎖,以允許操作的交錯(cuò)和增加并行性。斷言可以使用各種機(jī)制,例如,如本文中所描述的多版本同時(shí)控制(MVCC)機(jī)制執(zhí)行一致性。
[0101]數(shù)據(jù)庫管理系統(tǒng)350的一個(gè)實(shí)施例包括共享事務(wù)序列模塊330。共享事務(wù)序列模塊330可以是能夠維護(hù)在由數(shù)據(jù)庫管理系統(tǒng)接收的多個(gè)事務(wù)序列的子集之間的事務(wù)一致性的軟件代理和/或硬件組件的任意組合。在該示例中,共享事務(wù)序列模塊330包括選擇引擎332、生成引擎334、共識引擎336和調(diào)節(jié)引擎338。
[0102]在一個(gè)實(shí)施例中,選擇引擎332被配置為選擇多個(gè)事務(wù)序列的子集,要為其生成中間共享事務(wù)序列以連續(xù)地和異步地維護(hù)事務(wù)一致性。選擇引擎332可以基于任意數(shù)量的因素選擇多個(gè)事務(wù)序列的子集。例如,基于啟動一個(gè)或多個(gè)事務(wù)序列的應(yīng)用程序,多個(gè)事務(wù)序列的子集的一個(gè)或多個(gè)事務(wù)序列可以被選擇。類似地,基于與一個(gè)或多個(gè)事務(wù)序列相關(guān)聯(lián)的一個(gè)或多個(gè)客戶端的地理位置,多個(gè)事務(wù)序列的子集的一個(gè)或多個(gè)事務(wù)序列可以被選擇。同樣地,基于與一個(gè)或多個(gè)事務(wù)序列相關(guān)聯(lián)的一個(gè)或多個(gè)的多個(gè)客戶端的屬性,多個(gè)事務(wù)序列的子集的一個(gè)或多個(gè)事務(wù)序列可以被選擇。
[0103]可替換地或另外地,基于應(yīng)用程序的用戶或應(yīng)用程序本身之間的關(guān)系或關(guān)聯(lián),多個(gè)事務(wù)序列的子集的一個(gè)或多個(gè)事務(wù)序列可以被選擇。例如,每個(gè)用戶可以具有與在客戶端系統(tǒng)上運(yùn)行的應(yīng)用程序相關(guān)聯(lián)的用戶配置文件。多個(gè)事務(wù)序列的子集可以基于用戶配置文件之間的關(guān)系被選擇。另外,在一些實(shí)施例中,配置文件之間的關(guān)系可基于經(jīng)由應(yīng)用程序的用戶配置文件之間的相互作用。例如,如果線上互動游戲的兩個(gè)玩家正參與在聯(lián)盟中且第三用戶未參與在聯(lián)盟中,則與聯(lián)盟中的這兩個(gè)用戶相關(guān)聯(lián)的事務(wù)序列可以被選則。
[0104]可替代地或另外地,多個(gè)事務(wù)序列的子集的一個(gè)或多個(gè)事務(wù)序列可以基于應(yīng)用程序本身之間的關(guān)系或關(guān)聯(lián)被選擇。一個(gè)或多個(gè)事務(wù)序列可以基于用戶或玩家所使用的應(yīng)用程序的類型被選擇。例如,如果兩個(gè)用戶參與在網(wǎng)上互動游戲中而第三用戶沒有參與相同在線互動游戲或第三用戶參與不同的互動游戲,那么與參與互動游戲的兩個(gè)用戶相關(guān)聯(lián)的事務(wù)序列可以被選擇用于多個(gè)事務(wù)序列的子集??蛇x或另外地,多個(gè)事務(wù)序列的子集的一個(gè)或多個(gè)事務(wù)序列可以基于在多用戶在線互動游戲的社會等級被選擇。
[0105]在一個(gè)實(shí)施例中,生成引擎334被配置為生成共享事務(wù)序列,以連續(xù)地和異步地維護(hù)事務(wù)一致性。
[0106]在一個(gè)實(shí)施例中,共識引擎336被配置為獲得關(guān)于每個(gè)斷言的有效性的多個(gè)數(shù)據(jù)庫資源之間的共識。例如,本文描述的系統(tǒng)和方法可以根據(jù)該CAP定理,也被稱為布魯爾定理進(jìn)行操作。CAP理論指出,分布式計(jì)算機(jī)系統(tǒng)同時(shí)保證一致性、可用性和分區(qū)容忍性是不可能的。
[0107]一致性保證了分布式數(shù)據(jù)庫的所有節(jié)點(diǎn)在同一時(shí)間看到同一數(shù)據(jù)。可用性保證每個(gè)請求收到有關(guān)請求是否成功或失敗的響應(yīng)。分區(qū)容忍性保證系統(tǒng)繼續(xù)操作,盡管任意消息丟失。根據(jù)CAP定理,分布式系統(tǒng)可以同時(shí)滿足以上保證的任意兩個(gè),但不是所有的三個(gè)保證。
[0108]數(shù)據(jù)庫系統(tǒng)上的某些限制維護(hù)分布式可擴(kuò)展的狀態(tài),由于,至少部分的,不可靠的處理器。一個(gè)解決方案是允許共識。共識是商定一組參與者(或資源)之間的單個(gè)結(jié)果的過程。共識協(xié)議是分布式計(jì)算的狀態(tài)機(jī)方法的基礎(chǔ)。狀態(tài)機(jī)方法是用于轉(zhuǎn)換算法為容錯(cuò)的,分布式實(shí)施的技術(shù)。每一個(gè)潛在的故障必須有一種方法來處理,以及特設(shè)技術(shù)常常會留下未解決故障的重大情況。
[0109]在一些實(shí)施例中,在此描述的系統(tǒng)和方法使用共識協(xié)議,如,例如,Paxos算法。Paxos算法描述了用于解決不可靠處理器的網(wǎng)絡(luò)中的共識的協(xié)議。當(dāng)參加者或他們的通信媒介體驗(yàn)故障時(shí),這個(gè)問題變得困難。Paxos方法提供了一種技術(shù)以確保所有的情況下被安全地處理。然而,這些情況可能仍然需要被單獨(dú)編碼。
[0110]Paxos協(xié)議定義了許多角色,并通過他們在協(xié)議中的角色(客戶端、接受者、申請者、學(xué)習(xí)者、和領(lǐng)導(dǎo)者)描述了過程的動作。在典型的實(shí)施例中,單個(gè)處理器可以同時(shí)扮演一個(gè)或多個(gè)角色。這并不影響協(xié)議的正確性,它通常聯(lián)合角色以改善在協(xié)議中的消息的延時(shí)和/或數(shù)量。
[0111]Paxos協(xié)議包括處理器數(shù)量之間的權(quán)衡的頻譜,在學(xué)習(xí)約定價(jià)值之前消息延遲的數(shù)量,個(gè)體參與者的活動水平,發(fā)送的消息的數(shù)量和故障的類型。然而,沒有容錯(cuò)共識協(xié)議可以保證進(jìn)展。
[0112]客戶端:客戶端發(fā)出請求至分布式系統(tǒng),并等待響應(yīng)。例如,在分布式文件服務(wù)器中的文件上的寫入請求。接受者:接受者充當(dāng)協(xié)議的容錯(cuò)“記憶”的角色。接受者被集合到稱為Quorums的組。發(fā)送到接受者的任何消息必須被發(fā)送到接受者的Quorums,并且從接受者接收到的任何消息被忽略,除非副本是從Quorums中的每個(gè)接受者收到的。申請者:申請者倡導(dǎo)客戶端請求,試圖說服接受者同意,并充當(dāng)調(diào)節(jié)器的角色以當(dāng)發(fā)生沖突時(shí)向前推進(jìn)協(xié)議。學(xué)習(xí)者:學(xué)習(xí)者充當(dāng)協(xié)議的復(fù)制因子的角色。一旦客戶端請求已由接受者同意,學(xué)習(xí)者可采取行動(即,執(zhí)行請求同時(shí)送響應(yīng)至客戶端)。為了提高處理的可用性,額外的學(xué)習(xí)者可以被加入。領(lǐng)導(dǎo)者:領(lǐng)導(dǎo)者是被要求取得進(jìn)步的杰出的申請者。許多過程可能會認(rèn)為他們是領(lǐng)導(dǎo)者,但協(xié)議只保證進(jìn)度,如果他們中的一個(gè)被最終選擇。如果兩個(gè)過程相信他們是領(lǐng)導(dǎo)者,可能通過不斷提出沖突更新來搪塞協(xié)議。無論如何安全性能被保存。
[0113]在一個(gè)實(shí)施例中,調(diào)節(jié)引擎338被配置為通過連續(xù)和異步地協(xié)調(diào)多個(gè)事務(wù)序列的子集到中間共享事務(wù)序列來維護(hù)生成的中間共享事務(wù)序列。例如,調(diào)節(jié)引擎338可以在協(xié)調(diào)和/或以其他方式提交數(shù)據(jù)庫事務(wù)到全局事務(wù)序列之前,協(xié)調(diào)被包括在選擇的多個(gè)數(shù)據(jù)庫事務(wù)序列內(nèi)的數(shù)據(jù)庫事務(wù)。數(shù)據(jù)庫事務(wù)可以根據(jù)潛在的斷言被協(xié)調(diào)。即,斷言可以用來代替鎖,以允許數(shù)據(jù)庫事務(wù)的交錯(cuò)和增加同時(shí)性。
[0114]數(shù)據(jù)庫管理系統(tǒng)350的一個(gè)實(shí)施例包括全局事務(wù)序列模塊340。全局事務(wù)序列模塊340可以是能夠維護(hù)、協(xié)調(diào),并提交數(shù)據(jù)庫事務(wù)到全局事務(wù)序列的軟件代理和/或硬件組件的任意組合。全局事務(wù)序列模塊340可以維護(hù)、協(xié)調(diào),并提交來自一個(gè)或多個(gè)的生成的共享序列和/或單個(gè)的事務(wù)序列(例如,來自私人序列)的數(shù)據(jù)庫事務(wù)。在這個(gè)例子中,全局事務(wù)序列模塊340包括共識引擎342、調(diào)節(jié)引擎344和提交引擎346。[0115]在一個(gè)實(shí)施例中,共識引擎342被配置為實(shí)現(xiàn)在分布式數(shù)據(jù)庫系統(tǒng)的多個(gè)系統(tǒng)(例如,節(jié)點(diǎn)或資源)之間的共識。共識引擎342是類似于共識引擎336,但是,共識引擎342進(jìn)行操作以實(shí)現(xiàn)被包括在多個(gè)選擇的數(shù)據(jù)庫事務(wù)序列的子集內(nèi)的和不被包括在那些序列內(nèi)的所有的多個(gè)數(shù)據(jù)庫事務(wù)之間的共識。
[0116]在一個(gè)實(shí)施方案中,調(diào)節(jié)引擎344被配置為協(xié)調(diào)多個(gè)數(shù)據(jù)庫事務(wù)。調(diào)節(jié)引擎344可以協(xié)調(diào)被包括在多個(gè)選擇的數(shù)據(jù)庫事務(wù)序列的子集內(nèi)的和不被包括在那些序列內(nèi)的數(shù)據(jù)庫。
[0117]在一個(gè)實(shí)施例中,提交引擎346被配置為提交數(shù)據(jù)庫事務(wù)至全局事務(wù)序列。有利的是,來自一個(gè)或多個(gè)中間共享事務(wù)序列的數(shù)據(jù)庫事務(wù)已經(jīng)似乎被提交給用戶,盡管這些事務(wù)可能沒有真正被提交直到提交引擎346執(zhí)行常用操作。為確保實(shí)時(shí)、分布式更新操作的數(shù)據(jù)完整性,合作事務(wù)管理器可以執(zhí)行提交協(xié)議。提交協(xié)議是一個(gè)良好定義的過程(包括信息的交換),以確保全局事務(wù)要么是在每個(gè)站點(diǎn)被成功完成,要么被中止。
[0118]最廣泛使用的協(xié)議被稱為兩階段提交。兩階段提交協(xié)議保證了在多個(gè)站點(diǎn)同時(shí)事務(wù)就好像他們在所有網(wǎng)站使用同一串行順序被執(zhí)行一樣的被處理。兩階段提交分兩期進(jìn)行。首先,發(fā)起全局事務(wù)的站點(diǎn)或整體協(xié)調(diào)站點(diǎn)發(fā)送請求到每一個(gè)將處理事務(wù)的某一部分的站點(diǎn)。每個(gè)站點(diǎn)處理該子事務(wù)(如果可能的話),但不會立即提交(或存儲)結(jié)果到局部數(shù)據(jù)庫。相反,結(jié)果被存儲在臨時(shí)文件中。此外,每個(gè)站點(diǎn)鎖定(或禁止他人更新)其正在被更新數(shù)據(jù)庫的部分,當(dāng)它已經(jīng)完成了它的子事務(wù)時(shí),并通知始發(fā)站點(diǎn)。當(dāng)所有的站點(diǎn)都回應(yīng)時(shí),始發(fā)站點(diǎn)現(xiàn)在啟動兩階段提交協(xié)議。
[0119]在準(zhǔn)備階段,消息被廣播到每個(gè)參與站點(diǎn)(或節(jié)點(diǎn)),詢問站點(diǎn)是否愿意在該站點(diǎn)上提交其部分的事務(wù)。每個(gè)站點(diǎn)都將返回“0K”或“不0K”的消息?!?K”表示遠(yuǎn)程站點(diǎn)承諾允許發(fā)起請求以在遠(yuǎn)程數(shù)據(jù)庫管理事務(wù)。接下來,在提交階段,始發(fā)站點(diǎn)收集來自所有字典的消息。如果一切都是“0K”,它會廣播一個(gè)消息給所有的站點(diǎn)以提交在每個(gè)站點(diǎn)處理的事務(wù)的一部分。但是,如果一個(gè)或多個(gè)響應(yīng)是“不0K”,它會廣播一個(gè)消息給所有站點(diǎn)以中止事務(wù)。
[0120]無人過問的事務(wù)可以通過超時(shí)或輪詢來識別。以超時(shí)(指定的時(shí)間段沒有提交確認(rèn)),忙碌的或故障的站點(diǎn)之間的區(qū)分是不可能的。以網(wǎng)絡(luò)負(fù)載和處理時(shí)間而言輪詢是昂貴的。用同步分布式數(shù)據(jù)的兩階段提交策略,提交事務(wù)比如果始發(fā)站點(diǎn)能夠單獨(dú)工作的速度慢。
[0121 ] 數(shù)據(jù)庫管理系統(tǒng)350的實(shí)施例包括數(shù)據(jù)庫345。數(shù)據(jù)庫345可以存儲任何數(shù)據(jù)項(xiàng)目/條目,該數(shù)據(jù)項(xiàng)目/條目包括,但不限于,軟件,描述性數(shù)據(jù),圖像,系統(tǒng)信息,驅(qū)動程序,和/或由數(shù)據(jù)庫管理系統(tǒng)和/或任何其它操作系統(tǒng)中使用的任何其他數(shù)據(jù)項(xiàng)。數(shù)據(jù)庫345可以被接合到數(shù)據(jù)庫管理系統(tǒng)350。數(shù)據(jù)庫345可以由數(shù)據(jù)庫管理系統(tǒng)(DBMS)進(jìn)行管理,DBMS包括但不限于,Oracle、DB2、Microsoft Access、Microsoft SQL Server 和 PostgreSQL、MySQL和FileMaker,等等。用戶數(shù)據(jù)儲存庫128可以通過面向?qū)ο蠹夹g(shù)和/或通過文本文件來實(shí)現(xiàn),并且可以通過分布式數(shù)據(jù)庫管理系統(tǒng)、面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)(OODBMS)(例如,概念庫、快速數(shù)據(jù)庫主內(nèi)存數(shù)據(jù)庫管理系統(tǒng)、JDO儀器、對象數(shù)據(jù)庫等)、對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS)(例如,Informix,OpenLink大師、VMDS等)、文件系統(tǒng),和/或任何其它方便的或已知的數(shù)據(jù)庫管理程序包進(jìn)行管理。[0122]圖4描繪了根據(jù)一個(gè)實(shí)施例的說明用于分層地維護(hù)在分布式數(shù)據(jù)庫中的事務(wù)一致性的示例過程400的流程圖。一個(gè)或多個(gè)數(shù)據(jù)庫管理系統(tǒng),諸如,圖1的數(shù)據(jù)庫管理系統(tǒng)18,除其他功能之外,從分層的觀點(diǎn)維護(hù)和/或協(xié)調(diào)在分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)一致性。
[0123]首先,數(shù)據(jù)庫查詢被在分布式數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫管理系統(tǒng)接收。在操作中,數(shù)據(jù)庫查詢可以由在分布式數(shù)據(jù)庫系統(tǒng)中的任意數(shù)量的數(shù)據(jù)庫管理系統(tǒng)接收,但是,單個(gè)的數(shù)據(jù)庫管理系統(tǒng)是相對于圖4的示例進(jìn)行討論。在識別操作410中,數(shù)據(jù)庫管理系統(tǒng)基于多個(gè)數(shù)據(jù)庫查詢識別多個(gè)事務(wù)序列。在此操作中,每個(gè)數(shù)據(jù)庫查詢指示由在分布式數(shù)據(jù)庫中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用程序啟動的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)。
[0124]在一些實(shí)施方案中,每個(gè)事務(wù)序列可能是一個(gè)連續(xù)的獨(dú)立序列或線性時(shí)間模型,其從個(gè)人的觀點(diǎn)或客戶端上運(yùn)行的一個(gè)或多個(gè)應(yīng)用程序的觀點(diǎn)指示數(shù)據(jù)庫事務(wù)。個(gè)人的觀點(diǎn)可能是,例如,客戶端系統(tǒng)或客戶端系統(tǒng)的操作者的觀點(diǎn)。
[0125]在一些實(shí)施例中,事務(wù)序列可以通過一個(gè)圖形,如因果圖或序列圖來表示。因果圖和序列圖包含有關(guān)當(dāng)前和歷史數(shù)據(jù)庫事務(wù)或操作,如從客戶端系統(tǒng)接收到數(shù)據(jù)庫查詢的信
肩、O
[0126]在一些實(shí)施方案中,序列圖算法(SGAs)通過計(jì)算等效串行順序來控制暫時(shí)重疊事務(wù)的同時(shí)操作。SGAs視圖“排解”由多個(gè)事務(wù)的操作的令人費(fèi)解的序列為單一的內(nèi)聚的執(zhí)行線程。SGAs通過創(chuàng)建序列圖運(yùn)行。圖中的節(jié)點(diǎn)對應(yīng)于系統(tǒng)中的事務(wù)。圖的弧對應(yīng)等效串行順序。由于弧被添加到圖形,算法尋找周期。如果沒有周期,則事務(wù)具有一個(gè)等效串行順序以及一致性得到保證。但是,如果發(fā)現(xiàn)一個(gè)序列周期,則一致性將被放棄,如果在周期中的所有事務(wù)被允許提交。在這種情況下,SGA將通過中止形成周期的一個(gè)或多個(gè)事務(wù)來恢復(fù)一致性。
[0127]在一些實(shí)施例中,每個(gè)因果圖表示客戶端系統(tǒng)的觀點(diǎn),因此,事務(wù)序列指示從客戶端發(fā)起的所有事務(wù)。在其它實(shí)施例中,每個(gè)客戶端系統(tǒng)可以具有任意數(shù)目的相關(guān)聯(lián)的事務(wù)序列。例如,因果圖可以表示為從在線交互動游戲的單個(gè)玩家感知到的數(shù)據(jù)庫事務(wù)。因此,個(gè)別事務(wù)順序通過臨時(shí)(在讀取階段)考慮到僅僅那些有關(guān)個(gè)別事務(wù)序列的數(shù)據(jù)庫事務(wù)來提供最終重疊數(shù)據(jù)庫事務(wù)的能力。
[0128]在選擇操作420中,數(shù)據(jù)庫管理系統(tǒng)選擇多個(gè)事務(wù)序列的子集。在一個(gè)實(shí)施例中,多個(gè)事務(wù)序列的子集的選擇可被選擇或以其他方式由,例如,應(yīng)用程序的程序員進(jìn)行選擇,以為了優(yōu)化用戶感知的性能。在一些實(shí)施例中,子集可以被任意地選擇或基于地理位置選擇。在其它實(shí)施例中,該子集可被選擇以指示一組觀點(diǎn)或感知。例如,連續(xù)的獨(dú)立序列的子集,可以根據(jù)選擇在多用戶在線互動游戲中的社會等級被選擇。最后,在子集中的獨(dú)立序列的選擇影響信息傳播通過分布式數(shù)據(jù)庫的方向和速率。
[0129]在生成操作430中,數(shù)據(jù)庫管理系統(tǒng)生成中間共享事務(wù)序列以連續(xù)地維護(hù)在多個(gè)事務(wù)序列的子集之間的事務(wù)一致性。在中間共享事務(wù)序列中維護(hù)的中間共享事務(wù)隨后用于通過被跨多個(gè)分布式數(shù)據(jù)庫系統(tǒng)資源復(fù)制的全局事務(wù)序列實(shí)現(xiàn)全局事務(wù)的一致性。
[0130]當(dāng)中間共享事務(wù)序列的生成時(shí),在維護(hù)操作440中,數(shù)據(jù)庫管理系統(tǒng)維護(hù)中間共享事務(wù)序列。在這個(gè)例子中,維護(hù)中間共享事務(wù)序列包含異步協(xié)調(diào)多個(gè)事務(wù)序列的子集到中間共享事務(wù)序列。有利的是,未提交的數(shù)據(jù)事務(wù)的中間調(diào)節(jié)從客戶端的角度優(yōu)化了性能,因?yàn)樵谡{(diào)節(jié)期間(即,在驗(yàn)證過程中)排除任何不可解決的矛盾,從客戶端的角度來看,事務(wù)似乎被提交至跨分布式數(shù)據(jù)庫系統(tǒng)中復(fù)制的全局事務(wù)序列。
[0131]最后,在提交操作450中,數(shù)據(jù)庫管理系統(tǒng)提交在連續(xù)序列共享序列中的之前的未提交的數(shù)據(jù)事務(wù)到全局事務(wù)序列。
[0132]圖5A和5B描繪了示出在分布式數(shù)據(jù)庫系統(tǒng)中,如,例如,圖1的分布式數(shù)據(jù)庫100的中間調(diào)節(jié)流程的例子。更具體地,圖5A和5B示出了根據(jù)一個(gè)實(shí)施例事務(wù)是如何異步地和同時(shí)地被協(xié)調(diào)(和/或被提交)到全局事務(wù)序列。圖5A和5B的例子通常參照在線游戲環(huán)境進(jìn)步討論。但是,可以理解,網(wǎng)絡(luò)游戲環(huán)境可以是任何在生成數(shù)據(jù)庫事務(wù)的客戶端設(shè)備上運(yùn)行的應(yīng)用程序。
[0133]首先參考圖5A,其描繪了示例性過程510,過程510說明了無需中級共享事務(wù)序列的用于調(diào)節(jié)的典型的最佳地同時(shí)控機(jī)制。如上所討論的,斷言可以用來代替鎖,以允許操作的交錯(cuò)和增加同時(shí)性。在一些實(shí)施例中,過程510利用潛在斷言來交錯(cuò)從三個(gè)事務(wù)序列接收到的事務(wù)。
[0134]更具體地,示例性過程510根據(jù)一個(gè)實(shí)施例示出了代表由在三個(gè)客戶端系統(tǒng)中的每一個(gè)上運(yùn)行的應(yīng)用程序啟動的數(shù)據(jù)庫事務(wù)的三個(gè)事務(wù)序列的協(xié)調(diào)過程。在這個(gè)例子中,在三個(gè)事務(wù)序列的每一個(gè)中的事務(wù)可以由在線互動游戲或應(yīng)用的用戶或玩家的操作來觸發(fā);雖然事務(wù)可能以其它方式在客戶端被觸發(fā)。
[0135]例如,如上面所討論的,在一些實(shí)施例中,樂觀機(jī)制通過在事實(shí)之后檢測無效使用控制同時(shí)性,通過將事務(wù)的存在成為讀取、驗(yàn)證和發(fā)布階段。在讀取階段,為玩家1、2和3的事務(wù)序列獲取假設(shè)或斷言,而不考慮沖突或有效性。數(shù)據(jù)庫管理系統(tǒng)和/或事務(wù)序列本身維護(hù)他們使用的一組斷言的記錄以及他們改變的一組斷言。在一些實(shí)施例中,斷言可以是,例如,數(shù)據(jù)庫鍵值。
[0136]如上所討論的,數(shù)據(jù)庫事務(wù)可以包括任意數(shù)量的斷言。在驗(yàn)證階段,斷言被檢查以確定斷言的當(dāng)前狀態(tài)是否已經(jīng)改變。在典型的分布式數(shù)據(jù)庫系統(tǒng)中,如果這個(gè)斷言已經(jīng)改變,那么數(shù)據(jù)庫事務(wù)依賴的假設(shè)或斷言是錯(cuò)誤的,系統(tǒng)中止事務(wù)。然而,在圖1的例子。如圖5A所示,斷言使用各種機(jī)制,例如,多版本同時(shí)控制(MVCC)機(jī)制執(zhí)行一致性。因此,如本文所公開的,如果數(shù)據(jù)庫事務(wù)依賴的假設(shè)或斷言是錯(cuò)誤的,那么在數(shù)據(jù)庫管理系統(tǒng)的同時(shí)控制機(jī)制,有利于促進(jìn)在過去期間內(nèi)尋求時(shí)間的能力,在過去中的說法是真實(shí)。這個(gè)過程是在本文中稱為“時(shí)間旅行”。
[0137]—旦斷言驗(yàn)證,該系統(tǒng)發(fā)布的數(shù)據(jù)庫事務(wù),在提交(或發(fā)布)階段提交事務(wù)的更改。
[0138]現(xiàn)在參照圖5B,它根據(jù)一個(gè)實(shí)施例描繪了如本文中所描述的示例性中間調(diào)節(jié)過程520。
[0139]在此示例中,與在線互動游戲的玩家相關(guān)聯(lián)的客戶端系統(tǒng)上啟動的數(shù)據(jù)庫事務(wù)是從多個(gè)特定觀點(diǎn)(即,玩家I和2)到中間共享觀點(diǎn)被異步地調(diào)節(jié)。中間調(diào)節(jié)過程異步地和連續(xù)地在與玩家I和2相關(guān)的事務(wù)序列之間被調(diào)節(jié)。在一些實(shí)施例中,中間共享事務(wù)序列然后通過其關(guān)聯(lián)的事務(wù)序列以異步地和連續(xù)地使用,例如,該游戲的其他玩家(例如,玩家3)進(jìn)行調(diào)節(jié)。數(shù)據(jù)項(xiàng)或數(shù)據(jù)庫鍵的更新或更改然后被提交至全局事務(wù)序列以用于跨分布式數(shù)據(jù)庫系統(tǒng)的復(fù)制。有利的是,共享觀點(diǎn)或中間事務(wù)序列是從玩家I和2的觀點(diǎn)被相對快速地調(diào)節(jié)(例如,增加的響應(yīng)時(shí)間)。增加的響應(yīng)時(shí)間可提供玩家I和2更好的游戲體驗(yàn)。[0140]圖6A和6B根據(jù)一個(gè)實(shí)施例描繪了事務(wù)序列,該事務(wù)序列說明了在分布式數(shù)據(jù)庫系統(tǒng)中的示例性調(diào)節(jié)過程610、620。更具體地,中間調(diào)節(jié)過程610和620示出了分別參照圖5A和圖5B討論的示例性事務(wù)序列。
[0141]首先參考圖6A,根據(jù)一個(gè)實(shí)施例,其不使用中間共享事務(wù)序列示出了事務(wù)序列610-1,610-2以及610-3的調(diào)節(jié)。事務(wù)序列610-1、610-2、610_3包括分別來自圖5A的相關(guān)聯(lián)的玩家1、2、3的數(shù)據(jù)庫事務(wù)。如上面所討論的,事務(wù)序列依賴于潛在斷言必須被驗(yàn)證,以為了協(xié)調(diào)并最終提交更改到全局事務(wù)序列650。
[0142]事務(wù)序列610-1、610_2以及610_3,每個(gè)示出了客戶端系統(tǒng)及配置客戶端系統(tǒng)的用戶(或應(yīng)用程序)觀點(diǎn)。例如,事務(wù)序列610-1、610-2、610-3可以示出分別從玩家1、2和3收到數(shù)據(jù)庫事務(wù)的線性時(shí)間模型。在此示例中,數(shù)據(jù)庫事務(wù)C、D、E和F被示出為包括在事務(wù)順序610-1、610-2以及610-3之內(nèi)。相關(guān)的數(shù)據(jù)庫事務(wù)具有相應(yīng)標(biāo)記。例如,與事務(wù)序列610-1相關(guān)聯(lián)的數(shù)據(jù)庫事務(wù)被標(biāo)記為Cl-Fl,與事務(wù)序列610-2相關(guān)的數(shù)據(jù)庫事務(wù)被標(biāo)記為C2-F2和與事務(wù)序列610-3相關(guān)聯(lián)的數(shù)據(jù)庫事務(wù)被標(biāo)記為C3-F3。此外,在本例中,最舊的數(shù)據(jù)庫事務(wù)(例如,第一個(gè)由數(shù)據(jù)庫管理系統(tǒng)接收的)被顯示在左邊,而如你移至右邊的事務(wù)是最新的。
[0143]在此示例中,已被調(diào)節(jié)成全局事務(wù)序列650A的那些數(shù)據(jù)庫事務(wù)是用虛線表示。不幸的是,全局調(diào)節(jié)過程從系統(tǒng)用戶(或應(yīng)用程序)的感知而言可以是相當(dāng)耗時(shí)的,導(dǎo)致看起來具有慢的響應(yīng)時(shí)間的緩慢系統(tǒng)。例如,半秒至一秒或更長的延遲可以給出緩慢的網(wǎng)站或緩慢在線交互式游戲系統(tǒng)的外觀。
[0144]接下來參考圖6B,根據(jù)一個(gè)實(shí)施例,其使用中間共享事務(wù)序列說明了事務(wù)序列620-1和620-2的調(diào)節(jié),伴隨有具有事務(wù)序列620-3的中間共享事務(wù)序列的調(diào)節(jié)。事務(wù)順序620-1、620-2以及620-3包括分別來自圖5A的相關(guān)玩家1、2、3的數(shù)據(jù)庫事務(wù)。如上面所討論的,事務(wù)序列依賴于潛在斷言,其必須被驗(yàn)證,以為了協(xié)調(diào)并最終提交更改到全局事務(wù)序列650。
[0145]中間共享事務(wù)序列640的介紹改進(jìn)了(或至少提供感知)在調(diào)節(jié)期間從第一和第二用戶的角度的更快的響應(yīng)時(shí)間,因?yàn)楣蚕淼氖聞?wù)序列只需要在事務(wù)序列610-1和610-2之間被協(xié)調(diào),調(diào)節(jié)過程可能會出現(xiàn)從用戶的觀點(diǎn)發(fā)生更快。
[0146]圖7根據(jù)本發(fā)明一個(gè)實(shí)施例示出了在分布式數(shù)據(jù)庫系統(tǒng)中的中間調(diào)節(jié)過程的示例700。更具體地講,調(diào)節(jié)過程700說明了從不同的層次級別的調(diào)節(jié)(即,多級中間調(diào)節(jié)過程)。
[0147]在這個(gè)例子中,應(yīng)用程序開發(fā)人員(例如,在線游戲開發(fā)商)和/或數(shù)據(jù)庫管理系統(tǒng)可以選擇任意數(shù)量的中間共享事務(wù)順序,其允許調(diào)節(jié)過程的方向和流程的控制權(quán)。在操作中,數(shù)據(jù)庫管理系統(tǒng)標(biāo)識所選擇的事務(wù)序列,生成中間共享事務(wù)序列,并使用中間共享事務(wù)序列分層地維護(hù)事務(wù)一致性。
[0148]圖8根據(jù)一個(gè)實(shí)施例示出了一流程圖,其說明了用于分層地維護(hù)在分布式數(shù)據(jù)庫中事務(wù)一致性的示例性過程800。一個(gè)或多個(gè)數(shù)據(jù)庫管理系統(tǒng)中,諸如,例如,圖1的數(shù)據(jù)庫管理系統(tǒng)18,在其他功能之間,分層地維護(hù)在分布式數(shù)據(jù)庫系統(tǒng)中的事務(wù)一致性。
[0149]在操作802中,數(shù)據(jù)庫管理系統(tǒng)從客戶端系統(tǒng)接收查詢。如上所討論的,該查詢可以指示由客戶端系統(tǒng)上運(yùn)行的應(yīng)用程序啟動的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)。分布式數(shù)據(jù)庫系統(tǒng)可以分布式數(shù)據(jù)庫系統(tǒng)中的任意數(shù)量的客戶端系統(tǒng)上運(yùn)行的任意數(shù)量的應(yīng)用程序接收任意數(shù)量的查詢,但是,在單個(gè)查詢的操作和處理被在圖8的示例性過程800進(jìn)行了討論。
[0150]在操作804中,數(shù)據(jù)庫管理系統(tǒng)處理查詢以識別一個(gè)或多個(gè)斷言,斷言要求在分布式數(shù)據(jù)庫內(nèi)的多個(gè)機(jī)器(即數(shù)據(jù)庫資源或數(shù)據(jù)庫管理系統(tǒng))之間共識,以為了協(xié)調(diào)。
[0151]在操作806中,數(shù)據(jù)庫管理系統(tǒng)查詢在系統(tǒng)中的被動學(xué)習(xí)者以識別從被動學(xué)習(xí)者感知的斷言的歷史。在一些實(shí)施例中,從每個(gè)被動學(xué)習(xí)者感知的斷言的歷史表示,例如,他們相信數(shù)據(jù)庫密鑰是為一個(gè)時(shí)間序列(特定數(shù)據(jù)庫的事務(wù)之前和/或之后的)的值。改變斷言的歷史被由被動學(xué)習(xí)者保持,以使系統(tǒng)能夠最終確定在斷言或數(shù)據(jù)庫鍵的值上的機(jī)器(或數(shù)據(jù)庫資源)之間的共識的的最后時(shí)間。參考操作512進(jìn)行更詳細(xì)的討論。
[0152]在操作808中,數(shù)據(jù)庫管理系統(tǒng)參考由在查詢中指定的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)所依據(jù)的斷言確定共識是否存在于資源之間。如果共識存在,那么,在操作810中,斷言可以被排入或排向在下一個(gè)(或更高的)分層等級的下一個(gè)事務(wù)序列。在某些情況下,下一個(gè)事務(wù)序列是共享事務(wù)序列,但是,下一個(gè)事務(wù)序列也可以是跨在分布式數(shù)據(jù)庫系統(tǒng)中的所有機(jī)器復(fù)制的全局事務(wù)序列。
[0153]如果共識不存在,那么,在操作812中,數(shù)據(jù)庫管理系統(tǒng)回退到一直存在于所有的被動學(xué)習(xí)者的歷史的斷言,直到共識被達(dá)成。這個(gè)過程在本文中稱為“時(shí)間旅行”。在操作814中,系統(tǒng)確定共識是否能在資源之間被達(dá)到,參考由在查詢中指定的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù)所依賴的斷言。如果時(shí)間旅行期間共識被達(dá)成,那么在操作816中,有共識的數(shù)據(jù)庫事務(wù)排向到下一序列以及其他事務(wù)序列被刪除。
[0154]如果共識未能通過“時(shí)間旅行”取得一致的話,在過程818中,數(shù)據(jù)庫管理系統(tǒng)確定特定的調(diào)節(jié)程序是否存在。如果是,在過程820中,斷言被調(diào)節(jié)誒。然而,如果共識不能使用從被動學(xué)習(xí)者觀察到的斷言的歷史被達(dá)成且沒有具體調(diào)節(jié)程序存在,則,在操作822中,數(shù)據(jù)庫管理系統(tǒng)中止該事務(wù)。
[0155]圖9示出了在計(jì)算機(jī)系統(tǒng)900的示例形式中的示意性表示,在其中的一組指令用于使該機(jī)器執(zhí)行在此所討論的一個(gè)或多個(gè)方法的任何一個(gè),可被執(zhí)行。
[0156]在另一個(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)對點(diǎn)(或分布式)網(wǎng)絡(luò)環(huán)境中的對等機(jī)器。
[0157]該機(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ī)器采取的動作的一組指令(順序的或其他方式)的任何機(jī)器。
[0158]雖然機(jī)器可讀介質(zhì)被在示例性實(shí)施例中示出為單個(gè)介質(zhì),但是術(shù)語“機(jī)器可讀介質(zhì)”應(yīng)當(dāng)被理解為包括一個(gè)單一介質(zhì)或多個(gè)介質(zhì)(例如,集中式或分布式數(shù)據(jù)庫,和/或相關(guān)聯(lián)的緩存和服務(wù)器),其用于存儲一個(gè)或多個(gè)指令集。術(shù)語“機(jī)器可讀介質(zhì)”還應(yīng)當(dāng)被視為包括能夠存儲,編碼或攜帶一組指令用于由機(jī)器執(zhí)行和導(dǎo)致該機(jī)器執(zhí)行本發(fā)明任一所述的一個(gè)或多個(gè)的方法的任何介質(zhì)。
[0159]通常,被執(zhí)行以實(shí)現(xiàn)本公開的實(shí)施例的例程,可以被實(shí)現(xiàn)為操作系統(tǒng)或特定應(yīng)用的一部分、組件、程序、對象、模塊或稱作“計(jì)算機(jī)程序”的指令序列。計(jì)算機(jī)程序通常包括在一臺計(jì)算機(jī)內(nèi)的各種存儲器和存儲設(shè)備中的在不同時(shí)間的一個(gè)或多個(gè)指令集,并且當(dāng)由計(jì)算機(jī)中的一個(gè)或多個(gè)處理器讀取和執(zhí)行時(shí),使得計(jì)算機(jī)執(zhí)行操作以執(zhí)行涉及本公開的各個(gè)方面的元素。
[0160]此外,雖然實(shí)施例已經(jīng)在全功能的計(jì)算機(jī)和計(jì)算機(jī)系統(tǒng)的上下文中進(jìn)行了描述,本領(lǐng)域技術(shù)人員將會理解,各種實(shí)施例能夠被分布為各種形式的程序產(chǎn)品,并且該發(fā)明同樣適用于不論特定類型的用于實(shí)際上實(shí)現(xiàn)分發(fā)的機(jī)器或計(jì)算機(jī)可讀介質(zhì)。
[0161]機(jī)器或計(jì)算機(jī)可讀介質(zhì)的其它例子包括但不限于可記錄型介質(zhì),諸如易失性和非易失性存儲器設(shè)備,軟盤和其它可移動磁盤,硬盤驅(qū)動器,光盤(例如,壓縮盤只讀只讀存儲器(⑶ROMS),數(shù)字多功能盤(DVD)等),等等,以及傳輸型介質(zhì),諸如數(shù)字和模擬通信鏈路。
[0162]除非上下文清楚地要求,否則遍及說明書和權(quán)利要求書,詞語“包括”,“包含”等將被解釋為包含的意義,而不是排他或詳盡的意義,也就是就是說,在這個(gè)意義上“包括,但不限于”。如本文所用,術(shù)語“連接”,“耦合”或其任何變體,是指任何連接或耦合,無論是直接的還是間接的,兩個(gè)或更多元件之間的;元件之間的連接的連接可以是物理的,邏輯的,或它們的組合。此外,“在本文中,、”單詞“以上”,“以下”,以及類似含義的詞語,在本申請中使用時(shí),應(yīng)指本申請的整體而非本申請的任何特定部分。如文義許可,在上述詳細(xì)說明使用單數(shù)或復(fù)數(shù)的話也可以包括復(fù)數(shù)或單數(shù)分別。詞語“或”,在提及的兩個(gè)或多個(gè)項(xiàng)目的列表,包括了所有的單詞的以下解釋:任何在列表中的項(xiàng)目,所有的在列表中的項(xiàng)目,以及該項(xiàng)目的任何組合中列表。
[0163]本發(fā)明的實(shí)施例的以上詳細(xì)描述并不是為了窮舉或者限制本教導(dǎo)為以上公開的精確形式。然而,本公開的上述具體實(shí)施例和示例是用于說明的目的,各種等同修改是可能的公開內(nèi)容的范圍之內(nèi),因?yàn)槟切┫嚓P(guān)領(lǐng)域技術(shù)人員將認(rèn)識。例如,盡管處理或模塊以給定的順序呈現(xiàn),替代實(shí)施例可以具有以下步驟執(zhí)行例程或采用具有系統(tǒng)塊,以不同的順序,并且一些處理或模塊可以被刪除,移動,添加,細(xì)分,組合和/或修改,以提供替代性或子組合。這些處理或模塊的每一個(gè)可以以多種不同的方式來實(shí)現(xiàn)。此外,盡管過程或塊有時(shí)示為被串聯(lián)執(zhí)行,這些過程或塊可以改為并行執(zhí)行,或可以在不同的時(shí)間執(zhí)行。進(jìn)一步,本文指出的任何特定數(shù)字僅僅是示例:替代性實(shí)施方式可以采用不同的值或范圍。
[0164]本文提供的公開內(nèi)容的教導(dǎo)可以應(yīng)用于其它系統(tǒng),而不一定是上述系統(tǒng)。上面描述的各種實(shí)施例的元素和動作可以被組合以提供進(jìn)一步的實(shí)施例。
[0165]任何專利和申請以及上面提到的其他參考文獻(xiàn),包括任何可能被列在隨附的申請文件,通過引用并入本文。本公開的方面可以修改,如果需要的話,采用本系統(tǒng),功能和上述參考文獻(xiàn)的概念提供本公開的再進(jìn)一步的實(shí)施例。
[0166]這些和其它的變化可根據(jù)上述詳細(xì)說明被作出。雖然上述說明描述了本發(fā)明的某些實(shí)施例,并且描述所考慮的最佳模式,上述出現(xiàn)在文本中的無論多么詳盡,本教導(dǎo)可以以多種方式實(shí)施。系統(tǒng)的細(xì)節(jié)可以在其實(shí)施細(xì)節(jié)上產(chǎn)生相當(dāng)?shù)淖兓瑫r(shí)仍然包含在在此所公開的主題之中。如上所述,當(dāng)描述本發(fā)明的某些特征或方面時(shí)使用的特定術(shù)語不應(yīng)被認(rèn)為暗示該術(shù)語在此被重新定義以被限制為任何特定特性,特征,或者與該術(shù)語相關(guān)聯(lián)的本發(fā)明的方面。在一般情況下,在以下權(quán)利要求中使用的術(shù)語不應(yīng)當(dāng)被解釋為限制本公開為在說明書中公開的具體實(shí)施例,除非上述詳細(xì)說明部分明確定義了此種術(shù)語。因此,本發(fā)明的實(shí)際范圍不僅包括所公開的實(shí)施例,還包括在權(quán)利要求下實(shí)現(xiàn)或?qū)嵤┑乃械韧姆绞健?br> [0167]雖然本公開的某些方面以某些權(quán)利要求的形式所示如下,發(fā)明人在任何數(shù)量的權(quán)利要求形式中考慮本公開的各個(gè)方面。例如,雖然本公開的一個(gè)方面是被根據(jù)35USC § 112,
16列舉作為裝置加功能的權(quán)利要求,其它方面同樣可實(shí)施為裝置加功能的權(quán)利要求,或在其它形式,例如被包含在計(jì)算機(jī)可讀介質(zhì)上。(任何旨在根據(jù)35USC § 112,16對待的權(quán)利
要求將以“的裝置”開始。)因此, 申請人:有權(quán)在提出申請之后增加額外的權(quán)利要求以追求這種公開的其他發(fā)明的額外·的權(quán)利要求形式。
【權(quán)利要求】
1.一種在分布式數(shù)據(jù)庫中分層地維護(hù)事務(wù)一致性的方法,所述方法包括: 基于多個(gè)數(shù)據(jù)庫,查詢在數(shù)據(jù)庫管理系統(tǒng)識別多個(gè)事務(wù)序列,其中每個(gè)數(shù)據(jù)庫查詢指示由在所述分布式數(shù)據(jù)庫中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用所啟動的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù); 在數(shù)據(jù)庫管理系統(tǒng)選擇所述多個(gè)事務(wù)序列的子集;以及 在數(shù)據(jù)庫管理系統(tǒng)生成中間共享事務(wù)序列以連續(xù)地維護(hù)在所述多個(gè)事務(wù)序列的所述子集之間的事務(wù)的一致性,其中在所述中間共享事務(wù)序列中維護(hù)的中間共享事務(wù)隨后被用于,經(jīng)由對于遍及所述分布式數(shù)據(jù)庫的多個(gè)資源進(jìn)行復(fù)制的全局事務(wù)序列來實(shí)現(xiàn)全局事務(wù)一致性。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括: 對于遍及所述分布式數(shù)據(jù)庫的所述多個(gè)資源,復(fù)制所述全局事務(wù)序列。
3.如權(quán)利要求1所述的方法,其中所述多個(gè)事務(wù)序列的所述子集的每個(gè)事務(wù)序列,從所述應(yīng)用之一的所述觀點(diǎn)指示數(shù)據(jù)庫事務(wù)的因果歷史。
4.如權(quán)利要求1所述的方法,進(jìn)一步包括: 維護(hù)所述中間共享事務(wù)序列,其中維護(hù)所述中間共享事務(wù)序列包含異步地協(xié)調(diào)所述多個(gè)事務(wù)序列的所述子集到所述中間共享事務(wù)序列。
5.如權(quán)利要求4所述的方法,其中每個(gè)數(shù)據(jù)庫事務(wù)包括一個(gè)或多個(gè)斷言,以及協(xié)調(diào)所述多個(gè)事務(wù)序列的所述子集到所述中間共享事務(wù)序列包括確定所述每個(gè)斷言的有效性?!?br> 6.如權(quán)利要求5所述的方法,其中確定所述每個(gè)斷言的有效性包括在每個(gè)事務(wù)之內(nèi),從源事務(wù)一貫地移動到原因事務(wù),直到每個(gè)斷言被驗(yàn)證。
7.如權(quán)利要求1所述的方法,其中所述中間共享事務(wù)序列代表如從在所述多個(gè)客戶端的兩個(gè)或更多的客戶端上操作的兩個(gè)或更多的應(yīng)用所感知的觀點(diǎn)共享點(diǎn)。
8.如權(quán)利要求1所述的方法,其中所述多個(gè)事務(wù)序列的所述子集的一個(gè)或多個(gè)事務(wù)序列,系基于由一個(gè)或多個(gè)事務(wù)序列啟動的所述應(yīng)用而被選擇。
9.如權(quán)利要求1所述的方法,其中所述多個(gè)事務(wù)序列的所述子集的一個(gè)或多個(gè)事務(wù)序列,系基于與所述一個(gè)或多個(gè)事務(wù)序列相關(guān)聯(lián)的一個(gè)或多個(gè)客戶端的地理位置而被選擇。
10.如權(quán)利要求1所述的方法,其中所述多個(gè)事務(wù)序列的所述子集的一個(gè)或多個(gè)事務(wù)序列,系基于與所述一個(gè)或多個(gè)事務(wù)序列相關(guān)聯(lián)的一個(gè)或多個(gè)客戶端的屬性而被選擇。
11.如權(quán)利要求1所述的方法,進(jìn)一步包括: 提交在所述中間共享事務(wù)序列中的所述共享事務(wù)以維護(hù)所述全局事務(wù)序列,其中提交所述共享事務(wù)到所述全局事務(wù)序列包括用在所述分布式數(shù)據(jù)庫中的其他數(shù)據(jù)庫事務(wù),協(xié)調(diào)在所述中間共享事務(wù)序列中的一個(gè)或多個(gè)的所述共享事務(wù)。
12.如權(quán)利要求10所述的方法,其中,每個(gè)數(shù)據(jù)庫事務(wù)包括一個(gè)或多個(gè)斷言,以及協(xié)調(diào)包括達(dá)成在關(guān)于所述每個(gè)斷言的有效性的多個(gè)數(shù)據(jù)庫資源之間的共識。
13.如權(quán)利要求12所述的方法,其中達(dá)成所述共識包括在每個(gè)事務(wù)序列之內(nèi),從源數(shù)據(jù)庫事務(wù)一貫地移動到原因數(shù)據(jù)庫事務(wù),直到每個(gè)斷言被驗(yàn)證。
14.如權(quán)利要求10所述的方法,進(jìn)一步包括: 在提交所述共享事務(wù)到所述全局事務(wù)序列之前,通知所述應(yīng)用之一所述相關(guān)聯(lián)的數(shù)據(jù)庫查詢被完成。
15.如權(quán)利要求10所述的方法,進(jìn)一步包括: 提交所述多個(gè)數(shù)據(jù)庫事務(wù)的其他未提交的數(shù)據(jù)庫事務(wù)到所述全局事務(wù)序列,其中所述其他未提交的數(shù)據(jù)庫事務(wù)不在所述中間共享事務(wù)序列之中。
16.如權(quán)利要求1所述的方法,其中所述多個(gè)事務(wù)序列的所述子集,系基于第一應(yīng)用的所述用戶之間的關(guān)系而被選擇。
17.如權(quán)利要求16所述的方法,其中每個(gè)用戶具有與所述第一應(yīng)用相關(guān)聯(lián)的用戶配置文件,并且其中所述多個(gè)事務(wù)序列的所述子集,系基于所述用戶配置文件之間的關(guān)系而被選擇。
18.如權(quán)利要求16所述的方法,其中所述多個(gè)事務(wù)序列的所述子集,系基于所述第一應(yīng)用程序的類型而被選擇。
19.如權(quán)利要求16所述的方法,其中所述第一應(yīng)用包括多用戶在線互動游戲。
20.如權(quán)利要求19所述的方法,其中,所述多個(gè)事務(wù)序列的所述子集,系基于在所述多用戶在線互動游戲中的社會等級而被選擇。
21.一種數(shù)據(jù)庫管理系統(tǒng),包括: 處理單元; 接口,其被配置為接收多個(gè)數(shù)據(jù)庫查詢,其中每個(gè)數(shù)據(jù)庫查詢指示由在分布式數(shù)據(jù)庫系統(tǒng)中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用所啟動的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù); 內(nèi)存單元,其具有存儲在其上的指令,其中所述指令,當(dāng)由所述處理單元執(zhí)行時(shí),使所述處理單元以基于所述多個(gè)數(shù)據(jù)庫查詢識別多個(gè)事務(wù)的序列、選擇所述多個(gè)事務(wù)序列的子集并生成中間共享事務(wù)序列,來維護(hù)在所述多個(gè)事務(wù)序列的所述子集之間的事務(wù)一致性。
22.如權(quán)利要求21所述的數(shù)據(jù)庫管理系統(tǒng),其中在所述中間共享事務(wù)序列中維護(hù)的中間共享事務(wù),隨后被用于經(jīng)由對于遍及所述分布式數(shù)據(jù)庫的多個(gè)資源進(jìn)行復(fù)制的全局事務(wù)序列來實(shí)現(xiàn)全局事務(wù)一致性。
23.如權(quán)利要求21所述的數(shù)據(jù)庫管理系統(tǒng),其中所述多個(gè)資源包括在所述分布式數(shù)據(jù)庫系統(tǒng)中的其它數(shù)據(jù)庫管理系統(tǒng)。
24.如權(quán)利要求21所述的數(shù)據(jù)庫管理系統(tǒng),其中所述多個(gè)資源包括在所述分布式數(shù)據(jù)庫系統(tǒng)中的存儲管理系統(tǒng)。
25.如權(quán)利要求21所述的數(shù)據(jù)庫管理系統(tǒng),其中所述多個(gè)事務(wù)序列的所述子集的每個(gè)事務(wù)序列,從所述應(yīng)用之一的所述觀點(diǎn)指示數(shù)據(jù)庫事務(wù)的因果歷史。
26.如權(quán)利要求21所述的數(shù)據(jù)庫管理系統(tǒng),其中所述中間共享事務(wù)序列代表如從在所述多個(gè)客戶端的兩個(gè)或更多的客戶端上操作的兩個(gè)或更多的應(yīng)用所感知的觀點(diǎn)共享點(diǎn)。
27.如權(quán)利要求21所述的數(shù)據(jù)庫管理系統(tǒng),其中所述多個(gè)事務(wù)序列的所述子集的一個(gè)或多個(gè)事務(wù)序列,系基于由一個(gè)或多個(gè)事務(wù)序列啟動的所述應(yīng)用而被選擇。
28.如權(quán)利要求21所述的數(shù)據(jù)庫管理系統(tǒng),其中所述多個(gè)事務(wù)序列的所述子集的一個(gè)或多個(gè)事務(wù)序列,系基于與所述一個(gè)或多個(gè)事務(wù)序列相關(guān)聯(lián)的一個(gè)或多個(gè)客戶端的地理位置而被選擇。
29.如權(quán)利要求21所述的數(shù)據(jù)庫管理系統(tǒng),其中所述多個(gè)事務(wù)序列的所述子集的一個(gè)或多個(gè)事務(wù)序列,系基于與所述一個(gè)或多個(gè)事務(wù)序列相關(guān)聯(lián)的一個(gè)或多個(gè)客戶端的屬性而被選擇。
30.一種在分布式數(shù)據(jù)庫系統(tǒng)中分層地維護(hù)事務(wù)一致性的方法,所述方法包括: 在數(shù)據(jù)庫管理系統(tǒng)從在所述分布式數(shù)據(jù)庫系統(tǒng)中的多個(gè)客戶端系統(tǒng)接收多個(gè)數(shù)據(jù)庫事務(wù),其中每個(gè)事務(wù)序列指示由在所述多個(gè)客戶端系統(tǒng)之一上運(yùn)行的應(yīng)用所啟動的未提交數(shù)據(jù)庫事務(wù); 基于所述多個(gè)數(shù)據(jù)庫事務(wù),在數(shù)據(jù)庫管理系統(tǒng)識別多個(gè)事務(wù)序列,其中每個(gè)數(shù)據(jù)庫事務(wù)是由在所述分布式數(shù)據(jù)庫系統(tǒng)中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用所啟動; 基于第一標(biāo)準(zhǔn),在數(shù)據(jù)庫管理系統(tǒng)選擇所述多個(gè)事務(wù)序列的子集; 在數(shù)據(jù)庫管理系統(tǒng)生成中間共享事務(wù)序列來維護(hù)所述多個(gè)事務(wù)序列的所述子集之間的事務(wù)一致性; 提交由所述中間共享事務(wù)序列指示的所述數(shù)據(jù)庫事務(wù)到全局事務(wù)序列;以及在提交由所述中間共享事務(wù)序列指示的所述數(shù)據(jù)庫事務(wù)到所述全局事務(wù)序列之前,從所述數(shù)據(jù)庫管理系統(tǒng)發(fā)送指示在所述中間共享事務(wù)序列中的一個(gè)或多個(gè)的所述數(shù)據(jù)庫事務(wù)的提交或故障的通知到在啟動數(shù)據(jù)庫請求的客戶端上的所述應(yīng)用。
31.如權(quán)利要求30所述的方法,其中所述第一標(biāo)準(zhǔn)包括啟動所述多個(gè)事務(wù)序列的所述子集的所述應(yīng)用之間的關(guān)聯(lián)。
32.—種數(shù)據(jù)庫管理系統(tǒng),包括: 用于基于多個(gè)數(shù)據(jù)庫查詢識別多個(gè)事務(wù)序列的裝置,其中每個(gè)數(shù)據(jù)庫查詢指示由在所述分布式數(shù)據(jù)庫中的多個(gè)客戶端之一上運(yùn)行的應(yīng)用所啟動的一個(gè)或多個(gè)數(shù)據(jù)庫事務(wù); 用于選擇所述多個(gè)事務(wù)序列的子集的裝置,以及· 用于生成中間共享事務(wù)序列來維持在所述多個(gè)事務(wù)序列的所述子集之間的事務(wù)一致性的裝置。
【文檔編號】G06F17/30GK103858123SQ201280048368
【公開日】2014年6月11日 申請日期:2012年8月1日 優(yōu)先權(quán)日:2011年8月1日
【發(fā)明者】詹森·盧卡斯 申請人:標(biāo)記公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
介休市| 思南县| 左云县| 三台县| 买车| 乐陵市| 灵石县| 繁峙县| 纳雍县| 襄樊市| 黔西| 肃宁县| 甘南县| 固阳县| 纳雍县| 若羌县| 茂名市| 赤城县| 河池市| 报价| 咸宁市| 咸阳市| 阜阳市| 册亨县| 沙河市| 都昌县| 西平县| 大冶市| 抚州市| 象山县| 古蔺县| 衡南县| 上杭县| 康平县| 山阳县| 汶川县| 武强县| 建平县| 江源县| 莲花县| 柳州市|