(57)【要約】［課題］分散ＫＶＳ環境の多世代にわたるバックアップデータを、分散ＫＶＳのサーバ構成に依存せず、一度の処理で任意のサーバ構成の分散ＫＶＳにリストアする技術を提供する。［解決手段］第１データベースサーバ群を構成する少なくとも一つのサーバに格納されたキーバリューペアを世代毎にバックアップするバックアップ手段と、世代毎にバックアップされたキーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つのキーバリューペアをキーで集約することによって第１のキーバリューペア群を形成させ、第１のキーバリューペア群から最新の更新情報を持つキーバリューペアを一つ選択し、選択された最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製されたキーバリューペアを所定のノード識別子に従って出力する出力手段と、を備えるデータ処理システムとする。
2015037205.tif 000002
【特許請求の範囲】
【請求項１】
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理システムであって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップするバックアップ手段と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力する出力手段と、を備えることを特徴とするデータ処理システム。
【請求項２】
前記バックアップ手段は、
前記第１データベースサーバ群を構成する前記サーバに格納された前記データが更新された際に、更新された前記データを含む前記キーバリューペアを差分バックアップすることを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記バックアップ手段は、
前記第１データベースサーバ群を構成する前記サーバに格納された前記データが更新された際に、更新された前記データを含む前記キーバリューペアを増分バックアップすることを特徴とする請求項１又は２に記載のデータ処理システム。
【請求項４】
前記出力手段は、
前記世代毎にバックアップされたキーバリューペアを前記バックアップ手段から受信し、受信した前記世代毎にバックアップされたキーバリューペアを世代毎にリストアする部分リストア手段を備え、
前記部分リストア手段は、
前記世代毎にバックアップされたキーバリューペアを、前記第１データベースサーバ群を構成する前記サーバ毎にリストアする部分サーバを少なくとも一つ有することを特徴とする請求項１乃至３のいずれか一項に記載のデータ処理システム。
【請求項５】
前記出力手段は、
前記複製されたキーバリューペアを前記ノード毎に集約して出力することを特徴とする請求項１乃至４のいずれか一項に記載のデータ処理システム。
【請求項６】
前記出力手段は、
リストアされた少なくとも一つの前記キーバリューペアを並列で読み出す第１マップ処理部と、
前記第１マップ処理部によって読み出された前記キーバリューペアを前記キーによって集約した第１のキーバリューペア群を形成させる第１シャッフル処理部と、
前記第１シャッフル部によって形成された前記第１のキーバリューペア群を構成する前記キーバリューペアのうち最新の更新情報を持つ前記キーバリューペアを一つ選択し、前記選択されたキーバリューペアをレプリケーション数に応じて複製し、前記複製されたキーバリューペアの全てに前記ノード識別子を付与して一時的キーバリューペアを作製し、同一の前記キーを持つ少なくとも一つの前記一時的キーバリューペアを集約し、集約した少なくとも一つの前記一時的キーバリューペアを第１の一時的キーバリューペア群として出力する第１リデュース処理部と、
前記第１リデュース処理部によって出力された前記第１の一時的キーバリューペア群を構成する少なくとも一つの前記一時的キーバリューペアを並列で読み出す第２マップ処理部と、
前記第２マップ処理部によって読み出された前記一時的キーバリューペアを前記ノード識別子によって集約して第２の一時的キーバリューペア群を形成させる第２シャッフル処理部と、
前記第２シャッフル処理部によって形成された前記第２の一時的キーバリューペア群を構成する前記一時的キーバリューペアから前記ノード識別子を削除し、前記第２の一時的キーバリューペア群を構成していた少なくとも一つの前記キーバリューペアを前記ノード識別子毎に集約して第２のキーバリューペア群とし、第２データベースサーバ群を構成するサーバに対して前記第２のキーバリューペア群を前記ノード識別子に従って出力する第２リデュース処理部と、を有することを特徴とする請求項１乃至５のいずれか一項に記載のデータ処理システム。
【請求項７】
前記第１データベースサーバ群がサーバ構成を変更した際に、
前記バックアップ手段は、
前記第１データベースサーバ群のサーバ構成の変更に応じて、前記キーバリューペアを前記更新情報に対応させてバックアップする請求項１乃至６のいずれか一項に記載のデータ処理システム。
【請求項８】
前記出力手段は、特定のアルゴリズムに従って、前記複製されたキーバリューペアに前記ノード識別子を付与することを特徴とする請求項１乃至７のいずれか一項に記載のデータ処理システム。
【請求項９】
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理方法であって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップし、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力することを特徴とするデータ処理方法。
【請求項１０】
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理プログラムを記録するプログラム記録媒体であって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップする処理と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力する処理とをコンピュータに実行させることを特徴とするデータ処理プログラムを記録するプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム、データ処理方法およびプログラム記録媒体に関する。特に、分散キーバリュ−ストアに用いるデータ処理システム、データ処理方法およびデータ処理プログラムを記録するプログラム記録媒体に関する。
【背景技術】
【０００２】
膨大な量のデータを高速処理する手法として、分散キーバリュ−ストア（以下、分散ＫＶＳ）という方式が用いられている（ＫＶＳ：ＫＥＹ−ＶＡＬＵＥ  Ｓｔｏｒｅ）。分散ＫＶＳでは、保存したい任意のデータ（値：ＶＡＬＵＥ）に対して一意の標識となるキー（ＫＥＹ）を設定し、ＫＥＹとＶＡＬＵＥとのペア（ＫＶペア）でデータを保存する（ＫＶ：ＫＥＹ−ＶＡＬＵＥ）。分散ＫＶＳでは、ＫＥＹを指定して対応するＶＡＬＵＥを取得することによって、データを取得することができる。【０００３】
ところで、データのバックアップとしては、フルバックアップや増分バックアップ、差分バックアップなどの方法を挙げることができる。フルバックアップと比較すると、増分バックアップや差分バックアップにおいては、バックアップ容量が小さく、処理時間も短いという利点がある。バックアップされるデータは、世代毎にデータベースなどの記憶手段に格納される。そのため、膨大な量のデータのバックアップを行う際には、フルバックアップよりも、バックアップ容量が小さくて済む増分バックアップや差分バックアップの方が適している。【０００４】
特許文献１には、データの位置やタイプに関わらずに複数のデータに対して容易にアクセスできるデータ管理サーバを設け、異種ストレージ環境においてデータをリストアする技法について開示されている。【０００５】
また、分散ＫＶＳでは、システムとしての耐障害性を確保するために、複数のサーバに同じデータを書き込むレプリケーションという機能が装備される。レプリケーションを行う方法としては、サーバ側でレプリケーション先サーバを決めて実行するサーバルーティング方式と、クライアント側でレプリケーション先サーバを決めて実行するクライアントルーティング方式がある。【０００６】
図１８には、一般的なクライアントルーティング方式を説明するための図を示した。図１８のクライアントルーティング方式において、クライアント９０（９０−１〜４）は、取得したキーバリューデータ（ＫＶペア）をレプリケーションし、レプリケーションされたＫＶペアをルーティング処理によってサーバ９１（９１−１〜６）に送信する。いずれのクライアント９０（９０−１〜４）がＫＶペアを挿入しても、全てのＫＶペアの送信先となるサーバ９１（９１−１〜６）はキーによって決定される。【０００７】
特許文献２には、分散型データベースシステムを構成するデータベースノードにストアされているデータを処理する方法が開示されている。特許文献２においては、分散されたデータベースノードに振り分けられたキー情報と値のペア（ＫＶペア）を処理する際に、クライアントノードは、それぞれのデータベースノードにプログラム情報を送信する。そして、それぞれのデータベースノード内でデータの処理が実行されると、クライアントノードは、それぞれのデータベースノード内における処理の結果のみを取得する。そのため、一回の通信でやり取りするデータ量を小さくすることができる。【０００８】
また、特許文献２では、データ処理を効率化するために、一つの処理に必要なデータを特定のデータベースノードに存在する可能性を高める。そのため、特許文献２によれば、分散された大量のデータに対して処理を実行する際に、通信回数を減らすことができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特表２００５−５０３６１６号公報
【特許文献２】特開２０１２−１０８８８９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
一般に、データのリストアでは、バックアップを行ったサーバ構成を対象としており、異なるサーバ構成に対するリストアが考慮されていない。各サーバで採取したバックアップは、採取時と同じ構成のシステムにリストアする必要がある。そのため、異なるサーバ構成に対するリストアが必要となる分散ＫＶＳなどのスケールアウト型システムのバックアップとして、差分バックアップや増分バックアップを適用することは必ずしも有用とはいえない。【００１１】
特許文献１の技法によれば、リストア前後におけるサーバ構成によらずにバックアップデータをリストアすることが可能となる。しかしながら、特許文献１の技法によると、データ管理サーバを通じて異なる複数のデータを処理するため、一度の処理で大量のデータを扱う際に処理時間が増大するという課題がある。【００１２】
特許文献２の方法によれば、データ処理における通信回数を減らすことはできる。しかしながら、複数のデータベースノードに分散されたデータの処理は、各データベースノードのデータ量や性能に依存することになる。そのため、データベースノードによって処理時間が異なってしまい、一回の処理が完了するまでの時間は必ずしも短縮されない。また、特定のデータベースノードにデータが偏ることにつながるため、サーバ構成を再構築しにくいという問題点もある。【００１３】
本発明の目的は、分散ＫＶＳ環境の多世代にわたるバックアップデータを、分散ＫＶＳのサーバ構成に依存せず、一度の処理で任意のサーバ構成の分散ＫＶＳにリストアするデータ処理システムを提供することである。
【課題を解決するための手段】
【００１４】
本発明のデータ処理システムは、分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理システムであって、第１データベースサーバ群を構成する少なくとも一つのサーバに格納されたデータの値と、データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップするバックアップ手段と、世代毎にバックアップされたキーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つのキーバリューペアをキーで集約することによって第１のキーバリューペア群を形成させ、第１のキーバリューペア群から最新の更新情報を持つキーバリューペアを一つ選択し、選択された最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製されたキーバリューペアを所定のノード識別子に従って出力する出力手段と、を備える。【００１５】
本発明のデータ処理方法は、分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理方法であって、第１データベースサーバ群を構成する少なくとも一つのサーバに格納されたデータの値と、データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップし、世代毎にバックアップされたキーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つのキーバリューペアをキーで集約することによって第１のキーバリューペア群を形成させ、第１のキーバリューペア群から最新の更新情報を持つキーバリューペアを一つ選択し、選択された最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製されたキーバリューペアを所定のノード識別子に従って出力する。【００１６】
本発明のプログラム記録媒体は、分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理プログラムを記録するプログラム記録媒体であって、第１データベースサーバ群を構成する少なくとも一つのサーバに格納されたデータの値と、データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップする処理と、世代毎にバックアップされたキーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つのキーバリューペアをキーで集約することによって第１のキーバリューペア群を形成させ、第１のキーバリューペア群から最新の更新情報を持つキーバリューペアを一つ選択し、選択された最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製されたキーバリューペアを所定のノード識別子に従って出力する処理とをコンピュータに実行させるデータ処理プログラムを記録する。
【発明の効果】
【００１７】
本発明によれば、分散ＫＶＳ環境の多世代にわたるバックアップデータを、分散ＫＶＳのサーバ構成に依存せず、一度の処理で任意のサーバ構成の分散ＫＶＳにリストアすることが可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態に係る分散型データ処理システムの構成を示す機能ブロック図である。
【図２】本発明の第１の実施形態に係る分散型データ処理システムを構成するハードウェアの内部構成を示す概念図である。
【図３】本発明の第１の実施形態に係る分散型データ処理システムの構成の一部を示す機能ブロック図である。
【図４】本発明の第１の実施形態に係る分散型データ処理システムにおいて処理されるＫＶペアの構成の一例を示す概念図である。
【図５】本発明の第１の実施形態に係る分散型データ処理システムにおいて処理されるＫＶペアの構成の一例を示す概念図である。
【図６】本発明の第１の実施形態に係る分散型データ処理システムの構成の一部を示す機能ブロック図である。
【図７】本発明の第１の実施形態に係る分散型データ処理システムの第１処理手段の構成を示す機能ブロック図である。
【図８】本発明の第１の実施形態に係る分散型データ処理システムの第２処理手段の構成を示す機能ブロック図である。
【図９】本発明の第１の実施形態に係る分散型データ処理システムにおいて作成される一時的ＫＶペアの構成を示す概念図である。
【図１０】本発明の第１の実施形態に係る部分リストア装置の処理の流れを示すフローチャートである。
【図１１】本発明の第２の実施形態に係る分散型データ処理システムを説明するための概念図である。
【図１２】本発明の第２の実施形態に係る分散型データ処理システムを説明するための概念図である。
【図１３】本発明の第２の実施形態に係る分散型データ処理システムの第１処理手段の処理を説明するための概念図である。
【図１４】本発明の第２の実施形態に係る分散型データ処理システムの第２処理手段の処理を説明するための概念図である。
【図１５】本発明の第３の実施形態に係る分散型データ処理システムの第１処理手段の処理を説明するための概念図である。
【図１６】本発明の第４の実施形態に係る分散型データ処理システムを説明するための概念図である。
【図１７】本発明の第４の実施形態に係る分散型データ処理システムを説明するための概念図である。
【図１８】一般的なクライアントルーティング方式を説明するための概念図である。
【発明を実施するための形態】
【００１９】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００２０】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る分散型データ処理システム１の機能構成を示すブロック図である。本実施形態に係る分散型データ処理システム１は、分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理システムである。
【００２１】
本発明の第１の実施形態に係る分散型データ処理システム１は、第１データベースサーバ群１０と、バックアップ手段２０と、データリストア装置３０と、第２データベースサーバ群７０とを備えている。
【００２２】
また、本発明の第１の実施形態に係るデータリストア装置３０は、部分リストア手段４０と、第１処理手段５０と、第２処理手段６０と、を有している。データリストア装置３０は、第１データベースサーバ群１０を構成する複数のサーバのバックアップデータをサーバ毎にリストアし、２段構成のマップリデュース処理（以下、ＭａｐＲｅｄｕｃｅ処理）を実行して出力する出力手段である。なお、本発明の第１の実施形態においては、差分バックアップ又は増分バックアップによってバックアップデータを取得することを想定する。ただし、バックアップ方法は、差分バックアップ又は増分バックアップに限らず、フルバックアップ以外のバックアップ方法でありさえすればよい。
【００２３】
本発明の第１の実施形態に係る分散型データ処理システム１は、例えばコンピュータやサーバマシンといった情報処理装置や、メモリやストレージなどの記憶装置を組み合わせて構成される。
【００２４】
図２は、本発明の第１の実施形態に係る分散型データ処理システム１に用いられる情報処理装置のハードウェア構成の一例を示す概念図である。例えば、情報処理装置は、図２のように、中央演算処理装置５（図２ではＣＰＵと記載）を有する（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）構成とすることができる。また、情報処理装置は、図２のように、ＲＯＭ６やＲＡＭ７を有する構成とすることができる（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）。さらに、情報処理装置は、図２のように、記憶装置８（図２ではＨＤＤと記載）や入出力装置９（図２ではＩ／Ｏと記載）を有する構成とすることができる（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ、Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）。すなわち、本実施形態に係る分散型データ処理システム１に用いられる情報処理装置は、上述の中央演算処理装置５、ＲＯＭ６、ＲＡＭ７、記憶装置８、入出力装置９がデータバスによって接続された構成とすることによって実現される。なお、本発明の第１の実施形態に係る分散型データ処理システム１に用いられる情報処理装置は、図２の構成に限定されず、図２の構成に種々の装置・機能を追加・削除した構成とすることができる。
【００２５】
続いて、本発明の第１の実施形態に係るデータ処理システム１の構成要素について詳細に説明する。
【００２６】
（第１データベースサーバ群）
図３に示した第１データベースサーバ群１０は、第１サーバ１１−１、第２サーバ１１−２、・・・、第ｍサーバ１１−ｍを含む複数のサーバから構成される（ｍは２以上の整数）。なお、図３には、一例として４つのサーバを示しているが、サーバ１１の数は４つに限定されない。第１データベースサーバ群１０を構成するサーバ１１の数は、少なくとも二つ以上であればよい。
【００２７】
本実施形態に係るデータベースサーバ群１０はスケールアウトが可能であり、第１データベースサーバ群１０を構成する複数のサーバ１１（１１−１〜ｍ）に任意で別のサーバを追加することができる。すなわち、本実施形態に係るデータベースサーバ群１０は、データのバックアップタイミング毎に異なる構成となっていてもよい。
【００２８】
分散型データ処理システム１は分散ＫＶＳ環境を形成する。分散ＫＶＳ環境においては、データを格納するサーバ１１は複数存在し、そのデータバックアップは各サーバ１１単位で行われる（ＫＶＳ：ＫＥＹ−ＶＡＬＵＥ  Ｓｔｏｒｅ）。
【００２９】
分散型データ処理システム１においては、格納する値（ＶＡＬＵＥ）にキー（ＫＥＹ）と呼ばれる数値を割り当てたＫＶペアの形態でデータを格納する。分散型データ処理システム１に格納されるデータには、ＫＶペアが更新された更新順序に関する情報（更新情報）が含まれる。更新情報としては、更新時間（更新時刻とも呼ぶ）やベクタークロック（Ｖｅｃｔｏｒ  Ｃｌｏｃｋ）などのＫＶペアを更新した順序が明確になる情報を用いる。本実施形態においては、更新情報として、更新時間（Ｔｉｍｅ）を用いた場合について説明する。なお、更新情報として、バックアップを実行したタイミング（時刻・順序）に関する情報を用いてもよい。バックアップを実行したタイミングは、例えば、ＫＶペアの更新時間（Ｔｉｍｅ）の替わりとしてデータに含めてもよいし、更新時間とは別にデータに含めてもよい。
【００３０】
図４に示すように、本発明の第１の実施形態に係るデータ処理システム１で扱われるＫＶペアは、キー情報（Ｋｅｙ）を含むキー（ＫＥＹ）と、更新情報（Ｔｉｍｅ）と値（Ｖａｌｕｅ）とを含むバリュー（ＶＡＬＵＥ）の組合せである。なお、本発明の第１の実施形態に係るデータ処理システム１で扱われるＫＶペアは、キー情報以外の情報をキーとしてもよく、また、更新情報とデータ以外の情報をバリューとして含んでいてもよい。バックアップタイミングをデータに含める場合、例えば図４の更新時間（Ｔｉｍｅ）をバックアップタイミング（Ｔｎ）で置換してもよいし、図５のようにＴｉｍｅとは別にバックアップタイミング（Ｔｎ）をデータに付加してもよい。
【００３１】
第１データベースサーバ群１０に含まれる各サーバ１１は、互いに異なるサーバマシンやストレージなどの情報処理装置として構成される。ただし、単一の装置内部に複数のサーバを構成させることができるのであれば、同一の装置内に異なる複数のサーバを構成させることができる。
【００３２】
また、図３などでは、第１データベースサーバ群１０と、バックアップ手段２０とを別の構成として示しているが、第１データベース群１０がバックアップ手段２０を含む構成であってもよい。
【００３３】
本実施形態に係るデータ処理システム１は、所定のタイミングにおいて、バックアップ手段２０にデータをバックアップする。データをバックアップする際、バックアップ手段２０は、各サーバ１１のバックアップタイミング毎に、各サーバ１１のバックアップデータを格納する。
【００３４】
例えば、本実施形態に係るデータ処理システム１においては、所定のタイミングにおいて更新されたデータを、差分バックアップや増分バックアップによってバックアップする。ただし、初めのデータバックアップ時においては、フルバックアップによってデータをバックアップしておく。
【００３５】
なお、第１データベースサーバ群１０と第２データベースサーバ群７０とは、別のサーバ群として同時存在している必要はなく、第１データベースサーバ群１０を構成するサーバ１１が、第２データベースサーバ群７０を構成するサーバとなってもよい。
【００３６】
（バックアップ手段）
図３のように、本発明の第１の実施形態に係るバックアップ手段２０は、第１バックアップ部２１−１、第２バックアップ部２１−２、・・・、第ｎバックアップ部２１−ｎを含む複数のバックアップ部２１を有する（ｎは２以上の整数）。各バックアップ部２１は、バックアップタイミングがＴ１〜Ｔｎであるバックアップデータを、世代毎に格納する。図３においては、世代毎に、第１データベースサーバ群１０に含まれる第１〜ｎサーバ１１−１〜ｎのデータをバックアップデータとして各バックアップ部２１に格納するように図示している。なお、本発明の第１の実施形態に係る分散型データ処理システム１においては、各世代において、第１データベースサーバ群１０を構成する複数のサーバ１１のサーバ構成が互いに異なっていてもよい。バックアップ部２１にバックアップされるデータは、異なるサーバ１１毎に分別できるように格納される。
【００３７】
バックアップ手段２０にバックアップされたデータをリストアする際、バックアップ手段２０は、部分リストア手段４０にバックアップデータを送信する。
【００３８】
（部分リストア手段）
部分リストア手段４０は、各バックアップ部２１に格納されたバックアップタイミングが異なる何世代かのバックアップデータをサーバ１１毎に個別にリストアする。このようなリストアを部分リストアと呼ぶ。
【００３９】
部分リストア手段４０は、例えばサーバ１１毎のバックアップデータを世代毎に個別にリストアする部分サーバの組合せによって構成することができる。部分サーバは、各世代における各サーバのバックアップデータを部分リストア（ロード）して保持するサーバである。一般に、バックアップデータの形式は分散ＫＶＳ毎に固有であるため、後続の分散処理フレームワークで直接読み出すことが難しいことが想定される。部分サーバは、分散処理部分がバックアップデータの形式に依存しないように、世代毎にバックアップされたデータのＫＶペアを取得する目的で配置される。
【００４０】
図６は、第１バックアップ部２１−１と、第２バックアップ部２１−２とに格納された複数のバックアップデータを部分リストア手段４０で部分リストアする例を示す。なお、図６のバックアップ手段２０には、２つの世代（Ｔ１とＴ２）の例を挙げているが、実際には何世代にもわたるバックアップデータが格納されている。また、図６の各バックアップ部２１にはサーバ４つ分のバックアップデータしか図示していないが、各バックアップ部２１には、世代毎にバックアップが実行されたサーバ１１の数だけバックアップデータが含まれる。
【００４１】
図６において、時刻Ｔ１にバックアップされたバックアップデータを格納する第１バックアップ部２１−１には、時刻Ｔ１にバックアップされた第１〜ｍサーバ１１−１〜ｍのバックアップデータが含まれる。時刻Ｔ１にバックアップされた第１〜ｍサーバ１１−１〜ｍのバックアップデータは、それぞれ第１〜４部分サーバ４１−１〜４において部分リストアされる。
【００４２】
また、図６において、時刻Ｔ２にバックアップされたバックアップデータを格納する第２バックアップ部２１−２には、時刻Ｔ２にバックアップされた第１〜ｍサーバ１１−１〜ｍのバックアップデータが含まれる。時刻Ｔ２にバックアップされた第１〜ｍサーバ１１−１〜ｍのバックアップデータは、それぞれ第５〜８部分サーバ４１−５〜８において部分リストアされる。
【００４３】
なお、図６には、ｍ個のサーバ１１のバックアップデータを４つの部分サーバ４１に部分リストアする例を図示しているが、実際には、ｍ個の各サーバ１１に対応するようにｍ個の部分サーバ４１を配置することが好ましい。また、ｍ個のサーバ１１のバックアップデータを、任意の数の部分サーバ４１に振り分けるように構成することも可能である。
【００４４】
部分サーバ４１は、第１データベースサーバ群１０に含まれる各サーバ１１の内部構成としてもよいし、各サーバ１１とは異なる情報処理装置に含まれる構成としてもよい。また、部分サーバ４１は、情報処理装置内部のプログラムとして構成してもよい。
【００４５】
部分リストア手段４０においては、異なる部分サーバ４１毎にバックアップデータをリストアするため、異なるデータ構造で格納されたバックアップデータを並列してリストアすることが可能となる。
【００４６】
部分リストア手段４０によってリストアされたデータは、後段の第１処理手段５０、第２処理手段６０に送信され、２段構成のＭａｐＲｅｄｕｃｅ処理が施される。第１処理手段５０による１段目のＭａｐＲｅｄｕｃｅ処理は、あるキー（ＫＥＹ）において更新時間（Ｔｉｍｅ）が最新であるＫＶペアを選択するための処理である。第２処理手段６０による２段目のＭａｐＲｅｄｕｃｅ処理は、リストアすべき第２データベースサーバ群７０のサーバ構成に応じて、レプリケーションを考慮して第２データベースサーバ群７０を構成するサーバ単位でＫＶペアを集約するための処理である。
【００４７】
（第１処理手段）
２段構成のＭａｐＲｅｄｕｃｅ処理の１段目を実行する第１処理手段５０について、図７を用いて説明する。
【００４８】
第１処理手段５０は、第１Ｍａｐ処理部５１（以下、第１マップ処理部５１）と、第１Ｓｈｕｆｆｌｅ処理部５３（以下、第１シャッフル処理部５３）と、第１Ｒｅｄｕｃｅ処理部５５（以下、第１リデュース処理部５５）と、を有する。第１処理手段５０は、ＭａｐＲｅｄｕｃｅをフレームワークとする並列分散処理を実行する。第１処理手段５０は、部分リストア手段４０から取得したバックアップデータをキー（ＫＥＹ）でソートし、キー毎に集約したＫＶペア群として出力する。
【００４９】
第１マップ処理部５１は、各部分サーバ４１から取得したＫＶペアを並列に読み出すマップ処理（Ｍａｐ処理）を実行する。第１マップ処理部５１は、読み出した複数のＫＶペアを第１シャッフル処理部５３に出力する。
【００５０】
第１シャッフル処理部５３は、第１マップ処理部５１から取得した複数のＫＶペアを、ＫＶペアのキー（ＫＥＹ）であるキー情報（Ｋｅｙ）でソートし、ＫＶペアをキー毎にまとめてＫＶペア群（第１のキーバリューペア群とも呼ぶ）とする。第１シャッフル処理部５３は、キー毎にまとめたＫＶペア群（第１のキーバリューペア群）を第１リデュース処理部５５に出力する。
【００５１】
第１リデュース処理部５５は、第１シャッフル処理部５３から取得したキー毎にまとめられたＫＶペア群（第１のキーバリューペア群）を構成するＫＶペアの中から、更新時間（Ｔｉｍｅ）が最新であるＫＶペアを一つ選択する。通常、データは複数のサーバに分別されてバックアップされており、同じキー及び値を持つデータが複数存在することになる。そのため、第１リデュース部は、更新時間が最新である複数のＫＶペアのうち一つを任意に選択する。
【００５２】
そして、第１リデュース処理部５５は、各ＫＶペア群（第１のキーバリューペア群）において選択された最新の更新時間（Ｔｉｍｅ）を持つＫＶペアを、レプリケーション数に従ってレプリケーション（複製）する。例えば、レプリケーション数が３であれば、同じキー（ＫＥＹ）とバリュー（ＶＡＬＵＥ）を持つ３つのＫＶペアを複製する。
【００５３】
さらに、第１リデュース処理部５５は、レプリケーションしたＫＶペアのリストア先となるサーバの装置ＩＤ（ノードＩＤやノード識別子ともよぶ）を、レプリケーションした全てのＫＶペアに付与して一時的ＫＶペアを作成する。ＫＶペアの格納先となるサーバのノードＩＤ（ＮｏｄｅＩＤ）が決定すると、図９で示される一時的ＫＶペアを新規に作成する。通常、分散ＫＶＳはレプリケーションを行うため、最新ＫＶペア１つに対して、格納先が異なるレプリケーション数分のＫＶペアが作成されることになる。なお、レプリケーションとノードＩＤの付与については、ノードＩＤを付与してからレプリケーションを実行する順番としてもよい。
【００５４】
ところで、ＫＶペア毎に格納（リストア）すべきサーバは、第２データベースサーバ群７０のサーバ構成に応じて、適宜決まるものとする。リストアすべきサーバには、装置ＩＤなどの一連の番号が割り振られているものとする。例えば、分散ＫＶＳに固有のＫＶペアの格納先サーバ決定アルゴリズムにより、そのＫＶペアの格納先サーバが決定されればよい。なお、ＫＶペアと格納先サーバの対応関係は、第１処理手段５０の第１リデュース処理部５５で理解できるものとする。例えば、第１リデュース処理部５５に、どのサーバにＫＶペアを振り分けるのかを決定するアルゴリズム又は対応表をリデュース処理として実装すればよい。
【００５５】
第１リデュース処理部５５は、ノードＩＤが同一となる一時的ＫＶペアを一時的ＫＶペア群（第１の一時的キーバリューペア群）として集約し、第２処理手段６０に出力する。
【００５６】
（第２処理手段）
続いて、２段構成のＭａｐＲｅｄｕｃｅ処理の２段目を実行する第２処理手段６０について、図８を用いて説明する。
【００５７】
第２処理手段６０は、第２Ｍａｐ処理部６１（以下、第２マップ処理部６１）と、第２Ｓｈｕｆｆｌｅ処理部６３（以下、第２シャッフル処理部６３）と、第２Ｒｅｄｕｃｅ処理部６５（以下、第２リデュース処理部６５）と、を有する。第２処理手段６０は、ＭａｐＲｅｄｕｃｅをフレームワークとする並列分散処理を実行する。
【００５８】
まず、第２処理手段６０は、第１処理手段５０によってキー毎に集約された一時的ＫＶペア群を取得する。そして、第２処理手段６０は、一時的ＫＶペア群を構成する一時的ＫＶペアを、特定の条件・規則に従って第２データベースサーバ群７０を構成するサーバ毎のＫＶペア群として再構成し、再構築したＫＶペア群を出力する。
【００５９】
第２マップ処理部６１は、第１処理手段５０の第１リデュース処理部５５から取得した複数の一時的ＫＶペアを並列に読み出すマップ処理（Ｍａｐ処理）を実行する。第２マップ処理部６１は、読み出した複数の一時的ＫＶペアを第２シャッフル処理部６３に出力する。
【００６０】
第２シャッフル処理部６３は、第２マップ処理部６１から取得した複数の一時的ＫＶペアを、一時的ＫＶペアのキー（ＫＥＹ）となるノードＩＤ（ＮｏｄｅＩＤ）でソートする。そして、第２シャッフル処理部６３は、一時的ＫＶペアをノードＩＤ毎にまとめた一時的ＫＶペア群（第２の一時的キーバリューペア群）とする。第２シャッフル処理部６３は、ノードＩＤ毎にまとめた一時的ＫＶペア群（第２の一時的キーバリューペア群）を第２リデュース処理部６５に出力する。
【００６１】
なお、ノードＩＤ（ＮｏｄｅＩＤ）は、ＫＶペアの格納先サーバ番号を意味するため、第２リデュース処理部６５には、格納先が同じＫＶペアが集約されることになる。
【００６２】
第２リデュース処理部６５は、第２シャッフル処理部６３から取得したノードＩＤ毎にまとめられた一時的ＫＶペア群（第２の一時的キーバリューペア群）において、一時的ＫＶペアに付与されていたノードＩＤを削除し、通常のＫＶペアに変換する。
【００６３】
そして、第２リデュース処理部６５は、通常のデータ構造を持つＫＶペアを、ノードＩＤ毎にまとめられたＫＶペア群（第２のキーバリューペア群）として集約し、ＫＶペア群（第２のキーバリューペア群）をノードＩＤによって指定されたサーバに向けて出力する。
【００６４】
第２リデュース処理部６５は、同じノードＩＤをキー（ＫＥＹ）とする一時的ＫＶペアを集め、一時的ＫＶペアのバリュー（ＶＡＬＵＥ）から本来格納すべきＫＶペアを取り出す。そして、第２リデュース処理部６５は、取り出したＫＶペアのまとまりをＫＶペア群（第２のキーバリューペア群）という塊として格納先サーバに送信する。その結果、単一のＫＶペアよりも大きなサイズのＫＶペア群（第２のキーバリューペア群）を転送することによって、ネットワークの使用効率を向上することができる。
【００６５】
（第２データベースサーバ群）
第２データベースサーバ群７０は、第２処理手段６０の第２リデュース処理部６５から取得したＫＶペアを格納する。第２データベースサーバ群７０は、第１データベースサーバ群１０と同様に、分散ＫＶＳ型のサーバ構成を取る。本発明の第１の実施形態に係る第２データベースサーバ群７０は、第１データベースサーバ群１０とは異なるサーバ構成とすることが可能である。また、第２データベースサーバ群７０は、第１データベースサーバ群１０と同じサーバ構成であっても構わない。
【００６６】
以上が、本発明の第１の実施形態に係る分散型データ処理システムの構成に関する説明である。なお、本発明の第１の実施形態に係る分散型データ処理システムの構成は、上述の構成に限定されず、必要に応じて種々の追加・削除等の変更を施してもよい。
【００６７】
（動作）
次に、本発明の第１の実施形態に係る分散型データ処理システム１の動作について説明する。特に、本発明の特徴部分となるデータリストア装置３０における部分リストア処理、２段のＭａｐＲｅｄｕｃｅ処理について、図１０のフローチャートを用いて順序立てて説明する。
【００６８】
（部分リストア処理）
まず、図１０の部分リストア処理において、部分リストア手段４０に含まれる複数の部分サーバ４１は、バックアップ手段２０がデータをバックアップするバックアップタイミング毎に各サーバのバックアップデータを取得する。そして、各部分サーバ４１は、取得したバックアップデータをリストアする（ステップＳ１０）。
【００６９】
なお、部分リストア処理において、各部分サーバ４１は、差分バックアップデータ（増分バックアップデータ）のＫＶデータのみを保持する。また、部分リストア処理においては、差分バックアップ（増分バックアップ）の世代を問わず、バックアップ手段２０に格納された全てのバックアップデータが各部分サーバ４１に個別にリストア（部分リストア）される。
【００７０】
（第１処理手段におけるＭａｐＲｅｄｕｃｅ処理）
続いて、第１処理手段５０において、分散処理フレームワークであるＭａｐＲｅｄｕｃｅ処理が、以下のステップＳ２０〜Ｓ４０を通じて実行される。
【００７１】
図１０の第１マップ処理において、第１処理手段５０の第１マップ処理部５１は、部分リストア手段４０に含まれる複数の部分サーバ４１によってリストアされた複数のＫＶペアを並列に読み出すＭａｐ処理が実行される（ステップＳ２０）。
【００７２】
なお、第１マップ処理においては、各部分サーバ４１が保持するデータの世代を考慮する必要はない。
【００７３】
第１シャッフル処理において、第１処理手段５０の第１シャッフル処理部５３は、第１マップ処理部５１によってＭａｐ処理された複数のＫＶペアのうち同じキー（ＫＥＹ）を持つものをＫＶペア群（第１のキーバリューペア群）としてまとめる（ステップＳ３０）。
【００７４】
第１リデュース処理において、第１に、第１処理手段５０の第１リデュース処理部５５は、キー毎にまとめられたＫＶペア群（第１のキーバリューペア群）の中で更新時間（Ｔｉｍｅ）が最新であるＫＶペアを、ＫＶペア群毎に選択する。第２に、第１リデュース処理部５５は、選択したＫＶペアを所定のレプリケーション数に従ってレプリケーション（複製）する。第３に、第１リデュース処理部５５は、レプリケーションされたＫＶペアに対して、新たにＫＶペアを格納するサーバのノードＩＤを付与し、一時的ＫＶペアを作成する。以上の第１〜３の手順を含む第１リデュース処理によって、部分リストアされたバックアップデータから、キー（ＫＥＹ）毎に更新時間が最新であるＫＶペアが選択され、ＫＶペアのレプリケーションとノードＩＤの付与が実行される（ステップＳ４０）。なお、第１リデュース処理における第２と第３の手順は、順序を入れ替えて実行してもよい。同一のキー（ＫＥＹ）を持つ一時的ＫＶペアは、一時的ＫＶペア群（第１の一時的ＫＶペア群）として集約され、第２処理手段６０に対して出力される。
【００７５】
（第２処理手段におけるＭａｐＲｅｄｕｃｅ処理）
続いて、第２処理手段６０において、分散処理フレームワークであるＭａｐＲｅｄｕｃｅ処理が、以下のステップＳ５０〜Ｓ７０を通じて実行される。
【００７６】
図１０の第２マップ処理において、第２処理手段６０の第２マップ処理部６１は、各キー（ＫＥＹ）の一時的ＫＶペアを、キー（ＫＥＹ）毎の一時的ＫＶペア群（第１のキーバリューペア）として並列に読み出すＭａｐ処理を実行する（ステップＳ５０）。
【００７７】
第２シャッフル処理において、第２シャッフル処理部６３は、第２マップ処理部６１によってＭａｐ処理された複数のＫＶペアを、同じノードＩＤ（ＮｏｄｅＩＤ）を持つ一時的ＫＶペア毎に集約する。そして、第２シャッフル処理部６３は、同じノードＩＤ（ＮｏｄｅＩＤ）を持つ一時的ＫＶペア毎に集約された複数のＫＶペアによって、一時的ＫＶペア群（第２の一時的キーバリューペア群）を形成させる（ステップＳ６０）。
【００７８】
第２リデュース処理において、第２リデュース処理部６５は、ノードＩＤ（ＮｏｄｅＩＤ）毎にまとめられた一時的ＫＶペアのノードＩＤ（ＮｏｄｅＩＤ）を削除し、通常の構造を持つＫＶペアに変換する（ステップＳ７０）。通常の構造を持つＫＶペアは、同じノードＩＤ毎に集約されたＫＶペア群（第２のキーバリューペア）として、指定されたサーバに振り分けられる。
【００７９】
以上が、本実施形態に係るデータリストア装置の動作についての詳細な説明である。なお、第１の実施形態に係るデータリストア装置の動作は、上述の処理手順に限定されず、必要に応じて種々の追加・削除等の変更を施してもよい。
【００８０】
一般に、分散ＫＶＳは、ＫＶペア更新時の排他制御を可能にするためにＫＶペアの更新時間情報を持つ。本発明の第１の実施形態に係る分散型データ処理システムにおいては、更新時間が最新であるＫＶペアを選択するために、ＫＶペアの更新時間情報を利用する。その結果、多世代にわたる差分・増分バックアップのデータを並列に読み込んで処理することができ、短時間でデータリストアすることが可能となる。
【００８１】
また、本発明の第１の実施形態に係る分散型データ処理システムにおいては、データのリストア時に直接分散ＫＶＳの各サーバにリストアするのではなく、部分サーバに一度データをリストアし、部分サーバからデータを直接読み出す。その結果、データのバックアップ時のサーバ構成に依存しないデータリストアが可能となる。
【００８２】
さらに、本発明の第１の実施形態に係る分散型データ処理システムのＭａｐＲｅｄｕｃｅ処理においては、本来のＫＶペアに格納先サーバ番号を意味するノードＩＤを付与した一次的ＫＶペアを内部的に作成する。その結果、データをリストアする分散ＫＶＳのサーバ単位でＫＶペアを集約することができる。
【００８３】
Ｒｅｄｕｃｅ処理において、格納先が同一であるＫＶペアがまとめられるため、分散ＫＶＳのサーバへ送信する際に大きなサイズのデータとして転送することが可能となり、効率的なネットワーク使用が可能となる。
【００８４】
すなわち、本発明の第１の実施形態に係る分散型データ処理システムによれば、分散ＫＶＳ環境の多世代にわたる差分バックアップデータを、分散ＫＶＳのサーバ構成に依存せず、一度の処理で任意のサーバ構成の分散ＫＶＳにリストアすることが可能となる。
【００８５】
また、本発明の第１の実施形態に係る分散型データ処理システムによれば、サーバ単位でＫＶペアを集約することによって、リストア時のネットワーク転送効率を向上させることが可能となる。
【００８６】
ところで、本発明の第１の実施形態に係る分散型データ処理システムによるデータ処理方法は、これまで説明してきた分散型データ処理システムとは異なる構成で実現されたとしても、本発明の範囲に含まれる。また、本発明のデータ処理方法を実行するデータ処理プログラム、そのデータ処理プログラムを記録するプログラム記録媒体も本発明の範囲に含まれる。
【００８７】
以下において、本発明の第１の実施形態に係る分散型データ処理システムをより具体化した実施形態について説明する。
【００８８】
（第２の実施形態）
図１１および図１２は、第２の実施形態に係る分散型データ処理システムの概念図である。また、図１３および図１４は、第２の実施形態における各構成要素の処理を説明するための概念図である。
【００８９】
図１１および図１２のように、第２の実施形態に係る分散型データ処理システムは、バックアップ手段２００と、部分リストア手段４００と、第１処理手段５００と、第２処理手段６００とを備える。なお、図１２は、第２処理手段６００が、第２の実施形態に係る分散型データ処理システムによってＭａｐＲｅｄｕｃｅ処理されたKVペアを第２データベースサーバ群７００に含まれる各サーバ７１０に振り分ける一例を示す。また、第２データベースサーバ群７００は、第２の実施形態に係る分散型データ処理システムに含むように構成してもよいし、含まないように構成してもよい。
【００９０】
バックアップ手段２００は、時刻Ｔ１にバックアップされたＫＶペアを格納する第１バックアップ部２１０−１と、時刻Ｔ２にバックアップされたＫＶペアを格納する第２バックアップ部２１０−２とを含む。なお、第２の実施形態においては、レプリケーション数を３とする。
【００９１】
図１１のように、第１バックアップ部２１０−１には、第１サーバ、第３サーバ、第４サーバ、第５サーバ及び第６サーバに関して、Ｋｅｙ１及びＫｅｙ６を含むＫＶペアが差分バックアップされている。また、第２バックアップ部２１０−２には、第１サーバ、第３サーバ及び第４サーバに関して、Ｋｅｙ１を含むＫＶペアが差分バックアップされている。
【００９２】
バックアップされたＫＶペアをリストアするタイミングにおいて、部分リストア手段４００は、バックアップ手段２００が格納する各ＫＶペアに対応して複数の部分サーバ４１０（４１０−１〜８）を構成する。第２の実施形態では、第１〜第８部分サーバ４１０−１〜８が構成され、それぞれの部分サーバ４１０にＫＶペアが取得される。各部分サーバ４１０において、個別にデータがリストア（部分リストア）される。その結果、差分バックアップを行ったときのサーバ構成に依存せず、任意のサーバ構成に対応するようにデータがリストアされる。
【００９３】
各部分サーバ４１０で部分リストアされたＫＶペアは、第１処理手段５００に向けて出力される。
【００９４】
図１３に示すように、第１処理手段５００において、第１マップ処理部５１０は、ＫＶペアに対して並列でＭａｐ処理を実行する。そして、第１マップ処理部５１０は、複数のＫＶペアを第１シャッフル処理部５３０に向けて出力する。
【００９５】
第１シャッフル処理部５３０は、複数のＫＶペアをキー（ＫＥＹ）によって並び替え、同一のキー（ＫＥＹ）を持つ複数のＫＶペアを集約してＫＶペア群（第１のキーバリューペア群）とする。そして、第１シャッフル処理部５３０は、集約したＫＶペア群（第１のキーバリューペア群）を第１リデュース処理部５５０に向けて出力する。
【００９６】
第１リデュース処理部５５０は、各ＫＶペア群（第１のキーバリューペア群）の中から最新の更新時間（Ｔｉｍｅ）を持つＫＶペアを一つ選択する。第１リデュース処理部５５０は、選択した一つのＫＶペアをレプリケーション数（第２の実施形態では３）に応じて、３つレプリケーション（複製）する。第１リデュース処理部５５０は、レプリケーションした全てのＫＶペアに格納先サーバのノードＩＤを付与することによって一時的ＫＶペアを作成する。第１リデュース処理部５５０は、一時的ＫＶペアをノードＩＤ毎にまとめて一時的ＫＶペア群（第１の一時的キーバリューペア群）とする。そして、第１リデュース処理部５５０は、一時的ＫＶペア群（第１の一時的キーバリューペア群）を第２処理手段６００に向けて出力する。
【００９７】
図１４に示すように、第２処理手段６００において、第２マップ処理部６１０は、一時的ＫＶペア群（第１の一時的キーバリューペア群）としてまとめられた複数の一時的ＫＶペアに対して、並列でＭａｐ処理を実行する。そして、第２マップ処理部６１０は、複数の一時的ＫＶペアを第２シャッフル処理部６３０に向けて出力する。
【００９８】
第２シャッフル処理部６３０は、複数の一時的ＫＶペアを、ノードＩＤ（ＮｏｄｅＩＤ）をキー（ＫＥＹ）として並び替え、同一のノードＩＤ（ＮｏｄｅＩＤ）を持つ一時的ＫＶペアをまとめて一時的ＫＶペア群（第２の一時的キーバリューペア群）とする。そして、第２シャッフル処理部６３０は、一時的ＫＶペア群（第２の一時的キーバリューペア群）を第２リデュース処理部６５０に向けて出力する。
【００９９】
第２リデュース処理部６５０は、ノードＩＤ毎にまとめられた複数の一時的ＫＶペアからノードＩＤ（ＮｏｄｅＩＤ）を削除する。そして、第２リデュース処理部６５０は、ノードＩＤ（ＮｏｄｅＩＤ）毎にまとめた複数のＫＶペアを含むＫＶペア群（第２のキーバリューペア群）を、ノードＩＤに対応するサーバに向けて出力する。
【０１００】
図１４のように、第２の実施形態においては、第１’サーバ７１０−１（ノードＩＤ１）にＫｅｙ１及びＫｅｙ６を含むＫＶペアが格納される。また、第３’及び第５’サーバ７１０−３、５（ノードＩＤ３、５）にＫｅｙ１を含むＫＶペア、第４’及び第６’サーバ７１０−４、６（ノードＩＤ４、６）にＫｅｙ６を含むＫＶペアが格納される。第２データベースサーバ群７００に含まれるそれぞれのサーバ７１０（７１０−１〜６）には、更新時間（Ｔｉｍｅ）が最新のＫＶペアが格納されることになる。
【０１０１】
（第３の実施形態）
第３の実施形態は、バックアップ時にレプリケーションが失敗した場合の一例である。
【０１０２】
図１５のように、第３の実施形態に係る分散型データ処理システムの第１処理手段５００は、第１マップ処理部５１２と、第１シャッフル処理部５３２と、第１リデュース処理部５５２とを有する。なお、第３の実施形態の第１処理手段５００については、内部構成の符号は第２の実施形態と異なるものの、第２の実施形態と同じ符号を用いている。また、第３の実施形態のその他の構成要素については、第２の実施形態と同様であるため、説明は省略する。
【０１０３】
図１５に示す第３の実施形態では、レプリケーション数が３であるのに、２つのＫＶペアしか見つからなかった場合の例である。通常、レプリケーション数が３であれば、３つのＫＶペアが見つかるはずである。ところが、図１５において、Ｋｅｙが１となるＫＶペアのうち、更新時間（Ｔｉｍｅ）が４となるＫＶペアは二つしか存在しない。
【０１０４】
通常、分散ＫＶＳは、耐障害性を確保する目的で、１つのＫＶペアを異なるサーバにレプリケーションする。そのため、Ｒｅｄｕｃｅ処理でレプリケーション数が３であれば、同じＫＶペアが３つ格納されているはずである。しかしながら、第３の実施形態では、何らかの障害等によってレプリケーションできず、同じＫＶペアは２つしか見つからなかった。
【０１０５】
第３の実施形態の場合においても、更新時間（Ｔｉｍｅ）が最新であるＫＶペアを１つ選ぶのみである。そのため、ＫＶペアが想定された数だけ存在しないとしても、第３の実施形態に係る分散型データ処理システムは問題なく動作することがわかる。
【０１０６】
以上のように、本発明の第３の実施形態に係る分散型データ処理システムにおいては、データの更新情報を利用することによってレプリケーションにおけるリモートデータ間の不整合を修正できる。そのため、バックアップ時のレプリケーションの障害が問題とならない。
【０１０７】
（第４の実施形態）
図１６及び図１７に示すように、第４の実施形態に係る分散型データ処理システムは、バックアップ手段２０１、部分リストア手段４０１、第１処理手段５０１、第２処理手段６０１、第２データベースサーバ群７０１を備える。
【０１０８】
第４の実施形態は、データベースをスケールアウトした場合の例である。図１６の第１データベースサーバ群１０１の例では、スケールアウト前後で、第１−１データベースサーバ群１０１−１と、第１−２データベースサーバ群１０１−２とを区別して図示している。実際には、第１−１データベースサーバ群１０１−１を構成する第１〜第３サーバ１１１−１〜３に第４サーバ１１２−４を追加した構成が、第１−２データベースサーバ群１０１−２であり、スケールアウトによってサーバ構成が変更されている。
【０１０９】
第１段階において、ＫＶペアを格納するデータベースサーバ群１０１は、図１６の第１−１データベースサーバ群１０１−１のようなサーバ構成を取っている。第１段階では、第１バックアップ部２１１−１に、第１−１データベースサーバ群１０１−１のバックアップデータが格納される。
【０１１０】
次に、第１段階とは異なる第２段階において、ＫＶペアを格納するデータベースサーバ群１０１は、図１６の第１−２データベースサーバ群１０１−２のようなサーバ構成にスケールアウトされる。第２段階では、第２バックアップ部２１１−２に、第１−２データベースサーバ群１０１−２のバックアップデータが格納される。
【０１１１】
バックアップデータをリストアするタイミングにおいて、部分リストア手段４０１は、異なるサーバ構成を取る各データベースサーバ群１０１のバックアップデータを格納する第１及び第２バックアップ部２１１−１、２から並列でバックアップデータを取得する。部分リストア手段４０１は、バックアップ手段２０１がデータをバックアップする各バックアップタイミングにおける各サーバ１１１および１１２の構成に対応させて、第１〜７部分サーバ４１１−１〜７を構成する。そして、部分リストア手段４０１は、それぞれの部分サーバ４１１においてバックアップデータを個別にリストア（部分リストア）する。
【０１１２】
図１７に示すように、部分リストア手段４０１によって部分リストアされたＫＶペアは、第１処理手段５０１及び第２処理手段６０１によって処理され、第２データベースサーバ群７０１にリストアされる。第４の実施形態においては、第１’〜第８’サーバ７１１−１〜８にＫＶペアが振り分けられる。
【０１１３】
以上の、本発明の第４の実施形態に係る分散型データ処理システムにおいては、あるキー（ＫＥＹ）を持つＫＶペアの格納先が第１リデュース処理で対応付けられるため、バックアップ時のサーバ構成に依存せずにリストアすることが可能となる。
【０１１４】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１１５】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理システムであって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップするバックアップ手段と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力する出力手段と、を備えることを特徴とするデータ処理システム。
（付記２）
前記バックアップ手段は、
前記第１データベースサーバ群を構成する前記サーバに格納された前記データが更新された際に、更新された前記データを含む前記キーバリューペアを差分バックアップすることを特徴とする付記１に記載のデータ処理システム。
（付記３）
前記バックアップ手段は、
前記第１データベースサーバ群を構成する前記サーバに格納された前記データが更新された際に、更新された前記データを含む前記キーバリューペアを増分バックアップすることを特徴とする付記１又は２に記載のデータ処理システム。
（付記４）
前記出力手段は、
前記世代毎にバックアップされたキーバリューペアを前記バックアップ手段から受信し、受信した前記世代毎にバックアップされたキーバリューペアを世代毎にリストアする部分リストア手段を備え、
前記部分リストア手段は、
前記世代毎にバックアップされたキーバリューペアを、前記第１データベースサーバ群を構成する前記サーバ毎にリストアする部分サーバを少なくとも一つ有することを特徴とする付記１乃至３のいずれか一項に記載のデータ処理システム。
（付記５）
前記出力手段は、
前記複製されたキーバリューペアを前記ノード毎に集約して出力することを特徴とする付記１乃至４のいずれか一項に記載のデータ処理システム。
（付記６）
前記出力手段は、
リストアされた少なくとも一つの前記キーバリューペアを並列で読み出す第１マップ処理部と、
前記第１マップ処理部によって読み出された前記キーバリューペアを前記キーによって集約した第１のキーバリューペア群を形成させる第１シャッフル処理部と、
前記第１シャッフル部によって形成された前記第１のキーバリューペア群を構成する前記キーバリューペアのうち最新の更新情報を持つ前記キーバリューペアを一つ選択し、前記選択されたキーバリューペアをレプリケーション数に応じて複製し、前記複製されたキーバリューペアの全てに前記ノード識別子を付与して一時的キーバリューペアを作製し、同一の前記キーを持つ少なくとも一つの前記一時的キーバリューペアを集約し、集約した少なくとも一つの前記一時的キーバリューペアを第１の一時的キーバリューペア群として出力する第１リデュース処理部と、
前記第１リデュース処理部によって出力された前記第１の一時的キーバリューペア群を構成する少なくとも一つの前記一時的キーバリューペアを並列で読み出す第２マップ処理部と、
前記第２マップ処理部によって読み出された前記一時的キーバリューペアを前記ノード識別子によって集約して第２の一時的キーバリューペア群を形成させる第２シャッフル処理部と、
前記第２シャッフル処理部によって形成された前記第２の一時的キーバリューペア群を構成する前記一時的キーバリューペアから前記ノード識別子を削除し、前記第２の一時的キーバリューペア群を構成していた少なくとも一つの前記キーバリューペアを前記ノード識別子毎に集約して第２のキーバリューペア群とし、第２データベースサーバ群を構成するサーバに対して前記第２のキーバリューペア群を前記ノード識別子に従って出力する第２リデュース処理部と、を有することを特徴とする付記１乃至５のいずれか一項に記載のデータ処理システム。
（付記７）
前記第１データベースサーバ群がサーバ構成を変更した際に、
前記バックアップ手段は、
前記第１データベースサーバ群のサーバ構成の変更に応じて、前記キーバリューペアを前記更新情報に対応させてバックアップする付記１乃至６のいずれか一項に記載のデータ処理システム。
（付記８）
前記出力手段は、特定のアルゴリズムに従って、前記複製されたキーバリューペアに前記ノード識別子を付与することを特徴とする付記１乃至７のいずれか一項に記載のデータ処理システム。
（付記９）
前記出力手段は、
前記更新情報として、前記データに含まれる更新時間を用いることを特徴とする付記１乃至８のいずれか一項に記載のデータ処理システム。
（付記１０）
前記バックアップ手段は、
バックアップが実行されたタイミングに関する情報を前記データに付加し、
前記出力手段は、
前記更新情報として、前記バックアップが実行されたタイミングに関する情報を用いることを特徴とする付記１乃至９のいずれか一項に記載のデータ処理システム。
（付記１１）
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理方法であって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップし、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力することを特徴とするデータ処理方法。
（付記１２）
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理プログラムを記録するプログラム記録媒体であって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップする処理と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを所定のノード識別子に従って出力する処理とをコンピュータに実行させることを特徴とするデータ処理プログラムを記録するプログラム記録媒体。
【０１１６】
この出願は、２０１３年９月１１日に出願された日本出願特願２０１３−１８８４６０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１１７】
１    分散型データ処理システム
５    中央演算処理装置
６    ＲＯＭ
７    ＲＡＭ
８    記憶装置
９    入出力装置
１０    第１データベースサーバ群
１１    サーバ
２０    バックアップ手段
２１    バックアップ部
３０    データリストア装置
４０    部分リストア手段
４１    部分サーバ
５０    第１処理手段
５１    第１マップ処理部
５３    第１シャッフル処理部
５５    第１リデュース処理部
６０    第２処理手段
６１    第２マップ処理部
６３    第２シャッフル処理部
６５    第２リデュース処理部
７０    第２データベースサーバ群
【図１】
2015037205.tif 000003
【図２】
2015037205.tif 000004
【図３】
2015037205.tif 000005
【図４】
2015037205.tif 000006
【図５】
2015037205.tif 000007
【図６】
2015037205.tif 000008
【図７】
2015037205.tif 000009
【図８】
2015037205.tif 000010
【図９】
2015037205.tif 000011
【図１０】
2015037205.tif 000012
【図１１】
2015037205.tif 000013
【図１２】
2015037205.tif 000014
【図１３】
2015037205.tif 000015
【図１４】
2015037205.tif 000016
【図１５】
2015037205.tif 000017
【図１６】
2015037205.tif 000018
【図１７】
2015037205.tif 000019
【図１８】
2015037205.tif 000020
【手続補正書】
【提出日】平成27年1月7日(2015.1.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理システムであって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップするバックアップ手段と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを格納先となるサーバのノード識別子に従って出力する出力手段と、を備えることを特徴とするデータ処理システム。
【請求項２】
前記バックアップ手段は、
前記第１データベースサーバ群を構成する前記サーバに格納された前記データが更新された際に、更新された前記データを含む前記キーバリューペアを差分バックアップすることを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記バックアップ手段は、
前記第１データベースサーバ群を構成する前記サーバに格納された前記データが更新された際に、更新された前記データを含む前記キーバリューペアを増分バックアップすることを特徴とする請求項１又は２に記載のデータ処理システム。
【請求項４】
前記出力手段は、
前記世代毎にバックアップされたキーバリューペアを前記バックアップ手段から受信し、受信した前記世代毎にバックアップされたキーバリューペアを世代毎にリストアする部分リストア手段を備え、
前記部分リストア手段は、
前記世代毎にバックアップされたキーバリューペアを、前記第１データベースサーバ群を構成する前記サーバ毎にリストアする部分サーバを少なくとも一つ有することを特徴とする請求項１乃至３のいずれか一項に記載のデータ処理システム。
【請求項５】
前記出力手段は、
前記複製されたキーバリューペアを前記ノード識別子毎に集約して出力することを特徴とする請求項１乃至４のいずれか一項に記載のデータ処理システム。
【請求項６】
前記出力手段は、
リストアされた少なくとも一つの前記キーバリューペアを並列で読み出す第１マップ処理部と、
前記第１マップ処理部によって読み出された前記キーバリューペアを前記キーによって集約した第１のキーバリューペア群を形成させる第１シャッフル処理部と、
前記第１シャッフル部によって形成された前記第１のキーバリューペア群を構成する前記キーバリューペアのうち最新の更新情報を持つ前記キーバリューペアを一つ選択し、前記選択されたキーバリューペアをレプリケーション数に応じて複製し、前記複製されたキーバリューペアの全てに前記ノード識別子を付与して一時的キーバリューペアを作製し、同一の前記キーを持つ少なくとも一つの前記一時的キーバリューペアを集約し、集約した少なくとも一つの前記一時的キーバリューペアを第１の一時的キーバリューペア群として出力する第１リデュース処理部と、
前記第１リデュース処理部によって出力された前記第１の一時的キーバリューペア群を構成する少なくとも一つの前記一時的キーバリューペアを並列で読み出す第２マップ処理部と、
前記第２マップ処理部によって読み出された前記一時的キーバリューペアを前記ノード識別子によって集約して第２の一時的キーバリューペア群を形成させる第２シャッフル処理部と、
前記第２シャッフル処理部によって形成された前記第２の一時的キーバリューペア群を構成する前記一時的キーバリューペアから前記ノード識別子を削除し、前記第２の一時的キーバリューペア群を構成していた少なくとも一つの前記キーバリューペアを前記ノード識別子毎に集約して第２のキーバリューペア群とし、第２データベースサーバ群を構成するサーバに対して前記第２のキーバリューペア群を前記ノード識別子に従って出力する第２リデュース処理部と、を有することを特徴とする請求項１乃至５のいずれか一項に記載のデータ処理システム。
【請求項７】
前記第１データベースサーバ群がサーバ構成を変更した際に、
前記バックアップ手段は、
前記第１データベースサーバ群のサーバ構成の変更に応じて、前記キーバリューペアを前記更新情報に対応させてバックアップする請求項１乃至６のいずれか一項に記載のデータ処理システム。
【請求項８】
前記出力手段は、特定のアルゴリズムに従って、前記複製されたキーバリューペアに前記ノード識別子を付与することを特徴とする請求項１乃至７のいずれか一項に記載のデータ処理システム。
【請求項９】
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理方法であって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップし、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを格納先となるサーバのノード識別子に従って出力することを特徴とするデータ処理方法。
【請求項１０】
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理プログラムを記録するプログラム記録媒体であって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップする処理と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを格納先となるサーバのノード識別子に従って出力する処理とをコンピュータに実行させることを特徴とするデータ処理プログラムを記録するプログラム記録媒体。
【手続補正書】
【提出日】平成28年3月3日(2016.3.3)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
分散型キーバリューストア環境でバックアップされた更新順序を判別するための更新情報を持つデータをリストアするデータ処理プログラムであって、
第１データベースサーバ群を構成する少なくとも一つのサーバに格納された前記データの値と、前記データを区別するキーとをペアで含むキーバリューペアを世代毎にバックアップする処理と、
世代毎にバックアップされた前記キーバリューペアを少なくとも一つ読み出し、読み出された少なくとも一つの前記キーバリューペアを前記キーで集約することによって第１のキーバリューペア群を形成させ、前記第１のキーバリューペア群から最新の更新情報を持つ前記キーバリューペアを一つ選択し、選択された前記最新の更新情報を持つキーバリューペアをレプリケーション数に応じて複製し、複製された前記キーバリューペアを格納先となるサーバのノード識別子に従って出力する処理とをコンピュータに実行させることを特徴とするデータ処理プログラム。
【国際調査報告】
2015037205.tif 000021
2015037205.tif 000022