(57)【要約】【課題】    データ・レプリカのセットにおける保存データの更新を制御するためにコンピュータを利用する方法を提供する。【解決手段】  本発明のコンピュータを利用する方法は、要求元からのデータ要求を受け取ったことに応答して、そのデータ要求を解決すべきデータ・レプリカを識別して識別済みデータ・レプリカを作成する。本発明の方法は、データ要求が更新データ要求である場合、その更新データ要求をレプリカ管理エージェントに送り、アービトレーション・トークンが存在するかどうかを決定し、アービトレーション・トークンが存在するという決定に応答して、レプリカ管理エージェントが識別済みデータ・レプリカにおけるデータを更新する。【選択図】  図７
2010129088.tif 000002
【特許請求の範囲】
【請求項１】
データ・レプリカのセットにおける保存データの更新を制御するためにコンピュータを利用する方法であって、
要求元からのデータ要求をメモリにおいて受け取ったことに応答して、前記データ要求を解決すべきデータ・レプリカを識別して識別済みデータ・レプリカを形成するステップと、
前記データ要求が更新データ要求である場合、更新データ要求をレプリカ管理エージェントに送るステップと、
アービトレーション・トークンが存在するかどうかを決定するステップと、
アービトレーション・トークンが存在するという決定に応答して、前記レプリカ管理エージェントにより前記識別済みデータ・レプリカにおけるデータを更新するステップと
を含む、方法。
【請求項２】
前記データ要求が更新データ要求であるかどうかを決定するステップと、
前記データ要求が更新データ要求であるという決定に応答して、更新時間ウィンドウを計算してウィンドウ時間を形成するステップと、
前記データ要求が更新データ要求ではないという決定に応答して、前記データ要求の要求されたデータが前記識別済みデータ・レプリカのキャッシュにあるかどうかを決定するステップと、
前記要求されたデータが前記キャッシュにあるという決定に応答して、前記キャッシュから前記要求されたデータを検索するステップと、
前記要求されたデータを、通信ユニットを介して要求元に送るステップと
を更に含む、請求項１に記載の方法。
【請求項３】
前記要求されたデータが前記キャッシュにないという決定に応答して、
記憶装置における保存データから前記要求されたデータを検索するステップと、
前記要求されたデータを前記要求元に送るステップと
を更に含む、請求項２に記載の方法。
【請求項４】
前記アービトレーション・トークンが存在しないという決定に応答して、前記更新データ要求をキャッシュにおける待ち行列に入れるステップを更に含む、請求項１に記載の方法。
【請求項５】
前記識別済みデータ・レプリカにおけるデータを更新するステップは、
前記レプリカ管理エージェントから更新確認を受け取るステップと、
前記更新確認を前記要求元に送るステップと、
更新されたアービトレーション・トークンを形成するために前記アービトレーション・トークンを更新するステップと、
前記更新されたアービトレーション・トークンを次のレプリカ管理エージェントに送るステップと、
すべての書き込まれた更新をすべてのレプリカ管理エージェントにブロードキャストするステップと
を更に含む、請求項１に記載の方法。
【請求項６】
前記識別済みデータ・レプリカにおけるデータを更新するステップは、
すべての書き込み要求が更新時間ウィンドウにおいて完了したかどうかを決定するステップと、
すべての書き込み要求が更新時間ウィンドウにおいて完了したという決定に応答して、データ・レプリカ・ウェイトをデクリメントするステップと、
すべての書き込み要求が更新時間ウィンドウにおいて完了したのではないことに応答して、前記データ・レプリカ・ウェイトをインクリメントするステップと
を更に含む、請求項２に記載の方法。
【請求項７】
前記アービトレーション・トークンを更新するステップは、
サービス時間遅延値の質を受け取るステップと、
データ・レプリカ更新順序を割り当てるステップと、
データ・レプリカ・ウェイトを割り当てるステップと
を更に含む、請求項５に記載の方法。
【請求項８】
データ・レプリカのセットにおける保存データの更新を制御するためのデータ処理システムであって、
バスと、
前記バスに接続され、コンピュータ実行可能命令を含むメモリと、
前記バスに接続されたプロセッサ・ユニットと
を含み、
前記プロセッサ・ユニットは、
要求元からのデータ要求を受け取ったことに応答して、前記データ要求を解決すべきデータ・レプリカを識別して識別済みデータ・レプリカを形成し、
前記データ要求が更新データ要求である場合、前記更新データ要求をレプリカ管理エージェントに送り、
アービトレーション・トークンが存在するかどうかを決定し、
アービトレーション・トークンが存在するという決定に応答して、前記レプリカ管理エージェントにより前記識別済みデータ・レプリカにおけるデータを更新する
ようにデータ処理を指示するためのコンピュータ実行可能命令を実行する、データ処理システム。
【請求項９】
前記プロセッサ・ユニットは、
前記データ要求が更新データ要求であるかどうかを決定し、
前記データ要求が更新データ要求であるという決定に応答して、更新時間ウィンドウを計算してウィンドウ時間を形成し、
前記データ要求が更新データ要求ではないという決定に応答して、前記データ要求の要求されたデータが前記識別済みデータ・レプリカのキャッシュにあるかどうかを決定し、
前記要求されたデータが前記キャッシュにあるという決定に応答して、前記キャッシュから前記要求されたデータを検索し、
前記要求されたデータを要求元に送る
ようにデータ処理を指示するためのコンピュータ実行可能命令を実行する、
請求項８に記載のデータ処理システム。
【請求項１０】
前記プロセッサ・ユニットは、前記要求されたデータが前記キャッシュにないという決定に応答して、
記憶装置における保存データから前記要求されたデータを検索し、
前記要求されたデータを、通信ユニットを介して前記要求元に送る
ようにデータ処理を指示するためのコンピュータ実行可能命令を実行する、請求項８に記載のデータ処理システム。
【請求項１１】
前記プロセッサ・ユニットは、前記アービトレーション・トークンが存在しないという決定に応答して、前記更新データ要求をキャッシュにおける待ち行列に入れるようにデータ処理を指示するためのコンピュータ実行可能命令を実行する、請求項８に記載のデータ処理システム。
【請求項１２】
前記プロセッサ・ユニットは、
前記レプリカ管理エージェントから更新確認を受け取り、
前記更新確認を前記要求元に送り、
更新されたアービトレーション・トークンを形成するために前記アービトレーション・トークンを更新し、
前記更新されたアービトレーション・トークンを次のレプリカ管理エージェントに送り、
すべての書き込まれた更新をすべてのレプリカ管理エージェントにブロードキャストする
ことを含む前記識別済みデータ・レプリカのデータを更新するためのコンピュータ実行可能命令を実行する、請求項８に記載のデータ処理システム。
【請求項１３】
前記プロセッサ・ユニットは、
すべての書き込み要求が更新時間ウィンドウにおいて完了したかどうかを決定し、
すべての書き込み要求が更新時間ウィンドウにおいて完了したことに応答して、データ・レプリカ・ウェイトをデクリメントし、
すべての書き込み要求が更新時間ウィンドウにおいて完了したのではないことに応答して、前記データ・レプリカ・ウェイトをインクリメントする
ことを含む、前記識別済みデータ・レプリカのデータを更新するようにデータ処理を指示するためのコンピュータ実行可能命令を実行する、請求項８に記載のデータ処理システム。
【請求項１４】
前記プロセッサ・ユニットは、
サービス時間遅延値の質を受け取り、
データ・レプリカ更新順序を割り当て、
データ・レプリカ・ウェイトを割り当てる
ことを含む、前記アービトレーション・トークンを更新するようにデータ処理を指示するためのコンピュータ実行可能命令を実行する、請求項１２に記載のデータ処理システム。
【請求項１５】
データ・レプリカのセットにおける保存データの更新を制御するためのコンピュータ・プログラムであって、
要求元からのデータ要求を受け取ったことに応答して、前記データ要求を解決すべきデータ・レプリカを識別して識別済みデータ・レプリカを形成するステップと、
前記データ要求が更新データ要求である場合、前記更新データ要求をレプリカ管理エージェントに送るステップと、
アービトレーション・トークンが存在するかどうかを決定するステップと、
アービトレーション・トークンが存在するという決定に応答して、前記レプリカ管理エージェントにより前記識別済みデータ・レプリカにおけるデータを更新するステップと
を実行するためのコンピュータ実行可能命令を含む、コンピュータ・プログラム。
【請求項１６】
前記データ要求が更新データ要求であるかどうかを決定するステップと、
前記データ要求が更新データ要求であるという決定に応答して、更新時間ウィンドウを計算してウィンドウ時間を形成するステップと、
前記データ要求が更新データ要求ではないという決定に応答して、前記データ要求の要求されたデータが前記識別済みデータ・レプリカのキャッシュにあるかどうかを決定するステップと、
前記要求されたデータが前記キャッシュにあるという決定に応答して、前記キャッシュから前記要求されたデータを検索するステップと、
前記要求されたデータを前記要求元に送るステップと
を実行するためのコンピュータ実行可能命令を更に含む、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記要求されたデータが前記キャッシュにないという決定に応答するコンピュータ実行可能命令は、
記憶装置における保存データから前記要求されたデータを検索するステップと、
前記要求されたデータを、通信ユニットを介して前記要求元に送るステップと
を実行するためのコンピュータ実行可能命令を含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記アービトレーション・トークンが存在しないという決定に応答するコンピュータ実行可能命令は、前記更新データ要求をキャッシュにおける待ち行列に入れるステップを実行するためのコンピュータ実行可能命令を含む、請求項１５に記載のコンピュータ・プログラム。
【請求項１９】
前記識別済みデータ・レプリカにおけるデータを更新するステップを実行するためのコンピュータ実行可能命令は、
前記レプリカ管理エージェントから更新確認を受け取るステップと、
前記更新確認を前記要求元に送るステップと、
更新されたアービトレーション・トークンを形成するために前記アービトレーション・トークンを更新するステップと、
前記更新されたアービトレーション・トークンを次のレプリカ管理エージェントに送るステップと、
すべての書き込まれた更新をすべてのレプリカ管理エージェントにブロードキャストするステップと
実行するためのコンピュータ実行可能命令を含む、請求項１５に記載のコンピュータ・プログラム。
【請求項２０】
前記識別済みデータ・レプリカにおけるデータを更新するためのコンピュータ実行可能命令は、
すべての書き込み要求が更新時間ウィンドウにおいて完了したかどうかを決定するステップと、
すべての書き込み要求が更新時間ウィンドウにおいて完了したことに応答して、データ・レプリカ・ウェイトをデクリメントするステップと、
すべての書き込み要求が更新時間ウィンドウにおいて完了したのではないことに応答して、データ・レプリカ・ウェイトをインクリメントするステップと
を実行するためのコンピュータ実行可能命令を含む、請求項１５に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理システムの改良に関し、特に、データを管理するための方法及び装置に関する。更に詳しく言えば、本発明は、アービトレーション・トークンを使用して、データ・レプリカのセットにおける保存データの更新を制御するためにコンピュータを利用する方法、装置およびコンピュータ・プログラムに関する。
【背景技術】
【０００２】
サービス指向アーキテクチャ（ＳＯＡ）は、情報サービス（ＩＳ）によって企業データの抽象化及び仮想化された表示形態を提供する場合に使用されてきた。情報サービスは、与えられた領域における種々のデータ・ソースのロケーション、構造、及び実施形態に関連した詳細を隠し、クライアントが妥当な方法でデータをアクセスすることを可能にする。一般に、クライアント及びデータ・ソースは、種々の地理的に分散した分布になっている。
【０００３】
そのような仮想化され且つ分散した環境における情報サービスに関して高いデータ入手可能性及び短い応答時間を確保するために、多くの場合、データが地理的ロケーションの全域において複製される。一般に、データ複製の多くの変形が使用されている。最大量のデータ入手可能性及び最短の応答時間を表明している複製の形態は、種々のロケーションにおいて同じデータを複製すること及び、クライアントが、自身に最も近接したレプリカからの読み取り及びそのレプリカに対する更新を可能にすることを伴う。一般に、そのような複製はデータ保全性およびデータ精度を低下させる。多くのクライアントがレプリカを更新する可能性があるので、同じデータが同時に更新される可能性があり、その基礎となるデータの保全性を低下させる可能性がある。更に、クライアントがデータを読み取るとき、他のクライアントが他のレプリカを更新してしまって、その更新された情報が適時にローカルのレプリカに複製されない場合、そのクライアントは陳腐なデータを得る可能性がある。
【０００４】
一般的な解決方法は、レプリカにおいて許容されるアクセスのタイプを制限するか、或いは許容される複製の量を制限する。或る解決方法は、マスタ・レプリカではデータがデータが更新されることを許容するが、他のローカル・レプリカでは読み取りアクセスだけを許容する。別の解決方法は、失効したデータをクライアントが読み取ることを許容するが、特定のロケーションにおけるデータを、そのデータが別のロケーションにおいて更新された後の或る時間フレーム内では最新のものにする機能を提供する。従って、これらの解決方法は融通性を制限する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、データ・レプリカのセットにおける保存データの更新を制御するためにコンピュータを利用する方法、データ処理システム、及びコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の１つの実施例によれば、データ・レプリカのセットにおける保存されたデータ（以下、「保存データ」という）の更新を制御するためにコンピュータを利用する方法が示される。そのコンピュータを利用する方法は、要求元からのデータ要求を受け取ったことに応答して、そのデータ要求を解決すべきデータ・レプリカを識別して識別済みデータ・レプリカを作成する。更に、そのコンピュータを利用する方法は、そのデータ要求が更新データ要求である場合、更新データ要求をレプリカ管理エージェントに送る。そのコンピュータを利用する方法は、アービトレーション・トークンが存在するかどうかを決定し、アービトレーション・トークンが存在するという決定に応答して、レプリカ管理エージェントによりその識別済みデータ・レプリカのデータを更新する。
【０００７】
本発明の別の実施例では、データ・レプリカのセットにおける保存データの更新を制御するためのデータ処理システムが示される。そのデータ処理システムは、バスと、バスに接続され、コンピュータ実行可能命令を含むメモリと、バスに接続されたプロセッサ・ユニットとを含み、プロセッサ・ユニットは、要求元からデータ要求を受け取ったことに応答して、データ要求を解決すべきデータ・レプリカを識別して識別済みデータ・レプリカを作成すること、及びデータ要求が更新データ要求である場合、更新データ要求をレプリカ管理エージェントに送ることによりデータ処理を指示するためのコンピュータ実行可能命令を実行する。プロセッサ・ユニットは、アービトレーション・トークンが存在するかどうかを決定し、アービトレーション・トークンが存在するという決定に応答して、レプリカ管理エージェントによりその識別済みデータ・レプリカにおけるデータを更新するようにデータ処理を更に指示するためのコンピュータ実行可能命令を実行する。
【０００８】
本発明の更に別の実施例では、データ・レプリカのセットにおける保存データの更新を制御するためのコンピュータ・プログラムが示される。そのコンピュータ・プログラムは、要求元からのデータ要求を受け取ったことに応答して、そのデータ要求を解決すべきデータ・レプリカを識別して識別済みデータ・レプリカを形成するコンピュータ実行可能命令、及び、データ要求が更新データ要求である場合、その更新データ要求をレプリカ管理エージェントに送るためのコンピュータ実行可能命令を含む。コンピュータ・プログラムは、更に、アービトレーション・トークンが存在するかどうか決定するためのコンピュータ実行可能命令、及び、アービトレーション・トークンが存在するという決定に応答して、レプリカ管理エージェントにより識別済みデータ・レプリカにおけるデータを更新するためのコンピュータ実行可能命令を含む。
【図面の簡単な説明】
【０００９】
【図１】実施例を具現化し得るデータ処理システムのネットワークの概略図である。
【図２】実施例を具現化し得るデータ処理システムのブロック図である。
【図３】実施例に従って、データ・レプリカのセットに保存データの更新を制御するためのシステムを表すブロック図である。
【図４】実施例に従って、図３のシステムに示されたデータ・レプリカのセットにおける保存データの更新を制御するためのシステムのコンポーネント全体にわたるデータ・フローを示すブロック図である。
【図５】実施例に従って、図３のアービトレーション・トークンを表すブロック図である。
【図６】実施例に従って、図３のアービトレーション・トークンを使用して更新時ウィンドウを計算するための等式である。
【図７】実施例に従って、図３のアービトレーション・トークンを使用して、データ・レプリカのセットにおけるデータ・レプリカを更新するためのプロセスのフローチャートである。
【図８】実施例に従って、データ・レプリカを更新するための、図７のプロセスの詳細を示すフローチャートである。
【図９】実施例に従って、図７のアービトレーション・トークンにおけるウェートを更新するためのプロセスのフローチャートである。
【図１０】実施例に従って、図３のデータ・レプリカのセットに対するデータ要求を制御するためのプロセスのフローチャートである。
【図１１】実施例に従って、図３のアービトレーション・トークンを初期化するためのプロセスのフローチャートである。
【発明を実施するための形態】
【００１０】
当業者には明らかなように、本発明は、システム、方法、又はコンピュータ・プログラムとして具体化することが可能である。従って、本発明は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例（ファームウェア、駐在ソフトウェア、マイクロコード等を含む）、又は、本明細書では一般に「回路」、「モジュール」、又は「システム」と呼ばれることがあるソフトウェアの側面及びハードウェアの側面を結合した実施例の形式をとり得る。更に、本発明は、コンピュータ使用可能プログラム・コードで具体的に表され、任意の有形の表現媒体に組み込まれたコンピュータ・プログラムの形式をとり得る。
【００１１】
１つまたは複数のコンピュータ使用可能媒体又はコンピュータ可読媒体の任意の組み合わせを利用することが可能である。例えば、コンピュータ使用可能媒体又はコンピュータ可読媒体は、電子的、磁気的、光学的、電磁気的、赤外線、もしくは半導体システム、装置、デバイス、又は伝播媒体であってもよいが、それらに限定されない。コンピュータ可読媒体の更に特定の例（限定的なリスト）は次のようなもの、即ち、１つ又は複数の配線を有する電気的接続体、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤＲＯＭ）、光学的記憶装置、インターネット又はイントラネットをサポートする媒体のような通信媒体、或いは磁気記憶装置を含む。プログラムは、例えば、紙又は他の媒体の光学的スキャンを介して電子的に捕捉され、しかる後、コンパイルされ、解釈され、又は必要に応じて適当な方法で処理され、しかる後、コンピュータ・メモリに保存されるので、コンピュータ使用可能媒体又はコンピュータ可読媒体は、プログラムが印刷される紙又は他の適切な媒体であってもよいということに留意されたい。本明細書に関して、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、又はデバイスによって、又はそれらに関連して使用するためのプログラムを含み、保存し、伝送し、伝播し、または搬送し得る任意の媒体であってもよい。コンピュータ使用可能媒体は、ベースバンドでまたは搬送波の一部として組み込まれた、コンピュータ使用可能プログラム・コードを伴う伝播されたデータ信号を含み得る。コンピュータ使用可能プログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ等を含むがそれらに限定されない任意の適切な媒体を使用して送信することが可能である。
【００１２】
本発明のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のようなオブジェクト指向プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような通常の手続きプログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで書くことも可能である。プログラム・コードは、ユーザのコンピュータにおいて全体的に、又はスタンド・アロン・ソフトウェア・パッケージのようにユーザのコンピュータにおいて部分的に、又はユーザのコンピュータおよびリモート・コンピュータにおいてそれぞれ部分的に、又はリモート・コンピュータもしくはサーバにおいて全体的に、実行されてもよい。後述の方法では、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、又は、（例えば、インターネット・サービス・プロバイダを使ってインターネットを介して）外部コンピュータへの接続が行われてもよい。
【００１３】
本発明は、本発明の実施例に従って、方法、装置（システム）、及びコンピュータ・プログラムのフローチャート及び／またはブロック図に関して後述される。フローチャート及び／又はブロック図における各ブロック、並びにフローチャート及び／又はブロック図におけるブロックの組み合わせがコンピュータ・プログラム命令によって具現化することが可能である、ということは明らかであろう。
【００１４】
これらのコンピュータ・プログラム命令は、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／またはブロック図の１つ又は複数のブロックにおいて指定される機能／行為を具現化するための手段を形成するようなマシンを製造するために、汎用コンピュータ、特殊目的コンピュータ、又は他のプログラム可能データ処理装置におけるプロセッサに提供されてもよい。更に、これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に保存された命令が、フローチャート及び／又はブロック図のブロックにおいて指定される機能／行為を具現化する命令手段を含む製品を創作するというような特定の方法で機能するように、コンピュータまたは他のプログラム可能データ処理装置に指示し得るコンピュータ可読媒体に保存されてもよい。
【００１５】
更に、コンピュータ・プログラム命令は、コンピュータ又は他のプログラム可能データ処理装置において実行される命令が、フローチャート及び／又はブロック図のブロックにおいて指定された機能／行為を具現化するためのプロセスを提供するよう、コンピュータ利用のプロセスを創出すべく一連の動作ステップをコンピュータ又は他のプログラム可能データ処理装置上で遂行させるためにコンピュータ又は他のプログラム可能データ処理装置上にロードされてもよい。
【００１６】
次に、図面、特に図１及び２参照すると、実施例を具現化し得るデータ処理環境の例示的な図が示される。図１及び２が単に例示的なものであり、種々の実施例を具現化し得る環境に関して如何なる限定を主張又は暗示することを意図しないということは明らかである。図示された環境に対して多くの修正が施されてもよい。
【００１７】
図１は、実施例を具現化し得るデータ処理システムのネットワークの概略図を示す。ネットワーク・データ処理システム１００は、実施例を具現化し得るコンピュータのネットワークである。ネットワーク・データ処理システム１００はネットワーク１０２を含み、そのネットワーク１０２は、ネットワーク・データ処理システム１００内で相互接続された種々の装置及びコンピュータの間の通信リンクを提供するために使用される媒体である。ネットワーク１０２は、有線通信リンク、無線通信リンク、又は光ファイバ・ケーブルのような接続体を含み得る。
【００１８】
図示の例では、サーバ１０４及びサーバ１０６が記憶装置１０８と共にネットワーク１０２に接続している。更に、クライアント１１０、１１２、及び１１４がネットワーク１０２に接続している。クライアント１１０、１１２、及び１１４は、例えば、パーソナル・コンピュータ又はネットワーク・コンピュータであってもよい。図示の例では、サーバ１０４は、ブート・ファイルのようなデータ、オペレーティング・システム・イメージ、及びアプリケーションをクライアント１１０、１１２、及び１１４に提供する。クライアント１１０、１１２、及び１１４は、この例では、サーバ１０４に対するクライアントである。ネットワーク・データ処理システム１００は、更なるサーバ、クライアント、及び図示されてない他の装置を含み得る。図示の実施例では、サーバ１０４及びサーバ１０６は、クライアント１１０、１１２、及び１１４によるアクセスのための保存データをホスティングするデータ・レプリカのセットを提供する。データ・レプリカはサーバ上に置かれてもよいが、データ・レプリカは一般に地理的に分散配置される。更に、サーバ１０６は、サーバ１０４及びサーバ１０６に保存データの更新を制御するための情報サービス・プロバイダ及び管理サーバをホスティングする。情報サービス・プロバイダのセットにおけるように複数の情報サービス・プロバイダが存在し得る。情報サービス・プロバイダは、データ、レプリカから離れているサーバ及び他の情報サービス・プロバイダ上に置かれてもよい。特に、管理サーバは、アービトレーション・トークンを初期化し、そのアービトレーション・トークンをデータ・レプリカに送る。情報サービス・プロバイダは、サーバ１０４上に保存データにアクセスすることを求める要求をクライアント１１０、１１２、及び１１４から受け取る。その後、情報サービス・プロバイダは、その要求を満たすためのデータ・レプリカを識別する。読み取り要求は遅延なしにサービスされる。サーバ１０４の識別済みデータ・レプリカ上に保存データを更新するための書き込み要求は、その識別済みデータ・レプリカがアービトレーション・トークンを所有しているときだけ行なわれる。識別済みデータ・レプリカ上に保存データが更新された後、サーバ１０４及びサーバ１０６上に分散配置されたデータ・レプリカのようなデータ・レプリカすべてがその識別済みデータ・レプリカに書かれた更新のコピーを受け取る。しかる後、アービトレーション・トークンは次のデータ・レプリカに送られる。
【００１９】
図示の例では、ネットワーク・データ処理システム１００は、相互に通信するためのプロトコルの伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）スイートを使用するネットワーク及びゲートウエイの世界的な集合体を表わすネットワーク１０２を備えたインターネットである。インターネットの中心には、データ及びメッセージを経路指定する数千個の商業用の、政府機関の、教育機関の、及びその他のコンピュータ・システムから成る、主要ノード又はホスト・コンピュータの間の高速データ通信回線のバックボーンがある。勿論、ネットワーク・データ処理システム１００は、例えば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、又は広域ネットワーク（ＷＡＮ）のような多数の種々なタイプのネットワークとして具現化されてもよい。図１は、種々の実施例に対する一例として意図されたものであり、その実施例に対するアーキテクチャ上の限定として意図されたものではない。
【００２０】
図１におけるシステム１００の例を使用して、データ・レプリカのセットにおける保存データの更新を制御するコンピュータ利用方法を説明する。例えば、サーバ１０４上にある識別済みデータ・レプリカに存在するデータに対して、クライアント１１０のような要求元からのデータ要求が、サーバ１０６における情報サービス・プロバイダによって、ネットワーク１０２を介して受け取られる。
【００２１】
データ要求が更新データ要求である場合、その更新データ要求は、サーバ１０４におけるレプリカ管理エージェントに送信される。レプリカ管理エージェントは、アービトレーション・トークンがデータ要求に存在するかどうかを決定し、アービトレーション・トークンが存在する場合、識別済みデータ・レプリカに対するデータを更新する。アービトレーションは、データ・レプリカが更新データ要求の書き込みオペレーションを行なうことを許容される総時間を制御する。
【００２２】
レプリカ管理エージェントからの確認を受けるとき、サーバ１０６における情報サービス・プロバイダはその確認をクライアント１１０における要求元に転送する。レプリカ管理エージェントは、更に、サーバ１０４、サーバ１０６、又は他のサーバに置かれているデータ・レプリカのセットにおける別のデータ・レプリカにその書き込まれた更新のコピーを転送する。更に、レプリカ管理エージェントは、アービトレーション・トークンにおけるシーケンスに従って次のデータ・レプリカにアービトレーション・トークンを送信する。従って、上記のプロセス及びコンポーネントは、データ・レプリカのセットにおける保存データの更新を制御する能力を与える。次に図２を参照すると、実施例を具現化し得るデータ処理システムのブロック図が示される。データ処理システム２００は、図１におけるサーバ１０４又はクライアント１１０のようなコンピュータの一例であり、そのコンピュータには、図示の実施例のためのプロセスを具現化するコンピュータ使用可能プログラム・コード又は命令が置かれている。データ処理システム２００は、図１における電気自動車１１６のような電気自動車に搭載された計算装置として具現化し得る。
【００２３】
この実例例では、データ処理システム２００は、プロセッサ・ユニット２０４、メモリ２０６、永続記憶装置２０８、通信ユニット２１０、入出力（Ｉ／Ｏ）ユニット２１２、及びディスプレイ２１４の間の伝送を行なう伝送ファブリック２０２を含む。プロセッサ・ユニット２０４は、メモリ２０６にロードされるソフトウェアのための命令を実行するように働く。プロセッサ・ユニット２０４はプロセッサのセットであってもよい。本明細書において使用されるように、用語「セット」は１つまたはそれ以上を指す。従って、プロセッサのセットは１つまたはそれ以上のプロセッサである。更に、プロセッサ・ユニット２０４は、特定の実施態様に依存してマルチプロセッサ・コアであってもよい。更に、プロセッサ・ユニット２０４は、メイン・プロセッサが単一のチップ上に二次プロセッサと共に存在する１つまたはそれ以上の異種のプロセッサ・システムを使用して具現化されてもよい。別の実施例として、プロセッサ・ユニット２０４は、同じタイプの複数のプロセッサを含む対称マルチプロセッサ・システムであってもよい。
【００２４】
これらの例では、メモリ２０６は、例えば、ランダム・アクセス・メモリ、又は他の適切な揮発性もしくは不揮発性の記憶装置であってもよい。記憶装置は、データ、情報、及び／又はプログラム・コードを保存することができる任意のハードウェア装置である。永続記憶装置２０８は、特定の実施態様に依存して種々の形体をとり得る。例えば、永続記憶装置２０８は１つまたはそれ以上のコンポーネント又は装置を含み得る。別の例では、永続記憶装置２０８は、ハード・ドライブ、フラッシュ・メモリ、再書込み可能光ディスク、再書込み可能磁気テープ、又はそれらの組み合わせであってもよい。永続記憶装置２０８によって使用される媒体は取り外し可能なものであってもよい。例えば、取り外し可能ハード・ドライブが永続記憶装置２０８の代わりに使用されてもよい。
【００２５】
これらの例における通信ユニット２１０は、他のデータ処理システム又は装置との通信を行なう。これらの例では、通信ユニット２１０はネットワーク・インターフェース・カードである。通信ユニット２１０は、物理通信リンク及び無線通信リンクの一方又は両方の使用を通して通信を行ない得る。
【００２６】
入出力ユニット２１２は、データ処理システム２００に接続された他の装置とのデータの入力及び出力を可能にする。例えば、入出力ユニット２１２は、キーボード及びマウスを介したユーザ入力のための接続を提供し得る。更に、入出力ユニット２１２はプリンタに出力を送り得る。ディスプレイ２１４は、ユーザに情報を表示するための機構を提供する。
【００２７】
オペレーティング・システムのための命令、及びアプリケーション又はプログラムのための命令は永続記憶装置２０８に置かれる。これらの命令は、プロセッサ・ユニット２０４による実行のためのメモリ２０６にロードされる。プロセッサ・ユニット２０４が、メモリ２０６のようなメモリに置かれ得るコンピュータ実装の命令を使用することによって種々の実施例のプロセスを遂行することが可能である。これらの命令は、プロセッサ・ユニット２０４におけるプロセッサによって読み取られて実行されるプログラム・コード、コンピュータ使用可能プログラム・コード、又はコンピュータ可読プログラム・コードと呼ばれる。種々の実施例におけるプログラム・コードは、メモリ２０６又は永続記憶装置２０８のような種々の物理的又は有形のコンピュータ可読媒体上に具現化され得る。
【００２８】
プログラム・コード２１６は、選択的に取り外し可能なコンピュータ可読媒体２１８上に機能的な形で置かれ、プロセッサ・ユニット２０４による実行のためにデータ処理システム２００上にロード又は転送される。プログラム・コード２１６及びコンピュータ可読媒体２１８は、これらの例では、コンピュータ・プログラム製品２２０を形成する。１つの例では、コンピュータ可読媒体２１８は、永続記憶装置２０８の一部であるハード・ドライブのような記憶装置上にそれを移すためのものであってもよく、永続記憶装置２０８の一部であるドライブ又は他の装置に挿入又は設置される光ディスク又は磁気ディスクのような有形のものであってもよい。有形のものでは、コンピュータ可読媒体２１８は、更に、データ処理システム２００に接続されるハード・ドライブ、サム・ドライブ、又はフラッシュ・メモリのような永続記憶装置の形をとり得る。コンピュータ可読媒体２１８の有形のものはコンピュータ記録可能記憶媒体とも呼ばれる。或る例では、コンピュータ可読媒体２１８が取り外し可能でなくてもよい。
【００２９】
別の方法として、プログラム・コード２１６は、コンピュータ可読媒体２１８から通信ユニット２１０のための通信リンクを介して、及び／又は入出力ユニット２１２への接続を介して、データ処理システム２００に転送されてもよい。その通信リンク及び／又は接続は、実施例では物理的なもの又は無線であってもよい。コンピュータ可読媒体は、プログラム・コードを含む通信リンク又は無線伝送のような非有形媒体の形式をとってもよい。
【００３０】
データ処理システム２００に関して例示された種々のコンポーネントは、種々の実施例を具現化し得る方法に対するアーキテクチャ上の限定を示すことを意味しない。種々の実施例は、データ処理システム２００のための図示されたコンポーネントの他の又はそれらの代わりのコンポーネントを含むデータ処理システム２００において具現化されてもよい。図２に示された他のコンポーネントを、図示の例から変更することも可能である。
【００３１】
１つの例として、データ処理システム２００における記憶装置は、データを保存し得る任意のハードウェア装置である。メモリ２０６、永続記憶装置２０８、及びコンピュータ可読媒体２１８は有形の記憶装置の例である。
【００３２】
別の例では、通信ファブリック２０２を具現化するためにバス・システムを使用することが可能であり、そのバス・システムは、システム・バス又は入出力バスのような１つまたはそれ以上のバスで構成することができる。勿論、バス・システムは、そのバス・システムに付属の種々のコンポーネント又は装置の間におけるデータの転送を行なう任意の適切なタイプのアーキテクチャを使用して具現化することが可能である。更に、通信ユニットは、モデム又はネットワーク・アダプタのようなデータを送受信するために使用される１つ又はそれ以上の装置を含み得る。更に、メモリは、例えば、メモリ２０６であってもよく、或いは通信ファブリック２０２に存在し得るインターフェース及びメモリ・コントローラ・ハブにおいて見られるようなキャッシュであってもよい。
【００３３】
図３を参照すると、実施例に従って、データ・レプリカのセットに保存データの更新を制御するためのシステムのブロック図が示される。システム３００は、図１におけるネットワーク化されたデータ処理システム１００のようなネットワーク・データ処理システムにおけるデータ・レプリカのセットの一例である。データ・レプリカのセットは１つまたはそれ以上のデータ・レプリカを含む。システム３００は、図１におけるクライアント１１０、１１２、及び１１４を表すクライアント３０２、３０４及び３０６を含む。
【００３４】
システム３００のクライアントは、データ・レプリカのセットに保存データをアクセスするためにネットワーク３０８とインターフェースする。データ・レプリカのセットは、１つ又はそれ以上のデータ・レプリカを含み得る。ネットワーク３０８は図１におけるネットワーク１０２のようなネットワークである。ネットワーク３０８に接続されたデータ・レプリカのセットは、データ・レプリカ３１０、３１２、及び３１４を含む。データ・レプリカ３１０、３１２、及び３１４は、クライアント３０２、３０４、及び３０６にとってアクセス可能なデータを保存及び管理のように構成された計算装置である。更に、データ・レプリカ３１０、３１２、及び３１４は種々の地理的なロケーションに配置されてもよい。
【００３５】
クライアントによって発生されたデータ要求は情報サービス・プロバイダ３１６に送られる。情報サービス・プロバイダ３１６は、データ・レプリカのセットに保存データへのアクセスを制御するためのハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせとして具現化され得る。特に、情報サービス・プロバイダ３１６は、クライアントからの要求を満たすためのデータ・レプリカを識別する。情報サービス・プロバイダ３１６は、要求元のクライアントとデータ・レプリカとの近似性に基づいてデータ・レプリカを選択し得る。データ要求を満たすデータ・レプリカを選択するために情報サービス・プロバイダ３１６が使用し得る他の基準は、特定のデータ・レプリカに向けられたデータ・トラフィックの量、図５におけるアービトレーション・トークン５００に関して後述されるようなデータ・レプリカ・ウェイト、閾値更新時間ウィンドウ、又はデータ要求を満たすデータを有するデータ・レプリカ、を限定としてではなく含み得る。更新時間ウィンドウは、データ・レプリカに保存データを更新するために許された時間の長さである。更新時間ウィンドウは、図６における更新時間ウィンドウ方程式６００のような更新時間ウィンドウ方程式を使用して計算される。
【００３６】
クライアント要求を満たすデータ・レプリカを識別した後、情報サービス・プロバイダ３１６は、その識別済みデータ・レプリカにおける要求されたデータへのアクセスを行ない得る。データ・レプリカに保存データを更新するというクライアントによる要求は、レプリカ管理エージェント３２０、３２４、及び３２８のようなレプリカ管理エージェントによって制御される。システム３００のクライアントによるデータの要求は、要求元のクライアントに最も近接したデータ・レプリカに向けられてもよい。
【００３７】
システム３００における各データ・レプリカはレプリカ管理エージェントを含む。例えば、データ・レプリカ３１０はレプリカ管理エージェント３２０を含む。レプリカ管理エージェント３２０は、データ・レプリカ３１０において管理機能を遂行するためのソフトウェア・アプリケーションである。例えば、レプリカ管理エージェント３２０は、情報サービス・プロバイダ３１８からデータ要求を受け取り、データ・レプリカ３１０の保存データ３２２からデータを検索し、その結果を情報サービス・プロバイダ３１８に送り戻す。更に、レプリカ管理エージェント３２０は保存データを更新し、アービトレーション・トークン３３２を送り、書き込まれた更新を他のデータ・レプリカにブロードキャストする。レプリカ管理エージェント３２４及び３２８は、レプリカ管理エージェント３２０のようなレプリカ管理エージェントである。
【００３８】
保存データ３２２、３２６、及び３３０は、クライアント３０２、３０４、及び３０６によるアクセスのために維持されたデータである。保存データ３２２、３２６、及び３３０は、データ・レプリカ３１０、３１２、及び３１４にそれぞれ配置される。保存データ３２２、３２６、及び３３０は、同じデータの同時生成されたコピーとなり得る。データ・レプリカに保存データを読み取るというクライアント３０２、３０４、及び３０６による要求は遅滞なくサービスされる。保存データを更新するための書き込み要求は、データ・レプリカがアービトレーション・トークン３３２の所有のものであるときにだけ行なわれる。
【００３９】
アービトレーション・トークン３３２は、データ・レプリカにおける保存データの更新を制御するデータ構造である。実施例では、アービトレーション・トークン３３２は、データ・レプリカのセットにおける各データ・レプリカに関するデータ・レプリカ識別子、データ・レプリカ順序、サービス遅れの質、及びデータ・レプリカ・ウェイトを含む情報を有する。
【００４０】
管理サーバ３１８は、データ・レプリカ３１０、３１２、及び３１４の機能性及び可用性を管理するサーバである。例えば、管理サーバ３１８は、データ・レプリカが更新される順序を決定する。
【００４１】
図４を参照すると、実施例に従って、図３のシステムを表すシステムであって、データ・レプリカのセットにおける保存データの更新を制御するためのシステムのコンポーネント全体にわたるデータ・フローを示すブロック図が表される。システム４００は、図３におけるシステム３００の代表的なシステムの例である、ハードウェア及びソフトウェアの組み合わせである。従って、クライアント４０２は、図３におけるクライアント３０２のようなクライアントである。同様に、情報サービス・プロバイダ４０４は、図３における情報サービス・プロバイダ３１６のような情報サービス・プロバイダである。更に、データ・レプリカ４０６は、図３におけるデータ・レプリカ３１２のようなデータ・レプリカである。
【００４２】
クライアント４０２は、データ・レプリカ４０６に維持された、保存データ４２０をアクセスするために情報サービス・プロバイダ４０４を起動する。保存データ４２０は図３における保存データ３２６のような保存データである。詳しく言えば、クライアント４０２は、データ要求４０８を発生してそれを、情報サービス・プロバイダ４０４へ送ることによってサービス・プロバイダ４０４を起動する。データ要求４０８は、クライアント４０２において生成されるデータに対する要求である。例えば、データ要求４０８は読み取り要求であってもよい。
【００４３】
データ要求４０８を受け取ったことに応答して、情報サービス・プロバイダ４０４は、データ要求４０８を満たすデータ・レプリカを識別する。１つの実施例では、情報サービス・プロバイダ４０４は、データ要求４０８を満たす、クライアント４０２に最も近いデータ・レプリカであるデータ・レプリカを識別し得る。しかし、別の実施例では、情報サービス・プロバイダ４０４は、任意の事前定義された基準に従ってデータ要求４０８を満たすデータ・レプリカを識別し得る。その基準は、例えば、次にアービトレーション・トークン４２６を受け取る順番にある最も近いデータ・レプリカをみ得る。アービトレーション・トークン４２６は、図３におけるアービトレーション・トークン３３２のようなアービトレーション・トークンである。
【００４４】
データ要求４０８を満たすデータ・レプリカ４０６を識別した後、情報サービス・プロバイダ４０４は、データ・キャッシュ４１８に保存されたデータがデータ要求４０８を満たすかどうか決定するためにデータ・キャッシュ４１８をサーチする。データ・キャッシュ４１８は、待ち行列に入れられた更新４２２のセットを保存するメモリである。待ち行列に入れられた更新４２２のセットは、保存データ４２０の１つ又はそれ以上の更新である。待ち行列に入れられた更新４２２のセットは、例えばデータ・レプリカ管理エージェント４１６に書き込まれた新しいデータであってもよい。更に、待ち行列に入れられた更新４２２のセットは、データ・レプリカ４０６に既に保存されていたデータに対する更新を含み得る。データ・キャッシュ４１８に保存データがデータ要求４０８を満たすということを情報サービス・プロバイダ４０４が決定する場合、情報サービス・プロバイダ４０４は、要求されたデータを検索して、請求データ４１０をクライアント４０２に戻す。要求されたデータ４１０は、データ要求４０８を満たすデータである。
【００４５】
データ・キャッシュ４１８に保存データがデータ要求４０８を満たさないということを情報サービス・プロバイダ４０４が決定する場合、情報サービス・プロバイダ４０４は、要求されたデータ４１０を、保存データ４２０において探索し得る。しかる後、情報サービス・プロバイダ４０４は、要求されたデータ４１０をクライアント４０２に戻し得る。
【００４６】
クライアント４０２によって発生されたデータ要求４０８のようなデータ要求は遅延なくサービスされる。しかし、情報サービス・プロバイダ４０４は書き込み要求４１２を別の方法で処理する。書き込み要求４１２は、保存データ４２０にデータを書き込むよう、情報サービス・プロバイダ４０４に対して指示されたクライアント４０２からの要求である。書き込み要求４１２は、保存データ４２０に新しいデータを書き込むことを求める要求、又は保存データ４２０における既存のデータを更新することを求める要求である。実施例では、情報サービス・プロバイダ４０４は、書き込み要求４１２を受け取ったとき、書き込み要求４１２をレプリカ管理エージェント４１６に送る。レプリカ管理エージェント４１６がアービトレーション・トークン４２６を所有しており、データ・キャッシュ４１８が空である場合、レプリカ管理エージェント４１６は、書き込まれた更新４２４を形成するために、書き込み要求４１２に組み込まれたデータを保存データ４２０に書き込む。書き込まれた更新４２４は、保存データ４２０に書き込まれた１つ又はそれ以上の更新である。書き込まれた更新４２４は、書き込み要求４１２からのデータも含み得る。或る例では、書き込まれた更新４２４は、待ち行列に入れられた更新４２２からのデータを含み得る。
【００４７】
待ち行列に入れられた更新４２２は、保存データ４２０を更新するための１つ又はそれ以上の更新のセットである。待ち行列に入れられた更新４２２は、クライアント４０２によって発生されたが、アービトレーション・トークン４２６の不在時にレプリカ管理エージェント４１６によって受け取られた書き込み要求を含み得る。更に、待ち行列に入れられた更新４２２は、書き込まれた更新４２８のコピーのような他のデータ・レプリカからの書き込まれた更新のコピーを含み得る。書き込まれた更新４２８のコピーは書き込まれた更新４２４のコピーである。書き込まれた更新４２８のコピーは、書き込まれた更新４２４により保存データ４２０を更新することに応答してレプリカ管理エージェント４１６によって生成され、送られる。保存データ４２２が書き込まれた更新４２４によって更新されるとき、書き込まれた更新のコピーはそれらの保存データを更新するための他のデータ・レプリカに送られる。例えば、図４における実施例では、レプリカ管理エージェント４１６が、書き込まれた更新４２４でもって保存データ４２０を更新する。更に、レプリカ管理エージェント４１６は、他のレプリカ管理エージェントに書き込まれた更新４２８のコピーを送る。
【００４８】
レプリカ管理エージェント４１６がアービトレーション・トークン４２６を所有しているときだけ、保存データ４２０を更新するためのデータが保存データ４２０に書き込まれるので、レプリカ管理エージェント４１６が保存データ４２０への書き込み許可を有するまで、保存データ４２０に対する更新はデータ・キャッシュ４１８に維持される。実施例では、レプリカ管理エージェント４１６は、更新が受け取られた順序で、待ち行列に入れられた更新４２２を保存データ４２０に書き込む。従って、データ・キャッシュ４１８が、待ち行列に入れられた更新４２２のセットを含むとき、レプリカ管理エージェント４１６が書き込み要求４１２を受け取る場合、レプリカ管理エージェント４１６が書き込み要求４１２のデータでもって保存データ４２０を更新する前に、レプリカ管理エージェント４１６は待ち行列に入れられた更新４２２のセットを保存データ４２０に書き込むであろう。レプリカ管理エージェント４１６がアービトレーション・トークン４２６を所有している時間にレプリカ管理エージェント４１６が書き込み要求４１２でもって保存データ４２０を更新することができない場合、レプリカ管理エージェント４１６は、書き込み要求を、待ち行列に入れられた更新４２２のセットとしてデータ・キャッシュ４１８に保存するであろう。
【００４９】
書き込み要求４１２のデータが保存データ４２０に保存された後、レプリカ管理エージェント４１６は情報サービス・プロバイダ４０４に書き込み確認４１４を送る。一方、情報サービス・プロバイダ４０４は、クライアント４０２に書き込み確認４１４を送り得る。書き込み確認４１４は、書き込み要求４１２に組み込まれたデータでもって保存データ４２０が更新された、ということを表すメッセージである。
【００５０】
図５を参照すると、実施例に従って、アービトレーション・トークンのブロック図が示される。アービトレーション・トークン５００は、図３におけるアービトレーション・トークン３３２のようなアービトレーション・トークンのソフトウェア・コンポーネントの例である。この例では、アービトレーション・トークン５００はテーブルである。しかし、別の実施例では、アービトレーション・トークン５００は任意の他のタイプのデータ構造であってもよい。
【００５１】
アービトレーション・トークン５００はデータ・レプリカ識別子欄５０２を含む。データ・レプリカ識別子欄５０２は、ネットワーク化されたデータ処理システムの各データ・レプリカに割り当てられた一意的な識別子を保存する欄である。例えば、図３におけるシステム３００は、データ・レプリカ３１０、３１２、及び３１４を含む。アービトレーション・トークン３３２は、各データ・レプリカに対応する１つのエントリを有するデータ・レプリカ識別子欄５０２のようなデータ・レプリカ識別子欄を含む。
【００５２】
アービトレーション・トークン５００は、データ・レプリカ順序欄５０４も含む。データ・レプリカ順序欄５０４は、データ・レプリカ識別子欄５０２における識別された各データ・レプリカに対応するエントリを含む。データ・レプリカ順序欄５０４に保存された値は、アービトレーション・トークン５００がデータ・レプリカ識別子欄５０２における識別済みデータ・レプリカの間で送られる順序を表す。システム・アドミニストレータが順序を指定してもよく、又は、図３における管理サーバ３１８のような管理サーバが順序を指定してもよい。
【００５３】
サービス時間遅延の質欄５０６は、サービス時間遅延値の質を保存する。サービス時間遅延値の質は、レプリカ管理エージェントがアービトレーション・トークン５００を所有し得る時の量を指定するパラメータである。サービス時間遅延値の質は、期間、パーセンテージ、又は、時間の量を指定するために使用し得る任意の他のパラメータであってもよい。サービス時間遅延値の質は、システム・アドミニストレータによって割り当てられてもよく、又はデフォルト値が図３における管理サーバ３１８のような管理サーバによって割り当てられてもよい。
【００５４】
データ・レプリカ・ウェイト欄５０８は、各データ・レプリカに割り当てられたウェイト値を保存する欄である。初期のウェイト値は、システム・アドミニストレータ又は管理サーバによって割り当てられてもよい。ウェイト値は、１つ又はそれ以上のデータ・レプリカが長い期間の間アービトレーション・トークン５００を所有することを可能にするように変化し得る。
【００５５】
サービス時間遅延の質欄５０６に保存されたサービス値の初期の質は、書き込み要求を完了するために、データ・レプリカの機能に基づいて実時間で変更されてもよい。従って、すべてのデータ・レプリカが最初に等質のサービス時間遅延値を割り当てられるが、そのサービス時間遅延値の質は、或るデータ・レプリカが長期間にわたってアービトレーション・トークン５００を所有することを可能にし、従って、多くの書き込み要求に適応することを可能にするように変更され得る。例えば、２つのデータ・レプリカを有するシステムは、サービス時間遅延値の初期の質に対して等しい値を各データ・レプリカに割り当てるアービトレーション・トークンを持ち得る。しかし、第１のデータ・レプリカが所与の期間にわたって２倍もの書き込み要求を受け取る場合、サービス時間遅延の質は、影響を受けたデータ・レプリカにとって必要な長い書き込み時間に適応するように増加し得る。
【００５６】
データ・レプリカＮ５１０は、Ｎ番目のデータ・レプリカ、即ち、その欄における最後のエントリを表わす。値５１２は、最後のデータ・レプリカ・エントリに対応する「Ｔｎ」というサービス時間遅延値の質を表わす。値５１４は、最後のデータ・レプリカ・エントリに対応する「Ｗｎ」のデータ・レプリカ・ウェイト値を表わす。
【００５７】
図６を参照すると、実施例に従って、図３のアービトレーション・トークンと共に使用するために更新時間ウィンドウを計算するための方程式が示される。その方程式は、図３におけるレプリカ管理エージェント３２０のようなレプリカ管理エージェントによって具現化することができる。その方程式は、レプリカ管理エージェントがアービトレーション・トークンを所有し得る時間の長さを決定するために使用される。
【００５８】
更新のために割り振られた時間は、データ・レプリカが、待機している書き込み又は要求された書き込みを行なうための更新時間である。要素６０２は、データ・レプリカ「Ｎ」に対する更新時間を表わす。要素６０２の値は、要素６０４及び６０６の積を要素６０８で割ったものとして計算される。
【００５９】
要素６０４は、対応するデータ・レプリカに対するサービス品質（ＱＯＳ）の時間遅延を表わし、図５の値５１２のように「ＴＮ」として示される。要素６０６は、対応するデータ・レプリカ「Ｎ」に対するデータ・レプリカ・ウェイトを表わし、図５の値５１４のように「ＷＮ」として示される。要素６０８は、図５のデータ・レプリカ・ウェイト欄５０８において最高のウェイトを有するデータ・レプリカに関連したデータ・レプリカ・ウェイトを表わす。
【００６０】
図７を参照すると、実施例に従って、図３のアービトレーション・トークンを使用してレプリカのセットにおけるデータ・レプリカを更新するためのプロセスのフローチャートが示される。プロセス７００は、図３のシステム３００のレプリカ管理エージェント３２０において具現化され得るプロセスの実施例である。
【００６１】
プロセス７００が開始し（ステップ７０２）、要求元からのデータ要求を受け取る（ステップ７０４）。そのデータ要求を使って、プロセスは、データ要求を解決すべきデータ・レプリカを識別する（ステップ７０６）。解決は、データ・レプリカのデータ・タイプ、要求タイプ、地理的な近接性、又は他の要因によって行なわれる。例えば、同じ都市又は地域のように要求元に物理的に最も近接しているデータ・レプリカが選択される。別の例では、財務データに関する要求は、一般的なデータ・レプリカとは対照的に財務データ・レプリカに向けられるであろう。更に別の例では、或るサイズ又は数の要素又はファイルの更新を含む要求は、先ず、特定のデータ・レプリカに割り振られる。
【００６２】
データ要求が更新要求である場合、プロセスは、識別済みデータ・レプリカのためのレプリカ管理エージェントにその更新データ要求を送る（ステップ７０８）。プロセスは、書き込みオペレーションの実行を許容するアービトレーション・トークンが存在するかどうかを決定する（ステップ７１０）。更新されるべきデータ・レプリカにおけるレプリカ管理エージェントがアービトレーション・トークンを有するときだけ、書き込み又は更新オペレーションが生じ得る。
【００６３】
アービトレーション・トークンが存在するという決定がなされたとき、ステップ７１０において「イエス」という結果が得られる。アービトレーション・トークンが存在しないという決定がなされたとき、「ノー」という結果が得られる。ステップ７１０において「イエス」が得られたとき、識別済みデータ・レプリカのデータの更新が生じ（ステップ７１２）、しかる後、プロセス７００は終了する（ステップ７１４）。
【００６４】
しかし、アービトレーション・トークンが存在しないという決定がなされ、ステップ７１０において「ノー」が得られたとき、更新要求をキャッシュに保存することが行なわれ（ステップ７１６）、しかる後、プロセス７００は終了する（ステップ７１４）。アービトレーション・トークンを所有するレプリカ管理エージェントによって書き込み許可が得られたとき、キャッシュに保存された更新要求はその後に行なわれるであろう。
【００６５】
図７のプロセス７００のようなプロセスの実施例では、データ・レプリカのセットにおける保存データの更新を制御する機能が示される。データ要求が更新データ要求であるという決定に応答して、プロセスは、識別済みデータ・レプリカのレプリカ管理エージェントに更新データ要求を送り、そしてアービトレーション・トークンの存在に応答して、識別済みデータ・レプリカのデータを更新する。更新の完了時に、レプリカ管理エージェントからの確認が要求元に送られる。従って、或るデータ・レプリカからの更新は、所定の順序で他のデータ・レプリカに伝播される。更新プロセスは、更に、更新を書き込むために割り振られた時間を管理するために各データ・レプリカにおいて更新時間ウィンドウを使って制御される。
【００６６】
図８を参照すると、実施例に従って、データ・レプリカを更新するための図７の詳細なプロセスのフローチャートが示される。図８におけるプロセスは、図３におけるレプリカ管理エージェント３２０のようなソフトウェア・コンポーネントにおいて具現化することが可能である。
【００６７】
プロセス８００が開始し（ステップ８０２）、情報サービス・プロバイダ及び他のデータ・レプリカからの書き込み要求を受け取る（ステップ８０４）。書き込み要求は、図３における情報サービス・プロバイダ３１６のような情報サービス・プロバイダからの書き込み要求であってもよい。更に、書き込み要求は、データ・レプリカの別のレプリカ管理エージェントから受け取られた、書き込まれたの更新の形のものであってもよい。
【００６８】
次に、プロセス８００は、アービトレーション・トークンが存在するかどうかに関して決定を行なう（ステップ８０６）。アービトレーション・トークンが存在するという決定をプロセスが行なう場合、プロセス８００は、更新時間ウィンドウを計算する（ステップ８１０）。更新時間ウィンドウは、図６における更新時間ウィンドウ方程式６００のような更新時間ウィンドウ方程式を使って計算される。しかる後、プロセス８００は、すべての更新が行なわれるまで又は時間ウィンドウの終了まで、到来するデータ要求によって保存データを更新する（ステップ８１２）。
【００６９】
更新時期ウィンドウ方程式に従って計算された更新期間の終了時に、プロセス８００は、書き込みが完了したかどうかに関して決定を行なう（ステップ８１４）。書き込みが更新時間ウィンドウ中に完了したという決定をプロセス８００が行なう場合、プロセス８００はアービトレーション・トークンを更新する（ステップ８１８）。実施例では、プロセスは、書き込みが完了したことを表すためにアービトレーション・トークンを更新する。更に、データ・レプリカに割り当てられたウェイトがインクリメント又はディクリメントされる。レプリカ管理エージェントがサービス品質（ＱＯＳ）の指定時間よりも少ない時間を使用して更新を完了した場合、エージェントは１だけウェイトを減じる。レプリカ管理エージェントがサービス品質の指定時間内にすべての更新を完了しなかった場合、エージェントは１だけウェイトを増加させる。
【００７０】
しかる後、プロセスは、アービトレーション・トークンにおいて指定された次のレプリカ管理エージェントにアービトレーション・トークンを送る（ステップ８２０）。更に、プロセス７００は、情報サービス・プロバイダからの要求に従ってすべての書き込まれた更新を他のレプリカ管理エージェントにブロードキャストし（ステップ８２２）、しかる後、終了する（ステップ８２４）。
【００７１】
次に、ステップ８０６に説明を戻すと、アービトレーション・トークンが存在しないという決定をプロセスが行なう場合、プロセス８００は更新要求をデータ・キャッシュにおける待ち行列に入れる（ステップ８０８）。データ・キャッシュは、図４におけるデータ・キャッシュ４１８のようなデータ・キャッシュである。待ち行列に入れられた更新要求は、書き込み要求のセットに加えられ、アービトレーション・トークンが存在するときに保存データに書き込まれる。更新要求を待ち行列に入れた後、プロセス８００はステップ８０６に戻る。
【００７２】
ステップ８１４において、書き込みが更新時間ウィンドウ中に完了しなかったという決定をプロセスが行なう場合、プロセス８００は、書き込まれてない要求をデータ・キャッシュにおける待ち行列に入れ（ステップ８１６）、しかる後、更新する待ち行列、前述のようにステップ８１８においてアービトレーション・トークンを更新する。この更新ステップ中、プロセス８００は、このプロセスが実行されているデータ・レプリカのウェイトをインクリメントする。別の実施例では、閾値数の書き込み要求が未完了であった後だけ、プロセス８００は、データ・レプリカのウェイトをインクリメントする。
【００７３】
図９を参照すると、実施例に従って、図７のアービトレーション・トークンにおけるウェイトを更新するプロセスのフローチャートが示される。図９におけるプロセスは、図４におけるレプリカ管理エージェント４１６のようなソフトウェア・コンポーネントによって行なうことが可能である。
【００７４】
プロセス９００が開始し（ステップ９０２）、更新時間ウィンドウにおいてすべての書き込み要求が完了したかどうかを決定する（ステップ９０４）。更新時間ウィンドウ中にすべての書き込み要求が行なわれたわけではないという決定をプロセス９００が行なう場合、プロセス９００は、アービトレーション・トークンにおけるデータ・レプリカ・ウェイトをインクリメントし（ステップ９０８）、しかる後、終了する（ステップ９１０）。しかし、すべての書き込み要求が更新時間ウィンドウ中に行なわれたという決定をプロセス９００が行なう場合、プロセス９００は、アービトレーション・トークンにおけるデータ・レプリカ・ウェイトをディクリメントし（ステップ９０６）、しかる後、終了する（ステップ９１０）。前述のように、或る実施例では、アービトレーション・トークンにおけるデータ・レプリカ・ウェイトのインクリメント及びディクリメントは、書き込み試行の閾値が作られた後に生じてもよい。
【００７５】
図１０を参照すると、実施例に従って、図３におけるデータ・レプリカのセットに対するデータ要求を制御するプロセスのフローチャートが示される。プロセス１０００は、図３における情報サービス・プロバイダ３１６のようなソフトウェア・コンポーネントにおいて具現化することが可能である。
【００７６】
プロセス１０００が開始し（ステップ１００２）、要求元からのデータ要求を受け取る（ステップ１００４）。要求元は、図１におけるクライアント１０２又は図３におけるクライアント３０２のようなクライアントであってもよい。その要求から、情報サービス・プロバイダは、データ要求を満たすデータ・レプリカを識別する（ステップ１００６）。データ・レプリカは、地理的な近接性、直近の使用頻度、及びデータ内容を含む事前定義された基準に従って識別されてもよい。
【００７７】
データ要求が更新データ要求であるかどうかに関して決定が行われる（ステップ１００８）。データ要求が更新データ要求であることに応答して、「イエス」が得られる。データ要求が更新データ要求でないことに応答して、「ノー」得られる。ステップ１００８において「ノー」が得られるとき、要求されたデータがデータ・レプリカ・キャッシュにあるかどうかに関する決定が行なわれる（ステップ１０１６）。要求されたデータがデータ・レプリカ・キャッシュにあるという決定に応答して、「イエス」が得られる。要求されたデータがデータ・レプリカ・キャッシュにないという決定に応答して、「ノー」が得られる。
【００７８】
ステップ１０１６において「ノー」が得られるとき、保存データからの要求データの検索が遂行される（ステップ１０１８）。キャッシュにないデータは、一般に、データ・レプリカの保存データ部分に置かれている。要求されたデータが要求元に送られる動作がその結果を戻すために遂行され（ステップ１０２２）、しかる後、プロセス１０００が終了する（ステップ１０２４）。ステップ１０１６において「イエス」が得られる場合、そのデータはキャッシュにあり、キャッシュからのその要求されたデータの検索が行なわれる（ステップ１０２０）。前述のように、要求されたデータが要求元に送られる動作が遂行される（ステップ１０２２）。
【００７９】
ステップ１００８に説明を戻すと、ステップ１００８において「イエス」が得られる場合、識別済みデータ・レプリカのレプリカ管理エージェントに更新データ要求を送る動作が遂行される（ステップ１０１０）。プロセスは、データ要求が処理された後、レプリカ管理エージェントからの確認を受け（ステップ１０１２）、書き込みオペレーションが成功し、更新がデータ・レプリカにおける所定位置にあるという確認を与える。確認を要求元に送ること（ステップ１０１４）は、書き込み又は更新オペレーションが成功したという通知を要求元に与える。しかる後、プロセス１０００は終了する（ステップ１０２４）。
【００８０】
図１１を参照すると、実施例に従って、図３のアービトレーション・トークンを初期化するプロセスのフローチャートが示される。図１１におけるプロセスは、図３における管理サーバ３１８のようなソフトウェア・コンポーネントにおいて具現化することが可能である。
【００８１】
プロセス１１００が開始し（ステップ１１０２）、サービス時間遅延値の質を受け取る（ステップ１１０４）。サービス時間遅延値の質は、図５におけるアービトレーション・トークン５００のサービス時間遅延の質欄５０６に保存されたサービス時間遅延値の質のようなサービス時間遅延の質である。
【００８２】
次に、プロセス１１００は、任意のデータ・レプリカ・ウェイトを割り当て（ステップ１００６）、それに続いてデータ・レプリカ更新順序を割り当てる（ステップ１１０８）。更新順序及び／又はデータ・レプリカ・ウェイトの割り当ては、システム・アドミニストレータによって与えられる入力に従って行なうことが可能である。別の方法として、更新順序及び／又はデータ・レプリカ・ウェイトの割り当ては、資源、プロパティ、又はコンフィグレーション・ファイルに維持されたデフォルト値に従って管理サーバにより行なうことが可能である。しかる後、プロセス１１００は、更新順序でリストされた第１のデータ・レプリカにアービトレーション・トークンを送り（ステップ１１１０）、しかる後、終了する（ステップ１１１２）。
【００８３】
従って、実施例は、要求元からデータ要求を受け取ること、及びデータ要求を解決すべきデータ・レプリカを識別して１つの識別済みデータ・レプリカを作成すること、によってデータ・レプリカのセットにおける保存データの更新を制御する機能を示す。データ要求が更新データ要求であるという決定に応答して、その識別済みデータ・レプリカのレプリカ管理エージェントに更新データ要求を送り、アービトレーション・トークンの存在に応答して、その識別済みデータ・レプリカのデータを更新する。更新の完了時に、レプリカ管理エージェントからの確認を受け取り、その確認を要求元に送る。従って、１つのデータ・レプリカからの更新は、所定の順序で他のデータ・レプリカに伝播される。更新プロセスは、各データ・レプリカにおける更新時間ウィンドウを使用して更に制御される。
【００８４】
図面におけるフローチャート及びブロック図は、本発明の様々な実施例に従って、システム、方法、及びコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、及びオペレーションを示す。これに関して、フローチャート又はブロック図における各ブロックは、モジュール、セグメント、又はコード部分を表わし得るし、それらは、指定された論理的機能を具現化するための１つ又はそれ以上の実行可能な命令を含む。或る代替の実施態様では、ブロックに示された機能は図に示された順序を外れて生じ得るということに留意されたい。例えば、連続して示された２つのブロックが、実際には、ほぼ同時に実行されてもよく、又は、ブロックが、関連の機能に依存して、時には逆の順序で実行されてもよい。更に、ブロック図及び／又はフローチャートの各ブロック、並びにブロック図及び／又はフローチャートにおけるブロックの組み合わせが、指定された機能又は行為を遂行するハードウェア・ベースのシステム、又は特殊目的ハードウェア及びコンピュータ命令の組み合わせによって具現化されてもよい。
【００８５】
その媒体は、電子的、磁気的、光学的、電磁気的、赤外線、又は半導体システム（もしくは装置、もしくはデバイス）、或いは伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体もしくはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、固定磁気ディスク、及び光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク−リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）、及びＤＶＤを含む。
【００８６】
プログラム・コードを保存及び／又は実行するに適したデータ処理システムは、システムバスを介してメモリ素子に直接又は間接的に接続された少なくとも１つのプロセッサを含むであろう。メモリ素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、及びキャッシュ・メモリを含み得る。キャッシュ・メモリは、プログラム・コードが実行中に大容量記憶装置から検索されなければならない回数を減らすために、少なくとも幾つかのプログラム・コードの一時的記憶装置を提供する。
【００８７】
入出力装置、即ちＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング装置等を含むがそれらに限定されない）は、直接に又は介在するＩ／Ｏコントローラを介してシステムに接続される。
【００８８】
データ処理システムが、介在の専用ネットワーク又は公衆ネットワークを介して他のデータ処理システム又は遠隔のプリンタもしくは記憶装置に接続されることを可能にするために、ネットワーク・アダプタがそのシステムに接続されてもよい。モデム、ケーブル・モデム、及びイーサネット・カードが、数少ない現在利用可能なタイプのネットワーク・アダプタである。
【００８９】
本発明に関する記述は、例示及び説明の目的で示されており、網羅的であること又は開示された形式の発明に限定されることを意図するものではない。当業者には多くの修正及び変更が明らかであろう。実施例は、発明の原理及び実用的な応用例を最もよく説明するために、及び当業者が、意図される特定の用途に適するように、種々の修正を伴う種々の実施例に関しても本発明を理解することを可能にするために、選択され、記述された。
【図１】
2010129088.tif 000003
【図２】
2010129088.tif 000004
【図３】
2010129088.tif 000005
【図４】
2010129088.tif 000006
【図５】
2010129088.tif 000007
【図６】
2010129088.tif 000008
【図７】
2010129088.tif 000009
【図８】
2010129088.tif 000010
【図９】
2010129088.tif 000011
【図１０】
2010129088.tif 000012
【図１１】
2010129088.tif 000013