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