(57)【要約】  システムの負荷に応じて、動的にデータの配置方法を変更してシステムの性能を保証する計算機システムを実現する。  ネットワークを介して複数の計算機が接続され、各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、各計算機には、データを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、計算機システムは、各計算機における負荷に関する負荷情報を管理する負荷情報管理部と、負荷情報に基づいて分散アルゴリズムを切り替えるアルゴリズム管理部と、切り替えられた分散アルゴリズムに基づいて各計算機に格納されるデータを再配置する再配置処理部と、を有する。
2013073020.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、
前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記データベースを構成する前記各計算機には、前記各計算機にデータを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、
前記計算機システムは、
前記データベースを構成する各計算機における負荷に関する負荷情報を管理する負荷情報管理部と、
前記負荷情報に基づいて前記計算機システムにおける前記分散アルゴリズムを切り替えるアルゴリズム管理部と、
切り替えられた前記分散アルゴリズムに基づいて前記各計算機に格納されるデータを再配置する再配置処理部と、を有することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記データベースには、キー及びデータ値から構成される前記データが格納され、
前記分散アルゴリズムは、前記キーの範囲を示す管理範囲を決定するためのアルゴリズムであり、
前記再配置処理部は、
前記分散アルゴリズムが切り替えられた後に、第１計算機が第１データに対するアクセス要求を受信した場合に、前記切り替えられた後の前記分散アルゴリズムに基づいて、第１データが前記第１計算機の前記管理範囲に含まれるか否かを判定し、
前記第１データが前記第１計算機の管理範囲に含まれていると判定された場合、前記第１データが前記第１計算機に格納されているか否かを判定し、
前記第１データが前記第１計算機に格納されていない場合に、前記第１データを格納する他の前記計算機から前記第１データを取得することを特徴とする計算機システム。
【請求項３】
請求項１又は請求項２に記載の計算機システムであって、
前記アルゴリズム管理部は、前記データベースを構成する計算機の負荷が所定の閾値以上又は前記データベースを構成する計算機の負荷が所定の閾値以下の場合に、前記分散アルゴリズムを切り替えることを特徴とする計算機システム。
【請求項４】
請求項２又は請求項３に記載の計算機システムであって、
前記データベースを構成する計算機の負荷が所定の閾値以上であると判定され、第１分散アルゴリズムから第２分散アルゴリズムに切り替えられた後に、前記データベースを構成する計算機の負荷が所定の閾値以下であると判定された場合に、前記アルゴリズム管理部は、前記第２分散アルゴリズムから前記第１分散アルゴリズムに切り替えることを特徴とする計算機システム。
【請求項５】
請求項３又は請求項４に記載の計算機システムであって、
前記データベースを構成する計算機の負荷は、前記計算機に対するアクセス数又は前記計算機における前記メモリの使用量の少なくともいずれかであることを特徴とする計算機システム。
【請求項６】
請求項２から請求項４のいずれか一つに記載の計算機システムであって、
前記再配置処理部は、
前記第１データの複製データを取得し、
前記取得された第１データの複製データを前記第１計算機に格納することによって前記データを再配置することを特徴とする計算機システム。
【請求項７】
請求項２から請求項４のいずれか一つに記載の計算機システムであって、
前記再配置処理部は、
前記第１データを取得し、
前記取得された第１データを前記第１計算機に格納し、
前記第１データを格納する他の前記計算機から前記第１データを削除することによって前記データを再配置することを特徴とする計算機システム。
【請求項８】
請求項２から請求項４のいずれか一つに記載の計算機システムであって、
前記管理範囲は、前記計算機が管理するデータの範囲である第１管理範囲と、前記他の計算機が管理するデータの複製データの範囲である第２管理範囲とを含み、
前記データベースを構成する計算機は、前記第１管理範囲に含まれる前記データと、前記第２管理範囲に含まれる前記複製データとを格納し、
前記再配置処理部は、
前記第１計算機が前記第１データの前記複製データを保持するか否かを判定し、
前記第１計算機が前記第１データの複製データを保持していないと判定された場合に、前記第１データを前記第１計算機に再配置することを特徴とする計算機システム。
【請求項９】
請求項２から請求項４のいずれか一つに記載の計算機システムであって、
前記アルゴリズム管理部は、
前記データベースを構成する計算機のうち、負荷が低い計算機を特定し、
前記特定された計算機が前記データの配置先となるように前記分散アルゴリズムを選択し、
前記選択された分散アルゴリズムに切り替えることを特徴とする計算機システム。
【請求項１０】
請求項２から請求項４のいずれか一つに記載の計算機システムであって、
前記再配置処理部は、前記再配置されたデータの識別子、前記再配置前に前記データが格納されていた前記計算機の識別子、前記再配置後に前記データが格納された前記計算機の識別子及び前記データが再配置された時刻を含む履歴表示情報を生成することを特徴とする計算機システム。
【請求項１１】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムにおけるデータ管理方法であって、
前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記データベースを構成する前記各計算機には、前記各計算機にデータを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、
前記方法は、
前記計算機が、前記データベースを構成する各計算機における負荷に関する負荷情報を取得する第１のステップと、
前記計算機が、前記取得された負荷情報に基づいて前記計算機システムにおける前記分散アルゴリズムを切り替える第２のステップと、
前記計算機が、切り替えられた前記分散アルゴリズムに基づいて前記各計算機に格納されるデータを再配置する第３のステップと、を備えることを特徴とするデータ管理方法。
【請求項１２】
請求項１１に記載のデータ管理方法であって、
前記データベースには、キー及びデータ値から構成される前記データが格納され、
前記分散アルゴリズムは、前記キーの範囲を示す管理範囲を決定するためのアルゴリズムであり、
前記第３のステップは、
前記分散アルゴリズムが切り替えられた後に、第１計算機が第１データに対するアクセス要求を受信した場合に、前記切り替えられた後の前記分散アルゴリズムに基づいて、第１データが前記第１計算機の前記管理範囲に含まれるか否かを判定するステップと、
前記第１データが前記第１計算機の管理範囲に含まれていると判定された場合、前記第１データが前記第１計算機に格納されているか否かを判定するステップと、
前記第１データが前記第１計算機に格納されていない場合に、前記第１データを格納する他の前記計算機から前記第１データを取得するステップと、を含むことを特徴とするデータ管理方法。
【請求項１３】
請求項１１又は請求項１２に記載のデータ管理方法であって、
前記前記第３のステップでは、前記データベースを構成する計算機の負荷が所定の閾値以上又は前記データベースを構成する計算機の負荷が所定の閾値以下の場合に、前記分散アルゴリズムを切り替えることを特徴とするデータ管理方法。
【請求項１４】
請求項１２又は請求項１３に記載のデータ管理方法であって、
前記方法は、さらに、
前記データベースを構成する計算機の負荷が所定の閾値以上であると判定され、第１分散アルゴリズムから第２分散アルゴリズムに切り替えられた後に、前記データベースを構成する計算機の負荷が所定の閾値以下であると判定された場合に、前記計算機が、前記第２分散アルゴリズムから前記第１分散アルゴリズムに切り替えるステップを含むことを特徴とするデータ管理方法。
【請求項１５】
請求項１３又は請求項１４に記載のデータ管理方法であって、
前記データベースを構成する計算機の負荷は、前記計算機に対するアクセス数又は前記計算機における前記メモリの使用量の少なくともいずれかであることを特徴とするデータ管理方法。
【請求項１６】
請求項１２から請求項１４のいずれか一つに記載のデータ管理方法であって、
前記第３のステップは、
前記第１データの複製データを取得するステップと、
前記取得された第１データの複製データを前記第１計算機に格納するステップと、を含むことを特徴とするデータ管理方法。
【請求項１７】
請求項１２から請求項１４のいずれか一つに記載のデータ管理方法であって、
前記第３のステップは、
前記第１データを取得するステップと、
前記取得された第１データを前記第１計算機に格納するステップと、
前記第１データを格納する他の前記計算機から前記第１データを削除するステップと、を含むことを特徴とするデータ管理方法。
【請求項１８】
請求項１２から請求項１４のいずれか一つに記載のデータ管理方法であって、
前記管理範囲は、前記計算機が管理するデータの範囲である第１管理範囲と、前記他の計算機が管理するデータの複製データの範囲である第２管理範囲とを含み、
前記データベースを構成する計算機は、前記第１管理範囲に含まれる前記データと、前記第２管理範囲に含まれる前記複製データとを格納し、
前記第３のステップは、
前記第１計算機が前記第１データの前記複製データを保持するか否かを判定するステップと、
前記第１計算機が前記第１データの複製データを保持していないと判定された場合に、前記第１計算機に再配置するステップと、を含むことを特徴とするデータ管理方法。
【請求項１９】
請求項１２から請求項１４のいずれか一つに記載のデータ管理方法であって、
前記第２のステップは、
前記データベースを構成する計算機のうち、負荷が低い計算機を特定するステップと、
前記特定された計算機が前記データの配置先となるように前記分散アルゴリズムを選択するステップと、
前記選択された分散アルゴリズムに切り替えるステップと、を含むことを特徴とするデータ管理方法。
【請求項２０】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムに含まれる前記計算機が実行するプログラムであって、
前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記データベースを構成する前記各計算機には、前記各計算機にデータを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、
前記プログラムは、
前記データベースを構成する各計算機における負荷に関する負荷情報を取得する手順と、
前記取得された負荷情報に基づいて前記計算機システムにおける前記分散アルゴリズムを切り替える手順と、
切り替えられた前記分散アルゴリズムに基づいて前記各計算機に格納されるデータを再配置する手順と、を前記計算機に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機から構成される分散データベースに関する。特に、データの分散配置処理に関する。
【背景技術】
【０００２】
近年、Ｗｅｂを用いたアプリケーションを実行する計算システムにおいてデータ量が爆発的に増大しており、複数の計算機にデータを分散させることによって、データへのアクセス性能を向上させるシステムが様々知られている。例えば、ＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）では、データを所定の範囲毎に分割し、分割されたデータを複数の計算機に配置することによって、システム全体のアクセス性能を向上させる方法が知られている。【０００３】
また、キャッシュサーバ等に用いられるシステムとして、データの識別子であるキーと、データ値（バリュー）とから構成されるキャッシュデータを所定の分散方法にしたがって、複数の計算機システムに配置するＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）等のＮｏＳＱＬ（Ｎｏｔ  ｏｎｌｙ  ＳＱＬ）データベースが知られている。【０００４】
ＫＶＳでは、データに高速にアクセス可能な揮発性の記憶媒体、例えばメモリに、データを格納する構成、データ格納の永続性に優れる不揮発性の記録媒体、例えばＳＳＤ（Ｓｏｒｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）やＨＤＤ等に、データを格納する構成、又は、前述したものを併用する構成等の種々の構成がとられている。【０００５】
併用する構成では、高速アクセス性重視や格納性重視等の種々の運用方針によって、複数台の計算機のメモリを統合して構成されるメモリストア及び１台以上の計算機の不揮発性記憶媒体から構成されるディスクストアのバランスを種々変更可能となっている。【０００６】
メモリストア及びディスクストアには、データ（バリュー）と、データの識別子（キー）とをペアとしたデータが格納される。【０００７】
また、ＫＶＳでは、複数のサーバからクラスタを構成して、そのクラスタに含まれるサーバにデータを分散して配置することによって並列処理を実現している。具体的には、サーバが管理するデータの範囲である管理範囲（例えば、キーレンジ）毎に、各サーバにデータが格納される。各サーバは、担当する管理範囲に含まれるデータのマスタとして処理を実行する。すなわち、所定のキーを含む読み出し要求に対して、そのキーが含まれる管理範囲のデータを担当するサーバが、キーに対応するデータを読み出すこととなる。【０００８】
したがって、ＫＶＳでは、スケールアウトによって並列処理の性能を向上させることができる。【０００９】
ＫＶＳでは、データの信頼性を確保するために、クラスタを構成するサーバが他のサーバが管理するデータの複製データを格納する構成を採るものが知られている。すなわち、各サーバは、所定の管理範囲に含まれるデータを管理するマスタであると同時に、他のサーバが管理するデータの複製データを保持するスレーブでもある。これによって、サーバに障害が発生した場合であっても、その障害サーバがマスタとして管理するデータを、スレーブである他のサーバが、自己が保持する複製データをマスタデータとすることによって処理を継続することができる。【００１０】
なお、以下、マスタであるサーバをマスタサーバと記載し、スレーブであるサーバをスレーブサーバとも記載する。【００１１】
前述したようにＫＶＳを構成するサーバには、管理サーバのような特別なサーバが存在しないため単一点障害が存在しない。すなわち、任意のサーバに障害が発生した場合であっても他のサーバが処理を継続できるため、計算機システムが停止することがない。したがって、ＫＶＳは耐障害性も確保される。【００１２】
なお、スレーブサーバの台数、すなわち、複製データの格納先となるサーバの台数は、計算機システムによって任意に設定することができる。【００１３】
ＫＶＳなどで用いられるデータを配置方法としては、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法、Ｒａｎｇｅ法及びＬｉｓｔ法等の種々の方法が用いられる。代表してＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法について説明する。Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法は、まず、キーに対するハッシュ値を算出し、算出したハッシュ値をサーバの台数で除算した余りを算出する。その余りがサーバの識別番号に一致するサーバにデータが配置されるようになっている。【００１４】
前述したシステムは、アクセス性能の向上を図るためのシステムである。しかし、特定のデータに対するアクセスが集中すると、特定のデータを管理する計算機に負荷が生じ、システム全体としてアクセス性能が低下するという問題がある。そのため、計算機の追加、システムのスケールイン又はスケールアウト等によって、前述したようなアクセス性能の低下を解決する方法が知られている（例えば、特許文献１参照）。【００１５】
特許文献１には、計算機リソースの使用状況やアクセス分布などにしたがってデータベースの分割条件を設定しておき、分割条件にしたがってデータの再配置を行うことが記載されている。【００１６】
また、クラスタに新たなサーバを追加することによって、負荷が集中している管理範囲を分割することによって、アクセス性能の低下を抑制する技術も知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開平６−２５９４７８号公報
【特許文献２】特開２０１１−１１８５２５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかし、特許文献１及び特許文献２に記載の技術では、一時的にシステムを停止させた後に、分割条件にしたがって再配置させる必要がある。また、特許文献２に記載の方法では、一時的な負荷の変化に柔軟に対応できない。なぜなら、クラスタにサーバを追加するための処理と、当該追加処理の後に管理範囲に含まれるデータの再配置とを行う必要があり、処理コストが高くなることからシステム全体としての性能が低下するためである。また、負荷の減少に伴って、クラスタからサーバを削除する場合も同様に処理コストが高くシステム全体として性能が低下する。【００１９】
本発明は、前述した課題に鑑みてなされた発明である。すなわち、計算機システムの負荷に柔軟に対応し、アクセス性能を低下させることなくデータを管理することを目的の一つとする。
【課題を解決するための手段】
【００２０】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、前記データベースを構成する前記各計算機には、前記各計算機にデータを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、前記計算機システムは、前記データベースを構成する各計算機における負荷に関する負荷情報を管理する負荷情報管理部と、前記負荷情報に基づいて前記計算機システムにおける前記分散アルゴリズムを切り替えるアルゴリズム管理部と、切り替えられた前記分散アルゴリズムに基づいて前記各計算機に格納されるデータを再配置する再配置処理部と、を有することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、データベースを構成するサーバの負荷に応じて、データの分散配置方法を切り替えることができるため、サーバへの負荷を分散することができる。したがって、システム全体の性能を保つことができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の概要を示す説明図である。
【図２】本発明の第１の実施形態における計算機システムの構成を示すブロック図である。
【図３】本発明の第１の実施形態におけるデータストアに格納されるデータの形式を示す説明図である。
【図４】本発明の第１の実施形態における構成情報の一例を示す説明図である。
【図５】本発明の第１の実施形態におけるサーバ負荷情報の一例を示す説明図である。
【図６】本発明の第１の実施形態におけるログ情報の一例を示す説明図である。
【図７】本発明の第１の実施形態におけるアルゴリズム切替履歴の一例を示す説明図である。
【図８】本発明の第１の実施形態におけるアルゴリズム切替条件情報の一例を示す説明図である。
【図９】本発明の第１の実施形態における移動履歴の一例を示す説明図である。
【図１０】本発明の第１の実施形態におけるサーバが実行する処理の概要を説明するフローチャートである。
【図１１】本発明の第１の実施形態における分散アルゴリズムの切替処理の詳細を説明するフローチャートである。
【図１２】本発明の第１の実施形態におけるサーバが実行する切替受付処理を説明するフローチャートである。
【図１３】本発明の第１の実施形態におけるサーバがアクセス要求を受信した場合に実行する処理の概要を説明するフローチャートである。
【図１４】本発明の第１の実施形態におけるクライアント装置が実行するアクセス要求の発行処理を説明するフローチャートである。
【図１５】本発明の第１の実施形態におけるクライアント装置が実行する構成情報の更新処理を説明するフローチャートである。
【図１６】本発明の第１の実施形態におけるサーバが実行するアクセス処理を説明するフローチャートである。
【図１７】本発明の第１の実施形態におけるサーバが実行するデータの再配置処理を説明するフローチャートである。
【図１８】本発明の第１の実施形態におけるサーバが実行する移動履歴の更新処理を説明するフローチャートである。
【図１９Ａ】本発明の第１の実施形態における処理の流れを示す説明図である。
【図１９Ｂ】本発明の第１の実施形態における処理の流れを示す説明図である。
【図２０】本発明の第１の実施形態におけるデータ移動履歴の表示例を示す説明図である。
【図２１】本発明の第２の実施形態における計算機システムの構成を示すブロック図である。
【図２２】本発明の第３の実施形態における構成情報の一例を示す説明図である。
【図２３】本発明の第３の実施形態におけるサーバが実行するアクセス処理を説明するフローチャートである。
【図２４】本発明の第３の実施形態におけるサーバが実行するデータの再配置処理を説明するフローチャートである。
【図２５】本発明の第３の実施形態におけるサーバが実行するデータの再配置処理の変形例を説明する説明図である。
【図２６】本発明の第４の実施形態における計算機システムの構成を示すブロック図である。
【図２７】本発明の第４の実施形態におけるアルゴリズム切替条件情報の一例を示す説明図である。
【図２８】本発明の第４の実施形態における切替候補情報の一例を示す説明図である。
【図２９】本発明の第４の実施形態における分散アルゴリズムの切替処理の詳細を説明するフローチャートである。
【発明を実施するための形態】
【００２３】
まず、本発明の概要について説明する。
【００２４】
図１は、本発明の概要を示す説明図である。
【００２５】
ＫＶＳ等のＮｏＳＱＬデータベースでは、データを分散配置する方法として、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法が用いられる。Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法では、まず、所定の関数を用いて複数のサーバ１００のハッシュ値を算出し、ハッシュ値に基づいて各サーバ１００を円周上に配置する。そして、各データのキーからハッシュ値を算出し、ハッシュ値に基づいてデータを円周上に配置する。このとき、各サーバ１００は、円周の右側のデータを管理することとなる。
【００２６】
すなわち、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法では、各サーバ１００が円周上に配置されるときにサーバ１００の管理範囲４００が決定され、管理範囲４００毎にデータが分散して配置される。
【００２７】
なお、データの分散配置方法は、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法に限定されず、Ｒａｎｇｅ法及びＬｉｓｔ法等の種々の方法も用いられる。何れの方法でも、サーバ１００毎に管理範囲４００が設定される。
【００２８】
図１に示す例では、サーバ１００Ａは管理範囲４００Ａのデータを管理し、サーバ１００Ｂは管理範囲４００Ｂのデータを管理し、サーバ１００Ｃは管理範囲４００Ｃのデータを管理し、サーバ１００Ｄは管理範囲４００Ｄのデータを管理する。
【００２９】
ここで、管理範囲４００Ａはハッシュ値が「１」〜「１００」までの範囲であり、管理範囲４００Ｂはハッシュ値が「１０１」〜「２００」までの範囲であり、管理範囲４００Ｃハッシュ値が「２０１」〜「３００」までの範囲であり、管理範囲４００Ｄはハッシュ値が「３０１」〜「４００」までの範囲である。
【００３０】
サーバ１００Ａへのアクセスが増大した場合、サーバ１００Ａにおけるアクセス性能が低下し、これに伴ってシステム全体のアクセス性能が低下する。したがって、サーバ１００Ａへのアクセスを分散させる必要がある。そこで、本発明では、管理範囲４００を決定するための分散アルゴリズムを切り替えることによって、サーバ１００Ａが管理する管理範囲４００を変更する。ここで、分散アルゴリズムとは、管理範囲４００を決定するためのアルゴリズムである。
【００３１】
システムの稼働中に分散アルゴリズムを動的に変更することによって、サーバ１００Ａが管理していた一部のデータが他のサーバ１００に配置されるため、システムを停止することなくサーバ１００Ａの負荷を分散できる。また、本発明では、必要なデータのみに対して再配置処理を実行することによって、システム全体の処理負荷を抑制する。
【００３２】
以下の説明では、データの分散配置方法として、図１に示すようなＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法を用いるものとして説明する。
【００３３】
［第１の実施形態］
【００３４】
図２は、本発明の第１の実施形態における計算機システムの構成を示すブロック図である。
【００３５】
計算機システムは、複数のサーバ１００、クライアント装置２００及びネットワーク３００から構成される。各サーバ１００間又はサーバ１００とクライアント装置２００との間は、ネットワーク３００を介して互いに接続される。
【００３６】
ネットワーク３００は、ＬＡＮ、ＷＡＮ及びＳＡＮ等の有線及び無線の種々の構成が考えられる。本発明は、サーバ１００及びクライアント装置２００が通信できるものであればどのようなネットワークであってもよい。なお、ネットワーク３００には、複数のネットワーク装置（図示省略）が含まれる。ネットワーク装置は、例えば、スイッチ及びゲートウェイなどが含まれる。
【００３７】
本実施形態では、複数のサーバ１００からクラスタを構成し、それらサーバ１００が備える記憶領域上にＮｏＳＱＬデータベースが構築される。本実施形態ではＮｏＳＱＬデータベースとして、ＫＶＳを用いるものとする。
【００３８】
サーバ１００は、プロセッサ１１０、主記憶装置１２０及び補助記憶装置１３０を備え、ＫＶＳを構成する計算機である。また、図示しないが、サーバ１００は、ネットワーク３００と接続するためのネットワークインタフェースを備える。サーバ１００は、クライアント装置２００からの要求にしたがって各種処理を実行する。なお、各サーバ１００の構成は同一であるものとする。
【００３９】
サーバ１００は、管理範囲４００毎にデータが配置されており、所定の管理範囲４００に含まれるデータを管理するマスタサーバとして稼動する。また、サーバ１００は、他のサーバ１００が管理する管理範囲４００に含まれるデータの複製データを保持しており、スレーブサーバとして稼動する。以下では、マスタサーバとして管理するデータをマスタデータと記載し、スレーブサーバとして管理するデータをスレーブデータとも記載する。
【００４０】
また、本実施形態のクラスタは、計算機システム全体の管理を行う管理サーバとなる唯一のサーバが存在せず、全てのサーバ１００が同等のサーバとして扱われる。これによって、１つのサーバに障害が発生しても、他のスレーブサーバが新たなマスタサーバとして処理を継続することができるため、計算機システムを停止することなく処理を継続することができる。
【００４１】
ただし、第１の実施形態では、各サーバ１００はスレーブデータを保持しないものとして説明する。すなわち、各サーバ１００はマスタデータのみを保持するものとして説明する。
【００４２】
プロセッサ１１０は、主記憶装置１２０に格納されるプログラムを実行する。プロセッサ１１０がプログラムを実行することによって、サーバ１００が備える機能を実現することができる。以下、プログラムを主語に処理を説明する場合には、プロセッサ１１０によって、プログラムが実行されていることを示すものとする。
【００４３】
主記憶装置１２０は、プロセッサ１１０が実行するプログラム及び当該プログラムの実行に必要な情報を格納する。主記憶装置１２０は、例えば、メモリ等が考えられる。
【００４４】
本実施形態の主記憶装置１２０上には、データ管理部１４１、アクセス要求受信部１４２、アクセス要求転送部１４３、アクセス結果送信部１４４、データ再配置処理部１４５、構成情報管理部１４６、負荷情報管理部１４７及びアルゴリズム管理部１４８を実現するためのプログラムが格納される。また、主記憶装置１２０上には、必要な情報として、構成情報１６１、サーバ負荷情報１６２、ログ情報１６３、アルゴリズム切替履歴１６４、アルゴリズム切替条件情報１６５及び移動履歴１６６が格納される。
【００４５】
さらに、主記憶装置１２０上には、ＫＶＳを構成するデータベースであるデータストア１５０が格納される。データストア１５０には、キーと、バリューとを一組としたデータが格納される。なお、各サーバ１００のデータストア１５０には、管理範囲４００に含まれるデータが格納される。
【００４６】
補助記憶装置１３０は、各種情報を格納する。補助記憶装置１３０は、例えば、ＨＤＤ又はＳＳＤ等が考えられる。なお、補助記憶装置１３０上にＫＶＳを構築するディスクストア（図示省略）が構築されてもよい。
【００４７】
ここで、主記憶装置１２０に格納されるプログラム及び情報について説明する。
【００４８】
データ管理部１４１は、サーバ１００が管理するデータに対する各種処理を制御する。データ管理部１４１は、クライアント装置２００からの要求を受け付け、その要求に基づいて、データの読み出しや書き込み等の処理を制御する。
【００４９】
アクセス要求受信部１４２は、クライアント装置２００からのアクセス要求を受信し、受信したアクセス要求をデータ管理部１４１に転送する。アクセス要求転送部１４３は、他のサーバ１００へデータの問い合わせをするために、アクセス要求を他のサーバ１００に転送する。アクセス結果送信部１４４は、受信したアクセス要求に対する処理の結果をクライアント装置２００に送信する。
【００５０】
データ再配置処理部１４５は、分散アルゴリズムが切り替えられた後に、各管理範囲４００に格納されるデータの再配置処理を実行する。構成情報管理部１４６は、データの格納先を管理する構成情報１６１を管理する。
【００５１】
負荷情報管理部１４７は、各サーバ１００の負荷に関する情報を取得し、取得された情報に基づいてサーバ負荷情報１６２を更新する。アルゴリズム管理部１４８は、分散アルゴリズムを管理する。
【００５２】
構成情報１６１は、データの格納先を示す情報を格納する。すなわち、各サーバ１００の管理範囲４００を示す情報が格納される。なお、構成情報１６１の詳細については、図４を用いて後述する。サーバ負荷情報１６２は、各サーバ１００の負荷を示す情報を格納する。サーバ負荷情報１６２の詳細については、図５を用いて後述する。ログ情報１６３は、サーバ１００における各種ログを格納する。ログ情報１６３の詳細については、図６を用いて後述する。
【００５３】
アルゴリズム切替履歴１６４は、過去に切り替えられた分散アルゴリズムの履歴に関する情報を格納する。アルゴリズム切替履歴１６４の詳細については、図７を用いて後述する。アルゴリズム切替条件情報１６５は、分散アルゴリズムを切り替えるか否かを判定するための条件に関する情報を格納する。アルゴリズム切替条件情報１６５の詳細については、図８を用いて後述する。移動履歴１６６は、サーバ１００間におけるデータの移動履歴を格納する。移動履歴１６６の詳細については、図９を用いて後述する。
【００５４】
次に、クライアント装置２００について説明する。クライアント装置２００は、プロセッサ２１０、主記憶装置２２０及び補助記憶装置２３０を備え、サーバ１００に対して各種処理の要求を送信する。また、図示しないが、クライアント装置２００は、ネットワーク３００と接続するためのネットワークインタフェースを備える。
【００５５】
プロセッサ２１０は、主記憶装置２２０に格納されるプログラムを実行する。プロセッサ２１０がプログラムを実行することによって、クライアント装置２００が備える機能を実現することができる。以下、プログラムを主語に処理を説明する場合には、プロセッサ２１０によって、プログラムが実行されていることを示す。
【００５６】
主記憶装置２２０は、プロセッサ２１０が実行するプログラム及び当該プログラムの実行に必要な情報を格納する。主記憶装置２２０は、例えば、メモリ等が考えられる。
【００５７】
本実施形態の主記憶装置２２０上には、アクセス要求部２４１、アクセス結果受信部２４２及び構成情報管理部２４３を実現するためのプログラムが格納される。また、主記憶装置２２０上には、必要な情報として構成情報２５１が格納される。
【００５８】
補助記憶装置２３０は、各種情報を格納する。補助記憶装置１３０は、例えば、ＨＤＤ又はＳＳＤ等が考えられる。
【００５９】
ここで、主記憶装置２２０に格納されるプログラム及び情報について説明する。
【００６０】
アクセス要求部２４１は、サーバ１００に対してアクセス要求を送信する。アクセス要求は、データの読み出し処理及び書き込み処理等の実行を要求するためのものである。なお、書き込み処理には、データの書き込みとデータの上書きとが含まれるものとする。
【００６１】
アクセス結果受信部２４２は、サーバ１００から送信されるアクセス要求に対する処理の結果を受信する。構成情報管理部２４３は、データの格納先を管理する構成情報２５１を管理する。
【００６２】
構成情報２５１は、データの格納先を示す情報を格納する。
【００６３】
なお、本実施形態では、サーバ１００及びクライアント装置２００が備える機能を、ソフトウェアを用いて実現しているが、専用のハードウェアを用いて同一の機能を実現してもよい。
【００６４】
また、計算機システムは、サーバ１００とは別に、負荷情報管理部１４７及びアルゴリズム管理部１４８等を有する管理計算機を備えていてもよい。これによってサーバ１００の構成を削減することができる。
【００６５】
図３は、本発明の第１の実施形態におけるデータストア１５０に格納されるデータの形式を示す説明図である。
【００６６】
本実施形態では、データストア１５０は、データ管理情報１５００を格納する。データ管理情報１５００には、キーとバリューとがペアとなったデータが複数含まれる。以下、キーとバリューとがペアとなったデータをキーバリュー型データとも記載する。
【００６７】
データ管理情報１５００は、Ｋｅｙ１５０１及びＶａｌｕｅ１５０２を含む。Ｋｅｙ１５０１は、データを識別するための識別子（キー）を格納する。Ｖａｌｕｅ１５０２は、実際のデータ（バリュー）を格納する。
【００６８】
クライアント装置２００を操作するユーザは、Ｋｅｙ１５０１を指定してＫＶＳにデータを保存し、また、Ｋｅｙ１５０１を指定してＫＶＳから所望のデータを取得することができる。
【００６９】
各サーバ１００は、所定のＫｅｙ１５０１の範囲（管理範囲４００）毎にキーバリュー型データを管理する。すなわち、管理範囲４００毎にキーバリュー型データが各サーバ１００に分散して配置される。サーバ１００は、指定された管理範囲４００のデータのマスタサーバとして処理を実行することとなる。これによって、大量のデータを並列的かつ高速に処理できる。
【００７０】
図４は、本発明の第１の実施形態における構成情報１６１の一例を示す説明図である。
【００７１】
構成情報１６１は、各サーバ１００の管理範囲４００に関する情報を格納する。具体的には、構成情報１６１は、サーバＩＤ１６１１及び管理範囲１６１２を含む。
【００７２】
サーバＩＤ１６１１は、サーバ１００を一意に識別するための識別子を格納する。サーバＩＤ１６１１には、サーバ１００の識別子、ＩＰアドレス及びＭＡＣアドレス等が格納される。
【００７３】
管理範囲１６１２は、管理範囲４００を示す値の範囲を格納する。管理範囲１６１２には、各サーバ１００のマスタデータの管理範囲の値が格納される。なお、本実施形態では管理範囲４００の値として、ハッシュ値が格納される。
【００７４】
図５は、本発明の第１の実施形態におけるサーバ負荷情報１６２の一例を示す説明図である。
【００７５】
サーバ負荷情報１６２は、各サーバ１００における負荷を示す情報を格納する。具体的には、サーバ負荷情報１６２は、サーバＩＤ１６２１及び負荷情報１６２２を含む。
【００７６】
サーバＩＤ１６２１は、サーバ１００を一意に識別するための識別子を格納する。サーバＩＤ１６２１は、サーバＩＤ１６１１と同一のものである。
【００７７】
負荷情報１６２２は、サーバ１００の負荷に関する情報を格納する。本実施形態の負荷情報１６２２には、スループット１６２５及びメモリ使用量１６２６が含まれる。なお、負荷情報１６２２には、プロセッサの稼働率、データストア１５０の空き容量、ネットワーク帯域の使用率など、他の負荷情報が格納されてもよい。
【００７８】
スループット１６２５は、単位時間当たりのリクエスト数を表すスループット値を格納する。メモリ使用量１６２６は、メモリの使用率を格納する。
【００７９】
図６は、本発明の第１の実施形態におけるログ情報１６３の一例を示す説明図である。
【００８０】
ログ情報１６３は、サーバ１００の各種ログを格納する。図６に示す例では、ログ情報１６３は、アクセスログ１６３１及びメモリ使用量ログ１６３２を含む。
【００８１】
アクセスログ１６３１は、クライアント装置２００及び他のサーバ１００からのアクセスに関するログを格納する。メモリ使用量ログ１６３２は、サーバ１００が備えるメモリの使用量に関するログを格納する。
【００８２】
なお、ログ情報１６３には、レスポンスタイム、キャッシュヒット率、利用頻度、データの参照数及びデータの更新数などその他のログが格納されてもよい。
【００８３】
図７は、本発明の第１の実施形態におけるアルゴリズム切替履歴１６４の一例を示す説明図である。
【００８４】
アルゴリズム切替履歴１６４は、これまでに切り替えられた分散アルゴリズムの履歴を格納する。具体的には、アルゴリズム切替履歴１６４は、切替履歴１６４１及び切替原因１６４２を含む。
【００８５】
切替履歴１６４１は、各サーバ１００の管理範囲４００を決定するための分散アルゴリズムに関する情報を格納する。例えば、切替履歴１６４１には、分散アルゴリズムの識別子、ハッシュ関数などが格納される。切替原因１６４２は、分散アルゴリズムが切り替えられた理由を格納する。
【００８６】
図８は、本発明の第１の実施形態におけるアルゴリズム切替条件情報１６５の一例を示す説明図である。
【００８７】
アルゴリズム切替条件情報１６５は、分散アルゴリズムを切り替えるための判定基準を格納する。具体的には、アルゴリズム切替条件情報１６５は、分散アルゴリズム１６５１、負荷情報１６５２及び閾値１６５３を含む。
【００８８】
分散アルゴリズム１６５１は、各サーバ１００の管理範囲４００を決定するための分散アルゴリズムに関する情報を格納する。負荷情報１６５２は、切替基準となる負荷情報が格納される。なお、負荷情報１６５２には、負荷情報７０２に対応する項目が格納される。閾値１６５３は、負荷情報１６２２に格納される負荷情報に対する閾値を格納する。
【００８９】
図８に示す例では、「分散アルゴリズム１」は、サーバ１００に負荷がかかっていない場合に使用され、また、負荷が低下した場合に切り替えられる分散アルゴリズムであることを示す。「分散アルゴリズム２」は、サーバ１００のアクセスログ１６３１に基づいて切り替えられる分散アルゴリズムであり、閾値１６５３としてスループット値が用いられることを示す。「分散アルゴリズム３」は、サーバ１００のメモリ使用量ログ１６３２に基づいて切り替えられる分散アルゴリズムであり、閾値１６５３としてメモリの使用率が用いられることを示す。
【００９０】
なお、アルゴリズム切替条件情報１６５には、スループットログ、レスポンスログ、キャッシュヒット率ログ、データ参照数ログ、データ更新数ログ及びクライアント毎の利用頻度ログなどの負荷情報１６５２に基づいて判定される分散アルゴリズムが格納されてもよい。
【００９１】
図９は、本発明の第１の実施形態における移動履歴１６６の一例を示す説明図である。
【００９２】
移動履歴１６６は、データのサーバ１００間の移動の履歴を格納する。具体的には、移動履歴１６６は、Ｋｅｙ１６６１、移動履歴１６６２、タイムスタンプ１６６３及び切替原因１６６４を含む。
【００９３】
Ｋｅｙ１６６１は、データを識別するための識別子（キー）を格納する。移動履歴１６６２は、Ｋｅｙ１６６１に対応するデータが移動したサーバ１００の識別情報を格納する。
【００９４】
タイムスタンプ１６６３は、サーバ１００間をデータが移動した時刻を格納する。なお、タイムスタンプ１６６３には、データがサーバ１００間を移動する度にタイムスタンプが１つ蓄積される。
【００９５】
切替原因１６６４は、分散アルゴリズムを切り替えた原因を格納する。なお、切替原因１６６４には、データがサーバ１００間を移動する度に切替原因が１つ蓄積される。
【００９６】
次に、各種処理について説明する。まず、分散アルゴリズムが切り替えられる場合に実行される処理について説明する。
【００９７】
図１０は、本発明の第１の実施形態におけるサーバ１００が実行する処理の概要を説明するフローチャートである。
【００９８】
以下では、サーバ１００のうち、処理を統括するサーバ１００を統括サーバ１００と記載する。統括サーバ１００は予め設定してもよいし、ＫＶＳの管理者が手動で設定してもよいし、アクセス要求等を最初に受け付けたサーバ１００を統括サーバ１００として設定してもよい。また、異なる処理毎に統括サーバ１００を変更することもできる。なお、統括サーバ１００が実行する処理は、どのサーバ１００でも実行可能な処理である。
【００９９】
統括サーバ１００は、各サーバ１００における負荷の監視処理を実行する（ステップＳ１００）。具体的には、統括サーバ１００は、定期的又は不定期的に、各サーバ１００から負荷情報を取得して、サーバ負荷情報１６２を更新する。
【０１００】
次に、統括サーバ１００は、サーバ負荷情報１６２及びアルゴリズム切替条件情報１６５を参照して、分散アルゴリズムの切替処理を実行する（ステップＳ１０２）。
【０１０１】
なお、統括サーバ１００は、図１０に示す処理を周期的に実行してもよいし、クライアント装置２００からの要求にしたがって処理を実行してもよい。また、負荷監視していた統括サーバ１００自身の負荷が高い場合、この統括サーバ１００がサーバ負荷情報１６２を参照して、負荷が低いサーバ１００を統括サーバ１００に変更するように制御してもよい。この場合、変更後の統括サーバ１００が切替処理を実行することとなる。
【０１０２】
図１１は、本発明の第１の実施形態におけるサーバ１００が実行する分散アルゴリズムの切替処理の詳細を説明するフローチャートである。分散アルゴリズムの切替処理は、統括サーバ１００のアルゴリズム管理部１４８によって実行される。
【０１０３】
アルゴリズム管理部１４８は、サーバ負荷情報１６２及びアルゴリズム切替条件情報１６５を参照して分散アルゴリズムの切り替えが必要であるか否かを判定する（ステップＳ２００）。すなわち、特定のサーバ１００の負荷が増大又は減少しているか否かが判定される。具体的には、アルゴリズム管理部１４８は、負荷情報１６２２における値と、対応する負荷情報の閾値１６５３とを比較して、切替条件を満たすか否かを判定する。
【０１０４】
図５に示す例では、スループット１６２５について判定する場合、サーバ１のスループット１６２５が「９２」であり、対応する負荷情報の閾値１６５３が「８０」であるため、サーバ１００への負荷の増大によって分散アルゴリズムを切り替える必要があると判定される。
【０１０５】
なお、複数の切替条件を満たす場合には、上位の切替条件に対応する分散アルゴリズムに切り替えてもよいし、予め切替条件に優先順位を設定しておき、当該優先順に基づいて分散アルゴリズムを切り替えてもよい。
【０１０６】
分散アルゴリズムの切り替えが必要であると判定された場合、アルゴリズム管理部１４８は、該当する切替条件に一致する分散アルゴリズムに切り替える（ステップＳ２０２）。具体的には、該当する切替条件に一致する分散アルゴリズム１６５１に変更される。
【０１０７】
アルゴリズム管理部１４８は、構成情報１６１の更新を指示する（ステップＳ２０４）。具体的には、アルゴリズム管理部１４８は、構成情報管理部１４６に構成情報１６１の更新を指示する。指示を受け付けた構成情報管理部１４６は、切り替えられた分散アルゴリズムに基づいて、構成情報１６１を更新する。
【０１０８】
これによって、各サーバ１００の管理範囲４００が変更されるため、サーバ１００の負荷を平準化することができる。
【０１０９】
アルゴリズム管理部１４８は、分散アルゴリズムを切り替えた旨を通知するための切替通知を各サーバ１００に送信し、処理を終了する（ステップＳ２０６）。なお、切替通知には、切り替えられた分散アルゴリズムの情報及び更新された構成情報１６１が含まれる。
【０１１０】
図１２は、本発明の第１の実施形態におけるサーバ１００が実行する切替受付処理を説明するフローチャートである。
【０１１１】
サーバ１００は、以下で説明する切替受付処理を周期的に実行するものとする。また、切替受付処理は、サーバ１００のアルゴリズム管理部１４８によって実行される。
【０１１２】
アルゴリズム管理部１４８は、まず、処理が終了するか否かを判定する（ステップＳ３００）。例えば、サーバ１００を停止させる場合に処理が終了すると判定される。
【０１１３】
次に、アルゴリズム管理部１４８は、統括サーバ１００から切替通知を受信したか否かを判定する（ステップＳ３０２）。統括サーバ１００から切替通知を受信していないと判定された場合、アルゴリズム管理部１４８は、ステップＳ３００に戻り、切替通知を受信するまで待ち続ける。
【０１１４】
統括サーバ１００から切替通知を受信したと判定された場合、アルゴリズム管理部１４８は、切替通知に含まれる分散アルゴリズムの情報に基づいて、分散アルゴリズムを切り替え（ステップＳ３０４）、さらに、アルゴリズム切替履歴１６４を更新する（ステップＳ３０６）。
【０１１５】
アルゴリズム管理部１４８は、構成情報１６１の更新を指示する（ステップＳ３０８）。具体的には、構成情報管理部１４６に、受信した切替通知に含まれる構成情報１６１を、現在格納される構成情報１６１に上書きする。なお、更新方法は、構成情報１６１への上書きに限定されず、現在格納される構成情報１６１を破棄し、受信した切替通知に含まれる構成情報１６１を格納する方法などが考えられる。
【０１１６】
その後、サーバ１００は、ステップＳ３００に戻り同様の処理を実行する（ステップＳ３００〜ステップＳ３０８）。
【０１１７】
次に、クライアント装置２００からのアクセス要求に対する処理について説明する。
【０１１８】
図１３は、本発明の第１の実施形態におけるサーバ１００がアクセス要求を受信した場合に実行する処理の概要を説明するフローチャートである。
【０１１９】
サーバ１００は、クライアント装置２００からアクセス要求を受け付けると（ステップＳ４００）、アクセス処理を実行する（ステップＳ４０２）。
【０１２０】
サーバ１００は、アクセス要求の対象データを取得し、アクセス要求の送信元であるクライアント装置に、取得したデータを含むアクセス結果を送信する（ステップＳ４０４）。以下では、アクセス要求の対象データを対象データとも記載する。
【０１２１】
図１４は、本発明の第１の実施形態におけるクライアント装置２００が実行するアクセス要求の発行処理を説明するフローチャートである。アクセス要求の発行処理は、アクセス要求部２４１によって実行される。
【０１２２】
アクセス要求部２４１は、データ操作ＡＰＩを発行する（ステップＳ５００）。発行されたデータ操作ＡＰＩに基づいて対象データが決定される。
【０１２３】
アクセス要求部２４１は、構成情報２５１を参照して、対象データが格納されるサーバ１００を特定する（ステップＳ５０２）。ここでは、構成情報２５１は、後述する構成情報の更新処理によって最新の構成情報２５１に更新されているものとする。
【０１２４】
なお、構成情報２５１が最新のものでない場合、アクセス要求を受け付けたサーバ１００が、対象データを格納するサーバ１００に当該アクセス要求を転送することとなる。
【０１２５】
アクセス要求部２４１は、対象データの識別情報（キー）を含むアクセス要求を特定されたサーバ１００に送信し、処理を終了する（ステップＳ５０４）。
【０１２６】
図１５は、本発明の第１の実施形態におけるクライアント装置２００が実行する構成情報の更新処理を説明するフローチャートである。構成情報の更新処理は、構成情報管理部２４３によって実行される。本実施形態の構成情報管理部２４３は、周期的に、以下で説明する処理を実行する。なお、クライアント装置２００が、アクセス要求の送信先のサーバ１００から新たな構成情報１６１を含むアクセス結果を受信した場合に処理が実行されてもよい。
【０１２７】
構成情報管理部２４３は、まず、処理が終了するか否かを判定する（ステップＳ６００）。例えば、クライアント装置２００を停止させる場合に処理が終了すると判定される。
【０１２８】
次に、構成情報管理部２４３は、サーバ１００から新しい構成情報１６１を受信したか否かを判定する（ステップＳ６０２）。
【０１２９】
新しい構成情報１６１を受信していないと判定された場合、構成情報管理部２４３は、ステップＳ６００に戻り、新しい構成情報１６１を受信するまで待ち続ける。
【０１３０】
新しい構成情報１６１を受信したと判定された場合、構成情報管理部２４３は、現在格納される構成情報２５１に、新たな構成情報１６１を上書きすることによって、構成情報２５１を更新する（ステップＳ６０４）。その後、構成情報管理部２４３は、ステップＳ６００に戻り、同様の処理を実行する。
【０１３１】
図１６は、本発明の第１の実施形態におけるサーバ１００が実行するアクセス処理を説明するフローチャートである。アクセス処理は、データ管理部１４１によって実行される。
【０１３２】
データ管理部１４１は、まず、処理が終了するか否かを判定する（ステップＳ７００）。例えば、サーバ１００を停止させる場合に処理が終了すると判定される。
【０１３３】
次に、データ管理部１４１は、アクセス要求を受信したか否かを判定する（ステップＳ７０２）。なお、アクセス要求は、クライアント装置２００又は他のサーバ１００から送信されたものである。
【０１３４】
アクセス要求を受信していないと判定された場合、データ管理部１４１は、ステップＳ７００に戻り、アクセス要求を受信するまで待ち続ける。
【０１３５】
アクセス要求を受信したと判定された場合、データ管理部１４１は、対象データの格納先を特定する（ステップＳ７０４）。具体的には、データ管理部１４１は、構成情報１６１を参照して、どのサーバ１００の管理範囲４００に対象データが含まれるかを判定する。なお、第１の実施形態では、管理範囲１６１２のマスタに記載された管理範囲４００のみに着目して判定される。すなわち、対象データのマスタサーバ１００が特定される。
【０１３６】
データ管理部１４１は、前述した判定の結果に基づいて、対象データの格納先が他のサーバ１００であるか否かを判定する（ステップＳ７０６）。
【０１３７】
図４に示す例では、ハッシュ値が「３５０」であるデータに対するアクセス要求をサーバＡが受信した場合、当該データの格納先はサーバＣであるため、対象データの格納先が他のサーバ１００であると判定される。
【０１３８】
対象データの格納先が他のサーバ１００でない、すなわち、対象データの格納先が自サーバ１００であると判定された場合、データ管理部１４１は、データの再配置処理の実行をデータ再配置処理部１４５に指示する（ステップＳ７０８）。なお、データの再配置処理については、図１７を用いて後述する。
【０１３９】
データ管理部１４１は、対象データを取得して、取得された対象データを含むアクセス結果の送信をアクセス結果送信部１４４に指示する（ステップＳ７１０）。当該指示を受けたアクセス結果送信部１４４は、アクセス要求の送信元のクライアント装置２００にアクセス結果を送信する。その後、データ管理部１４１は、ステップＳ７００に戻り同様の処理を実行する。
【０１４０】
ステップＳ７０６において、対象データの格納先が他のサーバ１００であると判定された場合、データ管理部１４１は、対象データを格納する他のサーバ１００にアクセス要求を転送する（ステップＳ７２０）。当該アクセス要求を受信した、他のサーバ１００では、図１６に示す処理が実行されることとなる。その後、データ管理部１４１は、ステップＳ７００に戻り同様の処理を実行する。
【０１４１】
図１７は、本発明の第１の実施形態におけるサーバ１００が実行するデータの再配置処理を説明するフローチャートである。
【０１４２】
データ再配置処理部１４５は、データストア１５０に対象データが格納されているか否かを判定する（ステップＳ８００）。
【０１４３】
データストア１５０に対象データが格納されていると判定された場合、データ再配置処理部１４５は、対象データをデータストア１５０に再配置する必要がないため処理を終了する。
【０１４４】
データストア１５０に対象データが格納されていないと判定された場合、データ再配置処理部１４５は、アルゴリズム切替履歴１６４を参照して、対象データの格納先を特定する（ステップＳ８０２）。具体的には、以下のような処理が実行される。
【０１４５】
まず、データ再配置処理部１４５は、アルゴリズム切替履歴１６４を参照して、現在使用されている分散アルゴリズムの一つ前の分散アルゴリズムを特定する。データ再配置処理部１４５は、一つ前の分散アルゴリズムから各サーバ１００の管理範囲４００を算出し、対象データを管理していたサーバ１００を特定する。
【０１４６】
データ再配置処理部１４５は、特定されたサーバ１００に対して対象データを問い合わせる。当該問い合わせの結果、特定されたサーバ１００が対象データを格納していない場合、データ再配置処理部１４５は、さらに一つ前の分散アルゴリズムを用いて同様の処理を実行する。以上がステップＳ８０２の処理である。
【０１４７】
次に、データ再配置処理部１４５は、特定されたサーバ１００から対象データを取得する（ステップＳ８０４）。取得方法としては、特定されたサーバ１００に格納される対象データをコピーする方法、又は、特定されたサーバ１００に格納される対象データを移動する方法などが考えられる。ここで、データのコピーは、他のサーバ１００に格納される対象データの複製データを自サーバ１００に格納することを示す。また、データの移動は、自サーバ１００に対象データを格納し、他のサーバ１００から対象データを削除することを示す。
【０１４８】
データ再配置処理部１４５は、移動履歴１６６の更新処理を実行して、処理を終了する（ステップＳ８０６）。なお、移動履歴１６６の更新処理の詳細は、図１８を用いて後述する。
【０１４９】
以上のように、本実施形態では、分散アルゴリズムが切り替えられても、クライアント装置２００からアクセスされたデータについてのみ再配置処理が実行される。これによって、不要なデータの再配置処理が実行されることを回避でき、サーバ１００の負荷増大を抑制することができる。
【０１５０】
図１８は、本発明の第１の実施形態におけるサーバ１００が実行する移動履歴１６６の更新処理を説明するフローチャートである。
【０１５１】
データ再配置処理部１４５は、対象データの識別情報（キー）を取得して、移動履歴１６６に対象データのエントリが存在するか否かを判定する（ステップＳ９００）。なお、対象データの識別情報は、アクセス要求から取得することができる。
【０１５２】
移動履歴１６６に対象データのエントリが存在すると判定された場合ステップＳ９０４に進む。
【０１５３】
移動履歴１６６に対象データのエントリが存在しないと判定された場合、データ再配置処理部１４５は、移動履歴１６６にエントリを生成する（ステップＳ９０２）。このとき、データ再配置処理部１４５は、生成されたエントリのＫｅｙ１６６１に対象データの識別子（キー）を格納する。
【０１５４】
データ再配置処理部１４５は、ステップＳ８０２において特定されたサーバ１００の識別子を取得し、さらに、自サーバ１００の識別子を取得して、移動履歴１６６２に格納する（ステップＳ９０４）。なお、サーバ１００間の移動順が分かるように情報が格納される。図９に示す例では、移動順にサーバ１００の識別子が格納される。
【０１５５】
データ再配置処理部１４５は、データを移動した時刻を取得して、タイムスタンプ１６６３に格納する（ステップＳ９０６）。データを移動した時刻としては、データ再配置処理部１４５が、ステップＳ８０４においてデータを取得した時刻が考えられる。
【０１５６】
さらに、データ再配置処理部１４５は、アルゴリズム切替履歴１６４の切替原因１６４２を参照して分散アルゴリズムを切り替えた原因を特定し、切替原因１６６４を更新して、処理を終了する（ステップＳ９０８）。
【０１５７】
図１９Ａ及び図１９Ｂは、本発明の第１の実施形態における処理の流れを示す説明図である。
【０１５８】
図１９Ａに示すようにサーバ１００Ａのアクセス数が増大すると、分散アルゴリズムの切り替えが必要であると判定される（ステップＳ２００）。ここでは、分散アルゴリズム１から分散アルゴリズム２に切り替えられるものとする。
【０１５９】
図１９Ａに示す例では、分散アルゴリズムが切り替えられることによって、管理範囲４００Ａ、管理範囲４００Ｂ及び管理範囲４００Ｄが変更される。すなわち、管理範囲４００Ａは「１」〜「８０」に、管理範囲４００Ｂは「９１」〜「２００」に、管理範囲４００Ｄは「７１」〜「９０」及び「３０１」〜「４００」に変更される。また、データ５００Ａはハッシュ値が「７５」のデータ、データ５００Ｂはハッシュ値が「９３」のデータとする。
【０１６０】
分散アルゴリズムが切り替えられた後、クライアント装置２００は、データ５００Ａへアクセスする場合、データ５００Ａを管理するサーバ１００Ｄに対してアクセス要求を送信する（ステップＳ５０４）。
【０１６１】
サーバ１００Ｄは、クライアント装置２００からアクセス要求を受信すると、データ５００Ａの格納先は自サーバであると判定し、データ再配置処理を実行する（ステップＳ７０６、ステップＳ７０８）。すなわち、サーバ１００Ｄは、サーバ１００Ａからデータ５００Ａを取得し、データストア１５０にデータ５００Ａを格納する（ステップＳ８０４）。
【０１６２】
一方、データ５００Ｂは、クライアント装置２００からのアクセス要求がないため、サーバ１００Ｂに再配置されない。これによって、必要なデータのみ配置を変更することによって、サーバ１００間の不要な通信を抑制することができる。したがって、システム全体の負荷を低減できる。
【０１６３】
また、分散アルゴリズムの切り替えによって管理範囲４００が変更されるため、サーバ１００Ａへのアクセス数が減少し、サーバ１００Ａの負荷が低減できる。したがって、システム全体としての負荷が低減できる。
【０１６４】
サーバ１００は、クライアント装置２００からの要求に応じて、図２０に示すようなデータの移動状態を確認するための情報を生成することができる。
【０１６５】
図２０は、本発明の第１の実施形態におけるデータ移動履歴の表示例を示す説明図である。
【０１６６】
データ移動履歴の表示画面１０００は、移動履歴表示領域１０１０及びデータ指定領域１０２０を含む。
【０１６７】
移動履歴表示領域１０１０には、データの移動履歴に関する情報が表示される。図２０に示す例では、Ｋｅｙ１０１１、移動履歴１０１２、タイムスタンプ１０１３及び切替原因１０１４を含む。Ｋｅｙ１０１１、移動履歴１０１２、タイムスタンプ１０１３及び切替原因１０１４は、それぞれ、Ｋｅｙ１６６１、移動履歴１６６２、タイムスタンプ１６６３及び切替原因１６６４と同一のものであるため説明を省略する。
【０１６８】
なお、移動履歴表示領域１０１０に表示される情報は、図２０に示すようなものに限定されない。
【０１６９】
データ指定領域１０２０は、クライアント装置２００を操作する管理者が所望するデータを指定するための情報を入力する領域である。図２０に示す例では、所定のキーレンジが入力される。なお、データ指定領域１０２０には、個々のキーが入力されてもよいし、キー以外の情報、例えば、タイムスタンプ及びサーバの識別子などを入力してもよい。
【０１７０】
表示画面１０００の表示処理としては以下のような処理が考えられる。
【０１７１】
クライアント装置２００は、データ指定領域２０２０を操作して、表示画面２０００の表示要求を送信する。表示要求には、キー情報、タイムスタンプ、サーバ識別子など任意の情報が含まれる。
【０１７２】
表示要求を受信したサーバ１００は表示情報を生成して、クライアント装置２００に表示情報を送信する。表示情報の生成方法としては、サーバ１００が、移動履歴１６６を参照して、クライアント装置２００が所望する情報を表示するための表示情報を生成する方法が考えられる。なお、他のサーバ１００の移動履歴１６６が必要な場合には、各サーバ１００に問い合わせることによって必要な移動履歴１６６を取得することができる。
【０１７３】
クライアント装置２００は、表示情報を受信すると、移動履歴表示領域１０１０に移動履歴に関する情報を表示する。
【０１７４】
第１の実施形態によれば、特定のサーバ１００に対する負荷が増大した場合に、分散アルゴリズムを切り替えることによって、各サーバ１００に対する負荷を減少させることができる。また、負荷が低下した場合には、元の分散アルゴリズムに戻すことができ、一時的な負荷の変化に柔軟に対応することもできる。さらに、分散アルゴリズムの切り替えに伴うデータの再配置も必要なデータに限定できるため、サーバ１００間の不要な通信を抑制できる。
【０１７５】
［第２の実施形態］
【０１７６】
図２１は、本発明の第２の実施形態における計算機システムの構成を示すブロック図である。第２の実施形態では、クライアント装置２００が構成情報管理部２４３及び構成情報２５１を含まない点が第１の実施形態と異なる。
【０１７７】
したがって、第２の実施形態ではアクセス要求の発行処理が第１の実施形態と異なる。具体的には、クライアント装置２００は、構成情報２５１を含まないため、ステップＳ５０２の処理が省略される。この場合、クライアント装置２００は、ネットワーク３００に接続されるいずれかのサーバ１００にアクセス要求を送信する。アクセス要求を受信したサーバ１００は、図１３及び図１６に示す処理を実行して、アクセス結果を送信することとなる。
【０１７８】
なお、その他の構成及び処理は、第１の実施形態と同一であるため説明を省略する。
【０１７９】
［第３の実施形態］
【０１８０】
第３の実施形態では、サーバ１００が他のサーバ１００のスレーブデータを保持する点が異なる。したがって、第３の実施形態では、構成情報１６１の内容が異なる。また第３の実施形態では、アクセス処理及び再配置処理が異なる。以下、第１の実施形態との差異を中心に第３の実施形態について説明する。
【０１８１】
計算機システムの構成は、構成情報１６１を除き、第１の実施形態と同一であるため説明を省略する。
【０１８２】
図２２は、本発明の第３の実施形態における構成情報１６１の一例を示す説明図である。
【０１８３】
第３の実施形態における構成情報１６１は、管理範囲１６１２に格納される情報が異なる。管理範囲１６１２には、新たな管理項目として、マスタ１６１５、スレーブ１（１６１６）及びスレーブ２（１６１７）が含まれる。
【０１８４】
マスタ１６１５は、マスタサーバ１００として管理するマスタデータの管理範囲４００の値を格納する。スレーブ１（１６１６）及びスレーブ２（１６１７）は、スレーブサーバ１００として保持するスレーブデータの管理範囲４００の値を格納する。なお、本実施形態では管理範囲４００の値として、ハッシュ値の値が格納される。
【０１８５】
スレーブ１（１６１６）はスレーブ２（１６１７）より上位のスレーブサーバ１００であることを示す。例えば、サーバＩＤ１６１１が「サーバ２」であるマスタサーバ１００に障害が発生した場合に、サーバＩＤ１６１１が「サーバ１」及び「サーバ４」であるスレーブサーバ１００のうち、サーバＩＤ１６１１が「サーバ１」であるスレーブサーバ１００がマスタサーバ１００として処理を引き継ぐこととなる。
【０１８６】
なお、本実施形態では、２つのスレーブサーバ１００にスレーブデータを格納する構成を採っているが本発明はこれに限定されない。すなわち、１つ又は３つ以上のスレーブサーバ１００にスレーブデータを格納する構成でもよい。
【０１８７】
次に、第３の実施形態における各種処理について説明する。
【０１８８】
第３の実施形態の統括サーバ１００の処理は、第１の実施形態と同一であるため説明を省略する。切替受付処理、アクセス要求受信時の処理は、第１の実施形態と同一であるため説明を省略する。また、アクセス要求の発行処理、構成情報の更新処理及び移動履歴の更新処理は、第１の実施形態と同一であるため説明を省略する。
【０１８９】
第３の実施形態では、切替処理、アクセス処理及び再配置処理が異なる。以下、それぞれの処理について説明する。
【０１９０】
分散アルゴリズムの切替処理では、ステップＳ２０４における構成情報１６１の更新内容が異なる。
【０１９１】
ステップＳ２０４では、分散アルゴリズムの切り替えによって、マスタデータの管理範囲４００とスレーブデータの管理範囲４００とが変更される。ただし、マスタデータの管理範囲４００だけを変更してもよい。管理範囲４００の変更は、分散アルゴリズムを適宜変更することによって実現できる。ここでは、マスタデータの管理範囲４００及びスレーブデータの管理範囲４００の両方が変更されるものとする。
【０１９２】
構成情報１６１が変更された場合に、データストア１５０に格納されるデータそのものは変更されない。これは、データに、マスタデータ又はスレーブデータのいずれであるかを示す属性情報などが付与されていないためである。
【０１９３】
その他の処理は第１の実施形態と同一であるため説明を省略する。
【０１９４】
図２３は、本発明の第３の実施形態におけるサーバ１００が実行するアクセス処理を説明するフローチャートである。アクセス処理は、データ管理部１４１によって実行される。
【０１９５】
ステップＳ７００及びステップＳ７０２の処理は、第１の実施形態と同一であるため説明を省略する。また、ステップＳ７１０及びステップＳ７２０の処理も、第１の実施形態と同一であるため説明を省略する。
【０１９６】
ステップＳ７０２の判定結果がＹｅｓの場合、データ管理部１４１は、対象データに対応するマスタデータの格納先を特定する（ステップＳ１０００）。具体的には、データ管理部１４１は、構成情報１６１のマスタ１６１５を参照して、どのマスタサーバ１００の管理範囲４００に対象データが含まれるかを判定する。すなわち、対象データのマスタサーバ１００が特定される。
【０１９７】
データ管理部１４１は、前述した判定の結果に基づいて、対象データに対応するマスタデータの格納先が他のサーバ１００であるか否かを判定する（ステップＳ１００２）。
【０１９８】
図４に示す例では、ハッシュ値が「３５０」であるデータに対するアクセス要求をサーバＡが受信した場合、当該データに対応するマスタデータの格納先はサーバＣであるため、対象データに対応するマスタデータの格納先が他のサーバ１００であると判定される。
【０１９９】
対象データに対応するマスタデータの格納先が他のサーバ１００でない、すなわち、対象データに対応するマスタデータの格納先が自サーバ１００であると判定された場合、データ管理部１４１は、データの再配置処理の実行をデータ再配置処理部１４５に指示する（ステップＳ１００４）。なお、データの再配置処理については、図２４を用いて後述する。
【０２００】
図２４は、本発明の第３の実施形態におけるサーバ１００が実行するデータの再配置処理を説明するフローチャートである。
【０２０１】
データ再配置処理部１４５は、データストア１５０に対象データが格納されているか否かを判定する（ステップＳ１１００）。第３の実施形態では、データストア１５０に格納されるマスタデータ及びスレーブデータを参照して、対象データが格納されるか否かが判定される点が第１の実施形態と異なる。
【０２０２】
このように、スレーブデータとして管理していたデータに対象データが含まれる場合には、対象データを取得する必要がなく、サーバ１００間の通信を抑制することができる。この場合、サーバ１００は、分散アルゴリズムの切り替え前はスレーブデータであった対象データを、マスタデータとして管理することとなる。
【０２０３】
その他の処理は第１の実施形態と同一であるため説明を省略する。
【０２０４】
［変形例］
【０２０５】
図２５は、本発明の第３の実施形態におけるサーバ１００が実行するデータの再配置処理の変形例を説明する説明図である。
【０２０６】
図２５に示すデータの再配置処理は、アクセス要求を受け付けた後、又は、分散アルゴリズムが切り替えられた後に実行される。
【０２０７】
データ再配置処理部１４５は、構成情報１６１を参照して、各サーバ１００の現在の管理範囲４００を特定する（ステップ１２００）。
【０２０８】
データ再配置処理部１４５は、アルゴリズム切替履歴１６４を参照して、分散アルゴリズムの切り替え前における、各サーバ１００の管理範囲４００を特定する（ステップＳ１２０２）。以下では、分散アルゴリズムが切り替えられる前の管理範囲４００を過去の管理範囲４００とも記載する。
【０２０９】
データ再配置処理部１４５は、現在の管理範囲４００と、過去の管理範囲４００とを比較して、管理範囲４００に差分が生じているか否かを判定する（ステップ１２０４）。ここで、「１」〜「１００」までの第１の管理範囲を例に、管理範囲４００に差分について説明する。
【０２１０】
例えば、分散アルゴリズムが切り替えられる前の第１の管理範囲を、サーバ１００Ａがマスタサーバ１００として管理し、サーバ１００Ｂ及びサーバ１００Ｃがスレーブサーバ１００として管理していた場合に、分散アルゴリズムが切り替えられた後の第１管理範囲を、サーバ１００Ｂがマスタサーバ１００として管理し、サーバ１００Ｃ及びサーバ１００Ｄがスレーブサーバ１００として管理している場合には、管理範囲４００に差分が生じていると判定される。なぜなら、サーバ１００Ｄは、分散アルゴリズムが切り替えられる前は、第１の管理範囲のデータを保持していないため他のサーバ１００から取得する必要があるためである。
【０２１１】
一方、サーバ１００Ｂ及びサーバ１００Ｃは、管理範囲４００Ａのスレーブデータを保持しており、分散アルゴリズムが切り替えられても必要なデータを保持しているため他のサーバ１００から取得する必要がない。このとき、サーバ１００Ｂは、第１の管理範囲のデータをマスタデータとして管理することとなる。また、サーバ１００Ｃは、第１の管理範囲のデータをスレーブデータとして管理する。
【０２１２】
なお、上記説明では、簡単のため管理範囲４００を固定していたが、分散アルゴリズムの切り替え前後で管理範囲４００が異なっている場合でも同様の判定方法を適用できる。
【０２１３】
すなわち、分散アルゴリズムが切り替えられた後に、データを取得する必要なあるサーバ１００が存在する場合に、管理範囲４００に差分が生じていると判定される。
【０２１４】
管理範囲４００に差分が生じていないと判定された場合、データ再配置処理部１４５は、処理を終了する。
【０２１５】
管理範囲４００に差分が生じていると判定された場合、データ再配置処理部１４５は、当該差分を解消するようにデータを取得し（ステップＳ１２０６）、処理を終了する。
【０２１６】
例えば、データ再配置処理部１４５は、マスタデータがない場合には、マスタデータを他のサーバ１００から取得し、スレーブデータがない場合には、レプリケーション処理等を実行して、スレーブデータを他のサーバから取得する。
【０２１７】
［第４の実施形態］
【０２１８】
第４の実施形態では、分散アルゴリズムの切り替え方が第１の実施形態と異なる。以下、第１の実施形態との差異を中心に第３の実施形態について説明する。
【０２１９】
図２６は、本発明の第４の実施形態における計算機システムの構成を示すブロック図である。
【０２２０】
第４の実施形態では、サーバ１００のアルゴリズム切替条件情報１７０は、アルゴリズム切替履歴１６４と内容が異なる。また、第４の実施形態では、新たに切替候補情報１８０を含む。その他の構成は第１の実施形態と同一であるため説明を省略する。
【０２２１】
図２７は、本発明の第４の実施形態におけるアルゴリズム切替条件情報１７０の一例を示す説明図である。
【０２２２】
アルゴリズム切替条件情報１７０は、負荷情報１７０１及び閾値１７０２を含む。負荷情報１７０１及び閾値１７０２は、負荷情報１６５２及び閾値１６５３と同一のものである。図２７に示すように、第４の実施形態では、切替条件と分散アルゴリズムとが対応づけられていない点が第１の実施形態と異なる。
【０２２３】
図２８は、本発明の第４の実施形態における切替候補情報１８０の一例を示す説明図である。
【０２２４】
切替候補情報１８０は、切り替え可能な分散アルゴリズムの情報を格納する。具体的には、ＩＤ１８０１及び分散アルゴリズム１８０２を含む。
【０２２５】
ＩＤ１８０１は、分散アルゴリズムを識別するための識別子を格納する。分散アルゴリズム１８０２は、分散アルゴリズムに関する情報を格納する。例えば、分散アルゴリズム１８０２には、ハッシュ関数及びキーレンジなどが格納される。
【０２２６】
図２９は、本発明の第４の実施形態における分散アルゴリズムの切替処理の詳細を説明するフローチャートである。
【０２２７】
ステップＳ２００において、分散アルゴリズムの切り替えが必要であると判定された場合、アルゴリズム管理部１４８は、サーバ１００の負荷増大が切替原因であるか否かを判定する（ステップＳ１３００）。
【０２２８】
具体的には、ステップＳ２００の判定処理において、どの切替条件に一致したかを確認することによって判定できる。なお、ステップＳ２００では、アルゴリズム切替条件情報１７０に基づいて処理が実行される。
【０２２９】
サーバ１００の負荷増大が切替原因でないと判定された場合、アルゴリズム管理部１４８は、ステップＳ１３０４に進む。
【０２３０】
サーバ１００の負荷増大が切替原因であると判定された場合、アルゴリズム管理部１４８は、サーバ負荷情報１６２を参照して、負荷の低いサーバ１００を特定し、ステップＳ１３０４に進む（ステップＳ１３０２）。例えば、サーバ１００へのアクセス数の増大が切替原因である場合、アルゴリズム管理部１４８は、サーバ負荷情報１６２を参照して、アクセス数が最小であるサーバ１００を特定する。なお、特定されるサーバ１００は１台である必要は無く、複数台であってもよい。
【０２３１】
アルゴリズム管理部１４８は、切替候補情報１８０を参照して分散アルゴリズムを選択し、選択された分散アルゴリズムを切り替える（ステップＳ１３０４）。分散アルゴリズムの選択方法は、切替原因によって異なる。以下、切替原因ごとの選択方法について説明する。
【０２３２】
切替原因がサーバ１００の負荷減少である場合、アルゴリズム管理部１４８は、切替候補情報１８０を参照して、各サーバ１００の負荷が平準化されるような分散アルゴリズムを選択する。例えば、分散アルゴリズムを切り替えた場合の管理範囲４００を算出する方法が考えられる。また、他の方法としては、アルゴリズム管理部１４８が、アルゴリズム切替履歴１６４を参照して、サーバ１００の負荷が増大する前の分散アルゴリズムを特定してもよい。
【０２３３】
切替原因がサーバ１００の負荷増大である場合、アルゴリズム管理部１４８は、切替候補情報１８０を参照して、負荷が増大しているサーバ１００の管理範囲４００のデータを、負荷が小さいサーバ１００に割り当てるための分散アルゴリズムを特定する。例えば、分散アルゴリズムを切り替えた場合の管理範囲４００を算出する方法が考えられる。アルゴリズム管理部１４８は、特定された分散アルゴリズムの中から、最も負荷が平準化される分散アルゴリズムを選択する。
【０２３４】
以上がステップＳ１３０４の処理である。
【０２３５】
ステップＳ２０４及びステップＳ２０６の処理は、第１の実施形態と同一であるため説明を省略する。
【０２３６】
以上説明したように、本発明によれば、特定のサーバ１００に対する負荷が増大した場合に、分散アルゴリズムを切り替えることによって、各サーバ１００に対する負荷を低減できる。また、分散アルゴリズムの切り替えに伴うデータの再配置も必要なデータに限定できるため、不要なサーバ１００間の通信を抑制できる。したがって、処理コストを抑え、かつ、動的な分散アルゴリズムの切り替えを実現することができる。
【０２３７】
なお、本実施形態で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【０２３８】
さらに、本実施形態では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
【０２３９】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【図１】
2013073020.tif 000003
【図２】
2013073020.tif 000004
【図３】
2013073020.tif 000005
【図４】
2013073020.tif 000006
【図５】
2013073020.tif 000007
【図６】
2013073020.tif 000008
【図７】
2013073020.tif 000009
【図８】
2013073020.tif 000010
【図９】
2013073020.tif 000011
【図１０】
2013073020.tif 000012
【図１１】
2013073020.tif 000013
【図１２】
2013073020.tif 000014
【図１３】
2013073020.tif 000015
【図１４】
2013073020.tif 000016
【図１５】
2013073020.tif 000017
【図１６】
2013073020.tif 000018
【図１７】
2013073020.tif 000019
【図１８】
2013073020.tif 000020
【図１９Ａ】
2013073020.tif 000021
【図１９Ｂ】
2013073020.tif 000022
【図２０】
2013073020.tif 000023
【図２１】
2013073020.tif 000024
【図２２】
2013073020.tif 000025
【図２３】
2013073020.tif 000026
【図２４】
2013073020.tif 000027
【図２５】
2013073020.tif 000028
【図２６】
2013073020.tif 000029
【図２７】
2013073020.tif 000030
【図２８】
2013073020.tif 000031
【図２９】
2013073020.tif 000032
【手続補正書】
【提出日】平成27年1月13日(2015.1.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、
前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記データベースを構成する前記各計算機には、前記各計算機にデータを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、
前記データベースには、キー及びデータ値から構成される前記データが格納され、
前記分散アルゴリズムは、前記キーの範囲を示す管理範囲を決定するためのアルゴリズムであり、
前記計算機システムは、
前記データベースを構成する各計算機における負荷に関する負荷情報を管理する負荷情報管理部と、
前記負荷情報に基づいて前記計算機システムにおける前記分散アルゴリズムを切り替えることによって、少なくとも二つ以上の前記計算機の管理範囲を変更するアルゴリズム管理部と、
切り替えられた前記分散アルゴリズムに基づいて、アクセス要求の対象となるデータの配置を変更する再配置処理部と、を有し、
前記再配置処理部は、
前記分散アルゴリズムが切り替えられた後に、第１計算機が第１データに対するアクセス要求を受信した場合に、前記切り替えられた後の前記分散アルゴリズムに基づいて、前記第１データが前記第１計算機の前記管理範囲に含まれるか否かを判定し、
前記第１データが前記第１計算機の管理範囲に含まれていると判定された場合、前記第１データが前記第１計算機に格納されているか否かを判定し、
前記第１データが前記第１計算機に格納されていない場合に、前記第１データを格納する他の前記計算機から前記第１データを取得し、前記第１データを前記第１計算機に格納することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記アルゴリズム管理部は、前記データベースを構成する計算機の負荷が所定の閾値以上又は前記データベースを構成する計算機の負荷が所定の閾値以下の場合に、前記分散アルゴリズムを切り替えることを特徴とする計算機システム。
【請求項３】
請求項１又は請求項２に記載の計算機システムであって、
前記データベースを構成する計算機の負荷が所定の閾値以上であると判定され、第１分散アルゴリズムから第２分散アルゴリズムに切り替えられた後に、前記データベースを構成する計算機の負荷が所定の閾値以下であると判定された場合に、前記アルゴリズム管理部は、前記第２分散アルゴリズムから前記第１分散アルゴリズムに切り替えることを特徴とする計算機システム。
【請求項４】
請求項２又は請求項３に記載の計算機システムであって、
前記データベースを構成する計算機の負荷は、前記計算機に対するアクセス数又は前記計算機における前記メモリの使用量の少なくともいずれかであることを特徴とする計算機システム。
【請求項５】
請求項１から請求項３のいずれか一つに記載の計算機システムであって、
前記再配置処理部は、
前記第１データの複製データを取得し、
前記取得された第１データの複製データを前記第１計算機に格納することによって前記アクセス要求の対象となるデータの配置を変更することを特徴とする計算機システム。
【請求項６】
請求項１から請求項３のいずれか一つに記載の計算機システムであって、
前記再配置処理部は、
前記第１データを取得し、
前記取得された第１データを前記第１計算機に格納し、
前記第１データを格納する他の前記計算機から前記第１データを削除することによって前記アクセス要求の対象となるデータの配置を変更することを特徴とする計算機システム。
【請求項７】
請求項１から請求項３のいずれか一つに記載の計算機システムであって、
前記管理範囲は、前記計算機が管理するデータの範囲である第１管理範囲と、前記他の計算機が管理するデータの複製データの範囲である第２管理範囲とを含み、
前記データベースを構成する計算機は、前記第１管理範囲に含まれる前記データと、前記第２管理範囲に含まれる前記複製データとを格納し、
前記再配置処理部は、
前記第１計算機が前記第１管理範囲に含まれる前記データとして前記第１データを保持していない場合、前記第１計算機が前記第２管理範囲に含まれる前記複製データとして前記第１データを保持するか否かを判定し、
前記第１計算機が前記第２管理範囲に含まれる前記複製データとして前記第１データを保持していないと判定された場合に、他の前記計算機から前記第１データを取得し、前記取得された第１データを前記第１計算機に格納することを特徴とする計算機システム。
【請求項８】
請求項１から請求項３のいずれか一つに記載の計算機システムであって、
前記アルゴリズム管理部は、
前記データベースを構成する計算機のうち、負荷が低い計算機を特定し、
前記特定された計算機が前記データの配置先となるように前記分散アルゴリズムを選択し、
前記選択された分散アルゴリズムに切り替えることを特徴とする計算機システム。
【請求項９】
請求項１から請求項３のいずれか一つに記載の計算機システムであって、
前記再配置処理部は、配置が変更された前記データの識別子、配置が変更される前に前記データが格納されていた前記計算機の識別子、配置が変更された後に前記データが格納された前記計算機の識別子及び前記データが再配置された時刻を含む履歴表示情報を生成することを特徴とする計算機システム。
【請求項１０】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムにおけるデータ管理方法であって、
前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記データベースを構成する前記各計算機には、前記各計算機にデータを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、
前記データベースには、キー及びデータ値から構成される前記データが格納され、
前記分散アルゴリズムは、前記キーの範囲を示す管理範囲を決定するためのアルゴリズムであり、
前記方法は、
前記計算機が、前記データベースを構成する各計算機における負荷に関する負荷情報を取得する第１のステップと、
前記計算機が、前記取得された負荷情報に基づいて前記計算機システムにおける前記分散アルゴリズムを切り替えることによって、少なくとも二つ以上の前記計算機の管理範囲を変更する第２のステップと、
前記計算機が、切り替えられた前記分散アルゴリズムに基づいて、アクセス要求の対象となるデータの配置を変更する第３のステップと、を含み、
前記第３のステップは、
前記分散アルゴリズムが切り替えられた後に、第１計算機が第１データに対するアクセス要求を受信した場合に、前記切り替えられた後の前記分散アルゴリズムに基づいて、前記第１データが前記第１計算機の前記管理範囲に含まれるか否かを判定するステップと、
前記第１データが前記第１計算機の管理範囲に含まれていると判定された場合、前記第１データが前記第１計算機に格納されているか否かを判定するステップと、
前記第１データが前記第１計算機に格納されていない場合に、前記第１データを格納する他の前記計算機から前記第１データを取得し、前記第１データを前記第１計算機に格納するステップと、を含むことを特徴とするデータ管理方法。
【請求項１１】
請求項１０に記載のデータ管理方法であって、
前記第３のステップでは、前記データベースを構成する計算機の負荷が所定の閾値以上又は前記データベースを構成する計算機の負荷が所定の閾値以下の場合に、前記分散アルゴリズムを切り替えることを特徴とするデータ管理方法。
【請求項１２】
請求項１０又は請求項１１に記載のデータ管理方法であって、
前記方法は、さらに、
前記データベースを構成する計算機の負荷が所定の閾値以上であると判定され、第１分散アルゴリズムから第２分散アルゴリズムに切り替えられた後に、前記データベースを構成する計算機の負荷が所定の閾値以下であると判定された場合に、前記計算機が、前記第２分散アルゴリズムから前記第１分散アルゴリズムに切り替えるステップを含むことを特徴とするデータ管理方法。
【請求項１３】
請求項１１又は請求項１２に記載のデータ管理方法であって、
前記データベースを構成する計算機の負荷は、前記計算機に対するアクセス数又は前記計算機における前記メモリの使用量の少なくともいずれかであることを特徴とするデータ管理方法。
【請求項１４】
請求項１０から請求項１２のいずれか一つに記載のデータ管理方法であって、
前記第３のステップは、
前記第１データの複製データを取得するステップと、
前記取得された第１データの複製データを前記第１計算機に格納するステップと、を含むことを特徴とするデータ管理方法。
【請求項１５】
請求項１０から請求項１２のいずれか一つに記載のデータ管理方法であって、
前記第３のステップは、
前記第１データを取得するステップと、
前記取得された第１データを前記第１計算機に格納するステップと、
前記第１データを格納する他の前記計算機から前記第１データを削除するステップと、を含むことを特徴とするデータ管理方法。
【請求項１６】
請求項１０から請求項１２のいずれか一つに記載のデータ管理方法であって、
前記管理範囲は、前記計算機が管理するデータの範囲である第１管理範囲と、前記他の計算機が管理するデータの複製データの範囲である第２管理範囲とを含み、
前記データベースを構成する計算機は、前記第１管理範囲に含まれる前記データと、前記第２管理範囲に含まれる前記複製データとを格納し、
前記第３のステップは、
前記第１計算機が前記第１管理範囲に含まれる前記データとして前記第１データを保持していない場合、前記第１計算機が前記第２管理範囲に含まれる前記複製データとして前記第１データを保持するか否かを判定するステップと、
前記第１計算機が前記第２管理範囲に含まれる前記複製データとして前記第１データを保持していないと判定された場合に、他の前記計算機から前記第１データを取得し、前記取得された第１データを前記第１計算機に格納するステップと、を含むことを特徴とするデータ管理方法。
【請求項１７】
請求項１０から請求項１２のいずれか一つに記載のデータ管理方法であって、
前記第２のステップは、
前記データベースを構成する計算機のうち、負荷が低い計算機を特定するステップと、
前記特定された計算機が前記データの配置先となるように前記分散アルゴリズムを選択するステップと、
前記選択された分散アルゴリズムに切り替えるステップと、を含むことを特徴とするデータ管理方法。
【請求項１８】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムに含まれる前記計算機が実行するプログラムであって、
前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記データベースを構成する前記各計算機には、前記各計算機にデータを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、
前記データベースには、キー及びデータ値から構成される前記データが格納され、
前記分散アルゴリズムは、前記キーの範囲を示す管理範囲を決定するためのアルゴリズムであり、
前記プログラムは、
前記データベースを構成する各計算機における負荷に関する負荷情報を取得する第１の手順と、
前記取得された負荷情報に基づいて前記計算機システムにおける前記分散アルゴリズムを切り替えることによって、少なくとも二つ以上の前記計算機の管理範囲を変更する第２の手順と、
切り替えられた前記分散アルゴリズムに基づいて、アクセス要求の対象となるデータの配置を変更する第３の手順と、を前記計算機に実行させ、
前記第３の手順は、
前記分散アルゴリズムが切り替えられた後に、第１計算機が第１データに対するアクセス要求を受信した場合に、前記切り替えられた後の前記分散アルゴリズムに基づいて、前記第１データが前記第１計算機の前記管理範囲に含まれるか否かを判定する手順と、
前記第１データが前記第１計算機の管理範囲に含まれていると判定された場合、前記第１データが前記第１計算機に格納されているか否かを判定する手順と、
前記第１データが前記第１計算機に格納されていない場合に、前記第１データを格納する他の前記計算機から前記第１データを取得し、前記第１データを前記第１計算機に格納する手順と、を含むことを特徴とするプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、前記データベースを構成する前記各計算機には、前記各計算機にデータを分散して配置させるための分散アルゴリズムに基づいてデータが配置され、前記データベースには、キー及びデータ値から構成される前記データが格納され、前記分散アルゴリズムは、前記キーの範囲を示す管理範囲を決定するためのアルゴリズムであり、前記計算機システムは、前記データベースを構成する各計算機における負荷に関する負荷情報を管理する負荷情報管理部と、前記負荷情報に基づいて前記計算機システムにおける前記分散アルゴリズムを切り替えることによって、少なくとも二つ以上の前記計算機の管理範囲を変更するアルゴリズム管理部と、切り替えられた前記分散アルゴリズムに基づいて、アクセス要求の対象となるデータの配置を変更する再配置処理部と、を有し、前記再配置処理部は、前記分散アルゴリズムが切り替えられた後に、第１計算機が第１データに対するアクセス要求を受信した場合に、前記切り替えられた後の前記分散アルゴリズムに基づいて、前記第１データが前記第１計算機の前記管理範囲に含まれるか否かを判定し、前記第１データが前記第１計算機の管理範囲に含まれていると判定された場合、前記第１データが前記第１計算機に格納されているか否かを判定し、前記第１データが前記第１計算機に格納されていない場合に、前記第１データを格納する他の前記計算機から前記第１データを取得し、前記第１データを前記第１計算機に格納することを特徴とする。
【国際調査報告】
2013073020.tif 000033
2013073020.tif 000034
2013073020.tif 000035
2013073020.tif 000036