(57)【特許請求の範囲】
【請求項１】
データ処理を分散して実行する複数の第１の計算機と、前記複数の第１の計算機での前
記データ処理の実行を管理する第２の計算機と、前記データ処理で利用されるデータを格
納するストレージ装置と、前記複数の第１の計算機、前記第２の計算機、および、前記ス
トレージ装置を相互に接続するネットワークとを含んで構成される計算機システムにおけ
るデータ処理方法であって、
前記第２の計算機に与えられ、前記複数の第１の計算機への前記データの分散配置に関
する指針を示すヒント情報にしたがって前記ストレージ装置に保持されたデータを複数の
分散データに分割し、前記分散データおよび前記分散データの各々の複製データを前記複
数の第１の計算機のメモリに分散させて配置し、
前記複数の第１の計算機により、前記第１の計算機のそれぞれに配置された前記分散デ
ータを用いてデータ処理を実施し、
前記第１の計算機のいずれかで障害が発生した場合、当該障害が発生した第１の計算機
に配置された分散データの複製が配置された第１の計算機で前記障害が発生した第１の計
算機で行われていたデータ処理を再実行し、
前記ヒント情報は、前記分散データをさらに分散させて配置させることが可能か否かを
示す情報を含むとともに、前記複製データによるデータ処理の再実行の結果に対する処理方法を指定する情報を含むことを特徴とするデータ処理方法。
【請求項２】
前記分散させて配置する際に、前記ヒント情報が前記分散データをさらに分散させることが可能であることを示す場合、前記分散データの各々を前記ヒント情報に従ってさらに分割して前記複製データを生成し、前記複製データの各々を、その複製データの元とされた分散データとは異なる第１の計算機に配置させることを特徴とする請求項１記載のデータ処理方法。
【請求項３】
前記分散させて配置する際に、前記ヒント情報が前記分散データをさらに分散させることができないことを示す場合、前記分散データの各々の複製を前記第１の計算機の各々に配置された分散データおよび複製データの量が平準化するよう前記複製データを配置させることを特徴とする請求項１記載のデータ処理方法。
【請求項４】
前記複製データによるデータ処理の再実行の後、前記処理方法を指定する情報に従って、前記複製データによるデータ処理の再実行の結果に対する処理を前記第２の計算機から
前記第１の計算機に要求することを特徴とする請求項１記載のデータ処理方法。
【請求項５】
前記分散させて配置する際に、前記ヒント情報が前記分散データをさらに分散させることができないことを示す場合、配置された前記分散データの量がもっとも少ない第１の計算機に前記複製データを配置させることを特徴とする請求項１記載のデータ処理方法。
【請求項６】
データを格納したストレージ装置と、前記ストレージ装置が接続されて前記データを用
いたデータ処理を管理する第１の計算機と、該第１の計算機に接続され、前記データ処理
を分散して実行する複数の第２の計算機とを有し、
前記第１の計算機は、与えられた前記複数の第２の計算機への前記データの分散配置に
関する指針を示すヒント情報を参照し、前記ストレージ装置に保持されたデータを複数の
分散データに分割し、前記分散データおよび前記分散データの各々の複製データを前記複数の第２の計算機のメモリに分散させて配置させる分散配置手段、および、前記第２の計
算機にデータ処理の実行を要求し、前記第２の計算機のいずれかで障害が発生した場合、
当該障害が発生した第２の計算機に配置された分散データの複製が配置された第２の計算
機に、前記障害が発生した第２の計算機で行われていたデータ処理の再実行を要求する実
行管理手段を有し、
前記第２の計算機は、前記分散配置手段からの要求に応じて、前記分散データを自計算
機のメモリに保持するメモリ管理手段、および、前記実行管理手段からの要求に応じてデ
ータ処理を実行するデータ処理手段を有し、
前記ヒント情報は、前記分散データの各々の複製をさらに分散させて配置することが可
能か否かを示す情報を含むとともに、前記複製データによるデータ処理の再実行の結果に
対する処理方法を指定する情報を含むことを特徴とする計算機システム。
【請求項７】
前記分散配置手段は、前記ヒント情報が前記分散データをさらに分散させることが可能
であることを示す場合、前記分散データの各々を前記ヒント情報に従ってさらに分割して
前記複製データを生成し、前記複製データの各々を、その複製データの元とされた分散デ
ータとは異なる第２の計算機に配置させることを特徴とする請求項６記載の計算機システム。
【請求項８】
前記分散配置手段は、前記ヒント情報が前記分散データをさらに分散させることができ
ないことを示す場合、前記分散データの各々の複製を前記第２の計算機の各々に配置され
た分散データおよび複製データの量が平準化するよう前記複製データを配置させることを
特徴とする請求項６記載の計算機システム。
【請求項９】
前記分散配置手段は、前記ヒント情報が前記分散データをさらに分散させることができ
ないことを示す場合、配置された前記分散データの量がもっとも少ない第２の計算機に前
記複製データを配置させることを特徴とする請求項６記載の計算機システム。
【請求項１０】
前記分散配置手段は、前記複製データによるデータ処理の再実行の後、前記処理方法を
指定する情報に従って、前記複製データによるデータ処理の再実行の結果に対する処理を
前記第２の計算機に要求することを特徴とする請求項６記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム、及び計算機システムにおけるデータ処理方法に係り、特に、大量のデータを複数の計算機で並列に処理する計算機システムおよびその障害発生時のデータ処理方法に関する。
【背景技術】
【０００２】
近年、計算機システムで処理されるデータ量は爆発的に増加している。このデータ量の増大にともなってデータ処理に要する時間が増加し、ジョブが所定の時間内に終了しないという問題が生じている。これに対してデータ処理を高速化するため、大量なデータを複数の計算機で並列に処理することが必要となってきている。
【０００３】
大量なデータを複数の計算機で処理する技術として、たとえば、非特許文献１に示されるような、分散メモリ技術がある。分散メモリ技術は、複数の計算機が備えるメモリを統合して、論理的に1つのメモリ空間を構成し、そのメモリ空間にデータを格納する技術である。分散メモリ技術では、実質的にデータが複数の計算機のメモリに分散して配置されるため、これら分散して配置されたデータをそれぞれの計算機で並列して処理することが可能となる。また、データが計算機のメモリ内に配置されるので、ディスク装置などの外部記憶装置との間でのデータの入出力処理が削減される。この結果として、データ処理の高速化を図ることができる。
【０００４】
一方で、分散メモリ技術には、ある計算機に障害が発生した場合、その計算機に保持されたデータが失われる危険性がある。このため、分散メモリ技術では、計算機のメモリ内に保持されたデータの複製を作成し、それを異なる計算機のメモリに配置することで、障害発生時におけるデータの消失を回避している。ある計算機で障害が発生した場合には、データの複製を保持している計算機において、障害が発生した計算機で行われていた処理を再実行することができる。ただし、障害発生時における他の計算機での処理の再実行は、その計算機において実行されていた処理の終了後に行われることになるため、障害発生時には、全体のデータ処理の終了が遅れることになる。
【０００５】
計算機の障害発生時にデータの複製を使用した処理の再実行を高速化する技術として、たとえば、特許文献１や特許文献２に示されるように、計算機の二次記憶デバイスへデータを分散配置する技術がある。特許文献１や特許文献２に開示された技術では、ある計算機の保持するデータの複製が他の複数の計算機の二次記憶デバイスへ分散して配置される。ある計算機に障害が発生した場合には、その計算機の保持していたデータの複製が配置された二次記憶デバイスを持つ複数の計算機により、障害が発生した計算機が保持していたデータを並列に処理することで、再実行に要する時間を低減できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−３２２２９２号公報
【特許文献２】特開２００１−１０１１４９号公報
【非特許文献】
【０００７】
【非特許文献１】ＧｅｍＳｔｏｎｅ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．，“ＧｅｍＦｉｒｅ  Ｅｎｔｅｒｐｒｉｓｅ，”Ｔｅｃｈｎｉｃａｌ  Ｗｈｉｔｅ  Ｐａｐｅｒ，２００７
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、上述した従来の分散メモリ技術では、大量なデータを複数の計算機へ分散させる場合、例えば、取引銘柄といった特定の情報をキーとしてデータを分散させる。このため、データの分散に用いるキーとしてどのような情報を用いるかにより各計算機に保持されるデータの量が異なることになる。従って、特許文献１や特許文献２に示されるように、データの複製を単純に互いに異なる計算機へ分散するだけでは、再実行に要する時間を含めて各計算機のデータ処理を平準化することは難しい。
【０００９】
本発明は、上記の問題点に鑑みてなされたもので、その目的は、大量なデータを複数の計算機で並列処理する計算機システムにおいて、障害発生時の再実行を含めたデータ処理の平準化を図ることにある。
【００１０】
本発明の前記の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば次の通りである。
【００１２】
本発明に係る計算機システムは、その一つの態様において、データを格納したストレージ装置と、当該ストレージ装置が接続されてそのデータを用いたデータ処理を管理する第１の計算機と、当該第１の計算機に接続され、データ処理を分散して実行する複数の第２の計算機とを有する。第１の計算機は、与えられた複数の第２の計算機へのデータの分散配置に関する指針を示すヒント情報を参照し、ストレージ装置に保持されたデータを複数の分散データに分割し、分散データおよび分散データの各々の複製データを複数の第１の計算機のメモリに分散させて配置させる分散配置手段、および、第２の計算機にデータ処理の実行を要求し、第２の計算機のいずれかで障害が発生した場合、当該障害が発生した第２の計算機に配置された分散データの複製が配置された第２の計算機に、障害が発生した第２の計算機で行われていたデータ処理の再実行を要求する実行管理手段を有する。また、第２の計算機は、分散配置手段からの要求に応じて、分散データを自計算機のメモリに保持するメモリ管理手段、および、実行管理手段からの要求に応じてデータ処理を実行するデータ処理手段を有する。
【００１３】
また、本発明の他の態様において、そのデータ処理方法は、データ処理を分散して実行する複数の第１の計算機と、前記複数の第１の計算機での前記データ処理の実行を管理する第２の計算機と、前記データ処理で利用されるデータを格納するストレージ装置と、前記複数の第１の計算機、前記第２の計算機、および、前記ストレージ装置を相互に接続するネットワークとを含んで構成される計算機システムにおいて、第２の計算機に与えられ、第１の計算機へのデータの分散配置に関する指針を示すヒント情報にしたがって、ストレージ装置に保持されたデータを複数の分散データに分割し、分散データおよび分散データの各々の複製データを複数の第１の計算機のメモリに分散させて配置させる。複数の第１の計算機により、第１の計算機のそれぞれに配置された分散データを用いてデータ処理を実施し、第１の計算機のいずれかで障害が発生した場合、当該障害が発生した第１の計算機に配置された分散データの複製が配置された第１の計算機で、障害が発生した第１の計算機で行われていたデータ処理を再実行することを特徴とする。
【発明の効果】
【００１４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば次の通りである。
【００１５】
本発明によれば、大量のデータを複数の計算機で並列に処理する計算機システムにおいて、障害発生時の再実行を含めたデータ処理を計算機間で平準化させることが可能になる。
【図面の簡単な説明】
【００１６】
【図１】本発明が適用された計算機システムの一実施形態における概略構成を示すブロック図である。
【図２】メモリストレージ領域２１３に配置された分散データ２１４を管理するためのメモリストレージ管理情報２１２のデータ構成を示す概念図である。
【図３】ジョブ実行管理情報２２２のデータ構成を示す概念図である。
【図４】再実行情報の構成を示す概念図である。
【図５】分散メモリストレージ管理情報２２４の構成を示す概念図である。
【図６】分散データ配置情報２２５の構成を示す概念図である。
【図７】複製情報の構成を示す概念図である。
【図８】分散データ配置ヒント情報２２６の構成を示す概念図である。
【図９】分散メモリ管理クライアントプログラム２１０により実施されるメモリストレージ領域２１３へのデータ配置処理のフローチャートである。
【図１０】分散メモリ管理クライアントプログラム２１０により実施されるメモリストレージデータ解放処理のフローチャートである。
【図１１】分散メモリ管理クライアントプログラム２１０により実施されるメモリストレージアクセス処理のフローチャートである。
【図１２】計算機間メモリストレージアクセス処理のフローチャートである。
【図１３】ジョブ実行管理部２２１により実施されるジョブ実行受付処理のフローチャートである。
【図１４】ジョブ実行管理部２２１により実施されるジョブ実行処理のフローチャートである。
【図１５】ジョブ実行管理部２２１により実施されるジョブ結果受付処理のフローチャートである。
【図１６】分散メモリストレージ管理部２２３により実施される分散データ配置処理のフローチャートである。
【図１７】再分散配置処理のフローチャートである。
【図１８】再配置処理のフローチャートである。
【図１９】分散メモリストレージ管理部２２３により実施される分散データ配置更新処理のフローチャートである。
【図２０】分散メモリストレージ管理部２２３により実施される分散データ解放処理のフローチャートである。
【図２１】分散メモリストレージ管理部２２３により実施される分散データ配置通知処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態を添付図面に基づいて説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１８】
図１は、本発明が適用された計算機システムの一実施形態における概略構成を示すブロック図である。
【００１９】
本実施の形態における計算機システムは、ジョブを実行する複数の計算機１１０と、計算機１１０でのジョブの実行を管理する管理計算機１２０と、計算機１１０で実行されるジョブへの入力データ、及び計算機１１０で実行されたジョブの出力であるデータを格納するストレージ装置１３０とを含んで構成される。計算機１１０相互、及び各計算機１１０と管理計算機１２０とは、ネットワーク１００を介して相互に接続されている。
【００２０】
計算機１１０は、各々、演算処理を行なうプロセッサ１１１、プログラムやデータを格納するメモリ１１２、及び、計算機１１０をネットワーク１００に接続するためのインタフェース１１３を有して構成される。
【００２１】
計算機１２０は、演算処理を行なうプロセッサ１２１、プログラムやデータを格納する
メモリ１２２、計算機１２０をネットワーク１００に接続するインタフェース１２３、及
びストレージ装置１３０が接続されるインタフェース１２４を含んで構成される。
【００２２】
各計算機１１０のメモリ１１２には、計算機１２０から要求されるジョブを行なうためにプロセッサ１１１により実行されるジョブプログラム２００と、計算機１１０がそれぞれ保有するメモリ１１２を使用して構成される分散メモリを管理するためにプロセッサ１１１により実行される分散メモリ管理クライアントプログラム２１０が保持される。これらのプログラムは、常にメモリ１１２上に保持されている必要はなく、それぞれの計算機が有する図示しないディスク装置などの外部記憶装置に保持され、必要に応じてメモリ１１２上に読み出されてプロセッサ１１１により実行されるように構成されてもよい。
【００２３】
計算機１１０それぞれのメモリ１１２には、分散メモリを構成するために、後述する分
散メモリ管理クライアントプログラム２１０によって、メモリストレージ領域２１３が確
保される。これら複数のメモリストレージ領域２１３は、分散メモリ管理サーバプログラ
ム２２１、及び分散メモリ管理クライアントプログラム２１０により、論理的に１つのス
トレージとして提供される。本明細書ではこのストレージのことを分散メモリと呼ぶ。分
散メモリに格納されるデータは、分散データ２１４として、複数のメモリ１１２に確保さ
れたメモリストレージ領域２１３に分散して配置される。各計算機１１０のメモリ１１２
には、それぞれの分散メモリ管理クライアントプログラム２１０が、メモリストレージ領
域２１３に配置された分散データ２１４を管理するために用いるメモリストレージ管理情
報２１２が保持される。
【００２４】
計算機１２０のメモリ１２２には、複数の計算機１１０のメモリ１１２を使用して構成される分散メモリを管理するためにプロセッサ１２１で実行される分散メモリ管理サーバプログラム２２０が保持される。分散メモリ管理サーバプログラム２２０も、ジョブプログラム２００、分散メモリ管理クライアントプログラム２１０と同様に、図示しない外部記憶装置に保持され、必要に応じてメモリ１２２上に読み出され、プロセッサ１２１により実行されるように構成されてもよい。
【００２５】
分散メモリ管理サーバプログラム２２０は、計算機１１０で実行されるジョブの管理を行なうジョブ実行管理部２２１と、分散メモリ管理クライアントプログラム２１０とともに分散メモリを管理する分散メモリストレージ管理部２２３を有する。メモリ１２２には、ジョブ実行管理部２２１が複数の計算機１１０で実行されるジョブを管理するために用いるジョブ実行管理情報２２２と、分散メモリストレージ管理部２２３が分散メモリ、及び分散メモリに配置された分散データを管理するために用いる分散メモリストレージ管理情報２２４分散データ配置情報２２５、及び分散データ配置ヒント情報２２６が保持される。
【００２６】
本実施形態において、ジョブの実行に使われるデータ２３０は、ファイル等、所定の単位で管理され、ストレージ１３０に格納されている。データ２３０は、ジョブの実行に先立ってストレージ１３０から読み出され、分散データ２１４としてそれぞれの計算機１１０のメモリ１１２に確保されたメモリストレージ領域２１３に分散して配置される。各計算機１１０上のジョブプログラム２００は、それぞれ、自計算機１１０に確保されたメモリストレージ２１３上に配置された分散データ２１４を用いてジョブを実行する。各計算機１１０で実行されているジョブが終了すると、ジョブにより更新等された分散データ２１４は、統合されて、データ２３０としてストレージ１３０に格納される。本実施形態では、このように、データ２３０を用いるジョブが、複数の計算機１１０上で分散して実行される。
【００２７】
本実施形態において、データ２３０は、複数のレコードを有して構成される。各レコードには、データとしての値を保持する少なくとも１つのフィールドが含まれる。
【００２８】
図２は、各計算機１１０上の分散メモリ管理クライアントプログラム２１１が、自身が
動作する計算機のメモリ１１２に確保されたメモリストレージ領域２１３に配置された分
散データ２１４を管理するメモリストレージ管理情報２１２のデータ構成を示す概念図で
ある。図において、メモリストレージ管理情報２１２は、テーブル形式で管理された情報
として示されているが、具体的には、配列、あるいはリスト構造等、各情報項目間を関連
づけることのできる任意のデータ構造を用いて実現することができる。このことは、以降
説明する他の情報についても同様である。
【００２９】
メモリストレージ管理情報２１２は、メモリ１１２へ配置されている分散データ２１４
の元のデータであるストレージ１３０に格納されたデータ２３０を識別するデータ識別子
３００、データを構成する各レコードのレコード長３１０、データ２３０を分散メモリに
分散して配置する際にキーとして使用されたフィールドの識別子である分散キー３２０、メモリストレージ領域２１３へ配置されている分散データ２１４を識別する分散データ識別子３３０、分散データ識別子３３０で識別される各分散データ２１４に含まれ、分散キー３２０で特定されるフィールドの値の範囲を示す分散キーレンジ３４０、分散データ識別子３３０で識別される分散データ２１４に含まれるレコードの数を示すレコード数３５０、及び、分散データ識別子３３０で識別される分散データ２１４のメモリストレージ領域２１３内での配置位置を示す情報としてメモリアドレス３６０を含んでいる。
【００３０】
たとえば、図２に示すメモリストレージ管理情報２１２においてデータ識別子“Ｄ０”のデータに着目してみると、データ“Ｄ０”の分散キーは“Ｆ０”であって、分散データ識別子“D0_0”で識別され、キーレンジ“Ｋ０〜Ｋ９９”に含まれる６００レコードの分散データが、メモリアドレス“0x10000000”から始まるメモリストレージ領域内の領域に、分散データ識別子“D0_1_1”で識別され、キーレンジ“Ｋ１７５〜Ｋ１９９”に含まれる１００レコードのデータが、メモリアドレス“0x10040000”から始まる領域に、また、分散データ識別子“D0_2_0”で識別され、キーレンジ“Ｋ２００〜Ｋ２４４”に含まれる１００レコードのデータが、メモリアドレス“0x10080000”から始まる領域に、それぞれ配置されていることが判る。なお、後述するように、分散データ識別子“D0_1_1”、“D0_2_0”で識別される分散データは、それぞれ、データ“Ｄ０”の分散データの内、分散データ識別子“D0_1”、“D0_2”で識別され、他の計算機１１０に配置されたデータの部分的な複製となるデータである。
【００３１】
図３は、ジョブ実行管理情報２２２のデータ構成を示す概念図である。
【００３２】
ジョブ実行管理情報２２２は、ジョブ実行管理部２２１が複数の計算機１１０により分散して実行されるジョブを管理するために用いられ、ジョブを識別するためのジョブ識別子４００、ジョブの入力となるデータ２３０を識別する入力データ識別子、ジョブの実行結果として出力されるデータを識別する出力データ識別子４２０、ジョブを分散して実行する計算機１１０の台数であり、分散して実行される部分ジョブの数を示す分散数４３０、ジョブを分散して実行する計算機１１０を識別する計算機識別子４４０、各計算機１１０で分散して実行されているジョブの状態を示す実行状態４５０、ジョブを実行していた計算機１１０で障害が発生した際のジョブの再実行に関する情報を識別する再実行識別子４６０を含んでいる。
【００３３】
図３に示すジョブ実行管理情報２２２より、ジョブ“Ｊ０”は、データ“Ｄ０”、“Ｄ１”を入力データとし、データ“Ｄ２”を出力するジョブであり、計算機識別子“Ｃ０”、“Ｃ１”、“Ｃ２”、の３台の計算機１１０により分散して実行されていることが判る。なお、実行状態４５０にはジョブの実行状態を示す情報として、ジョブを分散して実行している計算機ごとに、その計算機に割り当てられたジョブが実行中であることを示す“Running”、ジョブが正常に終了したことを示す“Normal End”、計算機の障害等によりジョブが異常終了したことを示す“Abnormal End”、及び、ジョブの実行待ちであることを示す“Waiting”が設定される。
【００３４】
図４は、再実行情報の構成を示す概念図である。
【００３５】
再実行情報４６０は、障害等によりいずれかの計算機１１０上で実行されていたジョブを他の計算機１１０で再実行する際に、再実行されるジョブ（以降、再実行ジョブと呼ぶ）の状態を管理するために、ジョブ実行管理部２２１により用いられる。再実行情報は、再実行ジョブを識別するための再実行識別子５００、再実行識別子５００で識別される再実行ジョブの分散数５１０、再実行ジョブが割り当てられる計算機の計算機識別子５２０、及び再実行ジョブが割り当てられた各計算機における再実行ジョブの実行状態を示す実行状態情報５３０を含む。
【００３６】
本実施形態において分散数５１０は、再実行識別子５００で識別される再実行ジョブを分散して実行する計算機数であり、１つの再実行識別子５００に対応して分散数５１０で示される台数分の計算機識別子５２０及び実行状態情報５３０が設定される。また、再実行識別子５００は、ジョブ実行管理情報２２２の再実行識別子４６０に対応しており、あるジョブに係る再実行ジョブの実行状態は、再実行識別子４６０と同じ再実行識別子が設定された再実行情報により管理することができる。従って、図３及び図４を参照すれば、ジョブ“Ｊ０”に係り計算機“Ｃ２”で実行されていたジョブの再実行ジョブ“RJ0_2”は、計算機“Ｃ０”、“Ｃ１”の２台の計算機１１０により分散して実行され、計算機“Ｃ０”では再実行ジョブが“Waiting”、すなわち待ちの状態にあり、計算機“Ｃ１”で再実行ジョブが“Running”、すなわち実行中であることが理解される。
【００３７】
なお、本実施形態において、再実行情報は、ジョブ実行管理情報２２２に付随する情報としてメモリ１２２に保持されているものとする。また、本実施形態では、再実行識別子４６０、５００によりジョブ実行管理情報２２２により管理されるジョブと、そのジョブに係る再実行ジョブの再実行情報とが関係づけられているが、再実行識別子４６０に代えて関係する再実行情報へのポインタ情報を用い両者を関係付けるようにしてもよく、あるいは、再実行情報をジョブ実行管理情報２２２の一部として直接保持するようにしてもよい。
【００３８】
図５は、分散メモリストレージ管理情報２２４の構成を示す概念図である。
【００３９】
分散メモリストレージ管理情報２２４は、分散メモリストレージ管理部２２３が複数の計算機１１０のメモリを使用して構成する分散メモリを管理するために用いる情報である。本実施形態において、分散メモリストレージ管理部２２３は、複数の分散メモリストレージを構成することが可能であり、分散メモリストレージ管理情報２２４は、個々の分散メモリストレージを識別する分散メモリ識別子６００、分散メモリ識別子６００で識別される分散メモリの構成に使用される計算機１１０の数を示す計算機数６１０，同じく、分散メモリの構成に使用される計算機１１０の計算機識別子６２０、分散メモリの合計メモリ容量を示す総メモリ領域情報６３０、及び、分散メモリの未使用領域のメモリ容量を示す空メモリ領域情報６４０を含む。
【００４０】
図５に示す分散メモリストレージ管理情報２２４において、例えば、分散メモリ識別子“０”で識別される分散メモリは、計算機識別子“Ｃ０”、“Ｃ１”、及び“Ｃ２”で識別される計算機１１０の備えるメモリ１１２上の領域で構成され、総メモリ容量８ＧＢ（ギガバイト）、空きメモリ領域が７ＧＢあることを示している。
【００４１】
図６は、分散データ配置情報２２５の構成を示す概念図である。
【００４２】
分散データ配置情報２２５は、分散メモリストレージ管理部２２３が、分散メモリへのデータの配置を管理するために用いられ、複数の計算機１１０のメモリ１１２へ分散して配置される分散データ２１４の元となるデータ２３０を識別するデータ識別子７００、複数の計算機１１０のメモリ１１２へデータ２３０を分散して配置する数、すなわちデータ２３０の分割数でありデータ分割後の分散データ２１４の数を示す分散数７１０、データ２３０を分散データ２１４に分割する際にキーとして使用するフィールドの識別子である分散キー７２０、各分散データを識別するための分散データ識別子７３０、各分散データに含まれ、分散キー７２０で特定されるフィールドが保持する値の範囲を示す分散キーレンジ７４０、各分散データに含まれるレコードの数を示すレコード数７５０、各分散データが配置される計算機１１０の計算機識別子７６０、及びジョブの再実行時に使用される分散データの複製に関する情報の識別子７７０を含む。
【００４３】
図６に示す分散データ配置情報２２５において、データ“Ｄ０”は、フィールド“Ｆ０”を分散キーとして３つの分散データに分割され、計算機“Ｃ０”、“Ｃ１”、及び“Ｃ２”に分散配置されていることが理解される。各分散データには、分散データ識別子７３０として“D0_0”、“D0_1”、“D0_2”が割り当てられ、それぞれに、フィールド“Ｆ０”の値が“Ｋ０〜Ｋ９９”の６００レコード、“Ｋ１００〜Ｋ１９９”の１００レコード、“Ｋ２００〜Ｋ２９９”の１００レコードが含まれる。また、各分散データに係る複製データについての複製情報は、それぞれ、複製識別子“RD0_0”、“RD0_1”、“RD0_2”で示されることが判る。
【００４４】
図７は、複製情報の構成を示す概念図である。本実施形態において分散データの複製（以下、複製データと呼ぶ）は、さらに複数に分割され、元となる分散データが配置された計算機１１０とは異なる複数の計算機１１０に分散して配置される。以下では、１台の計算機に配置された複製データの部分を部分複製データと呼ぶ。
【００４５】
複製情報は、複数の複製データに関する複製情報を含んでいる。各複製データに関する複製情報はそれぞれ、その複製情報を識別する複製識別子８００、複製データを分散して配置する計算機の台数を示す分散数８１０、各計算機に分散して配置された部分複製データを判別するための分散データ識別子８２０、分散データ識別子８２０で識別される部分複製データに含まれるデータの範囲を示す分散キーレンジ８３０、分散データ識別子８２０で識別される部分複製データに含まれるレコード数８４０、及び各部分複製データが配置される計算機１１０の計算機識別子８５０を含む。
【００４６】
図７において、例えば、複製情報“RD0_0”は、複製データが２台の計算機に分散配置され、分散データ識別子“D0_0_0”、“D0_0_1”が割り当てられた２つの部分複製データからなることを示している。そして、部分複製データ“D0_0_0”は、分散キーレンジ“Ｋ０〜Ｋ４９”の３００レコードを含み計算機“Ｃ１”に配置され、部分複製データ“D0_0_1”は、分散キーレンジ“Ｋ５０〜Ｋ９９”の３００レコードを含み計算機“Ｃ２”に配置されることが理解される。なお、図６に示す分散データ配置情報２２５を参照することにより、複製情報“RD0_0”は、データ“Ｄ０”の一部である分散データ“D0_0”の複製データに関する複製情報であることが判る。
【００４７】
なお、本実施形態において、複製情報は、分散データ配置情報２２５に付随する情報としてメモリ１２２に保持されているものとする。また、本実施形態では、複製識別子７７０、８００により分散データとその複製データに関する複製情報とが関係づけられているが、複製識別子７７０に代えて関係する複製情報へのポインタ情報を用い両者を関係付けるようにしてもよく、あるいは、複製情報を分散データ配置情報２２５の一部として保持するようにしてもよい
図８は、分散データ配置ヒント情報２２６の構成を示す概念図である。
【００４８】
分散データ配置ヒント情報２２６は、分散配置を行うデータ２３０のデータ識別子９００、データ２３０を分散して配置させる計算機１１０の数、すなわちデータ２３０の分割数でありデータ分割後の分散データ２１４の数を示す分散数９１０、データ２３０を分割する際にキーとして使用するフィールドを特定する分散キー９２０、データ２３０を分散して配置する際に分散データ２１４のキーとなるフィールドに保持される値の範囲を示す分散キーレンジ情報９３０、ジョブの再実行に用いられる分散データの複製生成時に、分散データをさらに分散させて処理することが可能か否かを示す再分散処理可否情報９４０、分散データの複製生成時のポリシを示す複製ポリシ９５０、分散データの複製生成時に、分散データの複製をさらに分散させるためのデータ範囲を指定する再分散レンジ情報９６０、及び計算機１１０での障害発生時に複製の分散データを使用してジョブ２００を分散して再実行した結果としてそれら処理を行った計算機１１０のメモリストレージ領域２１４に書き込まれたデータに対する処理の方法を指定する再結合処理情報９７０を含む。
【００４９】
複製ポリシ９５０として設定される情報には、分散データの複製を生成するに当たって、ジョブ再実行時に再実行ジョブを実行する計算機間の処理負荷を平準化することを指定する“平準化（Leveling）”や、分散キー９２０で指定されたフィールドの値の範囲を予め指定する“固定キーレンジ（Fixed-Key range）”が含まれる。複製ポリシ９５０に“固定キーレンジ（Fixed-Key range）”が設定されるときは、再分散レンジ情報９６０に分散データごとに、それを分割するときに使われる分散キー９２０で指定されたフィールドの値の範囲が設定される。
【００５０】
また、再結合処理情報９７０には、ジョブ２００を分散して実行した結果として各計算機１１０のメモリストレージ領域２１４に出力されたデータに対するマージ(Merge)やソート(Sort)を指定する情報の他、各出力データに対する積み上げ等の統計処理、あるいは、使用者が独自に用意した処理等を指定できるようにしてもよい。ここで指定された処理を実行することで、本来、元の分散データに対するジョブの実行結果として得られる分散データを得ることができる。
【００５１】
図９は、本実施の形態において分散メモリ管理クライアントプログラム２１０により実施されるメモリストレージ領域２１３へのデータ配置処理のフローチャートである。
【００５２】
データ配置処理において、分散メモリ管理クライアントプログラム２１０は、計算機１２０の分散メモリ管理サーバプログラム２２０から分散データ２１４の配置に関する情報を受け付ける（ステップ１１００）。分散メモリ管理クライアントプログラム２１０は、受け付けた分散データ２１４の配置情報にしたがって自計算機１１０のメモリ１２２に確保したメモリストレージ領域２１３へ分散データ２１４を配置する（ステップ１１１０）。メモリストレージ領域２１３に分散データ２１４を配置した後、分散メモリ管理クライアントプログラム２１０は、受け付けた分散データ２１４の配置情報と、分散データ２１４を配置したメモリストレージ領域２１３のアドレス情報をメモリストレージ管理情報２１２へ登録する（ステップ１１２０）。
【００５３】
図１０は、本実施の形態において分散メモリ管理クライアントプログラム２１０により実施されるメモリストレージデータ解放処理のフローチャートである。メモリストレージデータ解放処理は、分散データ２１４を保持するために使用していたメモリストレージ領域２１３を解放し、他のデータのために利用できるようにする際に実施される。
【００５４】
メモリストレージデータ解放処理では、まず、分散メモリ管理クライアントプログラム２１０が、計算機１２０の分散メモリ管理サーバプログラム２２０から分散データ２１４の解放に関する情報として、解放すべき分散データの識別子を含む解放要求を受け付ける（ステップ１２００）。分散メモリ管理クライアントプログラム２１０は、受け付けた分散データ２１４の解放情報にしたがって分散データ２１４を配置しているメモリストレージ領域２１３を解放する（ステップ１２１０）。この後、分散メモリ管理クライアントプログラム２１０は、解放したメモリストレージ領域２１３に保持されていた分散データ２１４の配置情報をメモリストレージ管理情報２１２から削除する（ステップ１２２０）。
【００５５】
図１１は、本実施の形態においてジョブプログラム２００からの要求に応じて、分散メモリ管理クライアントプログラム２１０により実施されるメモリストレージアクセス処理のフローチャートである。
【００５６】
ジョブプログラム２００は、ジョブの実行に際してデータ２３０をアクセスしようとす
る場合、自計算機１１０内の分散メモリ管理クライアントプログラム２１０に、データ２
３０の識別子とアクセスしようとするレコードにおけるキーとを含むアクセス要求を発行
する。この場合のキーは、データ２３０の分散配置の際にデータ２３０を分割するために
用いられた分散キー３２０で指定されたフィールドの値である。アクセス要求が、分散デ
ータへのアクセス要求である場合には、元のデータ２３０の識別子に代えて、該当する分
散データの識別子が指定される。分散メモリ管理クライアントプログラム２１０は、これ
らアクセス要求を受け付けると、メモリストレージ管理情報２１２を参照して、受け付け
たアクセス要求が自計算機１１０のメモリストレージ領域２１４に保持された分散データ
２１４の元のデータ２３０の識別子を指定したアクセス要求か否か判定する（ステップ１
３００）。
【００５７】
ステップ１３００で、元のデータ２３０の識別子を指定したアクセス要求であると判定された場合、分散メモリ管理クライアントプログラム２１０は、メモリストレージ管理情報２１２を参照して、アクセス要求で指定されたキーを含む分散データ２１４がメモリ１１２に保持されているか判定する（ステップ１３１０）。
【００５８】
ステップ１３１０において、指定されたキーを含む分散データ２１４がメモリ１１２に保持されていないと判定された場合、分散メモリ管理クライアントプログラム２１０は、計算機１２０の分散メモリ管理サーバプログラム２２０に問合せ、指定されたキーを含む分散データ２１４を保持している計算機１１０の情報を取得する（ステップ１３２０）。分散メモリ管理サーバプログラム２２０から該当する分散データ２１４を保持している計算機１１０の情報を取得すると、分散メモリ管理クライアントプログラム２１０は、該当する計算機１１０の分散メモリ管理クライアントプログラム２１０へ指定されたキー及びそのキーを含む分散データ２１４の識別子を含むアクセス要求を発行する（ステップ１３３０）。この後、該当する分散データ２１４を保持する計算機１１０から指定されたキーを含む分散データ２１４へのアクセス結果として、指定されたキーの値に対応するレコードを受け取り、ジョブプログラムに２００へ返す（ステップ１３４０）。
【００５９】
ステップ１３００で、元のデータ２３０の識別子を指定したアクセス要求ではないと判定された場合、すなわち、分散データの識別子を指定したアクセス要求である場合、分散メモリ管理クライアントプログラム２１０は、メモリストレージ管理情報２１２を参照して、アクセス要求が自計算機１１０のメモリ１１２に保持されている分散データ２１４に対するアクセス要求か判定する（ステップ１４００）。
【００６０】
アクセス要求が、自計算機１１０のメモリ１１２に保持されていない元のデータ２３０の分散データに対するアクセス要求の場合、そのアクセス要求は、他の計算機１１０のメモリ２１３に保持された分散データ２１４の複製に対するアクセス要求である。この場合、分散メモリ管理クライアントプログラム２１０は、メモリストレージ管理情報２１２を参照して、ジョブプログラム２００からのアクセス要求で指定されたキーを含む分散データの複製がメモリ１１２に保持されているか判定する。指定されたキーを含む分散データの複製がメモリ１１２に保持されていない場合、分散メモリ管理クライアントプログラムは、ステップ１６００の処理へ進む（ステップ１４１０）。
【００６１】
ステップ１４１０で、指定されたキーを含む分散データの複製がメモリ１１２に保持されている場合、分散メモリ管理クライアントプログラム２１０は、メモリストレージ管理情報２１２を参照して、該当する分散データの複製を保持しているメモリストレージ領域２１３のアドレスへアクセスする（ステップ１４２０）。この後、分散メモリ管理クライアントプログラム２１０は、分散データの複製へのアクセス結果を受け取り、それをジョブプログラム２００へ返す（ステップ１３４０）。
【００６２】
ステップ１４００で、アクセス要求が、メモリ１１２に保持している元のデータ２３０の分散データに対するアクセス要求であった場合、分散メモリ管理クライアントプログラム２１０は、そのアクセスが書き込みアクセスか否か判定する（ステップ１５００）。
【００６３】
ジョブプログラム２００からのアクセス要求が書き込みアクセスではない場合、分散メモリ管理クライアントプログラム２１０は、メモリストレージ管理情報２１２を参照して、該当する分散データを保持しているメモリストレージ領域２１３のアドレスへアクセスする（ステップ１５１０）。この後、分散メモリ管理クライアントプログラム２１０は、分散データへのアクセス結果を受け取り、それをジョブプログラム２００へ返す（ステップ１３４０）。
【００６４】
一方、ステップ１５００で、ジョブプログラム２００からのアクセス要求が書き込みアクセスの場合、分散メモリ管理クライアントプログラム２１０は、メモリストレージ管理情報２１２を参照して、分散データを保持しているメモリストレージ領域２１３の該当するアドレス位置に保持されたレコードを更新する。
【００６５】
次に、分散管理クライアントプログラム２１０は、計算機１２０の分散メモリ管理サーバプログラム２２０に問合せ、アクセス要求で指定されたキーを含む分散データの複製が配置されている計算機１１０の情報を取得する（ステップ１６００）。その後、分散管理クライアントプログラム２１０は、分散メモリ管理サーバプログラム２２０から取得した情報に基づいて、該当する計算機１１０に対し、アクセス要求で指定されたキーを含む分散データの複製へのアクセス要求を発行する。このアクセス要求には、分散データの複製の識別子と指定されたキーとが含まれる（ステップ１６１０）。最後に、分散管理クライアントプログラム２１０は、指定されたキーを含む分散データのアクセス結果をジョブプログラム２００へ返す（ステップ１６２０）。
【００６６】
図１２計算機間メモリストレージアクセス処理のフローチャートである。計算期間メモリストレージアクセス処理は、図１１におけるステップ１３３０、１６１０において、分散データが配置された他の計算機１１０に対してアクセス要求が発行された場合に、このアクセス要求を受けた計算機１１０の分散メモリ管理クライアントプログラム２１０により実施される。
【００６７】
他の計算機１１０からのアクセス要求があると、分散メモリ管理クライアントプログラム２１０は、受け付けたアクセス要求が書き込みアクセスを要求するものか否か判定する（ステップ１７００）。受け付けたアクセス要求が書き込みアクセスではない場合、分散メモリ管理クライアントプログラム２１０は、メモリストレージ管理情報２１２を参照して、要求された分散データを保持しているメモリストレージ領域２１３のアドレスへアクセスし、要求されたデータを取得する（ステップ１７１０）。要求されたレコードを取得した後、分散メモリ管理クライアントプログラム２１０は、そのデータをアクセス要求元の計算機１１０へ返す（ステップ１７１５）。
【００６８】
一方、ステップ１７００で、受け付けたアクセス要求が書き込みアクセスを要求するものであった場合、分散メモリ管理クライアントプログラム２１０は、メモリストレージ管理情報２１２を参照して、分散データを保持しているメモリストレージ領域２１３の該当するアドレスに保持されたデータを更新し（ステップ１７２０）、さらに、アクセス要求で指定された分散データの識別子及びキーに基づいてメモリストレージ管理情報２１２を参照し、受け付けたアクセス要求が分散データの複製へのアクセスかどうか判定する（ステップ１８００）。
【００６９】
受け付けたアクセス要求が分散データの複製へのアクセスではない場合、分散メモリ管理クライアントプログラム２１０は、計算機１２０の分散メモリ管理サーバプログラム２２０に問合せて指定するキーを含む分散データの複製を保持している計算機１１０の情報を取得し（ステップ１８１０）、取得した情報で特定される計算機１１０へ指定されたキーを含む分散データの複製へのアクセス要求を発行する（ステップ１８１５）。分散データの複製へのアクセス要求を行った後、そのアクセス要求に対するアクセス結果を受領すると、分散メモリ管理クライアントプログラム２１０は、分散データのアクセス結果をアクセス要求基の計算機１１０に返す（ステップ１８２０）。
【００７０】
一方、ステップ１８００で、受け付けたアクセス要求が分散データの複製へのアクセスであると判定された場合分散メモリ管理クライアントプログラム２１０は、ステップ１８１０、１８１５の処理をスキップして、ステップ１８２０において分散データのアクセス結果をアクセス要求元の計算機１１０へ返す。
【００７１】
図１３は、本実施の形態においてジョブ実行管理部２２１により実施されるジョブ実行受付処理のフローチャートである。
【００７２】
ジョブ実行管理部２２１は、使用者からジョブが実行時に使用するデータ２３０を複数の計算機１１０のメモリに分散して配置する際のヒント情報を取得する。具体的には、分散データ配置ヒント情報２２６の各設定項目として必要な情報を、ファイル形式、あるいは、ディスプレイ、キーボード等のユーザインタフェースを介した入力情報として取得すればよい。ジョブ実行管理部２２１は、取得したヒント情報を分散データ配置ヒント情報２２６としてメモリ１２２に保持する（ステップ１９００）。
【００７３】
次いで、ジョブ実行管理部２２１は、分散データ配置ヒント情報２２６を分散メモリストレージ管理部２２３へ渡し、複数の計算機１１０のメモリ１１２へのデータ２３０の分散配置を要求する（ステップ１９１０）。計算機１１０のメモリ１１２へのデータ２３０の分散配置が終了すると、ジョブ実行管理部２２１は、分散メモリストレージ管理部２２３から分散データを配置した計算機１１０の情報を受け取る（ステップ１９２０）。この後、ジョブ実行管理部２２１は、分散メモリストレージ管理部２２３から取得した計算機１１０の情報と、実行するジョブの情報とからジョブ実行管理情報を作成し、それをジョブ実行管理情報２２２としてメモリ１２２に保持する（ステップ１９３０）。
【００７４】
図１４は、本実施の形態においてジョブ実行管理部２２１により実施されるジョブ実行処理のフローチャートである。
【００７５】
ジョブ実行管理部２２１は、ジョブ実行管理情報２２２の実行状態４５０を参照して、障害等により正常に終了しなかったジョブ２００が存在するか判定する（ステップ２０００）。正常に終了しなかったジョブ２００が存在しなければ、ジョブ実行管理部は、さらに、実行状態４５０を参照し、すべてのジョブが正常に終了したか判定する。すべてのジョブが正常に終了している場合、ジョブ実行管理部２２１は、ジョブ実行処理を終了する（ステップ２００５）
一方、すべてのジョブがまだ正常終了していない場合、ジョブ実行管理部２２１は、ジョブ実行管理情報２２２を参照して、分散データを使用した実行待ちのジョブ２００が存在するか判定する。分散データを使用した実行待ちのジョブ２００が存在しない場合、ジョブ実行管理部２２１は、ステップ２０００の処理に戻る（ステップ２１００）。ステップ２１００で、分散データを使用した実行待ちのジョブ２００が存在する場合、ジョブ実行管理部２２１は、ジョブ実行管理情報２２２を参照して、当該実行待ちのジョブの実行に割り当てられた計算機１１０の中に、他のジョブを実行中の計算機１１０が存在するか判定する。他のジョブを実行中の計算機１１０がある場合、ジョブ実行管理部２２１は、そのままステップ２０００の処理に戻る（ステップ２１１０）。
【００７６】
実行待ちのジョブ２００の実行に割り当てられた計算機１１０の中に、他のジョブを実行中の計算機１１０が存在しなければ、ジョブ実行管理部２２１は、それらの計算機１１０に対して、分散データを使用したジョブの実行を要求する（ステップ２１２０）。
【００７７】
ステップ２０００で、正常に終了しなかったジョブ２００が存在する場合には、分散データの複製を使用した再実行が必要となる。ジョブ実行管理部２２１は、ジョブ実行管理情報２２２の再実行識別子４６０をキーとして再実行情報を参照し、複製の分散データを使用した再実行待ちのジョブ２００が存在するか判定する（ステップ２０１０）。複製の分散データを使用した再実行待ちのジョブ２００が存在する場合、ジョブ実行管理部２２１は、さらに、再実行情報を参照して、再実行待ちのジョブ２００の実行に割り当てられた計算機１１０が他のジョブを実行中か判定する。該当する計算機１１０が他のジョブを実行中であれば、ジョブ実行管理部２２１は、ステップ２０００の処理へ戻る（ステップ２０２０）。
【００７８】
再実行待ちのジョブ２００の実行に割り当てられた計算機１１０が他のジョブを実行中でない場合、ジョブ実行管理部２２１は、その計算機１１０に対して、複製の分散データを使用したジョブの再実行を要求する。その後、ジョブ実行管理部２２１は、ステップ２０００の処理に戻る（ステップ２０３０）。
【００７９】
一方、ステップ２０１０で、再実行情報を参照した結果、複製の分散データを使用した再実行待ちのジョブ２００が存在しない場合には、すでに複製の分散データを使用した再実行は終了している。そこで、ジョブ管理部２２１は、分散データ配置ヒント情報２２６を参照して、計算機１１０で複製の分散データを使用して再実行した結果に対する結合処理の指定を確認する（ステップ２２００）。その後、ジョブ実行管理部２２１は、複製の分散データを使用して再実行した計算機１１０へ指定された結合処理の実行を要求して処理を終える（ステップ２０１０）。
【００８０】
図１５は、ジョブ実行管理部２２１により実施されるジョブ結果受付処理のフローチャートである。
【００８１】
ジョブ実行管理部２２１は、計算機１１０からジョブの結果通知を受け付けると、受け付けたジョブの結果通知が複製の分散データを使用して再実行された結果の結合処理の通知か判定する（ステップ２３００）。受け付けた結果通知が、複製の分散データを使用して再実行した結果の結合処理の通知の場合、ジョブ実行管理部２２１は、分散メモリストレージ管理部２２３へ結合した再実行結果データの配置情報の更新を要求する（ステップ２３１０）。
【００８２】
次に、ジョブ実行管理部２２１は、ジョブ実行管理情報２２２を参照し、後続のジョブで使用されない分散データの解放を、分散メモリストレージ管理部２２３へ要求する（ステップ２３２０）。さらに、ジョブ実行管理部２２１は、ジョブ実行管理情報２２２を参照して、再実行した元のジョブ２００の実行状態を更新する（ステップ２３３０）。
【００８３】
一方、ステップ２３００において、受け付けた結果通知が、複製の分散データを使用して再実行した結果の結合処理の通知ではないと判定された場合、ジョブ実行管理部２２１は、計算機１１０から受け付けたジョブ２００の結果通知が複製の分散データを使用したジョブの再実行の結果の通知か判定する（ステップ２４００）。結果通知が複製の分散データを使用したジョブの再実行の結果の通知であれば、ジョブ実行管理部２２１は、ジョブ実行管理情報２２２の再実行情報４６０を参照して、再実行したジョブの実行状態を更新する（ステップ２４１０）。
【００８４】
ステップ２４００において、結果通知が、複製の分散データを使用したジョブの再実行の結果の通知ではない場合、ジョブ実行管理部２２１は、計算機１１０から受け付けたジョブ実行の結果通知に従って、ジョブ実行管理情報２２２の実行状態４５０を更新する（ステップ２５００）。
【００８５】
次に、ジョブ実行管理部２２１は、計算機１１０からの通知により分散データを使用したジョブの実行が正常終了しているか判定する（ステップ２５１０）。分散データを使用したジョブ実行が正常終了していない場合、ジョブ実行管理部２２１は、正常に終了しなかったジョブの実行に用いられた分散データの複製を配置している計算機１１０の情報を分散メモリストレージ管理部２２３から受け取り、再実行情報に登録する（ステップ２５１５）。
【００８６】
一方、ステップ２５１０で、分散データを使用したジョブの実行が正常終了している場合、ジョブ実行管理部２２１は、さらに、ジョブ実行管理情報222を参照して、分散データの元のデータ２３０に関係する他の分散データを使用したジョブの実行が正常に終了しているか判定する。正常に終了していないジョブが残っている場合、ジョブ実行管理部２２１は、処理を終了する（ステップ２５２０）。
【００８７】
ステップ２５２０で、他の分散データを使用したジョブの実行が正常終了している場合、ジョブ実行管理部２２１は、ジョブ実行管理情報２２２を参照して、後続のジョブで使用されない分散データを判別し、その解放を分散メモリストレージ管理部２２３に要求する。
【００８８】
図１６は、本実施の形態において分散メモリストレージ管理部２２３により実施される分散データ配置処理のフローチャートである。この処理は、ジョブ実行管理部２２１からの分散データの配置要求を契機に開始される。
【００８９】
分散データ配置処理において、分散メモリストレージ管理部２２３は、ジョブ実行管理部２２１から分散データの配置要求と共に、ジョブが実行時に使用するデータ２３０を複数の計算機１１０のメモリに分散して配置する際のヒント情報２２６を取得する（ステップ２６００）。分散メモリストレージ管理部２２３は、分散データ配置情報２２５を参照して、分散配置を要求されているデータに先行するジョブの実施のために配置されているデータが含まれているか判定する（ステップ２６０５）。
【００９０】
分散配置が要求されたデータに、先行するジョブの実施のために既に配置されているデータが含まれていない場合、分散メモリストレージ管理部２２３は、分散メモリストレージ管理情報２２４を参照して、メモリ使用量の少ない計算機１１０から順に要求されたデータの分散配置に必要とされる数だけ計算機を確保する（ステップ２６１０）。一方、分散配置が要求されたデータに、先行するジョブの実施のために既に分散配置されているデータが含まれている場合、分散メモリストレージ管理部２２３は、先行するジョブと同じ計算機１１０を確保する（ステップ２６２０）。
【００９１】
ステップ２６１０、あるいは２６２０において計算機１１０を確保した後、分散メモリストレージ管理部２２３は、分散データ配置ヒント情報２２６を参照して、確保した計算機１１０の分散メモリ管理クライアントプログラム２１０へ分散配置が要求されたデータを構成する分散データの配置を要求し、それら計算機の情報（計算機識別子）を分散データ配置情報２２５へ登録する（ステップ２６３０）。次に、分散メモリストレージ管理部２２３は、確保した計算機１１０へ配置した分散データのレコード数を算出し、分散データ配置情報２２５の該当するエントリへ登録する（ステップ２６３５）。
【００９２】
分散データ配置情報２２５への情報の登録を行った後、分散メモリストレージ管理部２２３は、分散データ配置情報２２５の複製情報識別子７７０が設定されているか否かを参照して、確保した計算機１１０へ配置したすべての分散データについて、その複製の配置まで終了したか判定する。すべての分散データについてその複製の配置が終了している場合、分散データ配置処理は終了する（ステップ２７００）。
【００９３】
一方、複製の配置が終了していない分散データが存在する場合、分散メモリストレージ管理部２２３は、分散データ配置ヒント情報２２６を参照して、複製を生成する分散データをキーとなるフィールドで再度分散させることが可能か判定する（ステップ２７１０）。分散データを再度分散して処理することが可能な場合、分散メモリストレージ管理部２２３は、後述する再分散配置処理を実施し（ステップ２７２０）、そうでない場合、分散メモリストレージ管理部２２３は、後述する再配置処理を実施する（ステップ２７３０）。
【００９４】
図１７は、分散データ配置処理において複製の生成に際して、分散データを再度分散させるために実施される再分散配置処理のフローチャートである。
【００９５】
分散データを再度分散して配置させることができる場合、分散メモリストレージ管理部２２３は、分散データ配置ヒント情報２２６を参照して、複製を生成するポリシは平準化か否か判定する（ステップ２８００）。複製を生成するポリシが平準化であれば、分散メモリストレージ管理部２２３は、分散データ配置情報２２５を参照して、複製を生成する分散データが配置された計算機以外の計算機１１０に分散配置された分散データのレコード数の比率を使用し、再分散後の複製のレコード数の比率がその逆数比となるように再分散に用いるキーとなるフィールドの値の範囲を調整する（ステップ２８１０）。再分散時のキーとなるフィールドの値の範囲の調整を行った後、分散メモリストレージ管理部２２３は、そのフィールドの値の範囲にしたがって複製を配置する計算機１１０の分散メモリ管理クライアントプログラム２１０へ複製の分散データの配置を要求する（ステップ２８１５）。
【００９６】
この後、分散メモリストレージ管理部２２３は、分散データの複製に関する情報を複製情報に登録し、その複製識別子を分散データ配置情報２２５の複製識別子欄に登録する（ステップ２８３０）。
【００９７】
一方、ステップ２８００で、複製を生成するポリシが平準化ではない場合、分散メモリストレージ管理部２２３は、分散データ配置ヒント情報２２６を参照して、使用者の指定したキーとなるフィールドの値の範囲にしたがって、分散データが配置された計算機以外の計算機１１０の分散メモリ管理クライアントプログラム２１０へ複製の分散データの配置を要求し、ステップ２８３０の処理に進む（ステップ２８２０）。
【００９８】
図１８は、分散データ配置処理において複製の生成に際して、分散データを再度分散させることができない場合に実施される再配置処理のフローチャートである。
【００９９】
分散データを再度分散して配置させることができない場合、分散メモリストレージ管理部２２３は、分散データ配置ヒント情報２２６を参照して、複製を生成するポリシが平準化か判定する（ステップ２９００）。複製を生成するポリシが平準化の場合、分散メモリストレージ管理部２２３は、分散データ配置情報２２５を参照して、複製を生成する分散データが配置された計算機以外の残りの計算機１１０に保持されている分散データのレコード数の比率の逆数を使用して分散データを分散して配置するレコード数を調整し、各計算機１１０に配置される分散データの量を平準化させる（ステップ２９１０）。レコード数の調整の後、分散メモリストレージ管理部２２３は、調整したレコード数にしたがって残りの計算機１１０の分散メモリ管理クライアントプログラム２１０へ複製の分散データの配置を要求する（ステップ２９１５）。
【０１００】
この後、分散メモリストレージ管理部２２３は、分散データの複製に関する情報を複製情報に登録し、その複製識別子を分散データ配置情報２２５の複製識別子欄に登録する（ステップ２９３０）。
【０１０１】
一方、ステップ２９００で、複製を生成するポリシが平準化ではない場合、分散メモリストレージ管理部２２３は、分散データ配置情報２２５を参照して、複製を生成する分散データが配置された計算機以外の残りの計算機１１０の中で保持しているレコード数が最も少ない計算機１１０の分散メモリ管理クライアントプログラム２１０へ分散データの複製の配置を要求し、ステップ２９３０の処理に進む（ステップ２９１５）。
【０１０２】
図１９は、本実施の形態において分散メモリストレージ管理部２２３により実施される分散データ配置更新処理のフローチャートである。分散データの複製によりジョブを再実行した場合、通常、データの配置が元の分散データを処理した場合と異なってしまう。分散データ配置更新処理は、このような場合に配置情報を更新するために実施される。
【０１０３】
分散メモリストレージ管理部２２３は、ジョブ実行管理部２２１から結合した再実行結果データの配置情報の更新要求を受け付けると（ステップ３０００）、分散データ配置情報２２５を参照して、再実行結果データに対応する元の分散データを配置している計算機１１０の情報を、再実行結果データを配置している計算機１１０の情報に更新する（ステップ３０１０）。
【０１０４】
図２０は、本実施の形態において分散メモリストレージ管理部２２３により実施される分散データ解放処理のフローチャートである。この処理は、ジョブ結果受付処理のステップ２５３０においてジョブ実行管理部２２１から発行される開放要求を契機として実施される。
【０１０５】
分散メモリストレージ管理部２２３は、ジョブ実行管理部２２１から分散データの開放の要求と共に解放する分散データに関する情報としてデータ識別子を取得する（ステップ３１００）。分散メモリストレージ管理部２２３は、分散データ配置情報２２５として取得したデータ識別子に対応して登録された複製情報識別子７７０をキーとして複製情報を参照し、解放する分散データの複製が配置されている計算機１１０を特定する。そして、分散メモリストレージ管理部２２３は、特定された計算機１１０の分散メモリ管理クライアントプログラム２１０に対し、複製を格納しているメモリストレージ２１３の領域の解放を要求する（ステップ３１１０）。分散メモリストレージ管理部２２３は、さらに、分散データ配置情報２２５を参照して、取得したデータ識別子の分散データを配置している計算機１１０を特定し、その分散メモリ管理クライアントプログラム２１０に該当する分散データを格納したメモリストレージ２１３の領域の解放を要求する（ステップ３１２０）。
【０１０６】
関係する計算機１１０にメモリ領域の開放要求した後、分散メモリストレージ管理部２２３は、解放を要求された分散データに関する配置情報を分散データ配置情報２２５から削除する（ステップ３１３０）。
【０１０７】
図２１は、本実施の形態において分散メモリストレージ管理部２２３により実施される分散データ配置通知処理のフローチャートである。この処理は、分散メモリ管理クライアントプログラム２１０からの問い合わせ、すなわち、メモリストレージアクセス処理のステップ１３２０、１６００、及び計算機間アクセス処理のステップ１８１５において発行される問合せに応じて実施される。この問い合わせには、対象となる分散データの識別子とレコードを特定するためのキーとが情報として含まれる。
【０１０８】
分散メモリストレージ管理部２２３は、計算機１１０の分散メモリ管理クライアントプログラム２１０から分散データの配置の問い合わせを受け付けると（ステップ３２００）、問い合わせで指定された分散データの識別子に基づいて、受け付けた分散データの配置の問い合わせが、分散データの複製に対するものか判定する（ステップ３２０５）。
【０１０９】
受け付けた問い合わせが分散データの複製に対するものであれば、分散メモリストレージ管理部２２３は、分散データ配置情報２２５の複製情報７７０を参照して、問い合わせで指定されたキーを含む複製を配置している計算機１１０を検索する（ステップ３２１０）。一方、受け付けた問い合わせが複製の配置の問い合わせではない場合、分散メモリストレージ管理部２２３は、分散データ配置情報２２５を参照して、問い合わせで指定されたキーを含む分散データを配置している計算機１１０を検索する（ステップ３２２０）。
【０１１０】
ステップ３２１０、あるいは３１２０において該当する計算機１１０が見つかると、分散メモリストレージ管理部２２３は、その計算機１１０に関する情報として計算機識別子を含む情報を問い合わせ元の計算機１１０の分散メモリクライアントプログラム２１０へ返す（ステップ３２３０）。
【０１１１】
本実施の形態によれば、分散メモリ管理サーバプログラムにより、使用者から取得した分散データ配置ヒント情報に基づいて分散データ、及びその複製が複数の計算機に分散配置される。各計算機への複製の配置は、各計算機に配置された分散データのレコード数の比率に応じて決定される。これにより、障害発生時のジョブの再実行を含め、各計算機で行われる処理を平準化することが可能になる。
また、分散メモリ管理クライアントプログラムにより、再分散した分散データの複製に対するジョブからのアクセスを、元の分散データに対するアクセスと透過に見せることで、再分散して処理することが不可能な分散データであっても計算機のメモリ使用量を平準化するように複製を分散配置することが可能になる。
【０１１２】
以上、本発明者によってなされた発明を実施の形態に基づいて具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の態様を採りえることはいうまでもない。
【０１１３】
本発明は、計算機システムにおける障害発生時の処理方法に適用することが可能であり、特に、大量なデータを複数の計算機で並列処理するシステムにおける障害発生時のデータ処理の再実行方法に適用することが可能である。
【符号の説明】
【０１１４】
１００  ネットワーク
１１０  計算機
１１１  プロセッサ
１１２  メモリ
１１３  インタフェース
１２０  計算機
１２１  プロセッサ
１２２  メモリ
１２３  インタフェース
１２４  インタフェース
１３０  ストレージ装置
２００  ジョブプログラム
２１０  分散メモリ管理クライアントプログラム
２１２  メモリストレージ管理情報
２１３  メモリストレージ領域
２１４  分散データ
２２０  分散メモリ管理サーバプログラム
２２１  ジョブ実行管理部
２２２  ジョブ実行管理情報
２２３  分散メモリストレージ管理部
２２４  分散メモリストレージ管理情報
２２５  分散データ配置情報
２２６  分散データ配置ヒント情報
【図１】
0005637791.tif 000002
【図２】
0005637791.tif 000003
【図３】
0005637791.tif 000004
【図４】
0005637791.tif 000005
【図５】
0005637791.tif 000006
【図６】
0005637791.tif 000007
【図７】
0005637791.tif 000008
【図８】
0005637791.tif 000009
【図９】
0005637791.tif 000010
【図１０】
0005637791.tif 000011
【図１１】
0005637791.tif 000012
【図１２】
0005637791.tif 000013
【図１３】
0005637791.tif 000014
【図１４】
0005637791.tif 000015
【図１５】
0005637791.tif 000016
【図１６】
0005637791.tif 000017
【図１７】
0005637791.tif 000018
【図１８】
0005637791.tif 000019
【図１９】
0005637791.tif 000020
【図２０】
0005637791.tif 000021
【図２１】
0005637791.tif 000022