專利名稱:用于擴展無共享系統(tǒng)的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及在無共享系統(tǒng)中的數(shù)字數(shù)據(jù)的存儲和檢索。更具體地,本發(fā)明涉及一種采用最小服務(wù)中斷來擴展無共享系統(tǒng)的技術(shù)。
背景技術(shù):
附圖1中示出了本領(lǐng)域中已知的無共享網(wǎng)絡(luò)100。所述無共享網(wǎng)絡(luò)100或體系結(jié)構(gòu)100包括主節(jié)點102和一組無共享節(jié)點104_A至104_H。每個無共享節(jié)點104具有它自己的專用存儲器、磁盤和輸入/輸出設(shè)備,并獨立于體系結(jié)構(gòu)100中的其他節(jié)點運行。每個節(jié)點自給自足,在整個網(wǎng)絡(luò)中無共享。因此,在整個系統(tǒng)中沒有爭論的焦點并沒有共享系統(tǒng)資源。本體系結(jié)構(gòu)的優(yōu)點是它具有高擴展性。數(shù)據(jù)庫系統(tǒng)將數(shù)據(jù)存儲在分布在無共享節(jié)點中的表中。通過將每個數(shù)據(jù)(例如,每個記錄或每行)分配到節(jié)點之一來存儲數(shù)據(jù)。數(shù)據(jù)通常根據(jù)兩種方式之一分配給節(jié)點。一種方法是散列分布,使用散列函數(shù)映射數(shù)據(jù)到節(jié)點。另一個方法是以循環(huán)或隨機方式將數(shù)據(jù)分配至節(jié)點。散列計算得出的部分數(shù)據(jù)被稱為分布鍵。分布鍵可以是復(fù)合鍵,也就是包含一行中的幾個列。散列分布產(chǎn)生均勻的數(shù)據(jù)分布和具有相同分布鍵的協(xié)同定位記錄(也就是指具有相同分布鍵的記錄被分配至相同的節(jié)點)。協(xié)同定位數(shù)據(jù)經(jīng)常被用于連接操作,連接操作中來自不同數(shù)據(jù)庫表的數(shù)據(jù)被合并。在查詢工作負載中,連接操作通常是成本最高的操作。通常通過選用連接列作為分布鍵,連接在每個節(jié)點的基礎(chǔ)上被執(zhí)行,而無需在處理步驟之間在節(jié)點中再分布數(shù)據(jù)。表的所有行都是使用相同的分布鍵進行分布。單獨的表通常選擇不同的分布鍵。節(jié)點被增加至無共享系統(tǒng)用來容納更多的數(shù)據(jù)或額外的查詢工作負載。當(dāng)新的節(jié)點加至系統(tǒng),數(shù)據(jù)需要被再分布。數(shù)據(jù)再分布通常需要單個數(shù)據(jù)的審查和位置的再分配。再評估大型數(shù)據(jù)的每一行需耗費大量時間,例如再分配數(shù)千萬TB字節(jié)的數(shù)據(jù)要花費數(shù)日。因此,當(dāng)需要增加一個節(jié)點至無共享系統(tǒng)時,通常的做法就是安排幾天的宕機時間。這就需要降低與擴大無共享數(shù)據(jù)存儲相關(guān)的停機時間。
發(fā)明內(nèi)容
一種包括可執(zhí)行指令用于評估擴展無共享數(shù)據(jù)存儲配置的方法和計算機可讀存儲介質(zhì)。形成具有特定參數(shù)的數(shù)據(jù)再分布安排表。數(shù)據(jù)根據(jù)數(shù)據(jù)再分布安排表在擴展的無共享數(shù)據(jù)存儲中再分布。
結(jié)合下面詳細的說明以及相關(guān)的附圖,本發(fā)明能夠得到更好的理解:附圖1圖示了本領(lǐng)域中已知的無共享網(wǎng)絡(luò)體系結(jié)構(gòu)。附圖2圖示了無共享網(wǎng)絡(luò)的主節(jié)點在本發(fā)明一實施例中的應(yīng)用。
附圖3圖示了無共享網(wǎng)絡(luò)的無共享節(jié)點在本發(fā)明一實施例中的應(yīng)用。附圖4圖示了有關(guān)擴展鑒別器的處理操作在本發(fā)明一實施例中的應(yīng)用。附圖5圖示了安排表在本發(fā)明有關(guān)實施例中的應(yīng)用。附圖6圖示了依據(jù)本發(fā)明一實施例的表再分布操作的執(zhí)行。相同的標號代表多個附圖中的視圖的對應(yīng)部分。
具體實施例方式圖2示出了主節(jié)點202配置為執(zhí)行本發(fā)明的操作。主節(jié)點202具有標準元件,例如一個或多個CPU210_A到210_N。所述CPU通過總線214連接到輸入/輸出設(shè)備212。輸入/輸出設(shè)備212可以包括標準元件,例如鍵盤、鼠標、顯示器、打印機等等。網(wǎng)絡(luò)接口電路216也連接至總線214上,使得主節(jié)點202在聯(lián)網(wǎng)環(huán)境中進行操作。存儲器220同樣連接至總線214上。存儲器220用于存儲執(zhí)行本發(fā)明實施例的可執(zhí)行指令。尤其是,存儲器220存儲擴展鑒別器222。所述擴展鑒別器222包括用于估計增加至無共享系統(tǒng)的一個或多個節(jié)點的可執(zhí)行指令?;谝延械暮驮黾拥墓?jié)點性能屬性,擴展鑒別器222形成一個具有參數(shù)的數(shù)據(jù)再分布安排表224,存儲在存儲器220中。用戶可以訪問表224用來重新配置數(shù)據(jù)再分布任務(wù)和/或用來追蹤數(shù)據(jù)再分布任務(wù)的進度。圖3示出了無共享節(jié)點304在本發(fā)明一實施例中的應(yīng)用。所述無共享節(jié)點304也包括標準元件,例如一組CPU310A_到310_N連接至總線314。一組輸入/輸出設(shè)備312也連接至總線314。網(wǎng)絡(luò)接口電路316同樣連接至總線314,為網(wǎng)絡(luò)提供連通性。存儲器320也連接至總線314。存儲器320包括用于執(zhí)行本發(fā)明的操作的數(shù)據(jù)和可執(zhí)行指令。尤其是,存儲器320包括具有可執(zhí)行指令的再分布模塊322,所述可執(zhí)行指令用來在無共享數(shù)據(jù)庫段324中再分布數(shù)據(jù)。所述再分布模塊322根據(jù)數(shù)據(jù)再分布安排表來分布數(shù)據(jù)。圖4示出了處理操作在本發(fā)明一實施例中的應(yīng)用。新的無共享數(shù)據(jù)存數(shù)配置被402估計。這可以用擴展鑒別器222執(zhí)行。具有特定參數(shù)的數(shù)據(jù)再分布安排表隨后形成404。這一操作同樣也可以用擴展鑒別器222執(zhí)行。數(shù)據(jù)隨后在無共享系統(tǒng)406中被再分布。位于單個節(jié)點的再分布模塊322可被用于執(zhí)行該操作。圖5不出了根據(jù)本發(fā)明一實施例配置的數(shù)據(jù)再分布安排表500。表500包括列502用來指明需要被遷移的不同的表。表500還包括列504指明優(yōu)先級,所述優(yōu)先級應(yīng)該被歸因于表的遷移。因此,例如頻繁使用的表可能被分配為高的優(yōu)先級。表500也指明了平行度506。平行度表征源表的數(shù)量,所述源表能夠同時再分布。表500也可以具有一個或多個時間列508。時間列可以為數(shù)據(jù)遷移任務(wù)指示起始時間。時間列508還可以指示任務(wù)被執(zhí)行的持續(xù)時間(例如,從午夜到早上六點連續(xù)幾日直到完成)。圖5示出的表500中可以包括一進度列510。進度信息表征數(shù)據(jù)遷移任務(wù)完成的百分比。最終,表500還可以包括一個完成列512,用以指示數(shù)據(jù)遷移任務(wù)是否完成。如前所述,擴展鑒別器222可以被用于形成表500。優(yōu)選地,表可以被管理員進行編輯。例如,表被管理員更好地編輯以改變參數(shù),如,優(yōu)先級、平行度和時間。定期查詢工具,如SQL可以被用于改變表的參數(shù)。圖6示出了被再分布模塊222執(zhí)行的操作。在一個實施例中,再分布模塊602生成一個對應(yīng)于已有表602的目標表。例如,目標表在系統(tǒng)的新增加的節(jié)點上被形成。目標表是原始表定義的復(fù)制,但是不包含任何數(shù)據(jù),并且相對于其他事務(wù)處理不可見。源表隨后被604鎖定。這就阻止了升級,但是可讀。數(shù)據(jù)從源表中讀出并被再分布至目標表606中。這就使得,數(shù)據(jù)被一排排讀出然后被插入目標表。當(dāng)數(shù)據(jù)交換完成,源表和目標表自動交換。就是說,系統(tǒng)看見新的目標表替換了原始源表。表的分布策略對要用到的分布類型進行編碼,例如散列或循環(huán)。在散列分布的情形下,分布策略定義分布鍵。優(yōu)選地,每個表的分布被記錄在數(shù)據(jù)庫目錄中(為了簡便,將表和表的部分都稱為表)。在散列分布的情形下,數(shù)據(jù)(一行中的一個或多個列)被用來計算散列值。散列值映射到節(jié)點,例如基于模操作。優(yōu)選地,分布策略對客戶應(yīng)用程序是透明的,在這種情況下,分布的數(shù)據(jù)可以被客戶以相同的查詢進行訪問。根據(jù)應(yīng)用的分布,查詢處理器可以選擇不同的執(zhí)行方案并采用歸因于散列分布的協(xié)同定位。根據(jù)查詢工作負載,在有關(guān)響應(yīng)時間和資源占用(例如存儲)方面,其處理隨機分布數(shù)據(jù)不可能和處理散列分布數(shù)據(jù)一樣高效。本發(fā)明的數(shù)據(jù)遷移可以在最小的宕機時間下執(zhí)行。在一個實施例中,系統(tǒng)僅在初始化階段脫機。在初始化階段,形成數(shù)據(jù)目錄,并將從已有數(shù)據(jù)庫的有關(guān)所有用戶表的信息定義在新的節(jié)點上。這一過程在擴展模式中為每個表獲取用于狀態(tài)追蹤的元數(shù)據(jù)。作為初始化過程的一部分,用于所有表的策略被設(shè)置為隨機分布(即散列分布策略是無效的)。在初始化完成之后,用戶可以繼續(xù)訪問數(shù)據(jù)庫,并且系統(tǒng)恢復(fù)聯(lián)機。聯(lián)機時,數(shù)據(jù)的完整性得以保障,正常運行,例如ETL作業(yè),支持用戶查詢和報告。只有當(dāng)表正在遷移時,每個表或表的部分不能進行寫入操作,例如當(dāng)表正被再分布時。因此,本發(fā)明支持以最小的宕機時間擴展無共享數(shù)據(jù)庫。本發(fā)明根據(jù)一新的映射,再分布單個表以均勻散布原有和增加的節(jié)點的數(shù)據(jù)。當(dāng)數(shù)據(jù)庫系統(tǒng)全面運轉(zhuǎn)時,數(shù)據(jù)再分布可以執(zhí)行。沒有被再分布的數(shù)據(jù)仍然可以進行訪問,盡管訪問效率可能會降低。優(yōu)選地,通過將每個數(shù)據(jù)保持在至少兩倍,來保持在再分布過程中的系統(tǒng)容錯。具有特定參數(shù)的數(shù)據(jù)再分布安排表允許管理員修改數(shù)據(jù)遷移任務(wù)。例如,所述表允許管理員賦予頻繁使用的表以優(yōu)先級,以使得它最先被再分布。表還可以被設(shè)置為在特定時間,例如僅在高峰時段,執(zhí)行數(shù)據(jù)再分布任務(wù)。平行度也可以被定義為指明一次再分布的表的數(shù)量。本發(fā)明的一個實施例涉及一種具有計算機可讀存儲介質(zhì)計算機存儲產(chǎn)品,所述計算機可讀存儲介質(zhì)上具有計算機代碼用于執(zhí)行不同的計算機執(zhí)行操作。所述介質(zhì)和計算機代碼可以是那些為本發(fā)明的目的而專門設(shè)計和構(gòu)造的,或者可以是對本計算機軟件領(lǐng)域人員所熟知的可用的介質(zhì)和代碼。例如計算機可讀介質(zhì)可包括但不限于:磁性介質(zhì)如硬盤、軟盤和磁帶;光介質(zhì)如⑶-ROM、DVD、和全息設(shè)備、磁光介質(zhì);以及特別配置為存儲和執(zhí)行程序代碼的硬件設(shè)備,例如專用集成電路(ASIC),可編程邏輯設(shè)備(PLD)及ROM和RAM設(shè)備。計算機代碼例如包括如編譯器產(chǎn)生的機器代碼,以及被計算機用解釋器執(zhí)行的包含更高級別的文件代碼。例如,本發(fā)明的實施例可以使用JAVA ,C++或其它編程語言和開發(fā)工具。本發(fā)明的另一實施例可以以硬線電路替代或與機器可執(zhí)行軟件指令結(jié)合來執(zhí)行。為了說明的目的,說明書在上述中采用了特定的術(shù)語以使本發(fā)明被徹底理解。然而,明顯對于本領(lǐng)域技術(shù)人員來講,為了實踐本發(fā)明,并不需要某些具體細節(jié)。因此,本發(fā)明上述的具體實施例的闡述只是為了說明和描述的目的。并不意圖詳盡或?qū)⒈景l(fā)明限定到公開的精密形式;顯然,上述內(nèi)容可能給出了很多實施例和變形的啟示。本發(fā)明中選出和描述的實施例是為了最好地解釋本發(fā)明及其實際應(yīng)用的理論,因此可被本領(lǐng)域技術(shù)人員可用多種改造對本發(fā)明及其多個實施例進行充分利用。
權(quán)利要求
1.一種計算機可讀存儲介質(zhì),包括可執(zhí)行指令用于: 估計擴展無共享數(shù)據(jù)存儲配置; 形成具有特定參數(shù)的數(shù)據(jù)再分布安排表;及 根據(jù)數(shù)據(jù)再分布安排表,在擴展無共享數(shù)據(jù)內(nèi)再分布數(shù)據(jù)。
2.根據(jù)權(quán)利要求1中的計算機可讀存儲介質(zhì),其中所述數(shù)據(jù)再分布安排表識別源表,所述源表具有需被再分布的數(shù)據(jù)。
3.根據(jù)權(quán)利要求2中的計算機可讀存儲介質(zhì),其中所述數(shù)據(jù)再分布安排表為源表識別再分布優(yōu)先級。
4.根據(jù)權(quán)利要求1中的計算機可讀存儲介質(zhì),其中所述數(shù)據(jù)再分布安排表規(guī)定了平行度,所述平行度表征能被同時再分布的源表的數(shù)量。
5.根據(jù)權(quán)利要求1中的計算機可讀存儲介質(zhì),其中所述數(shù)據(jù)再分布數(shù)據(jù)表規(guī)定了再分布源表的起始時間。
6.根據(jù)權(quán)利要求1中的計算機可讀存儲介質(zhì),其中所述數(shù)據(jù)再分布分布表規(guī)定了再分布源表的持續(xù)時間。
7.根據(jù)權(quán)利要求1中的計算機可讀存儲介質(zhì),其中所述數(shù)據(jù)在分布表顯示數(shù)據(jù)再分布進程。
8.根據(jù)權(quán)利要求1中的計算機可讀存儲介質(zhì),其中所述數(shù)據(jù)再分布安排表指示數(shù)據(jù)再分布完成狀態(tài)。
9.根據(jù)權(quán)利要求1中的計算機可讀存儲介質(zhì),進一步包括在初始化階段將已有表定義復(fù)制至新的無共享系統(tǒng)數(shù)據(jù)存儲資源的可執(zhí)行指令。
10.根據(jù)權(quán)利要求9中的計算機可讀存儲介質(zhì),進一步包括在初始化階段用于無效散列分布策略的可執(zhí)行指令。
11.根據(jù)權(quán)利要求1中的計算機可讀存儲介質(zhì),進一步包括用于形成數(shù)據(jù)再分布狀態(tài)追蹤的擴展模式的可執(zhí)行指令。
12.—種擴展無共享系統(tǒng)的方法,包括: 估計擴展無共享數(shù)據(jù)存儲配置; 形成具有特定參數(shù)的數(shù)據(jù)再分布安排表;及 根據(jù)數(shù)據(jù)再分布安排表,在擴展無共享數(shù)據(jù)內(nèi)再分布數(shù)據(jù)。
13.根據(jù)權(quán)利要求12中的方法,其中所述數(shù)據(jù)再分布安排表識別源表,所述源表具有需被再分布的數(shù)據(jù)。
14.根據(jù)權(quán)利要求12中的方法,進一步包括在初始化階段將已有表定義復(fù)制至新的無共享系統(tǒng)數(shù)據(jù)存儲資源。
15.根據(jù)權(quán)利要求14中的方法,進一步包括在初始化階段使散列分布策略無效。
16.根據(jù)權(quán)利要求12中的方法,進一步包括形成數(shù)據(jù)再分布狀態(tài)追蹤的擴展模式。
全文摘要
本發(fā)明涉及一種包含可執(zhí)行指令的計算機可讀存儲介質(zhì)及方法,所述可執(zhí)行指令用于估計擴展的無共享數(shù)據(jù)存儲配置。形成具有特定參數(shù)的數(shù)據(jù)再分布安排表。數(shù)據(jù)在擴展的無共享數(shù)據(jù)內(nèi)進行再分布,所述數(shù)據(jù)根據(jù)數(shù)據(jù)再分布安排表進行存儲。
文檔編號G06F12/00GK103180835SQ201180036769
公開日2013年6月26日 申請日期2011年5月17日 優(yōu)先權(quán)日2010年5月26日
發(fā)明者布萊恩·哈根布什, 加文·謝里, 杰弗瑞·艾爾·科恩, 克里斯·佩德羅第, 約翰·埃謝爾曼, 弗洛萊恩·邁克爾·華倫, 喬·杰·肯特 申請人:伊姆西公司