午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

無共享數(shù)據(jù)庫系統(tǒng)中的所有權(quán)再分配的制作方法

文檔序號:6489533閱讀:292來源:國知局
專利名稱:無共享數(shù)據(jù)庫系統(tǒng)中的所有權(quán)再分配的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于管理在共享磁盤硬件上運行的無共享(shared-nothing)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)的技術(shù)。
背景技術(shù)
多處理計算機系統(tǒng)一般分為三類一切資源共享(shared-everything)系統(tǒng)、共享磁盤系統(tǒng)、以及無共享系統(tǒng)。在一切資源共享系統(tǒng)中,所有處理器上的程序能夠直接存取系統(tǒng)中的所有易失存儲裝置(下文中一般稱為“存儲器”)以及所有非易失存儲裝置(下文中一般稱為“磁盤”)。因此,要求不同的計算機組件之間的高級布線,以提供一切資源共享的功能。另外,就一切資源共享結(jié)構(gòu)而言還存在可伸縮性限制。
在共享磁盤系統(tǒng)中,處理器和存儲器被分組成節(jié)點。共享磁盤系統(tǒng)中的每個節(jié)點本身可以構(gòu)成包括多處理器和多存儲器的一切資源共享系統(tǒng)。所有處理器上的程序能夠存取系統(tǒng)中的所有磁盤,但是只有屬于特定節(jié)點的處理器上的程序能夠直接存取在特定節(jié)點內(nèi)的存儲器。共享磁盤系統(tǒng)一般地要求比一切資源共享系統(tǒng)少的布線。因為所有節(jié)點能夠存取所有數(shù)據(jù),所以共享磁盤系統(tǒng)還能夠容易地適應不平衡的工作負荷條件。然而,共享磁盤系統(tǒng)易受相關(guān)系統(tǒng)開銷(coherence overhead)的影響。例如,如果第一節(jié)點已經(jīng)修改了數(shù)據(jù)并且第二節(jié)點想要讀取或者修改該相同的數(shù)據(jù),則必須采取多個步驟以確保將數(shù)據(jù)的正確版本提供給第二節(jié)點。
在無共享系統(tǒng)中,所有的處理器、存儲器、和磁盤被分組成節(jié)點。如同在共享磁盤系統(tǒng)中一樣,在無共享系統(tǒng)中,每個節(jié)點本身可以構(gòu)成一切資源共享系統(tǒng)或共享磁盤系統(tǒng)。只有在特定節(jié)點上運行的程序才能夠直接存取特定節(jié)點內(nèi)的存儲器和磁盤。三種一般類型的多處理系統(tǒng)的無共享系統(tǒng)通常要求各種系統(tǒng)組件之間的最少量的布線。然而,無共享系統(tǒng)最易受不平衡的工作負荷條件的影響。例如,在特定任務期間待被存取的所有數(shù)據(jù)可能都存在于特定節(jié)點的磁盤上。因此,只有在該節(jié)點內(nèi)運行的程序可以用于執(zhí)行工作顆粒(work granule),即使其他節(jié)點上的程序都保持空閑狀態(tài)。
在多節(jié)點系統(tǒng)上運行的數(shù)據(jù)庫一般分為兩類共享磁盤數(shù)據(jù)庫和無共享數(shù)據(jù)庫。
共享磁盤數(shù)據(jù)庫共享磁盤數(shù)據(jù)庫基于以下的假設(shè)來協(xié)調(diào)工作假設(shè)由數(shù)據(jù)庫系統(tǒng)管理的所有數(shù)據(jù)對于數(shù)據(jù)庫系統(tǒng)可用的所有處理節(jié)點而言都可見。因此,在共享磁盤數(shù)據(jù)庫中,服務器可以向任何節(jié)點上的程序分配任何工作,而與包含在工作期間將被存取的數(shù)據(jù)的磁盤的位置無關(guān)。
因為所有節(jié)點都能夠存取相同的數(shù)據(jù),并且每個節(jié)點都具有其自己的專用緩存,因此相同數(shù)據(jù)項的多個版本可以存在于任意數(shù)量的多個節(jié)點的緩存中。遺憾的是,這意味著當一個節(jié)點要求特定數(shù)據(jù)項的特定版本時,該節(jié)點必須與其他節(jié)點相協(xié)調(diào)以使數(shù)據(jù)項的特定版本被傳送至請求節(jié)點。因而,共享磁盤數(shù)據(jù)庫被認為以“數(shù)據(jù)傳送”的原理運行,其中,數(shù)據(jù)必須被傳送到已經(jīng)被指定處理該數(shù)據(jù)的節(jié)點。
這樣的數(shù)據(jù)傳送要求可能導致“查驗(ping)”。特別地,當由一個節(jié)點所需的數(shù)據(jù)項的拷貝存在于另一節(jié)點的緩存中時,就會出現(xiàn)查驗。查驗可能要求將數(shù)據(jù)項寫入磁盤,然后從磁盤讀取。查驗所必需的磁盤操作的性能能夠顯著地降低數(shù)據(jù)庫系統(tǒng)的性能。
共享磁盤數(shù)據(jù)庫既可以在無共享計算機系統(tǒng)上運行,也可以在共享磁盤計算機系統(tǒng)上運行。為了在無共享計算機系統(tǒng)上運行共享磁盤數(shù)據(jù)庫,可以將軟件支持程序(software suppot)添加到操作系統(tǒng)或者可以提供其它硬件以允許程序能夠存取遠程磁盤。
無共享數(shù)據(jù)庫無共享數(shù)據(jù)庫假設(shè)程序只能在數(shù)據(jù)被包含在與程序?qū)儆谙嗤?jié)點的磁盤上時存取該數(shù)據(jù)。因此,如果特定節(jié)點想要對由另一節(jié)點所擁有的數(shù)據(jù)項執(zhí)行操作,則特定節(jié)點必須向另一節(jié)點發(fā)送請求,請求另一節(jié)點執(zhí)行該操作。因而,無共享數(shù)據(jù)庫被認為執(zhí)行“功能傳送”,而不是在節(jié)點之間傳送數(shù)據(jù)。
因為任何給定的數(shù)據(jù)塊都僅由一個節(jié)點擁有,因此只有這一個節(jié)點(數(shù)據(jù)的“所有者”)將永久在其緩存中具有數(shù)據(jù)的拷貝。因此,無需在共享磁盤數(shù)據(jù)庫系統(tǒng)中所要求的緩存相關(guān)性機制類型。另外,由于不要求擁有數(shù)據(jù)項的節(jié)點將數(shù)據(jù)項的緩存版本保存到磁盤以使另一節(jié)點然后能夠?qū)⒃摂?shù)據(jù)項存入其緩存,因此無共享系統(tǒng)不遭受與查驗相關(guān)的性能損失。
無共享數(shù)據(jù)庫可以在共享磁盤多處理系統(tǒng)和無共享多處理系統(tǒng)上運行。為了在共享磁盤機器上運行無共享數(shù)據(jù)庫,可以提供一種機制用于對數(shù)據(jù)庫進行分區(qū)(partitioning),并且將每個分區(qū)的所有權(quán)分配給特定節(jié)點。
只有有所有權(quán)的節(jié)點可以對數(shù)據(jù)塊進行操作的事實意味著無共享數(shù)據(jù)庫中的工作負荷可能變得極度不平衡。例如,在十個節(jié)點的系統(tǒng)中,所有工作要求的90%可能涉及由節(jié)點中的一個所擁有的數(shù)據(jù)。因此,該一個節(jié)點工作過度,而其他節(jié)點的計算資源未被充分使用。為了“重新平衡”工作負荷,可以使無共享數(shù)據(jù)庫脫機,并且數(shù)據(jù)(及其所有權(quán))可以在節(jié)點之間被再分配。然而,該過程涉及潛在地移動大量數(shù)據(jù),并且可能僅僅臨時的解決工作負荷的失衡。


通過附圖中的實例來描述本發(fā)明,但是不局限于此,在附圖中相同的參考標號表示類似的元件,其中圖1是示出根據(jù)本發(fā)明的實施例的包括兩個共享磁盤子系統(tǒng)的群的框圖;以及圖2是可以實施本發(fā)明的實施例的計算機系統(tǒng)的框圖。
具體實施例方式
下文中描述了用于提高包括共享磁盤存儲系統(tǒng)的無共享數(shù)據(jù)庫系統(tǒng)的性能的各種技術(shù)。在下面的描述中,為了解釋的目的,描述了多個特定的細節(jié),以對本發(fā)明有徹底的了解。然而,很顯然,在沒有這些特定細節(jié)的情況下,也可以實現(xiàn)本發(fā)明。在其它的實例中,以框圖形式示出已知的結(jié)構(gòu)和設(shè)備,以避免不必要地使本發(fā)明不清楚。
功能概述下文中描述了用于提高無共享數(shù)據(jù)庫系統(tǒng)的性能的各種技術(shù),其中,運行無共享數(shù)據(jù)庫系統(tǒng)的節(jié)點中的至少兩個節(jié)點能夠共享地存取磁盤。正如由數(shù)據(jù)庫系統(tǒng)的無共享結(jié)構(gòu)所確定的,在任何給定的時間,每個數(shù)據(jù)塊仍然僅由一個節(jié)點擁有。然而,利用運行無共享數(shù)據(jù)庫系統(tǒng)的節(jié)點中的至少一些節(jié)點能夠共享的存取磁盤這一事實,以更有效地重新平衡并恢復無共享數(shù)據(jù)庫系統(tǒng)。
特別地,提供用于在不改變數(shù)據(jù)的在存儲器上的位置的情況下來改變無共享數(shù)據(jù)庫中的數(shù)據(jù)的所有權(quán)的技術(shù)。由于數(shù)據(jù)的持久存儲位置在數(shù)據(jù)所有權(quán)的轉(zhuǎn)移期間沒有被改變,因此可以更加自由地轉(zhuǎn)移所有權(quán),并且具有比數(shù)據(jù)的物理重新布置將引起的更小的性能損失。
還描述了用于提供所有權(quán)的快速運行時(run-time)再分配的各種技術(shù)。由于能夠在運行時期間執(zhí)行再分配,因此不必使無共享系統(tǒng)脫機以執(zhí)行再分配。另外,這些技術(shù)描述了如何以相對地精細粒度(fine granularity)來執(zhí)行再分配,避免僅僅為了再分配節(jié)點中的一個節(jié)點上的少數(shù)數(shù)據(jù)項的所有權(quán)而需要執(zhí)行經(jīng)過所有節(jié)點的大量數(shù)據(jù)的大量再分配。
包括共享磁盤系統(tǒng)的示例性群(cluster)圖1是示出可以實施本發(fā)明的實施例的群100的框圖。群100包括五個節(jié)點102、104、106、108、和110,這些節(jié)點通過允許節(jié)點彼此通信的互連線130連接。群100包括兩個磁盤150和152。節(jié)點102、104、和106能夠存取磁盤150,并且節(jié)點108和110能夠存取磁盤152。因此,包括節(jié)點102、104、和106以及磁盤150的子系統(tǒng)構(gòu)成第一共享磁盤系統(tǒng),而包括節(jié)點108和110以及磁盤152的子系統(tǒng)構(gòu)成第二共享磁盤系統(tǒng)。
群100是包括兩個共享磁盤子系統(tǒng)并且共享磁盤子系統(tǒng)之間沒有重疊的從屬關(guān)系(membership)的相對簡單系統(tǒng)的實例。實際系統(tǒng)可能比群100復雜的多,有幾百個節(jié)點、幾百個共享磁盤并且節(jié)點和共享磁盤之間是多對多關(guān)系。在這樣的系統(tǒng)中,例如,能夠存取許多磁盤的單個節(jié)點可以是多個不同的共享磁盤子系統(tǒng)的成員,其中,每個共享磁盤子系統(tǒng)均包括共享磁盤中的一個共享磁盤和能夠存取該共享磁盤的所有節(jié)點。
共享磁盤系統(tǒng)上的無共享數(shù)據(jù)庫為了說明,將假設(shè)無共享數(shù)據(jù)庫系統(tǒng)在群110上運行,其中,由無共享數(shù)據(jù)庫系統(tǒng)管理的數(shù)據(jù)庫存儲在磁盤150和152上?;跀?shù)據(jù)庫系統(tǒng)的無共享性質(zhì),可以將數(shù)據(jù)分為五個組或分區(qū)112、114、116、118、和120。每個分區(qū)都被分配給相應的節(jié)點。分配給分區(qū)的節(jié)點被認為是存在于該分區(qū)中的所有數(shù)據(jù)的唯一所有者。在本實例中,節(jié)點102、104、106、108、和110分別擁有分區(qū)112、114、116、118、和120。由能夠存取磁盤150的節(jié)點(節(jié)點102、104、和106)所擁有的分區(qū)112、114、和118存儲在磁盤150上。類似地,由能夠存取磁盤152的節(jié)點(節(jié)點108和110)擁有的分區(qū)118和120存儲在磁盤152上。
正如由在群100上運行的數(shù)據(jù)庫系統(tǒng)的無共享性質(zhì)所規(guī)定的,在任何給定的時間,任何數(shù)據(jù)塊至多由一個節(jié)點擁有。另外,通過功能傳送來協(xié)調(diào)對共享數(shù)據(jù)的存取。例如,在支持SQL語言的數(shù)據(jù)庫系統(tǒng)的環(huán)境中,不擁有特定數(shù)據(jù)塊的節(jié)點可以通過向確實擁有該數(shù)據(jù)塊的節(jié)點發(fā)送SQL語句的片斷來引起對該數(shù)據(jù)的操作。
所有權(quán)映射為了有效地執(zhí)行功能傳送,所有節(jié)點都需要知道哪個節(jié)點擁有哪個數(shù)據(jù)。因此,建立所有權(quán)映射,其中,所有權(quán)映射指出數(shù)據(jù)到節(jié)點的所有權(quán)分配。在運行時期間,不同的節(jié)點參考所有權(quán)映射以在運行時向正確的節(jié)點發(fā)送SQL片斷。
根據(jù)一個實施例,在SQL(或任何其他數(shù)據(jù)庫存取語言)語句的編譯時間無需決定數(shù)據(jù)到節(jié)點的映射。相反,正如將在下文中更詳細地描述的,數(shù)據(jù)到節(jié)點的映射可以在運行時期間建立并修改。使用下文描述的技術(shù),當所有權(quán)從能夠存取其上存在數(shù)據(jù)的磁盤的一個節(jié)點改變到能夠存取其上存在數(shù)據(jù)的磁盤的另一節(jié)點時,能夠在不移動數(shù)據(jù)在磁盤上的持久位置的情況下執(zhí)行所有權(quán)的改變。
鎖定鎖是用于在能夠存取資源的多個實體中協(xié)調(diào)對資源的存取的結(jié)構(gòu)。在無共享數(shù)據(jù)庫系統(tǒng)的情況下,無需全局鎖定(global locking)來協(xié)調(diào)對無共享數(shù)據(jù)庫中的用戶數(shù)據(jù)的存取,這是因為任何給定的數(shù)據(jù)塊僅由單個節(jié)點擁有。然而,因為無共享數(shù)據(jù)庫的所有節(jié)點均要求存取所有權(quán)映射,因此可能需要一些鎖定來防止對所有權(quán)映射的不一致的更新。
根據(jù)一個實施例,當數(shù)據(jù)塊的所有權(quán)正在從一個節(jié)點(“原所有者”)被再分配到另一節(jié)點(“新所有者”)時,使用兩節(jié)點鎖定方案。另外,全局鎖定機制可以用于控制對與無共享數(shù)據(jù)庫相關(guān)的元數(shù)據(jù)的存取。這樣的元數(shù)據(jù)可以包括例如所有權(quán)映射。
在不移動數(shù)據(jù)的情況下轉(zhuǎn)移所有權(quán)根據(jù)本發(fā)明的一個方面,可以在不移動數(shù)據(jù)的情況下將數(shù)據(jù)的所有權(quán)從一個節(jié)點(原所有者)改變到與該數(shù)據(jù)有聯(lián)系的另一個節(jié)點(新所有者)。例如,假設(shè)特定數(shù)據(jù)項當前存在于分區(qū)112中。由于數(shù)據(jù)項存在于分區(qū)112中,因此數(shù)據(jù)項由節(jié)點102擁有。為了將數(shù)據(jù)的所有權(quán)改變至節(jié)點104,數(shù)據(jù)必須不再屬于分區(qū)112,而是改為屬于分區(qū)114。在無共享數(shù)據(jù)庫系統(tǒng)的傳統(tǒng)執(zhí)行中,這種所有權(quán)改變一般地會使得數(shù)據(jù)項實際地從對應于分區(qū)112的磁盤150上的一個物理位置被移動到對應于分區(qū)114的磁盤150上的另一個物理位置。
相反地,根據(jù)本發(fā)明的實施例,分區(qū)112和114不是必然是磁盤150的特定位置的物理分區(qū)。相反,分區(qū)112和114是不依賴于位置的分區(qū),其僅僅分別表示當前由節(jié)點102和104擁有的數(shù)據(jù)項的集合,而與特定數(shù)據(jù)項存在于磁盤152上的位置無關(guān)。因而,由于分區(qū)112和114不依賴于位置,因此能夠在不經(jīng)磁盤150上的數(shù)據(jù)的任何實際移動的情況下,將數(shù)據(jù)項從一個分區(qū)移動至另一個分區(qū)(即從一個所有者分配到另一個所有者)。
雖然改變數(shù)據(jù)項的所有權(quán)不要求數(shù)據(jù)項的移動,但是其要求所有權(quán)映射的改變。不同于無共享數(shù)據(jù)庫中的用戶數(shù)據(jù),所有權(quán)映射在不同的節(jié)點中共享。因此,所有權(quán)映射的部分可以緩存于不同的節(jié)點的專用緩存中。因而,響應于數(shù)據(jù)項的所有權(quán)的改變,所有權(quán)映射被改變,并且所有權(quán)映射的受影響部分的緩存拷貝失效。
根據(jù)可選實施例,與基礎(chǔ)對象的方案改變類似地執(zhí)行所有權(quán)改變。特別地,在對所有權(quán)映射做出改變之后,涉及所有權(quán)映射的編譯語句失效并且被重新編譯以使用新的所有權(quán)映射。
節(jié)點的添加和去除在群100的操作期間,可能需要從群100添加或去除節(jié)點。在傳統(tǒng)的無共享系統(tǒng)中,這樣的操作會涉及頻繁地從文件或磁盤的一個物理分區(qū)中將大量數(shù)據(jù)移動至另一個文件或磁盤的另一個物理分區(qū)。通過使用不依賴于位置的分區(qū),必須被物理地重新布置的唯一數(shù)據(jù),是那些其所有權(quán)被轉(zhuǎn)移至不能存取該數(shù)據(jù)當前存在的磁盤的節(jié)點的數(shù)據(jù)。
例如,假設(shè)新節(jié)點X被添加至群100,并且節(jié)點X能夠存取磁盤152但不能存取磁盤150。為了重新平衡節(jié)點之間的工作負荷,當前由節(jié)點102至110擁有的一些數(shù)據(jù)可以被再分配給節(jié)點X。由于其原所有者是節(jié)點102至106的數(shù)據(jù)存在于節(jié)點X不能存取的磁盤150上,因此該數(shù)據(jù)必須被物理地移動至節(jié)點X能夠存取的磁盤152。然而,由于其原所有者是節(jié)點108和110的數(shù)據(jù)已經(jīng)存在于節(jié)點X能夠存取的磁盤152上,因此可以在不移動實際數(shù)據(jù)的情況下通過更新所有權(quán)映射將該數(shù)據(jù)的所有權(quán)轉(zhuǎn)移至節(jié)點X。
類似地,當節(jié)點從群100被去除時,只有以下數(shù)據(jù)項需要被物理地重新布置該數(shù)據(jù)項被轉(zhuǎn)移到當前不能存取其上存在數(shù)據(jù)項的磁盤的節(jié)點。其所有權(quán)被轉(zhuǎn)移到能夠存取其上存在該數(shù)據(jù)的磁盤的節(jié)點的數(shù)據(jù)項無需被移動。例如,如果節(jié)點102從群100被去除,并且之前由節(jié)點102所擁有的所有數(shù)據(jù)項的所有權(quán)均被轉(zhuǎn)移至節(jié)點104,則沒有數(shù)據(jù)項響應于所有權(quán)的改變而需要被物理地重新布置。
所有權(quán)的逐漸轉(zhuǎn)移根據(jù)一個實施例,通過逐漸地而不是突然地執(zhí)行所有權(quán)轉(zhuǎn)移,可以減輕與響應于添加或去除的節(jié)點的數(shù)據(jù)所有權(quán)的大量再分配相關(guān)的性能損失。例如,當向群添加新節(jié)點時,系統(tǒng)可以開始向新節(jié)點轉(zhuǎn)移少量數(shù)據(jù)項的所有權(quán)或不轉(zhuǎn)移數(shù)據(jù)項的所有權(quán),而不是轉(zhuǎn)移足夠多的數(shù)據(jù)的所有權(quán)以使新節(jié)點與現(xiàn)存的節(jié)點一樣繁忙。根據(jù)一個實施例,基于工作負荷的需要逐漸地轉(zhuǎn)移所有權(quán)。例如,數(shù)據(jù)所有權(quán)的轉(zhuǎn)移可以在系統(tǒng)檢測到節(jié)點中的一個節(jié)點的工作負荷變得過度時被觸發(fā)。響應于檢測到節(jié)點工作過度,屬于該工作過度節(jié)點的一些數(shù)據(jù)項可以被分配給先前添加的節(jié)點。逐漸地,越來越多的數(shù)據(jù)項可以從工作過度的節(jié)點被分配到新節(jié)點,直到檢測到該工作過度的節(jié)點不再工作過度為止。
另一方面,所有權(quán)的再分配可以在現(xiàn)存節(jié)點的工作負荷降至低于某一閾值時被觸發(fā)。特別地,理想的是,當繁忙節(jié)點的工作負荷減輕時將一些所有權(quán)責任從其他繁忙節(jié)點轉(zhuǎn)移至新節(jié)點,以避免再分配操作降低已經(jīng)工作過度的節(jié)點的性能。
至于從去除的節(jié)點逐漸轉(zhuǎn)移所有權(quán),所有權(quán)轉(zhuǎn)移可能,例如,在必要時被觸發(fā)。例如,如果數(shù)據(jù)項X由去除的節(jié)點擁有,則當檢測到一些節(jié)點已經(jīng)請求涉及數(shù)據(jù)項X的操作時,數(shù)據(jù)項X可以被再分配給另一節(jié)點。類似地,將所有權(quán)從去除的節(jié)點轉(zhuǎn)移至現(xiàn)存節(jié)點可能在現(xiàn)存節(jié)點的工作負荷降至低于某一閾值時被觸發(fā)。
基于存儲段(bucket)的分區(qū)如上所述,由無共享數(shù)據(jù)庫管理的數(shù)據(jù)被分區(qū),并且每個分區(qū)中的數(shù)據(jù)由一個節(jié)點獨占地擁有。根據(jù)一個實施例,通過將數(shù)據(jù)分配給邏輯存儲段來建立分區(qū),然后將每個存儲段分配給分區(qū)。因此,所有權(quán)映射中的數(shù)據(jù)到節(jié)點的映射包括數(shù)據(jù)到存儲段的映射和存儲段到節(jié)點的映射。
根據(jù)一個實施例,數(shù)據(jù)到存儲段的映射通過對每個數(shù)據(jù)項的名稱運用散列函數(shù)來建立。類似地,存儲段到節(jié)點的映射可以通過對與存儲段相關(guān)的標識符運用另一散列函數(shù)來建立??蛇x地,該兩個映射或其中之一可以使用基于范圍的分區(qū)來建立,或通過簡單地列舉每個個體關(guān)系來建立。例如,可以通過將數(shù)據(jù)項的名字空間劃分為五十個范圍將一百萬個數(shù)據(jù)項映射到五十個存儲段。然后通過為每個存儲段存儲記錄可以將五十個存儲段映射到五個節(jié)點,該記錄用于(1)識別存儲段并且(2)識別當前分配有存儲段的節(jié)點。
相對于其中為每個數(shù)據(jù)項存儲單獨的映射記錄的映射而言,存儲段的使用顯著地減少了所有權(quán)映射的大小。另外,在存儲段的數(shù)量超過節(jié)點的數(shù)量的實施例中,存儲段的使用使得將所有權(quán)再分配給由給定的節(jié)點擁有的數(shù)據(jù)的子集相對容易。例如,新節(jié)點可以從當前分配有十個存儲段的節(jié)點被分配單個存儲段。這樣的再分配將簡單地涉及為該存儲段修改指示存儲段到節(jié)點的映射的記錄。被再分配的數(shù)據(jù)的數(shù)據(jù)到存儲段的映射不必被改變。
如上所述,可以通過使用各種技術(shù)(包括但不限于散列分區(qū)、范圍分區(qū)、或列值)中的任何一種來建立數(shù)據(jù)到存儲段的映射。如果使用基于范圍的分區(qū)并且范圍的數(shù)量不顯著地大于節(jié)點的數(shù)量,只要用于對數(shù)據(jù)項分區(qū)的范圍關(guān)鍵碼(range key)是不會改變的值(例如數(shù)據(jù)),則數(shù)據(jù)庫服務器可以采用更精細的(更狹窄)范圍來實現(xiàn)所需數(shù)量的存儲段。如果范圍關(guān)鍵碼是可以改變的值,則響應于用于特定數(shù)據(jù)項的范圍關(guān)鍵碼值的改變,數(shù)據(jù)項從其原存儲段被去除并被添加到對應于數(shù)據(jù)項的范圍關(guān)鍵碼的新值的存儲段。
基于樹的分區(qū)將由數(shù)據(jù)庫系統(tǒng)管理的數(shù)據(jù)項分區(qū)為子集的另一種方法是使用分級存儲結(jié)構(gòu)(例如,BTree),以使樹形結(jié)構(gòu)的上級(例如,根)由所有節(jié)點所擁有,并且下級(例如,葉節(jié)點)在節(jié)點之中被分區(qū)。根據(jù)一個實施例,樹形結(jié)構(gòu)包括多個子樹,其中,每個子樹被分配到特定節(jié)點。另外,每個下級樹節(jié)點對應于一組數(shù)據(jù)。與下級樹節(jié)點相關(guān)的一組數(shù)據(jù)由與包括樹節(jié)點的子樹相關(guān)的節(jié)點所擁有。
在這樣的實施例中,當子樹的所有權(quán)發(fā)生變化時,通過鎖定/廣播方案使上級無效。下級的指針被修改以移動不同節(jié)點下的子樹的所有權(quán)。
在再分配期間處理臟版本(dirty version)如上所述,當數(shù)據(jù)的新所有者能夠存取其上存在數(shù)據(jù)的磁盤時,通過在沒有物理上移動磁盤上的數(shù)據(jù)的物理位置的情況下將存儲段再分配給節(jié)點,來改變數(shù)據(jù)的所有權(quán)。然而,可能原所有者在其易失性存儲器中具有一個或多個再分配的數(shù)據(jù)項的“臟”版本。數(shù)據(jù)項的臟版本是包括沒有影響當前存在于磁盤上的版本的改變的版本。
根據(jù)一個實施例,數(shù)據(jù)項的臟版本被寫入共享磁盤作為所有權(quán)轉(zhuǎn)移操作的一部分。因此,當新所有者從磁盤讀取其新近已經(jīng)獲得所有權(quán)的數(shù)據(jù)項時,由新所有者讀取的項的版本將反映由前一所有者做出的最新改變。
可選地,為了避免與將數(shù)據(jù)項的臟版本寫入磁盤相關(guān)的開銷,如果強制重做并且不重寫,則在將臟數(shù)據(jù)項寫入共享磁盤之前,可以從原所有者的易失存儲器清除數(shù)據(jù)項的臟版本。特別地,當所有權(quán)節(jié)點對數(shù)據(jù)項作出改變時,生成反映該改變的“重做”記錄。只要用于改變的重做記錄在數(shù)據(jù)項的所有權(quán)改變之時或之前被強加到磁盤,則原所有者能夠在不首先將臟版本保存到磁盤的情況下清除數(shù)據(jù)項的臟版本。在這種情況下,新所有者能夠通過(1)讀取重做記錄來確定必須對數(shù)據(jù)項的磁盤版本做出何種改變以及(2)對數(shù)據(jù)項的磁盤版本做出所指示的改變,來重構(gòu)數(shù)據(jù)項的最新版本。
另一可選情況是,在事務請求新所有者節(jié)點中的數(shù)據(jù)時,將臟數(shù)據(jù)項自動地(原所有者主動地)或在要求時(響應于新所有者的請求)轉(zhuǎn)移至新所有者的緩存。
如果在所有權(quán)改變之前數(shù)據(jù)項的臟版本沒有被轉(zhuǎn)儲(flush)到磁盤,則數(shù)據(jù)項的改變可以被反映在多個恢復日志中。例如,假設(shè)第一節(jié)點對數(shù)據(jù)項做出改變,之后數(shù)據(jù)項的所有權(quán)被轉(zhuǎn)移至第二節(jié)點。第一節(jié)點可以將重做日志轉(zhuǎn)儲到磁盤,但是將數(shù)據(jù)項的臟版本直接轉(zhuǎn)移至第二節(jié)點而不首先將其存儲至磁盤。第二節(jié)點之后可以對數(shù)據(jù)項做出第二改變。假設(shè)第二節(jié)點將第二改變的重做記錄轉(zhuǎn)儲到磁盤,然后第二節(jié)點在將數(shù)據(jù)項的臟版本存儲到磁盤之前失效。在這些情況下,必須再次被應用于數(shù)據(jù)項的磁盤版本的改變既反映在第一節(jié)點的重做日志中,也反映在第二節(jié)點的重做日志中。根據(jù)一個實施例,通過合并重做日志來執(zhí)行聯(lián)機恢復以恢復數(shù)據(jù)項。
根據(jù)一個實施例,可以在不等待正在修改數(shù)據(jù)項的事務提交的情況下,轉(zhuǎn)移數(shù)據(jù)項的所有權(quán)。因此,由單個事務對數(shù)據(jù)項做出的改變可以擴展至多個重做日志。在這些情況下,數(shù)據(jù)庫服務器的事務退回機制被設(shè)置為撤銷多個日志的改變,其中,以與對數(shù)據(jù)塊做出改變的順序相反的順序?qū)?shù)據(jù)塊執(zhí)行撤銷操作。另外,提供了可以合并所有所有者的重做日志的介質(zhì)恢復機制,其中,合并程序包括自數(shù)據(jù)被備份時起做出的所有改變的重做記錄。
無阻塞更新(blocking update)的再分配根據(jù)本發(fā)明的一個方面,在不經(jīng)對正被再分配的數(shù)據(jù)進行阻塞更新的情況下,執(zhí)行數(shù)據(jù)項所有權(quán)的再分配。根據(jù)一個實施例,通過使數(shù)據(jù)庫服務器等待用于存取屬于再分配的存儲段的任何數(shù)據(jù)項的所有事務提交,并等待屬于該存儲段的所有臟數(shù)據(jù)項被轉(zhuǎn)儲到磁盤,可以在無阻塞更新的情況下執(zhí)行所有權(quán)的分配。在這些情況下,如果原所有者不能夠以獨占模式或共享模式存取數(shù)據(jù),則屬于再分配的存儲段的數(shù)據(jù)能夠立即被更新(不等待臟版本被轉(zhuǎn)儲到磁盤)。如果原所有者確實能夠以獨占模式存取數(shù)據(jù),則原所有者可以在其緩存中具有數(shù)據(jù)的臟版本,因此更新被延遲,直到原所有者將臟頁(或用于相關(guān)改變的重做)寫入共享磁盤。
在允許對其所有權(quán)已經(jīng)被新近轉(zhuǎn)移的數(shù)據(jù)項進行新的更新之前,數(shù)據(jù)庫服務器可以被設(shè)置為等待原所有者的已經(jīng)被請求的進行中的更新完成。另一方面,數(shù)據(jù)庫服務器可以被設(shè)置為中止進行中的操作,然后將事務重新發(fā)布給所有者。根據(jù)一個實施例,基于各種因素做出對于是否等待給定的進行中的操作完成的決定。這樣的因素可以包括,例如,已經(jīng)為該操作完成了多少工作。
在某些情況下,等待原所有者的已經(jīng)被請求的更新完成,可能會引起假死鎖。例如,假設(shè)行A在存儲段1中,并且行B和C在存儲段2中。假設(shè)事務T1更新行A,并且另一事務T2已經(jīng)更新行B。假設(shè)在此時,存儲段2的所有權(quán)被重新映射到新節(jié)點。如果此時T1想要更新行C,則T1將等待重新映射完成。因此,T1將等待T2。如果T2想要更新行A,則T1和T2之間存在死鎖。
根據(jù)一個實施例,即使當要求幾個存儲段的所有權(quán)時,一次只對一個存儲段執(zhí)行所有權(quán)的轉(zhuǎn)移,以最小化事務將必須等待以存取再分配的存儲段中的數(shù)據(jù)的時間量。
用于轉(zhuǎn)移所有權(quán)的技術(shù)根據(jù)本發(fā)明的多個實施例,以下的實例說明了用于在共享磁盤系統(tǒng)上執(zhí)行的無共享數(shù)據(jù)庫內(nèi)轉(zhuǎn)移數(shù)據(jù)的所有權(quán)的技術(shù)。在以下的實例中,假設(shè)在已經(jīng)修改數(shù)據(jù)的事務仍在進行時改變數(shù)據(jù)的所有權(quán)。即,數(shù)據(jù)庫系統(tǒng)不會等待已經(jīng)存取待被再分配的數(shù)據(jù)的進行中的事務停頓。
下面將參考其中假設(shè)對象(“存儲段B”)的子集的所有權(quán)從節(jié)點X改變至節(jié)點Y的實例,來描述一種用于轉(zhuǎn)移所有權(quán)的技術(shù)。根據(jù)一個實施例,數(shù)據(jù)庫系統(tǒng)開始將存儲段B標記為正在從節(jié)點X到節(jié)點Y的“轉(zhuǎn)變中”。所有權(quán)映射的改變?nèi)缓蟊粡V播至所有節(jié)點,或通過全局鎖定失效。
根據(jù)一個實施例,響應于所有權(quán)映射的改變,重新生成涉及存儲段B中的數(shù)據(jù)的查詢執(zhí)行計劃??蛇x地,響應于所有權(quán)映射的改變,緩存的映射被無效或被重新加載。
在再分配之后,存取存儲段B中的數(shù)據(jù)的任何新子查詢/數(shù)據(jù)操縱語言(dml)片斷將被傳送至節(jié)點Y??蛇x地,在存儲段被標為在從X到Y(jié)的轉(zhuǎn)變中之前,當前在X中運行的SQL片斷可以被退回。在再分配之后,這些片斷然后可以被重新發(fā)布至節(jié)點Y。應當注意,這些片斷所屬的事務并不是本身被退回,而僅僅是當前調(diào)用被退回并且重新發(fā)送給新所有者。特別地,在先前的調(diào)用中由節(jié)點X對存儲段B中的數(shù)據(jù)做出的改變不受影響。
根據(jù)一個實施例,節(jié)點X能夠通過簡單的局部鎖定方案來檢測到?jīng)]有正在存取存儲段B中的數(shù)據(jù)的進行中的調(diào)用。該鎖定方案可以涉及,例如,使得存取存儲段中的數(shù)據(jù)的每個程序都獲得該存儲段上的共享鎖/鎖存器。當該存儲段將被再分配時,執(zhí)行該再分配的程序等待直至其能夠獲得存儲段上的獨占的鎖/鎖存器。通過獲得存儲段上的獨占的鎖/鎖存器,再分配程序確保當前沒有其他程序正在存取存儲段。
根據(jù)一個實施例,因為潛在的死鎖,在將存儲段標記為在轉(zhuǎn)變中之前,節(jié)點X不等待所有調(diào)用成功地完成。以下是這樣的死鎖如何發(fā)生的實例。考慮將被重新映射的存儲段中的行1、2、和3三行。
下列事件序列能夠?qū)е滤梨i(a)T1更新行2。
(b)T2對后邊跟著行2的行1執(zhí)行多行更新。
T2現(xiàn)在等待T1。
(c)決定存儲段將被重新映射。
(d)T1想要更新行3。T1現(xiàn)在等待T2。
根據(jù)一個實施例,通過只要進行中的調(diào)用所存取的存儲段B中的數(shù)據(jù)在緩存中則允許進行中的調(diào)用繼續(xù)正常地執(zhí)行,來避免在節(jié)點X的進行中的調(diào)用的強制中止。換句話說,在沒有內(nèi)部節(jié)點(inter-node)鎖定的情況下,X不能從存儲段B的磁盤中讀取塊。如果有緩存缺失并且存儲段在轉(zhuǎn)變中,則X必須發(fā)送信息給Y,或者從Y檢索該塊,或從磁盤讀取該塊。當存儲段在轉(zhuǎn)變中時,在X和Y之間使用緩存相關(guān)性協(xié)議。
處理新所有者的請求在存儲段B已經(jīng)被再分配給節(jié)點Y之后,需要存取存儲段B中的數(shù)據(jù)的任何新SQL片斷在節(jié)點Y中開始執(zhí)行。在從磁盤讀取新近轉(zhuǎn)移的數(shù)據(jù)項時由節(jié)點Y使用的技術(shù),可以基于在存儲段被標記為在轉(zhuǎn)移中之前前所有者節(jié)點X做了什么而改變。以下情況是說明可能由新所有者節(jié)點Y處理的不同情況的實例。
情況A假設(shè)節(jié)點X中止所有進行中的調(diào)用,并將映射到該存儲段的所有臟塊寫入共享磁盤。為了效率,每個節(jié)點能夠?qū)⑴K數(shù)據(jù)項鏈接至每個存儲段對象序列。在這些情況下,節(jié)點Y能夠直接從磁盤讀取。不需要任何緩存相關(guān)性。節(jié)點Y立即被標記為該存儲段的新所有者。
情況B假設(shè)節(jié)點X中止所有進行中的調(diào)用,但是臟數(shù)據(jù)項沒有被寫出。在這些情形下,節(jié)點Y將需要在從磁盤讀取塊之前檢索或核實節(jié)點X沒有臟拷貝。如果X具有臟拷貝,則前映象被留在在節(jié)點X中,用于恢復以及確保校驗點沒有預先通過(advance past)在節(jié)點X中做出的改變,該改變還沒有通過在節(jié)點Y中塊記錄(block write)被反映到磁盤中。在X中的所有臟數(shù)據(jù)項已經(jīng)被寫入(既可自己寫入也可由通過Y中的記錄清除的前映象(PI)寫入)之后,存儲段狀態(tài)從在轉(zhuǎn)變中改變?yōu)樽鳛樗姓叩腨。Y現(xiàn)在能夠在不檢查X的情況下存取該存儲段中的磁盤塊。
如果節(jié)點X在存儲段狀態(tài)為在轉(zhuǎn)變中時失效,則如果節(jié)點Y沒有數(shù)據(jù)項的當前拷貝,那么恢復的節(jié)點(節(jié)點Y,如果其繼續(xù)存在)將需要應用為節(jié)點X中的該存儲段所生成的重做(并且如果節(jié)點Y也失效,則可能在節(jié)點Y中生成重做)。
情況C假設(shè)節(jié)點X中止進行中的調(diào)用,并且清除臟數(shù)據(jù)項。在這些情況下,節(jié)點Y能夠在無緩存相關(guān)性的情況下直接從磁盤讀取塊。然而,如果X中有未應用的重做,則該塊可能需要被更新。存儲段將被認為在轉(zhuǎn)變中,直至在X中產(chǎn)生的所有重做已經(jīng)被Y應用并被寫入磁盤。這對于防止X使其校驗點越過尚沒有反映在磁盤上的重做段而言是需要的。
如果節(jié)點X在存儲段狀態(tài)為在轉(zhuǎn)變中時失效,則如果節(jié)點Y沒有數(shù)據(jù)項的當前拷貝,那么恢復的節(jié)點(節(jié)點Y,如果其繼續(xù)存在)將需要應用為節(jié)點X中的該存儲段所生成的重做(并且如果節(jié)點Y也失效,則可能在節(jié)點Y中生成重做)。
情況D假設(shè)節(jié)點X繼續(xù)執(zhí)行進行中的調(diào)用。節(jié)點X和節(jié)點Y將需要在從磁盤存取塊之前互相校驗。當所有進行中的調(diào)用已經(jīng)完成并且所有的塊均被寫出或轉(zhuǎn)移至Y時,Y被標記為新所有者。從這一刻起,無需緩存相關(guān)性。
如果節(jié)點X或節(jié)點Y在存儲段狀態(tài)為在轉(zhuǎn)變中時失效,則必須執(zhí)行恢復。在此環(huán)境下使用的恢復技術(shù)可能類似于在2002年3月4日提交的美國專利號6,353,836和美國專利申請?zhí)?0/092,047中描述的技術(shù),其每個都被完整的結(jié)合于此。如果兩個節(jié)點都失效,則需要合并來自X和Y的重做日志。
如在情況D中所述,允許節(jié)點X繼續(xù)執(zhí)行進行中的調(diào)用可以帶來各種益處。特別地,允許節(jié)點X繼續(xù)執(zhí)行進行中的調(diào)用,使得所有權(quán)將在對正在進行的事務影響最小的情況下被再分配。然而,其要求緩存相關(guān)性和在節(jié)點X和節(jié)點Y之間為存儲段B執(zhí)行的恢復方案。
一種用于在這些情況下提供緩存相關(guān)性的方法,包括讓節(jié)點X獲得用于其當前為存儲段B緩存的所有數(shù)據(jù)項的鎖。用于B中的所有數(shù)據(jù)項的主/目錄節(jié)點能夠被分配作為節(jié)點Y。然后向所有節(jié)點發(fā)送存儲段B將從X移動至Y的通知。該通知無效/更新所有權(quán)映射,使得對B的進一步存取將被發(fā)送至Y。
如果在此之前發(fā)生失效,則所有權(quán)再分配操作被中止。否則映射被更新來指示Y是新所有者并且緩存相關(guān)性有效。
然后X和Y為存儲段B中的所有數(shù)據(jù)項執(zhí)行緩存相關(guān)性協(xié)議,諸如美國專利號6,353,836和美國專利申請?zhí)?0/092,047中描述的協(xié)議。當B中不再存在臟數(shù)據(jù)項時,可以停止緩存相關(guān)性協(xié)議。Y可以釋放其可能已經(jīng)為B中的數(shù)據(jù)項獲得的任何鎖。
根據(jù)一個實施例,緩存相關(guān)性協(xié)議總是有效,使得擁有存儲段的節(jié)點也是這些鎖的支配者。在多數(shù)情況下,每個節(jié)點將只分配局部鎖(因為其是支配者)并且緩存相關(guān)性消息將只在所有權(quán)改變時被需要。當所有權(quán)改變時,在該存儲段中打開的鎖可以動態(tài)地重新分配給(remaster)新所有者。
所有權(quán)改變前的修改根據(jù)實施例,在所有權(quán)改變之前修改節(jié)點X中的數(shù)據(jù)的子事務將仍被認為在起作用,因為事務退回將需要這些改變。如果事務退回并且其已經(jīng)對節(jié)點X中的該存儲段做出改變,則節(jié)點Y將需要通過從共享磁盤日志的X的部分中讀取撤銷日志來應用撤銷日志。
在所有權(quán)改變之前修改節(jié)點X中的數(shù)據(jù)的子事務可能會更新節(jié)點Y中的相同數(shù)據(jù)。這要求諸如節(jié)點Y中的行鎖或頁鎖的事務鎖的請求需要與節(jié)點X協(xié)調(diào)。如果子事務請求鎖并且該鎖已經(jīng)由其在節(jié)點X中的同級(sibling)事務所持有,則同意鎖的請求。然而,如果鎖由不相關(guān)的事務持有,則鎖請求被阻塞。等待-圖表將該等待反映為對母事務(parent transaction)的等待,從而可以檢測全局死鎖。一旦所有權(quán)改變完成,并且已經(jīng)獲得鎖以存取節(jié)點X中的存儲段B中的數(shù)據(jù)的所有事務已經(jīng)結(jié)束(提交或中止),則事務鎖只需要局部鎖。
通過在開始所有權(quán)改變之前使數(shù)據(jù)庫服務器等待事務完成,事務鎖的請求能夠始終被局部地協(xié)調(diào)。
硬件綜述圖2是示出可以執(zhí)行本發(fā)明的實施例的計算機系統(tǒng)200的框圖。計算機系統(tǒng)200包括用于傳遞信息的總線202或其它通信裝置以及用于處理信息的與總線202連接的處理器204。計算機系統(tǒng)200還包括連接至總線202的主存儲器206,諸如隨機訪問存儲器(RAM)或者其它動態(tài)存儲裝置,用于儲存信息和將由處理器204執(zhí)行的指令。在執(zhí)行將由處理器204執(zhí)行的指令期間,主存儲器206還可用于儲存臨時變量或其他中間信息。計算機系統(tǒng)200進一步包括只讀存儲器(ROM)208或連接至總線202的其他靜態(tài)存儲裝置,用于存儲靜態(tài)信息和處理器204的指令。提供諸如磁盤或光盤的存儲設(shè)備210,并連接至總線202用于存儲信息和指令。
計算機系統(tǒng)200可以經(jīng)由總線202連接至諸如陰極射線管(CRT)的顯示器212,用于向計算機用戶顯示信息。包括字母數(shù)字鍵和其他鍵的輸入裝置214連接至總線202,用于將信息和指令選擇傳遞到處理器204。另一種類型的用戶輸入裝置是光標控制216,諸如鼠標、跟蹤球、或光標方向鍵,用于將方向信息和命令選擇傳遞到處理器204并用于控制顯示器212上的光標移動。輸入裝置通常在兩個軸上(第一個軸(例如X軸)和第二個軸(例如Y軸))具有兩個自由度,使裝置能指定平面上的位置。
本發(fā)明涉及計算機系統(tǒng)200的使用,用于執(zhí)行在此描述的技術(shù)。根據(jù)本發(fā)明的一個實施例,通過計算機系統(tǒng)200響應于執(zhí)行包括在主存儲器206中的一個或多個指令的一個或多個序列的處理器204,來實現(xiàn)這些技術(shù)。這樣的指令可以從諸如存儲裝置210的其它計算機可讀介質(zhì)讀入主存儲器206。包括在主存儲器206中的指令序列的執(zhí)行,使得處理器204執(zhí)行此處所述的處理步驟。在可選實施例中,可以使用硬連線電路(hard-wired circuitry)來取代軟件指令或者與軟件指令結(jié)合來實施該發(fā)明。因此,本發(fā)明的實施例將不限于硬件電路和軟件的任何特定組合。
這里使用的術(shù)語“計算機可讀介質(zhì)”是指參與向處理器204提供指令用于執(zhí)行的任何介質(zhì)。這種介質(zhì)可以采取多種形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)、和傳遞介質(zhì)。非易失性介質(zhì)舉例來說包括光盤或磁盤,諸如存儲裝置210。易失性介質(zhì)包括動態(tài)存儲器,諸如主存儲器206。傳輸介質(zhì)包括同軸電纜、銅線、和光纖,包括組成總線202的導線。傳輸介質(zhì)還可采取聲波或光波形式,例如那些在無線電波和紅外線數(shù)據(jù)通信過程中產(chǎn)生的聲波和光波。
通常形式的計算機可讀介質(zhì)包括如軟盤、軟性盤、硬盤、磁帶,或者任何其它磁性介質(zhì)、CD-ROM、任何其它光介質(zhì)、打孔紙、紙帶、或者任何帶孔圖樣的物理介質(zhì)、RAM、PROM、EPROM、FLASH-EPROM、或者其他任何存儲芯片或者盒式磁帶,或者以下提到的載波、或者計算機可讀的任何其他介質(zhì)。
各種形式的計算機可讀介質(zhì)可參與將一個或者多個指令的一個或多個序列承載到處理器204用于執(zhí)行。例如,指令開始可承載在遠程計算機的磁盤中。遠程計算機可以將指令加載到其動態(tài)存儲器中,然后使用調(diào)制解調(diào)器通過電話線發(fā)送指令。計算機系統(tǒng)200本地的調(diào)制解調(diào)器可接收電話線上的數(shù)據(jù),并使用紅外發(fā)射器將數(shù)據(jù)轉(zhuǎn)換成紅外信號。紅外探測器可以接收紅外信號攜帶的數(shù)據(jù),并且合適的電路可以將數(shù)據(jù)放到總線202上??偩€202將數(shù)據(jù)承載到主存儲器206,處理器204從主存儲器取回并執(zhí)行這些指令。在由處理器204執(zhí)行這些指令之前或之后,由主存儲器206接收的指令可隨意地儲存在存儲裝置210上。
計算機系統(tǒng)200還包括連接至總線202的通信接口218。提供雙向數(shù)據(jù)通信的通信接口218,連接到與局域網(wǎng)222連接的網(wǎng)絡鏈路220。例如,通信接口218可以是綜合業(yè)務數(shù)字網(wǎng)(ISDN)卡或者調(diào)制解調(diào)器,用于提供到相應類型的電話線的數(shù)據(jù)通信連接。又如,通信接口218可以是局域網(wǎng)(LAN)卡,用于提供至兼容局域網(wǎng)(LAN)的數(shù)據(jù)通信連接。也可以使用無線鏈路。在任何這樣的實施中,通信接口218發(fā)送和接收承載表示各種類型的信息的數(shù)字數(shù)據(jù)流的電信號、電磁信號、和光學信號。
網(wǎng)絡鏈路220通常可通過一個或者多個網(wǎng)絡向其它數(shù)據(jù)裝置提供數(shù)據(jù)通信。例如,網(wǎng)絡鏈路220可通過局域網(wǎng)222與主機224連接,或者與互聯(lián)網(wǎng)服務提供商(ISP)226操作的數(shù)據(jù)設(shè)備連接。ISP226又通過目前通稱為“互聯(lián)網(wǎng)”228的全球分組數(shù)據(jù)通信網(wǎng)絡提供數(shù)據(jù)通信服務。局域網(wǎng)222和互聯(lián)網(wǎng)228都使用承載數(shù)字數(shù)據(jù)流的電信號、電磁信號、或光學信號。通過各種網(wǎng)絡的信號和網(wǎng)絡鏈路220上的信號以及通過通信接口218的信號,都傳送數(shù)字數(shù)據(jù)給計算機系統(tǒng)200或者傳送來自計算機系統(tǒng)的數(shù)字數(shù)據(jù),是傳輸信息的載波的示例性形式。
計算機系統(tǒng)200能通過網(wǎng)絡、網(wǎng)絡鏈路220、和通信接口218發(fā)送消息和接收 數(shù)據(jù)(包括程序代碼)。在互聯(lián)網(wǎng)的實例中,服務器230可通過互聯(lián)網(wǎng)228、ISP 226、局域網(wǎng)222、和通信接口218,傳送用于應用程序的所請求的程序代碼。
所接收的代碼可以在其被接收時由處理器204執(zhí)行,和/或儲存在存儲裝置210或者其它非易失性介質(zhì)中用于隨后執(zhí)行。按照這種方式,計算機系統(tǒng)200可以以載波的形式獲得應用代碼。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種用于管理數(shù)據(jù)的方法,所述方法包括以下步驟在能夠存取多個節(jié)點的持久存儲器上保持多個持久數(shù)據(jù)項,所述持久數(shù)據(jù)項包括存儲于所述持久存儲器上的特定位置的特定數(shù)據(jù)項;將所述持久數(shù)據(jù)項中的每個的獨占所有權(quán)分配給所述節(jié)點中的一個,其中,所述多個節(jié)點的特定節(jié)點被分配有所述特定數(shù)據(jù)項的獨占所有權(quán);當任何節(jié)點想要執(zhí)行涉及所述特定數(shù)據(jù)項的操作時,由所述特定數(shù)據(jù)項存在于所述特定位置,因此期望所述操作被執(zhí)行的所述節(jié)點將所述操作傳送至所述特定節(jié)點,用于所述特定節(jié)點對所述特定數(shù)據(jù)項執(zhí)行所述操作;當?shù)谝还?jié)點繼續(xù)操作時,在不將所述特定數(shù)據(jù)項從所述持久存儲器上的所述特定位置移動的情況下,將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點;在所述再分配之后,當任何節(jié)點想要執(zhí)行涉及所述特定數(shù)據(jù)項的操作時,由于所述特定數(shù)據(jù)項存在于所述特定位置,因此期望所述操作被執(zhí)行的所述節(jié)點將所述操作傳送至所述其他節(jié)點,用于所述其他節(jié)點對所述特定數(shù)據(jù)項執(zhí)行所述操作。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點的步驟包括,更新在所述多個節(jié)點中共享的所有權(quán)映射。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述多個節(jié)點是多節(jié)點數(shù)據(jù)庫系統(tǒng)的節(jié)點。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述多節(jié)點數(shù)據(jù)庫系統(tǒng)包括不能夠存取所述持久存儲器的節(jié)點。
5.根據(jù)權(quán)利要求3所述的方法,其中所述持久存儲器是由所述多節(jié)點數(shù)據(jù)庫系統(tǒng)使用的多個持久存儲器的第一持久存儲器;以及所述方法進一步包括,將第二數(shù)據(jù)項的所有權(quán)從能夠存取所述第一持久存儲器的第一節(jié)點再分配到能夠存取第二持久存儲器但不能夠存取所述第一持久存儲器的第二節(jié)點;并且其中,所述再分配所述第二數(shù)據(jù)項的所有權(quán)的步驟包括,將所述第二數(shù)據(jù)項從所述第一持久存儲器移動至所述第二持久存儲器。
6.根據(jù)權(quán)利要求3所述的方法,其中,響應于將所述其他節(jié)點添加到所述多節(jié)點數(shù)據(jù)庫系統(tǒng),執(zhí)行所述將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點的步驟。
7.根據(jù)權(quán)利要求3所述的方法,其中預期到將從所述多節(jié)點數(shù)據(jù)庫系統(tǒng)去除所述特定節(jié)點,執(zhí)行所述將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點的步驟;并且所述方法進一步包括以下步驟,預期到將從所述多節(jié)點數(shù)據(jù)庫系統(tǒng)去除所述特定節(jié)點,將第二數(shù)據(jù)項從所述持久存儲器物理地移動到另一持久存儲器,其中,所述第二數(shù)據(jù)項從所述特定節(jié)點再分配到不能夠存取所述持久存儲器的所述多節(jié)點數(shù)據(jù)庫系統(tǒng)的節(jié)點。
8.根據(jù)權(quán)利要求3所述的方法,其中,所述將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點的步驟被執(zhí)行作為所有權(quán)從所述特定節(jié)點到一個或多個其他節(jié)點的逐漸轉(zhuǎn)移的一部分。
9.根據(jù)權(quán)利要求8所述的方法,其中,響應于檢測到相對于所述多節(jié)點數(shù)據(jù)庫系統(tǒng)的一個或多個其他節(jié)點而言所述特定節(jié)點工作過度,開始所述逐漸轉(zhuǎn)移。
10.根據(jù)權(quán)利要求9所述的方法,其中,響應于檢測到相對于所述多節(jié)點數(shù)據(jù)庫系統(tǒng)的一個或多個其他節(jié)點而言所述特定節(jié)點不再工作過度,終止所述逐漸轉(zhuǎn)移。
11.根據(jù)權(quán)利要求3所述的方法,其中,所述將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點的步驟被執(zhí)行作為所有權(quán)從一個或多個其他節(jié)點到所述其他節(jié)點的逐漸轉(zhuǎn)移的一部分,其中,響應于檢測到相對于所述多節(jié)點數(shù)據(jù)庫系統(tǒng)中的一個或多個其他節(jié)點而言所述其他節(jié)點工作不足,開始所述逐漸轉(zhuǎn)移。
12.根據(jù)權(quán)利要求3所述的方法進一步包括以下步驟在已經(jīng)從所述多節(jié)點系統(tǒng)去除第一節(jié)點之后,繼續(xù)使一組數(shù)據(jù)項由所述第一節(jié)點擁有;以及響應于檢測到對涉及所述數(shù)據(jù)項的操作的請求,將數(shù)據(jù)項的所有權(quán)從所述第一節(jié)點再分配到一個或多個其他節(jié)點。
13.根據(jù)權(quán)利要求3所述的方法進一步包括以下步驟在已經(jīng)從所述多節(jié)點系統(tǒng)去除第一節(jié)點之后,繼續(xù)使一組數(shù)據(jù)項由所述第一節(jié)點所擁有;以及響應于檢測到第二節(jié)點的工作負荷已經(jīng)降至預定閾值以下,將數(shù)據(jù)項的所有權(quán)從所述第一節(jié)點再分配到所述第二節(jié)點。
14.根據(jù)權(quán)利要求1所述的方法,其中當所述特定數(shù)據(jù)項將被再分配給所述其他節(jié)點時,所述特定節(jié)點在易失存儲器中存儲所述特定數(shù)據(jù)項的臟版本;以及所述將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點的步驟包括,將所述特定數(shù)據(jù)項的所述臟版本寫入所述持久存儲器。
15.根據(jù)權(quán)利要求1所述的方法,其中當所述特定數(shù)據(jù)項將被再分配給所述其他節(jié)點時,所述特定節(jié)點在易失存儲器中存儲所述特定數(shù)據(jù)項的臟版本;以及所述將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點的步驟包括,將與所述臟版本相關(guān)的一個或多個重做記錄強加到持久存儲器,并且在不將所述特定數(shù)據(jù)項的所述臟版本寫入所述持久存儲器的情況下,從所述易失存儲器清除所述臟版本;所述其他節(jié)點通過對存在于所述持久存儲器上的所述特定數(shù)據(jù)項的版本應用所述一個或多個重做記錄,來重建所述臟版本。
16.根據(jù)權(quán)利要求1所述的方法,其中當所述特定數(shù)據(jù)項將被再分配給所述其他節(jié)點時,所述特定節(jié)點在易失存儲器中存儲所述特定數(shù)據(jù)項的臟版本;并且所述方法進一步包括以下步驟,將所述特定數(shù)據(jù)項的所述臟版本從與所述特定節(jié)點相關(guān)的易失存儲器轉(zhuǎn)移至與所述其他節(jié)點相關(guān)的易失存儲器。
17.根據(jù)權(quán)利要求16所述的方法,其中,所述轉(zhuǎn)移所述臟版本的步驟由所述特定節(jié)點在不經(jīng)所述其他節(jié)點請求所述臟版本的情況下主動執(zhí)行。
18.根據(jù)權(quán)利要求16所述的方法,其中,所述轉(zhuǎn)移所述臟版本的步驟由所述特定節(jié)點響應于來自所述其他節(jié)點的對所述臟版本的請求而執(zhí)行。
19.根據(jù)權(quán)利要求1所述的方法,其中在不等待正修改所述數(shù)據(jù)項的事務提交的情況下,執(zhí)行所述將所述特定數(shù)據(jù)項的所有權(quán)從所述特定節(jié)點再分配到另一節(jié)點的步驟;當所述特定數(shù)據(jù)項由所述特定節(jié)點所擁有時,所述事務做出第一組修改;以及當所述特定數(shù)據(jù)項由所述其他節(jié)點所擁有時,所述事務做出第二組修改。
20.根據(jù)權(quán)利要求19所述的方法進一步包括,通過基于與所述其他節(jié)點相關(guān)的撤銷日志中的撤銷記錄退回所述第二組修改,并且基于與所述特定節(jié)點相關(guān)的撤銷日志中的撤銷記錄退回所述第一組修改,來退回由所述事務做出的改變。
21.根據(jù)權(quán)利要求1所述的方法,其中,所述方法包括以下步驟所述其他節(jié)點接收到更新所述數(shù)據(jù)項的請求;確定所述特定節(jié)點是否能夠以獨占模式或共享模式存取所述數(shù)據(jù)項;如果所述特定節(jié)點不能夠以獨占模式或共享模式存取所述數(shù)據(jù)項,則所述其他節(jié)點在不等待所述特定節(jié)點將所述數(shù)據(jù)項的任何臟版本或臟版本的重做轉(zhuǎn)儲到持久存儲器的情況下,更新所述特定數(shù)據(jù)項。
22.根據(jù)權(quán)利要求1所述的方法進一步包括以下步驟響應于將所述特定數(shù)據(jù)項的所有權(quán)轉(zhuǎn)移至所述其他節(jié)點,中止涉及所述特定數(shù)據(jù)項的進行中的操作;在所述特定數(shù)據(jù)項的所有權(quán)已經(jīng)被轉(zhuǎn)移至所述特定節(jié)點之后,重新執(zhí)行所述進行中的操作。
23.根據(jù)權(quán)利要求1所述的方法,其中在所述特定數(shù)據(jù)項的所有權(quán)的轉(zhuǎn)移將被執(zhí)行時,涉及所述特定數(shù)據(jù)項的操作在進行中;所述方法進一步包括以下步驟,基于一組一個或多個因素,確定是否等待所述進行中的操作完成;以及如果確定不等待所述進行中的操作完成,則中止所述進行中的操作。
24.根據(jù)權(quán)利要求23所述的方法,其中,所述一組一個或多個因素包括所述進行中的操作已經(jīng)執(zhí)行了多少工作。
25.一種用于管理數(shù)據(jù)的方法,所述方法包括以下步驟在能夠存取多個節(jié)點的持久存儲器上保持多個持久數(shù)據(jù)項;通過將每個數(shù)據(jù)項分配給多個存儲段中的一個,將所述持久數(shù)據(jù)項中的每個的所有權(quán)分配給所述節(jié)點中的一個;以及將每個存儲段分配給所述多個節(jié)點中的一個;其中,分配有存儲段的節(jié)點被建立作為被分配給所述存儲段的所有數(shù)據(jù)項的所有者。當?shù)谝还?jié)點想要執(zhí)行涉及由第二節(jié)點所擁有的數(shù)據(jù)項的操作時,所述第一節(jié)點將所述操作傳送給所述第二節(jié)點,用于所述第二節(jié)點執(zhí)行所述操作。
26.根據(jù)權(quán)利要求25所述的方法,其中,通過對與每個數(shù)據(jù)項相關(guān)的名稱應用散列函數(shù)來執(zhí)行所述將每個數(shù)據(jù)項分配給多個存儲段中的一個的步驟。
27.根據(jù)權(quán)利要求25所述的方法,其中,通過對與每個存儲段相關(guān)的標識符應用散列函數(shù)來執(zhí)行所述將每個存儲段分配給所述多個節(jié)點中的一個的步驟。
28.根據(jù)權(quán)利要求25所述的方法,其中,使用基于范圍的分區(qū)來執(zhí)行所述將每個數(shù)據(jù)項分配給多個存儲段中的一個的步驟。
29.根據(jù)權(quán)利要求25所述的方法,其中,使用基于范圍的分區(qū)來執(zhí)行所述將每個存儲段分配給所述多個節(jié)點中的一個的步驟。
30.根據(jù)權(quán)利要求25所述的方法,其中,通過列舉單個數(shù)據(jù)項對存儲段的關(guān)系來執(zhí)行所述將每個數(shù)據(jù)項分配給多個存儲段中的一個的步驟。
31.根據(jù)權(quán)利要求25所述的方法,其中,通過列舉單個存儲段對節(jié)點的關(guān)系來執(zhí)行所述將每個存儲段分配給所述多個節(jié)點中的一個的步驟。
32.根據(jù)權(quán)利要求25所述的方法,其中,存儲段的數(shù)量大于節(jié)點的數(shù)量,并且所述存儲段對節(jié)點的關(guān)系是多對一關(guān)系。
33.根據(jù)權(quán)利要求25所述的方法進一步包括以下步驟,通過在不修改數(shù)據(jù)項到存儲段的映射的情況下修改存儲段到節(jié)點的映射,來將被映射到存儲段的所有數(shù)據(jù)項的所有權(quán)從第一節(jié)點再分配到第二節(jié)點。
34.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求1中所述的方法。
35.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求2中所述的方法。
36.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求3中所述的方法。
37.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求4中所述的方法。
38.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求5中所述的方法。
39.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求6中所述的方法。
40.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求7中所述的方法。
41.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求8中所述的方法。
42.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求9中所述的方法。
43.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求10中所述的方法。
44.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求11中所述的方法。
45.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求12中所述的方法。
46.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求13中所述的方法。
47.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求14中所述的方法。
48.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求15中所述的方法。
49.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求16中所述的方法。
50.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求17中所述的方法。
51.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求18中所述的方法。
52.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求19中所述的方法。
53.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求20中所述的方法。
54.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求21中所述的方法。
55.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求22中所述的方法。
56.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求23中所述的方法。
57.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求24中所述的方法。
58.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求25中所述的方法。
59.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求26中所述的方法。
60.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求27中所述的方法。
61.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求28中所述的方法。
62.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求29中所述的方法。
63.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求30中所述的方法。
64.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求31中所述的方法。
65.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求32中所述的方法。
66.一種計算機可讀介質(zhì),承載有一個或多個指令序列,當所述指令序列由一個或多個處理器執(zhí)行時,使所述一個或多個處理器執(zhí)行在權(quán)利要求33中所述的方法。
67.一種用于多節(jié)點無共享數(shù)據(jù)庫系統(tǒng)的方法,所述方法包括以下步驟所述多節(jié)點無共享數(shù)據(jù)庫系統(tǒng)的第一節(jié)點開始起到第一數(shù)據(jù)項和第二數(shù)據(jù)項的獨占所有者的作用,其中,所述第一數(shù)據(jù)項和所述第二數(shù)據(jù)項是由所述多節(jié)點無共享數(shù)據(jù)庫系統(tǒng)管理的數(shù)據(jù)庫中的持久地存儲的數(shù)據(jù)項;在不改變第一數(shù)據(jù)項在持久存儲器上的位置或關(guān)閉所述第一節(jié)點的情況下,將所述第一數(shù)據(jù)項的所有權(quán)從所述第一節(jié)點再分配到所述多節(jié)點無共享數(shù)據(jù)庫系統(tǒng)的第二節(jié)點;以及在再分配所有權(quán)之后,所述第一節(jié)點繼續(xù)作為所述第二數(shù)據(jù)項的所有者,并繼續(xù)處理對所述第二數(shù)據(jù)項的操作的所有請求。
全文摘要
本發(fā)明描述了用于提高無共享數(shù)據(jù)庫系統(tǒng)的性能的各種技術(shù),其中,運行該無共享數(shù)據(jù)庫系統(tǒng)的節(jié)點中的至少兩個節(jié)點能夠共享地存取磁盤。特別地,提供用于在不改變數(shù)據(jù)在持久存儲器上的位置的情況下改變無共享數(shù)據(jù)庫中的數(shù)據(jù)的所有權(quán)的技術(shù)。由于數(shù)據(jù)的持久存儲位置在數(shù)據(jù)的所有權(quán)的轉(zhuǎn)移期間沒有被改變,因此可以更加自由地轉(zhuǎn)移所有權(quán),并且具有比由數(shù)據(jù)的物理重新布置另外的招致的更小的性能損失。還描述了用于提供所有權(quán)的快速運行時再分配的各種技術(shù)。由于能夠在運行時期間執(zhí)行再分配,因此不必使無共享系統(tǒng)脫機來執(zhí)行再分配。另外,這些技術(shù)描述了如何以相對的精細粒度來執(zhí)行再分配,避免僅僅為了再分配在節(jié)點中的一個節(jié)點上的少數(shù)數(shù)據(jù)項的所有權(quán)而需要執(zhí)行經(jīng)過所有節(jié)點的大量數(shù)據(jù)的大量再分配。
文檔編號G06F9/46GK1829961SQ200480021585
公開日2006年9月6日 申請日期2004年7月28日 優(yōu)先權(quán)日2003年8月1日
發(fā)明者羅杰·J·班福德, 薩希坎什·錢德拉塞克拉, 安杰洛·普魯希諾 申請人:甲骨文國際公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1