(57)【特許請求の範囲】
【請求項１】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構築されたデータベースを用いて業務を実行する計算機システムであって、
前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記計算機システムは、複数のデータを含むデータセットを管理する第１の計算機を含み、
前記第１の計算機は、
他の前記計算機によって管理されるデータセットに含まれるデータの複製データを格納し、
前記他の計算機への前記複製データの格納処理の成功回数又は失敗回数の少なくともいずれかの回数を計測するカウンタを有し、
前記第１の計算機は新たな第１データの格納要求を受け付けた場合に、前記第１データを前記メモリに格納し、
前記第１データを複製して、第１複製データを生成し、
前記カウンタの値に基づいて、前記複製データの格納処理の成功確率を算出し、
前記算出された複製データの格納処理の成功確率に基づいて、前記第１複製データの送信回数を決定し、
前記決定された送信回数分、前記生成された第１複製データを前記他の計算機に送信し、
前記第１複製データが前記ネットワークに送信されたか否かを判定し、
前記第１複製データが前記ネットワークに送信されたと判定された場合、前記第１データを用いて業務を実行することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
複数の計算機に同時にデータを送信するための同報通知を用いて、前記生成された第１複製データを前記他の計算機に送信することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記ネットワークの通信状態が正常であるか否かを判定することによって、前記第１複製データが前記ネットワークに送信されたか否かを判定することを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記ネットワークは、データを転送するネットワーク装置を含み、
前記計算機システムは、
前記ネットワーク装置から前記第１複製データを含む前記同報通知を受信したか否かを判定し、
前記ネットワーク装置から前記第１複製データを含む同報通知を受信したと判定された場合、前記ネットワークの通信状態が正常であると判定することを特徴とする計算機システム。
【請求項５】
請求項３に記載の計算機システムであって、
前記第１の計算機は、周期的に、前記他の計算機との間の通信状態を監視し、
前記計算機システムは、
前記第１の計算機と前記他の計算機との間の通信状態の監視結果を参照して、前記他の計算機と通信可能か否かを判定し、
前記他の計算機と通信可能であると判定された場合、前記ネットワークの通信状態が正常であると判定することを特徴とする計算機システム。
【請求項６】
請求項３に記載の計算機システムであって、
前記第１の計算機は、
ネットワークを介したサービスに対するプロセスを実行し、
周期的に、前記プロセスの稼動状態を監視し、
前記計算機システムは、
前記プロセスの稼動状態の監視結果を参照して、前記プロセスが正常に稼動しているか否かを判定し、
前記プロセスが正常に稼動していると判定された場合、前記ネットワークの通信状態が正常であると判定することを特徴とする計算機システム。
【請求項７】
請求項１から請求項６の少なくともいずれか一つに記載の計算機システムであって、
前記第１の計算機は、前記他の計算機に前記第１複製データが格納されたか否かを判定し、
前記他の計算機に前記第１複製データが格納されていない場合には、前記第１データの複製データを、再度、前記他の計算機に送信することを特徴とする計算機システム。
【請求項８】
請求項１に記載の計算機システムであって、
前記データベースには、キー及びデータ値から構成される前記データが格納され、
前記各計算機は、所定のキー範囲の前記データセットを管理し、
前記第１の計算機は、第１のキー範囲の前記データセットを管理し、前記他の計算機が管理する所定のキー範囲の前記データセットに含まれる前記データの複製データを格納することを特徴とする計算機システム。
【請求項９】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構築されたデータベースを用いて業務を実行する計算機システムにおけるデータ管理方法であって、
前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記計算機システムは、複数のデータを含むデータセットを管理する第１の計算機を含み、
前記第１の計算機は、
他の前記計算機によって管理されるデータセットに含まれるデータの複製データを格納し、
前記他の計算機への前記複製データの格納処理の成功回数又は失敗回数の少なくともいずれかの回数を計測するカウンタを有し、
前記方法は、
前記第１の計算機が、新たな第１データの格納要求を受け付けた場合に、前記第１データを前記メモリに格納する第１のステップと、
前記第１の計算機が、前記第１データを複製して、第１複製データを生成する第２のステップと、
前記第１の計算機が、前記カウンタの値に基づいて、前記複製データの格納処理の成功確率を算出する第３のステップと、
前記第１の計算機が、前記算出された複製データの格納処理の成功確率に基づいて、前記第１複製データの送信回数を決定する第４のステップと、
前記第１の計算機が、前記決定された送信回数分、前記生成された第１複製データを前記他の計算機に送信する第５のステップと、
前記第１の計算機が、前記第１複製データが前記ネットワークに送信されたか否かを判定する第６のステップと、
前記第１の計算機が、前記第１複製データが前記ネットワークに送信されたと判定された場合、前記第１データを用いて業務を実行する第７のステップと、を含むことを特徴とするデータ管理方法。
【請求項１０】
請求項９に記載のデータ管理方法であって、
前記第５のステップでは、複数の計算機に同時にデータを送信するための同報通知を用いて前記第１複製データを前記他の計算機に送信することを特徴とするデータ管理方法。
【請求項１１】
請求項１０に記載のデータ管理方法であって、
前記第６のステップは、さらに、前記ネットワークの通信状態が正常であるか否かを判定する第８のステップを含むことを特徴とするデータ管理方法。
【請求項１２】
請求項１１に記載のデータ管理方法であって、
前記ネットワークは、データを転送するネットワーク装置を含み、
前記第８のステップは、
前記ネットワーク装置から前記第１複製データを含む前記同報通知を受信したか否かを判定するステップと、
前記ネットワーク装置から前記第１複製データを含む同報通知を受信したと判定された場合、前記ネットワークの通信状態が正常であると判定するステップと、を含むことを特徴とするデータ管理方法。
【請求項１３】
請求項１１に記載のデータ管理方法であって、
前記第１の計算機は、周期的に、前記他の計算機との間の通信状態を監視し、
前記第８のステップは、
前記他の計算機との間の通信状態の監視結果を参照して、前記他の計算機と通信可能か否かを判定するステップと、
前記他の計算機と通信可能であると判定された場合、前記ネットワークの通信状態が正常であると判定するステップと、を含むことを特徴とするデータ管理方法。
【請求項１４】
請求項１１に記載のデータ管理方法であって、
前記第１の計算機は、
ネットワークを介したサービスに対するプロセスを実行し、
周期的に、前記プロセスの稼動状態を監視し、
前記第８のステップは、
前記プロセスの稼動状態の監視結果を参照して、前記プロセスが正常に稼動しているか否かを判定するステップと、
前記プロセスが正常に稼動していると判定された場合、前記ネットワークの通信状態が正常であると判定するステップと、を含むことを特徴とするデータ管理方法。
【請求項１５】
請求項９から請求項１４の少なくともいずれか一つに記載のデータ管理方法であって、
前記方法は、さらに、
前記第１の計算機が、前記他の計算機に前記第１複製データが格納されたか否かを判定するステップと、
前記第１の計算機が、前記他の計算機に前記第１複製データが格納されていない場合には、前記第１データの複製データを、再度、前記他の計算機に送信するステップと、を含むことを特徴とするデータ管理方法。
【請求項１６】
請求項９に記載のデータ管理方法であって、
前記データベースには、キー及びデータ値から構成される前記データが格納され、
前記各計算機は、所定のキー範囲の前記データセットを管理し、
前記第１の計算機は、第１のキー範囲の前記データセットを管理し、前記他の計算機が管理する所定のキー範囲の前記データセットに含まれる前記データの複製データを格納することを特徴とするデータ管理方法。
【請求項１７】
ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構築されたデータベースを用いて業務を実行する計算機に実行させるためのデータ管理プログラムであって、
前記各計算機は、
プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
複数のデータを含むデータセットを管理し、
他の前記計算機によって管理されるデータセットに含まれるデータの複製データを格納し、
前記他の計算機への前記複製データの格納処理の成功回数又は失敗回数の少なくともいずれかの回数を計測するカウンタを有し、
前記データ管理プログラムは、
新たな第１データの格納要求を受け付けた場合に、前記第１データを前記メモリに格納する手順と、
前記第１データを複製して、第１複製データを生成する手順と、
前記カウンタの値に基づいて、前記複製データの格納処理の成功確率を算出する手順と、
前記算出された複製データの格納処理の成功確率に基づいて、前記第１複製データの送信回数を決定する手順と、
前記決定された送信回数分、前記生成された第１複製データを、複数の計算機に同時にデータを送信するための同報通知を用いて前記他の計算機に送信する手順と、
前記第１複製データが前記ネットワークに送信されたか否かを検出する手順と、
前記第１複製データが前記ネットワークに送信されたことが検出された場合、前記第１データを用いて業務を実行する手順と、を前記プロセッサに実行させることを特徴とするデータ管理プログラム。
【請求項１８】
請求項１７に記載のデータ管理プログラムであって、
前記第１複製データが前記ネットワークに送信されたか否かを判定する手順では、前記ネットワークに含まれるネットワーク装置から前記第１データを含む前記同報通知を受信したか否かを判定する手順、前記他の計算機と通信可能か否かを判定する手順、又は、前記ネットワークを介したサービスに対するプロセスが正常に稼動しているか否かを判定する手順、の少なくともいずれかを前記プロセッサに実行させることを特徴とするデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機から構成される分散データベースに関する。特に、分散配置されたデータの複製処理に関する。
【背景技術】
【０００２】
近年、Ｗｅｂを用いたアプリケーションを実行する計算システムにおいてデータ量が爆発的に増大しており、ＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）等のＮｏＳＱＬ（Ｎｏｔ  ｏｎｌｙ  ＳＱＬ）データベースを有する計算機システムが普及している。現在、このようなシステムは様々なエンタープライズシステムに導入されており、今後のさらなる活用が見込まれている。【０００３】
ＫＶＳでは、データに高速にアクセス可能な揮発性の記憶媒体、例えば、メモリにデータが格納される構成や、データ格納の永続性に優れる不揮発性の記録媒体、例えば、ＳＳＤ（Ｓｏｒｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）やＨＤＤ等にデータを格納する構成や、これらを併用する構成等の種々の構成が採られている。併用する構成では、高速アクセス性重視や格納性重視等の種々の運用方針によって、複数台の計算機のメモリを仮想的に統合して構成されるメモリストア及び１台以上の計算機の不揮発性記憶媒体から構成されるディスクストアのバランスを種々変更可能となっている。【０００４】
メモリストア及びディスクストアには、データ（バリュー）と、データの識別子（キー）とをペアとしたデータが格納される。【０００５】
また、ＫＶＳでは、複数のサーバからクラスタを構成して、そのクラスタに含まれるサーバにデータを分散して配置することによって並列処理を実現している。具体的には、キーの範囲（キーレンジ）毎に、各サーバにデータが格納される。各サーバは、担当するキーレンジに含まれるデータのマスタとして処理を実行する。すなわち、所定のキーを含む読み出し要求に対して、そのキーが含まれるキーレンジのデータを担当するサーバが、キーに対応するデータを読み出すこととなる。【０００６】
したがって、ＫＶＳでは、スケールアウトによって並列処理の性能を向上させることができる。【０００７】
なお、クラスタはサーバをリング状に接続した構成となっており、各サーバには一意な識別番号が割り当てられる。また、各サーバに対するデータの配置方法は、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法、Ｒａｎｇｅ法及びＬｉｓｔ法等の種々の方法が用いられる。【０００８】
代表してＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法について説明する。Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ法は、まず、キーに対するハッシュ値を算出し、算出したハッシュ値をサーバの台数で除算した余りを算出する。その余りがサーバの識別番号に一致するサーバにデータが配置されるようになっている。【０００９】
さて、ＫＶＳでは、データの信頼性を確保する要請から、クラスタを構成するサーバには他のサーバが管理するデータの複製データが格納される構成を採るものが知られている。すなわち、各々のサーバは、所定のキーレンジに含まれるデータを管理するマスタであると同時に、他のサーバが管理するデータの複製データを保持するスレーブでもある。これによって、サーバに障害が発生した場合であっても、その障害サーバがマスタとして管理するデータを、スレーブである他のサーバが、自己が保持する複製データの格上げを行うことでマスタとなり、処理を継続することができる。【００１０】
なお、以下、マスタであるサーバをマスタサーバと記載し、スレーブであるサーバをスレーブサーバとも記載する。【００１１】
前述したようにＫＶＳを構成するサーバには、管理サーバのような特別なサーバが存在しないため単一点障害が存在しない。すなわち、任意のサーバに障害が発生した場合であっても他のサーバが処理を継続できるため、計算機システムが停止することがない。したがって、ＫＶＳは、耐障害性も確保される。【００１２】
なお、スレーブサーバの台数、すなわち、複製データの格納先となるサーバの台数は、計算機システムによって任意に設定することができる。【００１３】
スレーブサーバへ複製データを格納するための複製処理（レプリケーション）は、処理に掛かるコストが高い。すなわち、データの信頼性を確保するために、全てのスレーブサーバに複製データが格納されるのを待つと、処理の待ち時間が発生し、リクエストに対する処理の高速化を実現できない。したがって、複製処理は、データの読み出し処理などのリクエストとは非同期に実行されることが推奨されている。【００１４】
しかし、複製処理の完了を待たずに処理を継続すると、例えば、複製処理の完了前にマスタサーバに障害が発生した場合にデータが失われる危険性があり、データの信頼性を確保することができない。【００１５】
従来の複製処理では、例えば以下のような方式が知られている。【００１６】
第１の方式は、以下のような方式である。格納処理のリクエストをクライアント等から受信した場合に、マスタサーバがメモリストア又はディスクストアにデータを格納する。その後、マスタサーバは、（スレーブサーバへの複製処理要求を行わずに）複製処理の完了を格納処理要求先のクライアント等に通知する。その後、スレーブサーバに、書きこみ要求されているデータの複製処理を要求する（非同期による複製処理）。第１の方式では、リクエストを高速に処理できるが、スレーブサーバへの複製データの格納処理は完了していないためデータの信頼性が低い。【００１７】
第２の方式は、以下のような方式である。格納処理のリクエストを受信した場合に、マスタサーバがメモリストア又はディスクストアにデータを格納する。マスタサーバは、１つのスレーブサーバに複製データを送信する。マスタサーバは、１つのスレーブサーバから複製データの格納処理の完了通知を受信すると、複製処理の完了を要求先の計算機に通知する（同期による複製処理）。第２の方式では、１つのスレーブサーバに複製データが格納されているため第１の方式と比べてデータの信頼性は高い。しかし、スレーブサーバからの応答を待つためリクエストに対する処理性能は第１の方式より低い。また、第２の方式では、二重障害が発生した場合にデータが失われる危険性がある。【００１８】
第３の方式は、以下のような方式である。クライアント装置からデータの格納処理のリクエストを受信した場合に、マスタサーバがメモリストア又はディスクストアにデータを格納する。マスタサーバは、全てのスレーブサーバに複製データを送信する。マスタサーバは、全てのスレーブサーバから複製データの格納処理の完了通知を受信すると、複製処理の完了を要求先の計算機に通知する（同期による複製処理）。第３の方式では、全てのスレーブサーバに複製データが格納されているためデータの信頼性が最も高い。しかし、全てのスレーブサーバからの応答を待つためリクエストに対する処理性は最も低い。【００１９】
なお、前述した方式以外の方式も知られている。【００２０】
前述したように、データの信頼性とリクエスト処理の高速化とはトレードオフの関係にある。【００２１】
データの信頼性とリクエスト処理の高速化とを両立させる方法として、さまざまな方法が考えられている（例えば、特許文献１参照）。特許文献１では、ルートノードのデータを複製する子ノードに鮮度閾値を設定し、鮮度閾値に基づいて更新期間を決定し、各子ノードのデータを更新するようになっている。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特表２００９−５４５０７２号公報
【発明の概要】
【発明が解決しようとする課題】
【００２３】
しかし、特許文献１に記載の発明では、ノードからの応答を待つという処理が含まれるため処理の高速化が実現できない。【００２４】
本発明は、複数のサーバがネットワークを介して接続された計算機システムにおいて、スレーブサーバとの通信を行うことなく複製処理の完了を判定し、データの信頼性及びリクエスト処理の高速化を両立可能なＮｏＳＱＬ（Ｎｏｔ  ｏｎｌｙ  ＳＱＬ）データベースを有する計算機システム及びデータの管理方法を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して複数の計算機が接続され、前記各計算機が有する記憶領域から構築されたデータベースを用いて業務を実行する計算機システムであって、前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、前記計算機システムは、複数のデータを含むデータセットを管理する第１の計算機を含み、前記第１の計算機は、他の前記計算機によって管理されるデータセットに含まれるデータの複製データを格納し、前記他の計算機への前記複製データの格納処理の成功回数又は失敗回数の少なくともいずれかの回数を計測するカウンタを有し、前記第１の計算機は新たな第１データの格納要求を受け付けた場合に、前記第１データを前記メモリに格納し、前記第１データを複製して、第１複製データを生成し、前記カウンタの値に基づいて、前記複製データの格納処理の成功確率を算出し、前記算出された複製データの格納処理の成功確率に基づいて、前記第２複製データの送信回数を決定し、前記決定された送信回数分、前記生成された第１複製データを前記他の計算機に送信し、前記第１複製データが前記ネットワークに送信されたか否かを判定し、前記第１複製データが前記ネットワークに送信されたと判定された場合、前記第１データを用いて業務を実行することを特徴とする。
【発明の効果】
【００２６】
本発明によれば、計算機は、複製データがネットワークに送信されたことを検出すると、格納されたデータを用いて業務を実行できる。すなわち、他の計算機への複製データの格納完了を待たず業務を実行できるため、高速に複製処理を完了できる。また、複製データがネットワークに送信されたことを検出することによって、計算機と、ネットワークとに同一データが複数存在することが保証されデータの信頼性を高めることができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施形態における計算機システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態におけるサーバの物理構成を説明するブロック図である。
【図３】本発明の第１の実施形態におけるディスクストア及びメモリストアに格納されるデータの形式を示す説明図である。
【図４】本発明の第１の実施形態における複製管理テーブルの一例を示す説明図である。
【図５】本発明の第１の実施形態におけるサーバが実行する処理を説明するフローチャートである。
【図６】本発明の第１の実施形態における複製制御部が実行する処理を説明するフローチャートである。
【図７】本発明の第１の実施形態における複製制御部が実行する処理を説明するフローチャートである。
【図８】本発明の第１の実施形態における複製制御部が実行する処理を説明するフローチャートである。
【図９】本発明の第２の実施形態における計算機システムの構成を示すブロック図である。
【図１０】本発明の第２の実施形態における複製制御部が実行する処理を説明するフローチャートである。
【図１１】本発明の第３の実施形態における計算機システムの構成を示すブロック図である。
【図１２】本発明の第３の実施形態における複製管理テーブルの一例を示す説明図である。
【図１３】本発明の第３の実施形態における複製制御部が実行する処理を説明するフローチャートである。
【図１４】本発明の第４の実施形態におけるサーバが実行する処理を説明するフローチャートである。
【図１５】本発明の第４の実施形態における再送制御部が実行する処理を説明するフローチャートである。
【発明を実施するための形態】
【００２８】
以下、本発明を図面とあわせて詳細に説明する。
【００２９】
［第１の実施形態］
【００３０】
図１は、本発明の第１の実施形態における計算機システムの構成を示すブロック図である。
【００３１】
計算機システムは、複数のサーバ１００、クライアント装置２００及びネットワーク３００から構成される。各サーバ１００間又はサーバ１００とクライアント装置２００との間は、ネットワーク３００を介して互いに接続される。
【００３２】
ネットワーク３００は、ＬＡＮ、ＷＡＮ及びＳＡＮ等の有線・無線の種々の構成が考えられる。本実施形態は、サーバ１００ａ、１００ｂ、１００ｎ及びクライアント装置２００が通信できるものであればどのようなネットワークであってもよい。なお、ネットワーク３００には、複数のネットワーク装置（図示省略）が含まれる。ネットワーク装置は、例えば、スイッチ及びゲートウェイなどが含まれる。
【００３３】
本実施形態では、複数のサーバ１００からクラスタを構成し、それらサーバ１００が備える記憶領域上にＮｏＳＱＬデータベースが構築される。本実施形態ではＮｏＳＱＬデータベースとして、ＫＶＳを用いるものとする。
【００３４】
サーバ１００ａ、１００ｂ及び１００ｎは、ＫＶＳを構成する計算機である。クライアント装置２００からの要求にしたがって、各種処理を実行する。なお、サーバ１００ａ、１００ｂ及び１００ｎの構成は同一であるものとする。
【００３５】
サーバ１００ａは、キーレンジ毎に管理するデータが配置されており、所定のキーレンジに含まれるデータを管理するマスタサーバとして稼動する。また、サーバ１００ａは、他のサーバ１００ｂ及び／又はサーバ１００ｎが管理するキーレンジに含まれるデータの複製データを保持しており、スレーブサーバとして稼動する。同様に、サーバ１００ｂ及び１００ｎのそれぞれも、自己のキーレンジに含まれるデータを管理するマスタサーバとして機能し、他のサーバのキーレンジに含まれるデータの複製を保持するようになっている。
【００３６】
また、本実施形態のクラスタは、計算機システム全体の管理を行う管理サーバとなる唯一のサーバが存在せず、全てのサーバ１００ａ、１００ｂ及び１００ｎを同等のサーバとして扱う構成を採る。これによって、１つのサーバに障害が発生しても、他のスレーブサーバが新たなマスタサーバとして処理を継続することができるため、計算機システムを停止することなく処理を継続することができる。以下の説明では、簡単のためにマスタサーバがサーバ１００ａ、スレーブサーバがサーバ１００ｂ及び１００ｎである場合について説明するものとする。
【００３７】
サーバ１００ａは、データ管理部１１０、ディスクストア１２０、メモリストア１３０及び複製制御部１４０を有する。
【００３８】
データ管理部１１０は、サーバ１００ａが管理するデータに対する各種処理を制御する。データ管理部１１０は、クライアント装置２００からの要求を受け付け、その要求に基づいて、データの読み出しや書き込み等の処理を制御する。なお、「書き込み」は、データの「上書き」であってもよい。以下、「書き込み」や「上書き」を総称して「格納」という場合がある。
【００３９】
ディスクストア１２０及びメモリストア１３０は、ＫＶＳを構成するＮｏＳＱＬデータベースである。ディスクストア１２０は、ＨＤＤ等の記憶媒体上に構成されたデータベースである。メモリストア１３０は、メモリ等の記憶媒体上に構成されたデータベースである。
【００４０】
本実施形態では、ディスクストア１２０及びメモリストア１３０には、同一形式のデータが格納される。ディスクストア１２０及びメモリストア１３０に格納されるデータ形式については、図３を用いて後述する。
【００４１】
複製制御部１４０は、サーバ１００ａに格納されたデータを他のサーバ１００ｂ及びｎに格納するための複製処理（レプリケーション）を制御する。複製制御部１４０は、データ送信部１５０、送達確認部１６０及び複製管理テーブル１７０Ａを含む。
【００４２】
データ送信部１５０は、複製データをスレーブサーバであるサーバ１００ｂ及びｎに送信する。本実施形態では、データ送信部１５０は、同報通知（マルチキャスト通信）を用いて、複製データを送信する。
【００４３】
例えば、ＵＤＰマルチキャストでは、所定のグループに割り当てられたマルチキャストアドレス宛にデータを送信することによって、所定のグループに属する全てのサーバにデータが送信される。なお、本発明は、同報通知を実現するためのプロトコルに限定されない。
【００４４】
送達確認部１６０は、複製処理が完了したか否かを判定する。複製管理テーブル１７０Ａは、送達確認部１６０が複製データの複製処理を管理するための情報を格納する。複製管理テーブル１７０Ａの詳細については、図４を用いて後述する。
【００４５】
クライアント装置２００は、プロセッサ（図示省略）、メモリ（図示省略）及びネットワークインタフェース（図示省略）等を備える計算機であって、ＫＶＳに対する各種処理の実行を要求する。クライアント装置２００は、ＵＡＰ２１０及びデータ送受信部２２０を有する。
【００４６】
ＵＡＰ２１０は、各種機能を提供するアプリケーションであって、そのＵＡＰ２１０によって各種処理の要求がサーバ１００に送信される。データ送受信部２２０は、ＵＡＰ２１０から出力された要求をサーバ１００ａに送信し、また、サーバ１００ａからの処理結果を受信する。
【００４７】
なお、図１では、クライアント装置２００は１つであるが、複数あってもよい。
【００４８】
図２は、本発明の第１の実施形態におけるサーバ１００ａのハードウェア構成を説明するブロック図である。
【００４９】
サーバ１００ａは、プロセッサ４１０、主記憶装置４２０、二次記憶装置４３０及びネットワークインタフェース４４０を備え、各構成は内部バス４５０等によって接続される。
【００５０】
プロセッサ４１０は、主記憶装置４２０に格納されるプログラムを実行する。プロセッサ４１０がプログラムを実行することによって、サーバ１００が有する機能を実現することができる。以下、各構成を主語に処理を説明する場合には、プロセッサ４１０によって、プログラムが実行されていることを示すものとする。
【００５１】
主記憶装置４２０は、プロセッサ４１０が実行するプログラム及びそのプログラムの実行に必要な情報を格納する。主記憶装置４２０は、例えば、メモリ等が考えられる。本実施形態の主記憶装置４２０上には、データ管理部１１０、メモリストア１３０及び複製制御部１４０が構築される。
【００５２】
なお、本実施形態では、データ管理部１１０及び複製制御部１４０をプログラムとして記載しているが、専用のハードウェアを用いて同一の機能を実現してもよい。
【００５３】
二次記憶装置４３０は、各種情報を格納する。二次記憶装置４３０は、例えば、ＨＤＤ又はＳＳＤ等が考えられる。本実施形態の二次記憶装置４３０上にはディスクストア１２０が構築される。
【００５４】
ネットワークインタフェース４４０は、ネットワーク３００と接続するためのインタフェースである。
【００５５】
なお、クライアント装置２００も同様の構成を含む。すなわち、クライアント装置２００は、プロセッサ（図示省略）、主記憶装置（図示省略）、二次記憶装置（図示省略）及びネットワークインタフェース（図示省略）を備える。また、クライアント装置２００は、キーボード及びディスプレイなどの入出力装置（図示省略）を備えていてもよい。
【００５６】
図３は、本発明の第１の実施形態におけるディスクストア１２０及びメモリストア１３０に格納されるデータの形式を示す説明図である。
【００５７】
本実施形態では、ディスクストア１２０及びメモリストア１３０には、データ管理情報５００が格納される。データ管理情報５００には、キーとバリューとがペアとなったデータが複数含まれる。以下、キーとバリューとがペアとなったデータをキーバリュー型データとも記載する。
【００５８】
データ管理情報５００は、Ｋｅｙ５０１及びＶａｌｕｅ５０２を含む。Ｋｅｙ５０１は、データを識別するための識別子（キー）を格納する。Ｖａｌｕｅ５０２は、実際のデータ（バリュー）を格納する。
【００５９】
クライアント装置２００を操作するユーザは、Ｋｅｙ５０１を指定してＫＶＳにデータを保存し、また、Ｋｅｙ５０１を指定してＫＶＳから所望のデータを取得することができる。
【００６０】
各サーバ１００ａ等は、所定のＫｅｙ５０１の範囲（キーレンジ）毎にキーバリュー型データを管理する。すなわち、キーレンジ毎にキーバリュー型データが各サーバに分散して配置される。サーバ１００ａ等は、指定されたキーレンジのデータのマスタサーバとして処理を実行することとなる。これによって、大量のデータを並列的かつ高速に処理できる。
【００６１】
また、各サーバ１００は、他のサーバ１００が管理するキーバリュー型データの複製データを保持する。すなわち、サーバ１００は、他のサーバ１００のスレーブサーバとなっている。これによって、マスタサーバ１００に障害が発生しても、スレーブサーバ１００が新たなマスタサーバ１００として処理を継続することができる。
【００６２】
図４は、本発明の第１の実施形態における複製管理テーブル１７０Ａの一例を示す説明図である。
【００６３】
複製管理テーブル１７０Ａは、ＩＤ６０１、Ｋｅｙ６０２及びＶａｌｕｅ６０３を含む。
【００６４】
ＩＤ６０１は、クライアント装置２００から送信された要求を識別するための識別子を格納する。複製制御部１４０は、ＩＤ６０１によって、どの格納要求に対する複製処理を実行しているかを把握できる。
【００６５】
Ｋｅｙ６０２は、データを識別するためのキーの情報を格納する。Ｖａｌｕｅ６０３は、書き込まれるデータを格納する。なお、Ｋｅｙ６０２及びＶａｌｕｅ６０３は、それぞれ、Ｋｅｙ５０１及びＶａｌｕｅ５０２と同一のものである。
【００６６】
図５は、本発明の第１の実施形態におけるサーバ１００ａが実行する処理を説明するフローチャートである。
【００６７】
サーバ１００ａは、クライアント装置２００からデータの格納要求を受信する（ステップＳ７０１）。具体的には、データ管理部１１０がクライアント装置２００からの格納要求を受信する。なお、格納要求には、キー及びデータが含まれる。
【００６８】
サーバ１００ａは、格納要求に含まれるキーとデータとを１つにしたキーバリュー型データをメモリストア１３０に格納する（ステップＳ７０２）。具体的には、データ管理部１１０がメモリストア１３０にキーバリュー型データを格納する。
【００６９】
サーバ１００ａは、格納したキーバリュー型データの複製処理を実行する（ステップＳ７０３）。具体的には、以下のような処理が実行される。
【００７０】
データ管理部１１０が複製制御部１４０を呼び出して、複製処理の実行を指示する。呼び出された複製制御部１４０は、格納されたキーバリュー型データの複製データを生成する。
【００７１】
複製制御部１４０は、生成された複製データを、同報通知を用いてスレーブサーバ１００に送信する。さらに、複製制御部１４０は、複製データの格納完了の判定を実行する。すなわち、複製処理が完了したか否かが判定される。
【００７２】
なお、複製処理の詳細については、図６〜図８を用いて後述する。
【００７３】
サーバ１００は、格納要求に対する結果をクライアント装置２００に通知し（ステップＳ７０４）、処理を終了する。
【００７４】
従来の複製データの格納処理では、マスタサーバ１００ａは、スレーブサーバ１００ｂ又は１００ｎから複製データの格納完了の通知を受けた後に、クライアント装置２００に格納要求の結果を通知していたため遅延が生じていた。したがって、スレーブサーバ１００ｂ又は１００ｎから複製データの格納完了の通知があるまでは、計算機システムは、格納されたキーバリュー型データを用いて業務を実行することができなかった。すなわち、格納処理後の、マスタサーバ１００ａに格納されたキーバリュー型データに対する書き込み処理、読み出し処理及び更新処理等を実行できなかった。
【００７５】
本実施形態は、マスタサーバ１００ａが、スレーブサーバ１００ｂ又は１００ｎからの応答を受けることなく、格納要求の結果を通知できる点に特徴を有する。すなわち、マスタサーバ１００ａは、スレーブサーバ１００ｂ又は１００ｎからの応答がなくとも、複製処理が完了したものと判定する。
【００７６】
これによって、マスタサーバ１００ａに格納されたキーバリュー型データに対する書き込み処理、読み出し処理及び更新処理等を、その分早期に実行することができる。すなわち、マスタサーバ１００ａは、格納されたキーバリュー型データに対する処理を受け付けることができる。
【００７７】
第１の実施形態では、データの信頼性を確保するため、同報通知を用いて複数のスレーブサーバ１００に複製データが送信される。また、第１の実施形態では、ネットワーク３００の信頼性に基づいて複製処理が完了したか否かが判定される。具体的な判定処理として、３つの方法がある。
【００７８】
第１の方法では、マスタサーバ１００ａからネットワーク３００に対して複製データが送信された場合に、複製処理が完了したと判定する。
【００７９】
これによって、スレーブサーバ１００ｂ又は１００ｎからの複製処理完了の応答を待つ必要がなくなる。また、マスタサーバ１００ａからの複製データの出力によって、ネットワーク３００上に複製データが存在するため、送信後にマスタサーバ１００ａに障害が発生しても、出力された複製データが、やがてスレーブサーバ１００ｂ又は１００ｎに受信され、複製データが格納されたスレーブサーバ１００ｂ又は１００ｎが処理を継続することができる。さらに、ネットワーク３００上の複製データが各スレーブサーバ１００に反映されるため、データの信頼性を確保できる。
【００８０】
第２の方法では、マスタサーバ１００ａが、ネットワーク３００上のネットワーク機器から、複製データを受信した旨の応答を受けた場合に、複製処理が完了したと判定する。
【００８１】
これによって、スレーブサーバ１００からの応答を待つ必要がなくなる。また、ネットワーク３００上のネットワーク機器からの複製データの受信を確認することによって、ネットワーク３００を介して各スレーブサーバ１００に複製データが送信されたことを保証できる。すなわち、第１の方法よりデータの信頼性が向上する。
【００８２】
第３の方法では、マスタサーバ１００が周期的にネットワーク３００の状態を確認し、ネットワーク３００の状態が正常である場合に、複製処理が完了したと判定する。
【００８３】
これによって、スレーブサーバ１００からの応答を待つ必要がなくなる。また、ネットワーク３００の状態を確認することによって、ネットワーク３００から各スレーブサーバ１００に複製データが送信されたことを保証できる。すなわち、第１の方法よりデータの信頼性が向上する。
【００８４】
以下、各方法の詳細について説明する。
【００８５】
図６は、本発明の第１の実施形態における複製制御部１４０が実行する処理を説明するフローチャートである。図６は、第１の方法を適用した複製処理である。
【００８６】
複製制御部１４０は、データ管理部１１０から呼び出されると、格納されたキーバリュー型データの複製データを生成する（ステップＳ８０１）。
【００８７】
複製制御部１４０は、同報通知を用いて生成された複製データを各スレーブサーバ１００ｂ及び／又は１００ｎに送信し、処理を終了する（ステップＳ８０２）。具体的には、データ送信部１５０が、マルチキャストアドレス宛に複製データを送信する。
【００８８】
なお、複製制御部１４０は、ネットワーク３００への複製データの送信を検出すると、複製処理が完了したと判定する。
【００８９】
したがって、第１の方法ではスレーブサーバ１００ｂ及び／又は１００ｎからの複製処理完了の応答を受ける必要がないため業務処理に遅延を生じさせることがない。また、マスタサーバ１００ａに障害が発生しても、その前にネットワーク３００に複製データが出力されているため、その複製データを受信したスレーブサーバ１００ｂ及び１００ｎが業務処理を継続することができる。すなわち、計算機システム内の異なる地点に同一のデータが複数存在することによってデータの信頼性を確保できる。
【００９０】
さらに、第１の方法では、ネットワーク３００に複製データを送信（出力）することをもって複製処理完了と判定するため、従来の非同期による複製処理よりもデータの信頼性の向上が期待できる。
【００９１】
図７は、本発明の第１の実施形態における複製制御部１４０が実行する処理を説明するフローチャートである。図７は、第２の方法を適用した複製処理である。
【００９２】
複製制御部１４０は、データ管理部１１０から呼び出されると、格納されたキーバリュー型データの複製データを生成し（ステップＳ９０１）、複製管理テーブル１７０Ａに複製データに関するエントリを登録する（ステップＳ９０２）。
【００９３】
複製制御部１４０は、同報通知を用いて生成された複製データを送信する（ステップＳ９０３）。具体的には、データ送信部１５０が、マルチキャストアドレス宛に複製データを送信する。
【００９４】
複製制御部１４０は、ネットワーク３００に含まれるネットワーク装置から、データ送信部１５０から送信した、複製データを含む同報通知を受信したか否かを判定する（ステップＳ９０４）。具体的には、送達確認部１６０が、一定時間内に、ネットワーク３００に含まれるネットワーク装置から複製データを含む同報通知を受信し、その同報通知に含まれるＩＤ６０１（図４）に対応するエントリが、複製管理テーブル１７０Ａに登録されているか否かを判定する。
【００９５】
送達確認部１６０が、一定時間内に、ネットワーク装置から複製データを含む同報通知を受信した場合、ネットワーク３００の状態が正常であることを示す。これによって、正常な状態のネットワーク３００を介してスレーブサーバ１００へ複製データが送信されたことを保証できる。
【００９６】
一方、送達確認部１６０が、一定時間内に、ネットワーク装置から複製データを含む同報通知を受信できない場合、ネットワーク３００に何らかの障害が発生していることを示す。したがって、スレーブサーバ１００に複製データが送信されていない可能性が高い。
【００９７】
なお、パケットの受信を待つ時間は、予め設定されているものとする。ただし、任意の時間に変更することも可能である。待ち時間は、例えば、スレーブサーバ１００ｂ及び／又は１００ｎからの複製処理完了の応答を受信する時間よりも短い時間とするのが好ましい。
【００９８】
一定時間内に複製データを含む同報通知を受信できた場合、複製制御部１４０は、複製処理が成功した旨をデータ管理部１１０に通知し（ステップＳ９０５）、処理を終了する。すなわち、複製処理が完了したと判定される。
【００９９】
一定時間内に複製データを含む同報通知を受信できない場合、複製制御部１４０は、複製処理が失敗した旨をデータ管理部１１０に通知する（ステップＳ９０６）。さらに、複製制御部１４０は、メモリストア１３０に格納されたデータをディスクストア１２０に格納し（ステップＳ９０７）、処理を終了する。
【０１００】
これによって、サーバ１００の電源等が切れた場合であっても、最新のデータが保持されるため、障害耐性を確保することができる。
【０１０１】
なお、データ送信部１５０は、同報通知を用いて複製データを送信する場合、自分宛に複製データが送信（ループバック）されないようにする。また、ループバックによって複製データが自分宛に送信された場合に、当該通知を排除するように制御してもよい。例えば、通知に含まれる宛先アドレスを参照することによってループバックによる通知であるか否かが判定できる。
【０１０２】
前述のように制御する理由は、必ず、ネットワーク３００に含まれるネットワーク装置からの同報通知を受信するためである。すなわち、送達確認部１６０が、ループバックによって自分宛に送信された通知を、ネットワーク３００から受信した同報通知であると誤って認識することを回避するためである。
【０１０３】
また、ステップＳ９０６又はステップＳ９０９の処理が実行された後に、複製管理テーブル１７０Ａから対応するエントリを削除してもよい。具体的には、送達確認部１６０が、受信したパケットを解析して、複製データのキー及びバリューを取得し、複製管理テーブル１７０Ａを参照して取得されたキー及びバリューに一致するエントリを検索する。送達確認部１６０は、一致したエントリを複製管理テーブル１７０Ａから削除する。
【０１０４】
第２の方法によれば、ネットワーク装置からの応答に基づいて複製処理の完了を判定するため、スレーブサーバ１００ｂ及び／又は１００ｎから複製処理完了等の応答を受ける場合と比較して、処理の高速化が可能となる。すなわち、従来のような同期による複製処理を用いる場合より、リクエスト処理の速度が向上する。また、第２の方法では、ネットワーク３００の状態を確認することによって、正常な状態のネットワーク３００を介して複製データが確実に送信されることを保証できる。したがって、第１の方法よりデータの信頼性が向上する。
【０１０５】
図８は、本発明の第１の実施形態における複製制御部１４０が実行する処理を説明するフローチャートである。図８は、第３の方法を適用した複製処理である。
【０１０６】
複製制御部１４０は、データ管理部１１０から呼び出されると、格納キーバリュー型データの複製データを生成する（ステップＳ１００１）。
【０１０７】
複製制御部１４０は、同報通知を用いて生成された複製データを送信する（ステップＳ１００２）。具体的には、データ送信部１５０が、マルチキャストアドレス宛に複製データを送信する。
【０１０８】
複製制御部１４０は、スレーブサーバ１００ｂ及び１００ｎに所定のパケットを送信し（ステップＳ１００３）、そのパケットに対する応答を受信したか否かを判定する（ステップＳ１００４）。具体的には、送達確認部１６０が、周期的にＰｉｎｇコマンドを実行してスレーブサーバ１００ｂ及び１００ｎにＩＣＭＰパケットを送信し、そのパケットに対する応答を待つ。
【０１０９】
なお、ステップＳ１００３の処理は、複製処理とは独立した処理として実行していてもよい。すなわち、送達確認部１６０が、周期的に、スレーブサーバ１００ｂ及び１００ｎとの通信状態を確認し、複製処理の実行時に通信状態の確認結果を参照すればよい。
【０１１０】
なお、通信状態の確認処理の周期は、予め設定されているものとする。ただし、任意の周期に変更することが可能である。
【０１１１】
スレーブサーバ１００ｂ及び１００ｎからパケットの応答を受信できた場合、ネットワーク３００の状態が正常であることを示し、かつ、スレーブサーバ１００との通信も正常であることを示す。これによって、正常な状態のネットワーク３００を介してスレーブサーバ１００ｂ及び１００ｎに複製データが送信されたことを保証できる。
【０１１２】
一方、スレーブサーバ１００ｂ及び１００ｎからパケットの応答を受信できない場合、ネットワーク３００に何らかの障害が発生しているため、複製データがスレーブサーバ１００ｂ及びｎに送信されてない可能性がある。
【０１１３】
所定のパケットの応答を受信できた場合、複製制御部１４０は、複製処理が成功した旨をデータ管理部１１０に通知し（ステップＳ１００５）、処理を終了する。すなわち、複製処理が完了したと判定される。
【０１１４】
所定のパケットの応答を受信できない場合、複製制御部１４０は、複製処理が失敗した旨をデータ管理部１１０に通知する（ステップＳ１００６）。さらに、複製制御部１４０は、メモリストア１３０に格納されたデータをディスクストア１２０に格納し（ステップＳ１００７）、処理を終了する。
【０１１５】
これによって、サーバ１００の電源等が切れた場合であっても、最新のデータが保持されるため、対障害耐性を確保することができる。
【０１１６】
第３の方法によれば、スレーブサーバ１００との通信状態に基づいて複製処理の完了を判定する。また、通信状態の確認方法に用いるパケットに対する応答は、複製データの格納完了の通知より高速であるため、従来の第２の方式より処理速度が向上する。また、第３の方法では、ネットワーク３００を介したスレーブサーバ１００との通信を確認しているため、第２の方法よりデータの信頼性が向上する。
【０１１７】
なお、上述の第３の方法では、マスタサーバ１００ａが、複製データの同報通知を行った後にＰｉｎｇをスレーブサーバ１００ｂ等に送信する例について述べたが本発明はこれに限定されない。例えば、マスタサーバ１００ａが、同報通知を行う前（直前等）にスレーブサーバ１００ｂ等にＰｉｎｇを送信し、その応答結果が正常を示す場合には、送達管理部１６０がデータ管理部１１０に複製処理の成功を通知し、同時に又はその後に、複製データの同報通知を行うようにしてもよい。複製データのデータサイズがＰｉｎｇに利用するＩＣＭＰパケットのデータサイズより大きい場合、送信負荷がその分軽減され、データ信頼性及びリクエスト処理性能の更なる向上を期待することができる。
【０１１８】
以上述べたように、第１の方法、第２の方法及び第３の方法では、同報通知によって複製データを送信しているが、本発明はこれに限定されない。例えば、ユニキャスト通信などを用いてもよい。ユニキャスト通信を用いて複製データが送信される場合に、第１の方法、第２の方法及び第３の方法を適用することによって、従来の第２の方式及び第３の方式より処理速度が向上する。
【０１１９】
第１の実施形態によれば、マスタサーバ１００は、ネットワーク３００の状態に基づいて、複製処理が成功したか否かを判定するため、従来の複製処理に比べ高速に処理できる。したがって、従来の計算機システムより処理性能を向上させ、かつ、データの信頼性を確保することができる。
【０１２０】
［第２の実施形態］
【０１２１】
第２の実施形態では、ネットワーク上で稼動するサービス及びプロセスの状態を確認することによってネットワークの状態を確認している点が異なる。以下、第１の実施形態との差異を中心に説明する。
【０１２２】
図９は、本発明の第２の実施形態における計算機システムの構成を示すブロック図である。
【０１２３】
第２の実施形態における計算機システムは、新たにＮＴＰサーバ１１００を含む。また、サーバ１００上では、ＮＴＰサーバプロセス１２００が稼動している。他の構成については第１の実施形態と同一である。
【０１２４】
ＮＴＰサーバ１１００は、ネットワーク３００に接続された計算機の時刻を同期するための処理を実行する。なお、ＮＴＰサーバ１１００が実行する処理は、公知の技術であるため説明を省略する。また、ＮＴＰサーバ１１００はサーバ１００ａ等と同一の物理構成であるため説明を省略する。
【０１２５】
ＮＴＰサーバプロセス１２００は、ＮＴＰサーバ１１００が管理する時刻と同期するためのプロセスである。
【０１２６】
図１０は、本発明の第２の実施形態における複製制御部１４０が実行する処理を説明するフローチャートである。
【０１２７】
複製制御部１４０は、データ管理部１１０から呼び出されると、格納されたキーバリュー型データの複製データを生成する（ステップＳ１３０１）。
【０１２８】
複製制御部１４０は、同報通知を用いて生成された複製データを送信する（ステップＳ１３０２）。具体的には、データ送信部１５０が、マルチキャストアドレス宛に複製データを送信する。
【０１２９】
複製制御部１４０は、ＮＴＰサーバプロセス１２００の稼働状態を確認し（ステップＳ１３０３）、ＮＴＰサーバプロセス１２００が正常に稼動しているか否かを判定する（ステップＳ１３０４）。具体的には、送達確認部１６０が、周期的にＮＴＰサーバプロセス１２００の稼動状態を確認する。
【０１３０】
なお、ステップＳ１３０３の処理は、複製処理とは独立した処理であってもよい。すなわち、送達確認部１６０が、周期的に、ＮＴＰサーバプロセス１２００の稼動状態を確認し、複製処理の実行時に確認結果を参照すればよい。ＮＴＰサーバ１１００との通信に異常が発生した場合には、ＮＴＰサーバプロセス１２００に障害が発生するため、これによってネットワーク３００の異常を検出できる。
【０１３１】
なお、プロセスの稼動状態を確認する処理の周期は、予め設定されているものとする。ただし、任意の周期に変更することが可能である。
【０１３２】
ＮＴＰサーバプロセス１２００が正常に稼動している場合、ネットワーク３００の状態が正常であることを示す。これによって、正常な状態のネットワーク３００を介してスレーブサーバ１００に複製データが送信されたことを保証できる。
【０１３３】
一方、ＮＴＰサーバプロセス１２００が正常に稼動していない場合、ネットワーク３００に何らかの障害が発生しているために、複製データがスレーブサーバ１００に送信されていない可能性がある。
【０１３４】
ＮＴＰサーバプロセス１２００が正常に稼動している場合、複製制御部１４０は、複製処理が成功した旨をデータ管理部１１０に通知し（ステップＳ１３０５）、処理を終了する。
【０１３５】
ＮＴＰサーバプロセス１２００が正常に稼動していない場合、複製制御部１４０は、複製処理が失敗した旨をデータ管理部１１０に通知する（ステップＳ１３０６）。さらに、複製制御部１４０は、メモリストア１３０に格納されたデータをディスクストア１２０に格納し（ステップＳ１３０７）、処理を終了する。
【０１３６】
これによって、サーバ１００の電源等が切れた場合であっても、最新のデータが保持されるためデータの信頼性を確保できる。
【０１３７】
第２の実施形態では、ＮＴＰサーバ１１００を用いてネットワーク３００の状態を確認したが、本発明はこれに限定されない。すなわち、ネットワーク３００を介して提供されるサービスであれば適用することができる。
【０１３８】
第２の実施形態によれば、マスタサーバ１００ａが、ネットワーク上で稼動するプロセスに基づいてネットワーク３００の状態を判定するため、ネットワーク３００から直接情報を取得する必要がないため高速に処理が可能となる。したがって、従来の計算機システムより性能を向上させることができる。
【０１３９】
［第３の実施形態］
【０１４０】
第３の実施形態では、データの信頼性をより向上させるため、サーバ１００ａが複製データの再送信処理を実行する。再送信処理は、複製処理が終了した後に実行される処理であり、複製処理の遅延には影響しない。すなわち、再送信処理は、複製処理とは独立した処理として実行される。以下第１の実施形態との差異を中心に説明する。
【０１４１】
図１１は、本発明の第３の実施形態における計算機システムの構成を示すブロック図である。
【０１４２】
第３の実施形態における計算機システムは、サーバ１００ａが有する複製制御部１４０に、再送制御部１４００を新たな構成として含む点が異なる。複製制御部１４０は、再送制御部１４００を構成に含むことによって、自己がスレーブサーバである場合には、ネットワーク３００を介してマスタサーバから送信された複製データの格納が完了したときマスタサーバに格納完了通知を送信する機能と、自己がマスタサーバである場合には、スレーブサーバに複製データが格納されているか否かを管理し、複製データが格納されていないときに、複製データを再度スレーブサーバに送信する機能（再送信処理機能）とを、さらに実行することができる。複製制御部１４０は、再送信処理を周期的に実行する。また、第３の実施形態の計算機システムは、第１の実施形態の複製管理テーブル１７０Ａに管理項目を追加した複製管理テーブル１７０Ｂを有する点も第１の実施形態と異なる。他の構成については第１の実施形態と同一である。
【０１４３】
なお、本実施形態では、２つのスレーブサーバ１００ｂ及び１００ｎに複製データが送信される場合を例に説明する。
【０１４４】
図１２は、本発明の第３の実施形態における複製管理テーブル１７０Ｂの一例を示す説明図である。
【０１４５】
複製管理テーブル１７０Ｂは、新たに、主複製先１５０１及び副複製先１５０２の２つの管理項目を含む。主複製先１５０１は、複製データの格納先としての優先順位が最も高いスレーブサーバ１００ｂに対する複製処理の結果を格納する。副複製先１５０２は、複製データの格納先としての優先順位が２番目に高いスレーブサーバ１００ｎに対する複製処理の結果を格納する。複製処理の結果は、複製処理が成功したことを示す「ｓｕｃｃｅｓｓ」、又は、複製処理が失敗したことを示す「ｆａｉｌ」のいずれかが格納されるようになっている。
【０１４６】
ＫＶＳでは、スレーブサーバ１００ｂ及び１００ｎに優先順位が決められている。例えば、スレーブサーバ１００ｂが、マスタとして管理するキーレンジと、マスタサーバ１００ａが管理するキーレンジとが近い順に優先順位を決定する方法が考えられる。なお、スレーブサーバ１００ｂ及び１００ｎの優先順位の決定方法は公知の技術であるため詳細な説明は省略する。
【０１４７】
本実施形態では、２つのスレーブサーバ１００ｂ及び１００ｎに複製データが送信されるため、優先順位が高い２つのスレーブサーバ１００ｂ及び１００ｎのみを対象としている。しかし、本発明はこれに限定されず、２つ以上のスレーブサーバに複製データが送信されてもよい。
【０１４８】
ここで、再送制御部１４００を含んだ複製制御部１４０の処理について説明する。
【０１４９】
スレーブサーバ１００ｂ及び１００ｎにおける複製制御部１４０は、マスタサーバ１００ａから送信された複製データの受信を検出し、マスタサーバ１００ａに対して複製処理が成功した旨の通知を送信する。なお、この通知には、スレーブサーバ１００ｂ又は１００ｎの識別子及び複製データの識別子が含まれる。
【０１５０】
また、マスタサーバ１００ａにおける複製制御部１４０は、スレーブサーバ１００ｂ又は１００ｎから複製処理が成功した旨の通知を受信すると、その通知に含まれるスレーブサーバ１００ｂ又は１００ｎの識別子及び複製データの識別子を取得する。
【０１５１】
複製制御部１４０は、取得された複製データの識別子に基づいて、複製管理テーブル１７０Ｂから対応するエントリを検索する。さらに、複製制御部１４０は、スレーブサーバ１００ｂや１００ｎの識別子から複製先のスレーブサーバ１００を特定し、対応するエントリの主複製先１５０１及び副複製先１５０２に「ｓｕｃｃｅｓｓ」を格納する。
【０１５２】
なお、複製制御部１４０は、周期的に複製管理テーブル１７０Ｂを参照し、一定期間内に複製処理の成功した旨の通知が受信できないエントリについては、「ｆａｉｌ」を格納する。
【０１５３】
図１３は、本発明の第３の実施形態におけるマスタサーバ１００ａの複製制御部１４０が実行する処理を説明するフローチャートである。
【０１５４】
複製制御部１４０は、複製管理テーブル１７０Ｂを参照し、主複製先のスレーブサーバ１００ｂに対する複製処理が成功しているか否かを判定する（ステップＳ１６０１、ステップＳ１６０２）。
【０１５５】
具体的には、再送制御部１４００が、複製管理テーブル１７０Ｂを参照し、全てのエントリの主複製先１５０１が「ｓｕｃｃｅｓｓ」であるか否かを判定する。主複製先１５０１が「ｆａｉｌ」であるエントリが少なくとも１つ以上ある場合、主複製先のスレーブサーバに対する複製処理が失敗していると判定される。
【０１５６】
主複製先のスレーブサーバ１００ｂに対する複製処理が成功していると判定された場合、再送制御部１４００は、処理を終了する。
【０１５７】
主複製先のスレーブサーバ１００ｂに対する複製処理が失敗していると判定された場合、複製制御部１４０は、複製処理を再度実行する（ステップＳ１６０３）。その後、複製制御部１４０は、ステップＳ１６０１に戻り同様の処理を実行する。複製処理は、第１の実施形態及び第２の実施形態のいずれの方法も用いてもよい。
【０１５８】
なお、複製制御部１４０は、副複製先のスレーブサーバ１００に対しても同様の判定処理を実行してもよい。すなわち、再送信処理において、管理する複製先の数の増加に応じて、データの信頼性が向上する。
【０１５９】
第３の実施形態によれば、スレーブサーバ１００ｂ及び／又は１００ｎに複製データが送信されていないことを検出し、スレーブサーバ１００ｂ及び／又は１００ｎに再度複製データを送信できるため、データの信頼性をより高くできる。
【０１６０】
［第４の実施形態］
【０１６１】
第４の実施形態では、第３の実施形態を拡張し、さらに、データの信頼性を向上させるため、複数回、複製データを含む同報通知を送信することを特徴の１つとする。以下第１の実施形態との差異を中心に説明する。
【０１６２】
なお、計算機システムの構成は、第３の実施形態とほぼ同一であるが、再送制御部１４００に、スレーブサーバに対する同報通知の送信回数を管理する機能を追加した点及びデータ送信分１５０が、この送信回数に応じて同報通知を実行する点が異なる。なお、他の構成については、第３の実施形態と同一であるため説明を省略する。
【０１６３】
図１４は、本発明の第４の実施形態におけるマスタサーバ１００ａが実行する処理を説明するフローチャートである。同図は、図４に示した第１実施形態の計算機システムにおける処理に、ステップＳ１７０１の処理を追加したものである。
【０１６４】
第４の実施形態では、ステップ７０２の後に、マスタサーバ１００ａが、送信回数算出処理を実行する（ステップＳ１７０１）。具体的には、再送制御部１４００が、同報通知の送信回数を算出する。具体的な処理については、図１５を用いて後述する。
【０１６５】
これによって、データ複製処理では、算出された送信回数分の同報通知が送信されることとなる。
【０１６６】
第４の実施形態における再送制御部１４００は、複製管理テーブル１７０Ｂのエントリ毎に複製処理の成功回数及び複製処理の失敗回数を計測するカウンタ機能を有する。
【０１６７】
再送制御部１４００は、複製管理テーブル１７０Ｂを更新する度に、複製処理の成功回数又は複製処理の失敗回数を更新する。
【０１６８】
例えば、複製管理テーブル１７０Ｂの任意のエントリにおける複製処理の成功回数が「９」、複製処理の失敗回数が「５」であった場合に、主複製先１５０１に「ｆａｉｌ」が格納され、副複製先１５０２に「ｓｕｃｃｅｓｓ」が格納されると、成功回数が「１０」、複製処理の失敗回数が「６」に更新される。
【０１６９】
他の処理は、第１の実施形態と同一であるため説明を省略する。
【０１７０】
図１５は、本発明の第４の実施形態における再送制御部１４００が実行する処理を説明するフローチャートである。
【０１７１】
再送制御部１４００は、カウンタ値を集計し（ステップＳ１８０１）、複製処理の成功確率を算出する（ステップＳ１８０２）。
【０１７２】
具体的には、再送制御部１４００は、複製管理テーブル１７０Ｂの全てのエントリに対応するカウンタ値を取得する。なお、カウンタ値には、複製処理の成功回数及び複製処理の失敗回数が含まれる。
【０１７３】
再送制御部１４００は、取得されたカウンタ値に基づいて、複製管理テーブル１７０Ｂに含まれる全エントリの複製処理の成功回数の合計値及び複製処理の失敗回数の合計値を算出する。以下、複製処理の成功回数の合計値を合計値Ａ１と記載し、複製処理の失敗回数の合計値を合計値Ａ２と記載する。
【０１７４】
再送制御部１４００は、算出された合計値Ａ１及び合計値Ａ２を下式（１）に代入して、複製処理の成功確率を算出する。
成功確率Ｐ＝Ａ１／（Ａ１＋Ａ２）…（１）
【０１７５】
次に、再送制御部１４００は、算出された複製処理の成功確率に基づいて、同報通知の送信回数を決定する（ステップＳ１８０３）。
【０１７６】
例えば、再送制御部１４００は、式（１）の逆数を同報通知の送信回数として決定する方法が考えられる。なお、式（１）の逆数が整数とならない場合、小数点以下を切り上げるものとする。なお、同報通知の送信回数の決定方法は、前述したものに限定されない。
【０１７７】
再送制御部１４００は、決定された同報通知の送信回数をデータ送信部１５０に通知し、処理を終了する（ステップＳ１８０４）。
【０１７８】
なお、第４の実施形態では、成功回数と、失敗回数とを用いて複製処理の成功確率を算出したが、本発明はこれに限定されない。例えば、複製処理の全実行回数と、複製処理の成功回数とを用いることによって複製処理の成功確率を算出することができる。また、複製処理の全実行回数と、複製処理の失敗回数とを用いて複製処理の成功確率を算出することができる。
【０１７９】
第４の実施形態によれば、予め、複数回同報通知を送信することによって、データの信頼性をより高くすることができる。
【０１８０】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【０１８１】
なお、本実施形態で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【０１８２】
さらに、本実施形態では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
【図１】
0005548829.tif 000002
【図２】
0005548829.tif 000003
【図３】
0005548829.tif 000004
【図４】
0005548829.tif 000005
【図５】
0005548829.tif 000006
【図６】
0005548829.tif 000007
【図７】
0005548829.tif 000008
【図８】
0005548829.tif 000009
【図９】
0005548829.tif 000010
【図１０】
0005548829.tif 000011
【図１１】
0005548829.tif 000012
【図１２】
0005548829.tif 000013
【図１３】
0005548829.tif 000014
【図１４】
0005548829.tif 000015
【図１５】
0005548829.tif 000016