(57)【要約】      （修正有）【課題】分散ＫＶＳにおいて、データを管理するサーバの間で発生する通信の量を減らす。【解決手段】情報処理装置１は、分散キーバリューストアの機能を有する複数のサーバ３Ａ〜３Ｅが管理するデータに対する処理を行う装置であり、キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部１６〜１７と、複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバをデータ格納部から特定し、特定された当該サーバへの接続を行う接続処理部１５とを有する。【選択図】図２
2014191478.tif 000002
【特許請求の範囲】
【請求項１】
分散キーバリューストアの機能を有する複数のサーバが管理するデータに対する処理を行う情報処理装置であって、
キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部と、
前記複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバを前記データ格納部から特定し、特定された当該サーバへの接続を行う接続処理部と、
を有する情報処理装置。
【請求項２】
前記対応関係を示すデータは、キーと当該キーに対応するデータを管理する複数のサーバとの対応関係を示し、
前記接続処理部が、
前記処理対象のデータのキーに対応する複数のサーバのうち第１のサーバへの接続が失敗した場合に、前記処理対象のデータのキーに対応する複数のサーバのうち第１のサーバ以外のサーバを特定し、特定された当該サーバへの接続を行う
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記対応関係を示すデータには、キーに対応するデータを管理する複数のサーバの各々への接続の優先度を示すデータがさらに含まれ、
前記接続処理部は、
前記接続の優先度に基づき、前記キーに対応するデータを管理する複数のサーバへの接続を行う
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記接続処理部は、
前記処理対象のデータのキーに対応する複数のサーバのうち第１のサーバへの接続が失敗した場合に、前記第１のサーバの接続の優先度を下げるように、前記データ格納部に格納されている前記対応関係を示すデータを更新する
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記対応関係を示すデータには、処理が書き込みの場合に用いる、前記キーに対応するデータを管理する複数のサーバの各々への接続の優先度である第１の優先度を示すデータと、処理が読み出しの場合に用いる、前記キーに対応するデータを管理する複数のサーバの各々への接続の優先度である第２の優先度を示すデータとがさらに含まれ、
前記接続処理部は、
処理が書き込みの場合には、前記第１の優先度に基づき、前記キーに対応するデータを管理する複数のサーバへの接続を行い、処理が読み出しの場合には、前記第２の優先度に基づき、前記キーに対応するデータを管理する複数のサーバへの接続を行う
ことを特徴とする請求項３記載の情報処理装置。
【請求項６】
分散キーバリューストアの機能を有する複数のサーバが管理するデータに対する処理を行う情報処理装置に実行させるためのプログラムであって、
前記複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバを、キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部から特定し、
特定された前記サーバへの接続を行う
処理を実行させるためのプログラム。
【請求項７】
分散キーバリューストアの機能を有する複数のサーバが管理するデータに対する処理を行う情報処理装置により実行される情報処理方法であって、
前記複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバを、キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部から特定し、
特定された前記サーバへの接続を行う
処理を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散配置されたデータの処理技術に関する。
【背景技術】
【０００２】
ウェブサイト、センサ或いは携帯端末等において日々発生する膨大なデータを高速に処理する技術が求められている。
【０００３】
膨大なデータを高速に処理する技術として、以下のような技術が知られている。具体的には、複数のサーバの各々に設けられたインメモリデータベースに、同一の処理対象データを配置する。そして、いずれかのインメモリデータベースに格納された処理対象データをマスタデータとし、マスタデータが格納されるインメモリデータベース以外のインメモリデータベースに格納される処理対象データをスレーブデータとするように設定を行う。サーバは、処理対象データのマスタデータが自サーバに配置されている場合には、処理要求において要求された処理をそのマスタデータに対して行うと共に、他のサーバにおけるスレーブデータに対してマスタデータをコピーする。また、サーバは、処理対象データのマスタデータが自サーバに配置されていない場合には、そのマスタデータが配置されているサーバに処理要求を振り分ける。
【０００４】
また、膨大なデータを高速に処理する技術として、分散ＫＶＳ（Key-Value Store）が知られている。ＫＶＳは、保存したいデータ（Value）に一意のキー（Key）を対応付け、データ及びそのキーをペアとして保存する技術である。ＫＶＳにおいては、キーのみを指定すればデータを取得することができる。分散ＫＶＳは複数のサーバによってＫＶＳを実現する技術であり、サーバを追加することで処理を容易に高速化できる（すなわち、スケールアウトが容易である）という特徴がある。また、分散ＫＶＳには、ＳＰＯＦ（Single Point 0f Failure：単一障害点）が無く、複数のサーバのうちどのサーバにアクセスしたとしてもデータを取得できるという特徴もある。
【０００５】
分散ＫＶＳにおいては、処理対象のデータを管理するサーバに直接アクセスした場合には、要求元はそのデータに対する処理（例えば、書き込み又は読み出し）を迅速に行うことができる。しかし、処理対象のデータを管理していないサーバにアクセスした場合には、要求を受けたサーバがそのデータを管理するサーバからそのデータを取得し、その後に処理を行うことになる。
【０００６】
図１に、分散ＫＶＳの一例を示す。図１の例では、サーバＡ乃至Ｃにより分散ＫＶＳが実現されている。このような例において、サーバＡが管理するデータに対する処理を行うとする。要求元がサーバＡに対して直接アクセスした場合には、要求元は処理対象のデータに対する処理を迅速に行うことができる。一方、要求元がサーバＢに対してアクセスした場合には、サーバＢは処理対象のデータを管理していないため、サーバＢは処理対象のデータをサーバＡに要求する。サーバＢが処理対象のデータを取得すると、要求元は処理対象のデータに対する処理を行う。要求元がサーバＡにアクセスした場合にはサーバＡとサーバＢとの間に通信は発生しないが、要求元がサーバＢにアクセスした場合はサーバＡとサーバＢとの間に通信が発生する。
【０００７】
このように、分散ＫＶＳには、データを管理するサーバの間において発生する通信に時間がかかることにより、要求元が処理を完了するまでの時間が長くなるという問題がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−５３７９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従って、本発明の目的は、１つの側面では、分散ＫＶＳにおいて、データを管理するサーバの間で発生する通信の量を減らすための技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、分散キーバリューストアの機能を有する複数のサーバが管理するデータに対する処理を行う情報処理装置である。そして、本情報処理装置は、キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部と、複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバをデータ格納部から特定し、特定された当該サーバへの接続を行う接続処理部とを有する。
【発明の効果】
【００１１】
分散ＫＶＳにおいて、データを管理するサーバの間で発生する通信の量を減らせるようになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、分散ＫＶＳについて説明するための図である。
【図２】図２は、本実施の形態におけるシステム概要を示す図である。
【図３】図３は、分散ＫＶＳにおけるサーバが管理するデータの一例を示す図である。
【図４】図４は、第１管理データ格納部に格納されるデータ及び第２管理データ格納部に格納されるデータを用意する処理の処理フローを示す図である。
【図５】図５は、第１管理データ格納部に格納されるデータの一例を示す図である。
【図６】図６は、第１管理データ格納部に格納されるデータの一例を示す図である。
【図７】図７は、第２管理データ格納部に格納されるデータの一例を示す図である。
【図８】図８は、メインの処理フローを示す図である。
【図９】図９は、接続処理の処理フローを示す図である。
【図１０】図１０は、接続処理について説明するための図である。
【図１１】図１１は、接続処理について説明するための図である。
【図１２】図１２は、接続処理について説明するための図である。
【図１３】図１３は、本実施の形態における処理のシーケンス図である。
【図１４】図１４は、第１管理データ格納部に格納されるデータの一例を示す図である。
【図１５】図１５は、第１管理データ格納部に格納されるデータの一例を示す図である。
【図１６】図１６は、第１管理データ格納部に格納されるデータの一例を示す図である。
【図１７】図１７は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１３】
［実施の形態１］
図２に、本実施の形態に係るシステム概要を示す。図２に示したシステムは、ネットワーク機器９１乃至９３を管理するシステムである。本実施の形態における主要な処理を実行するアプリケーションサーバ１は、サーバ３Ａ乃至３Ｅにより実現される分散ＫＶＳ３と、ウェブサーバ５とに接続される。ウェブサーバ５は、例えばインターネット等のネットワークを介して、ユーザ端末７に接続される。
【００１４】
アプリケーションサーバ１は、例えばルータ又はスイッチ等であるネットワーク機器９１乃至９３に接続されており、ネットワーク機器の状態に関するデータ等をネットワーク機器９１乃至９３から受信する。アプリケーションサーバ１は、ネットワーク機器９１乃至９３から受信したデータを、分散ＫＶＳ３に送信する。分散ＫＶＳ３においては、例えばコンシステントハッシングに基づきデータを格納するサーバが決定される。データを格納するサーバは、そのサーバ内の記憶装置又は外部の記憶装置等に、データを格納する。
【００１５】
ユーザ端末７は、分散ＫＶＳ３において管理されるデータへの処理を要求する処理要求をウェブサーバ５に送信する。ウェブサーバ５は、ユーザ端末７から処理要求を受信すると、アプリケーションサーバ１に送信する。アプリケーションサーバ１は、処理要求をウェブサーバ５から受信すると、分散ＫＶＳ３に格納されている処理対象のデータに対する処理（例えば、書き込み又は読み出し）を実行する。アプリケーションサーバ１は、処理結果をウェブサーバ５に送信する。ウェブサーバ５は、アプリケーションサーバ１から処理結果を受信すると、ユーザ端末７に送信する。
【００１６】
なお、図２においてネットワーク機器の数は３であり、分散ＫＶＳ３におけるサーバの数は５であるが、数に限定は無い。
【００１７】
アプリケーションサーバ１は、受信部１１と、業務処理部１３及び管理部１４を含む業務管理部１２と、接続処理部１５と、第１管理データ格納部１６と、第２管理データ格納部１７と、接続管理部１８とを含む。
【００１８】
受信部１１は、ネットワーク機器の状態に関するデータ等をネットワーク機器９１乃至９３から受信し、業務管理部１２に出力する。業務管理部１２は、受信部１１から受け取ったデータ及びウェブサーバ５から受信した処理要求を、接続処理部１５に出力する。接続処理部１５は、第１管理データ格納部１６に格納されているデータ及び第２管理データ格納部１７に格納されているデータを用いて、分散ＫＶＳ３に接続する処理を行う。また、接続処理部１５は、分散ＫＶＳ３における処理対象のデータに対する処理を実行し、処理結果を業務管理部１２に出力する。また、接続処理部１５は、ネットワーク機器の状態に関するデータ等を分散ＫＶＳ３に送信する。接続管理部１８は、キー情報を分散ＫＶＳ３から取得し、第１管理データ格納部１６及び第２管理データ格納部１７に格納する。また、接続管理部１８は、接続処理部１５からの要求に応じ、第１管理データ格納部１６に格納されている接続先データを接続処理部１５に出力する。
【００１９】
図３に、分散ＫＶＳ３におけるサーバ３Ａ乃至３Ｅが管理するデータの一例を示す。図３の例では、サーバ３Ａ乃至３Ｅの各々は、キーと、そのキーに対応するデータとを管理する。図３に示したデータは、例えば、サーバ内の記憶装置又は外部の記憶装置等に格納される。
【００２０】
次に、図４乃至図１３を用いて、図２に示したシステムの動作について説明する。まず、図４乃至図７を用いて、第１管理データ格納部１６に格納されるデータ及び第２管理データ格納部１７に格納されるデータを用意する処理について説明する。
【００２１】
アプリケーションサーバ１が、ネットワーク機器９１乃至９３のうちいずれかのネットワーク機器から受信したデータを分散ＫＶＳ３に送信する。分散ＫＶＳ３においては、コンシステントハッシングに基づき、データが特定のサーバに格納される。コンシステントハッシングはよく知られた技術であり、本実施の形態における主要な処理ではないので、詳細な説明を省略する。
【００２２】
アプリケーションサーバ１における接続管理部１８は、分散ＫＶＳ３におけるサーバ３Ａ乃至３Ｅの各々から、キー情報を取得し（図４：ステップＳ１）、メインメモリ等の記憶装置に格納する。キー情報には、サーバの識別情報と、そのサーバが管理するデータのキーとが含まれる。
【００２３】
接続管理部１８は、未処理の優先度のうち最も高い優先度を特定する（ステップＳ３）。ステップＳ３における優先度とは、接続の優先度のことであり、優先度が高いほど優先的に接続が行われる。本実施の形態においては、最も高い優先度は「マスター」であり、次に高い優先度は「スレーブ１」であり、その次に高い優先度は「スレーブ２」であり、その次に高い優先度は「スレーブ３」であり、・・・となる。
【００２４】
接続管理部１８は、ステップＳ３において特定された優先度について、各キーにサーバを割り当てる（ステップＳ５）。また、接続管理部１８は、ステップＳ５の処理結果を第１管理データ格納部１６及び第２管理データ格納部１７に格納する。ステップＳ５においては、ステップＳ１において各サーバから取得したキー情報を用いて割り当てを行う。どの優先度にどのサーバを割り当てるかについては、ランダムに決定してもよいし、サーバへのアクセスに要する時間等に基づき決定してもよい。
【００２５】
図５に、データのレプリカの数が２である場合において、第１管理データ格納部１６に格納されるデータの一例を示す。図５の例では、キーと、優先度が「マスター」であるサーバの識別情報と、優先度が「マスター」であるサーバの識別情報と、優先度が「スレーブ１」であるサーバの識別情報と、優先度が「スレーブ２」であるサーバの識別情報とが格納される。
【００２６】
図６に、データのレプリカの数が３である場合において、第１管理データ格納部１６に格納されるデータの一例を示す。図６の例では、キーと、優先度が「マスター」であるサーバの識別情報と、優先度が「マスター」であるサーバの識別情報と、優先度が「スレーブ１」であるサーバの識別情報と、優先度が「スレーブ２」であるサーバの識別情報と、優先度が「スレーブ３」であるサーバの識別情報とが格納される。
【００２７】
図７に、第２管理データ格納部１７に格納されるデータの一例を示す。図７の例では、キーと、最初の接続先の（すなわち、優先度が最も高い）サーバの識別情報とが格納される。
【００２８】
図４の説明に戻り、接続管理部１８は、未処理の優先度が有るか判断する（ステップＳ７）。未処理の優先度が有る場合（ステップＳ７：Ｙｅｓルート）、次の優先度について処理するため、ステップＳ３の処理に戻る。未処理の優先度が無い場合（ステップＳ７：Ｎｏルート）、処理は終了する。
【００２９】
以上のような処理を実行すれば、接続処理部１５が、第１管理データ格納部１６に格納されるデータ及び第２管理データ格納部１７に格納されるデータを用いて、本実施の形態における接続処理を行えるようになる。
【００３０】
次に、図８乃至図１３を用いて、ユーザ端末７からの処理要求に応じてアプリケーションサーバ１が行う処理について説明する。
【００３１】
まず、アプリケーションサーバ１における業務管理部１２は、ウェブサーバ５から、データに対する処理を要求する処理要求を受信する（図８：ステップＳ１１）。業務管理部１２における管理部１４は、接続処理部１５を呼び出す。
【００３２】
接続処理部１５は、処理要求からキーを抽出し、抽出されたキーに対応するサーバの識別情報と優先度の情報とを含む接続先データを取得する（ステップＳ１３）。具体的には、接続処理部１５は、接続管理部１８に接続先データを要求する。これに応じ、接続管理部１８は、接続先データを第１管理データ格納部１６から読み出し、接続処理部１５に出力する。
【００３３】
なお、ステップＳ１３において、接続管理部１８は、優先度がマスターであるサーバが第２管理データ格納部１７に登録されているサーバと一致しない場合、第２管理データ格納部１７に格納されているデータに従い、読み出した接続先データを修正する。第２管理データ格納部１７には、最初の接続先の変更が反映されているためである。
【００３４】
そして、接続処理部１５は、接続処理を実行する（ステップＳ１５）。接続処理については、図９乃至図１２を用いて説明する。
【００３５】
まず、接続処理部１５は、接続先データから最初の接続先のサーバを特定する（図９：ステップＳ３１）。最初の接続先のサーバとは、優先度が最も高い（すなわち、マスターである）サーバである。
【００３６】
接続処理部１５は、最初の接続先のサーバに接続を試みる（ステップＳ３３）。接続処理部１５は、接続が確立したか判断する（ステップＳ３５）。接続が確立した場合（ステップＳ３５：Ｙｅｓルート）、元の処理に戻る。
【００３７】
接続が確立しない場合（ステップＳ３５：Ｎｏルート）、接続処理部１５は、次の接続先のサーバを特定する（ステップＳ３７）。次の接続先のサーバとは、接続の確立に失敗したサーバの次に優先度が高いサーバである。
【００３８】
接続処理部１５は、次の接続先のサーバに接続を試みる（ステップＳ３９）。接続処理部１５は、接続が確立したか判断する（ステップＳ４１）。接続が確立した場合（ステップＳ４１：Ｙｅｓルート）、接続処理部１５は、次回の最初の接続先を、確立された接続の接続先に変更する（ステップＳ４７）。具体的には、接続処理部１５は、次回の最初の接続先を確立された接続の接続先に変更することを接続管理部１８に要求する。これに応じ、接続管理部１８は、第２管理データ格納部１７において、処理対象のデータのキーに対応するサーバの識別情報を、確立された接続の接続先のサーバの識別情報に変更する。そして、元の処理に戻る。
【００３９】
一方、接続が確立しない場合（ステップＳ４１：Ｎｏルート）、接続処理部１５は、接続先データにおいて、次の接続先のサーバが有るか判断する（ステップＳ４３）。次の接続先が有る場合（ステップＳ４３：Ｙｅｓルート）、ステップＳ３７の処理に戻る。次の接続先のサーバが無い場合（ステップＳ４３：Ｎｏルート）、接続処理部１５は、接続の失敗を示すデータを業務管理部１２に出力する（ステップＳ４５）。これに応じ、業務管理部１２における管理部１４は、接続の失敗を示すデータをウェブサーバ５に送信する。ウェブサーバ５は、接続の失敗を示すデータをユーザ端末７に送信する。これにより、ユーザ端末７のユーザは、接続に失敗したことを認識できるようになる。
【００４０】
以上のような処理を実行すれば、アプリケーションサーバ１は、処理対象のデータを管理するサーバに直接アクセスすることができるようになる。なお、上ではステップＳ１３において一度に複数の接続先についての接続先データを取得しているが、接続が失敗する度に次の接続先についての接続先データを取得してもよい。
【００４１】
図１０乃至図１２を用いて、接続処理をより具体的に説明する。説明を簡単にするため、図１０乃至図１２の例では、分散ＫＶＳ３におけるサーバの数は３であるとする。また、処理対象のデータはキー１に対応するデータであり、第１管理データ格納部１６には図１０乃至図１２の右側に示したデータが格納されているとする。
【００４２】
図１０は、通常時における接続を示す図である。図１０の例では、優先度がマスターであるサーバはサーバＡであり、第２管理データ格納部１７には、サーバＡが最初の接続先であることを示すデータが格納されているとする（図１０においては、星印で示されている）。通常時においては、接続処理部１５は、サーバＡにアクセスし、処理対象のデータに対する処理を行う。サーバＢ及びサーバＣも処理対象のデータを管理しているが、優先度がサーバＡよりも低いため、接続処理部１５からアクセスされない。
【００４３】
図１１は、サーバＡが停止した場合における接続を示す図である。図１１の例では、優先度がマスターであるサーバはサーバＡであり、優先度がスレーブ１であるサーバはサーバＣである。サーバＡが停止した場合には、接続処理部１５は、次に優先度が高いサーバであるサーバＣに対して接続を行う。また、次回も最初にサーバＡにアクセスすることを防ぐため、接続管理部１８は、第２管理データ格納部１７に、サーバＣが最初の接続先であることを示すデータを格納する（図１１においては、星印で示されている）。
【００４４】
図１２は、サーバＡが停止した後に復旧した場合における接続を示す図である。図１２の例では、優先度がマスターであるサーバはサーバＡであり、優先度がスレーブ１であるサーバはサーバＣである。サーバＡが復旧した場合には、例えば管理者からの指示により、接続管理部１８は、第２管理データ格納部１７に格納されているデータを、最初の接続先をサーバＡにするように更新する（図１２においては、星印で示されている）。このようにすることで、接続処理部１５は、サーバＡに最初にアクセスするようになる。
【００４５】
図８の説明に戻り、接続処理部１５は、ステップＳ１５の接続処理によって接続が確立したか判断する（ステップＳ１７）。接続が確立していない場合（ステップＳ１７：Ｎｏルート）、ステップＳ２１の処理に移行する。接続が確立した場合（ステップＳ１７：Ｙｅｓルート）、接続処理部１５は、接続先のサーバが管理するデータに対する処理（例えば、書き込み又は読み出し）を実行する（ステップＳ１９）。接続処理部１５は、処理結果（例えば読み出しの場合には、接続先のサーバから取得したデータ）を業務管理部１２に出力する。
【００４６】
業務管理部１２における業務処理部１３は、処理結果を用いて、処理要求に対する応答を生成する。管理部１４は、業務処理部１３により生成された応答をウェブサーバ５に送信する（ステップＳ２１）。ウェブサーバ５は、応答を受信すると、ユーザ端末７に送信する。そして処理を終了する。
【００４７】
図１３に、本実施の形態における処理のシーケンス図を示す。本シーケンス図においては、業務管理部１２、接続処理部１５及び接続管理部１８の処理が示されている。また、本シーケンス図において、白の長方形の部分は、各処理部が処理を実行中であることを表している。なお、ここでは、接続処理部１５は、上で説明したように複数の接続先についての接続先データを取得するのではなく、１の接続先についての接続先データを取得し、接続が失敗する度に次の接続先についての接続先データを取得するものとする。
【００４８】
業務管理部１２は、ウェブサーバ５から処理要求を受信すると、接続処理部１５を呼び出す。接続処理部１５は、接続先データを接続管理部１８に要求する。
【００４９】
接続管理部１８は、第１管理データ格納部１６から接続先データ（ここでは、優先度が最も高いサーバの識別情報）を読み出し、接続処理部１５に出力する。
【００５０】
接続処理部１５は、取得した接続先データに従い接続を試みるが、接続が失敗したとする。すると、接続処理部１５は、次の接続先についての接続先データを接続管理部１８に要求する。
【００５１】
接続管理部１８は、第１管理データ格納部１６から接続先データ（ここでは、次に優先度が高いサーバの識別情報）を読み出し、接続処理部１５に出力する。
【００５２】
接続処理部１５は、取得した接続先データに従い接続を試み、接続が成功したとする。すると、接続処理部１５は、次回の最初の接続先を確立された接続の接続先に変更することを接続管理部１８に要求する。
【００５３】
接続管理部１８は、第２管理データ格納部１７に格納されているサーバの識別情報を、確立された接続の接続先のサーバの識別情報に変更する。
【００５４】
接続処理部１５は、接続が成功したので、処理対象のデータに対する処理を実行する。接続処理部１５は、処理対象のデータに対する処理が終了すると、接続を終了し、処理結果を業務管理部１２に出力する。業務管理部１２は、処理結果を用いて応答を生成し、ウェブサーバ５に送信する。そして処理を終了する。
【００５５】
以上のような処理を実行すれば、アプリケーションサーバ１は処理対象のデータを管理するサーバに直接接続を行うようになるので、データを管理するサーバの間の通信量を減らすことができるようになる。また、分散ＫＶＳ３におけるサーバ同士がデータを送信又は受信する処理をしなくてもよいので、処理負荷を減らすことができるようになる。
【００５６】
［実施の形態２］
第２の実施の形態においては、接続処理部１５が、データに対する処理が書き込みの場合と読み出しの場合とで異なるサーバに接続を行うようにする。
【００５７】
第１管理データ格納部１６には、書き込み用のデータと、読み出し用のデータとが格納される。図１４に、書き込みの場合に用いるデータの一例を示す。図１４の例では、キーと、優先度が「マスター」であるサーバの識別情報と、優先度が「スレーブ１」であるサーバの識別情報と、優先度が「スレーブ２」であるサーバの識別情報と、優先度が「スレーブ３」であるサーバの識別情報とが格納される。
【００５８】
図１５に、読み出しの場合に用いるデータの一例を示す。図１５の例では、キーと、優先度が「マスター」であるサーバの識別情報と、優先度が「スレーブ１」であるサーバの識別情報と、優先度が「スレーブ２」であるサーバの識別情報と、優先度が「スレーブ３」であるサーバの識別情報とが格納される。
【００５９】
第２の実施の形態においては、接続処理部１５が、データに対する処理が書き込み及び読み出しのいずれであるかを処理要求から特定する。書き込みである場合、接続処理部１５は、例えば図１４に示したデータを用いて処理を行う。処理が読み出しである場合、接続処理部１５は、例えば図１５に示したデータを用いて処理を行う。
【００６０】
このように、書き込みの場合と読み出しの場合とで異なる優先度を使用することで、特定のサーバにアクセスが集中することを防止し、分散ＫＶＳ３におけるサーバの処理性能が低下することを抑制できるようになる。
【００６１】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したアプリケーションサーバ１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００６２】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００６３】
なお、アプリケーションサーバ１に第２管理データ格納部１７を設けなくてもよい。この場合、接続管理部１８は、ステップＳ４７において、例えば図６に示したデータを図１６に示すようなデータに変更する。図１６に示したデータは、図６に示したデータと比較して、キー１に対応するサーバの優先度が変更されている。このようにすれば、第２管理データ格納部１７を有さなくても、接続の優先度を第１及び第２の実施の形態と同様に変更することができる。また、この例においては、元々優先度が「マスター」であったサーバの優先度を下げている。これにより、アクセスできないサーバに次回アクセスを試みてしまうことを抑制できる。なお、第２管理データ格納部１７を設けない場合には、後に第１管理データ格納部１６を元に戻すために、元々優先度が「マスター」であったサーバの識別情報を別途保存しておく。
【００６４】
なお、優先度がマスターであるサーバに障害が発生した場合には、優先度がスレーブであるサーバの中から新たにマスターとスレーブを定義し、例えば書き込みをマスターに割り当て、読み出しをスレーブに割り当ててもよい。このようにすれば、障害が発生した場合においても、アクセスが特定のサーバに集中することを抑制できる。
【００６５】
なお、上で述べたユーザ端末７、ウェブサーバ５、アプリケーションサーバ１及びサーバ３Ａ乃至３Ｅは、コンピュータ装置であって、図１７に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００６６】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００６７】
本実施の形態に係る情報処理装置は、分散キーバリューストアの機能を有する複数のサーバが管理するデータに対する処理を行う情報処理装置である。そして、本情報処理装置は、（Ａ）キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部と、（Ｂ）複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバをデータ格納部から特定し、特定された当該サーバへの接続を行う接続処理部とを有する。
【００６８】
このようにすれば、情報処理装置は処理対象のデータを管理するサーバに直接接続を行うようになるので、データを管理するサーバの間の通信量を減らすことができるようになる。また、サーバは他のサーバとの間でデータを送信又は受信する処理をしなくてもよいので、処理負荷を減らすことができるようになる。
【００６９】
また、上で述べた対応関係を示すデータは、キーと当該キーに対応するデータを管理する複数のサーバとの対応関係を示すようにしてもよい。そして、上で述べた接続処理部が、（ｂ１）処理対象のデータのキーに対応する複数のサーバのうち第１のサーバへの接続が失敗した場合に、処理対象のデータのキーに対応する複数のサーバのうち第１のサーバ以外のサーバを特定し、特定された当該サーバへの接続を行ってもよい。このようにすれば、第１のサーバが例えば障害等により停止している場合であっても他のサーバとの接続を行えるので、データへの処理を確実に行うことができるようになる。
【００７０】
また、上で述べた対応関係を示すデータには、複数のサーバの各々への接続の優先度を示すデータがさらに含まれていてもよい。そして、上で述べた接続処理部は、（ｂ２）接続の優先度に基づき複数のサーバへの接続を行ってもよい。このようにすれば、例えばデータの取得に要する時間が短いサーバを優先的に接続できるようになるので、効率的に接続を行えるようになる。
【００７１】
また、上で述べた接続処理部は、（ｂ３）処理対象のデータのキーに対応する複数のサーバのうち第１のサーバへの接続が失敗した場合に、第１のサーバの接続の優先度を下げるように、データ格納部に格納されている対応関係を示すデータを更新してもよい。このようにすれば、処理対象のデータに再度処理を行う場合に接続が失敗することを防げるようになる。
【００７２】
また、上で述べた対応関係を示すデータには、処理が書き込みの場合に用いる、複数のサーバの各々への接続の優先度である第１の優先度を示すデータと、処理が読み出しの場合に用いる、複数のサーバの各々への接続の優先度である第２の優先度を示すデータとがさらに含まれていてもよい。そして、上で述べた接続処理部は、（ｂ４）処理が書き込みの場合には第１の優先度に基づき複数のサーバへの接続を行い、処理が読み出しの場合には第２の優先度に基づき複数のサーバへの接続を行ってもよい。このようにすれば、書き込みの場合と読み出しの場合とで異なるサーバに接続できるので、特定のサーバにアクセスが集中することを抑制できるようになる。
【００７３】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００７４】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７５】
（付記１）
分散キーバリューストアの機能を有する複数のサーバが管理するデータに対する処理を行う情報処理装置であって、
キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部と、
前記複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバを前記データ格納部から特定し、特定された当該サーバへの接続を行う接続処理部と、
を有する情報処理装置。
【００７６】
（付記２）
前記対応関係を示すデータは、キーと当該キーに対応するデータを管理する複数のサーバとの対応関係を示し、
前記接続処理部が、
前記処理対象のデータのキーに対応する複数のサーバのうち第１のサーバへの接続が失敗した場合に、前記処理対象のデータのキーに対応する複数のサーバのうち第１のサーバ以外のサーバを特定し、特定された当該サーバへの接続を行う
ことを特徴とする付記１記載の情報処理装置。
【００７７】
（付記３）
前記対応関係を示すデータには、キーに対応するデータを管理する複数のサーバの各々への接続の優先度を示すデータがさらに含まれ、
前記接続処理部は、
前記接続の優先度に基づき、前記キーに対応するデータを管理する複数のサーバへの接続を行う
ことを特徴とする付記２記載の情報処理装置。
【００７８】
（付記４）
前記接続処理部は、
前記処理対象のデータのキーに対応する複数のサーバのうち第１のサーバへの接続が失敗した場合に、前記第１のサーバの接続の優先度を下げるように、前記データ格納部に格納されている前記対応関係を示すデータを更新する
ことを特徴とする付記３記載の情報処理装置。
【００７９】
（付記５）
前記対応関係を示すデータには、処理が書き込みの場合に用いる、前記キーに対応するデータを管理する複数のサーバの各々への接続の優先度である第１の優先度を示すデータと、処理が読み出しの場合に用いる、前記キーに対応するデータを管理する複数のサーバの各々への接続の優先度である第２の優先度を示すデータとがさらに含まれ、
前記接続処理部は、
処理が書き込みの場合には、前記第１の優先度に基づき、前記キーに対応するデータを管理する複数のサーバへの接続を行い、処理が読み出しの場合には、前記第２の優先度に基づき、前記キーに対応するデータを管理する複数のサーバへの接続を行う
ことを特徴とする付記３記載の情報処理装置。
【００８０】
（付記６）
分散キーバリューストアの機能を有する複数のサーバが管理するデータに対する処理を行う情報処理装置に実行させるためのプログラムであって、
前記複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバを、キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部から特定し、
特定された前記サーバへの接続を行う
処理を実行させるためのプログラム。
【００８１】
（付記７）
分散キーバリューストアの機能を有する複数のサーバが管理するデータに対する処理を行う情報処理装置により実行される情報処理方法であって、
前記複数のサーバが管理するデータのうち処理対象のデータのキーに対応するサーバを、キーと当該キーに対応するデータを管理するサーバとの対応関係を示すデータを格納するデータ格納部から特定し、
特定された前記サーバへの接続を行う
処理を含む情報処理方法。
【符号の説明】
【００８２】
１  アプリケーションサーバ    １１  受信部
１２  業務管理部    １３  業務処理部
１４  管理部    １５  接続処理部
１６  第１管理データ格納部    １７  第２管理データ格納部
１８  接続管理部
３  分散ＫＶＳ    ３Ａ，３Ｂ，３Ｃ  サーバ
５  ウェブサーバ    ７  ユーザ端末
９１，９２，９３  ネットワーク機器
【図１】
2014191478.tif 000003
【図２】
2014191478.tif 000004
【図３】
2014191478.tif 000005
【図４】
2014191478.tif 000006
【図５】
2014191478.tif 000007
【図６】
2014191478.tif 000008
【図７】
2014191478.tif 000009
【図８】
2014191478.tif 000010
【図９】
2014191478.tif 000011
【図１０】
2014191478.tif 000012
【図１１】
2014191478.tif 000013
【図１２】
2014191478.tif 000014
【図１３】
2014191478.tif 000015
【図１４】
2014191478.tif 000016
【図１５】
2014191478.tif 000017
【図１６】
2014191478.tif 000018
【図１７】
2014191478.tif 000019