(57)【要約】第２のコンピュータは、キャッシュ上で更新したコピーデータの識別情報とバージョン番号とを有する確認データを第１のコンピュータへ送信する。第１のコンピュータは、第２のコンピュータから受信した確認データと永続記憶装置の記憶情報とに基づいて、確認データから、永続記憶装置に書き込む必要のあるコピーデータに係る識別情報とバージョン番号とを抽出し、抽出した識別情報とバージョン番号とを有する応答データを第２のコンピュータへ送信する。第２のコンピュータは、第１のコンピュータから受信した応答データとキャッシュの記憶情報とに基づいて、永続記憶装置へ書き込むために第１のコンピュータへ送信するキャッシュ上のコピーデータを決定する。
2014199568.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピュータと複数の第２のコンピュータとを有し、前記第１のコンピュータは、データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置を有し、それぞれの前記第２のコンピュータは、前記永続記憶装置から取得した前記データのコピーデータを保持するキャッシュを有する、コンピュータシステムにおける前記永続記憶装置への前記キャッシュ上のデータの書込みを制御する方法であって、
前記第２のコンピュータが、自コンピュータの前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを前記第１のコンピュータへ送信し、
前記第１のコンピュータが、前記第２のコンピュータから受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、前記第２のコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、該抽出した前記識別情報と前記バージョン番号とを有する応答データを前記第２のコンピュータへ送信し、
前記第２のコンピュータが、前記第１のコンピュータから受信した前記応答データと前記キャッシュの記憶情報とに基づいて、前記永続記憶装置へ書き込むために前記第１のコンピュータへ送信する前記キャッシュ上の前記コピーデータを決定する
永続記憶装置へのデータ書込制御方法。
【請求項２】
前記第２のコンピュータは、前記コピーデータの決定では、前記応答データ中の識別情報を有する前記キャッシュ上のコピーデータであって前記バージョン番号が前記応答データ中の前記バージョン番号より古くないコピーデータを、前記第１のコンピュータへ送信する前記コピーデータとして決定する
請求項１に記載の永続記憶装置へのデータ書込制御方法。
【請求項３】
前記第１のコンピュータは、前記応答データの送信では、前記確認データに対する応答データを、前記確認データを送信した前記第２のコンピュータと前記確認データを送信していない前記第２のコンピュータとの双方に送信する
請求項１または２に記載の永続記憶装置へのデータ書込制御方法。
【請求項４】
前記第１のコンピュータは、前記応答データの送信では、複数の前記第２のコンピュータから相前後して受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、複数の前記第２のコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、該抽出した前記識別情報と前記バージョン番号とを有する応答データを前記第２のコンピュータへ送信する
請求項１乃至３の何れかに記載の永続記憶装置へのデータ書込制御方法。
【請求項５】
前記第１のコンピュータは、前記応答データの送信では、前記応答データに含まれる前記識別情報と前記バージョン番号との或る組に対して他の組とは値の相違するオフセット時間を記載した前記応答データを前記第２のコンピュータへ送信し、
前記第２のコンピュータは、前記第１のコンピュータから受信した前記応答データに記載された前記オフセット時間に基づいて、前記決定した前記コピーデータの送信タイミングを制御する
請求項１乃至４の何れかに記載の永続記憶装置へのデータ書込制御方法。
【請求項６】
前記第１のコンピュータは、前記応答データの送信では、前記第２のコンピュータと前記コピーデータの送受信を行うネットワークの混雑状況を検出し、一定以上の混雑状況の場合には、前記応答データに含まれる前記識別情報と前記バージョン番号との或る組に対して他の組とは値の相違するオフセット時間を記載した前記応答データを前記第２のコンピュータへ送信し、
前記第２のコンピュータは、前記第１のコンピュータから受信した前記応答データに記載された前記オフセット時間に基づいて、前記決定した前記コピーデータの送信タイミングを制御する
請求項１乃至４の何れかに記載の永続記憶装置へのデータ書込制御方法。
【請求項７】
前記第１のコンピュータと前記第２のコンピュータとは、前記確認データおよび前記応答データを第１のネットワークを通じて送受信し、前記コピーデータを第２のネットワークを通じて送受信する
請求項１乃至６の何れかに記載の永続記憶装置へのデータ書込制御方法。
【請求項８】
第１のコンピュータと、
複数の第２のコンピュータとを有し、
前記第１のコンピュータは、
データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置と、
第１の制御部と
を有し、
それぞれの前記第２のコンピュータは、
前記永続記憶装置から取得した前記データのコピーデータを保持するキャッシュと、
第２の制御部と
を有し、
前記第２のコンピュータの前記第２の制御部は、自コンピュータの前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを前記第１のコンピュータへ送信し、
前記第１のコンピュータの前記第１の制御部は、前記第２のコンピュータから受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、前記第２のコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、該抽出した前記識別情報と前記バージョン番号とを有する応答データを前記第２のコンピュータへ送信し、
前記第２のコンピュータの前記第２の制御部は、前記第１のコンピュータから受信した前記応答データと前記キャッシュの記憶情報とに基づいて、前記永続記憶装置へ書き込むために前記第１のコンピュータへ送信する前記キャッシュ上の前記コピーデータを決定する
コンピュータシステム。
【請求項９】
前記第２の制御部は、前記コピーデータの決定では、前記応答データ中の識別情報を有する前記キャッシュ上のコピーデータであって前記バージョン番号が前記応答データ中の前記バージョン番号より古くないコピーデータを、前記第１のコンピュータへ送信する前記コピーデータとして決定する
請求項８に記載のコンピュータシステム。
【請求項１０】
前記第１の制御部は、前記応答データの送信では、前記確認データに対する応答データを、前記確認データを送信した前記第２のコンピュータと前記確認データを送信していない前記第２のコンピュータとの双方に送信する
請求項８または９に記載のコンピュータシステム。
【請求項１１】
前記第１の制御部は、前記応答データの送信では、複数の前記第２のコンピュータから相前後して受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、複数の前記第２のコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、該抽出した前記識別情報と前記バージョン番号とを有する応答データを前記第２のコンピュータへ送信する
請求項８乃至１０の何れかに記載のコンピュータシステム。
【請求項１２】
前記第１の制御部は、前記応答データの送信では、前記応答データに含まれる前記識別情報と前記バージョン番号との或る組に対して他の組とは値の相違するオフセット時間を記載した前記応答データを前記第２のコンピュータへ送信し、
前記第２の制御は、前記第１のコンピュータから受信した前記応答データに記載された前記オフセット時間に基づいて、前記決定した前記コピーデータの送信タイミングを制御する
請求項８乃至１１の何れかに記載のコンピュータシステム。
【請求項１３】
前記第１の制御部は、前記応答データの送信では、前記第２のコンピュータと前記コピーデータの送受信を行うネットワークの混雑状況を検出し、一定以上の混雑状況の場合には、前記応答データに含まれる前記識別情報と前記バージョン番号との或る組に対して他の組とは値の相違するオフセット時間を記載した前記応答データを前記第２のコンピュータへ送信し、
前記第２の制御部は、前記第１のコンピュータから受信した前記応答データに記載された前記オフセット時間に基づいて、前記決定した前記コピーデータの送信タイミングを制御する
請求項８乃至１１の何れかに記載のコンピュータシステム。
【請求項１４】
前記第１の制御部と前記第２の制御部とは、前記確認データおよび前記応答データを第１のネットワークを通じて送受信し、前記コピーデータを第２のネットワークを通じて送受信する
請求項８乃至１３の何れかに記載のコンピュータシステム。
【請求項１５】
それぞれがキャッシュを有する複数のキャッシュコンピュータにネットワークを通じて接続されたストレージコンピュータであって、
データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置と、
制御部と
を有し、
前記制御部は、
前記永続記憶装置上の前記データのコピーデータを前記キャッシュに保持する前記キャッシュコンピュータから前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを受信し、
前記受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、前記キャッシュコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、
前記抽出した前記識別情報と前記バージョン番号とを有する応答データを前記キャッシュコンピュータへ送信する
ストレージコンピュータ。
【請求項１６】
データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置を有するストレージコンピュータにネットワークを通じて接続されたキャッシュコンピュータであって、
前記永続記憶装置から取得した前記データのコピーデータを保持するキャッシュと、
制御部と
を有し、
前記制御部は、
前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを前記ストレージコンピュータへ送信し、
前記ストレージコンピュータから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを有する応答データを受信し、
前記受信した前記応答データと前記キャッシュの記憶情報とに基づいて、前記永続記憶装置へ書き込むために前記ストレージコンピュータへ送信する前記キャッシュ上の前記コピーデータを決定する
キャッシュコンピュータ。
【請求項１７】
それぞれがキャッシュを有する複数のキャッシュコンピュータにネットワークを通じて接続されたストレージコンピュータを、
データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置と、
制御部と
して機能させ、
前記制御部は、
前記永続記憶装置上の前記データのコピーデータを前記キャッシュに保持する前記キャッシュコンピュータから前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを受信し、
前記受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、前記キャッシュコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、
前記抽出した前記識別情報と前記バージョン番号とを有する応答データを前記キャッシュコンピュータへ送信する
プログラム。
【請求項１８】
データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置を有するストレージコンピュータにネットワークを通じて接続されたキャッシュコンピュータを、
前記永続記憶装置から取得した前記データのコピーデータを保持するキャッシュと、
制御部と
して機能させ、
前記制御部は、
前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを前記ストレージコンピュータへ送信し、
前記ストレージコンピュータから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを有する応答データを受信し、
前記受信した前記応答データと前記キャッシュの記憶情報とに基づいて、前記永続記憶装置へ書き込むために前記ストレージコンピュータへ送信する前記キャッシュ上の前記コピーデータを決定する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、永続記憶装置へのデータ書込制御方法、コンピュータシステム、ストレージコンピュータ、キャッシュコンピュータ、およびプログラムに関する。
【背景技術】
【０００２】
近年、携帯やインターネットが普及するにつれて、扱うデータ量が増え、大量データの処理の高速化が求められている。その中で、大量データを保管するためのシステムとして、キーバリューストア（ＫＶＳ）の需要が高まっている。キーバリューストアでは、データ（値：ｖａｌｕｅ）に対して、対応する一意の標識（ｋｅｙ）を設定し、それらをペアで保存する。キーとバリューとをペアにしたデータを、以下、ＫＶデータと呼ぶ。特に、複数のサーバに分散してＫＶデータを保存できる機能を持ったものは、分散ＫＶＳと呼ばれる。分散ＫＶＳは、分散データベースの一種であり、スケーラビリティとスループット性を重視するが、データの一貫性（Consistency）は強く要求されないシステムに主に利用されている。【０００３】
分散ＫＶＳのような分散処理システムにおいて、データの処理性能を向上させるための技術として、キャッシュの利用が知られている。キャッシュの利用とは、使用頻度の高いデータを高速な記憶装置に蓄えておくことにより、いちいち低速な永続記憶装置から読み出す無駄を省いて高速化する技術である（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２３５７３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
図１５は、キャッシュを利用する、本発明に関連する分散処理システム１０００の概念図である。分散処理システム１０００は、コンピュータ１２００と、コンピュータ１２００にネットワーク１１００を通じて接続された複数のコンピュータ１３００とを有する。【０００６】
コンピュータ１２００は、データ１２１０を永続的に記憶する永続記憶装置１２２０を有する。永続記憶装置１２２０は、例えばＨＤＤ（Hard Disk Drive）で構成される。永続記録装置１２２０上のデータ１２１０は、データ本体１２１１と識別情報１２１２とバージョン番号１２１３とを有する。データ本体１２１１は、数値や文字列などである。識別情報１２１２は、データ１２１０を一意に識別する識別子である。バージョン番号１２１３は、データ１２１０が更新された最新の時刻を表す。【０００７】
複数のコンピュータ１３００のそれぞれは、コンピュータ１２００の永続記憶装置１２２０から取得したデータ１２１０のコピーデータ１３１０を記憶するキャッシュ１３２０を有する。キャッシュ１３２０は、例えばＲＡＭ（Random Access Memory）で構成される。データ１３１０は、オリジナルのデータ１２１０のデータ本体１２１１、識別情報１２１２、バージョン番号１２１３に対応する、データ本体１３１１、識別情報１３１２、バージョン番号１２１３を有する。【０００８】
次に、本発明に関連する分散処理システム１０００の動作を説明する。【０００９】
各々のコンピュータ１３００は、予めコンピュータ１２００の永続記憶装置１２２０からデータ１２１０を取得してキャッシュ１３２０にデータ１３１０としてコピーする。次に各々のコンピュータ１３００は、キャッシュ１３２０上にコピーしたデータ１３１０を利用して処理を実行する。このとき各々のコンピュータ１３００は、データ１３１０のデータ本体１３１１を更新したとき、その更新時刻に基づいてバージョン番号１３１３を書き換える。【００１０】
図１５では、一方のコンピュータ１３００−１が、キャッシュ１３２０−１上のデータ１３１０−１のデータ本体１３１１−１を「Ｄ１」から「Ｄ２」に書き換え、バージョン番号１３１３−１を「Ｔ１」から「Ｔ２」に書き換えている。また、他方のコンピュータ１３００−２は、コンピュータ１３００−１がデータ１３１０−１を更新した後の時刻において、キャッシュ１３２０−２上のデータ１３１０−２のデータ本体１３１１−２を「Ｄ１」から「Ｄ３」に書き換え、バージョン番号１３１３−２を「Ｔ１」から「Ｔ３」に書き換えている。【００１１】
各々のコンピュータ１３００は、自コンピュータ１３００の障害発生に伴うキャッシュデータの消失に備えて、キャッシュ１３２０上で更新したデータ１３１０をコンピュータ１２００の永続記憶装置１２１０に反映する。具体的には、各々のコンピュータ１３００は、永続記憶装置１２１０に未だ反映していない更新後のデータ１３１０をキャッシュ１３２０から読み出してコンピュータ１２００へ送信する動作を、例えば定期的に実行する。図１５に示す例では、コンピュータ１３００−１が更新後のデータ１３１０−１をコンピュータ１２００へ送信し、コンピュータ１３００−２が更新後のデータ１３１０−２をコンピュータ１２００へ送信することになる。【００１２】
コンピュータ１２００は、コンピュータ１３００から受信した更新後のデータ１３１０に基づいて、永続記憶装置１２２０上のオリジナルのデータ１２１０を更新する。具体的には、コンピュータ１２００は、コンピュータ１３００から受信した更新後のデータ１３１０に含まれるデータ識別子１３１２と同じデータ識別子１２１２を有するデータ１２１０を永続記憶装置１２２０から読み出し、データ１２１０のバージョン番号１２１３と上記データ１３１０のバージョン番号１３１３とを比較する。若し、バージョン番号１２１３が示す更新時刻よりもバージョン番号１３１３が示す更新時刻の方がより最新であれば、コンピュータ１２００は、永続記憶装置１２２０上のデータ１２１０のデータ本体１２１１とバージョン番号１２１３とを、コンピュータ１３００から受信したデータ１３１０のデータ本体１３１１とバージョン番号１３１３とで上書きする。一方、バージョン番号１２１３が示す更新時刻よりもバージョン番号１３１３が示す更新時刻の方がより最新でなければ、上述したような上書きは実施しない。このような動作によって、永続記憶装置１２２０上のデータをより更新時刻の新しい更新後データによって更新して永続化する。【００１３】
しかしながら、上記の本発明に関連する分散処理システム１０００では、永続記憶装置に反映されないデータがコンピュータ間で無駄に送受信される。例えば、図１５に示した例では、コンピュータ１３００−１がデータ１３１０−１を更新した後の時刻に、コンピュータ１３００−２がデータ１３１０−２を更新している。しかし、各コンピュータ１３００の反映タイミングにずれがあると、コンピュータ１３００−２が更新後データ１３１０−２をコンピュータ１２００に送信した後、コンピュータ１３００−１が更新後データ１３１０−１をコンピュータ１２００に送信する事象が発生する。その場合、コンピュータ１２００は、コンピュータ１３００−２から更新後データ１３１０−２を受信したときは、受信した更新後データ１３１０−２で永続記憶装置１２２０のデータ１２１０を更新する。しかし、コンピュータ１３００−１から更新後データ１３１０−１を受信したときは、永続記憶装置１２２０のデータが既に更新後データ１３１０−２によって更新されているので、更新後データ１３１０−２より更新時刻の古い更新後データ１３１０−１による更新は実行されない。この結果、コンピュータ１３００−１とコンピュータ１２００間で実施された更新後データ１３１０−１の送受信は無駄になる。【００１４】
本発明の目的は、上述した課題、すなわち、永続記憶装置に反映する必要のないデータがコンピュータ間で無駄に送受信される、という課題を解決する永続記憶装置へのデータ書込制御方法を提供することにある。
【課題を解決するための手段】
【００１５】
本発明の第１の観点に係る永続記憶装置へのデータ書込制御方法は、
第１のコンピュータと複数の第２のコンピュータとを有し、前記第１のコンピュータは、データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置を有し、それぞれの前記第２のコンピュータは、前記永続記憶装置から取得した前記データのコピーデータを保持するキャッシュを有する、コンピュータシステムにおける前記永続記憶装置への前記キャッシュ上のデータの書込みを制御する方法であって、
前記第２のコンピュータが、自コンピュータの前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを前記第１のコンピュータへ送信し、
前記第１のコンピュータが、前記第２のコンピュータから受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、前記第２のコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、該抽出した前記識別情報と前記バージョン番号とを有する応答データを前記第２のコンピュータへ送信し、
前記第２のコンピュータが、前記第１のコンピュータから受信した前記応答データと前記キャッシュの記憶情報とに基づいて、前記永続記憶装置へ書き込むために前記第１のコンピュータへ送信する前記キャッシュ上の前記コピーデータを決定する。【００１６】
本発明の第２の観点に係るコンピュータシステムは、
第１のコンピュータと、
複数の第２のコンピュータとを有し、
前記第１のコンピュータは、
データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置と、
第１の制御部と
を有し、
それぞれの前記第２のコンピュータは、
前記永続記憶装置から取得した前記データのコピーデータを保持するキャッシュと、
第２の制御部と
を有し、
前記第２のコンピュータの前記第２の制御部は、自コンピュータの前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを前記第１のコンピュータへ送信し、
前記第１のコンピュータの前記第１の制御部は、前記第２のコンピュータから受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、前記第２のコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、該抽出した前記識別情報と前記バージョン番号とを有する応答データを前記第２のコンピュータへ送信し、
前記第２のコンピュータの前記第２の制御部は、前記第１のコンピュータから受信した前記応答データと前記キャッシュの記憶情報とに基づいて、前記永続記憶装置へ書き込むために前記第１のコンピュータへ送信する前記キャッシュ上の前記コピーデータを決定する。【００１７】
本発明の第３の観点に係るストレージコンピュータは、
それぞれがキャッシュを有する複数のキャッシュコンピュータにネットワークを通じて接続されたストレージコンピュータであって、
データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置と、
制御部と
を有し、
前記制御部は、
前記永続記憶装置上の前記データのコピーデータを前記キャッシュに保持する前記キャッシュコンピュータから前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを受信し、
前記受信した前記確認データと前記永続記憶装置の記憶情報とに基づいて、前記キャッシュコンピュータから受信した前記確認データから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを抽出し、
前記抽出した前記識別情報と前記バージョン番号とを有する応答データを前記キャッシュコンピュータへ送信する。【００１８】
本発明の第４の観点に係るキャッシュコンピュータは、
データと前記データの識別情報と前記データのバージョン番号との組を記憶する永続記憶装置を有するストレージコンピュータにネットワークを通じて接続されたキャッシュコンピュータであって、
前記永続記憶装置から取得した前記データのコピーデータを保持するキャッシュと、
制御部と
を有し、
前記制御部は、
前記キャッシュ上で更新した前記コピーデータの前記識別情報と前記バージョン番号とを有する確認データを前記ストレージコンピュータへ送信し、
前記ストレージコンピュータから、前記永続記憶装置に書き込む必要のある前記コピーデータに係る前記識別情報と前記バージョン番号とを有する応答データを受信し、
前記受信した前記応答データと前記キャッシュの記憶情報とに基づいて、前記永続記憶装置へ書き込むために前記ストレージコンピュータへ送信する前記キャッシュ上の前記コピーデータを決定する。
本発明の第５の観点に係るプログラムは、
それぞれがキャッシュを有する複数のキャッシュコンピュータにネットワークを通じて接続されたストレージコンピュータを、
データと上記データの識別情報と上記データのバージョン番号との組を記憶する永続記憶装置と、
制御部と
して機能させ、
上記制御部は、
上記永続記憶装置上の上記データのコピーデータを上記キャッシュに保持する上記キャッシュコンピュータから上記キャッシュ上で更新した上記コピーデータの上記識別情報と上記バージョン番号とを有する確認データを受信し、
上記受信した上記確認データと上記永続記憶装置の記憶情報とに基づいて、上記キャッシュコンピュータから受信した上記確認データから、上記永続記憶装置に書き込む必要のある上記コピーデータに係る上記識別情報と上記バージョン番号とを抽出し、
上記抽出した上記識別情報と上記バージョン番号とを有する応答データを上記キャッシュコンピュータへ送信する。
本発明の第６の観点に係るプログラムは、
データと上記データの識別情報と上記データのバージョン番号との組を記憶する永続記憶装置を有するストレージコンピュータにネットワークを通じて接続されたキャッシュコンピュータを、
上記永続記憶装置から取得した上記データのコピーデータを保持するキャッシュと、
制御部と
して機能させ、
上記制御部は、
上記キャッシュ上で更新した上記コピーデータの上記識別情報と上記バージョン番号とを有する確認データを上記ストレージコンピュータへ送信し、
上記ストレージコンピュータから、上記永続記憶装置に書き込む必要のある上記コピーデータに係る上記識別情報と上記バージョン番号とを有する応答データを受信し、
上記受信した上記応答データと上記キャッシュの記憶情報とに基づいて、上記永続記憶装置へ書き込むために上記ストレージコンピュータへ送信する上記キャッシュ上の上記コピーデータを決定する。
【発明の効果】
【００１９】
本発明は上述した構成を有するため、永続記憶装置に反映する必要のないデータがコンピュータ間で無駄に送受信されるのを防止することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態に係る分散処理システムのブロック図である。
【図２】本発明の第１の実施形態に係る分散処理システムの動作の一例を示すシーケンスチャートである。
【図３】本発明の第２の実施形態の前提となる分散キャッシュデータ永続化システムを説明するための図である。
【図４】本発明の第２の実施形態の前提となる分散キャッシュデータ永続化システムのキャッシュデータの構成を説明するための図である。
【図５】本発明の第２の実施形態のブロック図である。
【図６】本発明の第２の実施形態の動作を示す流れ図である。
【図７】本発明の第２の実施形態におけるキャッシュデータの構成を説明するための図である。
【図８】本発明の第２の実施形態におけるキャッシュノードが送信するダイヤルトーンの一例を説明するための図である。
【図９】本発明の第２の実施形態におけるキャッシュノードが送信するダイヤルトーンの他の例を説明するための図である。
【図１０】本発明の第２の実施形態におけるストレージノードが有する永続化テーブルを説明するための図である。
【図１１】本発明の第２の実施形態におけるストレージノードが送信するビジートーンを説明するための図である。
【図１２】本発明の第３の実施形態のブロック図である。
【図１３】本発明の第３の実施形態の動作を示す流れ図である。
【図１４】本発明の第３の実施形態におけるストレージノードが送信するビジートーンを説明するための図である。
【図１５】本発明に関連する分散処理システムの概念図である。
【発明を実施するための形態】
【００２１】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
図１を参照すると、本発明の第１の実施形態に係る分散処理システム１００は、コンピュータ１２０と、このコンピュータ１２０にネットワーク１１０を通じて接続された複数のコンピュータ１３０とを有する。
【００２２】
コンピュータ１２０は、データを永続的に記憶するストレージサーバ（ストレージノードとも称す）などのコンピュータである。コンピュータ１２０は、例えば、ＣＰＵ（CentralProcessingUnit）、ＲＯＭ（Read Only Memory）やＲＡＭ等のメモリ、各種の情報を格納する外部記憶装置、入出力インターフェース、通信インターフェース、およびこれらを相互に接続するバスを備える専用または汎用のコンピュータであってよい。またコンピュータ１２０は、複数存在してよい。
【００２３】
コンピュータ１２０は、主な機能部として、永続記憶装置１２１と制御部１２２とを有する。
【００２４】
永続記憶装置１２１は、例えばハードディスクで構成される。永続記録装置１２１はデータ１２１０を永続的に記憶する。データ１２１０は、データ本体１２１１とデータ識別情報１２１２とバージョン番号１２１３とを有する。データ本体１２１１は、数値や文字列などである。データ識別情報１２１２は、データ１２１０を一意に識別する識別子である。バージョン番号１２１３は、データ１２１０が更新された最新の時刻を表す。ここでは、バージョン番号は更新時刻としたが、本発明におけるバージョン番号は複数のイベント間で順序が決まるものであれば更新時刻以外のものであってよい。例えば、カサンドラ（Ｃａｓｓａｎｄｒａ）と呼ばれる分散キーバリューストア（ＫＶＳ）におけるベクタークロック（Ｖｅｃｔｏｒ  Ｃｌｏｃｋ）をバージョン番号としてもよい。
【００２５】
制御部１２２は、コンピュータ１２０の主たる制御を司る。制御部１２２は、コンピュータ１２０を構成するＣＰＵとＲＯＭ等に記憶されたプログラムとで実現することができる。
【００２６】
複数のコンピュータ１３０のそれぞれは、コンピュータ１２０の永続記憶装置１２１に記憶されたデータ１２１０のコピーを保持し、図示しないクライアント装置から受信した処理要求に従って、データ１２１０のコピーを参照、更新する処理を実施し、処理結果をクライアント装置へ応答するサーバなどのコンピュータである。各コンピュータ１３０は、例えば、ＣＰＵ、ＲＯＭやＲＡＭ等のメモリ、各種の情報を格納する外部記憶装置、入出力インターフェース、通信インターフェース、およびこれらを相互に接続するバスを備える専用または汎用のコンピュータであってよい。またコンピュータ１２０は、図１では２台であるが、３台以上存在してもよい。
【００２７】
各々のコンピュータ１３０は、キャッシュ１３１と制御部１３２とを有する。
【００２８】
キャッシュ１３１は、コンピュータ１２０から取得したデータ１２１０のコピーデータ１３１０を保持する機能を有する。キャッシュ１３１は、ＲＡＭ等の書込み読み出し可能なメモリで構成される。キャッシュ１３１上のコピーデータ１３１０は、オリジナルのデータ１２１０が有するデータ本体１２１１、識別情報１２１２、バージョン番号１２１３に対応する、データ本体１３１１、識別情報１３１２、バージョン番号１３１３を有する。
【００２９】
制御部１３２は、コンピュータ１３０の主たる制御を司る。制御部１３２は、コンピュータ１３０を構成するＣＰＵとＲＯＭ等に記憶されたプログラムとで実現することができる。
【００３０】
ネットワーク１１０は、コンピュータ１２０とコンピュータ１３０との間の通信路である。
【００３１】
図２は、本実施形態における動作の一例を示すシーケンスチャートである。以下、図１および図２を参照して、本実施形態の動作を説明する。
【００３２】
各々のコンピュータ１３０の制御部１３２は、コンピュータ１２０の制御部１２２と通信することにより、利用頻度の高いデータ１２１０をコンピュータ１２０の永続記憶装置１２１から取得してキャッシュ１３１にコピーする（図２のステップＳ１０１、Ｓ１０２）。ここでは、データ本体１２１１が「Ｄ１」、識別情報が「Ｎ１」、バージョン番号が「Ｔ１」のデータ１２１０が各々のコンピュータ１３０のキャッシュ１３１にコピーされたものとする。
【００３３】
その後、各々のコンピュータ１３０の制御部１３２は、キャッシュ１３１上のコピーデータ１３１０を利用して、処理要求に係る処理を実行する。このとき制御部１３２は、コピーデータ１３１０のデータ本体１３１１を更新したとき、その更新時刻に基づいてバージョン番号１３１３を書き換える。
【００３４】
図２に示す例では、一方のコンピュータ１３０−１が、処理要求Ｓ１０３に従って、キャッシュ１３１−１上のデータ１３１０−１のデータ本体１３１１−１を「Ｄ１」から「Ｄ２」に書き換え、バージョン番号１３１３−１を「Ｔ１」から「Ｔ２」に書き換えている（Ｓ１０４）。また、他方のコンピュータ１３０−２が、コンピュータ１３０−１がデータ１３１０−１を更新した後の時刻において、処理要求Ｓ１０５に従って、キャッシュ１３１−２のデータ１３１０−２のデータ本体１３１１−２を「Ｄ１」から「Ｄ３」に書き換え、バージョン番号１３１３−２を「Ｔ１」から「Ｔ３」に書き換えている（ステップＳ１０６）。
【００３５】
各々のコンピュータ１３０の制御部１３２は、自コンピュータ１３０の障害発生に伴うキャッシュデータの消失に備えて、キャッシュ１３１上で更新したデータ１３１０をコンピュータ１２０の永続記憶装置１２１に反映する。その際、制御部１３２は、更新したデータ本体１３１１を含むコピーデータ１３１０をいきなりコンピュータ１２０に送信しない。その代わりに、制御部１３２は、コピーデータ１３１０中の識別情報１３１２とバージョン番号１３１３とを有する確認データをコンピュータ１２０に送信する。各々のコンピュータ１３０の制御部１３２が確認データをコンピュータ１２０に送信するタイミングは任意である。例えば、各々のコンピュータ１３０は、確認データをコンピュータ１２０に未だ送信していない更新後のデータ１３１０をキャッシュ１３１から読み出し、その確認データをコンピュータ１２０へ送信する動作を、自コンピュータ１３０で定められた期間毎に周期的に繰り返してよい。
【００３６】
図２に示す例では、コンピュータ１３０−１、１３０−２の内、最初にコンピュータ１３０−２が、更新後のデータ１３１０−２の識別情報「Ｎ１」とバージョン番号「Ｔ３」を有する確認データを作成してコンピュータ１２０へ送信している（ステップＳ１０７）。
【００３７】
コンピュータ１２０の制御部１２２は、コンピュータ１３０−２から上記確認データを受信すると、応答データを作成して送信する（ステップＳ１０８）。この応答データの作成では、まず制御部１２２は、受信した確認データと永続記憶装置１２１の記憶情報とに基づいて、受信した確認データから、永続記憶装置１２１に書き込む必要のあるコピーデータに係る識別情報とバージョン番号とを抽出する。今の例では、確認データ中の識別情報「Ｎ１」と組を成すバージョン番号「Ｔ３」は、永続記憶装置１２１上の同じ識別情報「Ｎ１」を有するデータ１２１０のバージョン番号「Ｔ１」より最新であるため、識別情報「Ｎ１」とバージョン番号「Ｔ３」とが確認データから抽出される。次に制御部１２２は、上記抽出した識別情報「Ｎ１」とバージョン番号「Ｔ３」とを有する応答データをコンピュータ１３０−２へ送信する。なお、確認データから永続記憶装置１２１に書き込む必要のあるコピーデータに係る識別情報が１つも抽出されなかった場合、制御部１２２は、確認データ中の識別情報と、その識別情報に対応して永続記憶装置１２１に記憶されているデータ１２１０のバージョン番号との組を有する応答データを作成してコンピュータ１３０−２に送信する。
【００３８】
コンピュータ１３０−２の制御部１３２は、コンピュータ１２０から上記応答データを受信すると、受信した応答データとキャッシュ１３１−２の記憶情報とに基づいて、永続化するためにコンピュータ１２０へ送信するキャッシュ１３１−２上のコピーデータを決定し、送信する（ステップＳ１０９）。具体的には、制御部１３２は、応答データに含まれる識別情報毎に、その識別情報と同じ識別情報を有するコピーデータ１３１０のバージョン番号１３１３をキャッシュ１３１から抽出し、応答データ中の当該識別情報と組みを成すバージョン番号と比較する。そして、制御部１３２は、キャッシュ１３１から抽出したバージョン番号が応答データ中のバージョン番号よりも古くないコピーデータ１３１０を、永続化するためにコンピュータ１２０へ送信するデータとして決定し、送信する。今の例では、キャッシュ１３１−２上の識別情報「Ｎ１」を有するコピーデータ１３１０−２のバージョン番号「Ｔ３」は、応答データ中の識別情報「Ｎ１」と組を成すバージョン番号「Ｔ３」よりも古くないため、コピーデータ１３１０−２が永続化のためにコンピュータ１２０へ送信するデータとして決定される。そして、制御部１３２は、上記決定したコピーデータ１３１０−２をキャッシュ１３１−２から読み出して、コンピュータ１２０へ送信する。
【００３９】
コンピュータ１２０の制御部１２２は、コンピュータ１３０−２から上記コピーデータ１３１０−２を受信すると、受信したコピーデータと永続記憶装置１２１の記憶情報とに基づいて、受信したコピーデータを永続記憶装置１２１へ書き込むか否かを決定し、書き込むと決定した場合にその書き込みを行う（ステップＳ１１０）。具体的には、制御部１２２は、受信したコピーデータ毎に、その識別情報と同じ識別情報を有するデータ１２１０のバージョン番号１２１３を永続記憶装置１２１から抽出し、コピーデータ中のバージョン番号と比較する。そして、制御部１２２は、永続記憶装置１２１中のバージョン番号よりも最新のバージョン番号を有するコピーデータは、書き込むべきコピーデータと決定し、永続記憶装置１２１に書き込む。今の例では、コンピュータ１３０−２から受信したコピーデータ１３１０−２のバージョン番号「Ｔ３」は、永続記憶装置１２１上のデータ１２１０のバージョン番号「Ｔ１」より最新なので、永続記憶装置１２１上のデータ１２１０をコピーデータ１３１０−２で上書きする。
【００４０】
その後、図２に示す例では、コンピュータ１３０−１が、更新後のデータ１３１０−１の識別情報「Ｎ１」とバージョン番号「Ｔ２」を有する確認データをコンピュータ１２０へ送信している（ステップＳ１１１）。
【００４１】
コンピュータ１２０の制御部１２２は、コンピュータ１３０−１から上記確認データを受信すると、応答データを作成して送信する（ステップＳ１１２）。今の例では、確認データ中の識別情報「Ｎ１」で特定されるデータ１３１０−１のバージョン番号「Ｔ２」は、永続記憶装置１２１上の同じ識別情報「Ｎ１」を有するデータ１２１０のバージョン番号「Ｔ３」より最新でない。そのため制御部１２２は、確認データ中の識別情報「Ｎ１」と、その識別情報に対応して永続記憶装置１２１に記憶されているデータ１２１０のバージョン番号「Ｔ３」との組を有する応答データを作成してコンピュータ１３０−１に送信する。
【００４２】
コンピュータ１３０−１の制御部１３２は、コンピュータ１２０から上記応答データを受信すると、受信した応答データとキャッシュ１３１−１の記憶情報とに基づいて、永続化するためにコンピュータ１２０へ送信するキャッシュ１３１−１上のコピーデータを決定する（ステップＳ１１３）。今の例では、キャッシュ１３１−１上の識別情報「Ｎ１」を有するコピーデータ１３１０−１のバージョン番号「Ｔ２」は、応答データ中の識別情報「Ｎ１」と組を成すバージョン番号「Ｔ３」より最新でない。そのため制御部１３２は、コピーデータ１３１０−１はコンピュータ１２０へは送信しないと決定する。この場合、制御部１３２は、コンピュータ１２０の制御部１２２と通信して、識別情報「Ｎ１」の最新のデータ１２１０を取得してキャッシュ１３１−１にコピーしてよい。
【００４３】
このように本実施形態によれば、永続記憶装置に反映する必要のないデータがコンピュータ間で無駄に送受信されるのを防止することができる。その理由は、各々のコンピュータ１３０は、キャッシュ上で更新したデータをいきなりコンピュータ１２０に送信せずに、コンピュータ１２０との間で確認データと応答データとを交換して、コンピュータ１２０に対して送信すべきデータを決定するためである。
【００４４】
また本実施形態によれば、コンピュータ１２０とコンピュータ１３０間のネットワークの輻輳を防止でき、それによってキャッシュデータを永続化するスループットやレスポンスタイムの低下を防止することができる。その理由は、データの識別情報とバージョン番号のサイズはデータ本体に比べて相対的に小さいため、確認データと応答データとの交換によって増加する送受信量よりも、データ本体を含む無駄なデータの送受信が削減されることによって低減する送受信量の方が多くなるためである。
【００４５】
[第２の実施形態]
次に、本発明の第２の実施形態について説明する。本実施形態は、キャッシュデータをオンメモリで保持する複数のサーバコンピュータ（以下、キャッシュノードと記す）が通信ネットワークを介して遠隔地のハードディスクを具備するサーバコンピュータ（以下、ストレージノードと記す）にキャッシュデータを永続化するシステム（以下、キャッシュ永続化システムと記す）に関する。以下では、本実施形態の前提となる分散キャッシュ永続化システムとその課題、本実施形態の概要、本実施形態の効果、本実施形態の構成、本実施形態の動作、実施例の順に説明する。
【００４６】
＜本実施形態の前提となる分散キャッシュ永続化システムとその課題＞
キャッシュデータ永続化機能は、データベースサーバ、アプリケーションサーバ、ウェブサーバ等の必須機能である。上記サーバは、アプリケーションから受信するデータリクエスト（データの参照・更新・追加・削除等）に対して、適切なデータ（レスポンスデータ）をアプリケーションに返却する。
【００４７】
アプリケーションに返却するレスポンスデータを作成する際に、ストレージ（サーバの内蔵ハードディスク等）に蓄積したデータに逐次アクセスすると、ディスクＩＯが多発するためレスポンス速度が低速となる問題がある。上記問題を解決することを目的としてキャッシュメモリを使用する。キャッシュメモリは、ストレージと比較して高速にデータアクセスが可能であるため、アクセス頻度の高いデータをキャッシュメモリに一時保存し、アプリケーションが要求するデータをストレージではなくてキャッシュメモリから取得することで、ディスクＩＯ回数を削減してレスポンス速度を高速化する。
【００４８】
キャッシュデータ永続化機能とは、キャッシュメモリ上のキャッシュデータを定期的にストレージに反映する機能である。本機能が存在する理由を説明する。一般に揮発性メモリで構成するキャッシュメモリが動作するサーバマシンがダウンした場合、キャッシュメモリに一時保存したキャッシュデータは消滅する。この結果、アプリケーションがキャッシュデータに適用したデータ更新履歴が消滅することになる。よって、キャッシュメモリのキャッシュデータは定期的にストレージに反映（永続化）する必要があり、本機能を提供するのがキャッシュデータ永続化システムである。
【００４９】
近年データベースに蓄積するデータ量の大規模化が進み、多数（数百〜数千台）のサーバをクラスタ化して構築するデータベース（分散データベース）が注目されている。分散データベースでは、負荷分散（サーバ１台当たりの蓄積するデータ量、処理するデータ処理要求数等）を目的として各サーバに異なる機能を付与し、それらサーバが協調動作することで分散データベースでない通常のデータベースと同様の機能をアプリケーションに提供する。
【００５０】
分散データベースで使用されるキャッシュデータ永続化システムを分散キャッシュデータ永続化システムと呼ぶ。分散キャッシュデータ永続化システムでは、図３に示すように、複数のキャッシュノード１、２、３、複数のストレージノード１、２、３、４、５、６が存在する。物理サーバ１台に対してキャッシュノードおよびストレージノードを同居することも可能であるが、一般に負荷分散の観点で別の物理サーバに構築する。
【００５１】
キャッシュノードは、アプリケーションからのデータリクエストの統計情報（例えば、データベースのテーブルレベルでのアクセス頻度測定値等）を用いて、アクセス頻度の高いデータをキャッシュデータとしてストレージノードから予め取得して、自身のメモリ上にキャッシュする。アプリケーションは任意のキャッシュノードに接続できるので、ストレージノード４が蓄積するキャッシュデータ１がキャッシュノード１およびキャッシュノード２にキャッシュされるケースもある。キャッシュノード１およびキャッシュノード２がキャッシュするキャッシュデータ１は、定期的にストレージノード４に送信される。
【００５２】
ストレージノード４は、受信したキャッシュデータ１に記載されている更新履歴を参照して、自身が蓄積するキャッシュデータ１に該当するデータを適切に更新する。具体的には、図４に示すように、キャッシュノード１がキャッシュするキャッシュデータ１には、キャッシュノード１上で更新した履歴がバージョン番号と共に記載されている。同様にキャッシュノード２がキャッシュするキャッシュデータ１にも、キャッシュノード２上で更新した履歴がバージョン番号と共に記載されている。ストレージノード４は、キャッシュノード１のキャッシュデータ１（更新履歴）とキャッシュノード２のキャッシュデータ１（更新履歴）を突き合わせて、キャッシュノード２のキャッシュデータ１に記載されている最も新しいバージョン番号５の更新データ５で自身が蓄積するデータ１を更新して永続化する。
【００５３】
上記分散キャッシュデータ永続化システムには、同一のキャッシュデータを保存するキャッシュノード数が増大した場合に、ネットワーク輻輳が発生して、キャッシュデータ永続化性能（スループット、レスポンスタイム等）が低下する、という課題がある。その理由は、同一のキャッシュデータを保存するキャッシュノードはお互いの所有するキャッシュデータの更新履歴に関する情報を把握していないため、キャッシュノードは全てキャッシュデータの更新履歴をストレージノードに送信するからである。
【００５４】
そこで本実施形態では、ネットワーク輻輳によるキャッシュデータ永続化性能の劣化を防止できる分散キャッシュデータ永続化システムを提供する。
【００５５】
＜本実施形態の概要＞
図５に示すように、本実施形態の分散キャッシュデータ永続化システムのキャッシュノード１は、キャッシュデータの送信要求をストレージノード４に通知するための確認信号（以下、ダイヤルトーンと記す）を生成するダイヤルトーン生成手段１４を有する。ストレージノード４は、キャッシュデータの送信許可をキャッシュノード１に通知するための応答信号（以下、ビジートーンと記す）を生成するビジートーン生成手段４４を有する。キャッシュノード１およびストレージノード４は、キャッシュデータの送信で使用するデータ回線５とは独立した別回線であるデータ回線（以下、ハートビート回線と記す）６を使ってダイヤルトーンおよびビジートーンを交換するトーン送受信手段１５およびトーン送受信手段４３を有する。キャッシュノード１は、ストレージノード４から受信したビジートーンを解析してストレージノード４に送信するキャッシュデータを取捨選別するキャッシュデータ制御手段１２を有する。本実施形態の分散キャッシュデータ永続化システムには、キャッシュノード１およびストレージノード４と同一の手段を有する異なるキャッシュノードおよびストレージノードが存在してもよい。
【００５６】
＜本実施形態の効果＞
このような構成を採用し、キャッシュデータの送信に先立ってキャッシュノードとストレージノード間で送信するキャッシュデータを事前調整することで、実際に送信するキャッシュデータの全体量を圧縮できるため、上記課題を解決することができる。
【００５７】
また、データ回線とは独立したハートビート回線を利用して複数のキャッシュノードと複数のストレージノード間で送信するキャッシュデータを事前調整するためのダイヤルトーンおよびビジートーンを事前に交換するだけで、キャッシュデータを送信するデータ回線のネットワーク輻輳によるキャッシュデータ永続化性能の劣化を防止してキャッシュデータを永続化することができる。
【００５８】
その理由は、複数のキャッシュノードが冗長にキャッシュデータを永続化することを防止して、必要最低限のキャッシュデータだけをキャッシュノードからストレージノードに送信するからである。
【００５９】
＜本実施形態の構成＞
図５を参照すると、本実施形態は、プログラム制御によるデータ処理機能、データ通信機能、データ記憶機能等を具備するコンピュータ、ワークステーション等で実現できるキャッシュノード１、２、３、およびストレージノード４を含む。図５では、キャッシュノードが３台、ストレージノードが１台だけの構成を示しているが、同一手段を有するキャッシュノードおよびストレージノードがさらに多く存在しても良い。
【００６０】
キャッシュノード１、２、３とストレージノード４は、データ回線５とハートビート回線６を使用して相互に通信可能である。データ回線５とハートビート回線６は独立したネットワークであり、データ回線５が断線した場合でもハートビート回線６を使ってキャッシュノードとストレージノードは通信可能である。キャッシュノード１、２、３は、データ回線５を使ってキャッシュデータをストレージノード４に送信する。キャッシュノード１、２、３とストレージノード４は、ハートビート回線６を使って、送信するキャッシュデータを事前調整するためのトーン（ダイヤルトーン、ビジートーン）を送信する。
【００６１】
キャッシュノード１、２、３は、メモリキャッシュ手段１１と、キャッシュデータ制御手段１２と、データ送信手段１３と、ダイヤルトーン生成手段１４と、トーン送受信手段１５とを備える。
【００６２】
ストレージノード４は、データ受信手段４１と、ディスク４２と、トーン送受信手段４３と、ビジートーン生成手段４４とを備える。
【００６３】
キャッシュノード１、２、３のメモリキャッシュ手段１１は、アクセス頻度の高いデータをキャッシュメモリに一時保存する。キャッシュデータ制御手段１２は、メモリキャッシュ手段１１からキャッシュデータを定期的に取得して、データ送信手段１３からデータ回線５を使用してストレージノード４のデータ受信手段４１に送信する。データ受信手段４１は、受信したキャッシュデータをディスク４２に記録して永続化する。
【００６４】
キャッシュノード１、２、３のダイヤルトーン生成手段１４は、キャッシュデータ送信に先立ってキャッシュデータの送信要求を示すダイヤルトーンを生成する。トーン送受信手段１５は、生成したダイヤルトーンを、ハートビート回線６を使用してストレージノード４のトーン送受信手段４３に送信する。ダイヤルトーンにはキャッシュノードが送信しようとしているキャッシュデータに関する履歴情報が記載されている。
【００６５】
ストレージノード４のビジートーン生成手段４４は、トーン送受信手段４３でキャッシュノード１、２、３から受信したダイヤルトーンに応じてビジートーンを生成する。トーン送受信手段４３は、生成したビジートーンをキャッシュノード１、２、３のトーン送受信手段１５に送信する。具体的には、ストレージノード４は、キャッシュノードから受信したダイヤルトーンを分析して、重複したキャッシュデータを送信しようとしているキャッシュノードが複数存在する場合は、当該キャッシュデータを送信するキャッシュノードを指定したビジートーンをキャッシュノードに送信する。
【００６６】
キャッシュノード１、２、３のキャッシュデータ制御手段１２は、トーン送受信手段１５が受信したビジートーンに応じて、ストレージノード４に送信するキャッシュデータを取捨選択する。具体的には、キャッシュデータ制御手段１２は、ビジートーンに記載されている当該キャッシュデータのバージョン番号と同じか或いはそれよりも新しいバージョン番号の更新データを保持している場合だけデータ送信手段１３でストレージノード４に送信する。
【００６７】
＜本実施形態の動作＞
次に、図５および図６を参照して本実施形態の動作について詳細に説明する。
【００６８】
キャッシュノード１、２、３は、キャッシュノードそれぞれのタイミングに従ってメモリ上に一時保存するキャッシュデータを上記メモリから定期的に抽出して、キャッシュデータの送信準備を開始する（ステップＡ１）。キャッシュデータを実際に送信する前に、送信するべきキャッシュデータを決定するために、抽出したキャッシュデータの更新履歴からダイヤルトーンを生成する（ステップＡ２）。生成したダイヤルトーンを、ステップＡ１で抽出したキャッシュデータを永続化する対象ストレージノードに対して、ハートビート回線６を介して送信する（ステップＡ３）。
【００６９】
ストレージノード４は、一定期間に渡ってキャッシュノード１、２、３からのダイヤルトーンの受信を待機する（ステップＢ１）。次に、一定期間中に受信したキャッシュノード１、２、３からのビジートーンを参照して、キャッシュデータ毎に最新の更新データを特定する。次に、キャッシュデータ毎に最新の更新データを保持するキャッシュノードを記載したビジートーンを生成する（ステップＢ２）。そして、生成したビジートーンをキャッシュノード１、２、３に送信する（ステップＢ３）。
【００７０】
キャッシュノード１、２、３は、ストレージノード４から受信したビジートーンを参照して、自身が送信するべきキャッシュデータを特定する（ステップＡ４、Ａ５）。そして、自身が送信するべきと特定したキャッシュデータだけをストレージノード４に送信する（ステップＡ６、Ａ７）。
【００７１】
ストレージノード４は、受信したキャッシュデータを自身のディスク４２に書き込む（ステップＢ４、Ｂ５）。
【００７２】
このように本実施形態では、データ回線とは独立したハートビート回線を利用して、複数のキャッシュノードと複数のストレージノード間でダイヤルトーンおよびビジートーンを交換して永続化するキャッシュデータを事前調整する。このためデータ回線を使用して必要最低限のキャッシュデータだけを送信できてデータ回線のネットワーク輻輳によるキャッシュデータ永続化性能の劣化を防止できる。
【００７３】
＜実施例＞
次に、第２の実施形態の実施例を、図面を参照して説明する。
【００７４】
本実施形態を実現するシステムの物理構成を説明する。分散データキャッシュノード１、２、３、およびストレージノード４は、ＣＰＵ等のデータ処理部、イーサネット、無線ＬＡＮ、専用通信ネットワーク等に対応したデータ通信部、ＲＡＭ、ＲＯＭ、ＨＤＤ等のデータ記憶部等を備えるコンピュータ、ワークステーション、データベース等により実現される。
【００７５】
ある時刻でキャッシュノード１、２、３がメモリ上に所持するキャッシュデータの一覧の例を図７に示す。図７に示すように、キャッシュデータにはユニークな識別子（キャッシュデータＩＤ）を付与する。例えば、リレーショナルデータベースにおけるキャッシュデータ永続化システムでは、キャッシュデータＩＤは、レコードのプライマリキー等のテーブル毎のレコードにユニークな識別子が使用される。また分散キーバリューストアでは、キャッシュデータＩＤは、キー値を使用してよい。
【００７６】
また、キャッシュデータには、データのバージョン番号および更新データが更新毎に履歴データとして追記される。具体的には、キャッシュノードｘのキャッシュデータ（キャッシュデータＩＤ）ｙのｋ回目の更新時には、バージョン番号Tx_y_kおよび更新データDx_y_kが追記される。
【００７７】
図７に記載のキャッシュデータ１、２、３は、ストレージノード４に永続化されるキャッシュデータであるケースを想定する。
【００７８】
キャッシュノード１が、ストレージノード４にキャッシュデータを永続化するケースを想定する。
【００７９】
キャッシュノード１は、ストレージノード４に送信するキャッシュデータを決定する。例えば、更新履歴の追記回数（更新履歴長）が一定の閾値を超えるキャッシュデータを、送信するキャッシュデータと決定する方法がある。本例では、図７に記載のキャッシュデータ１、２、３の全てを送信するケースを想定する。
【００８０】
キャッシュノード１は、実際にキャッシュデータ１、２、３の最新の更新データ（キャッシュデータ１の場合はD1_1_4）をストレージノード４に送信する前に、ダイヤルトーンを作成して、ストレージノード４に送信する。
【００８１】
キャッシュノード１は、ダイヤルトーンに永続化するキャッシュデータのＩＤおよび最新バージョン番号を設定する。具体的には、キャッシュノード１は、図８に示すダイヤルトーン（通信パケット）を作成して、ハートビート回線６を介してストレージノード４に送信する。
【００８２】
キャッシュノード１のダイヤルトーン送信と同タイミングで、キャッシュノード２がダイヤルトーンをストレージノード４に送信するケースを想定する。
【００８３】
キャッシュノード２は、キャッシュノード１のダイヤルトーンと同様に、ダイヤルトーンに永続化するキャッシュデータのＩＤおよび最新バージョン番号を設定する。具体的には、キャッシュノード１は、図９に示すダイヤルトーン（通信パケット）を作成して、ハートビート回線６を介してストレージノード４に送信する。
【００８４】
キャッシュノード１、２からのダイヤルトーンを受信したストレージノード４は、ダイヤルトーンに記載されているキャッシュデータが自身に既に永続化（蓄積）されているかを確認する。具体的には、上記確認では、ストレージノード４は、自ノードに既に永続化したキャッシュデータのバージョン番号の一覧である永続化テーブルを使用する。
【００８５】
図１０は永続化テーブルの構成例である。一般的には、ストレージノード４は、キャッシュノード１、２、３とは異なり、キャッシュデータの更新履歴は保有しないため、ストレージノードｘに永続化されたキャッシュデータ（キャッシュデータＩＤ）ｙは、バージョン番号Tx_yおよび更新データDx_yと表現する。永続化テーブル中のNULL表示のセルは、当該キャッシュデータ（図１０の場合はキャッシュデータ１）が過去に永続化されていないこと示す。
【００８６】
ストレージノード４は、キャッシュノード１、２から受信したビジートーンおよび自身が作成した永続化テーブルから、キャッシュデータ毎にいずれのキャッシュデータが最新であるかの新旧判断を実行する。
【００８７】
一般的に、分散キャッシュデータ永続化システムで動作するサーバ（キャッシュノード、ストレージノード等）はハートビート回線６を介してＮＴＰ（Network Time Protocol）で時刻同期しているため、バージョン番号を用いたデータの新旧判断が可能である。
【００８８】
キャッシュデータ２については、キャッシュノード１のバージョン番号がT1_2_2であり、キャッシュノード２のバージョン番号がT2_2_3であり、ストレージノード４のバージョン番号がT4_2である場合に、これらを新旧比較した結果、キャッシュノード２のバージョン番号T2_2_3が最も新しい場合は、キャッシュノード２のメモリ上に存在するバージョン番号T2_2_3に対応するキャッシュデータD2_2_3がストレージノード４に反映されるべきである（図７）。
【００８９】
キャッシュデータ１に関しては、キャッシュノード２のダイヤルトーンおよびストレージノード４の永続化テーブルにキャッシュデータ１が存在しないため、キャッシュノード１のメモリ上に存在するバージョン番号T1_1_4に対応するキャッシュデータD1_1_4がストレージノード4に反映されるべきである。
【００９０】
キャッシュデータ３に関しては、ストレージノード４の永続化テーブルに記載のバージョン番号T4_3に対応するデータD4_3が最新であったケースを想定する。本ケースは、キャッシュノード１、２以外の別キャッシュノードが、キャッシュノード１、２のメモリ上に存在するキャッシュデータ３と比較して更新時刻が最新であるキャッシュデータ３を既に永続化したことを示している。
【００９１】
このような状況の下では、ストレージノード４は、図１１に示すようなビジートーンを作成して、ハートビート回線６を介してキャッシュノード１、２、３に送信する。
【００９２】
ビジートーンには、図１１に示すように、キャッシュデータ毎に最新データであると新旧判断したバージョン番号を記載する。
【００９３】
ストレージノード４からビジートーンを受信したキャッシュノード１，２、３は、ビジートーンを分析して、自身がストレージノード４に永続化するキャッシュデータを最終決定する。
【００９４】
キャッシュノード１は、キャッシュデータ１に指定されたバージョン番号T1_1_4に該当する更新データD1_1_4だけを、データ回線５を介してストレージノード４に送信する。但し、自身が更新履歴にバージョン番号T1_1_4と比較して、さらに最新であるキャッシュデータ１を保有している場合は当該最新のキャッシュデータ１を、データ回線５を介してストレージノード４に送信する。キャッシュデータ２、３についても同様であり、ビジートーン記載のキャッシュデータ２のバージョン番号T2_2_3、キャッシュデータ３のバージョン番号T4_3と比較して、同じか或いはさらに最新であるキャッシュデータ２、３を保有している場合は、保有しているより最新のキャッシュデータ２、３を、データ回線５を介してストレージノード４に送信する。キャッシュノード２もキャッシュノード１と同様に送信するべきキャッシュデータを最終決定して、送信するべきキャッシュデータが存在すれば当該キャッシュデータを、データ回線５を介してストレージノード４に送信する。
【００９５】
一方、ダイヤルトーンを送信していないキャッシュノード３は、自身のメモリ上に存在するキャッシュデータ１のバージョン番号T3_1_1（図７）を、ビジートーン記載のキャッシュデータ１のバージョン番号T1_1_4と比較して、自身が所持するキャッシュデータ１が最新であれば当該キャッシュデータを、データ回線５を介してストレージノード４に送信する。
【００９６】
ビジートーンを送信した後にキャッシュノードから返信されるキャッシュデータ（当該キャッシュデータのバージョン番号を含む）を受信したストレージノード４は、自身が既に永続化している当該キャッシュデータのバージョン番号よりも最新である場合のみ受信したキャッシュデータ（当該キャッシュデータのバージョン番号を含む）で上書き更新する。そして、永続化テーブルを更新する。
【００９７】
以上の実施例では、ダイヤルトーンおよびビジートーンを送信するためのハートビート回線６と、実データであるキャッシュデータを送信するためのデータ回線５とを独立したネットワークとしたが、十分な通信帯域を確保できるネットワークであれば同一のネットワークを使用してもよい。
【００９８】
さらに、ストレージノード４は、ビジートーンを、ダイヤルトーンを未送信であるキャッシュノード３を含めて全キャッシュノード１、２、３にブロードキャストしたが、ビジートーンはダイヤルトーンを送信したキャッシュノード１、２だけに返信してもよい。
【００９９】
さらに、ダイヤルトーンおよびビジートーンにはキャッシュデータのメタデータ（キャッシュデータＩＤ、バージョン番号等）を記載するだけで、実データであるキャッシュデータは記載しなかった。その理由は、ダイヤルトーンおよびビジートーンのパケットサイズを最小化して、ハートビート回線の通信トラヒックを軽減するためである。しかし、実データであるキャッシュデータが閾値より小さい場合は、ダイヤルトーンに予めキャッシュデータを記載して送信してもよい。
【０１００】
[第３の実施形態]
次に、本発明の第３の実施形態について図面を参照して詳細に説明する。
【０１０１】
図１２を参照すると、本実施形態は、図５に示された第２の実施形態におけるキャッシュノード１、２、３にオフセット時間設定手段１６を有し、ストレージノード４にデータ回線輻輳検知手段４５、オフセット時間計算手段４６を有する点で異なる。
【０１０２】
データ回線輻輳検出手段４５は、データ受信手段４１を監視して、キャッシュノードが大量キャッシュデータを同一ストレージノードに永続化（送信）することで発生するネットワーク輻輳を検出する。
【０１０３】
オフセット時間計算手段４６は、キャッシュデータを永続化する優先度を決定して、キャッシュデータ毎の永続化周期（オフセット時間）を計算して、ビジートーンにオフセット時間を記載する。
【０１０４】
オフセット時間設定手段１６は、ビジートーンに記載されたオフセット時間を分析して、キャッシュデータの永続化周期をデータ送信手段１３に設定する。
【０１０５】
次に図１２および図１３を参照して、本実施形態の動作について詳細に説明する。なお、図１３のステップＡ１，Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、およびＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５については、第２の実施形態の動作と同一のため説明は省略する。
【０１０６】
第２の実施形態では、各々のキャッシュノードは、キャッシュデータを同一のタイミング、すなわちビジートーンを受信したタイミングで、データ回線を通じてストレージノードへ永続化のために送信していた。これに対して本実施の形態では、ストレージノード４は、ステップＢ１でダイヤルトーンを受信した後に、データ回線５の輻輳状態を確認して（ステップＢ６）、輻輳が発生している場合はキャッシュデータ毎にオフセット時間を計算して（ステップＢ７）、オフセット時間を記載したビジートーンを生成する（ステップＢ２）。一方、キャッシュノード１、２、３は、ステップＡ５で受信したビジートーンを分析して、キャッシュデータ毎のオフセット時間を抽出し（ステップＡ８）、オフセット時間に相当する周期で、当該オフセット時間に相当するキャッシュデータを送信する（ステップA6、A7）。すなわち、ビジートーンを受信したタイミングからオフセット時間だけ経過したタイミングで、キャッシュデータを送信する。
【０１０７】
次に、本実施の形態の効果について説明する。
【０１０８】
本実施の形態では、キャッシュデータ送信周期をオフセット時間に設定することで、キャッシュノードからストレージノードへのキャッシュデータ送信トラヒックが短時間に集中することによるデータ回線の輻輳を回避できる。このため輻輳によるパケットロスでキャッシュデータを再送する回数が減少するので、キャッシュデータ永続化性能の劣化を防止できる。
【０１０９】
以下、第３の実施形態の実施例を説明する。
【０１１０】
本実施例は、第２の実施形態の実施例と構成を同じとするが、キャッシュノード１、２、３が、オフセット時間設定手段１６としても機能する点で第２の実施形態の実施例と異なる。さらに、ストレージノード４が、データ回線輻輳検出手段４５、オフセット時間計算手段４６としても機能する点が、第２の実施形態の実施例と異なる。
【０１１１】
ストレージノード４のデータ回線輻輳検出手段４５、オフセット時間計算手段４６がキャッシュデータ毎にキャッシュデータの送信周期であるオフセット時間を計算する方法を説明する。
【０１１２】
ストレージノード４は、自身のネットワークインターフェースを監視して、ネットワークパラメータ（パケットロス率、遅延時間等）を測定し、測定値が予め規定したネットワークパラメータ閾値を超えた時点でネットワーク輻輳が発生したと判断する。ネットワーク輻輳状態の検出方法は、本実施例で示したネットワークパラメータ値に基づく検出方法以外の検出方法を使用してもよい。
【０１１３】
ストレージノード４は、データ回線における輻輳を検出した場合、受信したダイヤルトーンに記載されているキャッシュデータ毎のオフセット時間を計算する。
【０１１４】
本実施例では、キャッシュノードに返信するビジートーンが図１１のようになるケースを想定する。この場合、キャッシュデータ１、２、３それぞれのバージョン番号T1_1_4、T2_2_3、T4_3を参照して、最もバージョン番号が古い（更新された時刻が古い）キャッシュデータを特定して、他キャッシュデータと比較して「小さな値のオフセット時間（キャッシュデータ送信頻度が高い）」を当該キャッシュデータに設定する。本実施例では、ダイヤルトーン（図８、図９）および永続化テーブル（図１０）に記載のバージョン番号だけを参照して、オフセット時間を計算するオフセット時間計算方法を示したが、例えば、ダイヤルトーンにキャッシュデータのサイズを記載することで、サイズの大きいキャッシュデータに「大きな値のオフセット時間（キャッシュデータ送信頻度が低い）」を設定する計算方法等を使用してもよい。
【０１１５】
ストレージノード４は、図１４に示すように、キャッシュデータ１、２、３それぞれに対して計算したオフセット時間OFFSET1、OFFSET2、OFFSET3を設定したビジートーンをキャッシュノードに返信する。
【０１１６】
キャッシュノード１、２、３のオフセット時間設定手段１６は、ストレージノード４から受信したビジートーンを分析して、自身が送信するキャッシュデータが存在する場合は当該キャッシュデータに該当するオフセット時間の周期で当該キャッシュデータをストレージノード４に永続化（送信）する。
【０１１７】
以上、本発明を幾つかの実施形態および実施例を挙げて説明したが、本発明は以上の例に限定されず、その他各種の付加変更が可能である。例えば、第３の実施形態では、データ回線における輻輳を検出した場合に、受信したダイヤルトーンに記載されているキャッシュデータ毎のオフセット時間を計算してビジートーンに設定するようにした。しかし、本発明の他の実施形態として、データ回線における輻輳の有無にかかわらず、受信したダイヤルトーンに記載されているキャッシュデータ毎のオフセット時間を計算してビジートーンに設定してもよい。
【０１１８】
なお、本発明は、日本国にて２０１３年６月１２日に特許出願された特願２０１３−１２３７１７の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
【産業上の利用可能性】
【０１１９】
本発明によれば、分散データベースシステムや、分散データベースシステムをコンピュータで実現するためのプログラムといった用途に適用できる。
【符号の説明】
【０１２０】
１…第１のキャッシュノード
１１…メモリキャッシュ手段
１２…キャッシュデータ制御手段
１３…データ送信手段
１４…ダイヤルトーン生成手段
１５…トーン送受信手段
１６…オフセット時間設定手段
２…第２のキャッシュノード
３…第３のキャッシュノード
４…ストレージノード
４１…データ受信手段
４２…ディスク
４３…トーン送受信手段
４４…ビジートーン生成手段
４５…データ回線輻輳検出手段
４６…オフセット時間計算手段
１００…分散処理システム
１１０…ネットワーク
１２０…コンピュータ
１２１…永続記憶装置
１２２…制御部
１３０…コンピュータ
１３１…キャッシュ
１３２…制御部
【図１】
2014199568.tif 000003
【図２】
2014199568.tif 000004
【図３】
2014199568.tif 000005
【図４】
2014199568.tif 000006
【図５】
2014199568.tif 000007
【図６】
2014199568.tif 000008
【図７】
2014199568.tif 000009
【図８】
2014199568.tif 000010
【図９】
2014199568.tif 000011
【図１０】
2014199568.tif 000012
【図１１】
2014199568.tif 000013
【図１２】
2014199568.tif 000014
【図１３】
2014199568.tif 000015
【図１４】
2014199568.tif 000016
【図１５】
2014199568.tif 000017
【国際調査報告】
2014199568.tif 000018
2014199568.tif 000019
2014199568.tif 000020
2014199568.tif 000021