(57)【要約】【課題】サーバの輻輳を軽減し、システム全体のリソースを有効活用することを課題とする。【解決手段】情報処理システム１では、要求処理サーバ１０が、キーを含むアクセス要求を受け付けた場合には、該キーに対応するデータを記憶する分散ＫＶＳサーバ５０に対してアクセスを行う。そして、要求処理サーバ１０が、キーごとに、受け付けたアクセス要求の数であるアクセス回数を計数する。また、複製管理サーバ２０が、要求処理サーバ１０からキーごとのアクセス回数を取得し、取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応するキーを複製する個数を決定する。続いて、複製管理サーバ２０が、決定された個数分のキーの複製を作成し、作成されたキーの複製を、複数の分散ＫＶＳサーバ５０のうちのいずれかの分散ＫＶＳサーバ５０に記憶されるデータであって、アクセス回数が閾値を超えたキーに対応するデータに割り当てる。【選択図】図１
2015095246.tif 000002
【特許請求の範囲】
【請求項１】
データと各データを識別するキーとを対応付けて記憶する複数の記憶装置と、前記複数の記憶装置に対してアクセスを行うサーバ装置と、記憶装置に記憶されるデータに対して前記キーを割り当てる管理装置とを有する情報処理システムにおいて、
前記サーバ装置が、
前記キーを含むアクセス要求を受け付けた場合には、該キーに対応するデータを記憶する記憶装置に対してアクセスを行うアクセス部と、
前記キーごとに、受け付けたアクセス要求の数であるアクセス回数を計数する計数部と、
を備え、
前記管理装置が、
前記サーバ装置からキーごとのアクセス回数を取得する取得部と、
前記取得部によって取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応するキーを複製する個数を決定する決定部と、
前記決定部によって決定された個数分のキーの複製を作成する作成部と、
前記作成部によって作成されたキーの複製を、前記複数の記憶装置のうちのいずれかの記憶装置に記憶されるデータであって、前記アクセス回数が前記閾値を超えたキーに対応するデータに割り当てる割当部と、
を備えることを特徴とする情報処理システム。
【請求項２】
前記決定部は、前記アクセス回数が前記閾値を超えている場合に、前記アクセス回数を前記閾値で除算した値に応じて、前記個数を決定することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記割当部によって前記キーの複製が前記データに割り当てられる際に、該キーの複製に対応するデータを識別するキーが既に前記記憶装置に割り当てられているか否かを判定する判定部をさらに備え、
前記判定部によって前記キーが既に前記記憶装置に割り当てられていると判定された場合には、前記キーの複製を割り当てる処理を再度行うことを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記アクセス部は、前記キーを含むアクセス要求を受け付けた場合に、該キーが複製されたキーであるか判定し、複製されているキーである場合には、複製されたキーのなかから一つのキーを選択し、該キーを用いて前記記憶装置に対してアクセスを行うことを特徴とする請求項１〜３のいずれか一つに記載の情報処理システム。
【請求項５】
データと各データを識別するキーとを対応付けて記憶する複数の記憶装置に対してアクセスを行うサーバ装置から、キーごとのアクセス回数を取得する取得部と、
前記取得部によって取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応するキーを複製する個数を決定する決定部と、
前記決定部によって決定された個数分のキーの複製を作成する作成部と、
前記作成部によって作成されたキーの複製を、前記複数の記憶装置のうちのいずれかの記憶装置に記憶されるデータであって、前記アクセス回数が前記閾値を超えたキーに対応するデータに割り当てる割当部と、
を備えることを特徴とする管理装置。
【請求項６】
データと各データを識別するキーとを対応付けて記憶する複数の記憶装置に対する前記キーを含むアクセス要求を受け付けた場合に、前記キーごとに、受け付けたアクセス要求の数であるアクセス回数を計数する計数部と、
前記キーを含むアクセス要求を受け付けた場合に、該キーが、前記計数部によって計数されたアクセス回数が所定の閾値を超えているキーの複製キーであるか判定し、複製されているキーであると判定した場合には、複製されたキーのなかから一つのキーを選択し、該キーを用いて前記記憶装置に対してアクセスを行うアクセス部と、
を備えることを特徴とするサーバ装置。
【請求項７】
データと各データを識別するキーとを対応付けて記憶する複数の記憶装置に対してアクセスを行うサーバ装置から、キーごとのアクセス回数を取得する取得ステップと、
前記取得ステップによって取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応するキーを複製する個数を決定する決定ステップと、
前記決定ステップによって決定された個数分のキーの複製を作成する作成ステップと、
前記作成ステップによって作成されたキーの複製を、前記複数の記憶装置のうちのいずれかの記憶装置に記憶されるデータであって、前記アクセス回数が前記閾値を超えたキーに対応するデータに割り当てる割当ステップと、
をコンピュータに実行させることを特徴とするキー割当プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、管理装置、サーバ装置及びキー割当プログラムに関する。
【背景技術】
【０００２】
従来、コンピュータシステムにおけるデータの保存・管理手法の一つとして、ＫＶＳ（Key  Value  Store）が知られている。ＫＶＳでは、任意の保存したいデータ（バリュー）に対応する一意の標識（キー）を設定し、バリューとキーをペアで保存するというものである。また、データを複数のサーバや記憶装置などに分散して保存できる機能を持った分散ＫＶＳシステムも知られている。
【０００３】
このような分散ＫＶＳでは、一般に、コンシステントハッシュ法などに従って、キーのハッシュ値から、そのキーのデータを格納するサーバを決定する。ハッシュ関数のランダム性から、各サーバにはおよそ均等な数のキーが割り当てられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１５２５６９号公報
【非特許文献】
【０００５】
【非特許文献１】David  Karger,  Eeic  Lehman,  Tom  Leighton,  Matthew  Levine,  Daniel  Lewin,  and  Rina  Panigrahy,  "Consistent  Hashing  and  Random  Trees:  Distributed  Caching  Protocols  for  Relieving  Hot  Spots  on  the  World  Wide  Web  "in  Proceedings  of  the  29th  annual  ACM  Symposium  on  Theory  of  Computing  （STOC'97）,  pp.654-663,  May  1997.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の分散ＫＶＳシステムの技術では、アクセスが特定のキーに集中した場合には、そのキーが割り当てられたサーバへのアクセスが集中してしまい、サーバが輻輳するという課題があった。また、アクセスが一部のサーバに集中してしまうことで、システム全体のリソースを有効活用できないという課題があった。
【０００７】
そこで、この発明は、サーバの輻輳を軽減し、システム全体のリソースを有効活用することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、開示の情報処理システムは、データと各データを識別するキーとを対応付けて記憶する複数の記憶装置と、前記複数の記憶装置に対してアクセスを行うサーバ装置と、記憶装置に記憶されるデータに対して前記キーを割り当てる管理装置とを有する情報処理システムにおいて、前記サーバ装置が、前記キーを含むアクセス要求を受け付けた場合には、該キーに対応するデータを記憶する記憶装置に対してアクセスを行うアクセス部と、前記キーごとに、受け付けたアクセス要求の数であるアクセス回数を計数する計数部と、を備え、前記管理装置が、前記サーバ装置からキーごとのアクセス回数を取得する取得部と、前記取得部によって取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応するキーを複製する個数を決定する決定部と、前記決定部によって決定された個数分のキーの複製を作成する作成部と、前記作成部によって作成されたキーの複製を、前記複数の記憶装置のうちのいずれかの記憶装置に記憶されるデータであって、前記アクセス回数が前記閾値を超えたキーに対応するデータに割り当てる割当部と、を備えることを特徴とする。
【０００９】
また、開示の管理装置は、データと各データを識別するキーとを対応付けて記憶する複数の記憶装置に対してアクセスを行うサーバ装置から、キーごとのアクセス回数を取得する取得部と、前記取得部によって取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応するキーを複製する個数を決定する決定部と、前記決定部によって決定された個数分のキーの複製を作成する作成部と、前記作成部によって作成されたキーの複製を、前記複数の記憶装置のうちのいずれかの記憶装置に記憶されるデータであって、前記アクセス回数が前記閾値を超えたキーに対応するデータに割り当てる割当部と、を備えることを特徴とする。
【００１０】
また、開示のサーバ装置は、データと各データを識別するキーとを対応付けて記憶する複数の記憶装置に対する前記キーを含むアクセス要求を受け付けた場合に、前記キーごとに、受け付けたアクセス要求の数であるアクセス回数を計数する計数部と、前記キーを含むアクセス要求を受け付けた場合に、該キーが、前記計数部によって計数されたアクセス回数が所定の閾値を超えているキーの複製キーであるか判定し、複製されているキーであると判定した場合には、複製されたキーのなかから一つのキーを選択し、該キーを用いて前記記憶装置に対してアクセスを行うアクセス部と、を備えることを特徴とする。
【００１１】
また、開示のキー割当プログラムは、データと各データを識別するキーとを対応付けて記憶する複数の記憶装置に対してアクセスを行うサーバ装置から、キーごとのアクセス回数を取得する取得ステップと、前記取得ステップによって取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応するキーを複製する個数を決定する決定ステップと、前記決定ステップによって決定された個数分のキーの複製を作成する作成ステップと、前記作成ステップによって作成されたキーの複製を、前記複数の記憶装置のうちのいずれかの記憶装置に記憶されるデータであって、前記アクセス回数が前記閾値を超えたキーに対応するデータに割り当てる割当ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本願に開示する情報処理システム、管理装置、サーバ装置及びキー割当プログラムは、サーバの輻輳を軽減し、システム全体のリソースを有効活用することが可能である。
【図面の簡単な説明】
【００１３】
【図１】図１は、第一の実施形態に係る情報処理システムの構成の一例を示す図である。
【図２】図２は、第一の実施形態に係る情報処理システムの概要を説明する図である。
【図３】図３は、第一の実施形態に係る要求処理サーバの構成を示すブロック図である。
【図４】図４は、第一の実施形態に係る要求頻度記憶部に記憶される情報の一例を示す図である。
【図５】図５は、第一の実施形態に係る複製管理情報テーブル記憶部に記憶される情報の一例を示す図である。
【図６】図６は、第一の実施形態に係る複製管理サーバの構成を示すブロック図である。
【図７】図７は、第一の実施形態に係る要求頻度情報テーブル記憶部に記憶される情報の一例を示す図である。
【図８】図８は、第一の実施形態に係る複製管理サーバにおけるキー割当処理を説明する図である。
【図９】図９は、第一の実施形態に係る情報処理システムにおけるサービス要求応答処理の流れを説明するためのシーケンス図である。
【図１０】図１０は、第一の実施形態に係る情報処理システムにおける複製数変更処理の流れを説明するためのシーケンス図である。
【図１１】図１１は、第一の実施形態に係る複製管理サーバにおける複製数変更判断処理の流れを説明するためのフローチャートである。
【図１２】図１２は、特定のキーにアクセスが集中し、該キーを割り当てられた分散ＫＶＳサーバに負荷が集中する例を説明する図である。
【図１３】図１３は、第二の実施形態に係る複製管理サーバの構成を示すブロック図である。
【図１４】図１４は、第二の実施形態に係る複製管理情報テーブル記憶部に記憶される情報の一例を示す図である。
【図１５】図１５は、第二の実施形態に係る要求頻度情報テーブル記憶部に記憶される情報の一例を示す図である。
【図１６】図１６は、第二の実施形態に係る情報処理システムにおける複製数変更処理の流れを説明するためのシーケンス図である。
【図１７】図１７は、キー割当プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に図面を参照して、この発明に係る情報処理システム、管理装置、サーバ装置及びキー割当プログラムの実施形態を詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
【００１５】
［第一の実施形態］
以下の実施形態では、第一の実施形態に係る情報処理システムの構成、要求処理サーバの構成、複製管理サーバの構成及び情報処理システムにおける処理の流れを順に説明し、最後に第一の実施形態による効果を説明する。
【００１６】
［システムの構成］
まず、第一の実施形態に係る情報処理システム１の構成の一例を説明する。図１は、第一の実施形態に係る情報処理システムの構成の一例を示す図である。図１に示すように、情報処理システム１は、複数の要求処理サーバ１０Ａ〜１０Ｅ、複製管理サーバ２０、複数のクライアント３０Ａ〜３０Ｃ、負荷分散装置４０、複数の分散ＫＶＳサーバ５０Ａ〜５０Ｅ、複数のＩＰネットワーク６０Ａ〜６０Ｃを有する。
【００１７】
なお、要求処理サーバ１０Ａ〜１０Ｅ、クライアント３０Ａ〜３０Ｃ、分散ＫＶＳサーバ５０Ａ〜５０Ｅ、ＩＰネットワーク６０Ａ〜６０Ｃについて、特に区別することなく説明する場合には、「要求処理サーバ１０」、「クライアント３０」、「分散ＫＶＳサーバ５０」、「ＩＰネットワーク６０」とそれぞれ記載する場合がある。また、図１に例示した各装置の設置数は、あくまで一例であり、これに限定されるものではない。
【００１８】
また、図１に示すように、クライアント３０Ａ〜３０Ｃと負荷分散装置４０とは、ＩＰネットワーク６０Ａを介して接続されている。また、負荷分散装置４０と複数の要求処理サーバ１０Ａ〜１０Ｅ及び複製管理サーバ２０とは、ＩＰネットワーク６０Ｂを介して接続されている。また、複数の要求処理サーバ１０Ａ〜１０Ｅ及び複製管理サーバ２０と複数の分散ＫＶＳサーバ５０Ａ〜５０Ｅとは、ＩＰネットワーク６０Ｃを介して接続されている。
【００１９】
クライアント３０Ａ〜３０Ｃは、サービス要求を負荷分散装置４０に送信し、負荷分散装置４０から応答されるサービス応答を用いて、ユーザに各種サービスを提供する汎用端末である。
【００２０】
負荷分散装置４０は、クライアント３０Ａ〜３０Ｃから送信されたサービス要求を、その到着した順に、各要求処理サーバ１０Ａ〜１０Ｅに振り分ける汎用負荷分散装置である。
【００２１】
分散ＫＶＳサーバ５０Ａ〜５０Ｅは、汎用な分散ＫＶＳシステムのサーバソフトウェアが動作する汎用なサーバ装置である。分散ＫＶＳサーバ５０Ａ〜５０Ｅでは、データ（バリュー）と各データを識別するキーとを対応付けて記憶する。
【００２２】
要求処理サーバ１０Ａ〜１０Ｅは、分散ＫＶＳサーバ５０Ａ〜５０Ｅに対してアクセスを行う。ここで、図２を用いて、第一の実施形態に係る情報処理システムの概要について説明する。図２は、第一の実施形態に係る情報処理システムの概要を説明する図である。なお、図２では、３台の要求処理サーバ１０Ａ〜１０Ｃが設置され、４台の分散ＫＶＳサーバ５０Ａ〜５０Ｄが設置されている場合を例として説明する。また、図２では、クライアント３０やＩＰネットワーク６０については図示を省略している。
【００２３】
図２に示すように、要求処理サーバ１０は、要求処理アプリ１１０、アクセス変換ラッパー１２０、分散ＫＶＳクライアントライブラリ１３０の各ソフトウェアが動作する汎用なサーバ装置であり、上記ソフトウェアはプロセス間通信によって通信する。
【００２４】
要求処理アプリ１１０は、クライアント３０から送信されたサービス要求に対するサービス応答を作成する汎用なアプリケーションソフトウェアであり、アクセス変換ラッパー１２０を介して分散ＫＶＳサーバ５０にアクセスすることにより、サービス応答の作成に必要なデータを取得する。
【００２５】
アクセス変換ラッパー１２０は、後述するアクセス部１２ａを有するソフトウェアであり、要求処理アプリ１１０に対して、分散ＫＶＳクライアントライブラリ１３０と同等のインターフェースを提供し、要求処理アプリ１１０から送信された参照要求、更新要求、削除要求について、複製管理サーバ２０から通知された複製管理情報に従って対象キーが複製されているかを判定し、複製されていた場合にはその要求を変換して分散ＫＶＳクライアントライブラリ１３０に送信する。
【００２６】
また、アクセス変換ラッパー１２０は、後述する計数部１２ｂを有し、要求処理アプリ１１０から送信された参照要求について、対象キー毎の要求頻度を複製管理サーバ２０に通知する。
【００２７】
分散ＫＶＳクライアントライブラリ１３０は、汎用な分散ＫＶＳシステムのクライアントソフトウェアであり、アクセス変換ラッパー１２０から送信された各要求について、振り分け先の分散ＫＶＳサーバ５０を決定し、要求を送信する。
【００２８】
複製管理サーバ２０は、要求処理サーバ１０Ａ〜１０Ｃから送信された要求頻度情報に従って各キーの複製数を決定し、決定した複製数分の複製キーを分散ＫＶＳサーバ５０に対して作成し、作成した複製キーを分散ＫＶＳサーバ５０Ａ〜５０Ｄに割り当てる。また、複製管理サーバ２０上にも分散ＫＶＳクライアントライブラリ２１０が存在し、後述する参照要求や追加要求の送信、およびそれら要求に対する応答の受信については、分散ＫＶＳクライアントライブラリ２１０を介して行われる。
【００２９】
［要求処理サーバの構成］
次に、図３を用いて、図１に示した要求処理サーバ１０の構成を説明する。図３は、第一の実施形態に係る要求処理サーバの構成を示すブロック図である。図３に示すように、要求処理サーバ１０は、通信処理部１１、制御部１２および記憶部１３を有する。
【００３０】
通信処理部１１は、接続される複製管理サーバ２０、負荷分散装置４０および分散ＫＶＳサーバ５０との間でやり取りする各種情報に関する通信を制御する。例えば、通信処理部１１は、参照対象キーごとの要求頻度を複製管理サーバ２０に対して送信し、複製管理情報テーブルを複製管理サーバ２０から受信する。
【００３１】
また、通信処理部１１は、サービス要求を負荷分散装置４０から受信し、サービス要求に対する応答であるサービス応答を負荷分散装置４０に対して送信する。また、通信処理部１１は、参照要求、更新要求、削除要求を分散ＫＶＳサーバ５０に対して送信し、各要求に対応する応答である参照応答、更新応答、削除応答を分散ＫＶＳサーバ５０から受信する。
【００３２】
記憶部１３は、図３に示すように、要求頻度記憶部１３ａおよび複製管理情報テーブル記憶部１３ｂを有する。記憶部１３は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
【００３３】
要求頻度記憶部１３ａは、各参照対象キーの要求頻度を記憶する。具体的には、要求頻度記憶部１３ａは、参照対象キーごとに、後述する計数部１２ｂによって計数されたアクセス要求の回数である要求頻度を記憶する。
【００３４】
ここで、図４を用いて、要求頻度記憶部１３ａに記憶される情報の一例について説明する。図４は、第一の実施形態に係る要求頻度記憶部に記憶される情報の一例を示す図である。図４に例示するように、要求頻度記憶部１３ａは、参照対象キーを一意に識別する文字列である「参照対象キー」と、各参照対象キーがアクセス要求の対象となった回数である「要求頻度」とを対応付けて記憶する。なお、要求頻度の値は、所定の時間（例えば、５分）内における要求頻度であり、５分経過するたびに値がリセットされるものである。
【００３５】
具体的な例を挙げて説明すると、要求頻度記憶部１３ａは、例えば、参照対象キー「ａａａ」に対応する要求頻度として「４０」を記憶し、参照対象キー「ｂｂｂ」に対応する要求頻度として「７５」を記憶し、参照対象キー「ｃｃｃ」に対応する要求頻度として「１５０」を記憶する。
【００３６】
複製管理情報テーブル記憶部１３ｂは、複製管理サーバ２０が作成した複製管理情報テーブルを記憶する。具体的には、複製管理情報テーブル記憶部１３ｂは、複製管理情報テーブルとして、複製された参照対象キーごとに、複製されたキーの数を記憶する。
【００３７】
ここで、図５を用いて、複製管理情報テーブル記憶部１３ｂに記憶される情報の一例について説明する。図５は、第一の実施形態に係る複製管理情報テーブル記憶部に記憶される情報の一例を示す図である。図５に例示するように、複製管理情報テーブル記憶部１３ｂは、複製管理サーバ２０により複製された参照対象キーを識別する文字列である「キー」と、参照対象キーの複製された数を示す「複製数」とを対応付けて記憶する。
【００３８】
具体的な例を挙げて説明すると、複製管理情報テーブル記憶部１３ｂは、例えば、キー「ｄｄｄ」に対応する複製数として「３」を記憶し、「ｇｇｇ」に対応する複製数として「６」を記憶し、「ｈｈｈ」に対応する複製数として「１４」を記憶する。
【００３９】
図３に戻って、制御部１２は、アクセス部１２ａおよび計数部１２ｂを有する。ここで、制御部１２は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路やＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路である。
【００４０】
アクセス部１２ａは、参照対象キーを含むアクセス要求を受け付けた場合には、該参照対象キーに対応するデータを記憶する分散ＫＶＳサーバ５０に対してアクセスを行う。具体的には、アクセス部１２ａは、参照対象キーを含むアクセス要求を受け付けた場合に、該キーが複製されたキーであるか判定し、複製されているキーである場合には、複製されたキーのなかから一つのキーを選択し、該キーを用いて分散ＫＶＳサーバ５０に対してアクセスを行う。
【００４１】
例えば、アクセス部１２ａは、要求処理アプリ１１０から分散ＫＶＳサーバ５０に対して送信される、参照、更新、削除の各要求について、複製管理サーバ２０により作成された複製管理情報に基づいて、対象のキーが複製されているか否かを判定し、複製されているキーに対する要求であれば、参照要求を変換して、分散ＫＶＳサーバ５０に送信する。
【００４２】
例えば、アクセス部１２ａは、複製されているキーに対する要求である場合に、参照要求については、複製キーの中からランダムで選択したキーに対する参照要求に変換し、更新要求および削除要求については、すべての複製キーに対する更新要求、削除要求に変換する。
【００４３】
計数部１２ｂは、参照対象キーごとに、受け付けたアクセス要求の数であるアクセス回数を計数する。具体的には、計数部１２ｂは、要求処理アプリ１１０から送信される参照要求に含まれる対象キーごとの要求頻度をカウントし、要求頻度記憶部１３ａに格納する。また、計数部１２ｂは、要求頻度記憶部１３ａに格納した情報を要求頻度情報通知として、複製管理サーバ２０に対して定期的に送信する。例えば、計数部１２ｂは、５分後ごとに、要求頻度情報通知を複製管理サーバ２０に対して送信する。また、計数部１２ｂは、要求頻度情報通知を送信した際には、要求頻度記憶部１３ａに記憶される要求頻度の値をリセットする。
【００４４】
［複製管理サーバの構成］
次に、図６を用いて、図１に示した複製管理サーバ２０の構成を説明する。図６は、第一の実施形態に係る複製管理サーバの構成を示すブロック図である。図６に示すように、複製管理サーバ２０は、通信処理部２１、制御部２２および記憶部２３を有する。
【００４５】
通信処理部２１は、接続される要求処理サーバ１０および分散ＫＶＳサーバ５０との間でやり取りする各種情報に関する通信を制御する。例えば、通信処理部２１は、参照対象キーごとの要求頻度を要求処理サーバ１０から受信し、複製管理情報テーブルを複製管理サーバ２０に対して送信する。また、通信処理部２１は、作成した複製キーをＫＶＳサーバ５０に対して送信する。
【００４６】
記憶部２３は、図６に示すように、複製管理情報記憶部２３ａおよび要求頻度情報テーブル記憶部２３ｂを有する。記憶部２３は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
【００４７】
複製管理情報テーブル記憶部２３ａは、後述する作成部２２ｃが作成した複製管理情報テーブルを記憶する。具体的には、複製管理情報テーブル記憶部２３ａは、複製管理情報テーブルとして、複製された参照対象キーごとに、複製されたキーの数を記憶する。なお、複製管理情報テーブル記憶部２３ａは、前述した複製管理情報テーブル記憶部１３ｂに記憶される情報と同様の情報を記憶しており、図５に例示するように、複製された参照対象キーを識別する文字列である「キー」と、参照対象キーの複製された数を示す「複製数」とを対応付けて記憶する。
【００４８】
要求頻度情報テーブル記憶部２３ｂは、参照対象キーごとの要求頻度とともに、各参照対象キーの複製される数を記憶する。具体的には、要求頻度情報テーブル記憶部２３ｂは、参照対象キーごとの要求頻度とともに、後述する決定部２２ｂによって決定された参照対象キーの複製数を記憶する。
【００４９】
ここで、図７を用いて、要求頻度情報テーブル記憶部２３ｂに記憶される情報の一例について説明する。図７は、第一の実施形態に係る要求頻度情報テーブル記憶部に記憶される情報の一例を示す図である。図７に例示するように、参照対象キーを識別する文字列である「参照対象キー」と、各参照対象キーがアクセス要求の対象となった回数である「要求頻度」と、目標とする参照対象キーの複製数である「複製目標Ｍ」と、後述する決定部２２ｂによって決定された実際に複製する参照対象キーの数である「複製数Ｎ」とを対応付けて記憶する。
【００５０】
具体的な例を挙げて説明すると、要求頻度情報テーブル記憶部２３ｂは、例えば、参照対象キー「ａａａ」に対応する要求頻度として「４０」、複製目標Ｍとして「０」、複製数Ｎとして「０」を記憶する。また、例えば、要求頻度情報テーブル記憶部２３ｂは、参照対象キー「ｄｄｄ」に対応する要求頻度として「６１０」、複製目標Ｍとして「２」、複製数Ｎとして「３」を記憶する。
【００５１】
図６に戻って、制御部２２は、取得部２２ａ、決定部２２ｂ、作成部２２ｃおよび割当部２２ｄを有する。ここで、制御部２２は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路やＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路である。
【００５２】
取得部２２ａは、要求処理サーバ１０から参照対象キーごとのアクセス回数を取得する。具体的には、取得部２２ａは、要求処理サーバ１０の要求処理アプリ１１０から分散ＫＶＳサーバ５０に対する参照要求について、参照対象キー毎の要求頻度を取得する。そして、取得部２２ａは、取得した要求頻度を要求頻度情報テーブル記憶部２３ｂに格納する。
【００５３】
決定部２２ｂは、取得部２２ａによって取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応する参照対象キーを複製する個数を決定する。具体的には、要求頻度情報テーブル記憶部２３ｂから参照要求キー毎の要求頻度に応じて、各参照要求キーの複製数をそれぞれ決定し、要求頻度情報テーブル記憶部２３ｂに格納する。
【００５４】
また、決定部２２ｂは、取得部２２ａによって取得されたアクセス回数が閾値を超えている場合に、アクセス回数を閾値で除算した値に応じて、個数を決定する。ここで、各参照要求キーの複製数を決定する処理について詳しく説明する。例えば、決定部２２ｂは、取得部２２ａによって取得された要求頻度を対象キーごとに合算し、前述した図７に例示するような要求頻度情報テーブルを作成し、要求頻度情報テーブル記憶部２３ｂに格納する。
【００５５】
ここで、決定部２２ｂは、各キーの要求頻度を予め定める閾値で除算し、小数点未満を切り捨てた整数を、要求頻度情報テーブルにおける複製目標Ｍとして算出する。例えば、閾値を「３００」とした場合に、要求頻度が６１０であるキー「ｄｄｄ」の複製目標Ｍは、「２」となる。
【００５６】
複製目標Ｍは、分散ＫＶＳサーバ５０の負荷の偏りを軽減するために、いくつのサーバにキーを複製すべきかを表すものであり、例えば、複製目標Ｍが「２」であるキー「ｄｄｄ」の場合には、キー「ｄｄｄ」が元々割り当てられている分散ＫＶＳサーバ５０とは別の分散ＫＶＳサーバ２台に対して、キー「ｄｄｄ」の複製キーを作成する必要があることを意味する。
【００５７】
ところが、キーがどの分散ＫＶＳサーバ５０に割り当てられるかは、分散ＫＶＳクライアントライブラリ１３０が、例えばコンシステントハッシュ法などによって、ある種ランダムに決定されるものであり、割当先の分散ＫＶＳサーバ５０をあらかじめ指定することができない。このため、複製目標Ｍ分の複製キーを作成したとしても、それらが全て異なる分散ＫＶＳサーバ５０に割り当てられるとは限らない。
【００５８】
そこで、複製キーがランダムに各分散ＫＶＳサーバ５０に割り当てられる場合に、複製キーが割り当てられる分散ＫＶＳサーバ５０の数が複製目標Ｍ以上となるために必要な複製数の期待値を複製数Ｎと定義する。決定部２２ｂは、複製数Ｎについて、下記の（１）式で算出し、小数点以下を切り上げて整数化した値を複製数Ｎとする。なお、下記の（１）において、分散ＫＶＳサーバ５０のサーバ数をＳとする。
【００５９】
【数１】
2015095246.tif 000003
【００６０】
なお、あるキーが元々割り当てられている分散ＫＶＳサーバ以外の全サーバにそれぞれ１つずつ複製キーが存在する状態が最も負荷を分散できる状態であるため、複製目標Ｍの最大値は「Ｓ−１」とする。前述した図７に例示する要求頻度情報テーブルは、分散ＫＶＳのサーバ数Ｓが「１０」とした場合の例である。
【００６１】
その後、決定部２２ｂは、作成した要求頻度情報テーブルから複製数が１以上のものを抽出し、図５に例示したような複製管理情報テーブルを作成する。例えば、決定部２２ｂは、前回作成した複製管理情報テーブルが存在する場合には、今回作成した複製管理情報テーブルとの比較を行い、複製数が増加したレコード（新規に追加されたレコードを含む）、複製数が減少したレコード（削除されたレコードを含む）を、それぞれ抽出する。
【００６２】
また、決定部２２ｂは、前回作成時の複製管理情報テーブルが存在しなければ、今回作成した複製管理情報テーブルの全てのレコードが、複製数が増加したレコードとなる。なお、前回作成した複製管理情報テーブルについては、複製管理テーブルの比較後、不要のため削除される。
【００６３】
作成部２２ｃは、決定部２２ｂによって決定された個数分の参照対象キーの複製を作成する。具体的には、作成部２２ｃは、各参照対象キーについて、要求頻度情報テーブル記憶部２３ｂに記憶された複製数分の複製キーを作成するとともに、複製管理情報を作成して複製管理情報記憶部２３ａに格納する。
【００６４】
例えば、作成部２２ｃは、キーの文字列（例えば、「ａｂｃ」)に、あらかじめ定める区切り文字（例えば、“＿”（アンダースコア））と、１〜「複製管理情報から取得した当該キーの複製数」までの整数（例えば、「１」〜「３」)をそれぞれ付与した文字列（例えば、「ａｂｃ＿１」、「ａｂｃ＿２」、「ａｂｃ＿３」）を新たな複製キーとして作成する。
【００６５】
割当部２２ｄは、作成部２２ｃによって作成された参照対象キーの複製を、複数の分散ＫＶＳサーバのうちのいずれかの分散ＫＶＳサーバに記憶されるデータであって、アクセス回数が閾値を超えた参照対象キーに対応するデータに割り当てる。なお、参照対象キーに対応するデータに割り当てる処理の具体的な内容については、後述する図１０における複製キー追加処理として後に説明する。
【００６６】
ここで、図８を用いて、複製管理サーバ２０におけるキー割当処理の概要について具体的な例を用いて説明する。図８は、第一の実施形態に係る複製管理サーバにおけるキー割当処理を説明する図である。図８に例示するように、複製管理サーバ２０が、各キーの参照要求頻度に応じて、高頻度にアクセスが生じるキー（例えば、ｋｅｙＹ）の複製を行い、複製キー（例えば、ｋｅｙＹ＿１〜３）を分散ＫＶＳサーバ５０Ａ、５０Ｃ、５０Ｄに割り当てる。
【００６７】
そして、例えば、要求処理サーバ１０Ｂは、高頻度アクセスキーであるｋｅｙＹに対する参照要求を複製キー（ｋｅｙＹ＿２）に対する参照要求に変換し、分散ＫＶＳサーバ５０Ｃに対してアクセスを行う。
【００６８】
このように、第一の実施形態に係る情報処理システム１では、複製管理サーバ２０が、アプリケーションからの参照要求における各キーの要求頻度に応じてそのキーの複製を作成し、アプリケーションからの参照要求をそれら複製されたキーに分散させる。このため、既存の分散ＫＶＳシステムをそのまま使用しながら、かつ要求処理アプリに対して特別な機能追加を必要とすることなく、分散ＫＶＳサーバ５０における、キーのアクセス頻度の偏りに由来する負荷の偏りを軽減することが可能である。
【００６９】
［情報処理システムによる処理］
次に、図９、図１０を用いて、第一の実施形態に係る情報処理システム１による処理を説明する。図９は、第一の実施形態に係る情報処理システムにおけるサービス要求応答処理の流れを説明するためのシーケンス図である。図１０は、第一の実施形態に係る情報処理システムにおける複製数変更処理の流れを説明するためのシーケンス図である。
【００７０】
まず、図９を用いて、情報処理システム１におけるサービス要求応答処理の流れを説明する。図９では、クライアント３０から送信されたサービス要求に対して、要求処理サーバ１０がサービス応答を返すまでの処理を説明する。
【００７１】
図９に示すように、クライアント３０は、サービス要求を負荷分散装置４０に送信する（ステップＳ１０１）。そして、サービス要求を受信した負荷分散装置４０は、例えば、ラウンドロビンなどの方式によりサービス要求の転送先の要求処理サーバ１０を決定し、サービス要求を転送する（ステップＳ１０２）。ここで、サービス要求には、ユーザ名やサービス指定値、サービスオプション指定値などが含まれるものとする。
【００７２】
続いて、サービス要求を受信した要求処理サーバ１０上の要求処理アプリ１１０は、当該サービス要求に対するサービス応答の作成に必要な情報を分散ＫＶＳサーバ５０から取得するため、例えば、サービス指定値を対象キーとする参照要求を、アクセス変換ラッパー１２０に対して送信する（ステップＳ１０３）。なお、図９では説明を省略しているが、サービス応答の作成のために他にデータを取得する必要がある場合、要求処理アプリ１１０は、それらデータを取得するためのキー（例えば、ユーザ名やサービスオプション指定値など）を対象キーとする参照要求をそれぞれ送信し、必要なデータを参照応答から取得する。
【００７３】
続いて、参照要求を受信したアクセス変換ラッパー１２０は、参照要求に含まれる対象キーをキーとする参照要求を分散ＫＶＳクライアントライブラリ１３０に送信する（ステップＳ１０４）。具体的には、アクセス変換ラッパー１２０は、参照要求に含まれる対象キーをキーとして、図５において例示した複製管理情報テーブルを検索する。そして、アクセス変換ラッパー１２０は、検索の結果、該当のレコードが無い場合は、当該キーが複製されていないと判断し、アクセス変換ラッパー１２０は、要求処理アプリから送信された参照要求をそのまま分散ＫＶＳクライアントライブラリ１３０に送信する。
【００７４】
一方、アクセス変換ラッパー１２０は、該当のレコードが存在した場合、つまり当該キーが複製されている場合には、当該キーの文字列（例えば、「ａｂｃ」)に、あらかじめ定める区切り文字（例えば、“＿”（アンダースコア））と、１〜「複製管理情報から取得した当該キーの複製数」までの範囲の中からランダムに選んだ整数（例えば、「３」)を付与した文字列（例えば、「ａｂｃ＿３））を新たな対象キーとする参照要求を、分散ＫＶＳクライアントライブラリ１３０に送信する。これにより、複製されたキーに対する参照要求は、複製キー（「ａｂｃ＿３」など）のいずれかに対する参照要求に変換され、分散ＫＶＳサーバ５０の負荷の偏りを軽減することができる。
【００７５】
そして、参照要求を受信した分散ＫＶＳクライアントライブラリ１３０は、参照要求に含まれる対象キーを用いて、例えば、コンシステントハッシュ法などの方式により、当該キーのデータを保持する分散ＫＶＳサーバ５０Ｂを特定し、当該分散ＫＶＳサーバ５０Ｂに参照要求を送信する（ステップＳ１０５）。
【００７６】
そして、参照要求を受信した分散ＫＶＳサーバ５０Ｂは、参照要求に含まれる対象キーに対応するデータを自身の記憶領域から取得し、当該データを格納した参照応答を要求処理サーバ上の分散ＫＶＳクライアントライブラリ１３０に送信する（ステップＳ１０６）。なお、対象キーに対応するデータが存在しなかった場合は、空の参照応答を送信する。
【００７７】
そして、参照応答を受信した分散ＫＶＳクライアントライブラリ１３０は、アクセス変換ラッパー１２０に参照応答を転送する（ステップＳ１０７）。続いて、参照応答を受信したアクセス変換ラッパー１２０は、要求処理アプリ１１０に参照応答を転送する（ステップＳ１０８）。
【００７８】
参照応答を受信した要求処理アプリ１１０は、参照応答に含まれるデータを用いて、サービス応答を作成し、クライアント３０に送信する（ステップＳ１０９）。ここで、例えば、サービス要求を送信した各ユーザの最終要求送信時刻を記録するなどのために、分散ＫＶＳサーバ５０Ａ〜５０Ｃのデータを更新する必要がある場合には、要求処理アプリ１１０は、ユーザ名を対象キーとし、最終要求送信時刻を更新データとする更新要求をアクセス変換ラッパー１２０に送信する（ステップＳ１１０）。
【００７９】
そして、更新要求を受信したアクセス変換ラッパー１２０は、更新要求を分散ＫＶＳクライアントライブラリ１３０に送信する（ステップＳ１１１）。具体的には、更新要求を受信したアクセス変換ラッパー１２０は、参照要求の受信時と同様に、更新要求に含まれる対象キーを用いて複製管理情報テーブルを検索する。そして、アクセス変換ラッパー１２０は、検索の結果、該当のレコードが無い場合、つまり当該キーが複製されていない場合、要求処理アプリから送信された更新要求をそのまま分散ＫＶＳクライアントライブラリ１３０に送信する。
【００８０】
一方、該当のレコードが存在した場合、つまり当該キーが複製されている場合、アクセス変換ラッパー１２０は、更新要求に含まれる対象キーの文字列（例えば、「ＵｓｅｒＡ」）に、あらかじめ定める区切り文字（例えば、「＿」（アンダースコア））と、１〜「複製管理情報から取得した当該キーの複製数」（例えば、「１」〜「５」)を付与した文字列（例えば、「ＵｓｅｒＡ＿１」、「ＵｓｅｒＡ＿２」、「ＵｓｅｒＡ＿３」、「ＵｓｅｒＡ＿４」、「ＵｓｅｒＡ＿５」)および複製元のキー「ＵｓｅｒＡ」を更新対象キーとする更新要求を、分散ＫＶＳクライアントに送信する。
【００８１】
これにより、複製元のキーと全ての複製キーの更新を行う。なお、図９では説明を省略しているが、要求処理から削除要求を受信した場合も、更新要求受信時と同様に、複製元のキーと全ての複製キーを削除対象とする削除要求を分散ＫＶＳクライアントライブラリ１３０に送信する。
【００８２】
そして、それら更新要求を受信した分散ＫＶＳクライアントライブラリ１３０は、参照要求の受信時と同様に、各更新要求に含まれる対象キーを用いて、コンシステントハッシュ法などの方式により、当該キーのデータを保持する分散ＫＶＳサーバ５０Ａ〜５０Ｃを特定し、当該分散ＫＶＳサーバ５０Ａ〜５０Ｃに更新要求を送信する（ステップＳ１１２）。
【００８３】
更新要求を受信した分散ＫＶＳサーバ５０Ａ〜５０Ｃは、更新要求に含まれる対象キーに対応するデータを、更新要求に含まれるデータで上書きし、更新応答を要求処理サーバ１０上の分散ＫＶＳクライアントライブラリ１３０に送信する（ステップＳ１１３）。
【００８４】
そして、更新応答を受信した分散ＫＶＳクライアントライブラリ１３０は、アクセス変換ラッパー１２０に更新応答を転送する（ステップＳ１１４）。続いて、アクセス変換ラッパー１２０は、ステップＳ１１１において送信した全ての更新要求に対する更新応答を受信後に、更新応答を要求処理アプリ１１０に送信する（ステップＳ１１５）。
【００８５】
次に、図１０を用いて、情報処理システム１における複製数変更処理の流れを説明する。図１０では、アクセス変換ラッパー１２０から送信される各キーの要求頻度に応じて、複製管理サーバ２０がキーの複製数を決定し、複製キーの追加、削除を行う処理を説明する。なお、上記の処理において、複製管理サーバ２０は、要求処理サーバ１０が要求頻度情報を送信する間隔に合わせて、定期的に処理を行うものである。
【００８６】
図１０に示すように、各要求処理サーバ１０上のアクセス変換ラッパー１２０は、要求処理アプリ１１０から送信される参照要求に含まれる対象キーごとの要求頻度をカウントする要求頻度カウント処理を行う（ステップＳ２０１）。
【００８７】
そして、アクセス変換ラッパー１２０は、要求頻度の情報を要求頻度情報通知として複製管理サーバ２０に定期的（例えば、５分ごと）に送信する（ステップＳ２０２）。なお、要求頻度情報には、対象キーごとの要求頻度が含まれているが、期間内に受信した参照要求中のすべての対象キーの要求頻度を格納した場合に、データ量が著しく大きくなる可能性があるため、予め定める閾値（例えば、５分間の要求数が１００以上）を超える要求頻度の対象キーの情報のみを要求頻度情報に含めるようにしてもよい。
【００８８】
その後、要求頻度情報通知を受信した複製管理サーバ２０は、後に図１１を用いて詳述する複製数変更判断処理を行う（ステップＳ２０３）。そして、複製管理サーバ２０は、複製数変更判断処理で抽出した複製数の増加、減少を、それぞれ複製キーの追加、削除として分散ＫＶＳサーバ５０Ａ〜５０Ｃに対して反映するとともに、複製管理情報テーブルの更新をアクセス変換ラッパー１２０に対して通知する。この処理は、複製キーの追加処理、複製管理情報の更新通知、複製キーの削除処理の順に実施する。これは、アクセス変換ラッパー１２０が追加前や削除後の複製キーにアクセスすることを抑止するためである。
【００８９】
複製キーの追加処理では、複製管理サーバ２０は、まず複製元のキーに対する参照要求を行い（ステップＳ２０４）、参照要求に対する参照応答を受信して（ステップＳ２０５）、当該キーに対応するデータ（バリュー）を取得する。なお、図１１では省略しているが、複製管理サーバ２０上にも、分散ＫＶＳクライアントライブラリ２１０が存在し、参照要求や以下に述べる追加要求の送信、およびそれら要求に対する応答の受信については、分散ＫＶＳクライアントライブラリを介して行われる。
【００９０】
次に、複製管理サーバ２０は、複製数の増加分だけ、キーの追加要求を行う。例えば、あらかじめ定める区切り文字を「＿」として、キーｇｇｇの複製数を３から６に増加させる場合には、「ｇｇｇ＿４」、「ｇｇｇ＿５」、「ｇｇｇ＿６」を対象キーとする新たな複製キーの追加処理を要求する追加要求を分散ＫＶＳサーバ５０Ａ〜５０Ｃに対して送信し（ステップＳ２０６、ステップＳ２０８、ステップＳ２１０）、分散ＫＶＳサーバ５０Ａ〜５０Ｃから追加応答を受信する（ステップＳ２０７、ステップＳ２０９、ステップＳ２１１）。
【００９１】
続いて、複製管理サーバ２０は、複製数が増加したすべてのキーに対する複製キーの追加処理を上記のようにして実施後、各要求処理サーバのアクセス変換ラッパー１２０に対して、複製管理情報更新通知を行い（ステップＳ２１２）、その応答として複製管理情報更新応答を受信する（ステップＳ２１３）。なお、複製管理情報更新通知には、新たな複製管理情報テーブルの内容をすべて含めなくともよく、更新差分だけを格納し、アクセス変換ラッパーが更新差分を適用した新たな複製管理情報テーブルを作成してもよい。
【００９２】
そして、複製管理サーバ２０は、すべての要求処理サーバ１０に対して、複製管理情報更新通知を行った後、複製キーの削除処理を要求する削除要求を分散ＫＶＳサーバ５０Ｂ、５０Ｃに送信し（ステップＳ２１４、ステップＳ２１６）、その応答を受信する（ステップＳ２１５、ステップＳ２１７）。ここで、複製キーの削除処理は、追加処理とは逆に、例えば、キーｇｇｇの複製数を８から６に減少させる場合に、対象キーを「ｇｇｇ＿８」、「ｇｇｇ＿７」とする削除要求を分散ＫＶＳサーバ５０Ｂ、５０Ｃに対して行う。
【００９３】
次に、図１１を用いて、上記した複製数変更判断処理について説明する。図１１は、第一の実施形態に係る複製管理サーバにおける複製数変更判断処理の流れを説明するためのフローチャートである。図１１に示すように、複製管理サーバ２０は、要求頻度情報テーブルを作成する（ステップＳ３０１）。
【００９４】
具体的には、複製管理サーバ２０は、要求処理サーバ１０から受信した要求頻度情報通知に含まれる要求頻度情報を対象キーごとに合算し、前述した図７に例示するような要求頻度情報テーブルを作成する。ここで、例えば、複製管理サーバ２０は、各キーの要求頻度を予め定める閾値で除算し、小数点未満を切り捨てた整数を、要求頻度情報テーブルにおける複製目標Ｍとして算出する。また、複製管理サーバ２０は、上記の（１）式で複製数Ｎを算出する。
【００９５】
その後、複製管理サーバ２０は、作成した要求頻度情報テーブルから複製数が１以上のものを抽出して複製管理情報テーブルを作成し、前回作成時の複製管理テーブルとの差分を抽出する（ステップＳ３０２）。例えば、複製管理サーバ２０は、前回作成した複製管理情報テーブルが存在する場合には、今回作成した複製管理情報テーブルとの比較を行い、複製数が増加したレコード（新規に追加されたレコードを含む）、複製数が減少したレコード（削除されたレコードを含む）を、それぞれ抽出する。また、複製管理サーバ２０は、前回作成時の複製管理情報テーブルが存在しなければ、今回作成した複製管理情報テーブルの全てのレコードが、複製数が増加したレコードとなる。
【００９６】
[第一の実施形態の効果]
上述してきたように、第一の実施形態に係る情報処理システム１では、要求処理サーバ１０が、キーを含むアクセス要求を受け付けた場合には、該キーに対応するデータを記憶する分散ＫＶＳサーバ５０に対してアクセスを行う。そして、要求処理サーバ１０が、キーごとに、受け付けたアクセス要求の数であるアクセス回数を計数する。また、複製管理サーバ２０が、要求処理サーバ１０からキーごとのアクセス回数を取得し、取得されたアクセス回数が所定の閾値を超えている場合に、該アクセス要求に対応するキーを複製する個数を決定する。続いて、複製管理サーバ２０が、決定された個数分のキーの複製を作成し、作成されたキーの複製を、複数の分散ＫＶＳサーバ５０のうちのいずれかの分散ＫＶＳサーバ５０に記憶されるデータであって、アクセス回数が閾値を超えたキーに対応するデータに割り当てる。
【００９７】
これにより、第一の実施形態に係る情報処理システム１では、サーバの輻輳を軽減し、システム全体のリソースを有効活用することが可能となる。つまり、図１２に例示するように、従来の分散ＫＶＳシステムでは、例えば、要求処理サーバ１００Ａ〜１００Ｃによって特定のキー「ｋｅｙＹ」にアクセスが集中してしまうと、当該キーを割り当てられた分散ＫＶＳサーバ５０Ｂに負荷が集中してしまい、当該分散ＫＶＳサーバで輻輳が発生し、サービスに影響が出てしまう。また、情報処理システム全体として、サーバリソースを有効活用できていない。
【００９８】
これに対して、第一の実施形態に係る情報処理システム１では、複製管理サーバ２０が、参照対象キーの要求頻度に応じて決定する複製数分の複製を作成し、要求処理サーバ１０のアクセス変換ラッパー１２０が複製されたキーに対する参照要求を複製後のキーのいずれかに変換することで、分散ＫＶＳにおけるキーのアクセス頻度の偏りに由来する分散ＫＶＳサーバ５０の負荷の偏りを軽減でき、特に、特定のキーに対する参照要求が多いアプリケーションに対して有用である。
【００９９】
また、既存の分散ＫＶＳシステムをそのまま使用しながら、かつアプリケーションに対して特別な機能追加を必要とすることなく、分散ＫＶＳにおけるキーの要求頻度の偏りに由来するサーバ負荷の集中を軽減することが可能であり、情報処理システム全体として、サーバリソースを有効活用することが可能である。また、要求処理アプリ１１０に特別な機能追加が不要であるほか、分散ＫＶＳクライアント／サーバについても、市中の汎用な分散ＫＶＳをそのまま使用することができる。
【０１００】
［第二の実施形態］
上記した第一の実施形態では、複製キーがランダムに各分散ＫＶＳサーバ５０に割り当てられており、複製キーが割り当てられる分散ＫＶＳサーバ５０の数が複製目標Ｍ以上となるために必要な複製数の期待値である複製数Ｎを算出し、複製数Ｎ個分のキーの複製を作成する場合を説明した。
【０１０１】
しかし、実施形態はこれに限定されるものではなく、例えば、複製目標Ｍ個分のキーの複製を作成し、作成されたキーを割り当てる際に、既に作成した複製キーの割当先分散ＫＶＳサーバと重複した場合には、割当先分散ＫＶＳサーバが重複しなくなるまで複製キーの割り当てを試行するようにしてもよい。
【０１０２】
以下では、第二の実施の形態として、複製目標Ｍ個分のキーの複製を作成し、作成されたキーを割り当てる際に、既に作成した複製キーの割当先分散ＫＶＳサーバと重複した場合には、割当先分散ＫＶＳサーバが重複しなくなるまで複製キーの割り当てを試行する複製管理サーバ２０の構成および処理について説明する。なお、第一の実施の形態と同様の構成および処理については説明を省略する。
【０１０３】
図１３を用いて、複製管理サーバ２０Ａの構成について説明する。図１３は、第二の実施形態に係る複製管理サーバの構成を示すブロック図である。図１３に示すように、第二の実施形態に係る複製管理サーバ２０Ａは、第一の実施形態に係る複製管理サーバ２０と比較して、割当先重複判定部２２ｅをさらに有する点が異なる。また、第二の実施形態に係る複製管理サーバ２０Ａは、第一の実施形態に係る複製管理サーバ２０と比較して、複製管理情報記憶部２３ａおよび要求頻度情報テーブル記憶部２３ｂに記憶される情報も異なる。
【０１０４】
複製管理情報記憶部２３ａは、要求頻度情報テーブルとして、複製された参照対象キーごとに、複製されたキーの数を記憶するとともに複製キーのインデックスと、複製キーの割当先サーバである分散ＫＶＳサーバ５０を識別する情報を記憶する。例えば、図１４に例示するように、複製された参照対象キーを識別する文字列である「キー」と、参照対象キーの複製された数を示す「複製数」と、複製キーのインデックスを示す「複製キーのインデックス」と、複製キーの割当先サーバである分散ＫＶＳサーバ５０を識別する情報である「複製キーの割当先サーバ」とを対応付けて記憶する。
【０１０５】
また、要求頻度情報テーブル記憶部２３ｂは、参照対象キーごとの要求頻度とともに、後述する決定部２２ｂによって決定された参照対象キーの数を記憶する。例えば、図１５に例示するように、参照対象キーを識別する文字列である「参照対象キー」と、各参照対象キーがアクセス要求の対象となった回数である「要求頻度」と、目標とする参照対象キーの複製数である「複製目標Ｍ」とを対応付けて記憶する。ここで、第二の実施形態に係る要求頻度情報テーブル記憶部２３ｂでは、複製数Ｎを記憶しておらず、複製目標Ｍの値が各キーの複製数として記憶されている。
【０１０６】
割当先重複判定部２２ｅは、割当部２２ｄによってキーの複製がデータに割り当てられた際に、該キーの複製に対応するデータを識別するキーが既に分散ＫＶＳサーバ５０に割り当てられているか否かを判定する。具体的には、割当先重複判定部２２ｅは、新たな複製キーが割り当てられた分散ＫＶＳサーバ５０が、複製元のキーや既に作成した複製キーが割り当てられた分散ＫＶＳサーバ５０と重複しているか否かをログ等から判定する。
【０１０７】
割当部２２ｄは、割当先重複判定部２２ｅによって複製キーが既に分散ＫＶＳサーバ５０に割り当てられていると判定された場合には、複製キーを割り当てる処理を再度行う。具体的には、割当部２２ｄは、割当先重複判定部２２ｅによって複製キーが既に分散ＫＶＳサーバ５０に割り当てられていると判定された場合には、作成した複製キー（例えば、キー「ｇｇｇ＿５」）を削除し、インデックスに１加算した新たなキー（例えば、「ｇｇｇ＿６」）の追加を分散ＫＶＳサーバ５０に対して試行する。
【０１０８】
ここで、図１６を用いて、第二の実施形態に係る情報処理システムにおける複製数変更処理の流れを説明する。図１６は、第二の実施形態に係る情報処理システムにおける複製数変更処理の流れを説明するためのシーケンス図である。図１６では、アクセス変換ラッパーから送信される各キーの要求頻度情報に基づいて、複製管理サーバ２０Ａが複製数の変更を判断し、複製キーの追加、削除を行う処理を示す。また、複製管理サーバ２０Ａは、要求処理サーバ１０が要求頻度情報を送信する間隔に合わせて、定期的にこの処理を行う。
【０１０９】
図１６に示すように、第一の実施形態と同様に、各要求処理サーバ１０上のアクセス変換ラッパー１２０は、要求処理アプリ１１０から送信される参照要求に含まれる対象キーごとの要求頻度をカウントする要求頻度カウント処理を行う（ステップＳ４０１）。そして、アクセス変換ラッパー１２０は、要求頻度の情報を要求頻度情報通知として複製管理サーバ２０Ａに定期的（例えば、５分ごと）に送信する（ステップＳ４０２）。
【０１１０】
続いて、第二の実施形態に係る複製管理サーバ２０Ａでは、各要求処理サーバ１０上のアクセス変換ラッパー１２０から要求頻度情報通知を受信した場合に、以下のように複製数変更判断処理を行う（ステップＳ４０３）。
【０１１１】
まず、受信した要求頻度情報通知に含まれる要求頻度情報を各参照対象キー毎に合算し、図１５に例示するような要求頻度情報テーブルを作成する。複製目標Ｍの決定方法については第一の実施形態と同様であるが、第一の実施形態と異なり、複製目標Ｍをそのまま、各キーの複製数とし、図１４に示すような複製管理情報テーブルを作成する。
【０１１２】
複製管理サーバ２０Ａは、前回作成した複製管理情報テーブルが存在する場合、今回作成した複製管理情報テーブルとの比較を行い、複製数が増加したレコード（新規に追加されたレコードも含む）、複製数が減少したレコード（削除されたレコードも含む）を、それぞれ抽出する。前回作成時の複製管理情報テーブルが存在しなければ、今回作成した複製管理情報テーブルの全てのレコードが、複製数が増加したレコードとなる。前回作成した複製管理情報テーブルについては、複製管理テーブルの比較後、不要のため削除する。
【０１１３】
次に、複製管理サーバ２０Ａは、上記で抽出した複製数の増加、減少を、それぞれ複製キーの追加、削除として分散ＫＶＳサーバ５０に対して反映するとともに、複製管理情報テーブルの更新をアクセス変換ラッパー１２０に対して通知する。その処理は、複製キーの追加処理、複製管理情報の更新通知、複製キーの削除処理の順に実施する。これは、アクセス変換ラッパーが追加前や削除後の複製キーにアクセスすることを抑止するためである。
【０１１４】
複製キーの追加処理では、複製管理サーバ２０Ａは、まず複製元のキーに対する参照要求を行い（ステップＳ４０４）、参照要求に対する参照応答を受信して（ステップＳ４０５）、当該キーに対応するデータ（バリュー）を取得する。次に、複製数の増加分だけ、下記の処理を繰り返し行う。
【０１１５】
ここでは、あらかじめ定める区切り文字を「＿」として、キー「ｇｇｇ」の複製数を３から４に増加させる場合について記載する。複製管理サーバ２０Ａは、既に作成されているキー「ｇｇｇ」の複製キーのインデックスの最大値を複製管理情報テーブルから取得し、それが４であったと場合、追加する複製キーのインデックスをそれより１大きい５とし、キー「ｇｇｇ＿５」を新たな複製キーとして分散ＫＶＳサーバ５０Ｃに対して追加する追加要求を送信し（ステップＳ４０６）、追加要求に対する追加応答を受信する（ステップＳ４０７）。
【０１１６】
そして、複製管理サーバ２０Ａは、分散ＫＶＳクライアントライブラリのログから、キー「ｇｇｇ＿５」がどの分散ＫＶＳサーバ５０に割り当てられたかの情報を取得する。その結果、割り当てられたサーバが分散ＫＶＳサーバ５０Ｃであった場合、複製管理情報テーブルから、分散ＫＶＳサーバ５０Ｃはすでにインデックスが２であるｇｇｇの複製キー「ｇｇｇ＿２」が割当済みであることが分かるため、作成した複製キーｇｇｇ＿５は削除する削除要求を分散ＫＶＳサーバ５０Ｃに対して送信し（ステップＳ４０８）、削除要求に対する削除応答を受信する（ステップＳ４０９）。
【０１１７】
そして、複製管理サーバ２０Ａは、インデックスに１を加算した新たな複製キー「ｇｇｇ＿６」の追加を試行する（ステップＳ４１０、ステップＳ４１１）。同様にｇｇｇ＿６の割当先サーバを分散ＫＶＳクライアントライブラリのログから取得し、それが既に作成した複製キーの割当先サーバと重複しないことを確認する。
【０１１８】
このように、複製キーの割当先サーバを判断し、それが既存の複製キーの割当先サーバと重複していた場合には、複製キーの作成をやり直すことにより、すべての複製キーの割当先サーバの重複を回避できる。
【０１１９】
複製数が増加したすべてのキーに対する複製キーの追加処理を上記のように実施後、複製管理サーバ２０Ａは、各要求処理サーバのアクセス変換ラッパー１２０に対して、複製管理情報更新通知を行い（ステップＳ４１２）、その応答として複製管理情報更新応答を受信する（ステップＳ４１３）。複製管理情報更新通知には、新たな複製管理情報テーブルの内容をすべて格納してもよく、更新差分だけを格納し、アクセス変換ラッパー１２０が更新差分を適用した新たな複製管理情報テーブルを作成するのでもよい。
【０１２０】
なお、図１６の説明では省略するが、すべての要求処理サーバ１０に対して、複製管理情報更新通知を行った後、複製管理サーバ２０Ａは、第一の実施形態と同様に、複製キーの削除処理を行う。複製キーの削除処理については、複製キーのうち、インデックスの大きいものから必要な削除数分だけ削除する。また、複製管理情報テーブルが保持する各複製キーの割当先サーバ情報は、分散ＫＶＳサーバの増設や減設があった場合、不整合が生じる恐れがある。そのため、分散ＫＶＳクライアントライブラリのログから、分散ＫＶＳサーバ５０の増設や減設が発生したことを検出した場合、すべての複製キーの作成を再度実施する必要がある。
【０１２１】
このように、第二の実施形態に係る情報処理システムでは、第一の実施形態の効果に加えて、必要な複製キーの数が減少するため、分散ＫＶＳサーバ５０の記憶容量を軽減でき、また、分散ＫＶＳサーバ５０の負荷集中をより確実に抑止することが可能である。
【０１２２】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、取得部２２ａと決定部２２ｂとを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１２３】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１２４】
また、上記した各サーバへの機能配備はあくまで一例であり、例えば、要求処理アプリ、アクセス変換ラッパー、分散ＫＶＳクライアントをそれぞれ独立のサーバ上で動作させてもよく、また複製管理サーバの役割を要求処理サーバの一つに重畳させてもよい。
【０１２５】
また、要求処理アプリが一種類である例を示しており、要求処理アプリから分散ＫＶＳサーバへのアクセスについて全てをアクセス変換ラッパーを仲介しているが、高頻度な参照要求を行わないことが明らかな保守用アプリケーションなどについては、アクセス変換ラッパーを仲介せず直接分散ＫＶＳサーバにアクセスしてもよい。ただし、その場合、複製キーに使用する区切り文字は、通常のキーの中では使用しない文字とする必要がある。
【０１２６】
また、情報処理システムにおいて、複製管理サーバの機能を要求処理サーバに全て持たせるようにしてもよい。具体的には、要求処理サーバが、取得部２２ａ、決定部２２ｂ、作成部２２ｃ、割当部２２ｄに相当する機能を有してもよい。
【０１２７】
［プログラム］
また、上記実施形態において説明した要求処理サーバ１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係る複製管理サーバ２０が実行する処理をコンピュータが実行可能な言語で記述したキー割当プログラムを作成することもできる。この場合、コンピュータがキー割当プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるキー割当プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されキー割当プログラムをコンピュータに読み込ませて実行することにより上記第一の実施形態と同様の処理を実現してもよい。以下に、図６に示した複製管理サーバ２０と同様の機能を実現するキー割当プログラムを実行するコンピュータの一例を説明する。
【０１２８】
図１７は、キー割当プログラムを実行するコンピュータ１０００を示す図である。図１７に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【０１２９】
メモリ１０１０は、図１７に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１７に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１７に例示するように、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、図１７に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１７に例示するように、例えばディスプレイ１１３０に接続される。
【０１３０】
ここで、図１７に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記のキー割当プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【０１３１】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【０１３２】
なお、キー割当プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、キー割当プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【０１３３】
１  情報処理システム
１０、１０Ａ〜１０Ｅ  要求処理サーバ
１１、２１  通信処理部
１２、２２  制御部
１２ａ  アクセス部
１２ｂ  計数部
１３、２３  記憶部
１３ａ  要求頻度記憶部
１３ｂ  複製管理情報テーブル記憶部
２０、２０Ａ  複製管理サーバ
２２ａ  取得部
２２ｂ  決定部
２２ｃ  作成部
２２ｄ  割当部
２２ｅ  割当先重複判定部
２３  記憶部
２３ａ  複製管理情報記憶部
２３ｂ  要求頻度情報テーブル記憶部
３０、３０Ａ〜３０Ｃ  クライアント
４０  負荷分散装置
５０、５０Ａ〜５０Ｅ  分散ＫＶＳサーバ
６０、６０Ａ〜６０Ｃ  ＩＰネットワーク
【図１】
2015095246.tif 000004
【図２】
2015095246.tif 000005
【図３】
2015095246.tif 000006
【図４】
2015095246.tif 000007
【図５】
2015095246.tif 000008
【図６】
2015095246.tif 000009
【図７】
2015095246.tif 000010
【図８】
2015095246.tif 000011
【図９】
2015095246.tif 000012
【図１０】
2015095246.tif 000013
【図１１】
2015095246.tif 000014
【図１２】
2015095246.tif 000015
【図１３】
2015095246.tif 000016
【図１４】
2015095246.tif 000017
【図１５】
2015095246.tif 000018
【図１６】
2015095246.tif 000019
【図１７】
2015095246.tif 000020