(57)【要約】【課題】読み込みや書き込みの応答時間が短く、ネットワークの輻輳を発生させることが少ないデータアクセスシステムを提供する。【解決手段】データアクセスシステムは、分散されたデータを記憶する各データ処理装置の座標を記憶する座標記憶手段８５を備える。各データ処理装置７１は、所定の装置との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定する座標決定手段８１と、分散されたデータを記憶するデータ記憶手段８２とを備える。また、データアクセスシステムは、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するアクセス先決定手段８３を備える。【選択図】図１４
2010074604.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のデータ処理装置を備え、
コンピュータネットワークにおけるデータ処理装置の位置を表した多次元の実座標であって、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置の位置を表した座標を記憶する座標記憶手段を備え、
各データ処理装置は、
所定の装置との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定する座標決定手段と、
分散されたデータを記憶するデータ記憶手段とを備え、
分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するアクセス先決定手段を備える
ことを特徴とするデータアクセスシステム。
【請求項２】
座標記憶手段は、分散されたデータを記憶するデータ処理装置とは別に設けられた装置であるマスタに備えられ、
前記マスタは、分散されたデータを指定する情報を受信すると、当該データを記憶する各データ処理装置の座標を出力する応答手段を備える
請求項１に記載のデータアクセスシステム。
【請求項３】
分散されたデータの読み込みまたは書き込みの要求元であるクライアント装置を備え、
前記クライアント装置は、
所定の装置との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定するクライアント座標決定手段と、
読み込みまたは書き込みの対象である分散されたデータを指定する情報をマスタに送信して、マスタから当該データを記憶する各データ処理装置の座標を受信し、前記分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成する座標取得手段と、
座標取得手段が読み込み対象である分散されたデータを指定する情報をマスタに送信して得たリストに含まれる座標と当該クライアント装置の座標との距離に基づいて、読み込み先となるデータ処理装置を決定する読み込み先決定手段とを備える
請求項２に記載のデータアクセスシステム。
【請求項４】
アクセス先決定手段は、データ記憶手段を備える各データ処理装置に備えられ、座標のリストとして分散されたデータの書き込み先の候補となるデータ処理装置の座標のリストが入力され、当該リストのうち未だ前記データの書き込みが完了していない候補の座標と自装置の座標との距離に基づいて、書き込み先となるデータ処理装置を決定し、
各データ処理装置は、
前記リストおよび書き込み対象である分散されたデータを受信すると、当該データを自装置のデータ記憶手段に記憶させるデータ書き込み手段と、
前記リストから自装置の座標を除いたリストと前記分散されたデータを、アクセス先決定手段が決定したデータ処理装置に送信する送信手段とを備え、
前記クライアント装置は、
座標取得手段が書き込み対象である分散されたデータを指定する情報をマスタに送信して得たリストに含まれる座標と当該クライアント装置の座標との距離に基づいて前記リストの送信先となるデータ処理装置を決定するリスト送信先決定手段と、
リスト送信先決定手段によって決定されたデータ処理装置に前記リストと前記分散されたデータとを送信するリスト送信手段とを備える
請求項３に記載のデータアクセスシステム。
【請求項５】
座標記憶手段およびアクセス先決定手段は、データ記憶手段を備える各データ処理装置に備えられ、
前記アクセス先決定手段は、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分だけ、データ処理装置を決定し、
各データ処理装置は、
前記アクセス先決定手段によって決定された各データ処理装置に対して分散されたデータの読み込みまたは書き込みを行うアクセス手段を備える
請求項１に記載のデータアクセスシステム。
【請求項６】
分散されたデータの読み込みまたは書き込みの要求元であるクライアント装置を備え、
座標記憶手段およびアクセス先決定手段は、前記クライアント装置に備えられ、
前記アクセス先決定手段は、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分だけ、データ処理装置を決定し、
各クライアント装置は、
前記アクセス先決定手段によって決定された各データ処理装置に対して分散されたデータの読み込みまたは書き込みを行うアクセス手段を備える
請求項１に記載のデータアクセスシステム。
【請求項７】
分散されたデータは、予め与えられた数の冗長数で分散された同一形式のデータであり、
書き込みに関する充足定数は、前記冗長数の１／２より大きな数に定められ、読み込みに関する充足定数は、前記冗長数と前記書き込みに関する充足定数との差よりも大きな数に定められる
請求項１から請求項６のうちのいずれか１項に記載のデータアクセスシステム。
【請求項８】
分散されたデータは、１つのデータを分割して冗長符号化したデータブロックであり、
前記データブロック数の数を冗長数としたときに、書き込みに関する充足定数は、前記冗長数に等しい数に定められ、読み込みに関する充足定数は、前記１つのデータを復元可能なデータブロックの数に等しい値に定められる
請求項１から請求項６のうちのいずれか１項に記載のデータアクセスシステム。
【請求項９】
他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶するデータ処理装置とは別に設けられた装置であるマスタが、コンピュータネットワークにおけるデータ処理装置の位置を表した多次元の実座標であって、分散されたデータを記憶する各データ処理装置の位置を表した座標を記憶し、
分散されたデータの読み込みまたは書き込みの要求元であるクライアント装置が、
所定の装置との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定し、
読み込み対象である分散されたデータを記憶する各データ処理装置の座標を前記マスタから取得し、前記分散されたデータの読み込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成し、
リストに含まれる座標と当該クライアント装置の座標との距離に基づいて、読み込み先となるデータ処理装置を決定する
ことを特徴とするデータアクセス方法。
【請求項１０】
クライアント装置が、
書き込み対象である分散されたデータを記憶する各データ処理装置の座標を前記マスタから取得し、前記分散されたデータの書き込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成し、
前記リストに含まれる座標と当該クライアント装置の座標との距離に基づいて前記リストの送信先となるデータ処理装置を決定し、
決定されたデータ処理装置に前記リストを送信し、
データ処理装置は、
所定の装置との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定し、
分散されたデータの書き込み先の候補となるデータ処理装置の座標のリストが入力されると、当該リストのうち未だ前記データの書き込みが完了していない候補の座標と自装置の座標との距離に基づいて、書き込み先となるデータ処理装置を決定する
請求項９に記載のデータアクセス方法。
【請求項１１】
一の装置が、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置にアクセスするデータアクセス方法であって、
前記一の装置が、
所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定し、
分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分だけ、データ処理装置を決定し、
決定した各データ処理装置に対して分散されたデータの読み込みまたは書き込みを行う
ことを特徴とするデータアクセス方法。
【請求項１２】
他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータの読み込みまたは書き込みの要求元であるクライアント装置であって、
所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定するクライアント座標決定手段と、
読み込みまたは書き込みの対象である分散されたデータを指定する情報を、分散されたデータを記憶する各データ処理装置の座標を記憶するマスタに送信して、前記マスタから当該データを記憶する各データ処理装置の座標を受信し、前記分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成する座標取得手段と、
座標取得手段が読み込み対象である分散されたデータを指定する情報をマスタに送信して得たリストに含まれる座標と当該クライアント装置の座標との距離に基づいて、読み込み先となるデータ処理装置を決定する読み込み先決定手段とを備える
ことを特徴とするクライアント装置。
【請求項１３】
所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定する座標決定手段と、
他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶するデータ記憶手段と、
分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するアクセス先決定手段とを備え、
前記アクセス先決定手段は、前記リストとして、分散されたデータの書き込み先の候補となるデータ処理装置の座標のリストが入力されると、当該リストのうち未だ前記データの書き込みが完了していない候補の座標と自装置の座標との距離に基づいて、書き込み先となるデータ処理装置を決定する
ことを特徴とするデータ処理装置。
【請求項１４】
他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置にアクセスするデータ処理装置であって、
所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定する座標決定手段と、
分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分だけ、データ処理装置を決定するアクセス先決定手段と、
決定された各データ処理装置に対して、分散されたデータの読み込みまたは書き込みを行うアクセス手段とを備える
ことを特徴とするデータ処理装置。
【請求項１５】
コンピュータに、
所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定する座標決定処理、
他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するアクセス先決定処理を実行させ、
前記アクセス先決定処理で、前記リストとして、分散されたデータの書き込み先の候補となるデータ処理装置の座標のリストが入力されると、当該リストのうち未だ前記データの書き込みが完了していない候補の座標と自装置の座標との距離に基づいて、書き込み先となるデータ処理装置を決定させる
ためのデータアクセス用プログラム。
【請求項１６】
他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータの読み込みまたは書き込みの要求元であるコンピュータに搭載されるデータアクセス用プログラムであって、
前記コンピュータに、
所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定するクライアント座標決定処理、
読み込みまたは書き込みの対象である分散されたデータを指定する情報を、分散されたデータを記憶する各データ処理装置の座標を記憶するマスタに送信して、前記マスタから当該データを記憶する各データ処理装置の座標を受信し、前記分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成する座標取得処理、および、
読み込み対象である分散されたデータを指定する情報をマスタに送信して得たリストに含まれる座標と当該クライアント装置の座標との距離に基づいて、読み込み先となるデータ処理装置を決定する読み込み先決定処理
を実行させるためのデータアクセス用プログラム。
【請求項１７】
他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置にアクセスするコンピュータに搭載されるデータアクセス用プログラムであって、
前記コンピュータに、
所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定する座標決定処理、
分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分だけ、データ処理装置を決定するアクセス先決定処理、および、
決定された各データ処理装置に対して、分散されたデータの読み込みまたは書き込みを行うアクセス処理
を実行させるためのデータアクセス用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データアクセスシステム、データアクセス方法、データ処理装置、クライアント装置、データアクセス用プログラムに関し、特に、応答速度が速く、ネットワーク利用効率が高く、ネットワークのアドレス設定に依存しないデータアクセスシステム、データアクセス方法、データ処理装置、クライアント装置、データアクセス用プログラムに関する。
【背景技術】
【０００２】
データアクセスシステムの一例が、非特許文献１に記載されている。図１５は、非特許文献１に記載されたデータアクセスシステムの例を模式的に示す説明図である。非特許文献１に記載されたデータアクセスシステムは、マスタ１３０と、データセンタ１０１，１０２に配置されたラック１０３，１０４，１０５に格納されたデータ管理サーバ１１１〜１１８およびデータアクセスクライアント１２０とから構成され、分散システムに適用される。
【０００３】
マスタ１３０は、この分散システムにおいて利用される名前空間におけるデータ名毎に、そのデータの状態を管理するデータ管理サーバのアドレスを格納する。また、マスタ１３０は、この分散システムにおいて利用される名前空間におけるデータ名を入力として受け取ると、そのデータ名に対応するデータ管理サーバのアドレスを返す。
【０００４】
データ管理サーバ１１１には、分散システムに格納されたファイル１５０が格納される。このファイル１５０は、同一内容のファイルが複製され、複数個所に格納される。図１５に示す例では、ファイル１５０と同一内容のファイル１５１，１５２が、それぞれデータ管理サーバ１１４とデータ管理サーバ１１７に格納されている。
【０００５】
前述のマスタ１３０は、これらのデータの名前「／ｆｏｏ」が、データ管理サーバ１１１、１１４、１１７に格納されていることを、それぞれのＩＰアドレスである（１０．１．１．１）、（１０．１．８５．９）、（１０．６０．１．５４）に対応づけて記憶している。
【０００６】
データ管理サーバ１１１は、自ノードと他ノードとの近傍性を自ノードのアドレスと他ノードのアドレスを用いて推定し、最も近いと推定されるノードをアクセス先とする。例えば、同一サブネットに属するといった判断や、アドレスのプレフィックスを長く共有しているといった情報から最も近いアクセス先を推定する。データ管理サーバ１１１は、データの読み書き要求を受け付け、自ノードに格納されたデータの読み書きを行い、必要に応じて、他ノードへの複製書き込みを行う。
【０００７】
データアクセスクライアント１２０は、データ管理サーバ１１１と同様にアドレスを用いて近傍性を推定し、アクセスすべきデータ管理サーバを決定する。
【０００８】
データアクセスクライアント１２０がデータ名「／ｆｏｏ」に対して書き込みを行う場合、まずデータアクセスクライアント１２０は、マスタ１３０に「／ｆｏｏ」に対応するデータ管理サーバのアドレスを問い合わせ、マスタ１３０は（１０．１．１．１）、（１０．１．８５．９）、（１０．６０．１．５４）を取り出し、データアクセスクライアント１２０に返す。データアクセスクライアント１２０は、自ノードのアドレス１０．１．１．６４に最も近いアドレスとして、１０．１．１．１を選択し、このアドレスのデータ管理サーバ１１１にデータの書き込みを行う。次に、データ管理サーバ１１１は、次に近いデータ管理サーバ１１４に対してデータの書き込みを行い、データ管理サーバ１１４は次に近いデータ管理サーバ１１７にデータを書き込む。一方、データアクセスクライアント１２０がデータ名「／ｆｏｏ」に対して読み込みを行う場合、書き込み時と同様にマスタ１３０からアドレスを取り出し、最も近傍なアドレスを持つデータ管理サーバ１１１に対して、データ名「／ｆｏｏ」を要求し、データ管理サーバ１１１は、データ１５０を返す。
【０００９】
分散システムにおけるデータアクセスシステムの他の例が、非特許文献２に記載されている。図１６は、非特許文献２に記載されたデータアクセスシステムの例を模式的に示す説明図である。非特許文献２に記載されたデータアクセスシステムは、データ管理サーバ２１１〜２１９、およびデータアクセスクライアント２２０とから構成されている。非特許文献２に記載されたデータアクセスシステムでは、マスタが存在しない代わりに、論理アドレス空間２００が設けられ、これら構成要素は通信用のＩＰアドレスの他に、この論理アドレス空間における論理アドレスを持つ。例えば、データ管理サーバ２１１には、１０．１．１．１という通信用のＩＰアドレスの他に、１９５３という論理アドレスが割り当てられている。
【００１０】
論理アドレス空間２００には、各データ管理サーバについて、テーブル２０１に示す論理アドレスとＩＰアドレスの対応が存在する。データは、そのデータ名のハッシュ値を論理アドレス空間のサイズで除した値と、このテーブル２０１とで決定される。例えば、データ管理サーバ２１１には、データ名のハッシュ値を論理アドレス空間のサイズで除した値が（１５００,１９５３］の範囲に存在するようなデータが格納される。例えば、「／ｆｏｏ」というデータ名に対して、ハッシュ関数を適用した値をアドレス空間のサイズで除した値が１８００であったとすると、データ管理サーバ２１１がＣｏｏｒｄｉｎａｔｏｒとして、データ名「／ｆｏｏ」を管理する。また、テーブル２０１において、予め定められた複製数分だけ、次の順序にあるデータ管理サーバにもデータが配置される。このデータ管理サーバのアドレス付け、およびそれを用いてデータの格納先データ管理サーバを決定する手法は、ＣｏｎｓｉｓｔｅｎｔＨａｓｈｉｎｇと呼ばれる。
【００１１】
データ管理サーバ２１１は、データ名、値、バージョンを有すデータ２５０を格納する。図１６に示す例では、「／ｆｏｏ」というデータ名のバージョン３の値５が格納されている。これらは複製されており、データ管理サーバ２１２〜２１４においても、同じデータ名と対応するデータ２５１〜２５３が格納されている。ただし、データ管理サーバ２１３のデータ２５２は、バージョンが異なる。これはこの複製法がＱｕｏｒｕｍアルゴリズムで複製され、全ての複製用のサーバに同一データを書き込まれる必要のある二相コミットメントとは異なり、複製数の半分より大きい値（書き込みＱｕｏｒｕｍ数）だけ書き込むだけで良いためである。そのため、書き込みの応答速度は、二相コミットメントのように、全レプリカ数に対する書き込みの中で最も遅い書き込み速度と等しくなるのではなく、書き込みＱｕｏｒｕｍ数の中で最も遅い書き込み速度と等しくなり、書き込みの戻りが遅いデータ管理サーバに対する書き込み完了を待つ必要はない。また、一部のデータ管理サーバの故障やデータ管理サーバへのネットワーク切断が発生していても、他の代替サーバに書き込むことで、処理を正常に終えることができる。これは、読み込みについても同じである。
【００１２】
また、データ管理サーバ２１１には、論理アドレスとＩＰアドレスの対応テーブル２０１が格納される。データ管理サーバ２１１は、与えられたデータ名の複製に対する複製数をもとに、どのデータ管理サーバから複製を取得するかを決定する。また、データ管理サーバ２１１は、データ名を指定した書き込み・読み込み要求に応じて、データの書き込みや読み込みを行ったり、決定したデータ管理サーバに対するデータ書き込み・読み込みを管理する。
【００１３】
データアクセスクライアント２２０には、論理アドレスとＩＰアドレスの対応テーブル２０１が格納される。データアクセスクライアント２２０は、データ名を指定した書き込み・読み込みを行う場合、このデータ名のＣｏｏｒｄｉｎａｔｏｒであるデータ管理サーバ２１１に書き込み・読み込み要求を送る。ここでＣｏｏｒｄｉｎａｔｏｒは、データ名のハッシュ値をアドレス空間サイズで除して得られる論理アドレスと対応するデータ管理サーバである。
【００１４】
このような構成を有するデータアクセスシステムは次のように動作する。すなわち、データアクセスクライアント２２０がデータ名「／ｆｏｏ」に対して書き込みを行う場合、データ名のＣｏｏｒｄｉｎａｔｏｒを決定し、そのＣｏｏｒｄｉｎａｔｏｒであるデータ管理サーバ２１１に書き込み要求を送信する。データ管理サーバは、自身に格納していたデータを取得するとともに、他の複数のデータ管理サーバへのＩＰアドレスを決定し、その全てに対して書き込み要求を非同期送信する。そして、応答した書き込み数と、自身のデータ格納部のデータとが書き込みＱｕｏｒｕｍ数に達すると、データの書き込みが正常に成功したと判断する。読み込みの場合も同様であり、読み込みＱｕｏｒｕｍ数に達するまで、データの読み込みは正常に成功したとは判断されない。
【００１５】
また、非特許文献３には、ネットワーク上のコンピュータの座標を求める方法が記載されている。非特許文献３に記載された方法では、あるコンピュータにおいて計測された遅延を主成分分析することにより、そのコンピュータの座標を計算する。
【００１６】
【非特許文献１】Ｓａｎｊａｙ Ｇｈｅｍａｗａｔ, Ｈｏｗａｒｄ Ｇｏｂｉｏｆｆ, ａｎｄ Ｓｈｕｎ−Ｔａｋ Ｌｅｕｎｇ，“Ｔｈｅ Ｇｏｏｇｌｅ Ｆｉｌｅ Ｓｙｓｔｅｍ”，Ｐｒｏｃｅｅｄｉｎｇｓ ｏｆ ｔｈｅ ｎｉｎｅｔｅｅｎｔｈ ＡＣＭ ｓｙｍｐｏｓｉｕｍ ｏｎ Ｏｐｅｒａｔｉｎｇ ｓｙｓｔｅｍｓ ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ‘０３），２００３年１０月１９日
【非特許文献２】Ｇｉｕｓｅｐｐｅ ＤｅＣａｎｄｉａ, Ｄｅｎｉｚ Ｈａｓｔｏｒｕｎ, Ｍａｄａｎ Ｊａｍｐａｎｉ, Ｇｕｎａｖａｒｄｈａｎ Ｋａｋｕｌａｐａｔｉ,  Ａｖｉｎａｓｈ Ｌａｋｓｈｍａｎ, Ａｌｅｘ Ｐｉｌｃｈｉｎ, Ｓｗａｍｉｎａｔｈａｎ Ｓｉｖａｓｕｂｒａｍａｎｉａｎ, Ｐｅｔｅｒ Ｖｏｓｓｈａｌｌ  ａｎｄ Ｗｅｒｎｅｒ Ｖｏｇｅｌｓ，“Ｄｙｎａｍｏ：Ａｍａｚｏｎ‘ｓ Ｈｉｇｈｌｙ Ａｖａｉｌａｂｌｅ Ｋｅｙ−ｖａｌｕｅ Ｓｔｏｒｅ”，Ｐｒｏｃｅｅｄｉｎｇｓ ｏｆ ｔｈｅ ｎｉｎｅｔｅｅｎｔｈ ＡＣＭ ｓｙｍｐｏｓｉｕｍ ｏｎ Ｏｐｅｒａｔｉｎｇ ｓｙｓｔｅｍｓ ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ’０７），２００７年１０月１４日
【非特許文献３】Ｈｙｕｋ Ｌｉｍ，Ｊｅｎｎｉｆｅｒ Ｃ．Ｈｏｕ，Ｃｈｏｎｇ−Ｈｏ Ｃｈｏｉ，“Ｃｏｎｓｔｒｕｃｔｉｎｇ  Ｉｎｔｅｒｎｅｔ  Ｃｏｏｒｄｉｎａｔｅ  Ｓｙｓｔｅｍ  Ｂａｓｅｄ  ｏｎ  Ｄｅｌａｙ”，ＩＭＣ‘０３，２００３年
【発明の開示】
【発明が解決しようとする課題】
【００１７】
非特許文献１に記載されたシステムでは、近傍性を推定する時間は少ないものの、データアクセスの応答速度が遅い、あるいはネットワークが輻輳を起こしやすいという問題がある。ネットワーク内でメッセージの到達先を表すアドレスについて、その先頭ビットが共通といった類似性では、推定精度は低い。そのため、実際には応答速度がより近いデータ管理サーバが存在しても、より遠くのデータ管理サーバにアクセスする可能性が高く、その結果、応答速度が低くなる。また、ネットワーク的に離れたデータ管理サーバ間でデータ通信を行うため、その経路上のスイッチで輻輳が発生しやすくなる。
【００１８】
また、非特許文献１に記載されたシステムは、既にアドレス体系が決定されたシステムに導入することが困難であるという問題がある。その理由は、ネットワーク内でメッセージの到達先を表すアドレスで以て近傍性を推定するには、データセンター、ラック、サーバといった物理的な設備の収容関係をアドレス体系に反映させる必要があるが、通常はある程度物理的な近傍性が反映されるものの、アドレス体系はセキュリティを考慮して組織毎に決定されたり、動的に変更されたりするものであるからである。
【００１９】
また、非特許文献２に記載されたシステムでは、通信量やデータ管理サーバでの処理が必要以上に多くなる。その理由は、全ての複製先のデータ管理サーバにデータを送付すること自体の通信量の発生に加えて、データ管理サーバ側の状態を変更するために、再度通信が必要になり、そのための処理負荷が必要となるからである。
【００２０】
本発明は、分散されたデータを有する複数のデータ処理装置から特定のデータ処理装置を選択してアクセスする際、読み込みや書き込みの応答時間が短く、ネットワークの輻輳を発生させることが少ないデータアクセスシステム、データアクセス方法、データアクセス方法、データ処理装置、クライアント装置、データアクセス用プログラムを提供することを目的とする。また、コンピュータネットワークのアドレス体系を変更したり再設計したりすることなく、容易に既存のシステムに導入することができるデータアクセスシステム、データアクセス方法、データアクセス方法、データ処理装置、クライアント装置、データアクセス用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
また、本発明によるデータアクセスシステムは、１つ以上のデータ処理装置を備え、コンピュータネットワークにおけるデータ処理装置の位置を表した多次元の実座標であって、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置の位置を表した座標を記憶する座標記憶手段を備え、各データ処理装置が、所定の装置との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定する座標決定手段と、分散されたデータを記憶するデータ記憶手段とを備え、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するアクセス先決定手段を備えることを特徴とする。
【００２２】
また、本発明によるデータアクセス方法は、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶するデータ処理装置とは別に設けられた装置であるマスタが、コンピュータネットワークにおけるデータ処理装置の位置を表した多次元の実座標であって、分散されたデータを記憶する各データ処理装置の位置を表した座標を記憶し、分散されたデータの読み込みまたは書き込みの要求元であるクライアント装置が、所定の装置との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定し、読み込み対象である分散されたデータを記憶する各データ処理装置の座標をマスタから取得し、分散されたデータの読み込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成し、リストに含まれる座標と当該クライアント装置の座標との距離に基づいて、読み込み先となるデータ処理装置を決定することを特徴とする。
【００２３】
また、本発明によるデータアクセス方法は、一の装置が、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置にアクセスするデータアクセス方法であって、一の装置が、所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定し、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分だけ、データ処理装置を決定し、決定した各データ処理装置に対して分散されたデータの読み込みまたは書き込みを行うことを特徴とする。
【００２４】
また、本発明によるクライアント装置は、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータの読み込みまたは書き込みの要求元であるクライアント装置であって、所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定するクライアント座標決定手段と、読み込みまたは書き込みの対象である分散されたデータを指定する情報を、分散されたデータを記憶する各データ処理装置の座標を記憶するマスタに送信して、マスタからそのデータを記憶する各データ処理装置の座標を受信し、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成する座標取得手段と、座標取得手段が読み込み対象である分散されたデータを指定する情報をマスタに送信して得たリストに含まれる座標とクライアント装置の座標との距離に基づいて、読み込み先となるデータ処理装置を決定する読み込み先決定手段とを備えることを特徴とする。
【００２５】
また、本発明によるデータ処理装置は、所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定する座標決定手段と、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶するデータ記憶手段と、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するアクセス先決定手段とを備え、アクセス先決定手段は、リストとして、分散されたデータの書き込み先の候補となるデータ処理装置の座標のリストが入力されると、リストのうち未だデータの書き込みが完了していない候補の座標と自装置の座標との距離に基づいて、書き込み先となるデータ処理装置を決定することを特徴とする。
【００２６】
また、本発明によるデータ処理装置は、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置にアクセスするデータ処理装置であって、所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定する座標決定手段と、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分だけ、データ処理装置を決定するアクセス先決定手段と、決定された各データ処理装置に対して、分散されたデータの読み込みまたは書き込みを行うアクセス手段とを備えることを特徴とする。
【００２７】
また、本発明によるデータアクセス用プログラムは、コンピュータに、所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定する座標決定処理、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するアクセス先決定処理を実行させ、アクセス先決定処理で、リストとして、分散されたデータの書き込み先の候補となるデータ処理装置の座標のリストが入力されると、リストのうち未だデータの書き込みが完了していない候補の座標と自装置の座標との距離に基づいて、書き込み先となるデータ処理装置を決定させることを特徴とする。
【００２８】
また、本発明によるデータアクセス用プログラムは、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータの読み込みまたは書き込みの要求元であるコンピュータに搭載されるデータアクセス用プログラムであって、コンピュータに、所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定するクライアント座標決定処理、読み込みまたは書き込みの対象である分散されたデータを指定する情報を、分散されたデータを記憶する各データ処理装置の座標を記憶するマスタに送信して、マスタからデータを記憶する各データ処理装置の座標を受信し、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成する座標取得処理、および、読み込み対象である分散されたデータを指定する情報をマスタに送信して得たリストに含まれる座標とクライアント装置の座標との距離に基づいて、読み込み先となるデータ処理装置を決定する読み込み先決定処理を実行させることを特徴とする。
【００２９】
また、本発明によるデータアクセス用プログラムは、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置にアクセスするコンピュータに搭載されるデータアクセス用プログラムであって、コンピュータに、所定の装置との通信遅延の計測結果から、多次元の実座標であって自装置のコンピュータネットワークにおける位置を表す座標を決定する座標決定処理、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分だけ、データ処理装置を決定するアクセス先決定処理、および、決定された各データ処理装置に対して、分散されたデータの読み込みまたは書き込みを行うアクセス処理を実行させることを特徴とする。
【発明の効果】
【００３０】
本発明によれば、読み込みや書き込みの応答時間を短くすることができ、ネットワークの輻輳を少なく抑えることができる。また、既存のシステムに容易に導入することができる。
【発明を実施するための最良の形態】
【００３１】
実施形態１．
以下に示す第１の実施形態では、データの書き込み時に１つのデータから複製された各データを複数のデータ管理サーバに書き込み場合を例にする。この場合、同一内容のデータが各データ管理サーバに記憶される。また、データ書き込み時には、データを複製して冗長化する場合における冗長数（換言すれば複製の結果得られたデータの総数）が、書き込みに関する充足定数となる。また、このデータを読み込む場合には、全てのデータを読み込む必要はなく１台のデータ管理サーバから読み込めばよいので、読み込みに関する充足定数は１である。充足定数は、書き込みまたは読み込みの対象となるデータ管理サーバの台数である。
【００３２】
図１は、本発明のデータアクセスシステムの第１の実施形態を示すブロック図である。第１の実施形態のデータアクセスシステムは、マスタ３３０と、データアクセスクライアント３２０と、データ管理サーバ３１１〜３１８とを備える。マスタ３３０、データアクセスクライアント３２０およびデータ管理サーバ３１１〜３１８は、いずれもプログラム制御により動作するコンピュータ（中央処理装置、プロセッサ、データ処理装置）である。データ管理サーバは１台以上設けられ、以下、複数のデータ管理サーバが設けられる場合を例にして説明する。
【００３３】
なお、図１に示す例では、データ管理サーバ３１１，３１２はデータセンタ３０１のラック３０３に配置され、データ管理サーバ３１３〜３１５は、データセンタ３０１の別のラック３０４に配置されている。また、データ管理サーバ３１６〜３１８は、他のデータセンタ３０２のラック３０５に配置されている。
【００３４】
マスタ３３０は、分散されたデータを記憶するデータ管理サーバ３１１〜３１８とは別に設けられ、各データ管理サーバ３１１〜３１８のコンピュータネットワークにおける座標を記憶する。マスタ３３０は、アドレス格納部３３１と、座標格納部３３２と、アドレス応答手段３３３とを備える。各データ管理サーバ３１１〜３１８のコンピュータネットワークにおける座標は、多次元の実座標（実数の座標）として求められる。
【００３５】
アドレス格納部３３１は、データ名に対応付けて、そのデータを保持している各データ管理サーバのアドレスを記憶する記憶手段である。アドレス格納部３３１には、予めデータ名とアドレスとの対応関係を記憶させておく。例えば、データ名から求められるハッシュ値の範囲とアドレスとの対応関係を記憶させておく。座標格納部３３２は、各データ管理サーバ３１１〜３１８の座標を記憶する記憶手段である。アドレス応答手段３３３は、アクセス要求されるデータについて、そのデータを有しているデータ管理サーバのアドレスを、アドレス格納部３３１から複数取得し、その取得されたアドレス毎に、データ管理サーバの座標を座標格納部３３２に問い合わせる。そして、アドレス応答手段３３３は、得られたデータ管理サーバのアドレスと座標との各組を座標の要求元（データアクセスクライアント）に返す。アドレス応答手段３３３は、例えば、データ名が与えられた場合、そのデータ名のハッシュ値を求め、そのハッシュ値に応じたアドレスを特定し、そのアドレスを持つデータ管理サーバの座標を読み込む。アドレス応答手段３３３は、例えば、プログラムに従って動作するＣＰＵによって実現される。
【００３６】
データアクセスクライアント３２０は、分散されたデータの読み込みまたは書き込みの要求元となる装置である。データアクセスクライアント３２０は、座標格納部３２１と、座標算出手段３２２と、アクセス先決定手段３２３と、データアクセス手段３２４とを備える。
【００３７】
座標格納部３２１は、データアクセスクライアント３２０自身の多次元実数座標を記憶する記憶手段である。
【００３８】
座標算出手段３２２は、計測用サーバ３３９，３４０等の、コンピュータネットワーク内における他の所定の装置に対してメッセージを送信し、その所定の装置との通信遅延（所定の装置との間の通信において生じる遅延時間）に基づいて、データアクセスクライアント３２０の座標を算出し、座標格納部３２１に記憶させる。ここでは、所定の装置からの応答待ち時間（所定の装置にメッセージを送信して所定の装置から応答が帰ってくるまでの時間）を通信遅延として用いる場合を例にして説明するが、通信遅延は応答待ち時間に限定されず、応答待ち時間以外の値であってもよい。この方法は、特定の計測用サーバを用いない分散型の座標算出方法Ｖｉｖａｌｄｉや、計測用サーバを用いた座標算出方法であって、計測結果に対して多次元尺度構成法（ＭＤＳ）を用いるＶｉｒｔｕａｌ  Ｌａｎｄｍａｒｋｓ等であってよい。
【００３９】
計測用サーバ３３９，３４０は、他の装置からのメッセージを受けると、メッセージへの応答をその装置に送信する。計測用サーバ３３９，３４０の数は２台に限定されない。座標算出手段３２２は、具体的には、各計測用サーバ３３９，３４０にメッセージを送信してから応答を受信するまでの時間（応答待ち時間）に基づいて座標を決定し、その座標を座標格納部３２１に記憶させる。複数の計測用サーバからの応答待ち時間をそれぞれ座標値として座標を定めてもよいが、得られた応答待ち時間のデータに対して、次元圧縮を行うことが好ましい。例えば、計測用サーバが５台ある場合、（１０，９０，３０，５０，１００）等の５次元データが得られるが、この結果に対して、修正分分析（ＰＣＡ：Principal Component Analysis）や、他次元尺度構成（ＭＤＳ：Multi Dimensional Scaling ）を用いて、３次元座標を算出してもよい。
【００４０】
このような、次元圧縮は、非特許文献３に記載された方法で行ってもよい。非特許文献３に記載の方法では、予め個々の計測用サーバが、それぞれ他の計測用サーバからの応答待ち時間を測定し、その結果を行列Ｄで表わす。例えば、計測用サーバが４台存在し、１台目の計測用サーバにおける各計測用サーバに対する測定結果がベクトル（０，１，３，３）で表わされると、Ｄの第１行はこのベクトルで表わされる。同様に、ｎ台目の計測用サーバにおける計測結果を示すベクトルを行列Ｄの第ｎ行として、行列Ｄを表せばよい。座標算出手段３２２は、行列Ｄに対するＳＶＤ（Singular Value Decomposition）分解を行い、Ｄ＝ＵＷＶＴの形式で表わす。ＳＶＤ分解により得られる所定の行列Ｕのうち、予め定められた次元数分の列を取り出した行列をＵｎとすると、このＵｎが次元圧縮変換に用いる行列となる。すなわち、座標算出手段３２２は、４台の計測用サーバ毎に応答待ち時間を計測し、その結果、４次元ベクトルｄを得たとすると、以下に示す式（１）の計算を行うことによって、自身の座標ｃを算出すればよい。
【００４１】
ｃ＝ＵｎＴｄ          式（１）
【００４２】
通信遅延（本例では応答待ち時間）は実数として得られ、通信遅延を用いて上記のように求めた座標は実数の座標（実座標）となる。
【００４３】
アクセス先決定手段３２３は、まず、読み込みや書き込みの対象となるデータのデータ名に対応するデータ管理サーバおよびその座標をマスタ３３０に問い合わせる。そして、得られた座標のリストを作成し、その中から、座標格納部３２１に記憶されるデータアクセスクライアント３２０自身の座標との距離が最も小さいデータ管理サーバを選択する。また、それ以外のデータ管理サーバのアドレスともにリストに含める。
【００４４】
データアクセス手段３２４は、データに対する読み込みあるいは書き込みの要求が発生すると、そのデータ名に応じたアクセス先をアクセス先決定手段３４４に問い合わせ、データアクセスクライアント自身が直接アクセスすべきデータ管理サーバのアドレスと、その他のデー-タ管理サーバのアドレスと座標を受け取る。そして、データアクセス手段３２は、その直接アクセスすべきデータ管理サーバ３１１に対して、データの書き込みあるいは読み込みを要求する。
【００４５】
データアクセスクライアント３２０の座標算出手段３２２、アクセス先決定手段３２３およびデータアクセス手段３２４は、例えば、プログラムに従って動作するＣＰＵによって実現される。プログラムがデータアクセスクライアント３２０の記憶装置に記憶され、ＣＰＵがそのプログラムを読み込んで、座標算出手段３２２、アクセス先決定手段３２３およびデータアクセス手段３２４として動作する。
【００４６】
各データ管理サーバは同様の構成であり、データ管理サーバ３１１を例にして、データ管理サーバの構成を説明する。データ管理サーバ３１１は、データ格納部３４１と、座標格納部３４２と、座標算出手段３４３と、アクセス先決定手段３４４と、データ管理手段３４５とを備える。
【００４７】
データ格納部３４１は、データ３５０を格納する記憶手段である。図１に示す例では、データ管理サーバ３１４およびデータ管理サーバ３１７のデータ格納部（図示せず）にも同じ情報のデータ３５１およびデータ３５２が格納されている。すなわち、本例では、複製によって冗長化された同じデータ３５０〜３５２が、３台のデータ管理サーバ３１１，３１４，３５２に分散されている。データ管理サーバに分散され、それぞれのデータ管理サーバのデータ格納部に記憶されたデータは、他のデータ管理サーバが読み込みを行ったり、書き込みを行ったりすることが可能なデータである。
【００４８】
座標格納部３４２は、コンピュータネットワーク内でのデータ管理サーバ３１１自身の位置を表す多次元実数座標を記憶する記憶装置である。
【００４９】
座標算出手段３４３は、コンピュータネットワーク内における他の所定の装置（各計測サーバ３３９，３４０）にメッセージを送信し、その応答待ち時間に基づいてデータ管理サーバ３１１自身の座標を算出し、座標格納部３４２に記憶させる。座標算出手段３４３が、自装置の座標を算出する処理は、データアクセスクライアント３２０の座標算出手段３２２と同様である。
【００５０】
また、座標算出手段３４３は、算出したデータ管理サーバ３１１の座標をマスタ３３０に送信する。マスタ３３０は、データ管理サーバから、新たに算出されたそのデータ管理サーバの座標を受信すると、その座標を座標格納部３３２に記憶させる。この結果、マスタ３３０の座標格納部３３２には、各データ管理サーバの座標が記憶される。
【００５１】
アクセス先決定手段３４４は、書き込みの際に利用される。アクセス先決定手段３４４は、データの書き込み対象となるデータ管理サーバのリストに含まれる他のデータ管理サーバの座標と、座標格納部３４２に記憶された自装置（ここではデータ管理サーバ３１１）の座標とから、他の各データ管理サーバまでの距離を求め、最も距離が短い他のデータ管理サーバを決定する。
【００５２】
データ管理手段３４５は、データアクセスクライアント３２０や他のデータ管理サーバから、データの書き込み要求を受信した場合、そのデータをデータ格納部３５０に記憶させる。また、データ管理手段３４５は、アクセス先決定手段３４４に決定された最も近傍のデータ管理サーバにデータの書き込み要求を送信する。また、データ管理手段３４５は、データの読み込み要求を受信した場合、そのデータをデータ格納部３５０から読み込み、要求元のデータアクセスクライアント３２０に送信する。
【００５３】
データ管理サーバ３１１の座標算出手段３４３、アクセス先決定手段３４４およびデータ管理手段３４５は、例えば、プログラムに従って動作するＣＰＵによって実現される。プログラムがデータ管理差サーバ３１１の記憶装置に記憶され、ＣＰＵがそのプログラムを読み込んで、座標算出手段３４３、アクセス先決定手段３４４およびデータ管理手段３４５として動作する。
【００５４】
次に、動作について説明する。
まず、データ読み込み時の動作について説明する。図２は、データ読み込み時の処理経過の例を示す説明図である。データアクセスクライアント３２０のデータアクセス手段３２４にて、特定のデータ名のデータに対する読み込み要求が発生すると、アクセス先決定手段３２３は、そのデータ名に対応するデータ管理サーバのアドレスおよび座標をマスタ３３０に問い合わせ、データ名に対応するデータ管理サーバのリストを作成する（ステップＳ４０１）。具体的には、アクセス先決定手段３２３は、データ名をマスタ３３０に送信し、マスタ３３０からそのデータ名に対応するデータ管理サーバのアドレスおよび座標の組を受信し、受信したアドレスおよび座標の組のリストを作成する。このリストは、データの読み込み先の候補となるデータ管理サーバのリストである。また、このとき、マスタ３３０のアドレス応答手段３３３は、アクセス先決定手段３２３からデータ名を受信すると、そのデータ名に対応するデータ管理サーバのアドレスをアドレス格納部３３１から読み込み、また、そのデータ管理サーバのアドレスを座標格納部３３２から読み込み、データ管理サーバ毎のアドレスおよび座標の組をデータアクセスクライアント３２０に送信すればよい。
【００５５】
次に、データアクセスクライアント３２０のアクセス先決定手段３２３は、ステップＳ４０1で作成されたリストに、データ管理サーバのアドレスおよび座標の組が含まれているか否かを判定する（ステップＳ４０２）。含まれていなければ（ステップＳ４０２におけるＮｏ）、読み込み先が存在しないため、異常終了とする。
【００５６】
リストに、データ管理サーバのアドレスおよび座標の組が含まれていれば（ステップＳ４０２におけるＹｅｓ）、アクセス先決定手段３２３は、リストに含まれている各座標と、座標格納部３２１に記憶されているデータアクセスクライアント３２０自身の座標との距離を計算し、データアクセスクライアント３２０に最も近いデータ管理サーバを選択する（ステップＳ４０３）。具体的には、データアクセスクライアント３２０の座標と最も近距離の座標およびその座標と組をなすアドレスを選択すればよい。座標間の距離を計算する場合には、座標間のユークリッド距離を計算すればよい。
【００５７】
次に、データアクセス手段３２４は、ステップＳ４０３で選択されたアドレスのデータ管理サーバからデータを読み込む（ステップＳ４０４）。このとき、データアクセス手段３２４は、読み込み対象のデータ名を、選択されたアドレスのデータ管理サーバに送信することによって、そのデータ名を持つデータを要求すればよい。このデータ名を受信したデータ管理サーバのデータ管理手段３４５は、データ格納部３４１からデータを読み込み、そのデータをデータアクセスクライアント３２０に送信する。
【００５８】
データアクセスクライアント３２０のデータアクセス手段３２４は、データ管理サーバからデータの受信に成功したならば、正常に読み込みが完了し、処理を終了する。一方、データ名を送信したデータ管理サーバからデータを受信できなかった場合、アクセス先決定手段３２３は、そのデータ管理サーバの座標およびアドレスをリストから削除し（ステップＳ４０６）、その後、ステップＳ４０２以降の処理を繰り返す。
【００５９】
次に、データ書き込み時の動作について説明する。図３は、データ書き込み時の処理経過の例を示す説明図である。データアクセス手段３２４にて、特定のデータ名に対する書き込み要求が発生すると、そのデータ名に対応するデータ管理サーバのアドレスおよび座標をマスタ３３０に問い合わせ、データ名に対応するデータ管理サーバのリストを作成する（ステップＳ５０１）。ステップＳ５０１では、ステップＳ４０１と同様に、データ名をマスタ３３０に送信し、マスタ３３０からそのデータ名に対応するデータ管理サーバのアドレスおよび座標の組を受信し、受信したアドレスおよび座標の組のリストを作成する。このリストは、データの書き込み先の候補となるデータ管理サーバのリストである。ステップＳ５０1におけるマスタ３３０の動作は、ステップＳ４０１と同様である。
【００６０】
次に、アクセス先決定手段３２３は、リストに含まれている各座標と、座標格納部３２１に記憶されているデータアクセスクライアント３２０自身の座標との距離を計算し、データアクセスクライアント３２０に最も近いデータ管理サーバを選択する（ステップＳ５０２）。ステップＳ５０２の動作は、ステップＳ４０２と同様であり、データアクセスクライアント３２０の座標と最も近距離の座標およびその座標と組をなすアドレスを選択すればよい。
【００６１】
次に、データアクセス手段３２４は、ステップＳ５０２で選択されたアドレスのデータ管理サーバに書き込み要求を送信する（ステップＳ５０３）。データアクセス手段３２４は、例えば、選択されたアドレスのデータ管理サーバに書き込み対象データ送信することによって、その書き込み対象データの書き込みを要求する。また、このとき、データアクセス手段３２４は、データの書き込み先の候補となるデータ管理サーバのリストも書き込み対象データと合わせて、選択されたデータ管理サーバに送信する。ここでは、選択されたデータ管理サーバ３１１である場合を例にする。
【００６２】
データ管理サーバ３１１のデータ管理手段３４５は、データアクセスクライアント３２０から書き込み対象データおよびリストを受信すると、その書き込み対象データをデータ格納部３５０に記憶させる（ステップＳ５０４）。
【００６３】
次に、データ管理サーバ３１１のアクセス先決定手段３４４は、データアクセスクライアント３２０から受信したリストの中から、自装置（データ管理サーバ３１１）の座標およびアドレスの組を削除し、リストに残っている各座標と、座標格納部３４２に記憶されているデータ管理サーバ３１１自身の座標との距離を計算し、データ管理サーバ３１１に最も近いデータ管理サーバを選択する（ステップＳ５０５）。具体的には、データ管理サーバ３１１の座標と最も近距離の座標およびその座標と組をなすアドレスを選択すればよい。この場合も、座標間の距離として、ユークリッド距離を計算すればよい。
【００６４】
次に、データ管理手段３４５は、ステップＳ５０５で選択されたアドレスのデータ管理サーバに書き込み要求を送信する（ステップＳ５０６）。ステップＳ５０６では、ステップＳ５０３と同様に、選択されたデータ管理サーバに書き込み対象データを送信することにより、その書き込み対象データの書き込みを要求すればよい。また、データ管理サーバ３４５は、自装置の座標およびアドレスが除かれたリストも、書き込み対象データと合わせて、選択されたデータ管理サーバに送信する。
【００６５】
この書き込み対象データおよびリストを受信したデータ管理サーバは、ステップＳ５０４〜Ｓ５０６の処理を行う。この結果、書き込み対象データは、リストに示される各データ管理サーバに順に送信され、その各データ管理サーバに記憶される。
【００６６】
また、アクセス先決定手段３４４は、リストから自装置の座標およびアドレスを削除した後、リストに座標が残っていなければ、その時点で処理を終了する。
【００６７】
本実施形態によれば、データ管理サーバおよびデータアクセスクライアントが、所定の計測サーバ３３９，３４０からの応答待ち時間に基づいて、コンピュータネットワークにおける自装置の座標を算出する。そして、読み込み時には、読み込み対象データを記憶しているデータ管理サーバのうち、最も近距離のデータ管理サーバを座標に基づいて特定し、そのデータ管理サーバからデータの読み込みを行う。また、書き込み時には、データを書き込むデータ管理サーバのリストの中から自装置と最も近距離のデータ管理サーバを選択し、そのデータ管理サーバに書き込み要求を行い、データを記憶したデータ管理サーバも同様の処理を行って、書き込むべきデータを順次、受け渡していく。このように、実際に計測した応答待ち時間に基づく座標から他の装置との距離を計算し、距離の短いデータ管理サーバを選択して読み込みや書き込みを行う。非特許文献１に記載された方法のようにアドレスが近い装置を選択してデータアクセスする場合には、アドレスが類似していても実際には応答速度が遅い場合があったが、本発明においては距離の近さと実際の応答速度との速さに相関関係があるので、データアクセスの応答速度を高速化することができる。また、スイッチやルータを多段に経由したデータ転送を減らすことができるので、データアクセス時のネットワークの輻輳の発生を少なくすることができる。
【００６８】
また、ネットワークのアドレスの類似性ではなく、実際に計測した応答待ち時間に基づく座標間の距離から近傍のデータ管理サーバを判定するので、本発明のデータアクセスシステムの導入のためにコンピュータネットワークにおけるアドレス体系を変更したり再設計したりする必要がない。従って、既存のシステムへの導入が容易である。
【００６９】
実施形態２．
以下に示す実施形態では、予め定められた数の冗長数で分散される同一形式のデータを複数のデータ管理サーバが記憶する場合を例にして説明する。ただし、以下に示す例では、データ毎に読み込みに関するＱｕｏｒｕｍ数および書き込みに関するＱｕｏｒｕｍ数が定められている。Ｑｕｏｒｕｍ数は、充足定数である。従って、冗長数分のデータが複数のデータ管理サーバに分散管理されていても、読み込みを行う場合には、全てのデータを読み込む必要はなく、Ｑｕｏｒｕｍ数分のデータを読み込んだ時点で読み込みを終了する。また、書き込みを行う場合には、冗長数分のデータ管理サーバに全てデータを書き込む必要はなく、Ｑｕｏｒｕｍ数分のデータ管理サーバに対して書き込みを行った時点で書き込みを終了する。また、以下に示す例では、データ書き込み時には、データのバージョンを更新する。
【００７０】
図４は、本発明のデータアクセスシステムの第２の実施形態を示すブロック図である。第２の実施形態のデータアクセスシステムは、データ管理サーバ６１１〜６１９と、データアクセスクライアント６２０とを備える。データ管理サーバ６１１〜６１９およびデータアクセスクライアント６２０は、いずれもプログラム制御により動作するコンピュータ（中央処理装置、プロセッサ、データ処理装置）である。データ管理サーバは１台以上設けられ、以下、複数のデータ管理サーバが設けられる場合を例にして説明する。
【００７１】
各データ管理サーバは同様の構成であり、データ管理サーバ６１１を例にして、データ管理サーバの構成を説明する。データ管理サーバ６１１は、データ格納部６４１と、アドレス格納部６４２と、座標格納部６４３と、座標算出手段６４４と、アクセス先決定手段６４５と、データ管理手段６４６とを備える。
【００７２】
データ格納部６４１は、分散されたデータ６５０を記憶する記憶手段である。また、図１に示す例では、冗長数が４であり、データ６５０と同じ情報のデータ６５１〜６５３が、それぞれデータ管理サーバ６１２〜６１４のデータ格納部（図示せず）に記憶されている。これらのデータ６５０〜６５３は、同一のデータ名の同一形式のデータであり、複数のデータ管理サーバに分散されている。
【００７３】
なお、データ管理サーバには、ネットワークにおいてメッセージを到達させるＩＰアドレスの他に、予め大きさの定まったアドレス空間６００の中で一意に定められた論理アドレスが割り当てられている。データ管理サーバに割り当てられた論理アドレスに基づいて、そのデータ管理サーバに格納されるべきデータのデータ名が決まる。
【００７４】
アドレス格納部６４２は、他のデータ管理サーバのメッセージ転送用のＩＰアドレスと、論理アドレスとを記憶する記憶手段である。座標格納部６４３は、各データ管理サーバのコンピュータネットワークにおける座標を記憶する記憶手段である。共通のデータ管理サーバのＩＰアドレスと論理アドレスと座標は関連付けて記憶されている。関連付けられたＩＰアドレス、論理アドレスおよび座標の組の集合は、ＩＰアドレス、論理アドレスおよび座標の対応関係を表すテーブルとなる。
【００７５】
また、ＩＰアドレスと論理アドレスとを対応付けて記憶していることにより、データ名から求められるハッシュ値の範囲と、その範囲に応じたデータ管理サーバ（ＩＰアドレス）とを対応づけていることになる。例えば、図４に示すテーブル６０１を記憶しているとすると、ハッシュ値の範囲（１５００，１９５３］とＩＰアドレス「１０．１．１．１」とが対応付けられている。そして、データ名から求めたハッシュ値が（１５００，１９５３］の範囲に含まれるデータは、ＩＰアドレス「１０．１．１．１」のデータ管理サーバに記憶されることを意味する。
【００７６】
このような、各データ管理サーバは、全てのハッシュ値の範囲について、ハッシュ値の範囲とデータ管理サーバおよびその座標の対応関係を記憶していてもよい。あるいは、各データ管理サーバは、テーブル６０１のエントリを一定数記憶するだけでもよい。すなわち、一部のハッシュ値の範囲について、ハッシュ値の範囲とデータ管理サーバおよびその座標の対応関係を記憶していてもよい。一部のハッシュ値の範囲における対応関係を管理する場合、Ｃｈｏｒｄ等の分散ハッシュテーブル（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｈａｓｈ  Ｔａｂｌｅ：ＤＨＴ）のアルゴリズムに基づき、各データ管理サーバがＣｏｏｒｄｉｎａｔｏｒとなるデータ管理サーバを決定すればよい。例えば、Ｃｈｏｒｄでは、各ノードが持っている自ノードの論理アドレスから近いハッシュ値範囲については、ハッシュ値の範囲を細かく区切ってデータ管理サーバと対応付け、自ノードの論理アドレスから遠いハッシュ値範囲については、範囲を粗く区切ってデータ管理サーバと対応付ける。データ名を指定したメッセージは、そのデータ名のハッシュ値に対応するデータ管理サーバに転送されていくことにより、最終的に、そのハッシュ値に対応するデータ管理サーバに転送される。このデータ管理サーバがＣｏｏｒｄｉｎａｔｏｒである。Ｃｏｏｒｄｉｎａｔｏｒとは、ハッシュ値をアドレス空間のサイズで除した値に対応するデータ管理サーバである。Ｃｏｏｒｄｉｎａｔｏｒが記憶するデータのデータ名のハッシュ値をＨとし、アドレス空間のサイズをＳとすると、「Ｈ mod Ｓ 」の値の範囲とＣｏｏｒｄｉｎａｔｏｒが対応している。従って、データ名によってＣｏｏｒｄｉｎａｔｏｒを定めることができる。
【００７７】
座標算出手段６４４は、コンピュータネットワーク内における他の所定の装置（各計測サーバ６４０，６４１）にメッセージを送信し、その応答待ち時間に基づいてデータ管理サーバ６１１自身の座標を算出し、座標格納部６４３に記憶させる。座標算出手段６４４が、自装置の座標を算出する処理は、第１の実施形態における座標算出処理と同様である。
【００７８】
また、座標算出手段６４４は、データ管理サーバ６１１のＩＰアドレスおよび論理アドレスをアドレス格納部のエントリとして記憶する他のデータ管理サーバに送信する。データ管理サーバ６１１からその座標を受信した他のデータ管理サーバは、データ管理サーバ６１１のエントリと対応づけてその座標を座標格納部６４３に記憶させる。データ管理サーバ６１１も他のデータ管理サーバの座標を受信した場合も同様である。
【００７９】
自装置のＩＰアドレスおよび論理アドレスをエントリとして持つデータ管理サーバは、以下のように判定すればよい。各データ管理サーバを含むアドレス空間はリング状になっていて、Ｃｏｏｒｉｎａｔｏｒからリングの一定方向に並んでいる冗長数分のデータ管理サーバ（Ｃｏｏｒｄｉｎａｔｏｒを含む）のデータ管理サーバは、分散されたデータを記憶する。そして、Ｃｏｏｒｄｉｎａｔｏｒのアドレス格納部６４２には、予め同じデータを記憶する他のデータ管理サーバのＩＰアドレスおよび論理アドレスを記憶させておく。この場合、Ｃｏｏｒｄｉｎａｔｏｒと同じデータを記憶する他のデータ管理サーバは、Ｃｏｏｒｄｉｎａｔｏｒに自装置の座標を送信する。Ｃｏｏｒｄｉｎａｔｏｒは、同じデータを記憶する他のデータ管理サーバに死活監視メッセージを送信する。死活監視メッセージを受信したデータ管理サーバの座標算出手段６４４は、死活監視メッセージの送信元のデータ管理サーバに対して自装置の座標を送信すればよい。また、死活監視メッセージの受信時に、その応答とともに自装置の座標を送信してもよい。
【００８０】
なお、各データ管理サーバが全てのハッシュ値の範囲に関する対応関係を保持する場合には、自装置の座標をブロードキャスト送信すればよい。
【００８１】
アクセス先決定手段６４５は、データ管理手段６４６がデータアクセスクライアントからデータの読み込み要求または書き込み要求を受け付けると、アドレス格納部６４２および座標格納部６４３を参照し、そのデータのデータ名のハッシュ値からそのデータが格納されている複数のデータ管理サーバの座標を列挙する。そして、それらの座標の中から、自装置（本例ではデータ管理サーバ６１１）の座標に近い順に、必要数（読み込みＱｕｏｒｕｍ数または書き込みＱｕｏｒｕｍ数）のデータ管理サーバを特定し、そのデータ管理サーバの座標のリストを作成する。
【００８２】
データ管理手段６４６は、データアクセスクライアントからデータの読み込み要求または書き込み要求を受け付ける。そして、その要求に応じて、データ格納部６５０に格納された、データ名に対応するデータ６５０の読み込みあるいは書き込みを行う。また、読み込み要求されたデータに対して予め定められた読み込みに関するＱｕｏｒｕｍ数（以下、読み込みＱｕｏｒｕｍ数）が２以上である場合、自装置以外のデータ管理サーバからも読み込みを行うため、読み込みＱｕｏｒｕｍ数分のデータ管理サーバの座標のリストをアクセス先決定手段６４５に作成させる。同様に、書き込み要求されたデータに対して予め定められたＱｕｏｒｕｍ数（以下、書き込みＱｕｏｒｕｍ数）が２以上である場合、自装置以外のデータ管理サーバにも読み込みを行うため、書き込みＱｕｏｒｕｍ数分のデータ管理サーバの座標のリストをアクセス先決定手段６４５に作成させる。データ管理手段６４６は、そのリストに含まれる各データアクセス装置に対してデータの読み込みまたは書き込みを行う。
【００８３】
なお、読み込みＱｕｏｒｕｍ数および書き込みＱｕｏｒｕｍ数は、予めデータの種別毎に、スキーマ等の形で全てのデータ管理サーバあるいは、書き込みおよび読み込みを行う各データ管理サーバ（Ｃｏｏｒｄｉｎａｔｏｒ）に与えられる。各データ管理サーバは、予め与えられた読み込みＱｕｏｒｕｍ数および書き込みＱｕｏｒｕｍ数を記憶しておけばよい。
【００８４】
また、読み込みＱｕｏｒｕｍ数は、例えば、冗長数の１／２よりも大きな数として定めておく。また、読み込みＱｕｏｒｕｍ数は、例えば、冗長数と書き込みＱｕｏｒｕｍ数との差よりも大きな数として定めておく。
【００８５】
データ管理サーバ６１１の座標算出手段６４４、アクセス先決定手段６４５、データ管理手段６４６は、例えば、プログラムに従って動作するＣＰＵによって実現される。プログラムがデータ管理サーバ６１１の記憶装置に記憶され、ＣＰＵがそのプログラムを読み込んで、座標算出手段６４４、アクセス先決定手段６４５およびデータ管理手段６４６として動作する。
【００８６】
データアクセスクライアント６２０は、アドレス格納部６２１と、データアクセス手段６２２とを備える。図４では、図示を省略しているが、データアクセスクライアント６２０は、第１の実施形態におけるデータアクセスクライアント３２０（図１参照）と同様に、自装置の座標を算出する座標算出手段を備える。
【００８７】
アドレス格納部６２１は、データアクセスクライアント６２０自身の多次元実数座標を記憶する記憶手段である。データアクセスクライアント６２０の座標算出手段（図示せず）は、他の所定の装置（計測サーバ６４０，６４１）からの応答待ち時間を用いて、データアクセスクライアント自身の座標を計算し、その座標をアドレス格納部６２１に記憶させる。
【００８８】
また、アドレス格納部６２１は、全てのハッシュ値の範囲について、ハッシュ値の範囲とデータ管理サーバおよびその座標の対応関係を記憶する。例えば、各データ管理サーバのＩＰアドレスと論理アドレスの対応関係を、テーブル６０１と同様に記憶しておけばよい。ただし、データ管理サーバの座標は記憶していなくてよい。
【００８９】
データアクセス手段６２１は、データに対する読み込みあるいは書き込みの要求が発生すると、そのデータのデータ名についてのＣｏｏｒｄｉｎａｔｏｒとなるデータ管理サーバを決定する。そして、Ｃｏｏｒｄｉｎａｔｏｒに決定したデータ管理サーバにデータの読み込みまたは書き込みを要求する。
【００９０】
データアクセス手段６２１は、データ名のハッシュ値を論理アドレス空間のサイズで除した値が属する範囲に応じたＩＰアドレスを特定することによってＣｏｏｒｄｉｎａｔｏｒを決定すればよい。例えば、図４に示すテーブル６０１に示す論理アドレス（例えば「１５００」等）とＩＰアドレス（例えば「１０．９．１０．８１」等）との対応関係がアドレス格納部６２１に記憶されているとする。図４に示す例では、例えば、（１５００：１９５３］というハッシュ値の範囲はＩＰアドレス「１０．１．１．１」に対応づけられる。
【００９１】
データ名「／ｆｏｏ」のハッシュ値を論理アドレス空間のサイズで除した値が１８００であったとする。この値は、（１５００：１９５３］の範囲に属するので、データ名「／ｆｏｏ」についてのＣｏｏｒｄｉｎａｔｏｒは、ＩＰアドレスが１０．１．１．１であるデータ管理サーバ６１１であると決定される。データアクセス手段６２１は、このようにして決定したＣｏｏｒｄｉｎａｔｏｒに、データ名「／ｆｏｏ」のデータの読み込みまたは書き込みを要求する。
【００９２】
次に、動作について説明する。
まず、データ読み込み時の動作について説明する。図５は、データ読み込み時の処理経過の例を示すフローチャートである。データアクセスクライアント６２０のデータアクセス手段６２２にて、特定のデータ名のデータに対する読み込み要求が発生すると、 データアクセス手段６２２は、そのデータ名に応じたＣｏｏｒｄｉｎａｔｏｒを決定する。この決定は、上記のように、データ名のハッシュ値を論理アドレス空間のサイズで除算した値を求め、その値が属する範囲に応じたＩＰアドレスを特定し、そのＩＰアドレスが示すデータ管理サーバをＣｏｏｒｄｉｎａｔｏｒとして決定すればよい。データアクセス手段６２２は、そのＣｏｏｒｄｉｎａｔｏｒに、例えばデータ名を送信することによって、そのデータの読み込みを要求する。以下、図４に示すデータ管理サーバ６１１がＣｏｏｒｄｉｎａｔｏｒである場合を例にして説明する。
【００９３】
読み込み要求を受信したＣｏｏｒｄｉｎａｔｏｒ（データ管理サーバ６１１）のデータ管理手段６４６は、読み込み対象となるデータ名に対応する読み込みＱｕｏｒｕｍ数を取得する（ステップＳ７０１）。例えば、データ名に応じた読み込みＱｕｏｒｕｍ数および書き込みＱｕｏｒｕｍ数との関係を予め、そのデータ名についてのＣｏｏｒｄｉｎａｔｏｒとなるデータ管理サーバに記憶させておき、データ管理手段６４６は、受信したデータ名に対応する読み込みＱｕｏｒｕｍ数を読み込めばよい。
【００９４】
次に、アクセス先決定手段６４５は、要求されたデータを記憶している各データ管理サーバを特定する。アクセス先決定手段６４５は、リング状に接続されている各データ管理サーバのうち、Ｃｏｏｒｄｉｎａｔｏｒであるデータ管理サーバから一方の方向に並んでいる冗長数分のデータ管理サーバを特定し、それらのデータ管理サーバからＱｕｏｒｕｍ数分のデータ管理サーバを特定する（ステップＳ７０２）。ステップＳ７０２では、冗長数分の各データ管理サーバの座標とＣｏｏｒｄｉｎａｔｏｒの座標との距離を求め、その距離が短い順にＱｕｏｒｕｍ数分のデータ管理サーバを選択すればよい。
【００９５】
また、ステップＳ７０２では、データ管理サーバ毎に格納される同一物理収容リストや、実測遅延テーブルを用いて読み込みＱｕｏｒｕｍ数分のデータ管理サーバを決定してもよい。図６は、同一物理収容リストの例を示す説明図である。同一物理収容リストは、通信応答が短いことが予めわかっているデータ管理サーバのリストである。例えば、同一ラックに収容されていたり、同じスイッチに接続されていたりするデータ管理サーバのリストである。図６に示す例は、同一ラックに収容されているデータ管理サーバのリストであり、各データ管理サーバをＩＰアドレスで表している。同一物理収容リストは、個々のデータ管理サーバに人手で予め記憶させておいてもよい。あるいは、個々のデータ管理サーバが、ネットワークトポロジを管理する構成管理システム（図示せず）から同一物理収容リストを取得して記憶しておいてもよい。同一物理収容リストによって、座標間の距離を計算しなくても、通信応答の短いデータ管理サーバを選択することができる。また、図７は、実測遅延テーブルの例を示す説明図である。実測遅延リストは、データ管理サーバが他のデータ管理サーバに過去にアクセスしたときの応答遅延（例えば応答待ち時間）の実測値である。各データ管理サーバは、例えば、他のデータ管理サーバからの応答待ち時間を計測したときに、その計測結果を実測遅延テーブルに追加すればよい。実測遅延リストによって、座標間の距離を計算しなくても、実際に応答時間の短いデータ管理サーバを選択することができる。
【００９６】
図８は、同一物理収容リストや実測遅延テーブルを用いてＱｕｏｒｕｍ数分のデータ管理サーバを決定する動作の例を示すフローチャートである。図８を参照して、Ｑｕｏｒｕｍ数分のデータ管理サーバを特定する処理を説明する。アクセス先決定手段６４５は、アクセス先（ここでは読み込み先）となるデータ管理サーバの候補リスト、および決定リストを初期化し、候補リストおよび決定リストに何も含まれない状態とする（ステップＳ１００１）。アクセス先決定手段６４５は、冗長数分のデータ管理サーバを特定し、そのデータ管理サーバを候補リストに追加する（ステップＳ１００２）。例えば、リング状に接続されている各データ管理サーバのうち、Ｃｏｏｒｄｉｎａｔｏｒであるデータ管理サーバから一方の方向に並んでいる冗長数分のデータ管理サーバを特定すればよい。この結果、候補リストは、冗長数分のデータ管理サーバのリストとなり、この中からＱｕｏｒｕｍ数分のデータ管理サーバが決定される。決定リストは、Ｑｕｏｒｕｍ数分のデータ管理サーバが追加されるリストである。いずれのリストにおいても、データ管理サーバは、例えばＩＰアドレス等を用いて表せばよい。
【００９７】
アクセス先決定手段６４５は、候補リストに含まれるデータ管理サーバ数がＱｕｏｒｕｍ数以上であるか否かを判定し（ステップＳ１００３）、Ｑｕｏｒｕｍ数未満であれば、異常終了とする。データ管理サーバ数がＱｕｏｒｕｍ数以上あれば、アクセス先決定手段６４５は、候補リストに含まれるデータ管理サーバが同一物理収容リスト（図６参照）に含まれているか否かを判定する（ステップＳ１００５）。含まれていなければステップＳ１００７に移行する。含まれていれば、アクセス先決定手段６４５は、候補リストに含まれるデータ管理サーバのうち、同一物理収容リストに含まれているデータ管理サーバを決定リストに追加し、そのデータ管理サーバを候補リストから削除する（ステップＳ１００５）。ただし、決定リストに含めるデータ管理サーバ数の上限はＱｕｏｒｕｍ数である。
【００９８】
次に、アクセス先決定手段６４５は、決定リストに含まれるデータ管理サーバ数がＱｕｏｒｕｍ数未満であるか否かを判定し（ステップＳ１００６）、Ｑｕｏｒｕｍ数異常であれば、正常に処理を終了する。Ｑｕｏｒｕｍ数未満であれば、アクセス先決定手段６４５は、アクセス先決定手段６４５は、候補リストに含まれる各データ管理サーバと、アクセス元となるＣｏｏｒｄｉｎａｔｏｒとの通信遅延（例えば応答待ち時間）を、座標間の距離として算出する（ステップＳ１００７）。そして、アクセス先決定手段６４５は、実測遅延リストに含まれるデータ管理サーバについては、ステップＳ１００７で算出した距離を、実測値に置き換える（ステップＳ１００８）。次に、アクセス先決定手段６４５は、決定リストに含まれるデータ管理サーバがＱｕｏｒｕｍ数に達する分だけ、距離の短い順に候補リストの中からデータ管理サーバを選択し、そのデータ管理サーバを決定リストに含める（ステップＳ１００９）。このとき、そのデータ管理サーバを候補リストから除外する。
【００９９】
データ読み込み時には、上記のように読み込みＱｕｏｒｕｍ数分のデータ管理サーバを決定すればよい。
【０１００】
この結果、読み込みＱｕｏｒｕｍ数分のデータ管理サーバが決定され、ステップＳ７０２（図５参照）が終了する。ステップＳ７０２の次に、データ管理手段６４６は、ステップＳ７０２で決定された読み込みＱｕｏｒｕｍ分のデータ管理サーバから、データを読み込む（ステップＳ７０３）。このとき、読み込みＱｕｏｒｕｍ分のデータ管理サーバの中には、必ずＣｏｏｒｄｉｎａｔｏｒ自身も含まれるので、データ管理手段６４６は、Ｃｏｏｒｄｉｎａｔｏｒ自身のデータ格納部６４１からデータを読み込む。また、データ管理手段６４６は、他のデータ管理サーバに対して、データアクセスクライアント６２０から要求されたデータを要求する。Ｃｏｏｒｄｉｎａｔｏｒからデータを要求された他のデータ管理サーバのデータ管理手段は、自装置のデータ格納部からデータを読み込み、Ｃｏｏｒｄｉｎａｔｏｒに送信する。
【０１０１】
続いて、データ管理手段６４６は、読み込みＱｕｏｒｕｍ数分のデータ管理サーバからデータを読み込めたか否かを判定する（ステップＳ７０４）。読み込みＱｕｏｒｕｍ数分のデータ管理サーバからデータを読み込めなかった場合（ステップＳ７０４におけるＮＯ）、データ管理手段６４６は、候補リストに残っているデータ管理サーバの中から、読み込みの失敗数分のデータ管理サーバを距離の短い順に選択し（ステップＳ７０６）、ステップＳ７０３以降の処理を繰り返す。
【０１０２】
読み込みＱｕｏｒｕｍ数分のデータ管理サーバからデータを読み込めた場合（ステップＳ７０４におけるＹＥＳ）、データ管理手段６４６は、読み込んだデータのうちの最新のバージョンのデータの値を取得し、データをデータアクセスクライアント６２０に送信する。
【０１０３】
次に、データ書き込み時の動作について説明する。図９は、データ書き込み時の処理経過の例を示すフローチャートである。データアクセスクライアント６２０のデータアクセス手段６２２にて、特定のデータ名のデータに対する書き込み要求が発生すると、データアクセス手段６２２は、そのデータ名に応じたＣｏｏｒｄｉｎａｔｏｒを決定する。そして、書き込むデータをＣｏｏｒｄｉｎａｔｏｒに送信する。なお、Ｃｏｏｒｄｉｎａｔｏｒの決定は、データ読み込み処理の場合と同様に行えばよい。
【０１０４】
書き込み要求を受信したＣｏｏｒｄｉｎａｔｏｒ（ここではデータ管理サーバ６１１とする）のデータ管理手段は、書き込み対象となるデータ名に対応するＱｕｏｒｕｍ数を取得する（ステップＳ７０２）。次に、アクセス先決定手段６４５は、データを書き込むべきデータ管理サーバを書き込みＱｕｏｒｕｍ数分特定する（ステップＳ８０２）。アクセス先決定手段６４５は、Ｃｏｏｒｄｉｎａｔｏｒであるデータ管理サーバから一方の方向に並んでいる冗長数分のデータ管理サーバを特定し、それらのデータ管理サーバからＱｕｏｒｕｍ数分のデータ管理サーバを特定する。そして、冗長数分の各データ管理サーバの座標とＣｏｏｒｄｉｎａｔｏｒの座標との距離を求め、その距離が短い順にＱｕｏｒｕｍ数分のデータ管理サーバを選択すればよい。また、既に説明したように、同一物理収容リストや実測遅延テーブルを用いてステップＳ１００１〜Ｓ１００９の処理を行ってもよい。
【０１０５】
ステップＳ８０２の後、データ管理手段６４６は、ステップＳ７０２で決定された書き込みＱｕｏｒｕｍ分のデータ管理サーバに、データを書き込む（ステップＳ７０３）。このとき、書き込みＱｕｏｒｕｍ分のデータ管理サーバの中には、必ずＣｏｏｒｄｉｎａｔｏｒ自身も含まれるので、データ管理手段６４６は、Ｃｏｏｒｄｉｎａｔｏｒ自身のデータ格納部６４１にデータを書き込む。データを書き込む時には、データのバージョンを更新する。また、データ管理手段６４６は、他のデータ管理サーバに対してデータの書き込みを要求する。Ｃｏｏｒｄｉｎａｔｏｒからデータの書き込みを要求された他のデータ管理サーバは、データのバージョンを更新して、自装置のデータ格納部にデータを書き込む。そして、データの書き込みに成功したか否かをＣｏｏｒｄｉｎａｔｏｒに通知する。
【０１０６】
Ｃｏｏｒｄｉｎａｔｏｒのデータ管理手段６４６は、書き込みＱｕｏｒｕｍ数分のデータ管理サーバに対する書き込みが成功したか否かを判定し（ステップＳ８０４）、成功していれば処理を終了する。失敗している場合、冗長数分のデータ管理サーバの中から、書き込みの失敗数分のデータ管理サーバを距離の短い順に選択し（ステップＳ８０６）、ステップＳ８０３以降の処理を繰り返す。
【０１０７】
本実施形態では、Ｃｏｏｒｄｉｎａｔｏｒが、実際に計測した応答待ち時間に基づく座標間の距離から近傍のデータ管理サーバを判定するので、第１の実施形態と同様に、データアクセスの応答速度を高速化でき、また、ネットワークの輻輳の発生を抑えられる。また、アドレス体系を変更したり再設計したりする必要がなく、既存のシステムへの導入が容易である。また、冗長数分の全てのデータ管理サーバに対して読み込みや書き込みを行う必要がなく、距離の近い充足定数（Ｑｕｏｒｕｍ数）分のデータ管理サーバに対して読み込みや書き込みを行えばよい。従って、充足定数分以上のデータ管理サーバに対する不要な通信量や処理負荷を発生させずに、読み込みや書き込みの応答速度を高速化することができる。
【０１０８】
また、同一形式のデータが分散して記憶されるので、故障時の耐性を高くすることができる。
【０１０９】
実施形態３．
図１０は、本発明のデータアクセスシステムの第３の実施形態を示すブロック図である。第３の実施形態のデータアクセスシステムは、データ管理サーバ１１１１〜１１１９と、データアクセスクライアント１１２０とを備える。各データ管理サーバおよびデータアクセスクライアントは、いずれもプログラム制御により動作するコンピュータである。本実施形態では、Ｃｏｏｒｄｉｎａｔｏｒとなるデータ管理サーバは存在せず、データアクセスクライアントが、各データ管理サーバに対して直接データの読み込みや書き込みを要求する。以下、分散されるデータは、第２の実施形態と同様のデータである場合を例にして説明する。すなわち、読み込みＱｕｏｒｕｍ数および書き込みＱｕｏｒｕｍ数が定められ、データ書き込み時にはデータのバージョンは更新される。
【０１１０】
また、第２の実施形態と同様に、各データ管理サーバには、ＩＰアドレスおよび論理アドレスが割り当てられている。
【０１１１】
各データ管理サーバは同様の構成であり、データ管理サーバ１１１１を例にして、データ管理サーバの構成を説明する。データ管理サーバ１１１１は、データ格納部１１４１と、座標算出手段１１４２と、データ管理手段１１４２とを備える。
【０１１２】
データ格納部１１４１は、分散されたデータ１１５０を記憶する記憶手段である。また、図１０に示す例では、冗長数が４であり、データ１１５０と同じ情報のデータ１１５１〜１１５３が、それぞれデータ管理サーバ１１１２〜１１１４のデータ格納部（図示せず）に記憶されている。これらのデータ１１５０〜１１５３は、同一のデータ名の同一形式のデータである。
【０１１３】
座標算出手段１１４２は、コンピュータネットワーク内における他の所定の装置（各計測サーバ１１４０，１１４１）にメッセージを送信し、その応答待ち時間に基づいてデータ管理サーバ１１１１自身の座標を算出し、その座標をデータアクセスクライアント１１０１に送信する。データアクセスクライアント１１０１は、データ管理サーバから受信した座標を座標格納部１１２２に記憶させる。
【０１１４】
データ管理手段１１４３は、データアクセスクライアント１１２０からの要求に応じて、データ格納部１１５０に記憶されたデータを読み込んでデータアクセスクライアント１１２０に送信したり、データ格納部１１５０にデータを記憶させたりせる。
【０１１５】
座標算出手段１１４２およびデータ管理手段１１４３は、プログラムに従って動作するＣＰＵによって実現される。プログラムがデータ管理サーバ１１１１の記憶装置に記憶され、ＣＰＵがそのプログラムを読み込んで、座標算出手段１１４２およびデータ管理手段１１４３として動作する。
【０１１６】
データアクセスクライアント１１２０は、アドレス格納部１１２１と、座標格納部１１２２と、座標算出手段１１２３と、アクセス先決定手段１１２４と、データアクセス手段１１２５とを備える。
【０１１７】
アドレス格納部１１２１は、各データ管理サーバのＩＰアドレスと論理アドレスを記憶する記憶手段である。座標格納部１１２２は、各データ管理サーバの座標およびデータアクセスクライアント１１２０自身の座標を記憶する記憶手段である。共通のデータ管理サーバのＩＰアドレスと論理アドレスと座標は関連付けて記憶され、第２の実施形態と同様に、データ名からデータ管理サーバを決定することが可能である。
【０１１８】
座標算出手段１１２３は、コンピュータネットワーク内における他の所定の装置（各計測サーバ１１４０，１１４１）にメッセージを送信し、その応答待ち時間に基づいてデータアクセスクライアント１１１１自身の座標を算出し、その座標を座標格納部１１２２に記憶させる。座標算出手段１１２３，１１４２における座標の計算処理は、第１の実施形態と同様である。
【０１１９】
アクセス先決定手段１１２４は、読み込みまたは書き込みの対象となるデータのデータ名からデータ管理サーバを特定する。なお、第２の実施形態と同様に、データ名のハッシュ値から一意に定められるデータ管理サーバからリングの一定方向に順に並ぶ冗長数分の管理サーバが、同じデータを記憶する。アクセス先決定手段１１２４は、データ名のハッシュ値を求め、そのハッシュ値に応じたデータ管理サーバを第２の実施形態と同様に特定する。さらに、そのデータ管理サーバに基づいて冗長数（図１０に示す例では４つ）分のデータ管理サーバを特定すればよい。そして、アクセス先決定手段１１２４は、冗長数分の各データ管理サーバの座標と、データアクセスクライアント１１２０の座標との距離を計算し、距離の短い順にＱｕｏｒｕｍ数のデータ管理サーバを、読み込みまたは書き込みの要求先として決定する。
【０１２０】
データアクセス手段１１２５は、データ読み要求を行う場合、アクセス先決定手段１１２４に決定された読み込みＱｕｏｒｕｍ数分のそれぞれのデータ管理サーバに対してデータの読み込み要求を送信する。そして、各データ管理サーバから受信したデータのうち、最新のバージョンのデータと選択する。また、データアクセス手段１１２５は、データ書き込み要求を行う場合、アクセス先決定手段１１２４に決定された書き込みＱｕｏｒｕｍ数分のそれぞれのデータ管理サーバに対してデータの読み込み要求を送信する。
【０１２１】
本実施形態でも、第２の実施形態と同様の効果が得られる。さらに、本実施形態の構成により、Ｃｏｏｒｄｉｎａｔｏｒ役を担うデータ管理サーバの負荷が減る。また、さらに実際に計測した応答待ち時間から求めた座標を用いたデータアクセス先の選択を行うことで、データアクセスクライアントはＣｏｏｒｄｉｎａｔｏｒを経由する必要がないため、データアクセス元に応じて、より近傍なデータ管理サーバに直接データを取得しに行くことができる。
【０１２２】
なお、上記の各実施形態は、本発明の典型的な実施形態である。アドレスや座標の共有方法は、第１の実施形態のように集中的に管理する共有方法であってもよい。あるいは、第２、第３の実施形態のように分散管理する共有方法であってもよい。
【０１２３】
また、第１の実施形態では、冗長数が書き込みに関する充足定数であり、読み込みに関する充足定数は１である。第１の実施形態において、充足定数として、第２の実施形態等同様の読み込みＱｕｏｒｕｍ数や書き込みＱｕｏｒｕｍ数が定められていてもよい。
【０１２４】
また、上記の各実施形態において、１つのデータを分割して冗長符号化したデータをそれぞれ、関連するデータとして、複数のデータ管理サーバに分散させて記憶させてもよい。１つのデータを分割して冗長符号化したデータブロックの数をＮとすると、Ｎが冗長数となり、Ｎ個のデータブロックをＮ台のデータ管理サーバに記憶させておけばよい。このＮ個のデータブロックの中には、パリティブロックも含める。すなわち、データアクセスクライアントは、分散させるデータを作成するときに、１つのデータを分割すると、その分割したデータブロックから、パリティブロックも作成する。パリティブロックを含むデータブロックの和が上記のＮである。パリティブロックの数は１つに限定されない。この場合、冗長符号化後のデータブロック数Ｎを書き込みＱｕｏｒｕｍ数と定めておけばよい。また、読み込みデータＱｕｏｒｕｍ数は、元のデータを復元可能なデータブロック数と等しい値に定めればよい。読み込み処理時には、データアクセスクライアントが、読み込み要求時にＱｕｏｒｕｍ数分のデータブロックを取得し、そのデータブロックから元のデータを復元すればよい。この場合、一部のデータブロックに障害が発生しても、Ｑｕｏｒｕｍ数分のデータの読み込みを行うことで、元のデータを復元することができる。
【実施例】
【０１２５】
以下、第１の実施形態の実施例を図１１を参照して説明する。ここでは、データアクセスシステムが分散ファイルシステムである場合を例にして説明する。図１１は、分散ファイルシステムが備えるデータ管理サーバの座標の例を示す散布図である。本例では、各データ管理サーバおよびデータアクセスクライアントは、自身の座標を２次元座標として算出するものとする。この場合、２以上の計測用サーバからの応答待ち時間を計測し、得られた各計測結果を２次元に次元圧縮するものとする。図１１に示す２つの座標軸の絶対値には意味がなく、円形の印で表した各データ管理サーバとデータアクセスクライアント間の相対的な位置関係（ユークリッド距離）が通信遅延となる。
【０１２６】
データアクセスクライアント１２０３がデータ名「／ｆｏｏ」のデータに読み込みあるいは書き込みを行う際には、アクセス先決定手段３２４（図１参照）は、マスタ（図１１において図示せず）から、そのデータ名「／ｆｏｏ」に対応するデータ管理サーバとして、データ管理サーバ１２０４〜１２０６のＩＰアドレスおよび座標を取得する。
【０１２７】
次に、データアクセスクライアント１２０３は、直接アクセスするデータ管理サーバを決定するため、マスタから得たデータ管理サーバ１２０４〜１２０６の座標（７３，１２４）、（８０，６０）、（４０，５０）と、データアクセスクライアント自身の座標（７０，１２０）とのユークリッド距離を算出し、５，６１，７６を得る。よって、データアクセスクライアント１２０３は、自装置からのユークリッド距離が５で最短となるデータ管理サーバ１２０４をアクセス先と決定し、データ管理サーバ１２０４に対してデータの読み込みあるいは書き込みを要求する。読み込みを要求する場合、データアクセスクライアント１２０３は、データ管理サーバ１２０４からデータを受信したときに読み込みを終了する。
【０１２８】
書き込みの場合、データ管理サーバ１２０４は、自身のデータ格納部３４１（図１参照）にデータを書き込んだ後、その複製の書き込みを他のデータ管理サーバ１２０５，１２０６のいずれかに要求する。データ管理サーバ１２０４は、各データ管理サーバ１２０５，１２０６の座標と、自身の座標（７３，１２４）との距離を算出し、算出結果として６４，８１を得る。この中で最短となる距離は６４であるので、データ管理サーバ１２０４は、複製先をデータ管理サーバ１２０５に決定し、データ管理サーバ１２０５にデータの書き込みを要求する。データ管理サーバ１２０５は、そのデータを自装置のデータ格納部３４１（図１参照）に書き込み、残りのデータ管理サーバ１２０６にその複製の書き込みを要求する。データ管理サーバ１２０６は、この要求に応じて、データを自身のデータ格納部に書き込む。
【０１２９】
次に、第２の実施形態の実施例を図１２を参照して説明する。ここでは、データアクセスシステムが分散ストレージである場合を例にして説明する。図１２は、第２の実施例における動作の例を示す説明図である。データ名「ｆｏｏ」のデータが、冗長数４でデータ管理サーバにデータが分散格納されており、書き込みＱｕｏｒｕｍ数が３であり、読み込みＱｕｏｒｕｍ数が２であるとする。
【０１３０】
図１２（ａ）は、書き込み時の動作の例を示している。データ名「ｆｏｏ」のハッシュ値を管理するＣｏｏｒｄｉｎａｔｏｒがデータ管理サーバ１３０３であり、Ｃｏｏｒｄｉｎａｔｏｒがデータアクセスクライアント（図１２において図示せず）から値２の書き込み要求を受信しているとする。また、図１２（ａ）に示すデータ１３０７が、データ管理サーバ１３０３〜１３０６に記憶されているとする。この場合、Ｃｏｏｒｄｉｎａｔｏｒであるデータ管理サーバ１３０３は、自身のデータ格納部にデータを書き込む。さらに、データ管理サーバ１３０４〜１３０６のうち、座標空間において距離の近い２つのデータ管理サーバ１３０４，１３０５にデータを書き込む。すると、データ管理サーバ１３０３〜１０３５に記憶されていたデータの値は２に更新され、バージョンが２に更新される。
【０１３１】
図１２（ｂ）は、読み込み時の動作を示している。データ名「ｆｏｏ」のハッシュ値を管理するＣｏｏｒｄｉｎａｔｏｒがデータ管理サーバ１３１３であり、Ｃｏｏｒｄｉｎａｔｏｒがデータアクセスクライアント（図１２において図示せず）から読み込み要求を受信しているとする。また、図１２（ｂ）に示すデータ１３１７が、データ管理サーバ１３１３〜１３１６に記憶されているとする。Ｃｏｏｒｄｉｎａｔｏｒであるデータ管理サーバ１３１３は、自身のデータ格納部からデータを読み込む。また、Ｃｏｏｒｄｉｎａｔｏｒは、データ管理サーバ１３１４〜１３１６のうち、座標空間上で最も近距離にあるデータ管理サーバ１３１４を選択し、そのデータ管理サーバ１３１４からデータを読み込む。この結果得られた２つのデータが、データ１３１７のうち、枠で囲んだ２つであるとする。すると、最新バージョンは２であるため、そのデータの値２を読み込み結果とする。
【０１３２】
次に、第３の実施形態の実施例を図１３を参照して説明する。ここでは、データアクセスシステムが分散ストレージである場合を例にして説明する。図１３は、第３の実施例における動作の例を示す説明図である。本例においても、データ名「ｆｏｏ」のデータが、冗長数４でデータ管理サーバにデータが分散格納されており、書き込みＱｕｏｒｕｍ数が３であり、読み込みＱｕｏｒｕｍ数が２であるとする。
【０１３３】
図１３（ａ）は、書き込み時の動作の例を示している。図１３（ａ）に示すデータ１４０７がデータ管理サーバ１４０３〜１４０６に記憶されているとする。また、データアクセスクライアント１４１０が値２の書き込みを要求するものとする。データアクセスクライアント１４１０は、データ名「ｆｏｏ」のハッシュ値からデータを有しているデータアクセスクライアントを複数選択する。さらに、データアクセスクライアント１４１０は、その各座標と自身の座標との距離を算出し、距離が近い順に３つのデータ管理サーバ１０４３〜１４０４を選択する。データアクセスクライアント１４１０は、その３つのデータ管理サーバ１０４３〜１４０４に値２の書き込み要求を送信する。この結果、データ管理サーバ１０４３〜１４０４に記憶されていたデータの値は２に更新され、バージョンが２に更新される。
【０１３４】
図１３（ｂ）は、読み込み時の動作を示している。データ名「ｆｏｏ」のデータがデータ管理サーバ１４１３〜１４１６に記憶されている。データアクセスクライアント１４１９は、データ名「ｆｏｏ」のハッシュ値からデータを有しているデータアクセスクライアントを複数選択する。データアクセスクライアント１４１９は、その各座標と自身の座標との距離を算出し、距離が近い順に２つのデータ管理サーバ１４１５，１４１６を選択する。データアクセスクライアント１４１９は、その２つのデータ管理サーバ１４１５，１４１６からデータを読み込む。この結果得られた２つのデータが、データ１４１７のうち、枠で囲んだ２つであるとする。すると、最新バージョンは２であるため、そのデータの値２を読み込み結果とする。
【０１３５】
以上のように、分散環境においてデータの堅牢性を維持しつつ、複数ノード間でのデータ共有ができる。
【０１３６】
以下、本発明の概要を説明する。図１４は、本発明の概要を示すブロック図である。本発明のデータアクセスシステムは、１つ以上のデータ処理装置７１（例えば、データ管理サーバ３１１等）を備え、コンピュータネットワークにおけるデータ処理装置の位置を表した多次元の実座標であって、他のデータ処理装置が読み込みまたは書き込みを行うことが可能な分散されたデータを記憶する各データ処理装置の位置を表した座標を記憶する座標記憶手段８５（例えば、マスタ３３０）を備える。各データ処理装置７１は、所定の装置（例えば計測サーバ３９９，３４０）との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定する座標決定手段８１（例えば座標算出手段３４３）と、分散されたデータを記憶するデータ記憶手段８２（例えば、データ格納部３４１）とを備える。また、データアクセスシステムは、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、候補の座標と自装置の座標との距離に基づいて、読み込み先または書き込み先となるデータ処理装置を決定するアクセス先決定手段８３（例えばアクセス先決定手段３４４）を備える。
【０１３７】
そのような構成により、通信遅延の計測結果から求めた座標間の距離に基づいて読み込み先または書き込み先となるデータ処理装置を決定するので、通信応答を短くし、ネットワークの輻輳の発生を少なくすることができる。また、アドレスに依存せずに、読み込み先または書き込み先となるデータ処理装置を決定するので、アドレス体系を変更等せずに、既存のシステムに導入することができる。
【０１３８】
また、上記の実施形態には、座標記憶手段が、分散されたデータを記憶するデータ処理装置とは別に設けられた装置であるマスタ（例えば、マスタ３３０）に備えられ、マスタは、分散されたデータを指定する情報を受信すると、そのデータを記憶する各データ処理装置の座標を出力する応答手段（例えば、アドレス応答手段３３３）を備える構成が開示されている。
【０１３９】
また、上記の実施形態には、分散されたデータの読み込みまたは書き込みの要求元であるクライアント装置（例えば、データアクセスクライアント３２０）を備え、クライアント装置が、所定の装置（例えば、計測サーバ３３９，３４０）との通信遅延の計測結果から自装置のコンピュータネットワークにおける座標を決定するクライアント座標決定手段（例えば、座標算出手段３２２）と、読み込みまたは書き込みの対象である分散されたデータを指定する情報をマスタに送信して、マスタからそのデータを記憶する各データ処理装置の座標を受信し、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストとして、受信した座標のリストを作成する座標取得手段（例えば、アクセス先決定手段３２３）と、座標取得手段が読み込み対象である分散されたデータを指定する情報をマスタに送信して得たリストに含まれる座標と当該クライアント装置の座標との距離に基づいて、読み込み先となるデータ処理装置を決定する読み込み先決定手段（例えば、アクセス先決定手段３２３）とを備える構成が開示されている。
【０１４０】
また、上記の実施形態には、アクセス先決定手段８３が、データ記憶手段を備える各データ処理装置７１に備えられ、座標のリストとして分散されたデータの書き込み先の候補となるデータ処理装置の座標のリストが入力され、リストのうち未だデータの書き込みが完了していない候補の座標と自装置の座標との距離に基づいて、書き込み先となるデータ処理装置を決定し、各データ処理装置７１が、リストおよび書き込み対象である分散されたデータを受信すると、当該データを自装置のデータ記憶手段８２に記憶させるデータ書き込み手段（例えば、データ管理手段３４５）と、リストから自装置の座標を除いたリストと分散されたデータを、アクセス先決定手段８３が決定したデータ処理装置に送信する送信手段（例えば、データ管理手段）とを備え、クライアント装置が、座標取得手段が書き込み対象である分散されたデータを指定する情報をマスタに送信して得たリストに含まれる座標とクライアント装置の座標との距離に基づいてリストの送信先となるデータ処理装置を決定するリスト送信先決定手段（例えば、アクセス先決定手段３２３）と、リスト送信先決定手段によって決定されたデータ処理装置にリストと分散されたデータとを送信するリスト送信手段（例えばデータアクセス手段３２４）とを備える構成が開示されている。
【０１４１】
また、上記の実施形態には、座標記憶手段８５およびアクセス先決定手段８３が、データ記憶手段８２を備える各データ処理装置７１に備えられ、アクセス先決定手段８３が、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数分（例えば、Ｑｕｏｒｕｍ数）だけ、データ処理装置を決定し、各データ処理装置が、アクセス先決定手段８３によって決定された各データ処理装置に対して分散されたデータの読み込みまたは書き込みを行うアクセス手段（例えばデータ管理手段６４６）を備える構成が開示されている。
【０１４２】
また、上記の実施形態には、分散されたデータの読み込みまたは書き込みの要求元であるクライアント装置（例えばデータアクセスクライアント１１２０）を備え、座標記憶手段８５およびアクセス先決定手段８３が、クライアント装置に備えられ、アクセス先決定手段８３は、分散されたデータの読み込み先または書き込み先の候補となるデータ処理装置の座標のリストの中から、読み込みまたは書き込みの対象となる分散されたデータに対して定められている読み込み先または書き込み先となるデータ処理装置数である充足定数（例えば、Ｑｕｏｒｕｍ数）分だけ、データ処理装置を決定し、各クライアント装置が、アクセス先決定手段８３によって決定された各データ処理装置に対して分散されたデータの読み込みまたは書き込みを行うアクセス手段を備える構成が開示されている。
【０１４３】
また、分散されたデータが、予め与えられた数の冗長数で分散された同一形式のデータであり、書き込みに関する充足定数（例えば、書き込みＱｕｏｒｕｍ数）が、冗長数の１／２より大きな数に定められ、読み込みに関する充足定数（例えば、読み込みＱｕｏｒｕｍ数）が、冗長数と書き込みに関する充足定数との差よりも大きな数に定められる場合が開示されている。
【０１４４】
また、分散されたデータが、１つのデータを分割して冗長符号化したデータブロックであり、データブロック数の数を冗長数としたときに、書き込みに関する充足定数（例えば、書き込みＱｕｏｒｕｍ数）が、冗長数に等しい数に定められ、読み込みに関する充足定数（例えば、読み込みＱｕｏｒｕｍ数）が、１つのデータを復元可能なデータブロックの数に等しい値に定められる場合が開示されている。
【産業上の利用可能性】
【０１４５】
本発明は、データセンタ内や企業システムにおける分散ストレージや、分散ファイルシステム、分散データベース、分散処理システムにおいて、特定のノードの障害に対しても堅牢性が保たれ、なおかつデータの一貫性が保たれ、データへの応答速度の速いシステムとして利用可能である。
【図面の簡単な説明】
【０１４６】
【図１】本発明のデータアクセスシステムの第１の実施形態を示すブロック図である。
【図２】データ読み込み時の処理経過の例を示す説明図である。
【図３】データ書き込み時の処理経過の例を示す説明図である。
【図４】本発明のデータアクセスシステムの第２の実施形態を示すブロック図である。
【図５】データ読み込み時の処理経過の例を示すフローチャートである。
【図６】同一物理収容リストの例を示す説明図である。
【図７】実測遅延テーブルの例を示す説明図である。
【図８】同一物理収容リストや実測遅延テーブルを用いてＱｕｏｒｕｍ数分のデータ管理サーバを決定する動作の例を示すフローチャートである。
【図９】データ書き込み時の処理経過の例を示すフローチャートである。
【図１０】本発明のデータアクセスシステムの第３の実施形態を示すブロック図である。
【図１１】分散ファイルシステムが備えるデータ管理サーバの座標の例を示す散布図である。
【図１２】第２の実施例における動作の例を示す説明図である。
【図１３】第３の実施例における動作の例を示す説明図である。
【図１４】本発明の概要を示すブロック図である。
【図１５】非特許文献１に記載されたデータアクセスシステムの例を模式的に示す説明図である。
【図１６】非特許文献２に記載されたデータアクセスシステムの例を模式的に示す説明図である。
【符号の説明】
【０１４７】
３１１〜３１８  データ管理サーバ
３２０  データアクセスクライアント
３２１  座標格納部
３２２  座標算出手段
３２３  アクセス先決定手段
３２４  データアクセス手段
３３０  マスタ
３３１  アドレス格納部
３３２  座標格納部
３３３  アドレス応答手段
３３９，３４０  計測サーバ
３４２  座標格納部
３４３  座標算出手段
３４４  アクセス先決定手段
３４５  データ管理手段
【図１】
2010074604.tif 000003
【図２】
2010074604.tif 000004
【図３】
2010074604.tif 000005
【図４】
2010074604.tif 000006
【図５】
2010074604.tif 000007
【図６】
2010074604.tif 000008
【図７】
2010074604.tif 000009
【図８】
2010074604.tif 000010
【図９】
2010074604.tif 000011
【図１０】
2010074604.tif 000012
【図１１】
2010074604.tif 000013
【図１２】
2010074604.tif 000014
【図１３】
2010074604.tif 000015
【図１４】
2010074604.tif 000016
【図１５】
2010074604.tif 000017
【図１６】
2010074604.tif 000018