(57)【特許請求の範囲】
【請求項１】
ネットワークを介して複数の計算機が接続され、前記複数の計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、
前記複数の計算機の各々は、
プロセッサと、前記プロセッサに接続される記憶装置と、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記複数の計算機の各々の性能を管理する情報であって、前記複数の計算機の各々が有する前記記憶装置の記憶容量に関する情報を含む性能管理情報を保持し、
前記データベースには、キー及びデータ値から構成されるデータが格納され、
前記複数の計算機の各々には、
前記複数の計算機の各々に割り当てる前記キーの範囲を示す管理範囲を決定するための分散アルゴリズムに基づいて、前記複数の計算機の各々がマスタとして管理するマスタデータが配置され、
他の前記複数の計算機のうちの一つの計算機が管理する前記マスタデータの複製データが配置され、
前記計算機システムは、
前記複数の計算機の各々から性能に関する情報を取得し、取得された情報に基づいて前記性能管理情報を更新する性能情報管理部と、
前記性能管理情報に基づいて、前記複数の計算機の各々が管理する前記マスタデータの前記管理範囲、及び、前記複数の計算機の各々が管理するマスタデータの複製データを保持する副計算機を決定するクラスタ構成管理部と、を備え、
前記クラスタ構成管理部は、
前記性能管理情報を参照して、前記複数の計算機の各々が有する前記記憶装置の記憶容量を比較し、
前記複数の計算機のうちの一つの計算機が有する前記記憶装置の記憶容量と、当該計算機に対する前記副計算機が有する前記記憶装置の記憶容量との差が小さくなるように、前記計算機と前記副計算機との組合せを算出し、
前記複数の計算機の各々が有する前記記憶装置の容量に基づいて、前記複数の計算機の各々の前記管理範囲を決定することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記複数の計算機の各々が有する前記記憶装置は、メモリ及びディスク装置を含み、
前記データベースは、前記複数の計算機の各々が有する前記メモリの記憶領域から構成されるメモリストアと、前記複数の計算機の各々が有する前記ディスク装置から構成されるディスクストアとを含み、
前記クラスタ構成管理部は、
前記メモリの記憶容量の差が小さくなる計算機と副計算機との組合わせを算出し、
前記算出された計算機と副計算機との組合わせに基づいて、前記複数の計算機の各々に対する前記副計算機を設定し、
前記算出された計算機と副計算機との組合わせに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定し、
前記決定された管理範囲の割当幅に基づいて、前記分散アルゴリズムを適用することによって、前記複数の計算機の各々の前記管理範囲を決定することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記複数の計算機の各々は、前記データベースの処理性能を指定する指標情報を保持し、
前記クラスタ構成管理部は、
前記指標情報を参照して、前記データベースのアクセス性能が要求されているか否かを判定し、
前記データベースのアクセス性能が要求されていると判定された場合、前記複数の計算機の各々が有する前記メモリの記憶容量が、前記複数の計算機の各々に対する前記副計算機が有する前記メモリの記憶容量以上であり、かつ、前記メモリの記憶容量の差が小さくなる前記計算機と副計算機との組合わせを算出し、
前記複数の計算機の各々が有するメモリの記憶容量の大きさに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定することを特徴とする計算機システム。
【請求項４】
請求項２に記載の計算機システムであって、
前記複数の計算機の各々は、前記データベースの処理性能を指定する指標情報を保持し、
前記クラスタ構成管理部は、
前記指標情報を参照して、前記データベースのアクセス性能と前記データベースの記憶容量の使用効率とが要求されているか否かを判定し、
前記データベースのアクセス性能と前記データベースの記憶容量の使用効率とが要求されていると判定された場合、前記複数の計算機の各々が保持する前記複製データに対応する前記マスタデータを管理する計算機が有するメモリの記憶容量と、前記複数の計算機の各々が有するメモリの記憶容量と、前記複数の計算機の各々に対する前記副計算機が有するメモリの記憶容量との差が小さくなる前記計算機と副計算機との組合わせを算出し、
前記複数の計算機の各々が有するメモリの記憶容量の大きさに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定することを特徴とする計算機システム。
【請求項５】
請求項３又は請求項４に記載の計算機システムであって、
前記クラスタ構成管理部は、前記指標情報を入力するための入力画面を表示し、
前記入力画面を介した操作に基づいて、前記指標情報を取得することを特徴とする計算機システム。
【請求項６】
請求項１から請求項５のいずれか一つに記載の計算機システムであって、
前記クラスタ構成管理部は、前記複数の計算機と前記複数の計算機の各々に対する副計算機との性能差、及び、前記複数の計算機の各々の前記管理範囲の割当幅を表示するための表示情報を生成することを特徴とする計算機システム。
【請求項７】
ネットワークを介して複数の計算機が接続され、前記複数の計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムにおけるデータ配置管理方法であって、
前記複数の計算機の各々は、
プロセッサと、前記プロセッサに接続される記憶装置と、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記複数の計算機の各々の性能を管理する情報であって、前記複数の計算機の各々が有する前記記憶装置の記憶容量に関する情報を含む性能管理情報を保持し、
前記データベースには、キー及びデータ値から構成されるデータが格納され、
前記複数の計算機の各々には、
前記複数の計算機の各々に割り当てる前記キーの範囲を示す管理範囲を決定するための分散アルゴリズムに基づいて、前記複数の計算機の各々がマスタとして管理するマスタデータが配置され、
他の前記複数の計算機のうちの一つの計算機が管理する前記マスタデータの複製データが配置され、
前記方法は、
前記複数の計算機の各々が、前記複数の計算機の各々から性能に関する情報を取得し、取得された情報に基づいて前記性能管理情報を更新する第１のステップと、
前記複数の計算機の各々が、前記性能管理情報に基づいて、前記複数の計算機各々が管理する前記マスタデータの前記管理範囲、及び、前記複数の計算機の各々が管理するマスタデータの複製データを保持する副計算機を決定する第２のステップと、を含み、
前記第２のステップは、
前記性能管理情報を参照して、前記複数の計算機の各々が有する前記記憶装置の記憶容量を比較する第３のステップと、
前記複数の計算機のうちの一つの計算機が有する前記記憶装置の記憶容量と、当該計算機に対する前記副計算機が有する前記記憶装置の記憶容量との差が小さくなるように、前記計算機と前記副計算機との組合せを算出する第４のステップと、
前記複数の計算機の各々が有する前記記憶装置の容量に基づいて、前記複数の計算機の各々の前記管理範囲を決定する第５のステップと、含むことを特徴とするデータ配置管理方法。
【請求項８】
請求項７に記載のデータ配置管理方法であって、
前記複数の計算機の各々が有する前記記憶装置は、メモリ及びディスク装置を含み、
前記データベースは、前記複数の計算機の各々が有する前記メモリの記憶領域から構成されるメモリストアと、前記複数の計算機の各々が有する前記ディスク装置から構成されるディスクストアとを含み、
前記第４のステップは、
前記メモリの記憶容量と差が小さくなる計算機と副計算機との組合わせを算出する第６のステップと、
前記算出された計算機と副計算機との組合わせに基づいて、前記複数の計算機の各々に対する前記副計算機を設定する第７のステップと、を含み、
前記第５のステップは、
前記算出された計算機と副計算機との組合わせに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定する第８のステップと、
前記決定された管理範囲の割当幅に基づいて、前記分散アルゴリズムを適用することによって前記複数の計算機の各々の前記管理範囲を決定する第９のステップと、を含むことを特徴とするデータ配置管理方法。
【請求項９】
請求項８に記載のデータ配置管理方法であって、
前記複数の計算機の各々は、前記データベースの処理性能を指定する指標情報を保持し、
前記第４のステップは、
前記指標情報を参照して、前記データベースのアクセス性能が要求されているか否かを判定するステップと、
前記データベースのアクセス性能が要求されていると判定された場合、前記複数の計算機の各々が有する前記メモリの記憶容量が、前記複数の計算機の各々に対する前記副計算機が有する前記メモリの記憶容量より大きく、かつ、前記メモリの記憶容量の差が小さくなる前記計算機と副計算機との組合わせを算出するステップと、を含み、
前記第８のステップでは、前記複数の計算機の各々が有するメモリの記憶容量の大きさに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定することを特徴とするデータ配置管理方法。
【請求項１０】
請求項８に記載のデータ配置管理方法であって、
前記複数の計算機各々は、前記データベースの処理性能を指定する指標情報を保持し、
前記第４のステップは、
前記指標情報を参照して、前記データベースのアクセス性能と前記データベースの記憶容量の使用効率とが要求されているか否かを判定するステップと、
前記データベースのアクセス性能と前記データベースの記憶容量の使用効率とが要求されていると判定された場合、前記複数の計算機の各々が保持する前記複製データに対応する前記マスタデータを管理する計算機が有するメモリの記憶容量と、前記複数の計算機の各々が有するメモリの記憶容量と、前記複数の計算機の各々に対する前記副計算機が有するメモリの記憶容量との差が小さくなる前記計算機と副計算機との組合わせを算出するステップと、を含み、
前記第８のステップでは、前記複数の計算機の各々が有するメモリの記憶容量の大きさに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定することを特徴とするデータ配置管理方法。
【請求項１１】
請求項９又は請求項１０に記載のデータ配置管理方法であって、
前記方法は、前記指標情報を入力するための入力画面を表示するステップを含み、
前記入力画面を介した操作に基づいて、前記指標情報を取得することを特徴とするデータ配置管理方法。
【請求項１２】
請求項７から請求項１１のいずれか一つに記載のデータ配置管理方法であって、
前記方法は、前記複数の計算機と前記複数の計算機の各々に対する前記副計算機との性能差、及び、前記複数の計算機の各々の前記管理範囲の割当幅を表示するための表示情報を生成するステップを含むことを特徴とするデータ配置管理方法。
【請求項１３】
ネットワークを介して複数の計算機が接続され、前記複数の計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムに含まれる前記複数の計算機の各々が実行するプログラムであって、
前記複数の計算機の各々は、
プロセッサと、前記プロセッサに接続される記憶装置と、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記複数の計算機の各々の性能を管理する情報であって、前記複数の計算機の各々が有する前記記憶装置の記憶容量に関する情報を含む性能管理情報を保持し、
前記データベースには、キー及びデータ値から構成されるデータが格納され、
前記複数の計算機の各々には、
前記複数の計算機の各々に割り当てる前記キーの範囲を示す管理範囲を決定するための分散アルゴリズムに基づいて、前記複数の計算機の各々がマスタとして管理するマスタデータが配置され、
他の前記複数の計算機のうちに一つの計算機が管理する前記マスタデータの複製データが配置され、
前記プログラムは、
前記複数の計算機の各々から性能に関する情報を取得し、取得された情報に基づいて前記性能管理情報を更新する第１の手順と、
前記性能管理情報に基づいて、複数の計算機の各々が管理する前記マスタデータの前記管理範囲、及び、前記複数の計算機の各々が管理するマスタデータの複製データを保持する副計算機を決定する第２の手順と、を前記複数の計算機の各々に実行させ、
前記第２の手順は、
前記性能管理情報を参照して、前記複数の計算機の各々が有する前記記憶装置の記憶容量を比較する第３の手順と、
前記複数の計算機のうちの一つの計算機が有する前記記憶装置の記憶容量と、当該計算機に対する前記副計算機が有する前記記憶装置の記憶容量との差が小さくなるように、前記計算機と前記副計算機との組合せを算出する第４の手順と、
前記複数の計算機の各々が有する前記記憶装置の容量に基づいて、前記複数の計算機の各々の前記管理範囲を決定する第５の手順と、含むことを特徴とするプログラム。
【請求項１４】
請求項１３に記載のプログラムであって、
前記複数の計算機の各々が有する前記記憶装置は、メモリ及びディスク装置を含み、
前記データベースは、前記複数の計算機の各々が有する前記メモリの記憶領域から構成されるメモリストアと、前記複数の計算機の各々が有する前記ディスク装置から構成されるディスクストアとを含み、
前記第４の手順は、
前記メモリの記憶容量の差が小さくなる計算機と副計算機との組合わせを算出する第６の手順と、
前記算出された計算機と副計算機との組合わせに基づいて、前記複数の計算機の各々に対する前記副計算機を設定する第７の手順と、を含み、
前記第５の手順は、
前記算出された計算機と副計算機との組合わせに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定する第８の手順と、
前記決定された管理範囲の割当幅に基づいて、前記分散アルゴリズムを適用することによって前記複数の計算機の各々の前記管理範囲を決定する第９の手順と、を含むことを特徴とするプログラム。
【請求項１５】
請求項１４に記載のプログラムであって、
前記複数の計算機の各々は、前記データベースの処理性能を指定する指標情報を保持し、
前記第４の手順は、
前記指標情報を参照して、前記データベースのアクセス性能が要求されているか否かを判定する手順と、
前記データベースのアクセス性能が要求されていると判定された場合、前記複数の計算機の各々が有する前記メモリの記憶容量が、前記複数の計算機の各々に対する前記副計算機が有する前記メモリの記憶容量より大きく、かつ、前記メモリの記憶容量の差が小さくなる前記計算機と副計算機との組合わせを算出する手順と、を含み、
前記第８の手順では、前記複数の計算機の各々が有するメモリの記憶容量の大きさに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定させることを特徴とするプログラム。
【請求項１６】
請求項１４に記載のプログラムであって、
前記複数の計算機の各々は、前記データベースの処理性能を指定する指標情報を保持し、
前記第４の手順は、
前記指標情報を参照して、前記データベースのアクセス性能と前記データベースの記憶容量の使用効率とが要求されているか否かを判定する手順と、
前記データベースのアクセス性能と前記データベースの記憶容量の使用効率とが要求されていると判定された場合、前記複数の計算機の各々が保持する前記複製データに対応する前記マスタデータを管理する計算機が有するメモリの記憶容量と、前記複数の計算機の各々が有するメモリの記憶容量と、前記複数の計算機の各々に対する前記副計算機が有するメモリの記憶容量との差が小さくなる前記計算機と副計算機との組合わせを算出する手順と、を含み、
前記第８の手順では、前記複数の計算機の各々が有するメモリの記憶容量の大きさに基づいて、前記複数の計算機の各々の前記管理範囲の割当幅を決定させることを特徴とするプログラム。
【請求項１７】
請求項１３から請求項１６のいずれか一つに記載のプログラムであって、
前記プログラムは、前記複数の計算機と前記複数の計算機の各々に対する前記副計算機との性能差、及び、前記複数の計算機の各々の前記管理範囲の割当幅を表示するための表示情報を生成する手順を前記複数の計算機の各々に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機から構成される分散データベースに関する。特に、自動的に分散データベースを構築するための設定処理に関する。
【背景技術】
【０００２】
近年、Ｗｅｂを用いたアプリケーションを実行する計算システムにおいてデータ量が爆発的に増大しており、複数の計算機にデータを分散させることによって、データへのアクセス性能を向上させるシステムが様々知られている。例えば、ＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）では、データを所定の範囲毎に分割し、分割されたデータを複数の計算機に配置することによって、システム全体のアクセス性能を向上させる方法が知られている（例えば、特許文献１参照）。【０００３】
特許文献１には、ネットワーク上の複数のコンピュータに配置されたデータベースに格納された各データの更新処理を、ネットワーク上で唯一のオリジナルサイトでのみ実行し、他のレプリカサイトにおいては、オリジナルサイトで実行された更新結果を受信して、自己が保有するレプリカデータに反映すること発明が記載されている。これによって、ネットワーク上の複数のコンピュータが利用するデータの同一性を保持することができる。【０００４】
また、キャッシュサーバ等に用いられるシステムとして、データの識別子であるキーと、データ値（バリュー）とから構成されるキャッシュデータを所定の分散方法にしたがって、複数の計算機システムに配置するＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）等のＮｏＳＱＬ（Ｎｏｔ  ｏｎｌｙ  ＳＱＬ）データベースが知られている。【０００５】
ＫＶＳでは、データに高速にアクセス可能な揮発性の記憶媒体、例えばメモリに、データを格納する構成、データ格納の永続性に優れる不揮発性の記録媒体、例えばＳＳＤ（Ｓｏｒｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）やＨＤＤ等に、データを格納する構成、又は、前述したものを併用する構成等の種々の構成がとられている。【０００６】
併用する構成では、高速アクセス性重視や格納性重視等の種々の運用方針によって、複数台の計算機のメモリを統合して構成されるメモリストア及び１台以上の計算機の不揮発性記憶媒体から構成されるディスクストアのバランスを種々変更可能となっている。【０００７】
メモリストア及びディスクストアには、データ（バリュー）と、データの識別子（キー）とをペアとしたデータが格納される。【０００８】
また、ＫＶＳでは、複数のサーバからクラスタを構成して、そのクラスタに含まれるサーバにデータを分散して配置することによって並列処理を実現している。具体的には、サーバが管理するデータの範囲である管理範囲（例えば、キーレンジ）毎に、各サーバにデータが格納される。各サーバは、担当する管理範囲に含まれるデータのマスタとして処理を実行する。すなわち、所定のキーを含む読み出し要求に対して、そのキーが含まれる管理範囲のデータを担当するサーバが、キーに対応するデータを読み出すこととなる。【０００９】
したがって、ＫＶＳでは、スケールアウトによって並列処理の性能を向上させることができる。【００１０】
ＫＶＳでは、データの信頼性を確保するために、クラスタを構成するサーバが他のサーバが管理するデータの複製データを格納する構成を採るものが知られている。すなわち、各サーバは、所定の管理範囲に含まれるデータを管理するマスタであると同時に、他のサーバが管理するデータの複製データを保持するスレーブでもある。これによって、サーバに障害が発生した場合であっても、その障害サーバがマスタとして管理するデータを、スレーブである他のサーバが、自己が保持する複製データをマスタデータとすることによって処理を継続することができる。【００１１】
なお、以下、マスタであるサーバをマスタサーバと記載し、スレーブであるサーバをスレーブサーバとも記載する。【００１２】
前述したようにＫＶＳを構成するサーバには、管理サーバのような特別なサーバが存在しないため単一点障害が存在しない。すなわち、任意のサーバに障害が発生した場合であっても他のサーバが処理を継続できるため、計算機システムが停止することがない。したがって、ＫＶＳは耐障害性も確保される。【００１３】
なお、スレーブサーバの台数、すなわち、複製データの格納先となるサーバの台数は、計算機システムによって任意に設定することができる。【００１４】
ＫＶＳなどで用いられるデータの分散配置方法としては、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法、Ｒａｎｇｅ法及びＬｉｓｔ法等の種々の方法が用いられる。【００１５】
例えば、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法では、まず、キーに対するハッシュ値を算出し、算出したハッシュ値をサーバの台数で除算した余りを算出する。その余りがサーバの識別番号に一致するサーバにデータが配置されるようになっている。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００２−２９７４２８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
従来のオンプレミス（例えば、同一企業内でのシステム運用）では、同一性能のサーバを用いて分散ＫＶＳを構築及び運用することが一般的である。しかし、クラウドコンピューティングでは、性能の異なるサーバを用いて分散ＫＶＳを構築及び運用する必要がある。この場合、各サーバの性能差を考慮しないとシステムの性能が低下する可能性がある。【００１８】
Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法を用いて分散ＫＶＳを構築する場合、従来のシステムでは等間隔にデータが分散配置されるが、クラウドコンピューティングでは、サーバの性能差を考慮して、各サーバが担当するデータの割当量、すなわち、管理範囲を決定する必要がある。また、スレーブサーバを設定する場合には、マスタサーバの性能とスレーブサーバの性能とを考慮する必要がある。【００１９】
例えば、メモリ容量の小さいサーバが、メモリ容量の大きいサーバの複製データを保持するように設定された場合、メモリ容量の小さいサーバのメモリ内に複製データが全て格納できない。したがって、ＨＤＤ等の記憶装置に一部の複製データを格納する必要があるため、システム全体としてのアクセス性能が低下する。【００２０】
また、メモリ容量の大きいサーバが、メモリ容量の小さいサーバの複製データを保持するように設定された場合、メモリ容量の大きいサーバのメモリ使用量が小さいため、システム全体としてメモリ使用効率が低下する。【００２１】
前述の理由によって、従来技術では、クラウドコンピューティングを用いて分散ＫＶＳを構築する場合、管理者が手動でデータを分散配置するための設定（管理範囲及びスレーブサーバを設定）する必要がある。【００２２】
本発明は、前述した課題に鑑みてなされた発明である。すなわち、クラウドコンピューティングを用いて分散ＫＶＳを構築する場合に、サーバの性能に基づいて、自動的にデータの分散配置の設定することを目的の一つとする。
【課題を解決するための手段】
【００２３】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して複数の計算機が接続され、前記複数の計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、前記複数の計算機の各々は、プロセッサと、前記プロセッサに接続される記憶装置と、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、前記複数の計算機の各々の性能を管理する情報であって、前記複数の計算機の各々が有する前記記憶装置の記憶容量に関する情報を含む性能管理情報を保持し、前記データベースには、キー及びデータ値から構成されるデータが格納され、前記複数の計算機の各々には、前記複数の計算機の各々に割り当てる前記キーの範囲を示す管理範囲を決定するための分散アルゴリズムに基づいて、前記複数の計算機の各々がマスタとして管理するマスタデータが配置され、他の前記複数の計算機のうちの一つの計算機が管理する前記マスタデータの複製データが配置され、前記計算機システムは、前記複数の計算機の各々から性能に関する情報を取得し、取得された情報に基づいて前記性能管理情報を更新する性能情報管理部と、前記性能管理情報に基づいて、前記複数の計算機の各々が管理する前記マスタデータの前記管理範囲、及び、前記複数の計算機の各々が管理するマスタデータの複製データを保持する副計算機を決定するクラスタ構成管理部と、を備え、前記クラスタ構成管理部は、前記性能管理情報を参照して、前記複数の計算機の各々が有する前記記憶装置の記憶容量を比較し、前記複数の計算機のうちの一つの計算機が有する前記記憶装置の記憶容量と、当該計算機に対する前記副計算機が有する前記記憶装置の記憶容量との差が小さくなるように、前記計算機と前記副計算機との組合せを算出し、前記複数の計算機の各々が有する前記記憶装置の容量に基づいて、前記複数の計算機の各々の前記管理範囲を決定することを特徴とする。
【発明の効果】
【００２４】
本発明によれば、計算機間の性能を考慮することによって、各計算機の管理範囲、及び各計算機が管理するマスタデータの複製データを保持する計算機（スレーブサーバ）を自動的に設定することができる。したがって、クラウドコンピューティングにおいて、最適な分散ＫＶＳを構築することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施例における計算機システムの構成を示すブロック図である。
【図２】本発明の第１の実施例におけるサーバのハードウェア構成の一例を示す説明図である。
【図３】本発明の第１の実施例におけるメモリストアに格納されるデータの一例を示す説明図である。
【図４】本発明の第１の実施例における構成情報の一例を示す説明図である。
【図５】本発明の第１の実施例における性能管理情報の一例を示す説明図である。
【図６】本発明の第１の実施例におけるサーバが実行する処理を説明するフローチャートである。
【図７】本発明の第１の実施例における入力画面の一例を示す説明図である。
【図８】本発明の第１の実施例における下り階段型アルゴリズムの一例を示す説明図である。
【図９】本発明の第１の実施例における山型アルゴリズムの一例を示す説明図である。
【図１０】本発明の第１の実施例における配置決定処理の詳細を説明するフローチャートである。
【図１１Ａ】本発明の第１の実施例における性能管理情報の更新方法の一例を示す説明図である。
【図１１Ｂ】本発明の第１の実施例における性能管理情報の更新方法の一例を示す説明図である。
【図１１Ｃ】本発明の第１の実施例における性能管理情報の更新方法の一例を示す説明図である。
【図１２Ａ】本発明の第１の実施例における性能管理情報の更新方法の一例を示す説明図である。
【図１２Ｂ】本発明の第１の実施例における性能管理情報の更新方法の一例を示す説明図である。
【図１２Ｃ】本発明の第１の実施例における性能管理情報の更新方法の一例を示す説明図である。
【図１３Ａ】本発明の第１の実施例における確認画面の一例を示す説明図である。
【図１３Ｂ】本発明の第１の実施例における確認画面の一例を示す説明図である。
【図１４】本発明の第１の実施例の変形例における山型配列処理を説明するフローチャートである。
【図１５】本発明の第２の実施例におけるクラスタ構成変更処理を説明するフローチャートである。
【図１６Ａ】本発明の第２の実施例における新規サーバの配置決定処理を説明するフローチャートである。
【図１６Ｂ】本発明の第２の実施例における新規サーバの配置決定処理を説明するフローチャートである。
【図１７】本発明の第２の実施例における性能管理情報の更新方法の一例を示す説明図である。
【図１８】本発明の第２の実施例における性能管理情報の更新方法の一例を示す説明図である。
【発明を実施するための形態】
【００２６】
以下の説明では、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法を適用した分散ＫＶＳを例に説明する。
【第１の実施例】
【００２７】
図１は、本発明の第１の実施例における計算機システムの構成を示すブロック図である。
【００２８】
計算機システムは、複数のサーバ１００、クライアント２００及びネットワーク３００から構成される。各サーバ１００間又はサーバ１００とクライアント２００との間は、ネットワーク３００を介して互いに接続される。
【００２９】
ネットワーク３００は、ＬＡＮ、ＷＡＮ及びＳＡＮ等の有線及び無線の種々の構成が考えられる。本発明は、サーバ１００及びクライアント２００が通信できるものであればどのようなネットワークであってもよい。なお、ネットワーク３００には、複数のネットワーク装置（図示省略）が含まれる。ネットワーク装置は、例えば、スイッチ及びゲートウェイなどが含まれる。
【００３０】
本実施例では、複数のサーバ１００からクラスタを構成し、それらサーバ１００が備える記憶領域上にＮｏＳＱＬデータベースが構築される。本実施例ではＮｏＳＱＬデータベースとして、ＫＶＳを用いるものとする。
【００３１】
サーバ１００−１は、所定の管理範囲毎にデータが配置されており、当該管理範囲に含まれるデータを管理するマスタサーバとして稼動する。また、サーバ１００−１は、他のサーバ１００−２及び／又はサーバ１００−ｎが管理する管理範囲に含まれるデータの複製データを保持しており、スレーブサーバとして稼動する。同様に、サーバ１００−２及び１００−ｎのそれぞれも、自己の管理範囲に含まれるデータを管理するマスタサーバとして機能し、他のサーバ１００がマスタとして管理する管理範囲の複製データを保持するようになっている。
【００３２】
また、本実施例のクラスタは、計算機システム全体の管理を行う管理サーバとなる唯一のサーバ１００が存在せず、全てのサーバ１００を同等のサーバとして扱う構成である。これによって、一つのサーバ１００に障害が発生しても、他のスレーブサーバが新たなマスタサーバとして処理を継続することができるため、計算機システムを停止することなく処理を継続することができる。
【００３３】
本実施例のサーバ１００は、データ管理部１１０、複製制御部１２０、ディスクストア１３０、メモリストア１４０及びクラスタ構成管理部１５０を有する。
【００３４】
ディスクストア１３０及びメモリストア１４０は、ＫＶＳを構成するデータベースである。ディスクストア１３０及びメモリストア１４０には、キーとバリューとを一組としたデータが格納される。なお、各サーバ１００のディスクストア１３０及びメモリストア１４０には、管理範囲に含まれるデータが格納される。
【００３５】
メモリストア１４０に対するアクセス性能は、ディスクストア１３０に対するアクセス性能より高いため、通常メモリストア１４０にデータが格納される。一方、ディスクストア１３０には、メモリストア１４０に格納できない容量のデータ及びアクセス頻度が低いデータ等が格納される。
【００３６】
なお、計算機システムは、マスタデータの格納については、ディスクストア１３０を利用せずにメモリストア１４０のみを利用する構成や、自及び／又は他のサーバ１００の複製データをディスクストア１３０にのみ利用する構成等、種々の運用が適用可能である。特に、分散ＫＶＳシステムは、要求元に対する応答の早さを課題の一つとする。このためメモリストア１４０のみを利用する構成では、マスタ・スレーブの切替え時を始め、全てのデータに対する応答の早さを期待できる。他方、ディスクストア１４０を併用する構成では、サーバ停止時のデータバックアップとしての効果も期待できる。
【００３７】
データ管理部１１０は、サーバ１００が管理するデータに対する各種処理を制御する。データ管理部１１０は、クライアント２００からの要求を受け付け、その要求に基づいて、データの読み出しや書き込み等の処理を制御する。
【００３８】
複製制御部１２０は、クライアント２００からのアクセス要求を受信し、受信したアクセス要求をデータ管理部１１０に転送する。また、複製制御部１２０は、受信したアクセス要求に対する処理の結果をクライアント２００に送信する。また、複製制御部１２０は、サーバ１００自身が管理する管理範囲のデータを複製し、生成された複製データを他のサーバ１００に送信する。
【００３９】
クラスタ構成管理部１５０は、複数のサーバ１００から構成されるクラスタを管理する。クラスタに含まれるサーバ１００を用いて分散ＫＶＳが構築される。クラスタ構成管理部１５０は、複数のモジュールから構成され、具体的には、配置管理部１６０、構成情報管理部１７０及び情報共有部１８０を含む。
【００４０】
配置管理部１６０は、各サーバ１００の管理範囲と、各サーバ１００に対するスレーブサーバとを決定する。より具体的には、配置管理部１６０は、管理範囲の幅と、スレーブサーバの配置関係とを決定する。
【００４１】
ここで、スレーブサーバの配置関係とは、一つのサーバ１００に対してどのサーバ１００をスレーブサーバに設定するかを示す情報である。
【００４２】
本実施例では、配置管理部１６０は、マスタサーバとスレーブサーバとの間の性能差が小さくなるようにスレーブサーバの配置関係を決定する。また、配置管理部１６０は、処理結果を表示するための表示情報を生成する。
【００４３】
構成情報管理部１７０は、クラスタ上に構築された分散ＫＶＳの構成を管理するための構成情報１７１を管理する。構成情報管理部１７０は、必要に応じて、構成情報１７１を更新する。構成情報１７１の詳細については、図４を用いて後述する。
【００４４】
情報共有部１８０は、サーバ１００の性能に関する情報を管理し、また、他のサーバ１００との間でサーバ１００の性能に関する情報を共有する。情報共有部１８０は、例えばハートビート等を用いることによって実現できる。
【００４５】
また、情報共有部１８０は、性能管理情報１８１を保持する。性能管理情報１８１は、計算機システムに含まれる全サーバ１００の性能を管理するための情報を格納する。性能管理情報１８１の詳細については、図５を用いて後述する。
【００４６】
情報共有部１８０は、サーバ１００の性能に関する情報を収集し、収集された情報に基づいて、当該サーバ１００の性能情報を生成する。情報共有部１８０は、各サーバ１００から取得した性能情報に基づいて、性能管理情報１８１を生成し、又は更新する。
【００４７】
クライアント２００は、プロセッサ（図示省略）、メモリ（図示省略）及びネットワークインタフェース（図示省略）等を備える計算機であって、分散ＫＶＳに対する各種処理の実行を要求する。クライアント２００は、ＵＡＰ２１０及びデータ送受信部２２０を有する。
【００４８】
ＵＡＰ２１０は、各種機能を提供するアプリケーションであって、そのＵＡＰ２１０によって各種処理の要求がサーバ１００に送信される。データ送受信部２２０は、ＵＡＰ２１０から出力された要求をサーバ１００に送信し、また、サーバ１００からの処理結果を受信する。
【００４９】
図２は、本発明の第１の実施例におけるサーバ１００のハードウェア構成の一例を示す説明図である。
【００５０】
サーバ１００は、プロセッサ１０１、メモリ１０２、ネットワークインタフェース１０３、ストレージインタフェース１０４及び記憶装置１０５を有する。
【００５１】
プロセッサ１０１は、メモリ１０２に格納されるプログラムを実行する。プロセッサ１０１がプログラムを実行することによって、サーバ１００が備える機能を実現することができる。以下、プログラムを主語に処理を説明する場合には、プロセッサ１０１によって、プログラムが実行されていることを示すものとする。
【００５２】
メモリ１０２は、プロセッサ１０１が実行するプログラム及び当該プログラムの実行に必要な情報を格納する。
【００５３】
本実施例のメモリ１０２上には、データ管理部１１０、複製制御部１２０及びクラスタ構成管理部１５０を実現するためのプログラムが格納される。また、メモリ１０２上には、必要な情報として、構成情報１７１及び性能管理情報１８１が格納される。
【００５４】
さらに、メモリ１０２上には、分散ＫＶＳを構成するデータベースであるメモリストア１４０が構築される。メモリストア１４０には、キーとバリューとを一組としたデータが格納される。メモリストア１４０に格納されるデータの詳細については、図３を用いて後述する。
【００５５】
記憶装置１０５は、各種情報を格納する。記憶装置１０５は、例えば、ＨＤＤ又はＳＳＤ等が考えられる。記憶装置１０５上に分散ＫＶＳを構築するディスクストア１３０が構築される。また、記憶装置１０５には、データ管理部１１０等を実現するプログラムが格納されてもよい。この場合、プロセッサ１０１が記憶装置１０５からプログラムを読み出し、読み出されたプログラムをメモリ１０２上にロードし、ロードされたプログラムを実行する。
【００５６】
図３は、本発明の第１の実施例におけるメモリストア１４０に格納されるデータの一例を示す説明図である。なお、ディスクストア１３０にも同様の形式のデータが格納される。
【００５７】
本実施例では、メモリストア１４０は、データ管理情報４００を格納する。データ管理情報４００には、キーとバリューとがペアとなったデータが複数含まれる。以下、キーとバリューとがペアとなったデータをキーバリュー型データとも記載する。
【００５８】
データ管理情報４００は、Ｋｅｙ４０１及びＶａｌｕｅ４０２を含む。Ｋｅｙ４０１は、データを識別するための識別子（キー）を格納する。Ｖａｌｕｅ４０２は、実際のデータ（バリュー）を格納する。
【００５９】
クライアント２００を操作するユーザは、Ｋｅｙ４０１を指定して分散ＫＶＳにデータを保存し、また、Ｋｅｙ４０１を指定して分散ＫＶＳから所望のデータを取得することができる。
【００６０】
各サーバ１００は、所定の管理範囲毎にキーバリュー型データを管理する。すなわち、管理範囲毎にキーバリュー型データが各サーバ１００に分散して配置される。サーバ１００は、指定された管理範囲に含まれるデータのマスタサーバとして処理を実行することとなる。これによって、大量のデータを並列的かつ高速に処理できる。
【００６１】
図４は、本発明の第１の実施例における構成情報１７１の一例を示す説明図である。
【００６２】
構成情報１７１は、各サーバ１００の管理範囲に関する情報を格納する。具体的には、構成情報１７１は、サーバＩＤ５０１及び管理範囲５０２を含む。
【００６３】
サーバＩＤ５０１は、サーバ１００を一意に識別するための識別子を格納する。サーバＩＤ５０１には、サーバ１００の識別子、ＩＰアドレス及びＭＡＣアドレス等が格納される。
【００６４】
管理範囲５０２は、サーバ１００が担当する管理範囲の値を格納する。本実施例では管理範囲の値としてハッシュ値が格納される。
【００６５】
管理範囲５０２のマスタ５０５は、サーバＩＤ５０１に対応するサーバ１００がマスタとして管理する管理範囲のハッシュ値を格納する。管理範囲５０２のスレーブ５０６は、サーバＩＤ５０１に対応するサーバ１００が保持する複製データの管理範囲のハッシュ値を格納する。
【００６６】
なお、本実施例では、一つのサーバ１００が複製データを保持する構成となっているが本発明はこれに限定されない。すなわち、同一の複製データを保持するスレーブサーバが二つ以上あってもよい。
【００６７】
図５は、本発明の第１の実施例における性能管理情報１８１の一例を示す説明図である。
【００６８】
性能管理情報１８１は、各サーバ１００の性能に関する情報を格納する。具体的には、性能管理情報１８１は、サーバＩＤ６０１、スペック６０２及びレンジ割合６０３を含む。
【００６９】
サーバＩＤ６０１は、サーバＩＤ５０１と同一のものである。
【００７０】
スペック６０２は、サーバＩＤ６０１に対応するサーバ１００の性能に関する情報を格納する。図５に示す例では、スペック６０２には、プロセッサ性能、メモリ性能及び通信性能が含まれる。なお、スペック６０２には、プロセッサ１０１とメモリ１０２とを接続するチャネル数、メモリ１０２のクロック数、記憶装置１０５の容量、及びＨＤＤの回転数等その他の情報が含まれてもよい。
【００７１】
プロセッサ性能は、サーバ１００が有するプロセッサ１０１の性能を示す情報を格納する。本実施例では、プロセッサ性能には、プロセッサ１０１の周波数が格納される。
【００７２】
メモリ性能は、サーバ１００が有するメモリ１０２の性能を示す情報を格納する。本実施例では、メモリ性能には、メモリ１０２の容量が格納される。
【００７３】
通信性能は、サーバ１００が有するネットワークインタフェース１０３の通信性能を示す情報を格納する。本実施例では、通信性能には、ネットワークインタフェース１０３の通信速度が格納される。
【００７４】
レンジ割合６０３は、サーバ１００に割り当てる管理範囲の幅（割当比率）を示す情報を格納する。また、レンジ割合６０３は、スレーブサーバが保持する複製データのデータ量にも対応する。
【００７５】
本実施例では、右隣の列（エントリ）に対応するサーバ１００の複製データを保持するようにスレーブサーバが設定されるものとする。なお、最も左の列に対応するサーバ１００は、最も右の列に対応するサーバ１００の複製データを保持するスレーブサーバとして設定される。したがって、本実施例では、性能管理情報１８１のエントリ（サーバ１００）の配列が複製データを保持するスレーブサーバの配置関係に対応する。
【００７６】
図６は、本発明の第１の実施例におけるサーバ１００が実行する処理を説明するフローチャートである。
【００７７】
以下で説明する処理は、一つ以上のサーバ１００が実行するものとする。
【００７８】
サーバ１００は、クライアント２００からクラスタの構成要求を受け付けると処理を開始する。クラスタの構成要求には、少なくともスレーブサーバの配置関係を決定するための指標情報が含まれる。
【００７９】
なお、クライアント２００は、一つ以上のサーバ１００にクラスタの構成要求を送信できる。例えば、クライアント２００は、マルチキャストで全サーバ１００にクラスタの構成要求を送信する。
【００８０】
前述した指標情報は、例えば、図７に示すような入力画面７００を用いて入力される。
【００８１】
図７は、本発明の第１の実施例における入力画面７００の一例を示す説明図である。図７に示す入力画面７００は、クライアント２００に表示されるものとする。ただし、入力画面７００は、サーバ１０に表示されてもよい。
【００８２】
入力画面７００は、優先順位選択領域７１０及びＥＸＩＴ操作ボタン７２０を含む。
【００８３】
優先順位選択領域７１０は、スレーブサーバの配置関係を決定するために用いられる指標の優先順位を選択するための表示領域である。優先順位選択領域７１０は、Ｓｅｌｅｃｔ７１１、Ｐｒｉｏｒｉｔｙ７１２、及びＴｅｒｍ７１３を含む。
【００８４】
Ｓｅｌｅｃｔ７１１は、使用する指標を選択するための表示部である。例えば、ユーザがＳｅｌｅｃｔ７１１を操作することによって、対応する指標が選択される。Ｐｒｉｏｒｉｔｙ７１２は、選択された指標の優先順位を設定する表示部である。Ｔｅｒｍ７１３は、具体的な指標の内容を示す表示部である。
【００８５】
ＥＸＩＴ操作ボタン７２０は、入力画面７００を用いた操作を終了するための操作ボタンである。ユーザがＥＸＩＴ操作ボタン７２０を操作することよって、優先順位選択領域７１０に設定された情報がサーバ１００に送信される。
【００８６】
図７に示す例では、メモリ容量が最も優先順位の高い指標として選択され、通信速度が次に優先順位の高い指標として選択されている。
【００８７】
サーバ１００は、指標情報を含むクラスタの構成要求を受信すると、メモリ１０２上に当該指標情報を格納する。
【００８８】
図６の説明に戻る。
【００８９】
サーバ１００は、サーバ１００自身の性能情報を収集する（ステップＳ１０１）。具体的には、情報共有部１８０が、サーバ１００の性能情報を収集する。
【００９０】
サーバ１００は、他のサーバ１００の性能情報を取得し、取得された性能情報に基づいて性能管理情報１８１を生成する（ステップＳ１０３）。
【００９１】
具体的には、情報共有部１８０が、他のサーバ１００から送信された性能情報を受信し、収集された自身の性能情報及び受信した他のサーバ１００の性能情報に基づいて、性能管理情報１８１を生成する。このとき、レンジ割合６０３は空欄のままである。
【００９２】
また、情報共有部１８０は、収集された自身の性能情報をマルチキャストで他のサーバ１００に送信する。
【００９３】
サーバ１００は、計算機システムに含まれる全サーバ１００を処理対象に設定し、また、指標の優先順位の値ｎを「１」に設定する（ステップＳ１０５）。このとき、サーバ１００は、指標情報を参照し、Ｐｒｉｏｒｉｔｙ７１２に「１」が設定された指標を特定する。
【００９４】
サーバ１００は、指標情報及び性能管理情報１８１に基づいて、スレーブサーバの配置関係（サーバ１００のエントリの配列）を決定するための配列決定処理を実行する（ステップＳ１０７）。配列決定処理の詳細については、図８を用いて後述する。
【００９５】
サーバ１００は、配列決定処理の結果、スレーブサーバの配置関係を一意に決定できるか否かを判定する（ステップＳ１０９）。例えば、メモリ容量に基づいて、スレーブサーバの配置関係を決定する場合、メモリ容量が同一であるサーバ１００が複数存在すると、スレーブサーバの配置関係を一意に決定することができないと判定される。
【００９６】
スレーブサーバの配置関係（サーバ１００のエントリの配列）を一意に決定できると判定された場合、サーバ１００は、決定されたスレーブサーバの配置関係（サーバ１００のエントリの配列）に基づいて、クラスタを構成し、処理を終了する（ステップＳ１１１）。
【００９７】
具体的には、サーバ１００は、スレーブサーバの配置関係（決定されたサーバ１００のエントリの配列）に基づいて、構成情報１７１を生成する。生成された構成情報１７１は、情報共有部１８０によって各サーバ１００に送信される。
【００９８】
スレーブサーバの配置関係（サーバ１００のエントリの配列）を一意に決定できないと判定された場合、サーバ１００は、指標情報を参照し、次に優先順位が低い指標が存在するか否かを判定する（ステップＳ１１３）。例えば、サーバ１００は、指標情報を参照して、優先順位の値ｎが「２」に設定された指標の情報が存在するか否かを判定する。
【００９９】
次に優先順位が低い指標が存在しないと判定された場合、サーバ１００は、所定の基準にしたがってスレーブサーバの配置関係を決定し、ステップ１１１に進む。例えば、サーバＩＤに基づいてスレーブサーバの配置関係を決定する方法が考えられる。
【０１００】
次に優先順位が低い指標が存在すると判定された場合、サーバ１００は、スレーブサーバの配置関係（サーバ１００のエントリの配列）が一意に決定しないサーバ１００のみを処理対象として設定し、また、優先順位の値ｎに「１」をインクリメントした値を設定し（ステップＳ１１５）、ステップＳ１０７に戻る。
【０１０１】
これによって、スレーブサーバの配置関係（サーバ１００のエントリの配列）が一意に決定しないサーバ１００に対してのみ配列決定処理を実行することができる。
【０１０２】
なお、サーバ１００は、同一の性能管理情報１８１を保持するため、通常、処理結果である構成情報１７１は同一となる。ただし、構成情報１７１が異なる場合、サーバ１００は、他のサーバ１００から受信した構成情報１７１の集計し、同一内容の構成情報１７１の数が一番多いものを優先的に選択する方法が考えられる。
【０１０３】
ここで、本実施例において適用されるスレーブサーバの配置関係（サーバ１００のエントリの配列）のアルゴリズムについて説明する。以下の説明では、優先順位が「１」の指標としてメモリ容量が選択されているものとする。また、メモリ容量が「３ＧＢ」のサーバＡ、メモリ容量が「２ＧＢ」のサーバＢ、メモリ容量が「３ＧＢ」のサーバＣ、メモリ容量が「１ＧＢ」のサーバＤ、メモリ容量が「４ＧＢ」のサーバＥ及びメモリ容量が「２ＧＢ」のサーバＦを例に説明する。
【０１０４】
本実施例では、下り階段型アルゴリズムと山型アルゴリズムの二つがある。
【０１０５】
図８は、本発明の第１の実施例における下り階段型アルゴリズムの一例を示す説明図である。
【０１０６】
下り階段型アルゴリズムでは、性能の高い順（メモリ容量の大きい順）にサーバ１００のエントリが配列される。本実施例では、片側（右側又は左側）のサーバ１００との性能差が小さくなるようにエントリが配置される。
【０１０７】
図８に示す例では、左からメモリ容量の大きい順にサーバ１００のエントリが配列される。具体的には、左から順にサーバＥ、サーバＡ、サーバＣ、サーバＦ、サーバＢ及びサーバＤとエントリが配列される。自身のエントリの右側のサーバ１００が、当該エントリの対応するサーバ１００が管理するマスタデータの複製データを保持するスレーブサーバとなる。また、自身のエントリの左側のサーバが、当該エントリに対応するサーバ１００が保持する複製データのマスタデータを保持するマスタサーバとなる。
【０１０８】
これによって、右側のサーバ１００とのメモリ容量の差が小さくなるため、ＫＶＳ全体としてアクセス性能が非常に高くなる。
【０１０９】
下り階段型アルゴリズムは、第１のサーバの性能と、第１のサーバ１００が管理するマスタデータの複製データを保持する第２のサーバの性能とを考慮したアルゴリズムである。
【０１１０】
より一般的には、識別子がｉ、ｊであるサーバ１００のメモリ容量をＭ［ｉ］、Ｍ［ｊ］と定義した場合、下式（１）が最小となるサーバ１００の組合わせが下り階段型アルゴリズムに対応する。なお、マスタデータを保持するサーバ１００の性能が複製データを保持するサーバ１００の性能以上であることを条件とする。ただし、全てのサーバ１００について前述した条件を満たさなくてもよい。
【数１】
0005964950.tif 000002
ここで、識別子がｊであるサーバ１００が、識別子がｉであるサーバ１００の複製データを保持するスレーブサーバとなる。
【０１１１】
図９は、本発明の第１の実施例における山型アルゴリズムの一例を示す説明図である。
【０１１２】
山型アルゴリズムでは、最も性能の高い（メモリ容量が最大の）サーバ１００のエントリを中心に山型になるようにサーバ１００のエントリが配列される。本実施例では、両側のサーバ１００との性能差が小さくなるようにエントリが配置される。自身のエントリの右側のサーバが、当該エントリに対応するサーバ１００が管理するマスタデータの複製データを保持するスレーブサーバとなる。また、自身のエントリの左側のサーバが、当該エントリの対応するサーバ１００が保持する複製データのマスタデータを保持するマスタサーバとなる。
【０１１３】
図９に示す例では、メモリ容量の大きいサーバ１００を中心に山型にサーバ１００のエントリが配置される。具体的には、左から順にサーバＤ、サーバＦ、サーバＡ、サーバＥ、サーバＣ及びサーバＢとエントリが配列される。
【０１１４】
これによって、両側のサーバ１００とのメモリ容量の差が小さくなり、かつ、メモリ使用効率が高くなる。これは、両隣のメモリ容量の差が小さく、複製データを効率的に格納できるためである。
【０１１５】
山型アルゴリズムは、第１のサーバの性能と、第１のサーバが管理するマスタデータの複製データを保持する第２サーバの性能と、第１のサーバ１００が保持する複製データのマスタデータを管理する第３のサーバの性能とを考慮したアルゴリズムである。
【０１１６】
より一般的には、識別子がｉ、ｊ、ｋであるサーバ１００のメモリ容量をＭ［ｉ］、Ｍ［ｊ］、Ｍ［ｋ］と定義した場合、下式（２）が最小となるサーバ１００の組合わせが山型アルゴリズムに対応する。
【数２】
0005964950.tif 000003
ここで、識別子がｋであるサーバ１００が、識別子がｊであるサーバ１００の複製データを保持するスレーブサーバとなる。また、識別子がｊであるサーバ１００が、識別子がｉであるサーバの複製データを保持するスレーブサーバとなる。
【０１１７】
本実施例では、サーバ１００の性能比に基づいて、各サーバ１００が担当する管理範囲の幅が決定される。これによって、アクセス性能を高め、かつ、メモリ使用効率を高めることができる。
【０１１８】
下り階段型アルゴリズムでは、右側のサーバ１００との性能差（メモリ容量）が小さいため、複製データの容量差も小さくできる。そのため、メモリストア１４０に全ての複製データを格納できる。したがって、メモリストア１４０のみを用いてクライアントからのアクセス処理に対応できる。
【０１１９】
ただし、下り階段型アルゴリズムでは、メモリ容量が最大のサーバ１００が、メモリ容量が最低のサーバの複製データを格納するため、メモリ使用効率が低くなる場合がある。
【０１２０】
一方、山型アルゴリズムでは、両側のサーバ１００との性能差（メモリ容量）が小さいため、下り階段型アルゴリズムのような問題は発生しない。しかし、下り階段型アルゴリズムと比較して、サーバ１００間の性能差が大きくなるため、複製データがディスクストア１３０に格納される場合がある。この場合、アクセス性能は下り階段型アルゴリズムより低くなる。
【０１２１】
本実施例では、サーバ１００は、ユーザによって指定された性能（指標）に基づいて、前述した二つのアルゴリズムを切り替える。すなわち、高いアクセス性能が求められる場合には、サーバ１００は下り階段型アルゴリズムを適用し、アクセス性能及びメモリ使用効率が求められる場合には、サーバ１００は山型アルゴリズムを適用する。
【０１２２】
以下の説明では、下り階段型アルゴリズムを適用したサーバ１００のエントリの配列を下り階段配列と記載し、山型アルゴリズムを適用したサーバ１００のエントリの配列を山型配列と記載する。
【０１２３】
図１０は、本発明の第１の実施例における配置決定処理の詳細を説明するフローチャートである。配列決定処理は、配置管理部１６０によって実行される。
【０１２４】
配置管理部１６０は、性能管理情報１８１のエントリを性能の降順に並べ替える（ステップＳ２０１）。すなわち、下り階段配列にエントリが並び替えられる。
【０１２５】
具体的には、配置管理部１６０は、指標情報の値ｎに対応する指標を特定する。配置管理部１６０は、特定された指標に基づいて、各サーバ１００の性能を比較して、性能の高いサーバ１００のエントリを左から順に並べる。
【０１２６】
なお、使用する指標の値が同一であるエントリがある場合、配置管理部１６０は、他の指標に対応する性能を比較することによってエントリを並べ替える（ステップＳ１１３、ステップＳ１１５）。使用する指標がない場合には、サーバＩＤに基づいて、エントリが並び替えられる。
【０１２７】
次に、配置管理部１６０は、山型アルゴリズムを適用するか否かを判定する（ステップＳ２０３）。具体的には、以下のような処理が実行される。
【０１２８】
配置管理部１６０は、指標情報を参照し、使用する指標としてメモリ容量及び通信速度が選択されているか否かを判定する。
【０１２９】
使用する指標としてメモリ容量及び通信速度が選択されている場合、配置管理部１６０は、山型アルゴリズムを適用すると判定する。
【０１３０】
なお、メモリ容量又は通信速度のいずれか一方のみが使用する指標として選択されている場合、配置管理部１６０は、山型アルゴリズムを適用しないと判定する。
【０１３１】
山型アルゴリズムを適用しないと判定された場合、すなわち、下り階段型アルゴリズムを適用すると判定された場合、配置管理部１６０は、ステップＳ２０７に進む。
【０１３２】
ここでは、ステップＳ２０３において、性能管理情報１８１のエントリは下り階段配列に並び替えられているため、性能管理情報１８１のエントリの順番は変更されない。
【０１３３】
山型アルゴリズムを適用すると判定された場合、配置管理部１６０は、項目の性能に基づいて、性能管理情報１８１のエントリを山型配列に並び替える（ステップＳ２０５）。山型配列の並び替え方法としては、例えば、以下のような方法が考えられる。
【０１３４】
配置管理部１６０は、まず、性能が最大のサーバ１００に対応する第１のエントリの配置を決定する。例えば、性能管理情報１８１の中央に第１のエントリを配置する方法が考えられる。
【０１３５】
配置管理部１６０は、次に性能が高いサーバ１００に対応する第２のエントリを検索し、第１のエントリの左側に第２のエントリを配置する。配置管理部１６０は、次に性能が高いサーバ１００に対応する第３のエントリを検索し、第１のエントリの右側に第３のエントリを配置する。以下、配置管理部１６０は、偶数番目のエントリを第１のエントリの左側に順に配置し、奇数番目のエントリを第１のエントリの右側に順に配置する。
【０１３６】
配置管理部１６０は、全てのエントリに対して前述した手順を実行することによって、山型配列に性能管理情報１８１のエントリを並び替えることができる。
【０１３７】
なお、前述の配列方法は一例であって、本発明はこれに限定されない。両側のサーバ１００の性能差が小さくなるように配置できれば、どのような方法であってもよい。
【０１３８】
配置管理部１６０は、性能管理情報１８１に基づいて、各サーバ１００が担当する管理範囲の幅を決定する（ステップＳ２０７）。
【０１３９】
例えば、メモリ容量の比に基づいて、サーバ１００の管理範囲の幅を決定する方法が考えられる。
【０１４０】
配置管理部１６０は、処理結果に基づいてクラスタを構成し、処理を終了する（ステップＳ２０９）。具体的には、以下のような処理が実行される。
【０１４１】
配置管理部１６０は、性能管理情報１８１のエントリの順番に基づいて、各サーバ１００に対するスレーブサーバを設定する。本実施例では、所定のエントリの右側のエントリに対応するサーバ１００がスレーブサーバとして設定される。
【０１４２】
また、配置管理部１６０は、決定された管理範囲の幅に基づいて分散アルゴリズムを適用し、サーバ１００が担当する管理範囲を決定する。
【０１４３】
なお、配置決定処理では、処理の一貫性が保たれれば処理の順番を変更してもよい。例えば、配置管理部１６０は、ステップＳ２０３の処理を実行し、山型アルゴリズムを適用しない場合にはステップＳ２０１の処理を実行し、山型アルゴリズムを適用する場合にはステップＳ２０５の処理を実行してもよい。
【０１４４】
また、配置管理部１６０は、サーバ１００が担当する管理範囲の幅、及び決定されたスレーブサーバの配置関係に基づいて、構成情報１７１を生成する。生成された構成情報１７１は構成情報管理部１７０に出力される。
【０１４５】
ここで、具体的な例を用いて本発明の実施例について説明する。
【０１４６】
以下の説明では、メモリ容量が指標として選択されたものとする。また、計算システムには、サーバＡ、サーバＢ、サーバＣ、サーバＤ及びサーバＥが含まれるものとする。また、サーバＡのメモリ容量を「３ＧＢ」、サーバＢのメモリ容量を「２ＧＢ」、サーバＣのメモリ容量を「３ＧＢ」、サーバＤのメモリ容量を「１ＧＢ」、サーバＥのメモリ容量を「４ＧＢ」とする。
【０１４７】
まず、図１１Ａ、図１１Ｂ及び図１１Ｃを用いて下り階段型アルゴリズムを適用した場合の配列決定処理の具体例について説明する。なお、説明の簡単のため、スペック６０２にはメモリ容量のみを記載する。
【０１４８】
ステップＳ２０１において、配置管理部１６０は、メモリ容量に基づいて、下り階段配列に性能管理情報１８１のエントリを並び替える。その結果、図１１Ａから図１１Ｂに示すように性能管理情報１８１のエントリが並び替えられる。
【０１４９】
ここで、サーバＡ及びサーバＣのメモリ容量は同一であるため、配置管理部１６０は、サーバＩＤのアルファベット順にサーバＡ及びサーバＣのエントリを並び替える。
【０１５０】
ステップＳ２０７において、配置管理部１６０は、メモリ容量に基づいて、各サーバ１００が担当する管理範囲の幅を決定する。
【０１５１】
具体的には、配置管理部１６０は、全エントリのメモリ容量の合計値を算出する。図１１Ｂに示す例では、合計値は「１３ＧＢ」と算出される。次に、配置管理部１６０は、合計値を分母に、自己のメモリ容量の値を分子に設定する。当該分数は、データ範囲における管理範囲の比率を示す値である。
【０１５２】
ステップＳ２０７の処理の結果、図１１Ｃに示すように性能管理情報１８１が更新される。
【０１５３】
ステップＳ２０９では、配置管理部１６０は、サーバ１００が担当する管理範囲を決定し、また、複製データを保持するサーバ１００を設定することによってクラスタを構成する。具体的には、以下のような処理を実行する。
【０１５４】
配置管理部１６０は、全データ範囲を１３等分し、サーバＥ、サーバＡ、サーバＣ、サーバＢ及びサーバＤの管理範囲の幅を「４：３：３：２：１」の比率に決定する。配置管理部１６０は、決定された管理範囲の幅に基づいて分散アルゴリズムを適用することによって、各サーバの管理範囲のハッシュ値を決定する。
【０１５５】
また、配置管理部１６０は、サーバＥの複製データをサーバＡが、サーバＡの複製データをサーバＣが、サーバＣの複製データをサーバＢが、サーバＢの複製データをサーバＤが、さらに、サーバＤの複製データをサーバＥが保持するように設定する。
【０１５６】
以上の処理によって、構成情報１７１を生成することができる。
【０１５７】
次に、図１２Ａ、図１２Ｂ及び図１２Ｃを用いて山型アルゴリズムを適用した場合の配列決定処理の具体例について説明する。
【０１５８】
ステップＳ２０１において、配置管理部１６０は、メモリ容量に基づいて、下り階段配列に性能管理情報１８１のエントリを並び替える。その結果、図１２Ａから図１１Ｂに示すように性能管理情報１８１のエントリが並び替えられる。
【０１５９】
ステップＳ２０５において、配置管理部１６０は、山型配列に性能管理情報１８１のエントリを並び替える。その結果、図１２Ｂに示すような性能管理情報１８１のエントリが並び替えられる。
【０１６０】
ステップＳ２０７において、配置管理部１６０は、メモリ容量に基づいて、各サーバ１００が担当する管理範囲の幅を決定する。管理範囲の幅の決定方法は、下り階段型アルゴリズムの場合と同一のものを用いる。
【０１６１】
ステップＳ２０７の処理の結果、図１２Ｃに示すように性能管理情報１８１が更新される。
【０１６２】
ステップＳ２０９では、配置管理部１６０は、サーバ１００が担当する管理範囲を決定し、また、複製データを保持するサーバ１００を設定することによってクラスタを構成する。具体的には、以下のような処理を実行する。
【０１６３】
配置管理部１６０は、全データ範囲を１３等分し、サーバＤ、サーバＡ、サーバＥ、サーバＣ及びサーバＢの管理範囲の幅を「１：３：４：３：２」の比率に決定する。配置管理部１６０は、決定された管理範囲の幅に基づいて分散アルゴリズムを適用することによって、各サーバの管理範囲のハッシュ値を決定する。
【０１６４】
また、配置管理部１６０は、サーバＤの複製データをサーバＡが、サーバＡの複製データをサーバＥが、サーバＥの複製データをサーバＣが、サーバＣの複製データをサーバＢが、さらに、サーバＢの複製データをサーバＤが保持するように設定する。
【０１６５】
以上の処理によって、構成情報１７１を生成することができる。
【０１６６】
本実施例の配置管理部１６０は、さらに、配列決定処理が終了すると、配列決定処理の結果を表示するための表示情報を生成し、サーバ１００又はクライアント２００に確認画面を表示する。
【０１６７】
図１３Ａ及び図１３Ｂは、本発明の第１の実施例における確認画面９００の一例を示す説明図である。
【０１６８】
図１３Ａは、下り階段型アルゴリズムを適用した配列決定処理の結果を表示する確認画面９００を示す。図１３Ｂは、山型アルゴリズムを適用した配列決定処理の結果を表示する確認画面９００を示す。
【０１６９】
確認画面９００は、サーバＩＤ９１１、Ｐｏｓｉｔｉｏｎ９１２、メモリ容量９１３、プロセッサ９１４及び通信速度９１５を表示する。
【０１７０】
サーバＩＤ９１１は、サーバ１００を一意に識別するための識別子を表示する。Ｐｏｓｉｔｉｏｎ９１２は、サーバ１００が担当する管理範囲の幅を表す情報を表示する。本実施例では、データ範囲の先頭から、決定された管理範囲の幅だけデータが割り当てられるものとする。なお、管理範囲を示す値を表示してもよい。
【０１７１】
メモリ容量９１３は、サーバＩＤ９１１に対応するサーバ１００が有するメモリ１０２の容量に関する情報を表示する。本実施例では、メモリ容量を指標とした下り階段型アルゴリズムを適用しているため、メモリ容量９１３には、メモリ容量が下り階段状になるようにエントリが配列されていることを示すアイコンが表示される。
【０１７２】
プロセッサ９１４は、サーバＩＤ９１１に対応するサーバ１００が有するプロセッサ１０１の性能に関する情報を表示し、通信速度９１５は、サーバＩＤ９１１に対応するサーバ１００が有するネットワークインタフェースの性能に関する情報を表示する。
【０１７３】
なお、確認画面９００に表示される情報は一例であって、記憶装置１０５の容量、プロセッサ１０１の使用率及びプロセッサ１０１の負荷等を表示してもよい。
【０１７４】
なお、本実施例では、一つのマスタデータに対して一つのスレーブサーバを選択する場合を説明したが、一つのマスタデータに対して複数のスレーブサーバを選択する場合であっても同様のアルゴリズムを適用できる。
【０１７５】
例えば、一つのマスタデータに対して二つのスレーブサーバを選択する場合、下り階段型アルゴリズム又は山型アルゴリズムの何れの場合であっても、一つのスレーブサーバを決定した後、当該決定されたスレーブサーバをマスタサーバとみなして同一の配置決定処理をすればよい。
【０１７６】
（変形例）
【０１７７】
山型アルゴリズムでは、さらに、アクセス速度及びメモリ使用効率の優先順位に基づいて、異なる形状の山型配列に並び替える方法がある。以下、ステップＳ２０５の処理の変形例について説明する。
【０１７８】
図１４は、本発明の第１の実施例の変形例における山型配列処理を説明するフローチャートである。
【０１７９】
配置管理部１６０は、指標情報を参照し、アクセス速度の優先順位とメモリ容量の優先順位とを比較する（ステップＳ４０１）。
【０１８０】
配置管理部１６０は、比較の結果、アクセス速度の優先順位がメモリ容量の優先順位より高いか否かを判定する（ステップＳ４０３）。すなわち、メモリ容量より通信速度を重要とするか否かが判定される。
【０１８１】
アクセス速度の優先順位がメモリ容量の優先順位より高いと判定された場合、配置管理部１６０は、性能管理情報１８１における第１のエントリの配置位置を中心から所定範囲左の位置に決定する（ステップＳ４０５）。例えば、エントリ三つ分左側にずらして第１のエントリを配置する方法が考えられる。なお、第１のエントリは、性能が最大のサーバ１００に対応する。
【０１８２】
アクセス速度の優先順位がメモリ容量の優先順位より低いと判定された場合、配置管理部１６０は、性能管理情報１８１における第１のエントリの配置位置を中心から所定範囲右の位置に決定し（ステップＳ４０９）、ステップＳ４０７に進む。例えば、エントリ三つ分右側にずらして第１のエントリを配置する方法が考えられる。
【０１８３】
配置管理部１６０は、第２のエントリを含むその他のエントリの配置を決定し（ステップＳ４０７）、処理を終了する。第２のエントリを含むその他のエントリの配置の決定方法は、第１の実施例と同一である。
【第２の実施例】
【０１８４】
第２の実施例では、クラスタの運用中に、サーバ１００が追加又は削除された場合の処理について説明する。以下、第１の実施例との差異を中心に説明する。
【０１８５】
計算機システムの構成、サーバ１００及びクライアント２００の構成は第１の実施例と同一であるため説明を省略する。
【０１８６】
図１５は、本発明の第２の実施例におけるクラスタ構成変更処理を説明するフローチャートである。
【０１８７】
サーバ１００は、計算機システムの構成の変更を検出したか否かを判定する（ステップＳ５０１）。例えば、クライアント２００からサーバ１００の追加又は削除指示を受け付けた場合、サーバ１００は、計算機システムの構成変更を検出したと判定する。
【０１８８】
計算機システムの構成の変更を検出していないと判定された場合、サーバ１００は、ステップＳ５０１に戻り、計算機システムの構成が変更されるまで待ち続ける。
【０１８９】
計算機システムの構成の変更を検出したと判定された場合、サーバ１００は、新規サーバ１００が追加されたか否かを判定する（ステップＳ５０３）。
【０１９０】
新規サーバ１００が追加されたと判定された場合、サーバ１００は、新規サーバ１００の性能情報を取得し、新規サーバ１００に対する配置決定処理を実行する（ステップＳ５０５、ステップＳ５０７）。
【０１９１】
このとき、サーバ１００は、取得された新規サーバ１００の性能情報に基づいて、配置決定処理を実行することによって性能管理情報１８１を更新する。具体的には、性能管理情報１８１に、新規サーバ１００に対応するエントリを追加する。具体的な、配置決定処理の詳細は、図１６Ａ及び図１６Ｂを用いて後述する。
【０１９２】
サーバ１００は、クラスタの構成を更新し、処理を終了する（ステップＳ５０９）。具体的には、サーバ１００は、更新された性能管理情報１８１に基づいて、構成情報１７１を更新する。
【０１９３】
ステップＳ５０３において、新規サーバ１００が追加されていない、すなわち、サーバ１００の削除であると判定された場合、サーバ１００は、削除対象のサーバ１００の停止を確認する（ステップＳ５１１）。具体的には、情報共有部１８０が、削除対象のサーバ１００の停止を検出する。
【０１９４】
サーバ１００は、性能管理情報１８１から削除対象のサーバ１００に対応するエントリを削除する（ステップＳ５１３）。
【０１９５】
サーバ１００は、クラスタの構成を更新し、処理を終了する（ステップＳ５０９）。
【０１９６】
図１６Ａ及び図１６Ｂは、本発明の第２の実施例における新規サーバ１００の配置決定処理を説明するフローチャートである。
【０１９７】
以下の説明では、性能管理情報１８１に左から「１」から「ｎ」までの識別番号ｉが付与されているものとする。また、ｉ番目のエントリのメモリ容量をＭ［ｉ］と記載し、また、新規サーバ１００のメモリ容量をａと記載する。
【０１９８】
配置管理部１６０は、性能管理情報１８１を参照し、山型アルゴリズムが適用された配列であるか否かを判定する（ステップＳ６０１）。
【０１９９】
山型アルゴリズムが適用された配列でない、すなわち、下り階段型アルゴリズムが適用された配列であると判定された場合、配置管理部１６０は、識別番号ｉを「１」に設定する（ステップＳ６０３）。
【０２００】
次に、配置管理部１６０は、新規サーバ１００のメモリ容量が、ｉ番目のエントリに対応するサーバ１００のメモリ容量以上であるか否かを判定する（ステップＳ６０５）。
【０２０１】
ステップＳ６０５の条件を満たさない場合、配置管理部１６０は、識別番号ｉを「１」加算してステップＳ６０５に戻り、同様の処理を実行する（ステップＳ６０９）。
【０２０２】
ステップＳ６０５の条件を満たすと判定された場合、配置管理部１６０は、新規サーバ１００のエントリの配列を決定し、性能管理情報を更新する（ステップＳ６１１）。
【０２０３】
具体的には、配置管理部１６０は、メモリ容量Ｍ［ｉ］であるサーバ１００の左側に新規サーバ１００のエントリを追加することによって、性能管理情報１８１を更新する。ここで、性能管理情報１８１の更新方法の一例について説明する。
【０２０４】
図１７は、本発明の第２の実施例における性能管理情報１８１の更新方法の一例を示す説明図である。
【０２０５】
図１７の（ａ）は、更新前の性能管理情報１８１を示す図である。図１７の（ｂ）は、更新後の性能管理情報１８１である。
【０２０６】
ここで、新規サーバ１００のサーバＩＤを「サーバＦ」とし、また、メモリ容量を「２ＧＢ」とする。このとき、配置管理部１６０は、図１７の（ａ）に示すような形式の性能情報１０００に基づいて、性能管理情報１８１の各エントリについて比較処理を実行する。
【０２０７】
ステップ６０５及びステップＳ６０７において、新規サーバＦとサーバＥとの比較処理の結果、ステップＳ６０５の条件を満たさないと判定される。サーバＡ及びサーバＣについても同様の結果となる。サーバＢとの比較処理の結果、ステップＳ６０５の条件を満たすため、配置管理部１６０は、新規サーバＦのエントリの配置をサーバＢの左側に決定する。その結果、図１７の（ｂ）に示すような性能管理情報１８１に更新される。
【０２０８】
なお、図１６Ａに示す、下り階段型アルゴリズムにおける新規サーバ１００の追加方法は一例であって、例えば、メモリ容量の小さいサーバ１００から順に比較する方法などでもよい。
【０２０９】
図１６の説明に戻る。
【０２１０】
ステップＳ６０１において、山型アルゴリズムが適用された配列であると判定された場合、配置管理部１６０は、新規サーバ１００のメモリ容量が、計算機システムにおけるメモリ容量の最大値以上であるか否かを判定する（ステップＳ６１１）。
【０２１１】
ステップＳ６１１の条件を満たさないと判定された場合、配置管理部１６０は、新規サーバ１００のメモリ容量が、計算機システムにおけるメモリ容量の最小値以下であるか否かを判定する（ステップＳ６１３）。
【０２１２】
ステップＳ６１３の条件を満たさないと判定された場合、配置管理部１６０は、山型配列の頂上を起点に、メモリ容量が新規サーバ１００のメモリ以下であるサーバ１００を検索する（ステップＳ６１５）。検索されたサーバ１００を処理対象サーバ１００と記載する。
【０２１３】
なお、山型アルゴリズムでは、ステップＳ６１５の条件を満たすエントリが山型配列の頂点の右側及び左側に一つずつ存在する。そのため、右側の処理対象サーバ１００を第１の処理対象サーバ１００と記載し、左側の処理対象サーバ１００を第２の処理対象サーバ１００と記載する。
【０２１４】
配置管理部１６０は、第１の処理対象サーバ１００と新規サーバ１００とのメモリ差（第１のメモリ差）、及び、新規サーバ１００と第１の処理対象サーバ１００の一つ左隣のサーバ１００とのメモリ差（第２のメモリ差）を算出する（ステップＳ６１７）。ここでは、各サーバ１００のメモリ差の絶対値を算出するものとする。
【０２１５】
また、配置管理部１６０は、第２の処理対象サーバ１００と新規サーバ１００とのメモリ差（第３のメモリ差）、及び、新規サーバ１００と第２の処理対象サーバ１００の一つ右隣のサーバ１００とのメモリ差（第４のメモリ差）を算出する（ステップＳ６１９）。ここでは、各サーバ１００のメモリ差の絶対値を算出するものとする。
【０２１６】
配置管理部１６０は、第１のメモリ差と第２のメモリ差との合計値が、第３のメモリ差と第４のメモリ差との合計値以上であるか否かを判定する（ステップＳ６２１）。
【０２１７】
ステップＳ６２１の条件を満たすと判定された場合、配置管理部１６０は、第１の処理対象サーバ１００の左に新規サーバ１００を配置し、処理を終了する（ステップＳ６２３）。
【０２１８】
ステップＳ６２１の条件を満たさないと判定された場合、配置管理部１６０は、第２の処理対象サーバ１００の右に新規サーバ１００を配置し、処理を終了する（ステップＳ６２５）。
【０２１９】
ステップＳ６１１において、ステップＳ６１１の条件を満たすと判定された場合、配置管理部１６０は、ステップＳ６１７に進む。
【０２２０】
計算機システム内においてメモリ容量が最大であるサーバ１００が複数ある場合、識別番号ｉが一番小さいエントリに対応するサーバを第２の処理対象サーバ１００とし、識別番号ｉが一番大きいエントリに対応するサーバを第１の処理対象サーバ１００とする。
【０２２１】
なお、計算機システム内においてメモリ容量が最大であるサーバ１００が一つだけである場合、第１の処理対象サーバ１００と第２の処理対象サーバ１００とは同一のものになる。
【０２２２】
ステップＳ６１７以下の処理は同一であるため説明を省略する。
【０２２３】
ステップＳ６１３において、ステップＳ６１３の条件を満たすと判定された場合、配置管理部１６０は、ステップＳ６１７に進む。
【０２２４】
計算機システム内においてメモリ容量が最小であるサーバ１００が複数ある場合、識別番号ｉが一番小さいものを第２の処理対象サーバ１００とし、識別番号ｉが一番大きいものを第１の処理対象サーバ１００とする。
【０２２５】
ステップＳ６１７以下の処理は同一であるため説明を省略する。
【０２２６】
図１８は、本発明の第２の実施例における性能管理情報１８１の更新方法の一例を示す説明図である。
【０２２７】
図１８の（ａ）は、更新前の性能管理情報１８１を示す図である。図１８の（ｂ）は、更新後の性能管理情報１８１である。
【０２２８】
ここで、新規サーバ１００のサーバＩＤを「サーバＦ」とし、また、メモリ容量を「２ＧＢ」とする。このとき、配置管理部１６０は、図１８の（ａ）に示すような形式の性能情報１１００に基づいて、ステップＳ６１１〜ステップＳ６２５の処理を実行する。
【０２２９】
ステップＳ６１１及びステップＳ６１３の条件を満たさないため、配置管理部１６０は、ステップＳ６１５に進む。
【０２３０】
ステップＳ６１５において、新規サーバＦのメモリ以下のサーバ１００として、サーバＢ及びサーバＤが検索される。ここでは、サーバＤが第２の処理対象サーバ１００となり、サーバＢが第１の処理対象サーバ１００となる。
【０２３１】
ステップＳ６２１では、第１のメモリ差と第２のメモリ差との合計値が「１ＧＢ」となり、第３のメモリ差と第４のメモリ差との合計値が「２ＧＢ」となるため、ステップＳ６２１の条件を満たさないと判定される。
【０２３２】
したがって、配置管理部１６０は、サーバＦの配置をサーバＤの右側に決定する。その結果図１８の（ｂ）に示すような性能管理情報１８１に更新される。
【０２３３】
本発明の一形態によれば、サーバ１００間の性能差を考慮して、分散ＫＶＳを最適に構築することができる。具体的には、マスタサーバとスレーブサーバとの性能差が小さくなるようにスレーブサーバを設定でき、また、マスタサーバが担当する管理範囲の幅（複製データのデータ量）も最適に設定することができる。また、サーバ１００が追加又は削除された場合も、動的に、スレーブサーバの配置関係及び管理範囲の幅を設定することができる。
【０２３４】
なお、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【０２３５】
さらに、本実施例では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
【０２３６】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【図１】
0005964950.tif 000004
【図２】
0005964950.tif 000005
【図３】
0005964950.tif 000006
【図４】
0005964950.tif 000007
【図５】
0005964950.tif 000008
【図６】
0005964950.tif 000009
【図７】
0005964950.tif 000010
【図８】
0005964950.tif 000011
【図９】
0005964950.tif 000012
【図１０】
0005964950.tif 000013
【図１１Ａ】
0005964950.tif 000014
【図１１Ｂ】
0005964950.tif 000015
【図１１Ｃ】
0005964950.tif 000016
【図１２Ａ】
0005964950.tif 000017
【図１２Ｂ】
0005964950.tif 000018
【図１２Ｃ】
0005964950.tif 000019
【図１３Ａ】
0005964950.tif 000020
【図１３Ｂ】
0005964950.tif 000021
【図１４】
0005964950.tif 000022
【図１５】
0005964950.tif 000023
【図１６Ａ】
0005964950.tif 000024
【図１６Ｂ】
0005964950.tif 000025
【図１７】
0005964950.tif 000026
【図１８】
0005964950.tif 000027