(58)【調査した分野】(Int.Cl.,DB名)
前記出力手段は、特定のアルゴリズムに従って、前記複製されたキーバリューペアに前記ノード識別子を付与することを特徴とする請求項1乃至7のいずれか一項に記載のデータ処理システム。
【発明を実施するための形態】
【0019】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【0020】
(第1の実施形態)
図1は、本発明の第1の実施形態に係る分散型データ処理システム1の機能構成を示すブロック図である。本実施形態に係る分散型データ処理システム1は、分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理システムである。
【0021】
本発明の第1の実施形態に係る分散型データ処理システム1は、第1データベースサーバ群10と、バックアップ手段20と、データリストア装置30と、第2データベースサーバ群70とを備えている。
【0022】
また、本発明の第1の実施形態に係るデータリストア装置30は、部分リストア手段40と、第1処理手段50と、第2処理手段60と、を有している。データリストア装置30は、第1データベースサーバ群10を構成する複数のサーバのバックアップデータをサーバ毎にリストアし、2段構成のマップリデュース処理(以下、MapReduce処理)を実行して出力する出力手段である。なお、本発明の第1の実施形態においては、差分バックアップ又は増分バックアップによってバックアップデータを取得することを想定する。ただし、バックアップ方法は、差分バックアップ又は増分バックアップに限らず、フルバックアップ以外のバックアップ方法でありさえすればよい。
【0023】
本発明の第1の実施形態に係る分散型データ処理システム1は、例えばコンピュータやサーバマシンといった情報処理装置や、メモリやストレージなどの記憶装置を組み合わせて構成される。
【0024】
図2は、本発明の第1の実施形態に係る分散型データ処理システム1に用いられる情報処理装置のハードウェア構成の一例を示す概念図である。例えば、情報処理装置は、
図2のように、中央演算処理装置5(
図2ではCPUと記載)を有する(CPU:Central Processing Unit)構成とすることができる。また、情報処理装置は、
図2のように、ROM6やRAM7を有する構成とすることができる(ROM:Read Only Memory、RAM:Random Access Memory)。さらに、情報処理装置は、
図2のように、記憶装置8(
図2ではHDDと記載)や入出力装置9(
図2ではI/Oと記載)を有する構成とすることができる(HDD:Hard Disk Drive、I/O:Input/Output)。すなわち、本実施形態に係る分散型データ処理システム1に用いられる情報処理装置は、上述の中央演算処理装置5、ROM6、RAM7、記憶装置8、入出力装置9がデータバスによって接続された構成とすることによって実現される。なお、本発明の第1の実施形態に係る分散型データ処理システム1に用いられる情報処理装置は、
図2の構成に限定されず、
図2の構成に種々の装置・機能を追加・削除した構成とすることができる。
【0025】
続いて、本発明の第1の実施形態に係るデータ処理システム1の構成要素について詳細に説明する。
【0026】
(第1データベースサーバ群)
図3に示した第1データベースサーバ群10は、第1サーバ11−1、第2サーバ11−2、・・・、第mサーバ11−mを含む複数のサーバから構成される(mは2以上の整数)。なお、
図3には、一例として4つのサーバを示しているが、サーバ11の数は4つに限定されない。第1データベースサーバ群10を構成するサーバ11の数は、少なくとも二つ以上であればよい。
【0027】
本実施形態に係るデータベースサーバ群10はスケールアウトが可能であり、第1データベースサーバ群10を構成する複数のサーバ11(11−1〜m)に任意で別のサーバを追加することができる。すなわち、本実施形態に係るデータベースサーバ群10は、データのバックアップタイミング毎に異なる構成となっていてもよい。
【0028】
分散型データ処理システム1は分散KVS環境を形成する。分散KVS環境においては、データを格納するサーバ11は複数存在し、そのデータバックアップは各サーバ11単位で行われる(KVS:KEY−VALUE Store)。
【0029】
分散型データ処理システム1においては、格納する値(VALUE)にキー(KEY)と呼ばれる数値を割り当てたKVペアの形態でデータを格納する。分散型データ処理システム1に格納されるデータには、KVペアが更新された更新順序に関する情報(更新情報)が含まれる。更新情報としては、更新時間(更新時刻とも呼ぶ)やベクタークロック(Vector Clock)などのKVペアを更新した順序が明確になる情報を用いる。本実施形態においては、更新情報として、更新時間(Time)を用いた場合について説明する。なお、更新情報として、バックアップを実行したタイミング(時刻・順序)に関する情報を用いてもよい。バックアップを実行したタイミングは、例えば、KVペアの更新時間(Time)の替わりとしてデータに含めてもよいし、更新時間とは別にデータに含めてもよい。
【0030】
図4に示すように、本発明の第1の実施形態に係るデータ処理システム1で扱われるKVペアは、キー情報(Key)を含むキー(KEY)と、更新情報(Time)と値(Value)とを含むバリュー(VALUE)の組合せである。なお、本発明の第1の実施形態に係るデータ処理システム1で扱われるKVペアは、キー情報以外の情報をキーとしてもよく、また、更新情報とデータ以外の情報をバリューとして含んでいてもよい。バックアップタイミングをデータに含める場合、例えば
図4の更新時間(Time)をバックアップタイミング(Tn)で置換してもよいし、
図5のようにTimeとは別にバックアップタイミング(Tn)をデータに付加してもよい。
【0031】
第1データベースサーバ群10に含まれる各サーバ11は、互いに異なるサーバマシンやストレージなどの情報処理装置として構成される。ただし、単一の装置内部に複数のサーバを構成させることができるのであれば、同一の装置内に異なる複数のサーバを構成させることができる。
【0032】
また、
図3などでは、第1データベースサーバ群10と、バックアップ手段20とを別の構成として示しているが、第1データベース群10がバックアップ手段20を含む構成であってもよい。
【0033】
本実施形態に係るデータ処理システム1は、所定のタイミングにおいて、バックアップ手段20にデータをバックアップする。データをバックアップする際、バックアップ手段20は、各サーバ11のバックアップタイミング毎に、各サーバ11のバックアップデータを格納する。
【0034】
例えば、本実施形態に係るデータ処理システム1においては、所定のタイミングにおいて更新されたデータを、差分バックアップや増分バックアップによってバックアップする。ただし、初めのデータバックアップ時においては、フルバックアップによってデータをバックアップしておく。
【0035】
なお、第1データベースサーバ群10と第2データベースサーバ群70とは、別のサーバ群として同時存在している必要はなく、第1データベースサーバ群10を構成するサーバ11が、第2データベースサーバ群70を構成するサーバとなってもよい。
【0036】
(バックアップ手段)
図3のように、本発明の第1の実施形態に係るバックアップ手段20は、第1バックアップ部21−1、第2バックアップ部21−2、・・・、第nバックアップ部21−nを含む複数のバックアップ部21を有する(nは2以上の整数)。各バックアップ部21は、バックアップタイミングがT1〜Tnであるバックアップデータを、世代毎に格納する。
図3においては、世代毎に、第1データベースサーバ群10に含まれる第1〜nサーバ11−1〜nのデータをバックアップデータとして各バックアップ部21に格納するように図示している。なお、本発明の第1の実施形態に係る分散型データ処理システム1においては、各世代において、第1データベースサーバ群10を構成する複数のサーバ11のサーバ構成が互いに異なっていてもよい。バックアップ部21にバックアップされるデータは、異なるサーバ11毎に分別できるように格納される。
【0037】
バックアップ手段20にバックアップされたデータをリストアする際、バックアップ手段20は、部分リストア手段40にバックアップデータを送信する。
【0038】
(部分リストア手段)
部分リストア手段40は、各バックアップ部21に格納されたバックアップタイミングが異なる何世代かのバックアップデータをサーバ11毎に個別にリストアする。このようなリストアを部分リストアと呼ぶ。
【0039】
部分リストア手段40は、例えばサーバ11毎のバックアップデータを世代毎に個別にリストアする部分サーバの組合せによって構成することができる。部分サーバは、各世代における各サーバのバックアップデータを部分リストア(ロード)して保持するサーバである。一般に、バックアップデータの形式は分散KVS毎に固有であるため、後続の分散処理フレームワークで直接読み出すことが難しいことが想定される。部分サーバは、分散処理部分がバックアップデータの形式に依存しないように、世代毎にバックアップされたデータのKVペアを取得する目的で配置される。
【0040】
図6は、第1バックアップ部21−1と、第2バックアップ部21−2とに格納された複数のバックアップデータを部分リストア手段40で部分リストアする例を示す。なお、
図6のバックアップ手段20には、2つの世代(T1とT2)の例を挙げているが、実際には何世代にもわたるバックアップデータが格納されている。また、
図6の各バックアップ部21にはサーバ4つ分のバックアップデータしか図示していないが、各バックアップ部21には、世代毎にバックアップが実行されたサーバ11の数だけバックアップデータが含まれる。
【0041】
図6において、時刻T1にバックアップされたバックアップデータを格納する第1バックアップ部21−1には、時刻T1にバックアップされた第1〜mサーバ11−1〜mのバックアップデータが含まれる。時刻T1にバックアップされた第1〜mサーバ11−1〜mのバックアップデータは、それぞれ第1〜4部分サーバ41−1〜4において部分リストアされる。
【0042】
また、
図6において、時刻T2にバックアップされたバックアップデータを格納する第2バックアップ部21−2には、時刻T2にバックアップされた第1〜mサーバ11−1〜mのバックアップデータが含まれる。時刻T2にバックアップされた第1〜mサーバ11−1〜mのバックアップデータは、それぞれ第5〜8部分サーバ41−5〜8において部分リストアされる。
【0043】
なお、
図6には、m個のサーバ11のバックアップデータを4つの部分サーバ41に部分リストアする例を図示しているが、実際には、m個の各サーバ11に対応するようにm個の部分サーバ41を配置することが好ましい。また、m個のサーバ11のバックアップデータを、任意の数の部分サーバ41に振り分けるように構成することも可能である。
【0044】
部分サーバ41は、第1データベースサーバ群10に含まれる各サーバ11の内部構成としてもよいし、各サーバ11とは異なる情報処理装置に含まれる構成としてもよい。また、部分サーバ41は、情報処理装置内部のプログラムとして構成してもよい。
【0045】
部分リストア手段40においては、異なる部分サーバ41毎にバックアップデータをリストアするため、異なるデータ構造で格納されたバックアップデータを並列してリストアすることが可能となる。
【0046】
部分リストア手段40によってリストアされたデータは、後段の第1処理手段50、第2処理手段60に送信され、2段構成のMapReduce処理が施される。第1処理手段50による1段目のMapReduce処理は、あるキー(KEY)において更新時間(Time)が最新であるKVペアを選択するための処理である。第2処理手段60による2段目のMapReduce処理は、リストアすべき第2データベースサーバ群70のサーバ構成に応じて、レプリケーションを考慮して第2データベースサーバ群70を構成するサーバ単位でKVペアを集約するための処理である。
【0047】
(第1処理手段)
2段構成のMapReduce処理の1段目を実行する第1処理手段50について、
図7を用いて説明する。
【0048】
第1処理手段50は、第1Map処理部51(以下、第1マップ処理部51)と、第1Shuffle処理部53(以下、第1シャッフル処理部53)と、第1Reduce処理部55(以下、第1リデュース処理部55)と、を有する。第1処理手段50は、MapReduceをフレームワークとする並列分散処理を実行する。第1処理手段50は、部分リストア手段40から取得したバックアップデータをキー(KEY)でソートし、キー毎に集約したKVペア群として出力する。
【0049】
第1マップ処理部51は、各部分サーバ41から取得したKVペアを並列に読み出すマップ処理(Map処理)を実行する。第1マップ処理部51は、読み出した複数のKVペアを第1シャッフル処理部53に出力する。
【0050】
第1シャッフル処理部53は、第1マップ処理部51から取得した複数のKVペアを、KVペアのキー(KEY)であるキー情報(Key)でソートし、KVペアをキー毎にまとめてKVペア群(第1のキーバリューペア群とも呼ぶ)とする。第1シャッフル処理部53は、キー毎にまとめたKVペア群(第1のキーバリューペア群)を第1リデュース処理部55に出力する。
【0051】
第1リデュース処理部55は、第1シャッフル処理部53から取得したキー毎にまとめられたKVペア群(第1のキーバリューペア群)を構成するKVペアの中から、更新時間(Time)が最新であるKVペアを一つ選択する。通常、データは複数のサーバに分別されてバックアップされており、同じキー及び値を持つデータが複数存在することになる。そのため、第1リデュース部は、更新時間が最新である複数のKVペアのうち一つを任意に選択する。
【0052】
そして、第1リデュース処理部55は、各KVペア群(第1のキーバリューペア群)において選択された最新の更新時間(Time)を持つKVペアを、レプリケーション数に従ってレプリケーション(複製)する。例えば、レプリケーション数が3であれば、同じキー(KEY)とバリュー(VALUE)を持つ3つのKVペアを複製する。
【0053】
さらに、第1リデュース処理部55は、レプリケーションしたKVペアのリストア先となるサーバの装置ID(ノードIDやノード識別子ともよぶ)を、レプリケーションした全てのKVペアに付与して一時的KVペアを作成する。KVペアの格納先となるサーバのノードID(NodeID)が決定すると、
図9で示される一時的KVペアを新規に作成する。通常、分散KVSはレプリケーションを行うため、最新KVペア1つに対して、格納先が異なるレプリケーション数分のKVペアが作成されることになる。なお、レプリケーションとノードIDの付与については、ノードIDを付与してからレプリケーションを実行する順番としてもよい。
【0054】
ところで、KVペア毎に格納(リストア)すべきサーバは、第2データベースサーバ群70のサーバ構成に応じて、適宜決まるものとする。リストアすべきサーバには、装置IDなどの一連の番号が割り振られているものとする。例えば、分散KVSに固有のKVペアの格納先サーバ決定アルゴリズムにより、そのKVペアの格納先サーバが決定されればよい。なお、KVペアと格納先サーバの対応関係は、第1処理手段50の第1リデュース処理部55で理解できるものとする。例えば、第1リデュース処理部55に、どのサーバにKVペアを振り分けるのかを決定するアルゴリズム又は対応表をリデュース処理として実装すればよい。
【0055】
第1リデュース処理部55は、ノードIDが同一となる一時的KVペアを一時的KVペア群(第1の一時的キーバリューペア群)として集約し、第2処理手段60に出力する。
【0056】
(第2処理手段)
続いて、2段構成のMapReduce処理の2段目を実行する第2処理手段60について、
図8を用いて説明する。
【0057】
第2処理手段60は、第2Map処理部61(以下、第2マップ処理部61)と、第2Shuffle処理部63(以下、第2シャッフル処理部63)と、第2Reduce処理部65(以下、第2リデュース処理部65)と、を有する。第2処理手段60は、MapReduceをフレームワークとする並列分散処理を実行する。
【0058】
まず、第2処理手段60は、第1処理手段50によってキー毎に集約された一時的KVペア群を取得する。そして、第2処理手段60は、一時的KVペア群を構成する一時的KVペアを、特定の条件・規則に従って第2データベースサーバ群70を構成するサーバ毎のKVペア群として再構成し、再構築したKVペア群を出力する。
【0059】
第2マップ処理部61は、第1処理手段50の第1リデュース処理部55から取得した複数の一時的KVペアを並列に読み出すマップ処理(Map処理)を実行する。第2マップ処理部61は、読み出した複数の一時的KVペアを第2シャッフル処理部63に出力する。
【0060】
第2シャッフル処理部63は、第2マップ処理部61から取得した複数の一時的KVペアを、一時的KVペアのキー(KEY)となるノードID(NodeID)でソートする。そして、第2シャッフル処理部63は、一時的KVペアをノードID毎にまとめた一時的KVペア群(第2の一時的キーバリューペア群)とする。第2シャッフル処理部63は、ノードID毎にまとめた一時的KVペア群(第2の一時的キーバリューペア群)を第2リデュース処理部65に出力する。
【0061】
なお、ノードID(NodeID)は、KVペアの格納先サーバ番号を意味するため、第2リデュース処理部65には、格納先が同じKVペアが集約されることになる。
【0062】
第2リデュース処理部65は、第2シャッフル処理部63から取得したノードID毎にまとめられた一時的KVペア群(第2の一時的キーバリューペア群)において、一時的KVペアに付与されていたノードIDを削除し、通常のKVペアに変換する。
【0063】
そして、第2リデュース処理部65は、通常のデータ構造を持つKVペアを、ノードID毎にまとめられたKVペア群(第2のキーバリューペア群)として集約し、KVペア群(第2のキーバリューペア群)をノードIDによって指定されたサーバに向けて出力する。
【0064】
第2リデュース処理部65は、同じノードIDをキー(KEY)とする一時的KVペアを集め、一時的KVペアのバリュー(VALUE)から本来格納すべきKVペアを取り出す。そして、第2リデュース処理部65は、取り出したKVペアのまとまりをKVペア群(第2のキーバリューペア群)という塊として格納先サーバに送信する。その結果、単一のKVペアよりも大きなサイズのKVペア群(第2のキーバリューペア群)を転送することによって、ネットワークの使用効率を向上することができる。
【0065】
(第2データベースサーバ群)
第2データベースサーバ群70は、第2処理手段60の第2リデュース処理部65から取得したKVペアを格納する。第2データベースサーバ群70は、第1データベースサーバ群10と同様に、分散KVS型のサーバ構成を取る。本発明の第1の実施形態に係る第2データベースサーバ群70は、第1データベースサーバ群10とは異なるサーバ構成とすることが可能である。また、第2データベースサーバ群70は、第1データベースサーバ群10と同じサーバ構成であっても構わない。
【0066】
以上が、本発明の第1の実施形態に係る分散型データ処理システムの構成に関する説明である。なお、本発明の第1の実施形態に係る分散型データ処理システムの構成は、上述の構成に限定されず、必要に応じて種々の追加・削除等の変更を施してもよい。
【0067】
(動作)
次に、本発明の第1の実施形態に係る分散型データ処理システム1の動作について説明する。特に、本発明の特徴部分となるデータリストア装置30における部分リストア処理、2段のMapReduce処理について、
図10のフローチャートを用いて順序立てて説明する。
【0068】
(部分リストア処理)
まず、
図10の部分リストア処理において、部分リストア手段40に含まれる複数の部分サーバ41は、バックアップ手段20がデータをバックアップするバックアップタイミング毎に各サーバのバックアップデータを取得する。そして、各部分サーバ41は、取得したバックアップデータをリストアする(ステップS10)。
【0069】
なお、部分リストア処理において、各部分サーバ41は、差分バックアップデータ(増分バックアップデータ)のKVデータのみを保持する。また、部分リストア処理においては、差分バックアップ(増分バックアップ)の世代を問わず、バックアップ手段20に格納された全てのバックアップデータが各部分サーバ41に個別にリストア(部分リストア)される。
【0070】
(第1処理手段におけるMapReduce処理)
続いて、第1処理手段50において、分散処理フレームワークであるMapReduce処理が、以下のステップS20〜S40を通じて実行される。
【0071】
図10の第1マップ処理において、第1処理手段50の第1マップ処理部51は、部分リストア手段40に含まれる複数の部分サーバ41によってリストアされた複数のKVペアを並列に読み出すMap処理が実行される(ステップS20)。
【0072】
なお、第1マップ処理においては、各部分サーバ41が保持するデータの世代を考慮する必要はない。
【0073】
第1シャッフル処理において、第1処理手段50の第1シャッフル処理部53は、第1マップ処理部51によってMap処理された複数のKVペアのうち同じキー(KEY)を持つものをKVペア群(第1のキーバリューペア群)としてまとめる(ステップS30)。
【0074】
第1リデュース処理において、第1に、第1処理手段50の第1リデュース処理部55は、キー毎にまとめられたKVペア群(第1のキーバリューペア群)の中で更新時間(Time)が最新であるKVペアを、KVペア群毎に選択する。第2に、第1リデュース処理部55は、選択したKVペアを所定のレプリケーション数に従ってレプリケーション(複製)する。第3に、第1リデュース処理部55は、レプリケーションされたKVペアに対して、新たにKVペアを格納するサーバのノードIDを付与し、一時的KVペアを作成する。以上の第1〜3の手順を含む第1リデュース処理によって、部分リストアされたバックアップデータから、キー(KEY)毎に更新時間が最新であるKVペアが選択され、KVペアのレプリケーションとノードIDの付与が実行される(ステップS40)。なお、第1リデュース処理における第2と第3の手順は、順序を入れ替えて実行してもよい。同一のキー(KEY)を持つ一時的KVペアは、一時的KVペア群(第1の一時的KVペア群)として集約され、第2処理手段60に対して出力される。
【0075】
(第2処理手段におけるMapReduce処理)
続いて、第2処理手段60において、分散処理フレームワークであるMapReduce処理が、以下のステップS50〜S70を通じて実行される。
【0076】
図10の第2マップ処理において、第2処理手段60の第2マップ処理部61は、各キー(KEY)の一時的KVペアを、キー(KEY)毎の一時的KVペア群(第1のキーバリューペア)として並列に読み出すMap処理を実行する(ステップS50)。
【0077】
第2シャッフル処理において、第2シャッフル処理部63は、第2マップ処理部61によってMap処理された複数のKVペアを、同じノードID(NodeID)を持つ一時的KVペア毎に集約する。そして、第2シャッフル処理部63は、同じノードID(NodeID)を持つ一時的KVペア毎に集約された複数のKVペアによって、一時的KVペア群(第2の一時的キーバリューペア群)を形成させる(ステップS60)。
【0078】
第2リデュース処理において、第2リデュース処理部65は、ノードID(NodeID)毎にまとめられた一時的KVペアのノードID(NodeID)を削除し、通常の構造を持つKVペアに変換する(ステップS70)。通常の構造を持つKVペアは、同じノードID毎に集約されたKVペア群(第2のキーバリューペア)として、指定されたサーバに振り分けられる。
【0079】
以上が、本実施形態に係るデータリストア装置の動作についての詳細な説明である。なお、第1の実施形態に係るデータリストア装置の動作は、上述の処理手順に限定されず、必要に応じて種々の追加・削除等の変更を施してもよい。
【0080】
一般に、分散KVSは、KVペア更新時の排他制御を可能にするためにKVペアの更新時間情報を持つ。本発明の第1の実施形態に係る分散型データ処理システムにおいては、更新時間が最新であるKVペアを選択するために、KVペアの更新時間情報を利用する。その結果、多世代にわたる差分・増分バックアップのデータを並列に読み込んで処理することができ、短時間でデータリストアすることが可能となる。
【0081】
また、本発明の第1の実施形態に係る分散型データ処理システムにおいては、データのリストア時に直接分散KVSの各サーバにリストアするのではなく、部分サーバに一度データをリストアし、部分サーバからデータを直接読み出す。その結果、データのバックアップ時のサーバ構成に依存しないデータリストアが可能となる。
【0082】
さらに、本発明の第1の実施形態に係る分散型データ処理システムのMapReduce処理においては、本来のKVペアに格納先サーバ番号を意味するノードIDを付与した一次的KVペアを内部的に作成する。その結果、データをリストアする分散KVSのサーバ単位でKVペアを集約することができる。
【0083】
Reduce処理において、格納先が同一であるKVペアがまとめられるため、分散KVSのサーバへ送信する際に大きなサイズのデータとして転送することが可能となり、効率的なネットワーク使用が可能となる。
【0084】
すなわち、本発明の第1の実施形態に係る分散型データ処理システムによれば、分散KVS環境の多世代にわたる差分バックアップデータを、分散KVSのサーバ構成に依存せず、一度の処理で任意のサーバ構成の分散KVSにリストアすることが可能となる。
【0085】
また、本発明の第1の実施形態に係る分散型データ処理システムによれば、サーバ単位でKVペアを集約することによって、リストア時のネットワーク転送効率を向上させることが可能となる。
【0086】
ところで、本発明の第1の実施形態に係る分散型データ処理システムによるデータ処理方法は、これまで説明してきた分散型データ処理システムとは異なる構成で実現されたとしても、本発明の範囲に含まれる。また、本発明のデータ処理方法を実行するデータ処理プログラム、そのデータ処理プログラムを記録するプログラム記録媒体も本発明の範囲に含まれる。
【0087】
以下において、本発明の第1の実施形態に係る分散型データ処理システムをより具体化した実施形態について説明する。
【0088】
(第2の実施形態)
図11および
図12は、第2の実施形態に係る分散型データ処理システムの概念図である。また、
図13および
図14は、第2の実施形態における各構成要素の処理を説明するための概念図である。
【0089】
図11および
図12のように、第2の実施形態に係る分散型データ処理システムは、バックアップ手段200と、部分リストア手段400と、第1処理手段500と、第2処理手段600とを備える。なお、
図12は、第2処理手段600が、第2の実施形態に係る分散型データ処理システムによってMapReduce処理されたKVペアを第2データベースサーバ群700に含まれる各サーバ710に振り分ける一例を示す。また、第2データベースサーバ群700は、第2の実施形態に係る分散型データ処理システムに含むように構成してもよいし、含まないように構成してもよい。
【0090】
バックアップ手段200は、時刻T1にバックアップされたKVペアを格納する第1バックアップ部210−1と、時刻T2にバックアップされたKVペアを格納する第2バックアップ部210−2とを含む。なお、第2の実施形態においては、レプリケーション数を3とする。
【0091】
図11のように、第1バックアップ部210−1には、第1サーバ、第3サーバ、第4サーバ、第5サーバ及び第6サーバに関して、Key1及びKey6を含むKVペアが差分バックアップされている。また、第2バックアップ部210−2には、第1サーバ、第3サーバ及び第4サーバに関して、Key1を含むKVペアが差分バックアップされている。
【0092】
バックアップされたKVペアをリストアするタイミングにおいて、部分リストア手段400は、バックアップ手段200が格納する各KVペアに対応して複数の部分サーバ410(410−1〜8)を構成する。第2の実施形態では、第1〜第8部分サーバ410−1〜8が構成され、それぞれの部分サーバ410にKVペアが取得される。各部分サーバ410において、個別にデータがリストア(部分リストア)される。その結果、差分バックアップを行ったときのサーバ構成に依存せず、任意のサーバ構成に対応するようにデータがリストアされる。
【0093】
各部分サーバ410で部分リストアされたKVペアは、第1処理手段500に向けて出力される。
【0094】
図13に示すように、第1処理手段500において、第1マップ処理部510は、KVペアに対して並列でMap処理を実行する。そして、第1マップ処理部510は、複数のKVペアを第1シャッフル処理部530に向けて出力する。
【0095】
第1シャッフル処理部530は、複数のKVペアをキー(KEY)によって並び替え、同一のキー(KEY)を持つ複数のKVペアを集約してKVペア群(第1のキーバリューペア群)とする。そして、第1シャッフル処理部530は、集約したKVペア群(第1のキーバリューペア群)を第1リデュース処理部550に向けて出力する。
【0096】
第1リデュース処理部550は、各KVペア群(第1のキーバリューペア群)の中から最新の更新時間(Time)を持つKVペアを一つ選択する。第1リデュース処理部550は、選択した一つのKVペアをレプリケーション数(第2の実施形態では3)に応じて、3つレプリケーション(複製)する。第1リデュース処理部550は、レプリケーションした全てのKVペアに格納先サーバのノードIDを付与することによって一時的KVペアを作成する。第1リデュース処理部550は、一時的KVペアをノードID毎にまとめて一時的KVペア群(第1の一時的キーバリューペア群)とする。そして、第1リデュース処理部550は、一時的KVペア群(第1の一時的キーバリューペア群)を第2処理手段600に向けて出力する。
【0097】
図14に示すように、第2処理手段600において、第2マップ処理部610は、一時的KVペア群(第1の一時的キーバリューペア群)としてまとめられた複数の一時的KVペアに対して、並列でMap処理を実行する。そして、第2マップ処理部610は、複数の一時的KVペアを第2シャッフル処理部630に向けて出力する。
【0098】
第2シャッフル処理部630は、複数の一時的KVペアを、ノードID(NodeID)をキー(KEY)として並び替え、同一のノードID(NodeID)を持つ一時的KVペアをまとめて一時的KVペア群(第2の一時的キーバリューペア群)とする。そして、第2シャッフル処理部630は、一時的KVペア群(第2の一時的キーバリューペア群)を第2リデュース処理部650に向けて出力する。
【0099】
第2リデュース処理部650は、ノードID毎にまとめられた複数の一時的KVペアからノードID(NodeID)を削除する。そして、第2リデュース処理部650は、ノードID(NodeID)毎にまとめた複数のKVペアを含むKVペア群(第2のキーバリューペア群)を、ノードIDに対応するサーバに向けて出力する。
【0100】
図14のように、第2の実施形態においては、第1’サーバ710−1(ノードID1)にKey1及びKey6を含むKVペアが格納される。また、第3’及び第5’サーバ710−3、5(ノードID3、5)にKey1を含むKVペア、第4’及び第6’サーバ710−4、6(ノードID4、6)にKey6を含むKVペアが格納される。第2データベースサーバ群700に含まれるそれぞれのサーバ710(710−1〜6)には、更新時間(Time)が最新のKVペアが格納されることになる。
【0101】
(第3の実施形態)
第3の実施形態は、バックアップ時にレプリケーションが失敗した場合の一例である。
【0102】
図15のように、第3の実施形態に係る分散型データ処理システムの第1処理手段500は、第1マップ処理部512と、第1シャッフル処理部532と、第1リデュース処理部552とを有する。なお、第3の実施形態の第1処理手段500については、内部構成の符号は第2の実施形態と異なるものの、第2の実施形態と同じ符号を用いている。また、第3の実施形態のその他の構成要素については、第2の実施形態と同様であるため、説明は省略する。
【0103】
図15に示す第3の実施形態では、レプリケーション数が3であるのに、2つのKVペアしか見つからなかった場合の例である。通常、レプリケーション数が3であれば、3つのKVペアが見つかるはずである。ところが、
図15において、Keyが1となるKVペアのうち、更新時間(Time)が4となるKVペアは二つしか存在しない。
【0104】
通常、分散KVSは、耐障害性を確保する目的で、1つのKVペアを異なるサーバにレプリケーションする。そのため、Reduce処理でレプリケーション数が3であれば、同じKVペアが3つ格納されているはずである。しかしながら、第3の実施形態では、何らかの障害等によってレプリケーションできず、同じKVペアは2つしか見つからなかった。
【0105】
第3の実施形態の場合においても、更新時間(Time)が最新であるKVペアを1つ選ぶのみである。そのため、KVペアが想定された数だけ存在しないとしても、第3の実施形態に係る分散型データ処理システムは問題なく動作することがわかる。
【0106】
以上のように、本発明の第3の実施形態に係る分散型データ処理システムにおいては、データの更新情報を利用することによってレプリケーションにおけるリモートデータ間の不整合を修正できる。そのため、バックアップ時のレプリケーションの障害が問題とならない。
【0107】
(第4の実施形態)
図16及び
図17に示すように、第4の実施形態に係る分散型データ処理システムは、バックアップ手段201、部分リストア手段401、第1処理手段501、第2処理手段601、第2データベースサーバ群701を備える。
【0108】
第4の実施形態は、データベースをスケールアウトした場合の例である。
図16の第1データベースサーバ群101の例では、スケールアウト前後で、第1−1データベースサーバ群101−1と、第1−2データベースサーバ群101−2とを区別して図示している。実際には、第1−1データベースサーバ群101−1を構成する第1〜第3サーバ111−1〜3に第4サーバ112−4を追加した構成が、第1−2データベースサーバ群101−2であり、スケールアウトによってサーバ構成が変更されている。
【0109】
第1段階において、KVペアを格納するデータベースサーバ群101は、
図16の第1−1データベースサーバ群101−1のようなサーバ構成を取っている。第1段階では、第1バックアップ部211−1に、第1−1データベースサーバ群101−1のバックアップデータが格納される。
【0110】
次に、第1段階とは異なる第2段階において、KVペアを格納するデータベースサーバ群101は、
図16の第1−2データベースサーバ群101−2のようなサーバ構成にスケールアウトされる。第2段階では、第2バックアップ部211−2に、第1−2データベースサーバ群101−2のバックアップデータが格納される。
【0111】
バックアップデータをリストアするタイミングにおいて、部分リストア手段401は、異なるサーバ構成を取る各データベースサーバ群101のバックアップデータを格納する第1及び第2バックアップ部211−1、2から並列でバックアップデータを取得する。部分リストア手段401は、バックアップ手段201がデータをバックアップする各バックアップタイミングにおける各サーバ111および112の構成に対応させて、第1〜7部分サーバ411−1〜7を構成する。そして、部分リストア手段401は、それぞれの部分サーバ411においてバックアップデータを個別にリストア(部分リストア)する。
【0112】
図17に示すように、部分リストア手段401によって部分リストアされたKVペアは、第1処理手段501及び第2処理手段601によって処理され、第2データベースサーバ群701にリストアされる。第4の実施形態においては、第1’〜第8’サーバ711−1〜8にKVペアが振り分けられる。
【0113】
以上の、本発明の第4の実施形態に係る分散型データ処理システムにおいては、あるキー(KEY)を持つKVペアの格納先が第1リデュース処理で対応付けられるため、バックアップ時のサーバ構成に依存せずにリストアすることが可能となる。
【0114】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0115】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理システムであって、
第1データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップするバックアップ手段と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第1のキーバリューペア群を形成させ、前記第1のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力する出力手段と、を備えることを特徴とするデータ処理システム。
(付記2)
前記バックアップ手段は、
前記第1データベースサーバ群を構成する前記サーバに格納された前記データが更新された際に、更新された前記データを含む前記キーバリューペアを差分バックアップすることを特徴とする付記1に記載のデータ処理システム。
(付記3)
前記バックアップ手段は、
前記第1データベースサーバ群を構成する前記サーバに格納された前記データが更新された際に、更新された前記データを含む前記キーバリューペアを増分バックアップすることを特徴とする付記1又は2に記載のデータ処理システム。
(付記4)
前記出力手段は、
前記世代毎にバックアップされたキーバリューペアを前記バックアップ手段から受信し、受信した前記世代毎にバックアップされたキーバリューペアを世代毎にリストアする部分リストア手段を備え、
前記部分リストア手段は、
前記世代毎にバックアップされたキーバリューペアを、前記第1データベースサーバ群を構成する前記サーバ毎にリストアする部分サーバを少なくとも一つ有することを特徴とする付記1乃至3のいずれか一項に記載のデータ処理システム。
(付記5)
前記出力手段は、
前記複製されたキーバリューペアを前記ノード毎に集約して出力することを特徴とする付記1乃至4のいずれか一項に記載のデータ処理システム。
(付記6)
前記出力手段は、
リストアされた少なくとも一つの前記キーバリューペアを並列で読み出す第1マップ処理部と、
前記第1マップ処理部によって読み出された前記キーバリューペアを前記キーによって集約した第1のキーバリューペア群を形成させる第1シャッフル処理部と、
前記第1シャッフル部によって形成された前記第1のキーバリューペア群を構成する前記キーバリューペアのうち最新の更新情報を持つ前記キーバリューペアを一つ選択し、前記選択されたキーバリューペアをレプリケーション数に応じて複製し、前記複製されたキーバリューペアの全てに前記ノード識別子を付与して一時的キーバリューペアを作製し、同一の前記キーを持つ少なくとも一つの前記一時的キーバリューペアを集約し、集約した少なくとも一つの前記一時的キーバリューペアを第1の一時的キーバリューペア群として出力する第1リデュース処理部と、
前記第1リデュース処理部によって出力された前記第1の一時的キーバリューペア群を構成する少なくとも一つの前記一時的キーバリューペアを並列で読み出す第2マップ処理部と、
前記第2マップ処理部によって読み出された前記一時的キーバリューペアを前記ノード識別子によって集約して第2の一時的キーバリューペア群を形成させる第2シャッフル処理部と、
前記第2シャッフル処理部によって形成された前記第2の一時的キーバリューペア群を構成する前記一時的キーバリューペアから前記ノード識別子を削除し、前記第2の一時的キーバリューペア群を構成していた少なくとも一つの前記キーバリューペアを前記ノード識別子毎に集約して第2のキーバリューペア群とし、第2データベースサーバ群を構成するサーバに対して前記第2のキーバリューペア群を前記ノード識別子に従って出力する第2リデュース処理部と、を有することを特徴とする付記1乃至5のいずれか一項に記載のデータ処理システム。
(付記7)
前記第1データベースサーバ群がサーバ構成を変更した際に、
前記バックアップ手段は、
前記第1データベースサーバ群のサーバ構成の変更に応じて、前記キーバリューペアを前記更新情報に対応させてバックアップする付記1乃至6のいずれか一項に記載のデータ処理システム。
(付記8)
前記出力手段は、特定のアルゴリズムに従って、前記複製されたキーバリューペアに前記ノード識別子を付与することを特徴とする付記1乃至7のいずれか一項に記載のデータ処理システム。
(付記9)
前記出力手段は、
前記更新情報として、前記データに含まれる更新時間を用いることを特徴とする付記1乃至8のいずれか一項に記載のデータ処理システム。
(付記10)
前記バックアップ手段は、
バックアップが実行されたタイミングに関する情報を前記データに付加し、
前記出力手段は、
前記更新情報として、前記バックアップが実行されたタイミングに関する情報を用いることを特徴とする付記1乃至9のいずれか一項に記載のデータ処理システム。
(付記11)
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理方法であって、
第1データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップし、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第1のキーバリューペア群を形成させ、前記第1のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力することを特徴とするデータ処理方法。
(付記12)
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理プログラムを記録するプログラム記録媒体であって、
第1データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップする処理と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第1のキーバリューペア群を形成させ、前記第1のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力する処理とをコンピュータに実行させることを特徴とするデータ処理プログラムを記録するプログラム記録媒体。
【0116】
この出願は、2013年9月11日に出願された日本出願特願2013−188460を基礎とする優先権を主張し、その開示の全てをここに取り込む。