數(shù)據(jù)庫(kù)系統(tǒng)、程序以及數(shù)據(jù)處理方法
【專利摘要】本發(fā)明提供數(shù)據(jù)庫(kù)系統(tǒng)、程序以及數(shù)據(jù)處理方法。實(shí)施方式的數(shù)據(jù)庫(kù)系統(tǒng)具備存儲(chǔ)數(shù)據(jù)庫(kù)的多個(gè)節(jié)點(diǎn)、和管理多個(gè)節(jié)點(diǎn)的管理裝置。管理裝置具有第一分配部和第二分配部。第一分配部根據(jù)多個(gè)節(jié)點(diǎn)各自的狀況的變更,來分配存儲(chǔ)數(shù)據(jù)集合并接收對(duì)數(shù)據(jù)集合的訪問請(qǐng)求的第一節(jié)點(diǎn)以及存儲(chǔ)數(shù)據(jù)集合并作為第一節(jié)點(diǎn)的備份的第二節(jié)點(diǎn),對(duì)多個(gè)節(jié)點(diǎn)的每一個(gè)指示與分配對(duì)應(yīng)的動(dòng)作。第二分配部根據(jù)多個(gè)節(jié)點(diǎn)的狀況、第一節(jié)點(diǎn)以及第二節(jié)點(diǎn)的分配狀況的變更,來分配作為第一節(jié)點(diǎn)或者第二節(jié)點(diǎn)的候補(bǔ)的第三節(jié)點(diǎn),針對(duì)多個(gè)節(jié)點(diǎn)的每一個(gè)指示用于使第三節(jié)點(diǎn)作為第一節(jié)點(diǎn)或者第二節(jié)點(diǎn)進(jìn)行動(dòng)作的準(zhǔn)備。
【專利說明】數(shù)據(jù)庫(kù)系統(tǒng)、程序以及數(shù)據(jù)處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施方式涉及數(shù)據(jù)庫(kù)系統(tǒng)、程序以及數(shù)據(jù)處理方法。
【背景技術(shù)】
[0002](無分享型數(shù)據(jù)庫(kù))
[0003]以往,公知有一種無分享型數(shù)據(jù)庫(kù)系統(tǒng)。無分享型數(shù)據(jù)庫(kù)系統(tǒng)具備相互通過網(wǎng)絡(luò)連接的多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)。
[0004]多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)分別是獨(dú)立地具有處理器、存儲(chǔ)器(memory)以及貯存器(storage)等資源的計(jì)算機(jī)。對(duì)無分享型數(shù)據(jù)庫(kù)系統(tǒng)而言,由于資源按每個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)被完全分離,所以在數(shù)據(jù)庫(kù)節(jié)點(diǎn)間不會(huì)產(chǎn)生訪問沖突。因此,無分享型數(shù)據(jù)庫(kù)系統(tǒng)能夠通過增加數(shù)據(jù)庫(kù)節(jié)點(diǎn)來使性能線形提高。即,無分享型數(shù)據(jù)庫(kù)系統(tǒng)是能夠高效地實(shí)現(xiàn)追加數(shù)據(jù)庫(kù)節(jié)點(diǎn)的橫向擴(kuò)展(scale out)的系統(tǒng)。
[0005](分割法(Partit1ning))
[0006]在無分享型數(shù)據(jù)庫(kù)系統(tǒng),可以應(yīng)用被稱為分割法的技術(shù)。分割法是將數(shù)據(jù)庫(kù)分割成多個(gè),并將分割后的各個(gè)數(shù)據(jù)集合(被稱為分區(qū)(Partit1n))分散到多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)而使其存儲(chǔ)的技術(shù)。由于應(yīng)用了分割法的無分享型數(shù)據(jù)庫(kù)系統(tǒng)能夠減小使各個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)集合,所以能夠?qū)碜钥蛻舳说脑L問分散到多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)。
[0007](分片(sharding))
[0008]作為數(shù)據(jù)庫(kù)技術(shù)之一,有一種被稱為分片的技術(shù)。分片是將數(shù)據(jù)分割成更小的數(shù)據(jù),自動(dòng)地分散保存到多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)的技術(shù)。分片是與無分享型數(shù)據(jù)庫(kù)系統(tǒng)的分割法類似的技術(shù)。
[0009](分布鍵值(Key-Value)型數(shù)據(jù)庫(kù))
[0010]另外,公知有一種鍵值型數(shù)據(jù)庫(kù)。鍵值型數(shù)據(jù)庫(kù)是基于與編程言語(yǔ)的聯(lián)想排列或者M(jìn)ap同樣地由鍵和值的對(duì)構(gòu)成的單純的數(shù)據(jù)模型的數(shù)據(jù)庫(kù)。另外,還公知有一種通過基于鍵對(duì)鍵值型數(shù)據(jù)庫(kù)進(jìn)行分片來分散化的分布鍵值型數(shù)據(jù)庫(kù)。
[0011]對(duì)鍵值型數(shù)據(jù)庫(kù)而言,由于數(shù)據(jù)模型單純,所以分片以及分割法的處理容易。另夕卜,分布鍵值型數(shù)據(jù)庫(kù)能夠使用多個(gè)鍵值型數(shù)據(jù)庫(kù)節(jié)點(diǎn),處理由單一的鍵值型數(shù)據(jù)庫(kù)節(jié)點(diǎn)無法應(yīng)對(duì)那樣的大規(guī)模數(shù)據(jù)集合。因此,通過將分布鍵值型數(shù)據(jù)庫(kù)應(yīng)用于具有多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)的無分享型數(shù)據(jù)庫(kù)系統(tǒng),可實(shí)現(xiàn)能夠橫向擴(kuò)展的大規(guī)模的數(shù)據(jù)庫(kù)系統(tǒng)。
[0012]并且,這樣的應(yīng)用了分布鍵值型數(shù)據(jù)庫(kù)的無分享型數(shù)據(jù)庫(kù)系統(tǒng)(以下稱為橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng))通過將數(shù)據(jù)均衡地配置于多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn),可使來自客戶端的訪問分散而整體提高吞吐量(Throughput)以及響應(yīng)。
[0013]現(xiàn)有技術(shù)文獻(xiàn)
[0014]專利文獻(xiàn)
[0015]專利文獻(xiàn)1:日本特開2009 - 157785號(hào)公報(bào)
[0016]專利文獻(xiàn)2:日本特開2005 - 196602號(hào)公報(bào)
[0017]非專利文獻(xiàn)
[0018]非專利文獻(xiàn)1:“MongoDB Manual Contents”、[Online]、lOgen、[平成 25 年 I 月18 日検索]、^、y 夕一才、'7 卜 <URL:http://docs.mongodb.0rg/manual/contents/>
【發(fā)明內(nèi)容】
[0019]發(fā)明要解決的問題
[0020]在橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)中,可應(yīng)用將數(shù)據(jù)的復(fù)制品(replica:副本)存儲(chǔ)到其他數(shù)據(jù)庫(kù)節(jié)點(diǎn)的被稱為復(fù)制(Replicat1n)的技術(shù)。橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)通過進(jìn)行復(fù)制,即使在某個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)發(fā)生了故障,也能夠使用存儲(chǔ)了副本的數(shù)據(jù)庫(kù)節(jié)點(diǎn)來繼續(xù)服務(wù)。將對(duì)數(shù)據(jù)的副本進(jìn)行存儲(chǔ)的數(shù)據(jù)庫(kù)節(jié)點(diǎn)的個(gè)數(shù)稱為冗余度。在橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)中,例如設(shè)定2個(gè)或者3個(gè)作為冗余度。
[0021]這里,對(duì)橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)而言,如果數(shù)據(jù)庫(kù)節(jié)點(diǎn)發(fā)生故障而將發(fā)生了故障的數(shù)據(jù)庫(kù)節(jié)點(diǎn)割離,則冗余度比預(yù)先設(shè)定的值降低。橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)如果在冗余度降低的狀態(tài)下長(zhǎng)時(shí)間繼續(xù)運(yùn)轉(zhuǎn),則在發(fā)生了進(jìn)一步的數(shù)據(jù)庫(kù)節(jié)點(diǎn)的故障時(shí)產(chǎn)生系統(tǒng)整體的動(dòng)作停止或者大范圍的數(shù)據(jù)損失的可能性變高。因此,在橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)中,需要在數(shù)據(jù)庫(kù)節(jié)點(diǎn)發(fā)生了故障之后追加新的數(shù)據(jù)庫(kù)節(jié)點(diǎn),并使追加的數(shù)據(jù)庫(kù)節(jié)點(diǎn)存儲(chǔ)副本而恢復(fù)冗余度的結(jié)構(gòu)。
[0022]另外,在橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)中,所存儲(chǔ)的數(shù)據(jù)量有時(shí)因數(shù)據(jù)的配置而在數(shù)據(jù)庫(kù)節(jié)點(diǎn)間不均衡。另外,在橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)中,來自客戶端的訪問量有時(shí)因數(shù)據(jù)的配置而在數(shù)據(jù)庫(kù)節(jié)點(diǎn)間不均衡。
[0023]如果這樣的數(shù)據(jù)配置的不均衡變大,則在橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)中,在數(shù)據(jù)量多的數(shù)據(jù)庫(kù)節(jié)點(diǎn)或者來自客戶端的訪問在數(shù)據(jù)庫(kù)節(jié)點(diǎn)中的處理時(shí)間相對(duì)變長(zhǎng)。由于橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn)之一在于使來自客戶端的訪問分散,所以會(huì)因?yàn)檫@樣的數(shù)據(jù)配置的不均衡而喪失優(yōu)點(diǎn)。
[0024]為了解決以上那樣的冗余度的降低以及數(shù)據(jù)配置的不均衡,橫向擴(kuò)展型數(shù)據(jù)庫(kù)系統(tǒng)必須在數(shù)據(jù)配置產(chǎn)生了不均衡的時(shí)刻進(jìn)行數(shù)據(jù)向多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)的重新配置處理。
[0025]然而,在以往的數(shù)據(jù)庫(kù)系統(tǒng)中,必須在停止服務(wù)的狀態(tài)下實(shí)施這樣的重新配置處理。另外,在以往的數(shù)據(jù)庫(kù)系統(tǒng)中,由于數(shù)據(jù)的重新配置處理的負(fù)荷非常高,所以如果不執(zhí)行高效的處理則會(huì)使處理效率顯著惡化。
[0026]用于解決問題的手段
[0027]實(shí)施方式涉及的數(shù)據(jù)庫(kù)系統(tǒng)具備存儲(chǔ)數(shù)據(jù)庫(kù)的多個(gè)節(jié)點(diǎn)、和管理多個(gè)節(jié)點(diǎn)的管理裝置。管理裝置具有第一分配部和第二分配部。第一分配部根據(jù)多個(gè)節(jié)點(diǎn)各自的狀況的變更,來分配存儲(chǔ)數(shù)據(jù)集合并受理對(duì)數(shù)據(jù)集合的訪問請(qǐng)求的第一節(jié)點(diǎn)、以及存儲(chǔ)數(shù)據(jù)集合并成為第一節(jié)點(diǎn)的備份的第二節(jié)點(diǎn),對(duì)多個(gè)節(jié)點(diǎn)分別指示與分配對(duì)應(yīng)的動(dòng)作。第二分配部根據(jù)多個(gè)節(jié)點(diǎn)的狀況并根據(jù)第一節(jié)點(diǎn)以及第二節(jié)點(diǎn)的分配狀況的變更,來分配作為第一節(jié)點(diǎn)或者第二節(jié)點(diǎn)的候補(bǔ)的第三節(jié)點(diǎn),針對(duì)多個(gè)節(jié)點(diǎn)分別指示用于使第三節(jié)點(diǎn)作為第一節(jié)點(diǎn)或者第二節(jié)點(diǎn)動(dòng)作的準(zhǔn)備。多個(gè)節(jié)點(diǎn)分別具有將第一節(jié)點(diǎn)或者第二節(jié)點(diǎn)的數(shù)據(jù)集合向第三節(jié)點(diǎn)發(fā)送的轉(zhuǎn)送部。
【專利附圖】
【附圖說明】
[0028]圖1是表示實(shí)施方式涉及的數(shù)據(jù)庫(kù)系統(tǒng)的硬件構(gòu)成的圖。
[0029]圖2是表示實(shí)施方式涉及的數(shù)據(jù)庫(kù)系統(tǒng)的功能構(gòu)成的圖。
[0030]圖3是表示數(shù)據(jù)保持表的一個(gè)例子的圖。
[0031]圖4是表示當(dāng)前任務(wù)表的一個(gè)例子的圖。
[0032]圖5是表示下次任務(wù)表的一個(gè)例子的圖。
[0033]圖6是表不目標(biāo)任務(wù)表的一個(gè)例子的圖。
[0034]圖7是表示數(shù)據(jù)貯存(data store)部中存儲(chǔ)的數(shù)據(jù)集合的一個(gè)例子的圖。
[0035]圖8是用于對(duì)復(fù)制處理進(jìn)行說明的圖。
[0036]圖9是用于對(duì)短期同步處理進(jìn)行說明的圖。
[0037]圖10是用于對(duì)長(zhǎng)期同步處理進(jìn)行說明的圖。
[0038]圖11是表示對(duì)節(jié)點(diǎn)分配的任務(wù)的轉(zhuǎn)變的圖。
[0039]圖12是表示管理裝置的集群(cluster)管理部的處理流程的圖。
[0040]圖13是表示由管理裝置的第一分配部進(jìn)行的下次任務(wù)表的計(jì)算處理的流程的圖。
[0041]圖14是表示由管理裝置的第二分配部進(jìn)行的目標(biāo)任務(wù)表的計(jì)算處理的流程的圖。
[0042]圖15是表示節(jié)點(diǎn)的訪問處理部的處理流程的圖。
[0043]圖16是表示節(jié)點(diǎn)的節(jié)點(diǎn)管理部的處理流程的圖。
[0044]圖17是表示節(jié)點(diǎn)的轉(zhuǎn)送部的處理流程的圖。
[0045]圖18是表示針對(duì)3個(gè)分區(qū)# I?# 3的每一個(gè)分配了成為屬主(owner)以及備份的節(jié)點(diǎn)的情況下的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — C各自的狀態(tài)的圖。
[0046]圖19是表示從圖18的狀態(tài)開始根據(jù)節(jié)點(diǎn)30 — C發(fā)生了故障而執(zhí)行了短期同步處理之后的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — C各自的狀態(tài)的圖。
[0047]圖20是表示從圖19的狀態(tài)開始執(zhí)行的長(zhǎng)期同步處理的一個(gè)例子的圖。
[0048]圖21是表示對(duì)應(yīng)于圖20的長(zhǎng)期同步處理結(jié)束而執(zhí)行了短期同步處理之后的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — C各自的狀態(tài)的圖。
[0049]圖22是表示從圖21的狀態(tài)開始追加了節(jié)點(diǎn)30 — D的情況下的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — D各自的狀態(tài)的圖。
[0050]圖23是表示從圖22的狀態(tài)開始執(zhí)行的長(zhǎng)期同步處理的一個(gè)例子的圖。
[0051]圖24是表示對(duì)應(yīng)于圖23的長(zhǎng)期同步處理結(jié)束而執(zhí)行了短期同步處理之后的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — D各自的狀態(tài)的圖。
【具體實(shí)施方式】
[0052]圖1是表示實(shí)施方式涉及的數(shù)據(jù)庫(kù)系統(tǒng)10的硬件構(gòu)成的圖。數(shù)據(jù)庫(kù)系統(tǒng)10經(jīng)由網(wǎng)絡(luò)從作為外部的計(jì)算機(jī)的客戶端接收針對(duì)數(shù)據(jù)庫(kù)的訪問請(qǐng)求(例如參照、更新或者登記),執(zhí)行與接收到的訪問請(qǐng)求對(duì)應(yīng)的處理。
[0053]數(shù)據(jù)庫(kù)系統(tǒng)10具備管理裝置20和多個(gè)節(jié)點(diǎn)30。管理裝置20以及多個(gè)節(jié)點(diǎn)30經(jīng)由網(wǎng)絡(luò)相互連接。此外,在圖1中表示了兩個(gè)節(jié)點(diǎn)30,但數(shù)據(jù)庫(kù)系統(tǒng)10也可以具備三個(gè)以上節(jié)點(diǎn)30。
[0054]作為一個(gè)例子,數(shù)據(jù)庫(kù)系統(tǒng)10是將分布鍵值型數(shù)據(jù)庫(kù)應(yīng)用于無分享型數(shù)據(jù)庫(kù)的能夠橫向擴(kuò)展的數(shù)據(jù)庫(kù)系統(tǒng)。這樣的數(shù)據(jù)庫(kù)系統(tǒng)10能夠向多個(gè)節(jié)點(diǎn)30分散數(shù)據(jù)集合,作為一個(gè)巨大的數(shù)據(jù)庫(kù),能夠從作為外部的計(jì)算機(jī)的客戶端進(jìn)行訪問。
[0055]管理裝置20以及多個(gè)節(jié)點(diǎn)30分別是硬件相互獨(dú)立的計(jì)算機(jī)。多個(gè)節(jié)點(diǎn)30分別獨(dú)立地接收來自客戶端的訪問請(qǐng)求,能夠獨(dú)立地進(jìn)行與訪問請(qǐng)求對(duì)應(yīng)的處理。
[0056]作為一個(gè)例子,管理裝置20以及多個(gè)節(jié)點(diǎn)30分別具有CPU(Central ProcessingUnit) 12、存儲(chǔ)器13、通信I / F14以及貯存器I / F15。另外,管理裝置20以及多個(gè)節(jié)點(diǎn)30分別經(jīng)由貯存器I / F15與外部存儲(chǔ)裝置16連接。此外,外部存儲(chǔ)裝置16也可設(shè)在節(jié)點(diǎn)30的內(nèi)部。
[0057]另外,數(shù)據(jù)庫(kù)系統(tǒng)10將數(shù)據(jù)庫(kù)分割成多個(gè)分區(qū)來存儲(chǔ)。分區(qū)的數(shù)量被預(yù)先決定。分割數(shù)據(jù)庫(kù)的方法只要是預(yù)先決定的方法即可,可以是任意的方法。
[0058]多個(gè)節(jié)點(diǎn)30分別按多個(gè)分區(qū)的每一個(gè)分配是承擔(dān)作為屬主的任務(wù)、還是承擔(dān)作為備份的任務(wù)、或者不承擔(dān)屬主以及備份中任意一個(gè)任務(wù)。
[0059]屬主存儲(chǔ)對(duì)應(yīng)的分區(qū)的數(shù)據(jù)集合,接收來自客戶端的向?qū)?yīng)的分區(qū)的數(shù)據(jù)集合的訪問請(qǐng)求并進(jìn)行處理。另外,備份存儲(chǔ)對(duì)應(yīng)的分區(qū)的數(shù)據(jù)集合,對(duì)屬主進(jìn)行備份,以便例如在屬主發(fā)生了故障時(shí)能取而代之承擔(dān)屬主的任務(wù)。此外,有時(shí)也不稱為屬主以及備份而稱為主(master)以及從(slave)。
[0060]管理裝置20對(duì)多個(gè)節(jié)點(diǎn)30進(jìn)行管理。作為一個(gè)例子,管理裝置20按多個(gè)分區(qū)的每一個(gè)來分配作為屬主的節(jié)點(diǎn)30以及作為備份的節(jié)點(diǎn)30。
[0061]該情況下,為了無論因哪個(gè)節(jié)點(diǎn)30的故障都能盡量恢復(fù)數(shù)據(jù)庫(kù),管理裝置20按照在預(yù)先決定的范圍具有冗余度的方式分配作為備份的節(jié)點(diǎn)30。并且,管理裝置20按照數(shù)據(jù)庫(kù)所含的數(shù)據(jù)集合被分散配置到多個(gè)節(jié)點(diǎn)30的方式,來分配作為屬主以及備份的節(jié)點(diǎn)30。
[0062]此外,管理裝置20也可以在任意的節(jié)點(diǎn)30中設(shè)置。另外,作為管理裝置20發(fā)揮功能的節(jié)點(diǎn)30也可以通過任意的算法被選擇。另外,在作為管理裝置20發(fā)揮功能的節(jié)點(diǎn)30發(fā)生了故障的情況下,其他節(jié)點(diǎn)30也可以作為管理裝置20發(fā)揮功能。
[0063]這樣的數(shù)據(jù)庫(kù)系統(tǒng)10在多個(gè)節(jié)點(diǎn)30中的任意節(jié)點(diǎn)30發(fā)生了故障的情況下,能夠?qū)l(fā)生了故障的節(jié)點(diǎn)30割離。另外,數(shù)據(jù)庫(kù)系統(tǒng)10也能夠重新追加節(jié)點(diǎn)30來提高數(shù)據(jù)庫(kù)的性能。
[0064]圖2是表示實(shí)施方式涉及的數(shù)據(jù)庫(kù)系統(tǒng)10的功能構(gòu)成的圖。
[0065]管理裝置20具有表存儲(chǔ)部21、第一分配部22、第二分配部23、和集群管理部24。第一分配部22、第二分配部23以及集群管理部24通過管理裝置20的CPU12執(zhí)行程序來實(shí)現(xiàn)。另外,第一分配部22、第二分配部23以及集群管理部24的一部分或者全部也可以由硬件電路實(shí)現(xiàn)。另外,表存儲(chǔ)部21由管理裝置20的存儲(chǔ)器13或者外部存儲(chǔ)裝置16來實(shí)現(xiàn)。
[0066]表存儲(chǔ)部21存儲(chǔ)針對(duì)多個(gè)分區(qū)的每一個(gè)的用于決定多個(gè)節(jié)點(diǎn)30各自的任務(wù)的4個(gè)表。4個(gè)表的每一個(gè)可以是表形式的數(shù)據(jù),也可以是表形式以外的數(shù)據(jù)。
[0067]具體而言,表存儲(chǔ)部21存儲(chǔ)數(shù)據(jù)保持表、當(dāng)前任務(wù)表、下次任務(wù)表以及目標(biāo)任務(wù)表。
[0068]數(shù)據(jù)保持表儲(chǔ)存針對(duì)多個(gè)分區(qū)每一個(gè)的、多個(gè)節(jié)點(diǎn)30各自的時(shí)間戳(timestamp)。時(shí)間戳表示對(duì)應(yīng)的節(jié)點(diǎn)30所存儲(chǔ)的對(duì)應(yīng)的分區(qū)的數(shù)據(jù)集合的更新履歷。作為一個(gè)例子,時(shí)間戳是每當(dāng)數(shù)據(jù)集合被更新便加I的值。因此,某個(gè)分區(qū)中的時(shí)間戳最大的節(jié)點(diǎn)30意味著是存儲(chǔ)有該分區(qū)的最新的數(shù)據(jù)集合的節(jié)點(diǎn)30。
[0069]此外,在數(shù)據(jù)庫(kù)的大小隨時(shí)間不斷增加的情況下,數(shù)據(jù)保持表也可以替代時(shí)間戳而儲(chǔ)存對(duì)應(yīng)的節(jié)點(diǎn)30所存儲(chǔ)的對(duì)應(yīng)的分區(qū)的數(shù)據(jù)集合的大小或者數(shù)據(jù)數(shù)等。
[0070]作為一個(gè)例子,數(shù)據(jù)保持表如圖3所示,節(jié)點(diǎn)30由行確定,分區(qū)由列確定。該情況下,數(shù)據(jù)保持表在行與列正交的各個(gè)單元中儲(chǔ)存由該行確定的節(jié)點(diǎn)30所存儲(chǔ)的、由該列確定的分區(qū)的數(shù)據(jù)集合的時(shí)間戳。
[0071]當(dāng)前任務(wù)表儲(chǔ)存針對(duì)多個(gè)分區(qū)的每一個(gè)的、多個(gè)節(jié)點(diǎn)30分別被分配的在數(shù)據(jù)庫(kù)中的任務(wù)。具體而言,當(dāng)前任務(wù)表針多個(gè)分區(qū)的每一個(gè)儲(chǔ)存多個(gè)節(jié)點(diǎn)30的每一個(gè)是被分配為屬主、還是被分配為備份或者未被分配為屬主也未被分配為備份。
[0072]作為一個(gè)例子,當(dāng)前任務(wù)表如圖4所示,由行確定節(jié)點(diǎn)30,由列確定分區(qū)。該情況下,當(dāng)前任務(wù)表在行與列正交的位置的每一個(gè)單元中儲(chǔ)存針對(duì)由該列確定的分區(qū)的、對(duì)由該行確定的節(jié)點(diǎn)30分配的任務(wù)。其中,在附圖中,將被分配了作為屬主的任務(wù)的記載為“OWNER”或者“0”,將被分配了作為備份的任務(wù)的記載為“BACKUP”或者“B”,將未被分配為屬主也未被分配為備份的記載為“None”或“N”或者空白。
[0073]下次任務(wù)表儲(chǔ)存針對(duì)多個(gè)分區(qū)的每一個(gè)的、多個(gè)節(jié)點(diǎn)30分別接下來被分配的任務(wù)。即,下次任務(wù)表針對(duì)多個(gè)分區(qū)分別儲(chǔ)存多個(gè)節(jié)點(diǎn)30的每一個(gè)接下來是被分配為屬主、還是被分配為備份、或者不被分配為屬主也不被分配為備份。下次任務(wù)表是例如在節(jié)點(diǎn)30發(fā)生了故障或追加了新的節(jié)點(diǎn)30的情況下等,與當(dāng)前任務(wù)表置換的表。
[0074]作為一個(gè)例子,下次任務(wù)表如圖5所示,由行確定節(jié)點(diǎn)30,由列確定分區(qū)。該情況下,下次任務(wù)表在行與列正交的位置的每一個(gè)單元中儲(chǔ)存針對(duì)由該列確定的分區(qū)的、由該行確定的節(jié)點(diǎn)30被分配的下一個(gè)任務(wù)。
[0075]目標(biāo)任務(wù)表儲(chǔ)存針對(duì)多個(gè)分區(qū)的每一個(gè)的、多個(gè)節(jié)點(diǎn)30分別被分配的作為備份的候補(bǔ)的任務(wù)。備份的候補(bǔ)是將來用于針對(duì)該分區(qū)進(jìn)行該節(jié)點(diǎn)30承擔(dān)作為屬主或者備份的任務(wù)的準(zhǔn)備的任務(wù)。此外,在本實(shí)施方式的說明中,雖然將任務(wù)的名稱設(shè)為“備份的候補(bǔ)”,但被分配為備份的候補(bǔ)的節(jié)點(diǎn)30將來也可以成為屬主。
[0076]作為一個(gè)例子,目標(biāo)任務(wù)表如圖6所示,由行確定節(jié)點(diǎn)30,由列確定分區(qū)。該情況下,目標(biāo)任務(wù)表在行與列正交的位置的每一個(gè)單元中儲(chǔ)存針對(duì)由該列確定的分區(qū)的、由該行確定的節(jié)點(diǎn)30被分配的作為備份的候補(bǔ)的任務(wù)。其中,在附圖中,在被分配了作為備份的候補(bǔ)的任務(wù)的情況下記載“MID - BACKUP”或者“M”,在未被分配為備份的候補(bǔ)的情況下設(shè)為空白。
[0077]第一分配部22根據(jù)多個(gè)節(jié)點(diǎn)30各自的狀況的變更,對(duì)多個(gè)分區(qū)的每一個(gè)分配成為屬主的節(jié)點(diǎn)30以及成為備份的節(jié)點(diǎn)30。另外,例如在多個(gè)節(jié)點(diǎn)30中的任意節(jié)點(diǎn)30發(fā)生了故障的情況下,第一分配部22將發(fā)生了故障的節(jié)點(diǎn)30除外,再次分配作為屬主以及備份的節(jié)點(diǎn)30。
[0078]另外,在追加了新的節(jié)點(diǎn)30的情況下,第一分配部22針對(duì)多個(gè)分區(qū)的每一個(gè),再次分配包括新的節(jié)點(diǎn)30在內(nèi)的作為屬主以及備份的節(jié)點(diǎn)30。另外,在因數(shù)據(jù)集合向被分配為備份的候補(bǔ)的節(jié)點(diǎn)30的發(fā)送結(jié)束而新產(chǎn)生了能夠作為屬主或者備份的節(jié)點(diǎn)30的情況下,第一分配部22針對(duì)多個(gè)分區(qū)的每一個(gè)再次分配作為屬主以及備份的節(jié)點(diǎn)30。
[0079]這里,第一分配部22按照至少存在屬主的方式,針對(duì)多個(gè)分區(qū)的全部分配作為屬主以及備份的節(jié)點(diǎn)30。由此,第一分配部22能夠至少使數(shù)據(jù)庫(kù)發(fā)揮功能。
[0080]另外,第一分配部22以至少使數(shù)據(jù)庫(kù)發(fā)揮功能作為條件,按照具有預(yù)先決定的范圍內(nèi)的冗余度的方式,針對(duì)多個(gè)分區(qū)的每一個(gè)分配作為屬主以及備份的節(jié)點(diǎn)30。由此,即使任意的節(jié)點(diǎn)30發(fā)生了故障,第一分配部22也能夠提高至少可使數(shù)據(jù)庫(kù)發(fā)揮功能的可能性。
[0081]另外,作為至少使數(shù)據(jù)庫(kù)發(fā)揮功能且具有預(yù)先決定的范圍內(nèi)的冗余度的條件,第一分配部22按照屬主以及備份分散于多個(gè)節(jié)點(diǎn)30每一個(gè)的方式,針對(duì)多個(gè)分區(qū)的每一個(gè)分配作為屬主以及備份的節(jié)點(diǎn)30。由此,第一分配部22能夠使多個(gè)節(jié)點(diǎn)30各自的處理的負(fù)荷均衡。
[0082]其中,在本例中,第一分配部22通過計(jì)算下次任務(wù)表,來分配作為屬主以及備份的節(jié)點(diǎn)30。關(guān)于利用第一分配部22計(jì)算下次任務(wù)表的計(jì)算方法的一個(gè)例子,將參照?qǐng)D13在后面進(jìn)行說明。
[0083]第二分配部23根據(jù)多個(gè)節(jié)點(diǎn)30的狀況以及利用當(dāng)前分配表分配的屬主和備份的分配狀況的變更,針對(duì)多個(gè)分區(qū)的每一個(gè)分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。另外,例如在多個(gè)節(jié)點(diǎn)30中的任意節(jié)點(diǎn)30發(fā)生了故障的情況下,第二分配部23將發(fā)生了故障的節(jié)點(diǎn)30除外來再次分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。另外,例如在追加了新的節(jié)點(diǎn)30的情況下,第二分配部23針對(duì)多個(gè)分區(qū)分別再次分配包括新的節(jié)點(diǎn)30在內(nèi)的作為備份的候補(bǔ)的節(jié)點(diǎn)30。
[0084]這里,第二分配部23按照將來具有預(yù)先決定的范圍內(nèi)的冗余度的方式,針對(duì)多個(gè)分區(qū)的每一個(gè)分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。由此,即使將來任意的節(jié)點(diǎn)30發(fā)生了故障,第二分配部23也能提高至少可使數(shù)據(jù)庫(kù)發(fā)揮功能的可能性。
[0085]另外,第二分配部23按照將來屬主以及備份分散分配于多個(gè)節(jié)點(diǎn)30的每一個(gè)的方式,針對(duì)多個(gè)分區(qū)的每一個(gè)分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。由此,第二分配部23能夠在將來使多個(gè)節(jié)點(diǎn)30各自的處理的負(fù)荷均衡。
[0086]其中,在本例中,第二分配部23通過計(jì)算目標(biāo)任務(wù)表,來分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。關(guān)于利用第二分配部23計(jì)算目標(biāo)任務(wù)表的計(jì)算方法的一個(gè)例子,將參照?qǐng)D14在后面進(jìn)行說明。
[0087]集群管理部24與多個(gè)節(jié)點(diǎn)30的每一個(gè)經(jīng)由網(wǎng)絡(luò)交換消息,來對(duì)多個(gè)節(jié)點(diǎn)30的每一個(gè)進(jìn)行管理。例如,集群管理部24每隔一定時(shí)間便與多個(gè)節(jié)點(diǎn)30的每一個(gè)交換被稱為心跳(heart beat)的消息。而且,集群管理部24根據(jù)有無心跳的回信來確定發(fā)生了故障的節(jié)點(diǎn)30。
[0088]另外,集群管理部24定期從多個(gè)節(jié)點(diǎn)30的每一個(gè)接收數(shù)據(jù)保持表。而且,集群管理部24將從全部的節(jié)點(diǎn)30接收到的數(shù)據(jù)保持表集中存儲(chǔ)到表存儲(chǔ)部21。另外,集群管理部24根據(jù)是否接收到數(shù)據(jù)保持表來確定發(fā)生了故障的節(jié)點(diǎn)30。
[0089]另外,集群管理部24在起動(dòng)時(shí)使第一分配部22計(jì)算出下次任務(wù)表,通過將計(jì)算出的下次任務(wù)表分發(fā)給多個(gè)節(jié)點(diǎn)30的每一個(gè)來對(duì)多個(gè)節(jié)點(diǎn)30的每一個(gè)指示與分配對(duì)應(yīng)的動(dòng)作。另外,集群管理部24定期使第一分配部22計(jì)算下次任務(wù)表。而且,在計(jì)算出的下次任務(wù)表與當(dāng)前任務(wù)表相比發(fā)生了變化的情況下,集群管理部24通過將計(jì)算出的下次任務(wù)表分發(fā)給多個(gè)節(jié)點(diǎn)30的每一個(gè)來對(duì)多個(gè)節(jié)點(diǎn)30的每一個(gè)指示與分配對(duì)應(yīng)的動(dòng)作。而且,集群管理部24在分發(fā)了下次任務(wù)表之后,將表存儲(chǔ)部21中存儲(chǔ)的當(dāng)前任務(wù)表更新成下次任務(wù)表的內(nèi)容。
[0090]例如,在任意的節(jié)點(diǎn)30發(fā)生了故障的情況下、追加了新的節(jié)點(diǎn)30的情況下,或者數(shù)據(jù)集合向被分配為候補(bǔ)的節(jié)點(diǎn)30的發(fā)送結(jié)束而產(chǎn)生了能夠分配為備份的節(jié)點(diǎn)30的情況下,第一分配部22將任務(wù)表從當(dāng)前任務(wù)表變化成計(jì)算出的下次任務(wù)表。因此,集群管理部24在這樣的情況下將下次任務(wù)表向多個(gè)節(jié)點(diǎn)30的每一個(gè)分發(fā)。
[0091]另外,集群管理部24定期使第二分配部23計(jì)算目標(biāo)任務(wù)表,將計(jì)算出的目標(biāo)任務(wù)表向多個(gè)節(jié)點(diǎn)30的每一個(gè)分發(fā)。集群管理部24通過分發(fā)目標(biāo)任務(wù)表,來對(duì)多個(gè)節(jié)點(diǎn)30的每一個(gè)指示用于使被分配為候補(bǔ)的節(jié)點(diǎn)30作為屬主或者備份動(dòng)作的準(zhǔn)備。其中,集群管理部24以不同的周期計(jì)算下次任務(wù)表和目標(biāo)任務(wù)表。
[0092]多個(gè)節(jié)點(diǎn)30的每一個(gè)具有數(shù)據(jù)貯存部31、表存儲(chǔ)部32、訪問處理部33、節(jié)點(diǎn)管理部34、轉(zhuǎn)送部35。訪問處理部33、節(jié)點(diǎn)管理部34以及轉(zhuǎn)送部35通過節(jié)點(diǎn)30的CPU12執(zhí)行程序來實(shí)現(xiàn)。另外,訪問處理部33、節(jié)點(diǎn)管理部34以及轉(zhuǎn)送部35的一部分或者全部也可以由硬件電路實(shí)現(xiàn)。數(shù)據(jù)貯存部31以及表存儲(chǔ)部32由節(jié)點(diǎn)30的存儲(chǔ)器13或者外部存儲(chǔ)裝置16來實(shí)現(xiàn)。
[0093]數(shù)據(jù)貯存部31存儲(chǔ)將數(shù)據(jù)庫(kù)分割后的多個(gè)分區(qū)中自節(jié)點(diǎn)被當(dāng)前任務(wù)表分配為屬主或者備份的分區(qū)的數(shù)據(jù)集合。例如,如圖7所示,在被分割為3個(gè)的分區(qū)# I?# 3中,自節(jié)點(diǎn)相對(duì)于分區(qū)# I被分配為屬主,相對(duì)于分區(qū)# 3被分配為備份。該情況下,數(shù)據(jù)貯存部31存儲(chǔ)分區(qū)# I以及分區(qū)# 3的數(shù)據(jù)集合。
[0094]另外,節(jié)點(diǎn)30針對(duì)被目標(biāo)任務(wù)表分配為備份的候補(bǔ)的分區(qū),從被分配為該分區(qū)的屬主的節(jié)點(diǎn)30接收數(shù)據(jù)集合。數(shù)據(jù)貯存部31存儲(chǔ)自節(jié)點(diǎn)被目標(biāo)任務(wù)表分配為備份的候補(bǔ)的分區(qū)的數(shù)據(jù)集合中的、從屬主的節(jié)點(diǎn)30接收完畢的一部分或者全部。
[0095]表存儲(chǔ)部32存儲(chǔ)與數(shù)據(jù)保持表的自節(jié)點(diǎn)對(duì)應(yīng)的部分。另外,表存儲(chǔ)部32存儲(chǔ)當(dāng)前任務(wù)表、下次任務(wù)表以及目標(biāo)任務(wù)表。在接收到下次任務(wù)表的情況下,當(dāng)前任務(wù)表被改寫成下次任務(wù)表的內(nèi)容。在定期接收的目標(biāo)任務(wù)表發(fā)生了變化的情況下,目標(biāo)任務(wù)表被改寫成變化后的內(nèi)容。
[0096]訪問處理部33經(jīng)由網(wǎng)絡(luò)接收來自客戶端的訪問請(qǐng)求。而且,訪問處理部33針對(duì)多個(gè)分區(qū)的每一個(gè)執(zhí)行與由當(dāng)前任務(wù)表對(duì)自節(jié)點(diǎn)分配的任務(wù)對(duì)應(yīng)的處理。
[0097]具體而言,訪問處理部33接收針對(duì)被當(dāng)前任務(wù)表分配為屬主的分區(qū)的來自客戶端的訪問請(qǐng)求,執(zhí)行與該訪問請(qǐng)求對(duì)應(yīng)的處理。作為一個(gè)例子,在接收到參照請(qǐng)求的情況下,訪問處理部33讀出該分區(qū)的數(shù)據(jù)集合之中對(duì)應(yīng)的數(shù)據(jù)并向客戶端發(fā)送。另外,作為一個(gè)例子,在接收到更新請(qǐng)求的情況下,訪問處理部33對(duì)該分區(qū)的數(shù)據(jù)集合所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行更新。另外,作為一個(gè)例子,在接收到登記請(qǐng)求的情況下,訪問處理部33向該分區(qū)的數(shù)據(jù)集合登記新的數(shù)據(jù)。
[0098]此外,訪問處理部33也可以接收包括一系列訪問請(qǐng)求的事項(xiàng)(transact1n)。該情況下,訪問處理部33通過事項(xiàng)處理來執(zhí)行來自客戶端的一系列訪問請(qǐng)求。
[0099]另外,訪問處理部33在處理了更新請(qǐng)求以及登記請(qǐng)求的情況下,與被當(dāng)前任務(wù)表針對(duì)該分區(qū)分配為備份的節(jié)點(diǎn)30之間執(zhí)行復(fù)制處理。復(fù)制處理是用于在被分配為備份的節(jié)點(diǎn)30中生成被分配為屬主的節(jié)點(diǎn)30中存儲(chǔ)的數(shù)據(jù)集合的副本(復(fù)制品)的處理。
[0100]具體如圖8所示,訪問處理部33在接收到針對(duì)自節(jié)點(diǎn)被分配為屬主的分區(qū)的更新或者登記請(qǐng)求的情況下,將同一訪問請(qǐng)求向被分配為備份的其他節(jié)點(diǎn)30發(fā)送。而且,其他節(jié)點(diǎn)30的訪問處理部33從相對(duì)被分配為備份的分區(qū)的、被分配為屬主的節(jié)點(diǎn)30接收更新或者登記的請(qǐng)求,執(zhí)行與該請(qǐng)求對(duì)應(yīng)的更新或者登記的處理。
[0101]訪問處理部33通過進(jìn)行這樣的復(fù)制處理,能夠在被分配為屬主的節(jié)點(diǎn)30與被分配為備份的節(jié)點(diǎn)30之間取得數(shù)據(jù)集合的同步。
[0102]此外,在執(zhí)行復(fù)制處理的情況下,被分配為屬主的節(jié)點(diǎn)30的訪問處理部33也可以發(fā)送包括一系列訪問請(qǐng)求的事項(xiàng)。該情況下,被分配為備份的節(jié)點(diǎn)30的訪問處理部33通過事項(xiàng)處理來執(zhí)行復(fù)制處理。
[0103]另外,在處理了更新請(qǐng)求以及登記請(qǐng)求的情況下,訪問處理部33對(duì)表存儲(chǔ)部32中存儲(chǔ)的數(shù)據(jù)保持表所對(duì)應(yīng)的分區(qū)的時(shí)間戳進(jìn)行更新。
[0104]節(jié)點(diǎn)管理部34經(jīng)由網(wǎng)絡(luò)與管理裝置20的集群管理部24交換消息。對(duì)應(yīng)于從集群管理部24接收到被稱為心跳的消息,如果自節(jié)點(diǎn)沒有發(fā)生故障則節(jié)點(diǎn)管理部34發(fā)送響應(yīng)消息。另外,節(jié)點(diǎn)管理部34定期將表存儲(chǔ)部32中存儲(chǔ)的數(shù)據(jù)保持表向集群管理部24發(fā)送。
[0105]另外,節(jié)點(diǎn)管理部34從集群管理部24接收下次任務(wù)表,將接收到的下次任務(wù)表存儲(chǔ)到表存儲(chǔ)部32。而且,在接收到下次任務(wù)表的情況下,節(jié)點(diǎn)管理部34如圖9所示,執(zhí)行為了使多個(gè)節(jié)點(diǎn)30的每一個(gè)以由下次任務(wù)表分配的任務(wù)進(jìn)行動(dòng)作而將與來自客戶端的訪問請(qǐng)求對(duì)應(yīng)的處理暫時(shí)中斷來進(jìn)行的同步處理、即短期同步處理。
[0106]具體而言,節(jié)點(diǎn)管理部34為了針對(duì)多個(gè)分區(qū)的每一個(gè)使多個(gè)節(jié)點(diǎn)30的每一個(gè)以由下次任務(wù)表表示的任務(wù)進(jìn)行動(dòng)作,使訪問處理部33執(zhí)行與復(fù)制處理同樣的處理。由此,節(jié)點(diǎn)管理部34針對(duì)多個(gè)分區(qū)的每一個(gè),能夠取得被分配為屬主的節(jié)點(diǎn)30與被分配為備份的節(jié)點(diǎn)30之間的數(shù)據(jù)集合的同步。而且,在取得了數(shù)據(jù)集合的同步之后,節(jié)點(diǎn)管理部34使訪問處理部33將當(dāng)前任務(wù)表改寫為下次任務(wù)表的內(nèi)容,執(zhí)行針對(duì)多個(gè)分區(qū)的每一個(gè)的由下次任務(wù)表分配的新的任務(wù)所對(duì)應(yīng)的處理。
[0107]而且,如果短期同步處理結(jié)束,則節(jié)點(diǎn)管理部34將當(dāng)前任務(wù)表的內(nèi)容更新成下次任務(wù)表的內(nèi)容。以后,訪問處理部33能夠接受來自客戶端的訪問請(qǐng)求。
[0108]另外,節(jié)點(diǎn)管理部34從集群管理部24定期接收目標(biāo)任務(wù)表,并將接收到的目標(biāo)任務(wù)表存儲(chǔ)于表存儲(chǔ)部32。
[0109]轉(zhuǎn)送部35如圖10所示,執(zhí)行為了使多個(gè)節(jié)點(diǎn)30的每一個(gè)以由目標(biāo)任務(wù)表分配的任務(wù)進(jìn)行動(dòng)作而不將針對(duì)來自客戶端的訪問請(qǐng)求的處理中斷地進(jìn)行的同步處理、即長(zhǎng)期同步處理。具體而言,轉(zhuǎn)送部35不中斷針對(duì)訪問請(qǐng)求的處理地將自節(jié)點(diǎn)被當(dāng)前任務(wù)表分配為屬主的分區(qū)的數(shù)據(jù)集合向被目標(biāo)任務(wù)表分配為備份的候補(bǔ)且未被當(dāng)前任務(wù)表分配為屬主也未被分配為備份的其他節(jié)點(diǎn)30發(fā)送。另外,轉(zhuǎn)送部35不中斷針對(duì)訪問請(qǐng)求的處理地從被當(dāng)前任務(wù)表分配為屬主的其他節(jié)點(diǎn)30接收自節(jié)點(diǎn)被目標(biāo)任務(wù)表分配為備份的候補(bǔ)且未被當(dāng)前任務(wù)表分配為屬主也未被分配為備份的分區(qū)的數(shù)據(jù)集合。
[0110]轉(zhuǎn)送部35通過執(zhí)行這樣的長(zhǎng)期同步處理,能夠?qū)⒈环峙錇閷僦鞯墓?jié)點(diǎn)30中存儲(chǔ)的數(shù)據(jù)集合的復(fù)制存儲(chǔ)到未被分配為屬主或者備份的節(jié)點(diǎn)30。由此,轉(zhuǎn)送部35能夠新生成在長(zhǎng)期同步處理結(jié)束之后可以作為屬主或者備份的節(jié)點(diǎn)30。
[0111]這里,在執(zhí)行長(zhǎng)期同步處理的情況下,轉(zhuǎn)送部35通過不阻礙訪問處理部33對(duì)事項(xiàng)的執(zhí)行的后臺(tái)(background)將被分配為屬主的分區(qū)的數(shù)據(jù)集合發(fā)送給被分配為備份的候補(bǔ)的節(jié)點(diǎn)30。另外,轉(zhuǎn)送部35通過后臺(tái)從被分配為屬主的節(jié)點(diǎn)30接收被分配為備份的候補(bǔ)的分區(qū)的數(shù)據(jù)集合。其中,作為一個(gè)例子,后臺(tái)中的處理是在節(jié)點(diǎn)30具備多個(gè)CPU12的情況下使用不執(zhí)行事項(xiàng)處理的一部分CPU12來執(zhí)行的處理。另外,作為一個(gè)例子,后臺(tái)中的處理是在CPU12進(jìn)行時(shí)分處理的情況下在CPU12不執(zhí)行事項(xiàng)處理的一部分時(shí)間段執(zhí)行的處理。由此,轉(zhuǎn)送部35能夠不降低針對(duì)來自客戶端的訪問請(qǐng)求的響應(yīng)速度等地執(zhí)行長(zhǎng)期同步處理。
[0112]另外,轉(zhuǎn)送部35也可以將在當(dāng)前任務(wù)表中自節(jié)點(diǎn)被分配為備份的分區(qū)的數(shù)據(jù)集合向被目標(biāo)任務(wù)表分配為備份的候補(bǔ)且未被分配為屬主也未被分配為備份的其他節(jié)點(diǎn)30發(fā)送。該情況下,轉(zhuǎn)送部35以未從其他節(jié)點(diǎn)30發(fā)送同一數(shù)據(jù)集合為條件來進(jìn)行處理。
[0113]圖11是表示節(jié)點(diǎn)30被分配的任務(wù)的轉(zhuǎn)變的圖。節(jié)點(diǎn)30轉(zhuǎn)變?yōu)閷?duì)多個(gè)分區(qū)的每一個(gè)分配了“屬主”、“備份”或“備份的候補(bǔ)”的狀態(tài)、或者未被分配任何任務(wù)的“無”狀態(tài)中任意一個(gè)。
[0114]節(jié)點(diǎn)30通過短期同步處理在“無”狀態(tài)與“屬主”狀態(tài)之間相互轉(zhuǎn)變。另外,節(jié)點(diǎn)30通過短期同步處理在“屬主”狀態(tài)與“備份”狀態(tài)之間相互轉(zhuǎn)變。另外,節(jié)點(diǎn)30通過短期同步處理從“備份”狀態(tài)向“無”狀態(tài)轉(zhuǎn)變。
[0115]另外,節(jié)點(diǎn)30通過長(zhǎng)期同步處理在“無”狀態(tài)與“備份的候補(bǔ)”狀態(tài)之間相互轉(zhuǎn)變。而且,節(jié)點(diǎn)30通過短期同步處理從“備份的候補(bǔ)”狀態(tài)向“備份”狀態(tài)轉(zhuǎn)變。
[0116]圖12是表示管理裝置20的集群管理部24的處理流程的圖。集群管理部24執(zhí)行以下的步驟Slll?步驟S142的處理。
[0117]首先,在步驟Slll中,集群管理部24檢測(cè)數(shù)據(jù)保持表的接收事件、第一定周期事件或者第二定周期事件。數(shù)據(jù)保持表的接收事件在集群管理部24接收到從多個(gè)節(jié)點(diǎn)30的每一個(gè)發(fā)送來的數(shù)據(jù)保持表的情況下產(chǎn)生。第一定周期事件以及第二定周期事件分別定期產(chǎn)生。但是,第一定周期事件與第二定周期事件的產(chǎn)生間隔相互不同。
[0118]集群管理部24在檢測(cè)出數(shù)據(jù)保持表的接收事件的情況下,使處理進(jìn)入步驟S121。集群管理部24在檢測(cè)出第一定周期事件的情況下,使處理進(jìn)入步驟S131。集群管理部24在檢測(cè)出第二定周期事件的情況下,使處理進(jìn)入步驟S141。
[0119]在檢測(cè)出數(shù)據(jù)保持表的接收事件的情況下,在步驟S121中,集群管理部24判斷是否是起動(dòng)之后最初的數(shù)據(jù)保持表的接收事件。
[0120]在是起動(dòng)之后最初的數(shù)據(jù)保持表的接收事件的情況下(步驟S121的是),集群管理部24使處理進(jìn)入步驟S122。在步驟S122中,集群管理部24將接收到的數(shù)據(jù)保持表登記到表存儲(chǔ)部21。
[0121]接著,在步驟S123中,集群管理部24使第一分配部22計(jì)算出下次任務(wù)表。其中,關(guān)于利用第一分配部22計(jì)算下次任務(wù)表的計(jì)算處理,將參照?qǐng)D13來進(jìn)行說明。
[0122]接著,在步驟S124中,集群管理部24將計(jì)算出的下次任務(wù)表分發(fā)給多個(gè)節(jié)點(diǎn)30的每一個(gè)。而且,如果結(jié)束了步驟S124的處理,則集群管理部24使處理返回到步驟S111。
[0123]另外,在不是起動(dòng)之后最初的數(shù)據(jù)保持表的接收事件的情況下(步驟S121的否),在步驟S125中,集群管理部24對(duì)表存儲(chǔ)部21的數(shù)據(jù)保持表進(jìn)行更新。而且,如果結(jié)束了步驟S125的處理,則集群管理部24使處理返回到步驟S111。
[0124]另一方面,在檢測(cè)出第一定周期事件的情況下,在步驟S131中,集群管理部24判斷是否在從上次的第一定周期事件到這次的第一定周期事件為止的期間,從多個(gè)節(jié)點(diǎn)30的全部接收到了數(shù)據(jù)保持表。在從多個(gè)節(jié)點(diǎn)30的全部接收到了數(shù)據(jù)保持表的情況下(步驟S131的是),集群管理部24使處理進(jìn)入步驟S134。在從任意的節(jié)點(diǎn)30無法接收數(shù)據(jù)保持表的情況下(步驟S131的否),集群管理部24使處理進(jìn)入步驟S132。
[0125]在步驟S132中,集群管理部24進(jìn)行將無法接收數(shù)據(jù)保持表的節(jié)點(diǎn)30從數(shù)據(jù)庫(kù)系統(tǒng)10割離的處理。接著,在步驟S133中,集群管理部24從數(shù)據(jù)保持表中刪除割離了的節(jié)點(diǎn)30的內(nèi)容,對(duì)數(shù)據(jù)保持表進(jìn)行更新。如果結(jié)束了步驟S133的處理,則集群管理部24使處理進(jìn)入步驟S134。
[0126]在步驟S134中,集群管理部24使第一分配部22計(jì)算出下次任務(wù)表。其中,關(guān)于利用第一分配部22計(jì)算下次任務(wù)表的計(jì)算處理,將參照?qǐng)D13來進(jìn)行說明。
[0127]接著,在步驟S135中,集群管理部24判斷下次任務(wù)表是否發(fā)生了變化。例如,在割離了發(fā)生故障的節(jié)點(diǎn)30的情況下、追加了新的節(jié)點(diǎn)30的情況下,或者長(zhǎng)期同步處理結(jié)束而被分配為備份的節(jié)點(diǎn)30發(fā)生變更的情況下,下次任務(wù)表發(fā)生變化。
[0128]在下次任務(wù)表未變化的情況下(步驟S135的否),集群管理部24使處理返回到步驟S111。在下次任務(wù)表發(fā)生了變化的情況下(步驟S135的是),在步驟S136中,集群管理部24將變化后的下次任務(wù)表分發(fā)給多個(gè)節(jié)點(diǎn)30的每一個(gè)。而且,如果結(jié)束了步驟S136的處理,則集群管理部24使處理返回到步驟S111。
[0129]另外,另一方面在檢測(cè)出第二定周期事件的情況下,在步驟S141中,集群管理部24使第二分配部23計(jì)算出目標(biāo)任務(wù)表。其中,關(guān)于利用第二分配部23計(jì)算目標(biāo)任務(wù)表的計(jì)算處理,將參照?qǐng)D14來進(jìn)行說明。
[0130]接著,在步驟S142中,集群管理部24將計(jì)算出的目標(biāo)任務(wù)表分發(fā)給多個(gè)節(jié)點(diǎn)30的每一個(gè)。而且,如果結(jié)束了步驟S142的處理,則集群管理部24使處理返回到步驟S111。
[0131]圖13是表示由管理裝置20的第一分配部22進(jìn)行的下次任務(wù)表的計(jì)算處理的流程的圖。第一分配部22在圖12的步驟S123以及步驟S134中被集群管理部24調(diào)出,執(zhí)行以下的步驟S211?步驟S220的處理。
[0132]首先,在步驟S211中,第一分配部22對(duì)下次任務(wù)表進(jìn)行初始化。此時(shí),第一分配部22使下次任務(wù)表的多個(gè)節(jié)點(diǎn)30的每一個(gè)與數(shù)據(jù)保持表的節(jié)點(diǎn)30建立對(duì)應(yīng)。由此,第一分配部22能夠?qū)⒁蚬收习l(fā)生而被割離的節(jié)點(diǎn)30以及新追加的節(jié)點(diǎn)30反映到下次任務(wù)表。
[0133]接著,在步驟S212與步驟S220之間,第一分配部22按每個(gè)分區(qū)執(zhí)行循環(huán)處理。例如,在將數(shù)據(jù)庫(kù)分割成第一至第三分區(qū)的情況下,第一分配部22以第一分區(qū)、第二分區(qū)以及第三分區(qū)的每一個(gè)作為對(duì)象,執(zhí)行步驟S212至步驟S220的處理。
[0134]在每個(gè)分區(qū)的循環(huán)處理內(nèi),首先在步驟S213中,第一分配部22針對(duì)對(duì)象的分區(qū)選擇在數(shù)據(jù)保持表中具有最大的時(shí)間戳的節(jié)點(diǎn)30的集合。在本例中,時(shí)間戳是每當(dāng)對(duì)象的分區(qū)的數(shù)據(jù)集合被更新便逐個(gè)加I的值。因此,在步驟S213中,第一分配部22針對(duì)對(duì)象的分區(qū)能夠選擇存儲(chǔ)了最新的數(shù)據(jù)集合的節(jié)點(diǎn)30的集合。
[0135]接著,在步驟S214中,第一分配部22從在步驟S213中選擇出的節(jié)點(diǎn)30的集合之中,選擇在下次任務(wù)表中被分配為屬主以及備份的分區(qū)的數(shù)量最少的一個(gè)節(jié)點(diǎn)30,將選擇出的節(jié)點(diǎn)30分配為屬主。由此,第一分配部22能夠?qū)⒋鎯?chǔ)有最新的數(shù)據(jù)集合的節(jié)點(diǎn)30的集合中負(fù)荷最小的節(jié)點(diǎn)30分配為屬主。
[0136]此外,在被分配為屬主以及備份的分區(qū)的數(shù)量最少的節(jié)點(diǎn)30存在多個(gè)的情況下,第一分配部22也可以使運(yùn)算能力高的節(jié)點(diǎn)30比運(yùn)算能力低的節(jié)點(diǎn)30優(yōu)先分配為屬主。取而代之,第一分配部22也可以使接受訪問請(qǐng)求的次數(shù)少的節(jié)點(diǎn)30比接受訪問請(qǐng)求的次數(shù)多的節(jié)點(diǎn)30優(yōu)先分配為屬主。
[0137]接著,在步驟S215中,第一分配部22針對(duì)對(duì)象的分區(qū),將被分配為屬主的節(jié)點(diǎn)30除外,選擇具有與最大時(shí)間戳之差為一定范圍內(nèi)的時(shí)間戳的節(jié)點(diǎn)30的集合。由此,第一分配部22能夠針對(duì)對(duì)象的分區(qū),選擇存儲(chǔ)有最新的數(shù)據(jù)集合或者與最新的數(shù)據(jù)集合比較接近的數(shù)據(jù)集合的節(jié)點(diǎn)30的集合。
[0138]接著,在步驟S216與步驟S219之間,第一分配部22執(zhí)行與復(fù)制的次數(shù)對(duì)應(yīng)的循環(huán)處理。這里,復(fù)制的次數(shù)是指在被分配為屬主的節(jié)點(diǎn)30之間能夠復(fù)制處理的最大的節(jié)點(diǎn)30的個(gè)數(shù)。即,復(fù)制的次數(shù)與能夠分配的備份的數(shù)量相同。
[0139]在與復(fù)制的次數(shù)對(duì)應(yīng)的循環(huán)處理內(nèi),首先在步驟S217中,第一分配部22判斷在由步驟S215選擇出的節(jié)點(diǎn)30的集合之中是否存在能夠分配為備份的節(jié)點(diǎn)30。當(dāng)存在能夠分配為備份的節(jié)點(diǎn)30時(shí)(步驟S217的是),第一分配部22使處理進(jìn)入步驟S218。
[0140]當(dāng)沒有能夠分配為備份的節(jié)點(diǎn)30時(shí)(步驟S217的否),第一分配部22強(qiáng)制地跳出與復(fù)制的次數(shù)對(duì)應(yīng)的循環(huán)處理,使處理進(jìn)入步驟S220。即,因此,有時(shí)第一分配部22計(jì)算出不存在備份、或備份的數(shù)量小于復(fù)制的次數(shù)的下次任務(wù)表。
[0141]在步驟S218中,第一分配部22從由步驟S215選擇出的節(jié)點(diǎn)30的集合之中,將在下次任務(wù)表中被分配為屬主以及備份的分區(qū)的數(shù)量最少的節(jié)點(diǎn)30分配為備份。由此,第一分配部22能夠分配存儲(chǔ)有最新的數(shù)據(jù)集合或者與最新的數(shù)據(jù)集合接近的數(shù)據(jù)的節(jié)點(diǎn)30的集合中負(fù)荷按從小到大的順序備份的節(jié)點(diǎn)30。
[0142]此外,在被分配為屬主以及備份的分區(qū)的數(shù)量最少的節(jié)點(diǎn)30存在多個(gè)的情況下,第一分配部22也可以使運(yùn)算能力高的節(jié)點(diǎn)30比運(yùn)算能力低的節(jié)點(diǎn)30優(yōu)先分配為備份。取而代之,第一分配部22也可以使接受訪問請(qǐng)求的次數(shù)少的節(jié)點(diǎn)30比接受訪問請(qǐng)求的次數(shù)多的節(jié)點(diǎn)30優(yōu)先分配為備份。
[0143]而且,第一分配部22從選擇出的節(jié)點(diǎn)30的集合將被分配為備份的節(jié)點(diǎn)30除外,使處理進(jìn)入步驟S219。在步驟S219中,第一分配部22在步驟S216到步驟S219的處理次數(shù)比復(fù)制的次數(shù)少的情況下使處理返回到步驟S216,在與復(fù)制的次數(shù)一致的情況下使處理進(jìn)入步驟S220。
[0144]接著,在步驟S220中,第一分配部22在對(duì)全部的分區(qū)沒有執(zhí)行步驟S212到步驟S220的處理的情況下,使處理返回到步驟S216。而且,第一分配部22在對(duì)全部的分區(qū)執(zhí)行了步驟S212到步驟S220的處理的情況下,結(jié)束下次任務(wù)表的計(jì)算而跳出本流程。
[0145]如上所述,根據(jù)第一分配部22,通過對(duì)多個(gè)分區(qū)的全部分配作為屬主的節(jié)點(diǎn)30,能夠至少使數(shù)據(jù)庫(kù)發(fā)揮功能。并且,根據(jù)第一分配部22,通過盡量分配作為備份的節(jié)點(diǎn)30,能夠擔(dān)保數(shù)據(jù)庫(kù)的冗余度。進(jìn)而,根據(jù)第一分配部22,通過從負(fù)荷最小的節(jié)點(diǎn)30按順序分配作為屬主以及備份的節(jié)點(diǎn)30,能夠使多個(gè)節(jié)點(diǎn)30各自的負(fù)荷均衡。
[0146]圖14是表示利用管理裝置20的第二分配部23計(jì)算目標(biāo)任務(wù)表的計(jì)算處理的流程的圖。第二分配部23在圖12的步驟S141中被集群管理部24調(diào)出,執(zhí)行以下的步驟S311?步驟S324的處理。
[0147]首先,在步驟S311中,第二分配部23對(duì)目標(biāo)任務(wù)表進(jìn)行初始化。此時(shí),第二分配部23使目標(biāo)任務(wù)表的多個(gè)節(jié)點(diǎn)30的每一個(gè)與數(shù)據(jù)保持表的節(jié)點(diǎn)30建立對(duì)應(yīng)付。由此,第二分配部23能夠?qū)⒁蚬收习l(fā)生而被割離的節(jié)點(diǎn)30以及新追加的節(jié)點(diǎn)30反映到目標(biāo)任務(wù)表。
[0148]接著,在步驟S312中,第二分配部23將當(dāng)前任務(wù)表的分區(qū)以被分配的屬主以及備份的合計(jì)數(shù)按升序排序。由此,第二分配部23能夠從被分配為備份的節(jié)點(diǎn)30少的分區(qū)開始按順序分配備份的候補(bǔ)。即,第二分配部23能夠在當(dāng)前任務(wù)表中從冗余度少的分區(qū)開始按順序分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。
[0149]接著,在步驟S313中,第二分配部23對(duì)多個(gè)節(jié)點(diǎn)30的每一個(gè)所對(duì)應(yīng)的負(fù)荷值進(jìn)行初始化。負(fù)荷值是對(duì)應(yīng)于對(duì)節(jié)點(diǎn)30分配了備份的候補(bǔ)的任務(wù)而增加的值。作為一個(gè)例子,第二分配部23將各自的負(fù)荷值初始化為“O”。
[0150]接著,在步驟S314與步驟S324之間,第二分配部23按每個(gè)分區(qū)執(zhí)行循環(huán)處理。該情況下,第二分配部23以在步驟S312中重新排列的當(dāng)前任務(wù)表的分區(qū)的順序來選擇對(duì)象的分區(qū),執(zhí)行循環(huán)處理。
[0151]在每個(gè)分區(qū)的循環(huán)處理內(nèi),首先在步驟S315中,第二分配部23針對(duì)對(duì)象的分區(qū)選擇數(shù)據(jù)保持表中最大的時(shí)間戳的節(jié)點(diǎn)30。
[0152]接著,在步驟S316中,第二分配部23將當(dāng)前任務(wù)表的節(jié)點(diǎn)30以值V按降序排序。這里,值V是針對(duì)被分配為屬主的節(jié)點(diǎn)30 “+ I”、針對(duì)被分配為備份的節(jié)點(diǎn)30 “+ I”、以及針對(duì)最大的時(shí)間戳的節(jié)點(diǎn)30 “+ I”的值。因此,不是屬主、也不是備份且時(shí)間戳也不是最大的節(jié)點(diǎn)30的值V為“O”。
[0153]由此,第二分配部23能夠?qū)⒈环峙錇閷僦饕约皞浞莸墓?jié)點(diǎn)30或者存儲(chǔ)最新的數(shù)據(jù)集合的節(jié)點(diǎn)30先分配為作為備份的候補(bǔ)的節(jié)點(diǎn)30。
[0154]其中,在排列有多個(gè)值V相同的節(jié)點(diǎn)30的情況下,第二分配部23將運(yùn)算能力高的節(jié)點(diǎn)30配置到上位以使其先成為備份的候補(bǔ)。由此,第二分配部23可以按照運(yùn)算能力高的節(jié)點(diǎn)30比運(yùn)算能力低的節(jié)點(diǎn)30優(yōu)先成為屬主或者備份的方式,來分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。取而代之,第二分配部23也可以將接受訪問請(qǐng)求的次數(shù)少的節(jié)點(diǎn)30配置到上位以使其先成為備份的候補(bǔ)。由此,第二分配部23能夠按照接受訪問請(qǐng)求的次數(shù)少的節(jié)點(diǎn)30比接受訪問請(qǐng)求的次數(shù)多的節(jié)點(diǎn)30優(yōu)先成為屬主或者備份的方式,來分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。
[0155]接著,在步驟S317中,第二分配部23通過下述式(I)來計(jì)算作為常量的上限權(quán)重MLOAD。
[0156]MLOAD = {分區(qū)的數(shù)X (復(fù)制數(shù)+ I) + (節(jié)點(diǎn)數(shù)一I)} +節(jié)點(diǎn)數(shù)…(I)
[0157]這里,(復(fù)制數(shù)+ I)表示針對(duì)一個(gè)分區(qū)能夠分配的屬主以及備份的最大數(shù)。這樣的上限權(quán)重MLOAD表示針對(duì)一個(gè)節(jié)點(diǎn)30能夠分配為備份的候補(bǔ)的數(shù)量的上限基準(zhǔn)。
[0158]接著,在步驟S318與步驟S323之間,第二分配部23按每個(gè)節(jié)點(diǎn)30執(zhí)行循環(huán)處理。該情況下,第二分配部23以在步驟S316中重新排列的當(dāng)前任務(wù)表的順序來選擇對(duì)象的節(jié)點(diǎn)30,執(zhí)行循環(huán)處理。
[0159]在每個(gè)節(jié)點(diǎn)30的循環(huán)處理內(nèi),首先在步驟S319中,第二分配部23判斷是否對(duì)(復(fù)制的數(shù)+ I)個(gè)節(jié)點(diǎn)30分配了作為備份的候補(bǔ)的節(jié)點(diǎn)30。在對(duì)(復(fù)制的數(shù)+ I)個(gè)節(jié)點(diǎn)30分配了備份的候補(bǔ)的情況下(步驟S319的是),使處理進(jìn)入步驟S324。該情況下,第二分配部23針對(duì)對(duì)象的分區(qū)分配最大數(shù)的作為備份的候補(bǔ)的節(jié)點(diǎn)30。
[0160]第二分配部23在未對(duì)(復(fù)制的數(shù)+ I)個(gè)節(jié)點(diǎn)30分配備份的候補(bǔ)的情況下(步驟S319的否),使處理進(jìn)入步驟S320。
[0161]在步驟S320中,第二分配部23判斷成為對(duì)象的節(jié)點(diǎn)30的負(fù)荷值是否小于上限權(quán)重ML0AD。在成為對(duì)象的節(jié)點(diǎn)30的負(fù)荷值小于上限權(quán)重MLOAD的情況下(步驟S320的是),第二分配部23使處理進(jìn)入步驟S321。
[0162]在成為對(duì)象的節(jié)點(diǎn)30的負(fù)荷值為上限權(quán)重MLOAD以上的情況下(步驟S320的否),第二分配部23使處理進(jìn)入步驟S323。由此,第二分配部23在對(duì)某一個(gè)節(jié)點(diǎn)30分配了基準(zhǔn)值以上的作為備份的候補(bǔ)的任務(wù)的情況下,能夠避免將該節(jié)點(diǎn)30繼續(xù)分配為備份的候補(bǔ)。結(jié)果,第二分配部23可以將作為備份的候補(bǔ)的任務(wù)分散分配給多個(gè)節(jié)點(diǎn)30。
[0163]在步驟S321中,第二分配部23針對(duì)對(duì)象的分區(qū)分配對(duì)象的節(jié)點(diǎn)30作為備份的候補(bǔ)。接著,在步驟S322中,第二分配部23通過對(duì)對(duì)象的節(jié)點(diǎn)30的負(fù)荷值加“I”來進(jìn)行更新。由此,第二分配部23能夠每當(dāng)被分配為候補(bǔ)時(shí)便使節(jié)點(diǎn)30的負(fù)荷值增加I。如果結(jié)束了步驟S322的處理,則第二分配部23使處理進(jìn)入步驟S323。
[0164]接著,在步驟S323中,第二分配部23在沒有對(duì)多個(gè)節(jié)點(diǎn)30的全部執(zhí)行步驟S318到步驟S323的處理的情況下,使處理返回到步驟S318。另外,第二分配部23在對(duì)多個(gè)節(jié)點(diǎn)30的全部執(zhí)行了步驟S318到步驟S223的處理的情況下,使處理進(jìn)入步驟S324。
[0165]接著,在步驟S324中,第二分配部23在沒有針對(duì)多個(gè)分區(qū)的全部執(zhí)行步驟S314到步驟S324的處理的情況下,使處理返回到步驟S314。而且,第二分配部23在針對(duì)多個(gè)分區(qū)的全部執(zhí)行了步驟S314到步驟S324的處理的情況下,結(jié)束目標(biāo)任務(wù)表的計(jì)算而跳出本流程。
[0166]如上所述,根據(jù)第二分配部23,由于從冗余度少的(即,被分配的備份的數(shù)量少的)分區(qū)開始按順序分配備份的候補(bǔ),所以能夠高效地確保數(shù)據(jù)庫(kù)的冗余度。并且,根據(jù)第二分配部23,由于對(duì)分配了的備份的候補(bǔ)的數(shù)為基準(zhǔn)值以上的節(jié)點(diǎn)30不進(jìn)一步分配備份的候補(bǔ),所以能夠?qū)Χ鄠€(gè)節(jié)點(diǎn)30分散分配備份的候補(bǔ)。
[0167]圖15是表示節(jié)點(diǎn)30的訪問處理部33的處理流程的圖。訪問處理部33執(zhí)行以下的步驟S411?步驟S433的處理。
[0168]首先,在步驟S411中,訪問處理部33檢測(cè)來自客戶端的請(qǐng)求接收事件或者基于復(fù)制處理的請(qǐng)求接收事件。在經(jīng)由網(wǎng)絡(luò)從客戶端接收到針對(duì)數(shù)據(jù)庫(kù)的訪問請(qǐng)求的情況下,產(chǎn)生來自客戶端的請(qǐng)求接收事件。在經(jīng)由網(wǎng)絡(luò)從成為屬主的其他節(jié)點(diǎn)30接收到基于復(fù)制處理的更新請(qǐng)求或者登記請(qǐng)求的情況下,產(chǎn)生基于復(fù)制處理的請(qǐng)求接收事件。
[0169]訪問處理部33在檢測(cè)出來自客戶端的請(qǐng)求接收事件的情況下,使處理進(jìn)入步驟S421。訪問處理部33在檢測(cè)出基于復(fù)制處理的請(qǐng)求接收事件的情況下,使處理進(jìn)入步驟S431。
[0170]在檢測(cè)出來自客戶端的請(qǐng)求接收事件的情況下,在步驟S421中,訪問處理部33例如進(jìn)行計(jì)算來取得來自客戶端的訪問請(qǐng)求所表示的請(qǐng)求目的地的分區(qū)的編號(hào)。接著,在步驟S422中,訪問處理部33參照當(dāng)前任務(wù)表來判斷針對(duì)請(qǐng)求目的地的分區(qū)自節(jié)點(diǎn)是否被分配為屬主。
[0171]在針對(duì)請(qǐng)求目的地的分區(qū)自節(jié)點(diǎn)未被分配為屬主的情況下(步驟S422的否),在步驟S423中,訪問處理部33向客戶端通知被分配為屬主的節(jié)點(diǎn)30的編號(hào),然后使處理返回到步驟S411。
[0172]在針對(duì)請(qǐng)求目的地的分區(qū)自節(jié)點(diǎn)被分配為屬主的情況下(步驟S422的是),在步驟S424中,訪問處理部33判斷訪問請(qǐng)求的類型是參照還是更新或登記。
[0173]在訪問請(qǐng)求的類型是參照的情況下(步驟S424的參照),在步驟S425中,訪問處理部33從數(shù)據(jù)貯存部31讀出有參照請(qǐng)求的數(shù)據(jù)并發(fā)送至客戶端,使處理返回到步驟S411。
[0174]在訪問請(qǐng)求的類型是更新或者登記的情況下(步驟S424的更新/登記),在步驟S426中,針對(duì)請(qǐng)求目的地的分區(qū),與被分配為備份的其他節(jié)點(diǎn)30之間執(zhí)行復(fù)制處理。即,訪問處理部33將與從客戶端接收到的更新或者登記的請(qǐng)求相同的訪問請(qǐng)求向被分配為備份的節(jié)點(diǎn)30發(fā)送。
[0175]如果復(fù)制處理結(jié)束,則接著在步驟S427中,訪問處理部33按照從客戶端發(fā)送來的更新或者登記請(qǐng)求,進(jìn)行數(shù)據(jù)貯存部31中存儲(chǔ)的數(shù)據(jù)的更新或者對(duì)數(shù)據(jù)貯存部31進(jìn)行新的數(shù)據(jù)的登記。接著,在步驟S428中,訪問處理部33通過加I處理來對(duì)數(shù)據(jù)保持表的時(shí)間戳進(jìn)行更新,然后使處理返回到步驟S411。
[0176]另一方面,訪問處理部33在檢測(cè)出基于復(fù)制處理的請(qǐng)求接收事件的情況下,在步驟S431中,根據(jù)從成為屬主的節(jié)點(diǎn)30發(fā)送來的更新或者登記請(qǐng)求,進(jìn)行數(shù)據(jù)貯存部31中存儲(chǔ)的數(shù)據(jù)的更新或者對(duì)數(shù)據(jù)貯存部31進(jìn)行新的數(shù)據(jù)的登記。接著,在步驟S432中,訪問處理部33通過加I處理對(duì)數(shù)據(jù)保持表的時(shí)間戳進(jìn)行更新。接著,在步驟S433中,訪問處理部33向?qū)僦魍ㄖ怯浕蛘吒陆Y(jié)束,然后使處理返回到步驟S411。
[0177]此外,訪問處理部33也可以在步驟S425以及步驟S428中,從客戶端接收包括一系列訪問請(qǐng)求的事項(xiàng),來執(zhí)行與來自客戶端的訪問請(qǐng)求對(duì)應(yīng)的事項(xiàng)處理。另外,訪問處理部33也可以在步驟S426中,當(dāng)通過復(fù)制處理發(fā)送更新或者登記的請(qǐng)求時(shí),向被分配為備份的節(jié)點(diǎn)30發(fā)送包括一系列訪問請(qǐng)求的事項(xiàng)。另外,訪問處理部33也可以在步驟S431中,從成為屬主的節(jié)點(diǎn)30接收包括一系列訪問請(qǐng)求的事項(xiàng),來執(zhí)行與來自成為屬主的節(jié)點(diǎn)30的訪問請(qǐng)求對(duì)應(yīng)的事項(xiàng)處理。
[0178]圖16是表示節(jié)點(diǎn)30的節(jié)點(diǎn)管理部34的處理流程的圖。節(jié)點(diǎn)管理部34執(zhí)行以下的步驟S511?步驟S541的處理。
[0179]首先,在步驟S511中,節(jié)點(diǎn)管理部34對(duì)第三定周期事件、下次任務(wù)表的接收事件或者目標(biāo)任務(wù)表的接收事件進(jìn)行檢測(cè)。第三定周期事件定期產(chǎn)生。下次任務(wù)表的接收事件在節(jié)點(diǎn)管理部34接收到下次任務(wù)表的情況下產(chǎn)生。目標(biāo)任務(wù)表的接收事件在節(jié)點(diǎn)管理部34接收到目標(biāo)任務(wù)表的情況下產(chǎn)生。
[0180]節(jié)點(diǎn)管理部34在檢測(cè)出第三定周期事件的情況下,使處理進(jìn)入步驟S521。節(jié)點(diǎn)管理部34在檢測(cè)出下次任務(wù)表的接收事件的情況下,使處理進(jìn)入步驟S531。節(jié)點(diǎn)管理部34在檢測(cè)出目標(biāo)任務(wù)表的接收事件的情況下,使處理進(jìn)入步驟S541。
[0181]在檢測(cè)出第三定周期事件的情況下,在步驟S521中,節(jié)點(diǎn)管理部34將表存儲(chǔ)部32中存儲(chǔ)的數(shù)據(jù)保持表發(fā)送給管理裝置20的集群管理部24。然后,節(jié)點(diǎn)管理部34使處理返回到步驟S511。
[0182]在檢測(cè)出下次任務(wù)表的接收事件的情況下,在步驟S531中,如果訪問處理部33正執(zhí)行事項(xiàng),則節(jié)點(diǎn)管理部34使處理中斷。接著,在步驟S532中,節(jié)點(diǎn)管理部34根據(jù)接收到的下次任務(wù)表,執(zhí)行短期同步處理。
[0183]具體而言,在成為屬主的節(jié)點(diǎn)30與成為備份的節(jié)點(diǎn)30之間存儲(chǔ)的數(shù)據(jù)集合存在不同的情況下,節(jié)點(diǎn)管理部34針對(duì)多個(gè)分區(qū)的每一個(gè),使訪問處理部33執(zhí)行與復(fù)制處理同樣的處理。由此,節(jié)點(diǎn)管理部34針對(duì)多個(gè)分區(qū)的每一個(gè),能夠取得被分配為屬主的節(jié)點(diǎn)30與被分配為備份的節(jié)點(diǎn)30之間的同步。而且,節(jié)點(diǎn)管理部34針對(duì)多個(gè)分區(qū)的每一個(gè),使訪問處理部33執(zhí)行與被下次任務(wù)表分配的新的任務(wù)(屬主以及備份)對(duì)應(yīng)的處理。
[0184]如果短期同步處理結(jié)束,則接著在步驟S533中,節(jié)點(diǎn)管理部34將當(dāng)前任務(wù)表改寫成下次任務(wù)表的內(nèi)容。由此,訪問處理部33能夠接受來自客戶端的訪問請(qǐng)求。
[0185]接著,在步驟S534中,節(jié)點(diǎn)管理部34進(jìn)行中斷而重新開始事項(xiàng)。然后,節(jié)點(diǎn)管理部34使處理返回到步驟S511。
[0186]在檢測(cè)出目標(biāo)任務(wù)表的接收事件的情況下,在步驟S541中,節(jié)點(diǎn)管理部34對(duì)表存儲(chǔ)部32中存儲(chǔ)的目標(biāo)任務(wù)表進(jìn)行更新。然后,節(jié)點(diǎn)管理部34使處理返回到步驟S511。
[0187]圖17是表示節(jié)點(diǎn)30的轉(zhuǎn)送部35的處理流程的圖。轉(zhuǎn)送部35執(zhí)行以下的步驟S611?步驟S618的處理以及步驟S621?步驟S622的處理。
[0188]首先,在步驟S611中,轉(zhuǎn)送部35判斷CPU12的負(fù)荷是否大于預(yù)先決定的基準(zhǔn)值。在負(fù)荷大于基準(zhǔn)值的情況下(步驟S611的是),在步驟S612中,轉(zhuǎn)送部35待機(jī)(sleep) —定時(shí)間后,使處理返回到步驟S611。
[0189]在負(fù)荷為基準(zhǔn)值以下的情況下(步驟S611的否),在步驟S613中,轉(zhuǎn)送部35檢測(cè)當(dāng)前任務(wù)表與目標(biāo)任務(wù)表之間的差。接著,在步驟S614中,轉(zhuǎn)送部35判斷當(dāng)前任務(wù)表與目標(biāo)任務(wù)表之間是否存在差。
[0190]當(dāng)在當(dāng)前任務(wù)表與目標(biāo)任務(wù)表之間不存在差時(shí)(步驟S614的否),在步驟S615中,如果當(dāng)前任務(wù)表、下次任務(wù)表以及目標(biāo)任務(wù)表的任意一個(gè)中存在未對(duì)自節(jié)點(diǎn)分配任務(wù)的分區(qū),則轉(zhuǎn)送部35將該數(shù)據(jù)集合消除。而且,轉(zhuǎn)送部35在步驟S615的處理之后,使處理返回到步驟S611。
[0191]當(dāng)在當(dāng)前任務(wù)表與目標(biāo)任務(wù)表之間存在差時(shí)(步驟S614的是),在步驟S616中,轉(zhuǎn)送部35針對(duì)在當(dāng)前任務(wù)表中自節(jié)點(diǎn)為屬主的分區(qū),檢測(cè)在目標(biāo)任務(wù)表為備份的候補(bǔ)且在當(dāng)前任務(wù)表中不是屬主也不是備份的其他節(jié)點(diǎn)30。
[0192]接著,在步驟S617中,轉(zhuǎn)送部35判斷是否存在在目標(biāo)任務(wù)表中是備份的候補(bǔ)、在當(dāng)前任務(wù)表中不是屬主也不是備份的其他節(jié)點(diǎn)30。在不存在的情況下(步驟S617的否),轉(zhuǎn)送部35使處理返回到步驟S611。
[0193]在存在的情況下(步驟S617的是),在步驟S618中,轉(zhuǎn)送部35不將針對(duì)來自客戶端的訪問請(qǐng)求的處理中斷地開始長(zhǎng)期同步處理。具體而言,關(guān)于在當(dāng)前任務(wù)表中自節(jié)點(diǎn)被分配為屬主的分區(qū),轉(zhuǎn)送部35針對(duì)被目標(biāo)任務(wù)表分配為備份的候補(bǔ)且未被當(dāng)前任務(wù)表分配為屬主也未被分配為備份的其他節(jié)點(diǎn)30發(fā)送該分區(qū)的數(shù)據(jù)集合。該情況下,轉(zhuǎn)送部35通過不阻礙訪問處理部33對(duì)事項(xiàng)的執(zhí)行的后臺(tái)發(fā)送數(shù)據(jù)集合。由此,轉(zhuǎn)送部35能夠不降低針對(duì)來自客戶端的訪問請(qǐng)求的響應(yīng)速度等地執(zhí)行長(zhǎng)期同步處理。
[0194]而且,如果結(jié)束了步驟S618的處理,則轉(zhuǎn)送部35使處理返回到步驟S611。
[0195]另一方面,具備被目標(biāo)任務(wù)表分配為備份的候補(bǔ)且未被當(dāng)前任務(wù)表分配為屬主也未被分配為備份的分區(qū)的其他節(jié)點(diǎn)30的轉(zhuǎn)送部35執(zhí)行以下的步驟S621以及步驟S622的處理。
[0196]在步驟S621中,轉(zhuǎn)送部35不中斷針對(duì)來自客戶端的訪問請(qǐng)求的處理地執(zhí)行長(zhǎng)期同步處理。具體而言,轉(zhuǎn)送部35針對(duì)被目標(biāo)任務(wù)表分配為備份的候補(bǔ)且未被當(dāng)前任務(wù)表分配為屬主也未被分配為備份的分區(qū),從被分配為屬主的節(jié)點(diǎn)30接收數(shù)據(jù)集合。該情況下,轉(zhuǎn)送部35通過不阻礙訪問處理部33對(duì)事項(xiàng)的執(zhí)行的后臺(tái)來接收數(shù)據(jù)集合。
[0197]接著,在步驟S622中,轉(zhuǎn)送部35對(duì)數(shù)據(jù)保持表進(jìn)行更新。如果長(zhǎng)期同步處理結(jié)束,則由于成為屬主的節(jié)點(diǎn)30中存儲(chǔ)的數(shù)據(jù)集合的副本被存儲(chǔ),所以轉(zhuǎn)送部35通過對(duì)數(shù)據(jù)保持表進(jìn)行更新,能夠使該分區(qū)的時(shí)間戳與屬主的數(shù)據(jù)保持表的時(shí)間戳一致。然后,如果轉(zhuǎn)送部35結(jié)束了步驟S622的處理,則轉(zhuǎn)送部35結(jié)束本流程。
[0198]如以上那樣,根據(jù)轉(zhuǎn)送部35,由于在被分配為備份的候補(bǔ)的節(jié)點(diǎn)30中生成被分配為屬主的節(jié)點(diǎn)30的數(shù)據(jù)集合的副本,所以能夠新產(chǎn)生可成為屬主或者備份的節(jié)點(diǎn)30。
[0199]參照?qǐng)D18?圖24,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)10的動(dòng)作例進(jìn)行說明。圖18是表示針對(duì)3個(gè)分區(qū)# I?# 3的每一個(gè)分配了作為屬主以及備份的節(jié)點(diǎn)30的情況下的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — C各自的狀態(tài)的圖。
[0200]在本例中,如圖18的當(dāng)前任務(wù)表所示,針對(duì)分區(qū)# 1,節(jié)點(diǎn)30 — A被分配為屬主,節(jié)點(diǎn)30 — B被分配為備份。另外,針對(duì)分區(qū)# 2,節(jié)點(diǎn)30 — B被分配為屬主,節(jié)點(diǎn)30 — C被分配為備份。另外,針對(duì)分區(qū)# 3,節(jié)點(diǎn)30 — C被分配為屬主,節(jié)點(diǎn)30 — A被分配為備份。
[0201]節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B根據(jù)事項(xiàng)來執(zhí)行針對(duì)分區(qū)# I的復(fù)制處理。結(jié)果,如圖18的數(shù)據(jù)保持表所示,分區(qū)# I的時(shí)間戳在節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B中成為相同值。
[0202]另外,節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 — C基于事項(xiàng)來執(zhí)行針對(duì)分區(qū)# 2的復(fù)制處理。結(jié)果,如圖18的數(shù)據(jù)保持表所示,分區(qū)# 2的時(shí)間戳在節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 — C中成為相同值。
[0203]另外,節(jié)點(diǎn)30 — C以及節(jié)點(diǎn)30 — A基于事項(xiàng)來執(zhí)行針對(duì)分區(qū)# 3的復(fù)制處理。結(jié)果,如圖18的數(shù)據(jù)保持表所示,分區(qū)# 3的時(shí)間戳在節(jié)點(diǎn)30 — C以及節(jié)點(diǎn)30 — A中成為相同值。
[0204]圖19是表示對(duì)應(yīng)于從圖18的狀態(tài)開始節(jié)點(diǎn)30 — C發(fā)生了故障而執(zhí)行了短期同步處理之后的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — C各自的狀態(tài)的圖。設(shè)管理裝置20的集群管理部24從圖18的狀態(tài)開始無法從節(jié)點(diǎn)30 — C檢測(cè)出數(shù)據(jù)保持表,檢測(cè)為節(jié)點(diǎn)30 — C發(fā)生了故障。
[0205]當(dāng)多個(gè)節(jié)點(diǎn)30中的任意節(jié)點(diǎn)30發(fā)生了故障時(shí),管理裝置20的集群管理部24將發(fā)生了故障的節(jié)點(diǎn)30割離,并且使第一分配部22計(jì)算出下次任務(wù)表。
[0206]對(duì)應(yīng)于來自集群管理部24的調(diào)出,第一分配部22將發(fā)生了故障的節(jié)點(diǎn)30除外來再次分配作為屬主以及備份的節(jié)點(diǎn)30,生成下次任務(wù)表。該情況下,第一分配部22為了至少使數(shù)據(jù)庫(kù)發(fā)揮功能而按照至少存在屬主的方式對(duì)多個(gè)分區(qū)的每一個(gè)分配節(jié)點(diǎn)30。例如,第一分配部22在作為屬主的節(jié)點(diǎn)30發(fā)生了故障的情況下,將作為備份的節(jié)點(diǎn)30分配為屬主。并且,第一分配部22為了進(jìn)一步提高數(shù)據(jù)庫(kù)的冗余度而按照盡量存在備份的方式對(duì)多個(gè)分區(qū)的每一個(gè)分配節(jié)點(diǎn)30。
[0207]在本例中,再分配的結(jié)果如圖19的下次任務(wù)表所示,針對(duì)分區(qū)# 1,節(jié)點(diǎn)30 — A被分配為屬主,節(jié)點(diǎn)30 — B被分配為備份。另外,針對(duì)分區(qū)# 2,節(jié)點(diǎn)30 — B被分配為屬主。另外,針對(duì)分區(qū)# 3,節(jié)點(diǎn)30 — A被分配為屬主。
[0208]而且,集群管理部24將下次任務(wù)表分發(fā)給節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B。節(jié)點(diǎn)30 -A以及節(jié)點(diǎn)30 — B各自的節(jié)點(diǎn)管理部34若接收到下次任務(wù)表則執(zhí)行短期同步處理,并且,將當(dāng)前任務(wù)表的內(nèi)容改寫為下次任務(wù)表的內(nèi)容。由此,節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B的每一個(gè)能夠執(zhí)行與新被分配的任務(wù)對(duì)應(yīng)的處理。
[0209]圖20是表示從圖19的狀態(tài)開始執(zhí)行的長(zhǎng)期同步處理的一個(gè)例子的圖。另外,管理裝置20的集群管理部24在將發(fā)生了故障的節(jié)點(diǎn)30 — C割離的情況下,使第二分配部23計(jì)算出目標(biāo)任務(wù)表。
[0210]對(duì)應(yīng)于來自集群管理部24的調(diào)出,第二分配部23將發(fā)生了故障的節(jié)點(diǎn)30除外來再次分配作為備份的候補(bǔ)的節(jié)點(diǎn)30,生成目標(biāo)任務(wù)表。該情況下,第二分配部23為了提高數(shù)據(jù)庫(kù)的冗余度而按照至少存在屬主以及備份的方式對(duì)多個(gè)分區(qū)的每一個(gè)分配作為候補(bǔ)的節(jié)點(diǎn)30。
[0211]在圖19的狀態(tài)下,不存在針對(duì)分區(qū)# 2以及分區(qū)# 3的備份的節(jié)點(diǎn)30。因此,第二分配部23將節(jié)點(diǎn)30 — A分配為針對(duì)分區(qū)# 2的備份的候補(bǔ),將節(jié)點(diǎn)30 — B分配為針對(duì)分區(qū)# 3的備份的候補(bǔ)。
[0212]此外,在本例中,第二分配部23將已經(jīng)被當(dāng)前任務(wù)表分配為屬主以及備份的節(jié)點(diǎn)30也分配為備份的候補(bǔ)。因此,如圖20的目標(biāo)任務(wù)表所示,針對(duì)分區(qū)# I?# 3的每一個(gè)分配節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B雙方作為備份的候補(bǔ)。
[0213]而且,集群管理部24將目標(biāo)任務(wù)表分發(fā)給節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B。節(jié)點(diǎn)30 -A以及節(jié)點(diǎn)30 — B各自的轉(zhuǎn)送部35針對(duì)當(dāng)前任務(wù)表與目標(biāo)任務(wù)表之差的部分執(zhí)行長(zhǎng)期同步處理。即,節(jié)點(diǎn)30 — B的轉(zhuǎn)送部35通過后臺(tái)將分區(qū)# 2的數(shù)據(jù)集合發(fā)送給節(jié)點(diǎn)30 -A0另外,節(jié)點(diǎn)30 — A的轉(zhuǎn)送部35通過后臺(tái)將分區(qū)# 3的數(shù)據(jù)集合發(fā)送給節(jié)點(diǎn)30 —B0
[0214]需要說明的是,此時(shí)轉(zhuǎn)送部35不中斷針對(duì)來自客戶端的訪問請(qǐng)求的處理地執(zhí)行長(zhǎng)期同步處理。
[0215]如果長(zhǎng)期同步處理結(jié)束,則節(jié)點(diǎn)30 — A能夠存儲(chǔ)分區(qū)# 2的數(shù)據(jù)集合的副本。并且,如圖20的數(shù)據(jù)保持表所示,此時(shí)的分區(qū)# 2的時(shí)間戳在節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B成為相同值。
[0216]另外,節(jié)點(diǎn)30 — B能夠存儲(chǔ)分區(qū)# 3的數(shù)據(jù)集合的副本。并且,如圖20的數(shù)據(jù)保持表所示,分區(qū)# 3的時(shí)間戳在節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B中成為相同值。
[0217]圖21是表示對(duì)應(yīng)于圖20的長(zhǎng)期同步處理結(jié)束而執(zhí)行了短期同步處理之后的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — C各自的狀態(tài)的圖。管理裝置20的集群管理部24定期調(diào)出第一分配部22來使其計(jì)算出下次任務(wù)表。
[0218]在長(zhǎng)期同步處理結(jié)束之后被從集群管理部24調(diào)出的情況下,第一分配部22利用通過長(zhǎng)期同步處理生成的副本進(jìn)一步提高冗余度的方式,針對(duì)多個(gè)分區(qū)的每一個(gè)再次分配作為屬主以及備份的節(jié)點(diǎn)30。
[0219]在本例中,如圖21的下次任務(wù)表所示,針對(duì)分區(qū)# 1,節(jié)點(diǎn)30 — A被分配為屬主,節(jié)點(diǎn)30 — B被分配為備份。另外,針對(duì)分區(qū)# 2,節(jié)點(diǎn)30 — B被分配為屬主,節(jié)點(diǎn)30 — A被分配為備份。另外,針對(duì)分區(qū)# 3,節(jié)點(diǎn)30 — A被分配為屬主,節(jié)點(diǎn)30 — B被分配為備份。
[0220]而且,集群管理部24將下次任務(wù)表分發(fā)給節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B。節(jié)點(diǎn)30-A以及節(jié)點(diǎn)30 — B各自的節(jié)點(diǎn)管理部34如果接收到下次任務(wù)表則執(zhí)行短期同步處理,并且,將當(dāng)前任務(wù)表的內(nèi)容改寫成下次任務(wù)表的內(nèi)容。由此,節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 —B的每一個(gè)能夠執(zhí)行與新被分配的任務(wù)對(duì)應(yīng)的處理。
[0221]圖22是表示從圖21的狀態(tài)開始追加了節(jié)點(diǎn)30 — D的情況下的、節(jié)點(diǎn)30 — A至節(jié)點(diǎn)30 — D各自的狀態(tài)的圖。管理裝置20的集群管理部24例如檢測(cè)出從圖21的狀態(tài)開始新追加了節(jié)點(diǎn)30 — D。
[0222]集群管理部24如圖22的數(shù)據(jù)保持表所示,生成追加了節(jié)點(diǎn)30 — D的數(shù)據(jù)保持表。第一分配部22對(duì)應(yīng)于向數(shù)據(jù)保持表追加了節(jié)點(diǎn)30 — D而生成被追加了節(jié)點(diǎn)30 — D的下次任務(wù)表。
[0223]原本,節(jié)點(diǎn)30 — D不存儲(chǔ)數(shù)據(jù)集合。因此,第一分配部22在追加了節(jié)點(diǎn)30 — D之后不變更屬主以及備份的分配。
[0224]圖23是表示從圖22的狀態(tài)開始執(zhí)行的長(zhǎng)期同步處理的一個(gè)例子的圖。在追加了新的節(jié)點(diǎn)30的情況下,第二分配部23針對(duì)多個(gè)分區(qū)的每一個(gè)再次分配包括新的節(jié)點(diǎn)30在內(nèi)的作為備份的候補(bǔ)的節(jié)點(diǎn)30。該情況下,第二分配部23按照被分配的屬主以及備份的數(shù)量之差為在節(jié)點(diǎn)30間預(yù)先決定的值的范圍內(nèi)的方式,針對(duì)多個(gè)分區(qū)的每一個(gè)分配作為備份的候補(bǔ)的節(jié)點(diǎn)30。
[0225]在本例中,再分配的結(jié)果如圖23的目標(biāo)任務(wù)表所示,針對(duì)分區(qū)# I,節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — B被分配為備份的候補(bǔ)。另外,針對(duì)分區(qū)# 2,節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 — D被分配為備份的候補(bǔ)。另外,針對(duì)分區(qū)# 3,節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — D被分配為備份的候補(bǔ)。
[0226]而且,集群管理部24將目標(biāo)任務(wù)表分發(fā)給節(jié)點(diǎn)30 — A、節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 —D0節(jié)點(diǎn)30 - A、節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 — D各自的轉(zhuǎn)送部35針對(duì)當(dāng)前任務(wù)表與目標(biāo)任務(wù)表之差的部分執(zhí)行長(zhǎng)期同步處理。
[0227]S卩,節(jié)點(diǎn)30 — B的轉(zhuǎn)送部35通過后臺(tái)將分區(qū)# 2的數(shù)據(jù)集合發(fā)送給節(jié)點(diǎn)30 — D。另外,節(jié)點(diǎn)30 — A的轉(zhuǎn)送部35通過后臺(tái)將分區(qū)# 3的數(shù)據(jù)集合發(fā)送給節(jié)點(diǎn)30 — D。其中,此時(shí),轉(zhuǎn)送部35不中斷針對(duì)來自客戶端的訪問請(qǐng)求的處理地執(zhí)行長(zhǎng)期同步處理。
[0228]結(jié)果,節(jié)點(diǎn)30 — D能夠存儲(chǔ)分區(qū)# 2的數(shù)據(jù)集合的副本。并且,如圖23的數(shù)據(jù)保持表所示,分區(qū)# 2的時(shí)間戳在節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 — D中成為相同值。
[0229]另外,節(jié)點(diǎn)30 — D能夠存儲(chǔ)分區(qū)# 3的數(shù)據(jù)集合的副本。并且,如圖23的數(shù)據(jù)保持表所示,分區(qū)# 3的時(shí)間戳在節(jié)點(diǎn)30 — A以及節(jié)點(diǎn)30 — D中成為相同值。
[0230]圖24是表示對(duì)應(yīng)于圖23的長(zhǎng)期同步處理結(jié)束而執(zhí)行了短期同步處理后的、節(jié)點(diǎn)30-A至節(jié)點(diǎn)30 — D各自的狀態(tài)的圖。在長(zhǎng)期同步處理結(jié)束后被從集群管理部24調(diào)出的情況下,第一分配部22針對(duì)多個(gè)分區(qū)的每一個(gè),按照利用由長(zhǎng)期同步處理生成的副本使節(jié)點(diǎn)30間的負(fù)荷更均衡的方式,再次分配作為屬主以及備份的節(jié)點(diǎn)30。
[0231]在本例中,再分配的結(jié)果如圖24的下次任務(wù)表所示,針對(duì)分區(qū)# 1,節(jié)點(diǎn)30 — A被分配為屬主,節(jié)點(diǎn)30 — B被分配為備份。另外,針對(duì)分區(qū)# 2,節(jié)點(diǎn)30 — B被分配為屬主,節(jié)點(diǎn)30 — D被分配為備份。另外,針對(duì)分區(qū)# 3,節(jié)點(diǎn)30 — A被分配為屬主,節(jié)點(diǎn)30 — D被分配為備份。
[0232]而且,集群管理部24將下次任務(wù)表分發(fā)給節(jié)點(diǎn)30 — A、節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 —D0節(jié)點(diǎn)30 - A、節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 — D各自的節(jié)點(diǎn)管理部34在接收到下次任務(wù)表后執(zhí)行短期同步處理,并且,將當(dāng)前任務(wù)表的內(nèi)容改寫為下次任務(wù)表的內(nèi)容。由此,節(jié)點(diǎn)30 —A、節(jié)點(diǎn)30 — B以及節(jié)點(diǎn)30 — D的每一個(gè)能夠執(zhí)行與新被分配的任務(wù)對(duì)應(yīng)的處理。
[0233]綜上所述,根據(jù)本實(shí)施方式涉及的數(shù)據(jù)庫(kù)系統(tǒng)10,由于對(duì)作為備份的候補(bǔ)的節(jié)點(diǎn)30進(jìn)行分配而從作為屬主的節(jié)點(diǎn)30向作為候補(bǔ)的節(jié)點(diǎn)30進(jìn)行數(shù)據(jù)集合的轉(zhuǎn)送,所以能夠使數(shù)據(jù)庫(kù)具有冗余度且使節(jié)點(diǎn)30的處理的負(fù)荷均衡。并且,根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)10,由于能夠不中斷針對(duì)來自客戶端的訪問請(qǐng)求的處理地執(zhí)行這樣的處理,所以即使在割離節(jié)點(diǎn)30或新追加節(jié)點(diǎn)30的情況下,也能不使系統(tǒng)停止地進(jìn)行數(shù)據(jù)的重新配置。
[0234]另外,本實(shí)施方式的管理裝置20以及節(jié)點(diǎn)30中執(zhí)行的程序被以能夠安裝的形式或者能夠執(zhí)行的形式的文件記錄到CD — ROM、軟盤(FD)、CD — R、DVD (Digital VersatileDisk)等計(jì)算機(jī)可讀取的記錄介質(zhì)中來進(jìn)行提供。
[0235]另外,也可以構(gòu)成為將本實(shí)施方式的管理裝置20以及節(jié)點(diǎn)30中執(zhí)行的程序儲(chǔ)存到與因特網(wǎng)等網(wǎng)絡(luò)連接的計(jì)算機(jī)上,通過經(jīng)由網(wǎng)絡(luò)下載來進(jìn)行提供。另外,還可以構(gòu)成為將本實(shí)施方式的管理裝置20以及節(jié)點(diǎn)30中執(zhí)行的程序經(jīng)由因特網(wǎng)等網(wǎng)絡(luò)提供或者分發(fā)。
[0236]另外,也可以構(gòu)成為將本實(shí)施方式的管理裝置20以及節(jié)點(diǎn)30中執(zhí)行的程序預(yù)先編寫到ROM等中來進(jìn)行提供。
[0237]本實(shí)施方式的管理裝置20所執(zhí)行的程序成為包括上述各部(表存儲(chǔ)部21、第一分配部22,第二分配部23以及集群管理部24)的模塊構(gòu)成,作為實(shí)際的硬件,通過CPU (處理器)從上述存儲(chǔ)介質(zhì)讀出程序并執(zhí)行來將上述各部加載到主存儲(chǔ)裝置上,表存儲(chǔ)部21、第一分配部22、第二分配部23以及集群管理部24在主存儲(chǔ)裝置上生成。
[0238]另外,本實(shí)施方式的節(jié)點(diǎn)30所執(zhí)行的程序成為包括上述各部(數(shù)據(jù)貯存部31、表存儲(chǔ)部32、訪問處理部33、節(jié)點(diǎn)管理部34以及轉(zhuǎn)送部35)的模塊構(gòu)成,作為實(shí)際的硬件,通過CPU (處理器)從上述存儲(chǔ)介質(zhì)讀出程序并執(zhí)行來將上述各部加載到主存儲(chǔ)裝置上,數(shù)據(jù)貯存部31,表存儲(chǔ)部32、訪問處理部33、節(jié)點(diǎn)管理部34以及轉(zhuǎn)送部35在主存儲(chǔ)裝置上生成。
[0239]對(duì)本發(fā)明的幾個(gè)實(shí)施方式進(jìn)行了說明,但這些實(shí)施方式只是例示,并不意圖限定發(fā)明的范圍。這些新的實(shí)施方式能夠通過其他各種方式來實(shí)施,在不脫離發(fā)明主旨的范圍可進(jìn)行各種省略、置換、變更。這些實(shí)施方式及其變形包含在發(fā)明的范圍、主旨中,并且,屬于技術(shù)方案所記載的發(fā)明和其等同的范圍。
[0240]符號(hào)說明
[0241]10-數(shù)據(jù)庫(kù)系統(tǒng);12-CPU ;13_存儲(chǔ)器;14-通信I / F ; 15-貯存器I / F;16_外部存儲(chǔ)裝置;20_管理裝置;21_表存儲(chǔ)部;22_第一分配部;23_第二分配部;24_集群管理部;30-節(jié)點(diǎn);31-數(shù)據(jù)貯存部;32-表存儲(chǔ)部;33_訪問處理部;34_節(jié)點(diǎn)管理部;35_轉(zhuǎn)送部。
【權(quán)利要求】
1.一種數(shù)據(jù)庫(kù)系統(tǒng),具備存儲(chǔ)數(shù)據(jù)庫(kù)的多個(gè)節(jié)點(diǎn)和管理所述多個(gè)節(jié)點(diǎn)的管理裝置, 所述管理裝置具有: 第一分配部,根據(jù)所述多個(gè)節(jié)點(diǎn)各自的狀況的變更,來分配存儲(chǔ)數(shù)據(jù)集合并受理對(duì)所述數(shù)據(jù)集合的訪問請(qǐng)求的第一節(jié)點(diǎn)、以及存儲(chǔ)所述數(shù)據(jù)集合并成為所述第一節(jié)點(diǎn)的備份的第二節(jié)點(diǎn),對(duì)所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)指示與分配對(duì)應(yīng)的動(dòng)作;和 第二分配部,根據(jù)所述多個(gè)節(jié)點(diǎn)的狀況并根據(jù)所述第一節(jié)點(diǎn)以及所述第二節(jié)點(diǎn)的分配狀況的變更,分配作為所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的候補(bǔ)的第三節(jié)點(diǎn),對(duì)所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)指示用于使所述第三節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)進(jìn)行動(dòng)作的準(zhǔn)備, 所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)具有將所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的數(shù)據(jù)集合向所述第三節(jié)點(diǎn)發(fā)送的轉(zhuǎn)送部。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)系統(tǒng), 所述多個(gè)節(jié)點(diǎn)將所述數(shù)據(jù)庫(kù)分割成多個(gè)分區(qū)進(jìn)行存儲(chǔ), 所述第一分配部針對(duì)所述多個(gè)分區(qū)的每個(gè)分區(qū)分配所述第一節(jié)點(diǎn)以及所述第二節(jié)點(diǎn), 所述第二分配部針對(duì)所述多個(gè)分區(qū)的每個(gè)分區(qū)分配所述第三節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)庫(kù)系統(tǒng), 所述第一分配部生成第一表,通過將所述第一表分發(fā)給所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)來指示與分配對(duì)應(yīng)的動(dòng)作,所述第一表表示針對(duì)多個(gè)分區(qū)的每個(gè)分區(qū),所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)是所述第一節(jié)點(diǎn)還是所述第二節(jié)點(diǎn), 所述第二分配部生成第二表,通過將所述第二表分發(fā)給所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)來指示所述準(zhǔn)備,所述第二表表示針對(duì)多個(gè)分區(qū)的每個(gè)分區(qū),所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)是否是所述第三節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求2所述的數(shù)據(jù)庫(kù)系統(tǒng), 在數(shù)據(jù)集合向所述第三節(jié)點(diǎn)的發(fā)送已結(jié)束的情況下,所述第一分配部針對(duì)所述多個(gè)分區(qū)的每個(gè)分區(qū)再次分配所述第一節(jié)點(diǎn)以及所述第二節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)庫(kù)系統(tǒng), 在所述多個(gè)節(jié)點(diǎn)中任意的節(jié)點(diǎn)發(fā)生了故障的情況下, 所述第一分配部將所述發(fā)生了故障的節(jié)點(diǎn)除外,再次分配所述第一節(jié)點(diǎn)以及所述第二節(jié)點(diǎn), 所述第二分配部將所述發(fā)生了故障的節(jié)點(diǎn)除外,再次分配所述第三節(jié)點(diǎn)。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)庫(kù)系統(tǒng), 所述第二分配部針對(duì)所述多個(gè)分區(qū)的每個(gè)分區(qū),按照至少存在所述第一節(jié)點(diǎn)以及所述第二節(jié)點(diǎn)的方式來分配所述第三節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求4所述的數(shù)據(jù)庫(kù)系統(tǒng), 在追加了新的節(jié)點(diǎn)的情況下,所述第二分配部針對(duì)所述多個(gè)分區(qū)的每個(gè)分區(qū)將所述新的節(jié)點(diǎn)包括在內(nèi)再次分配所述第三節(jié)點(diǎn)。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)庫(kù)系統(tǒng), 所述第二分配部按照被分配的所述第一節(jié)點(diǎn)與所述第二節(jié)點(diǎn)的數(shù)量之差成為在節(jié)點(diǎn)間預(yù)先決定的值的范圍內(nèi)的方式,針對(duì)所述多個(gè)分區(qū)的每個(gè)分區(qū)分配所述第三節(jié)點(diǎn)。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)庫(kù)系統(tǒng), 所述第二分配部按照運(yùn)算能力高的節(jié)點(diǎn)比運(yùn)算能力低的節(jié)點(diǎn)優(yōu)先成為所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的方式來分配所述第三節(jié)點(diǎn)。
10.根據(jù)權(quán)利要求8所述的數(shù)據(jù)庫(kù)系統(tǒng), 所述第二分配部按照受理所述訪問請(qǐng)求的數(shù)量少的節(jié)點(diǎn)比受理所述訪問請(qǐng)求的數(shù)量多的節(jié)點(diǎn)優(yōu)先成為所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的方式來分配所述第三節(jié)點(diǎn)。
11.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)系統(tǒng), 所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)還具有訪問處理部,所述訪問處理部受理包括針對(duì)所述第一節(jié)點(diǎn)的分區(qū)的一系列訪問請(qǐng)求在內(nèi)的事項(xiàng)來執(zhí)行與來自客戶端的訪問請(qǐng)求對(duì)應(yīng)的處理,在執(zhí)行所述分區(qū)的數(shù)據(jù)集合的更新或者登記的訪問請(qǐng)求的情況下,向所述第二節(jié)點(diǎn)發(fā)送包括一系列訪問請(qǐng)求在內(nèi)的事項(xiàng)并使其執(zhí)行該事項(xiàng), 所述轉(zhuǎn)送部將所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的所述分區(qū)的數(shù)據(jù)集合通過不妨礙所述事項(xiàng)的執(zhí)行的后臺(tái)發(fā)送給所述第三節(jié)點(diǎn)。
12.—種管理裝置,是對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)的多個(gè)節(jié)點(diǎn)進(jìn)行管理的管理裝置, 所述管理裝置具有: 第一分配部,根據(jù)所述多個(gè)節(jié)點(diǎn)各自的狀況的變更,來分配存儲(chǔ)數(shù)據(jù)集合并受理對(duì)所述數(shù)據(jù)集合的訪問請(qǐng)求的第一節(jié)點(diǎn)、以及存儲(chǔ)所述數(shù)據(jù)集合并成為所述第一節(jié)點(diǎn)的備份的第二節(jié)點(diǎn),對(duì)所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)指示與分配對(duì)應(yīng)的動(dòng)作;和 第二分配部,根據(jù)所述多個(gè)節(jié)點(diǎn)的狀況并根據(jù)述第一節(jié)點(diǎn)以及所述第二節(jié)點(diǎn)的分配狀況的變更,分配作為所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的候補(bǔ)的第三節(jié)點(diǎn),針對(duì)所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)指示用于使所述第三節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)進(jìn)行動(dòng)作的準(zhǔn)備, 所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)具有將所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的數(shù)據(jù)集合向所述第三節(jié)點(diǎn)發(fā)送的轉(zhuǎn)送部。
13.一種節(jié)點(diǎn),是權(quán)利要求1所述的數(shù)據(jù)庫(kù)系統(tǒng)中具備的節(jié)點(diǎn)。
14.一種程序,用于使計(jì)算機(jī)作為權(quán)利要求1所述的數(shù)據(jù)庫(kù)系統(tǒng)中具備的管理裝置發(fā)?車功能。
15.一種程序,用于使計(jì)算機(jī)作為權(quán)利要求1所述的數(shù)據(jù)庫(kù)系統(tǒng)中具備的節(jié)點(diǎn)發(fā)揮功倉(cāng)泛。
16.一種數(shù)據(jù)處理方法,是具備存儲(chǔ)數(shù)據(jù)庫(kù)的多個(gè)節(jié)點(diǎn)和管理所述多個(gè)節(jié)點(diǎn)的管理裝置的數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)處理方法, 所述管理裝置執(zhí)行: 第一分配步驟,根據(jù)所述多個(gè)節(jié)點(diǎn)各自的狀況的變更,來分配存儲(chǔ)數(shù)據(jù)集合并受理對(duì)所述數(shù)據(jù)集合的訪問請(qǐng)求的第一節(jié)點(diǎn)、以及存儲(chǔ)所述數(shù)據(jù)集合并成為所述第一節(jié)點(diǎn)的備份的第二節(jié)點(diǎn),對(duì)所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)指示與分配對(duì)應(yīng)的動(dòng)作;和 第二分配步驟,根據(jù)所述多個(gè)節(jié)點(diǎn)的狀況并根據(jù)所述第一節(jié)點(diǎn)以及所述第二節(jié)點(diǎn)的分配狀況的變更,分配作為所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的候補(bǔ)的第三節(jié)點(diǎn),針對(duì)所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)指示用于使所述第三節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)進(jìn)行動(dòng)作的準(zhǔn)備, 所述多個(gè)節(jié)點(diǎn)的每個(gè)節(jié)點(diǎn)執(zhí)行將所述第一節(jié)點(diǎn)或者所述第二節(jié)點(diǎn)的數(shù)據(jù)集合向所述第三節(jié)點(diǎn)發(fā)送的轉(zhuǎn)送步驟。
【文檔編號(hào)】G06F11/20GK104185841SQ201380003048
【公開日】2014年12月3日 申請(qǐng)日期:2013年3月12日 優(yōu)先權(quán)日:2013年3月12日
【發(fā)明者】服部雅一 申請(qǐng)人:株式會(huì)社東芝, 東芝解決方案株式會(huì)社