(57)【要約】 【課題】  ネットワーク経由でデータを取得する際に、一つの装置にアクセスが集中することをできるだけ防止するのに好適なデータ処理システム等を提供する。【解決手段】  データ処理システム１０１の中央装置１０２は、提供するデータを複数の断片に分割して、これらを複数の補助装置１０３に配布し、要求元装置１０４は、補助要求により所望の識別子を補助装置１０３に送信すると、各補助装置１０３は自身が持つ当該データの断片を補助応答として要求元装置１０４に返送し、一定時間が経過しても復元に不足する断片がある場合は要求元装置１０４と中央装置１０２の間で同様の要求・応答を行い、断片がすべて揃ったら、要求元装置１０４は断片から所望のデータを復元する。要求元装置１０４は、一旦断片を受信した後は、いずれかの断片を蓄積して補助装置１０３としても機能することができる。【選択図】  図１
2006209343.tif 000002
【特許請求の範囲】
【請求項１】
中央装置と、複数の補助装置と、要求元装置と、を備えるデータ処理システムであって、
（ａ）前記中央装置は、
データを識別子に対応付けて記憶するデータ記憶部、
前記記憶されたデータを複数の断片に分割する分割部、
前記分割された複数の断片のそれぞれについて、当該断片と当該データの識別子と当該断片が当該データ内に配置される位置（以下「配置位置」という。）との三つ組を、前記複数の補助装置のいずれか少なくとも１つに配送する配送部を備え、
（ｂ）前記複数の補助装置のそれぞれは、
前記中央装置から配送される断片と識別子と配置位置との三つ組を受け付ける受付部、
前記受け付けられた断片と識別子と配置位置とを対応付けて記憶する断片記憶部を備え、
（ｃ）前記要求元装置は、
所望のデータの識別子を指定する補助要求を、前記複数の補助装置のうち、当該要求元装置に通信可能に接続される補助装置に送信する補助要求送信部を備え、
（ｄ）前記複数の補助装置のそれぞれは、
前記要求元装置から送信される補助要求を受信する補助要求受信部、
前記断片記憶部に記憶された断片のうち、前記受信された補助要求に指定される識別子に対応付けて記憶された断片と当該断片に対応付けて記憶された配置位置とを指定する補助応答を、前記要求元装置に送信する補助応答送信部をさらに備え、
（ｅ）前記要求元装置は、
前記複数の補助装置のいずれかから送信される補助応答を受信する補助応答受信部、
前記受信された補助応答に指定される断片と配置位置から当該所望のデータを復元するのに不足する断片がある場合、当該所望のデータの識別子と当該不足する断片の配置位置とを指定する中央要求を前記中央装置に送信する中央要求送信部をさらに備え、
（ｆ）前記中央装置は、
前記要求元装置から、識別子と配置位置とを指定する中央要求を受信する中央要求受信部、
前記分割された断片のうち、前記受信された中央要求に指定された識別子のデータにおける当該指定された配置位置に配置されるものを指定する中央応答を送信する中央応答送信部をさらに備え、
（ｇ）前記要求元装置は、
前記中央装置から送信される中央応答を受信する中央応答受信部、
前記受信された中央応答に指定される断片および当該中央要求に指定される配置位置と、当該中央要求を送信した場合は前記受信された補助応答に指定される断片および配置位置と、から、当該所望のデータを復元する復元部をさらに備える
ことを特徴とする物。
【請求項２】
請求項１に記載のデータ処理システムであって、
前記要求元装置において、前記補助要求送信部は、当該補助要求に他の補助要求と重複しない識別子と、当該要求の寿命と、を指定して送信し、
前記複数の補助装置のそれぞれは、前記受信された補助要求に指定された識別子が、過去に受信された補助要求に指定された識別子のいずれとも異なる場合、前記受信された補助要求に指定された寿命を減じ、当該寿命が尽きない場合、当該寿命を減じた補助要求を、他の補助装置のうち、当該受信された補助要求を当該補助装置に転送していないものに転送する補助要求転送部をさらに備え、
前記複数の補助装置のそれぞれにおいて、前記補助要求受信部は、前記複数の補助装置のうち他の補助装置から転送される補助要求をさらに受信する
ことを特徴とする物。
【請求項３】
請求項１または２に記載のデータ処理システムであって、
前記要求元装置において、前記補助要求送信部は、当該補助要求を、放送型送信もしくはブロードキャスト送信により送信する
ことを特徴とする物。
【請求項４】
請求項１から３のいずれか１項に記載のデータ処理システムであって、
前記中央装置において、前記配送部は、当該三つ組のそれぞれを、前記複数の補助装置からランダムに選択したもの、もしくは、配送のコストが最も低いものに配送する
ことを特徴とする物。
【請求項５】
複数の補助装置、および、要求元装置と通信する中央装置であって、
データを識別子に対応付けて記憶するデータ記憶部、
前記記憶されたデータを複数の断片に分割する分割部、
前記分割された複数の断片のそれぞれについて、当該断片と当該データの識別子と当該断片が当該データ内に配置される位置（以下「配置位置」という。）との三つ組を、前記複数の補助装置のいずれか少なくとも１つに配送する配送部、
前記要求元装置から、識別子と配置位置とを指定する中央要求を受信する中央要求受信部、
前記分割された断片のうち、前記受信された中央要求に指定された識別子のデータにおける当該指定された配置位置に配置されるものを指定する中央応答を送信する中央応答送信部
を備えることを特徴とする物。
【請求項６】
中央装置、および、要求元装置と通信する補助装置であって、
前記中央装置から配送される断片と識別子と配置位置との三つ組を受け付ける受付部、
前記受け付けられた断片と識別子と配置位置とを対応付けて記憶する断片記憶部、
前記要求元装置から送信される補助要求を受信する補助要求受信部、
前記断片記憶部に記憶された断片のうち、前記受信された補助要求に指定される識別子に対応付けて記憶された断片と当該断片に対応付けて記憶された配置位置とを指定する補助応答を、前記要求元装置に送信する補助応答送信部
を備えることを特徴とする物。
【請求項７】
中央装置、および、複数の補助装置と通信する要求元装置であって、
所望のデータの識別子を指定する補助要求を、前記複数の補助装置のうち、当該要求元装置に通信可能に接続される補助装置に送信する補助要求送信部、
前記複数の補助装置のいずれかから送信される補助応答を受信する補助応答受信部、
前記受信された補助応答に指定される断片と配置位置から当該所望のデータを復元するのに不足する断片がある場合、当該所望のデータの識別子と当該不足する断片の配置位置とを指定する中央要求を前記中央装置に送信する中央要求送信部、
前記中央装置から送信される中央応答を受信する中央応答受信部、
前記受信された補助応答に指定される断片および配置位置、当該中央要求を送信した場合はさらに前記受信された中央応答に指定される断片および配置位置から、当該所望のデータを復元する復元部
を備えることを特徴とする物。
【請求項８】
複数の補助装置および要求元装置と通信する中央装置にて実行される中央サービス方法であって、
前記中央装置は、データを識別子に対応付けて記憶するデータ記憶部、分割部、配送部、中央要求受信部、中央応答送信部を有し、
前記分割部が、前記記憶されたデータを複数の断片に分割する分割工程、
前記配送部が、前記分割された複数の断片のそれぞれについて、当該断片と当該データの識別子と当該断片が当該データ内に配置される位置（以下「配置位置」という。）との三つ組を前記複数の補助装置のいずれか少なくとも１つに配送する配送工程、
前記中央要求受信部が前記要求元装置から、識別子と配置位置とを指定する中央要求を受信する中央要求受信工程、
前記中央応答送信部が、前記分割された断片のうち、前記受信された中央要求に指定された識別子のデータにおける当該指定された配置位置に配置されるものを指定する中央応答を送信する中央応答送信工程
を備えることを特徴とする方法。
【請求項９】
中央装置、および、要求元装置と通信する補助装置にて実行される補助サービス方法であって、
前記補助装置は、受付部、断片記憶部、補助要求受信部、補助応答送信部を有し、
前記受付部が、前記中央装置から配送される断片と識別子と配置位置との三つ組を受け付ける受付工程、
前記断片記憶部が、前記受け付けられた断片と識別子と配置位置とを対応付けて記憶する断片記憶工程、
前記補助要求受信部が、前記要求元装置から送信される補助要求を受信する補助要求受信工程、
前記補助応答送信部が、前記断片記憶部に記憶された断片のうち、前記受信された補助要求に指定される識別子に対応付けて記憶された断片と当該断片に対応付けて記憶された配置位置とを指定する補助応答を、前記要求元装置に送信する補助応答送信工程、
を備えることを特徴とする方法。
【請求項１０】
中央装置、および、複数の補助装置と通信する要求元装置にて実行される要求元方法であって、
前記要求元装置は、補助要求送信部、補助応答受信部、中央要求送信部、中央応答受信部、復元部を有し、
前記補助要求送信部が、所望のデータの識別子を指定する補助要求を、前記複数の補助装置のうち、当該要求元装置に通信可能に接続される補助装置に送信する補助要求送信工程、
前記補助応答受信部が、前記複数の補助装置のいずれかから送信される補助応答を受信する補助応答受信工程、
前記中央要求送信部が、前記受信された補助応答に指定される断片と配置位置から当該所望のデータを復元するのに不足する断片がある場合、当該所望のデータの識別子と当該不足する断片の配置位置とを指定する中央要求を前記中央装置に送信する中央要求送信工程、
前記中央応答受信部が、前記中央装置から送信される中央応答を受信する中央応答受信工程、
前記復元部が、前記受信された中央応答に指定される断片および当該中央要求に指定される配置位置と、当該中央要求を送信した場合は前記受信された補助応答に指定される断片および配置位置と、から、当該所望のデータを復元する復元工程
を備えることを特徴とする方法。
【請求項１１】
複数の補助装置、および、要求元装置と通信するコンピュータを、
データを識別子に対応付けて記憶するデータ記憶部、
前記記憶されたデータを複数の断片に分割する分割部、
前記分割された複数の断片のそれぞれについて、当該断片と当該データの識別子と当該断片が当該データ内に配置される位置（以下「配置位置」という。）との三つ組を、前記複数の補助装置のいずれか少なくとも１つに配送する配送部、
前記要求元装置から、識別子と配置位置とを指定する中央要求を受信する中央要求受信部、
前記分割された断片のうち、前記受信された中央要求に指定された識別子のデータにおける当該指定された配置位置に配置されるものを指定する中央応答を送信する中央応答送信部
として機能させることを特徴とするプログラム。
【請求項１２】
中央装置、および、要求元装置と通信するコンピュータを、
前記中央装置から配送される断片と識別子と配置位置との三つ組を受け付ける受付部、
前記受け付けられた断片と識別子と配置位置とを対応付けて記憶する断片記憶部、
前記要求元装置から送信される補助要求を受信する補助要求受信部、
前記断片記憶部に記憶された断片のうち、前記受信された補助要求に指定される識別子に対応付けて記憶された断片と当該断片に対応付けて記憶された配置位置とを指定する補助応答を、前記要求元装置に送信する補助応答送信部
として機能させることを特徴とするプログラム。
【請求項１３】
中央装置、および、複数の補助装置と通信するコンピュータを、
所望のデータの識別子を指定する補助要求を、前記複数の補助装置のうち、当該要求元装置に通信可能に接続される補助装置に送信する補助要求送信部、
前記複数の補助装置のいずれかから送信される補助応答を受信する補助応答受信部、
前記受信された補助応答に指定される断片と配置位置から当該所望のデータを復元するのに不足する断片がある場合、当該所望のデータの識別子と当該不足する断片の配置位置とを指定する中央要求を前記中央装置に送信する中央要求送信部、
前記中央装置から送信される中央応答を受信する中央応答受信部、
前記受信された補助応答に指定される断片および配置位置、当該中央要求を送信した場合はさらに前記受信された中央応答に指定される断片および配置位置から、当該所望のデータを復元する復元部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク経由でデータを取得する際に、一つの中央装置にアクセスが集中することをできるだけ防止するのに好適なデータ処理システム、中央装置、補助装置、要求元装置、中央サービス方法、補助サービス方法、要求元方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、インターネットを経由して、ネットワークごしに各種のデータを端末にダウンロードする技術が利用されている。このような技術については、たとえば以下の文献に開示がある。
【特許文献１】特開２００４−２８７６３１号公報
【０００３】
この文献に開示される技術は、以下の通りである。すなわち、中央装置は、複数の端末にダウンロードさせるべきファイルの入力を受け付け、入力を受け付けられたファイルを複数に分割し、分割された結果（以下、それぞれを「セクタ」という。）のそれぞれと、当該セクタの当該ファイルにおける位置と、の対を、送信する。一方、複数の端末のそれぞれは、ダウンロード中央装置から送信される対を受信し、受信された対に指定されたセクタと、当該セクタの当該ファイルにおける位置と、を取得し、取得されたセクタの内容を、ダウンロードすべきファイルを復元するための記憶域のうち取得された位置に、記憶させ、当該記憶域中にすべてのセクタの内容が記憶された場合、当該記憶域に記憶された内容をダウンロードされたファイルとする。
【０００４】
一方で、たとえばネットワークゲームや各種のウェブサービスにおいてユーザにデータを提供しようとする場合、データ提供サーバに対するアクセスが集中してしまうという問題が生じている。
【０００５】
従来は、データ提供サーバを複数用意して各ユーザが別々のサーバにアクセスするようにしたり、あるサーバに問い合わせを行って実際にダウンロード処理を行うサーバの指定を受け、当該サーバの指定をラウンドロビンやランダムに行う技術が広く用いられてきた。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
一方で、データ提供サーバへのアクセス集中をできるだけ防止するための技術は、従来から用いられているもので十分ではなく、用途に応じた種々の技術が強く求められている。
本発明は、上記のような課題を解決するためになされたもので、ネットワーク経由でデータを取得する際に、一つの装置にアクセスが集中することをできるだけ防止するのに好適なデータ処理システム、中央装置、補助装置、要求元装置、中央サービス方法、補助サービス方法、要求元方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
本発明の第１の観点に係るデータ処理システムは、中央装置と、複数の補助装置と、要求元装置と、を備え、以下のように構成する。
【０００８】
まず、中央装置は、データ記憶部、分割部、配送部を備える。
ここで、データ記憶部は、データを識別子に対応付けて記憶し、分割部は、記憶されたデータを複数の断片に分割し、配送部は、分割された複数の断片のそれぞれについて、当該断片と当該データの識別子と当該断片が当該データ内に配置される位置（以下「配置位置」という。）との三つ組を、複数の補助装置のいずれか少なくとも１つに配送する。
【０００９】
すなわち、中央装置は、将来要求元装置にダウンロードされるであろうデータを記憶部に記憶しているが、これを複数の断片に分割する。そして、元のデータを将来復元できるような情報とともに三つ組とし、その三つ組のそれぞれを、適当な補助装置に配送する。たとえば、三つ組の個数が１２８個で、補助装置の個数が５１２個である場合は、各三つ組を４個の補助装置に配送し、各補助装置が１個の三つ組の配送を受けるようにする、の如くである。
【００１０】
もっとも、たとえば、各三つ組を６個の補助装置に配送し、各補助装置が１個ないし２個の三つ組の配送を受けるようにするような態様を採用してもよい。ただし、各補助装置に配送される三つ組の個数は（異なっても良いが）偏りがないようにし、各三つ組が配送される補助装置の個数も（異なっても良いが）偏りがないようにすることが望ましい。
【００１１】
一方、複数の補助装置のそれぞれは、受付部、断片記憶部を備える。
ここで、受付部は、中央装置から配送される断片と識別子と配置位置との三つ組を受け付け、断片記憶部は、受け付けられた断片と識別子と配置位置とを対応付けて記憶する。
【００１２】
すなわち、各補助装置は、中央装置から配送された断片と識別子とその断片がもとのデータ内のどの位置にあったかを示す配置位置との三つ組を記憶する。中央装置から配送される三つ組の個数は、上記のように、必ずしも１つとは限らず、複数の場合もありうる。これにより、将来要求元装置から要求があった場合に、この三つ組に含まれる情報を応答する準備をする。
【００１３】
さらに、要求元装置は、補助要求送信部を備える。
ここで、補助要求送信部は、所望のデータの識別子を指定する補助要求を、複数の補助装置のうち、当該要求元装置に通信可能に接続される補助装置に送信する。
【００１４】
たとえば、中央装置、補助装置、要求元装置がインターネット内に配置されている場合、理論的には、すべての装置が相互に通信可能であるが、実際には、要求元装置は一部の補助装置としか通信できない場合が多い。この制限は、通信路の容量によるもののほか、そもそも補助装置と通信するための前提となるＩＰアドレスやポート番号がわからないことがあるからである。
【００１５】
対戦型ネットワークゲームの場合、各プレイヤーは自身の端末を用いて、まずロビーと呼ばれるサーバにアクセスし、このサーバに紹介された端末同士で対戦を行うことがある。たとえば、このような紹介の段階で、（一部の）補助装置のＩＰアドレスやポート番号といった情報が提供されるのである。
【００１６】
そして、複数の補助装置のそれぞれは、補助要求受信部、補助応答送信部をさらに備える。
ここで、補助要求受信部は、要求元装置から送信される補助要求を受信し、補助応答送信部は、断片記憶部に記憶された断片のうち、受信された補助要求に指定される識別子に対応付けて記憶された断片と当該断片に対応付けて記憶された配置位置とを指定する補助応答を、要求元装置に送信する。
【００１７】
すなわち、要求元装置から補助装置への補助要求の送受が行われた場合、各補助装置は、自身が記憶している三つ組の識別子の項目を見て、要求元装置が要求しているデータの断片を持っているか否かを判断し、持っている場合は、断片の内容と、元のデータ内における断片の配置位置と、要求元装置に送信する。これによって、要求元装置は、所望のデータを復元できるようになるのである。
【００１８】
一方、要求元装置は、補助応答受信部、中央要求送信部をさらに備える。
ここで、補助応答受信部は、複数の補助装置のいずれかから送信される補助応答を受信し、中央要求送信部は、受信された補助応答に指定される断片と配置位置から当該所望のデータを復元するのに不足する断片がある場合、当該所望のデータの識別子と当該不足する断片の配置位置とを指定する中央要求を中央装置に送信する。
【００１９】
すなわち、各補助装置から送信される断片と配置位置から、元のデータを復元するのに必要な情報を収集し、もし足りなければ、足りない部分を中央装置に要求するのである。もし足りていれば、中央装置への要求は行わない。
【００２０】
さらに、中央装置は、中央要求受信部、中央応答送信部を備える。
ここで、中央要求受信部は、要求元装置から、識別子と配置位置とを指定する中央要求を受信し、中央応答送信部は、分割された断片のうち、受信された中央要求に指定された識別子のデータにおける当該指定された配置位置に配置されるものを指定する中央応答を送信する。
【００２１】
上記のように、補助装置から収集した情報では、所望のデータが復元できない場合、要求元装置は中央装置に、不足分を要求し、中央装置は、その不足分を要求元装置に送信するのである。
【００２２】
そして、要求元装置は、中央応答受信部、復元部をさらに備える。
ここで、中央応答受信部は、中央装置から送信される中央応答を受信し、復元部は、受信された中央応答に指定される断片および当該中央要求に指定される配置位置と、当該中央要求を送信した場合は受信された補助応答に指定される断片および配置位置と、から、当該所望のデータを復元する。
すなわち、補助装置から収集した断片に関する情報と、それで足りない場合にはさらに中央装置から取得した断片に関する情報と、から、元のデータを復元するのである。
【００２３】
本発明によれば、要求元装置があるデータを取得したいと考えた場合に、中央装置へのアクセスをできるだけ少なくし、補助装置に分散された記憶されたデータの断片を収集することによって、所望のデータを復元するようなデータ処理システムを提供することができる。
【００２４】
また、本発明のデータ処理システムは、以下のように構成することができる。
すなわち、要求元装置において、補助要求送信部は、当該補助要求に他の補助要求と重複しない識別子と、当該要求の寿命と、を指定して送信する。
この識別子と寿命の情報を用いて、以降に説明するように、補助要求をネットワーク内で伝播させるのである。寿命の情報は、典型的には０以上の整数であり、いわゆる最長ホップ数に相当するものである。
【００２５】
一方、複数の補助装置のそれぞれは、補助要求転送部をさらに備える。
ここで、補助要求転送部は、
（ｐ）受信された補助要求に指定された識別子が、過去に受信された補助要求に指定された識別子のいずれとも異なる場合、受信された補助要求に指定された寿命を減ずる。
（ｑ）そして、当該寿命が尽きない場合、当該寿命を減じた補助要求を、他の補助装置のうち、当該受信された補助要求を当該補助装置に転送していないものに転送する。
【００２６】
上記のように、補助要求の「寿命」は、当該補助要求を補助装置間で転送してたらい廻しにできる最大回数と考えることができる。そして、補助装置は、要求元装置がその所在を知らない（要求元装置からは通信可能でない）他の補助装置に補助要求をたらい廻しにする。
【００２７】
なお、寿命を減ずるのは、さらに、受信された補助要求に指定された識別子に対応付けられる断片が、断片記憶部に記憶されていない場合に限ることとしても良い。この場合は、寿命は、断片を記憶している補助装置に限った最長ホップ数を意味することになる。
【００２８】
なお、過去に転送したことのある補助要求か否かは、補助要求に指定される識別子（いわゆる「メッセージＩＤ」である。）によって判別される。
【００２９】
さらに、複数の補助装置のそれぞれにおいて、補助要求受信部は、複数の補助装置のうち他の補助装置から転送される補助要求をさらに受信する。
これは、他の補助装置からたらい廻しにされた補助要求も受信する、ということであり、受信された補助要求は、上記のように、補助応答送信部と、補助要求転送部によって処理される。
【００３０】
本発明によれば、要求元端末が直接その所在を知らない補助装置であっても、その補助装置へ達するような所定のホップ数以下の経路が存在する場合には、当該補助装置からも断片の提供を受けることができるようになる。
【００３１】
また、本発明のデータ処理システムの要求元装置において、補助要求送信部は、当該補助要求を、放送型送信もしくはブロードキャスト送信により送信するように構成することができる。
すなわち、要求元装置から通信可能な補助装置がある種のローカルエリアネットワークを構成すると考えることができる場合等には、放送型送信やブロードキャスト送信を用いて、要求元装置から補助装置へ補助要求を送信するのである。
本発明は上記発明の好適実施形態の一つであり、本発明によれば、補助要求を効率良く補助装置に送信することができる。
【００３２】
また、本発明のデータ処理システムの中央装置において、配送部は、当該三つ組のそれぞれを、複数の補助装置からランダムに選択したもの、もしくは、配送のコストが最も低いものに配送するように構成することができる。
すなわち、各三つ組を配送すべき補助装置をランダムに決定することにより、三つ組の分布の偏りを少なくするのである。
もしくは、配送のコストが最も低いもの、たとえば、配送に係る通信の際のホップ数が小さく、通信ネットワークのトポロジー上最も近くにある補助装置や通信帯域の太さが最も太いものを配送先とすることにより、三つ組の分布の偏りを少なくするのである。
本発明によれば、各補助装置が保有する三つ組の個数が均等となることが期待され、特定の補助装置にのみアクセスが集中する等の弊害をできるだけ防止することができる。
【００３３】
本発明のその他の観点に係る中央装置は、上記データ処理システムにおける中央装置である。
本発明のその他の観点に係る補助装置は、上記データ処理システムにおける補助装置である。
本発明のその他の観点に係る要求元装置は、上記データ処理システムにおける要求元装置である。
【００３４】
本発明のその他の観点に係る中央サービス方法は、複数の補助装置および要求元装置と通信する中央装置にて実行され、中央装置は、データを識別子に対応付けて記憶するデータ記憶部、分割部、配送部、中央要求受信部、中央応答送信部を有し、分割工程、配送工程、中央要求受信工程、中央応答送信工程を備え、以下のように構成する。
【００３５】
すなわち、分割工程では、分割部が、記憶されたデータを複数の断片に分割する。
【００３６】
一方、配送工程では、配送部が、分割された複数の断片のそれぞれについて、当該断片と当該データの識別子と当該断片が当該データ内に配置される位置（以下「配置位置」という。）との三つ組を複数の補助装置のいずれか少なくとも１つに配送する。
【００３７】
さらに、中央要求受信工程では、中央要求受信部が要求元装置から、識別子と配置位置とを指定する中央要求を受信する。
【００３８】
そして、中央応答送信工程では、中央応答送信部が、分割された断片のうち、受信された中央要求に指定された識別子のデータにおける当該指定された配置位置に配置されるものを指定する中央応答を送信する。
【００３９】
本発明のその他の観点に係る補助サービス方法は、中央装置、および、要求元装置と通信する補助装置にて実行され、補助装置は、受付部、断片記憶部、補助要求受信部、補助応答送信部を有し、受付工程、断片記憶工程、補助要求受信工程、補助応答送信受信工程を備え、以下のように構成する。
【００４０】
すなわち、受付工程では、受付部が、中央装置から配送される断片と識別子と配置位置との三つ組を受け付ける。
【００４１】
一方、断片記憶工程では、断片記憶部が、受け付けられた断片と識別子と配置位置とを対応付けて記憶する。
【００４２】
さらに、補助要求受信工程では、補助要求受信部が、要求元装置から送信される補助要求を受信する。
【００４３】
そして、補助応答送信工程では、補助応答送信部が、断片記憶部に記憶された断片のうち、受信された補助要求に指定される識別子に対応付けて記憶された断片と当該断片に対応付けて記憶された配置位置とを指定する補助応答を、要求元装置に送信する。
【００４４】
本発明のその他の観点に係る要求元方法は、中央装置、および、複数の補助装置と通信する要求元装置にて実行され、要求元装置は、補助要求送信部、補助応答受信部、中央要求送信部、中央応答受信部、復元部を有し、補助要求送信工程、補助応答受信工程、中央要求送信工程、中央応答受信工程、復元工程を備え、以下のように構成する。
【００４５】
すなわち、補助要求送信工程では、補助要求送信部が、所望のデータの識別子を指定する補助要求を、複数の補助装置のうち、当該要求元装置に通信可能に接続される補助装置に送信する。
【００４６】
一方、補助応答受信工程では、補助応答受信部が、複数の補助装置のいずれかから送信される補助応答を受信する。
【００４７】
さらに、中央要求送信工程では、中央要求送信部が、受信された補助応答に指定される断片と配置位置から当該所望のデータを復元するのに不足する断片がある場合、当該所望のデータの識別子と当該不足する断片の配置位置とを指定する中央要求を中央装置に送信する。
【００４８】
そして、中央応答受信工程では、中央応答受信部が、中央装置から送信される中央応答を受信する。
【００４９】
一方、復元工程では、復元部が、受信された中央応答に指定される断片および当該中央要求に指定される配置位置と、当該中央要求を送信した場合は受信された補助応答に指定される断片および配置位置と、から、当該所望のデータを復元する。
【００５０】
本発明のその他の観点に係るプログラムは、コンピュータを中央装置、補助装置、または、要求元装置として機能させ、または、コンピュータに中央サービス方法、補助サービス方法、または、要求元方法を実行させるように構成する。
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００５１】
本発明によれば、ネットワーク経由でデータを取得する際に、一つの装置にアクセスが集中することをできるだけ防止するのに好適なデータ処理システム、中央装置、補助装置、要求元装置、中央サービス方法、補助サービス方法、要求元方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００５２】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、インターネット内の各種装置に本発明が適用される実施形態を説明するが、各種のコンピュータ、ＰＤＡ（Personal Data Assistants）、携帯電話などの情報処理装置においても同様に本発明を適用することができる。すなわち、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００５３】
（データ処理システムの構成）
図１は、本発明の実施形態の１つに係るデータ処理システムの概要構成を示す説明図である。以下、本図を参照して説明する。
【００５４】
データ処理システム１０１は、中央装置１０２と、複数の補助装置１０３と、要求元装置１０４と、を備える。典型的には、中央装置１０２と複数の補助装置１０３は、データの提供者が維持管理するデータサーバ機器であり、要求元装置１０４は、データの利用者が維持管理する端末機器であるが、複数の補助装置１０３として、データの利用者が維持管理する端末機器を利用し、さらにデータの分散管理を図ることも可能である。この場合、一つの端末機器が、補助装置１０３としても要求元装置１０４としても機能することとなる。
【００５５】
これらの中央装置１０２、補助装置１０３、要求元装置１０４は、インターネット１０５を介して接続されている。
また、本図に示すように、複数の要求元装置１０４が存在するのが一般的であるが、個数に制限はない。
【００５６】
図２は、本実施形態における各種の通信のやりとりの様子を示すシーケンス図である。以下、本図を参照して説明する。
【００５７】
まず、提供すべきデータを記憶する中央装置１０２は、そのデータを複数の断片に分割して、そのそれぞれの断片・そのデータの識別子・その断片のデータ内における位置の三つ組を、できるだけ各補助装置１０３に均等になるように、配送する（２０１）。各補助装置１０３は、配送された三つ組を受け付けて、記憶する。これによって、データ提供の準備ができたことになる。
【００５８】
なお、データは、「ファイル」と呼ばれる形式で提供されることが最も多いが、いわゆるバイト列やビット列として構成されるものであれば、どのようなものであっても良い。また、「識別子」としては、ファイル名を使用するのが最も一般的である。データがある大きなデータ内の一部を構成するものである場合（たとえば、プログラム内のオーバレイモジュールの場合等）、当該大きなデータにおける当該データの位置情報とサイズ情報の組合せが「識別子」となる。また、データベースによって検索された結果を「データ」とする場合には、検索に用いる検索式（ＳＱＬ式など）を「識別子」としても良い。
【００５９】
さて、要求元装置１０４が、何らかの契機でデータの提供を受けようとする場合、要求元装置１０４は、自身が知る補助装置１０３に、当該識別子を指定する補助要求を送信する（２０２）。
【００６０】
補助要求を受け付けた補助装置１０３は、自身が持つ断片の識別子と補助要求に指定される識別子を対比して、もしマッチする断片があれば、当該断片と当該断片の位置とを指定する補助応答を、要求元装置１０４に送信する（２０３）。
【００６１】
また、適宜、当該補助応答を他の補助装置１０３に転送する（２０４）。転送された補助装置１０３も、マッチする断片があれば、同様に補助応答を要求元装置１０４に送信する（２０３）。
【００６２】
そして、要求元装置１０４は、各補助装置１０３から送信された補助応答を受信して、断片を蓄積する。すべての断片が蓄積されるか一定時間が経過する等、所定条件が満たされるまで補助装置１０３からの補助応答を受信し続ける。
【００６３】
次に、所定条件が満たされたら、断片の位置から、データの復元に必要なすべての断片が得られたか否かを判定し、得られていなければ、中央装置１０２に、識別子と不足している断片の位置情報を指定する中央要求を送信する（２０５）。
【００６４】
この場合、中央要求を受信した中央装置１０２は、必要な断片を指定する中央応答を要求元装置１０４に送信する（２０６）。
【００６５】
要求元装置１０４にすでにすべての断片が揃っている場合、もしくは、中央装置１０２が送信した中央応答を受信した場合、要求元装置１０４は、断片から元のデータを復元する。
【００６６】
このような処理手順によって、要求元装置１０４は、中央装置１０２からデータの提供を受けるのである。この場合、データを分割する断片の数に比べて十分な数の補助装置１０３があれば、中央装置１０２へのアクセス集中は防止できる。
【００６７】
また、複数の補助装置１０３に同じ断片が記憶されていれば、通信帯域に余裕がなくなって、ある補助装置１０３との通信が一時的に到達不可能になったり、ある補助装置１０３の計算負荷が高く応答が出せなかったり、そもそも宛先に到達したか否かを判定しないが高速な通信が可能な通信プロトコル、たとえばＵＤＰ（User Datagram Protocol）を採用した場合であっても、他の補助装置１０３からの提供が期待できる。
【００６８】
ＵＤＰは、２つの機器間で、ベストエフォート型のデータグラム指向の通信を行うプロトコルであり、ＩＰ（Internet Protocol）パケットをそのままアプリケーションから利用できるようにしただけのプロトコルである。
【００６９】
したがって、パケットが相手に確実に届くという保証はなく、再送や受信確認応答、フロー制御、大きなデータの分割や再合成（フラグメント化）などはすべてアプリケーション側で制御する必要がある。本発明は、この制御を行う技術に関連している。
【００７０】
一方で、ＵＤＰは、処理が簡単であり、通信が高速であるという特徴があり、本実施形態のようなデータ処理には好適である。
【００７１】
図３は、本実施形態の中央装置１０２、補助装置１０３、要求元装置１０４を実現するのに好適な、情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００７２】
情報処理装置３０１は、ＣＰＵ（Central Processing Unit）３０２と、ＲＯＭ（Read Only Memory）３０３と、ＲＡＭ（Random Access Memory）３０４と、キーボードやマウス、コントローラからなる入力装置３０５と、モニタなどの表示装置３０６と、ハードディスクなどの外部記憶装置３０７と、ＣＤ−ＲＯＭドライブなどの媒体読取装置３０８と、ＮＩＣ（Network Interface Card）３０９と、を備える。
【００７３】
中央装置として機能するための各種のプログラムを、媒体読取装置３０８に装着されたＣＤ−ＲＯＭなどから外部記憶装置３０７にインストールし、当該サーバ用プログラムを実行させることによって、情報処理装置３０１は、本発明の中央装置１０２として機能する。特に、情報処理装置３０１の電源を投入した後の処理すべき手順を記述した初期化データを適切に外部記憶装置３０７に用意しておくことにより、情報処理装置３０１の電源を投入すると、必要な各種プログラムが実行され、本発明の中央装置１０２、補助装置１０３、あるいは、要求元装置１０４として機能するようになる。
【００７４】
ＣＰＵ  ３０２は、情報処理装置３０１の全体の動作を制御し、各構成要素と接続され、これらを制御する制御信号を与えたり、これらとの情報のやりとりを行うためにデータの送受を行う。
ＲＯＭ  ３０３には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、外部記憶装置３０７や媒体読取装置３０８に装着されたＣＤ−ＲＯＭ等に記録されたプログラムをＲＡＭ  ３０４に読み出してＣＰＵ  ３０２による実行が開始される。
【００７５】
ＲＡＭ  ３０４は、データやプログラムを一時的に記憶するためのもので、外部記憶装置３０７や媒体読取装置３０８に装着されたＣＤ−ＲＯＭ等に記録されたプログラムやデータを保持し、また、これが中央装置１０２や補助装置１０３として機能する場合には、各種のサービスを提供するために必要な情報を一時的に記憶したり、サービスの提供の過程を記録するために用いられる。
【００７６】
また、要求元装置１０４として機能する場合には、各種通信パケットを一時的に記憶したり、提供を受けるデータの復元の処理に一時的に使用したりするために用いられる。
【００７７】
入力装置３０５は、当該情報処理装置３０１を直接使用したりこれを管理したりする際に、中央装置１０２や補助装置１０３の管理者、要求元装置１０４の利用者が各種の指示を与えるためのものであり、表示装置３０６は、当該指示の結果等、各種の報告を管理者に提示するためのものである。
【００７８】
典型的には、これらは、当該情報処理装置３０１に直接接続されるキーボードやマウス、コントローラならびにモニタが相当するが、ＮＩＣ  ３０９、シリアル通信線、パラレル通信線などを介して接続される他の情報処理装置を入力装置３０５として機能させることとして、情報処理装置３０１自身には、キーボードやマウス、コントローラ、モニタなどを備えない態様も広く用いられている。
【００７９】
外部記憶装置３０７は、上述したように、情報処理装置３０１が中央装置１０２、補助装置１０３、あるいは、要求元装置１０４として機能するための各種のプログラムや設定データ、提供するサービスに関する各種のデータ、端末からのアクセス統計等を不揮発的かつ読み書き可能に記録するのに用いられる。
【００８０】
媒体読取装置３０８は、当該情報処理装置３０１に対して種々のソフトウェアをインストールしたり、外部記憶装置３０７の記憶容量の空きを広くするため情報処理装置３０１が利用するデータを記憶させるのに利用される。利用可能な媒体は、典型的にはＣＤ−ＲＯＭやＤＶＤ−ＲＯＭである。尚、このような媒体読取装置３０８を利用しなくとも、ＮＩＣ  ３０９を介したネットワークインストールの技術を利用して、他の情報処理装置からインターネットやＬＡＮを介して提供される各種のソフトウェアをインストールすることが可能である。
【００８１】
ＮＩＣ  ３０９は、情報処理装置３０１をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  ３０２との仲立ちを行う内部インターフェース（図示せず）により構成される。
【００８２】
（中央装置）
図４は、本実施形態に係る中央装置の概要構成を示す模式図である。図５は、本実施形態に係る中央装置にて実行される分割配送処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。なお、以下の説明では、中央装置１０２が上記の情報処理装置３０１上に実現されている場合を例にあげて説明する。
【００８３】
中央装置１０２は、データ記憶部５０１、分割部５０２、配送部５０３、中央要求受信部５０４、中央応答送信部５０５を備える。
【００８４】
ここで、データ記憶部５０１は、データを識別子に対応付けて記憶する。当該データは、将来要求元装置１０４にダウンロードされるであろうデータである。
【００８５】
したがって、上記情報処理装置３０１によって中央装置１０２を構成した場合、外部記憶装置３０７がデータ記憶部５０１として機能することとなる。
【００８６】
本処理は、データ記憶部５０１に記憶されるデータが、将来要求元装置１０４にダウンロードされることが決まることを契機に開始される。
【００８７】
まず、分割部５０２は、記憶されたデータを複数の断片に分割する（ステップＳ５０１）。
【００８８】
各断片の大きさは、ＵＤＰ通信のパケットとして伝送するのに適したサイズとすることが望ましい。これは、ネットワークの状況によって変化するが、過去の通信履歴から統計的にサイズを求めることができる。
【００８９】
次に、分割部５０２は、分割された断片のそれぞれについて、少なくとも、
（ａ）当該断片
（ｂ）元のデータの識別子
（ｃ）元のデータにおいて当該断片が配置される配置位置
の三種の情報を含む断片パケットを生成する（ステップＳ５０２）。
【００９０】
断片の配置位置は、たとえば、分割総数○○個の断片のうち当該断片は先頭から数えて○○番目の断片である、という情報を、所定のフォーマットで指定するものとする。
【００９１】
元のデータの識別子は、適当な文字列の形式を定めてこれによって表現しても良いし、整数により識別番号形式で表現しても良い。
【００９２】
断片そのものを指定する際には、通信路の途中での通信障害によりデータが壊れたり、第三者の妨害によってデータが改変されたりしたことを検出するため、チェックサムなどを合わせて指定しても良い。
【００９３】
ついで、当該断片パケットのそれぞれを外部記憶装置３０７に保存する（ステップＳ５０３）。この際に、上記のようにチェックサムを利用するほか、電子署名を付すことによって、補助装置１０３や要求元装置１０４において、データの改変を検出することができるようになる。
【００９４】
上記の情報処理装置２０１を用いて中央装置１０２を構成した場合、ＣＰＵ  ３０２がＲＡＭ  ３０４や外部記憶装置３０７と共働して、分割部５０２として機能することとなる。
【００９５】
さらに、配送部５０３は、上記のように生成されたすべての断片パケットについて、以下の処理を行う（ステップＳ５０４）。すなわち、すべての断片パケットについて処理が終わっていなければ（ステップＳ５０４；Ｎｏ）、未処理の断片パケットを１つ取得し（ステップＳ５０５）、当該断片パケットの配送先となる補助装置１０３を決める（ステップＳ５０６）。配送先となる補助装置１０３の決め方には、種々の技術が考えられるが、たとえば以下のようにすることもできる。
（１）  配送先となりうる補助装置１０３がm (m≧2)個あり、現在処理している断片パケットがn (n≧0)番目のものである場合、n mod m + 1番目の補助装置１０３を、当該n番目の断片パケットの配送先とする。ラウンドロビン形式に類似する、最も単純な手法である。
（２）  配送先となりうる補助装置１０３がm個ある場合、整数１からmまでの乱数iを生成し、i番目の補助装置１０３を、当該n番目の断片パケットの配送先とする。乱数によって断片パケットの配送先を均等とする手法である。
（３）  これまでの補助装置１０３の通信の履歴から、m個の補助装置１０３のそれぞれについて、それがk番目である場合に、その負荷を表すパラメータp[k] (p[k]>0)を取得しておく。このパラメータは正の数値で、値が大きければ大きいほど負荷が大きく、補助装置１０３が使用する通信路の帯域に余裕がないことを意味する。そして、乱数を用いて、k番目の補助装置１０３が選択される確率が、たとえば、
(1/p[k]) / Σi=1m (1/p[i])
となるようにして、配送先の補助装置１０３を決定する。
【００９６】
なお、当該確率の計算については、逆数を用いるのではなく、所定の単調減少関数f(・)、すなわち、任意の正の数x，yについてx < yであればf(x) ≧ f(y) > 0を満たすものを用いて、
f(p[k]) / Σi=1m f(p[i])
のように定めても良い。
【００９７】
このようにして、たとえば、断片パケットの個数が１２８個で、補助装置１０３の個数が５１２個である場合は、各断片パケットを約４個の補助装置１０３に配送し、各補助装置１０３が約１個の断片パケット配送を受けるようにしたり、各断片パケットを約６個の補助装置１０３に配送し、各補助装置がおよそ１個〜２個の断片パケットの配送を受けるようにするような態様とすることができる。
【００９８】
すなわち、各補助装置１０３に配送される断片パケットの個数は（異なっても良いが）偏りがないようにし、各断片パケットが配送される補助装置１０３の個数も（異なっても良いが）偏りがないようにすることが望ましい。また、ここでいう「偏り」を考える場合には、補助装置１０３が接続される通信路の帯域の余裕や、補助装置１０３自身の性能を考慮しても良い。
【００９９】
また、補助装置１０３の候補を決める場合には、コンピュータ通信網におけるネットワークトポロジー上最も近くにあるホップ数が小さいものから順に選択したり、所定の範囲に含まれるものを選択したり、当該機器との間の通信帯域が太いものから順に選択したりなど、通信コストの低いものから選択する手法を採用しても良い。
【０１００】
そして、配送部５０３は、決定された配送先の補助装置１０３に、当該断片パケットを配送して（ステップＳ５０７）、ステップＳ５０４に戻る。
【０１０１】
一方、すべての断片パケットの配送が終了したら（ステップＳ５０４；Ｙｅｓ）、本処理を終了する。このように、ＣＰＵ  ３０２は、ＲＡＭ  ３０４や外部記憶装置３０７、ＮＩＣ  ３０９と共働して、配送部５０３として機能することとなる。
【０１０２】
なお、外部記憶装置３０７の容量によっては、一旦記憶された断片パケットは削除しても良い。元のデータが記憶されている限り、断片パケットは必要に応じて生成することができるからである。また逆に、断片パケットが外部記憶装置３０７に残っている場合には、元のデータを削除しても良い。中央装置１０２で必要になったときには、断片パケットから元のデータが復元できるからである。
【０１０３】
なお、パケットの配送の際には、当該パケットの送信元と送信先を指定する必要があり、これらの情報も当該パケットに付加される。また、パケットが何らかの要求を行うことを示す場合には、その応答先（一般には当該パケットの送信元であるが、中継や転送をした場合には、当該パケットを初めて発した通信機器が応答先となり、中継や転送の送信元ではない）も当該パケットに付加・指定される。以下、同様であるが、理解を容易にするため、適宜説明は省略する。
【０１０４】
さて、各断片パケットの配送が終わった後は、上記のように、複数の補助装置１０３が十分な数あり、要求元装置１０４と補助装置１０３との通信が必要なだけ成功すれば、以下の処理は必要がなくなるが、実際には、補助装置１０３の処理では不十分で、要求元装置１０４から中央装置１０２に直接、断片を送るようにパケットが送付されることがある。このパケットを「中央要求」と呼ぶ。図６は、この中央要求を処理する中央応答処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１０５】
まず、中央装置１０２は、ＮＩＣ  ３０９を介して、他の通信機器（補助装置１０３や要求元端末１０４のほか、種々の通信機器を含む。）から送信されたパケットを受信する（ステップＳ６０１）。そして、当該パケットの種類を判別する（ステップＳ６０２）。当該パケットの種類が中央要求でない場合（ステップＳ６０２；その他）は、これに対応する処理を適宜実行して（ステップＳ６０３）、次のパケットが来るまで待機し（ステップＳ６０４）、パケットが到達したことを検出するとステップＳ６０１に戻る。
【０１０６】
なお、ステップＳ６０４におけるパケットの到達の待機には、適宜タイムアウトを設け、タイムアウトが生じた場合にはこれに対応する処理を実行してからステップＳ６０４に戻る等の処理を実行しても良い。以下でも、パケットの到達を待つ場合には、同様の処理を行うことができるが、理解を容易にするため、説明は適宜省略する。
【０１０７】
一方、当該パケットが中央要求である場合（ステップＳ６０２；中央要求）、ＮＩＣ  ３０９がＣＰＵ  ３０２と共働して中央要求受信部５０４として機能したこととなる。そこで、中央要求受信部５０４は、中央要求に指定される
（ａ）識別子
（ｂ）必要な断片の個数およびそれぞれの断片のデータにおける配置位置
の情報を抽出する（ステップＳ６０５）。
【０１０８】
ついで、中央応答送信部５０５は、断片パケットのうち、中央要求に指定された識別子と指定された配置位置に相当するものが取得できるか判断し（ステップＳ６０６）、可能であれば（ステップＳ６０６；Ｙｅｓ）、これを取得する（ステップＳ６０７）。上記のように、ステップＳ５０３で外部記憶装置３０７に保存された断片パケットがそのまま残っている場合は、条件に適合するものをそのまま取得すれば良いし、そうでなければ、元のデータから再度断片パケットを生成しても良い。
【０１０９】
そして、当該断片パケットを指定する中央応答を、要求元端末に送信して（ステップＳ６０８）、ステップＳ６０４に進む。なお、中央応答１つに複数の断片パケットを含むように構成しても良いし、中央応答１つに断片パケットは１つと設定して、データの復元に複数の断片が必要な場合は、複数の中央応答を要求元端末１０４に順次送信することとしても良い。
【０１１０】
一方、可能でなければ（ステップＳ６０６；Ｎｏ）、中央要求に指定された情報が誤りである旨を要求元端末にエラー通知を送信して（ステップＳ６０９）、ステップＳ６０４に進む。
【０１１１】
上記のように、補助装置１０３から収集した情報では、所望のデータが復元できない場合、要求元装置１０４は中央装置１０２に、不足分を要求し、中央装置１０２は、その不足分を要求元装置１０４に送信するのである。
【０１１２】
このように、本実施形態においては、中央装置１０２が単体でデータの提供を行うのではなく、補助装置１０３に断片を配布して提供の大部分を補助装置１０３に任せるので、中央装置１０２にアクセスが集中することを防止することができる。
【０１１３】
また、ラウンドロビンや乱数を用い、場合によっては負荷を考慮して断片パケットの配布先を決定するので、各補助装置１０３が保有する断片パケットの個数が均等となるか、あるいは、負荷が均等となることが期待され、特定の補助装置１０３にのみアクセスが集中する等の弊害をできるだけ防止することができる。
【０１１４】
（補助装置）
図７は、本実施形態に係る補助装置の概要構成を示す模式図である。図８は、本実施形態に係る補助装置にて実行される補助応答処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。なお、以下の説明では、補助装置１０３が上記の情報処理装置３０１上に実現されている場合を例にあげて説明する。
【０１１５】
複数の補助装置１０３のそれぞれは、受付部７０１、断片記憶部７０２、補助要求受信部７０３、補助応答送信部７０４を備える。また、後述する実施形態では、補助要求転送部７０５を備えることとしており、本図においてもこれをあらかじめ図示している。
【０１１６】
本処理が開始されると、補助装置１０３は、ＮＩＣ  ３０９を介して、他の通信機器（中央装置１０２、他の補助装置１０３や要求元装置１０４のほか、種々の通信機器を含む。）から送信されたパケットを受信し（ステップＳ８０１）、当該パケットの種類を調べる（ステップＳ８０２）。
【０１１７】
当該パケットが、中央装置１０２から送信された断片パケットである場合（ステップＳ８０２；断片パケット）、ＮＩＣ  ３０９は、ＣＰＵ  ３０２やＲＡＭ  ３０４等と共働して、受付部７０１として機能したこととなる。そして、当該断片パケットを、外部記憶装置３０７に保存し（ステップＳ８０３）、次のパケットが到達するまで待機した後（ステップＳ８０４）、到達を検知したらステップＳ８０１に戻る。
【０１１８】
なお、断片パケットに電子署名が付されている場合には、ステップＳ８０３において、当該電子署名を確認し、電子署名が承認された場合にのみ、当該断片パケットを外部記憶装置３０７に保存することとしても良い。
【０１１９】
なお、断片パケットの保存の際には、不要な情報を適宜削除したり、情報の検索を高速化するための各種の技術を適用しても良い。したがって、外部記憶装置３０７は、ＣＰＵ  ３０２等と共働して、断片記憶部７０２として機能する。中央装置１０２から配送される断片パケットの個数は、上記のように、必ずしも１つとは限らず、複数の場合もありうる。これにより、将来要求元装置１０４から要求があった場合に、この断片パケットに含まれる情報を応答する準備をする。
【０１２０】
一方、当該パケットが要求元装置１０４から送信された補助要求である場合（ステップＳ８０２；補助要求）、ＮＩＣ  ３０９は、ＣＰＵ  ３０２やＲＡＭ  ３０４等と共働して、補助要求受信部７０３として機能したこととなり、補助要求受信部７０３は、断片記憶部７０２に記憶された断片パケットのうち、受信された補助要求に指定される識別子を持つものが取得できるか判断し（ステップＳ８０５）、可能であれば（ステップＳ８０５；Ｙｅｓ）、これを取得して（ステップＳ８０６）、当該断片パケットを指定する補助応答を要求元装置１０４に送信し（ステップＳ８０７）、ステップＳ８０４に進む。
【０１２１】
すなわち、要求元装置１０４から補助装置１０３への補助要求の送受が行われた場合、各補助装置１０３は、自身が記憶している断片パケットの識別子の項目を見て、要求元装置１０４が要求しているデータの断片を持っているか否かを判断し、持っている場合は、記憶している断片の内容と、元のデータ内における断片の配置位置とを、要求元装置１０４に送信する。これによって、要求元装置１０４は、所望のデータを復元できるようになるのである。
【０１２２】
一方、可能でなければ（ステップＳ８０５；Ｎｏ）、ステップＳ８０４に進む。すなわち、本発明においては、断片パケットを持っていない旨の通知を補助装置１０３から要求元装置１０４に対して行うことはない。補助要求は、複数の補助装置１０３に対して送られるので、断片パケットを返送することができる場合にのみ、補助応答を返せば十分だからである。
【０１２３】
一方、当該パケットが、他の種類のパケットである場合（ステップＳ８０２；その他）、補助装置１０３は、対応する処理を実行して（ステップＳ８０８）、ステップＳ８０４に進む。
【０１２４】
このように、本実施形態では、補助装置１０３が中央装置１０２から配布された断片を「キャッシュ」し、要求元装置１０４からのデータの要求に応じて当該断片を提供するので、中央装置１０２の負荷集中を防止することができる。
【０１２５】
なお、上記のように、到達確認のないプロトコル、たとえばＵＤＰ通信によって補助応答の送受が行われる場合には、当該補助装置１０３自身のＣＰＵ  ３０２の負荷や、ＮＩＣ  ３０９に接続される通信経路の帯域の余裕をステップＳ８０２の後で検知して、当該負荷が一定の閾値を超えない場合にのみ、ステップＳ８０５〜Ｓ８０７の処理を実行することとしても良い。
【０１２６】
（要求元装置）
図９は、本実施形態に係る要求元装置の概要構成を示す模式図である。図１０は、当該要求元装置にて実行されるファイル（データ）取得処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。なお、以下の説明では、要求元装置１０４が上記の情報処理装置３０１上に実現されている場合を例にあげて説明する。
【０１２７】
要求元装置１０４は、補助要求送信部９０１、補助応答受信部９０２、中央要求送信部９０３、中央応答受信部９０４、復元部９０５を備える。
【０１２８】
まず、補助要求送信部９０１は、所望のデータの識別子を指定する補助要求を、複数の補助装置１０３のうち、当該要求元装置１０４に通信可能に接続される補助装置１０３に送信する（ステップＳ１００１）。この補助要求のパケットには、要求の応答先として、当該要求元装置１０４が指定されている。したがって、ＣＰＵ  ３０２は、ＮＩＣ  ３０９等と共働して、補助要求送信部９０１として機能する。
【０１２９】
たとえば、中央装置１０２、補助装置１０３、要求元装置１０４がインターネット内に配置されている場合、理論的には、すべての装置が相互に通信可能であるが、実際には、要求元装置１０４は一部の補助装置１０３としか通信できない場合が多い。この制限は、通信路の容量によるもののほか、そもそも補助装置１０３と通信するための前提となるＩＰアドレスやポート番号がわからないことがあるからである。
【０１３０】
対戦型ネットワークゲームの場合、各プレイヤーは自身の端末を用いて、まずロビーと呼ばれるサーバにアクセスし、このサーバに紹介された端末同士で対戦を行うことがある。たとえば、このような紹介の段階で、（一部の）補助装置１０３のＩＰアドレスやポート番号といった情報が提供されるのである。
【０１３１】
このほか、過去に当該サービスを利用する上で当該要求元装置１０４が通信したことのある他の通信機器を補助要求の送信先の補助装置１０３として選択することも可能である。
【０１３２】
また、プロトコルの上で、放送型のブロードキャスト通信が可能である場合には、補助要求をこの形式で行うことにより、応答可能な補助装置１０３に補助要求を送付することができる。
【０１３３】
この後、要求元装置１０４は、パケットを受信して（ステップＳ１００２）、当該パケットの種類を調べる（ステップＳ１００３）。このパケットの種類が補助応答である場合（ステップＳ１００３；補助応答）、当該補助応答に指定される断片パケットの断片の配置位置がすでに受信済みのものであるか否かを調べ（ステップＳ１００４）、受信済みのものでなければ（ステップＳ１００４；Ｎｏ）、ＲＡＭ  ３０４や外部記憶装置３０７などの一時的な記憶装置に、当該断片パケットを記憶する（ステップＳ１００５）。
【０１３４】
そして、補助装置１０３からの補助応答をさらに待つか判断し（ステップＳ１００６）、さらに待つ場合（ステップＳ１００７；Ｙｅｓ）、次のパケットが検出されるまで待機してから（ステップＳ１００７）、ステップＳ１００２に戻る。
【０１３５】
なお、補助応答をさらに待つか否かの判断であるが、データの復元に必要な断片パケットがすべて揃えば、補助応答をさらに待つ必要はない。これがまだ不足している場合には、以下のような基準を設けて判断を行うことができる。
（ａ）補助要求を送信してから所定の時間が経過したか否か。
（ｂ）補助要求を送信してから、補助応答が順次受信される時間間隔を調べ、当該時間間隔が所定の閾値よりも長くなったか否か。
（ｃ）補助要求を送信してから、補助応答が順次受信される時間間隔の履歴から、次の時間間隔の期待値を種々の補外技術により推測し、当該推測された時間間隔が所定の閾値よりも長くなったか否か。
【０１３６】
一方、それ以外のパケットである場合（ステップＳ１００３；その他）、当該パケットに対応する処理を実行して（ステップＳ１００８）、ステップＳ１００７に進む。
【０１３７】
また、断片パケットに電子署名が付されている場合は、ステップＳ１００５において、当該電子署名から見て当該断片パケットが有効か否かを判断し、これが認証された場合にのみ、外部記憶装置３０７に断片パケットを保存することとしても良い。以下同様である。
【０１３８】
このように、ＣＰＵ  ３０２は、ＲＡＭ  ３０４や外部記憶装置３０７、ＮＩＣ  ３０９等と共働して、補助応答受信部９０２として機能することとなる。
【０１３９】
さて、補助応答を待たないこととした場合（ステップＳ１００６；Ｎｏ）、要求元装置１０４は、データの復元に必要な断片パケットがすべて揃っているか否かを判断し（ステップＳ１００９）、揃っていなければ（ステップＳ１００９；Ｎｏ）、断片パケットが不足している配置位置を取得して（ステップＳ１０１０）、当該識別子と、当該不足している断片の配置位置を指定する中央要求を、中央装置１０２に送信する（ステップＳ１０１１）。
【０１４０】
したがって、ＣＰＵ  ３０２は、ＲＡＭ  ３０４や外部記憶装置３０７、ＮＩＣ  ３０９等と共働して、中央要求送信部９０３として機能することとなる。
【０１４１】
この後、要求元装置１０４は、パケットを受信して（ステップＳ１０１２）、当該パケットの種類を調べる（ステップＳ１０１３）。このパケットの種類が中央応答もしくは補助応答である場合（ステップＳ１０１３；中央応答／補助応答）、当該中央応答・補助応答に指定される断片パケットの断片の配置位置がすでに受信済みのものであるか否かを調べ（ステップＳ１０１４）、受信済みのものでなければ（ステップＳ１０１４；Ｎｏ）、ＲＡＭ  ３０４や外部記憶装置３０７などの一時的な記憶装置に、当該断片パケットを記憶する（ステップＳ１０１５）。
【０１４２】
そして、中央装置１０２もしくは補助装置１０３からの中央応答・補助応答をさらに待つか判断し（ステップＳ１０１６）、さらに待つ場合（ステップＳ１０１６；Ｙｅｓ）、次のパケットが検出されるまで待機してから（ステップＳ１０１７）、ステップＳ１０１２に戻る。
【０１４３】
ここで、中央応答のみならず補助応答も考慮するのは、補助装置１０３の通信ネットワーク内でのトポロジー的な位置や通信路の帯域の状況によっては、補助応答がこのように遅れて到達する可能性があるからである。
【０１４４】
したがって、ＣＰＵ  ３０２は、ＲＡＭ  ３０４や外部記憶装置３０７、ＮＩＣ  ３０９等と共働して、中央応答受信部９０４として機能することとなる。
【０１４５】
ここで、中央応答・補助応答をさらに待つかの基準は、上記のステップＳ１００７における補助応答の場合と同様に考えれば良い。
【０１４６】
一方、パケットの種類が存在しないデータを要求した旨のエラー通知である場合（ステップＳ１０１３；エラー通知）、その旨を報告して（ステップＳ１０１８）、本処理を終了する。
【０１４７】
パケットの種類がこれ以外のものである場合（ステップＳ１０１３；その他）、当該パケットに対応する処理を実行して（ステップＳ１０１９）、ステップＳ１０１７に進む。
【０１４８】
さて、中央応答・補助応答を待たない場合（ステップＳ１０１６；Ｎｏ）、データの復元に必要な断片パケットがすべて揃っているか否かを判断し（ステップＳ１０２０）、揃っていなければ（ステップＳ１０２０；Ｎｏ）、その旨を報告して（ステップＳ１０２１）、本処理を終了する。
【０１４９】
一方、必要な断片パケットがすべてが揃っていれば（ステップＳ１００９；Ｙｅｓ、ステップＳ１０２０；Ｙｅｓ）、各断片パケットから配置位置の順に断片を取得して連結することにより、所望のデータを復元し（ステップＳ１０２２）、本処理を終了する。
【０１５０】
したがって、ＣＰＵ  ３０２は、ＲＡＭ  ３０４や外部記憶装置３０７等と共働して、復元部９０５として機能することとなる。
【０１５１】
このように、本実施形態の要求元装置１０４は、補助装置１０３から収集した断片に関する情報と、それで足りない場合にはさらに中央装置１０２から取得した断片に関する情報と、から、元のデータを復元するのである。
【０１５２】
このように、本実施形態によれば、要求元装置１０４があるデータを取得したいと考えた場合に、中央装置１０２へのアクセスをできるだけ少なくし、補助装置１０３に分散された記憶されたデータの断片を収集することによって、所望のデータを復元するようなデータ処理システムを提供することができる。
【０１５３】
なお、上記の実施形態では、中央応答にデータの断片が含まれることとなるが、中央装置１０２は、データの断片にかえて必要なデータの断片を所有する補助装置１０３を指定するあっせん情報を中央応答に含めることとし、中央応答を受信した要求元装置１０４が、中央応答内のあっせん情報に指定される補助装置１０３に補助要求を発することとしても良い。一般に、データの断片のサイズよりも補助装置１０３を指定する情報のサイズの方が圧倒的に小さいため、この実施態様を採用することによって、中央装置１０２の負荷を補助装置１０３に分散させることができるようになる。
【０１５４】
また、「識別子」としてファイル名とバージョン番号の組合せを使用することも可能である。データの指定にファイル名のみが指定された場合には、最新のファイルが指定されたものとして扱い、バージョン番号も指定された場合には、そのバージョンのファイルが指定されたものとして扱うのである。
【０１５５】
「識別子」として「ファイル○○のうちバージョン○○以降のいずれかのバージョン」なども使用できることとしても良い。この場合は、補助応答で複数のバージョンの断片が収集された場合には、要求元装置１０４では最新のバージョンを採用するか、最初にすべての断片が揃ったバージョンを採用する等、種々の態様を採用することができる。
【０１５６】
このように、本実施形態は、種々の補助装置１０３に分散して配置することができるため、負荷分散に好適であるほか、頻繁に使用されるバージョンが複数ある場合であっても、ファイルのバージョン管理を適切に行うのにも好適である。
【実施例２】
【０１５７】
上記実施形態では、要求元装置１０４から送信された補助要求は、直接これを受信した補助装置１０３によってのみ処理されており、これらが保存していない断片パケットを要求元装置１０４と直接通信しない補助装置１０３が所有している場合であっても、中央装置１０２への中央要求の送信が生じてしまっていた。本実施形態では、このような場合であっても、できるだけ中央要求を行わないようにするものである。
【０１５８】
すなわち、要求元装置１０４において、補助要求送信部９０１は、当該補助要求の断片パケットに、さらに以下の情報を付加する。
（ａ）他の補助要求と重複しない識別子
（ｂ）当該要求の寿命
【０１５９】
この識別子と寿命の情報を用いて、以降に説明するように、補助要求をネットワーク内で伝播させるのである。寿命の情報は、典型的には０以上の整数であり、いわゆる最長ホップ数に相当するものである。
【０１６０】
そして、上記の補助装置１０３における応答処理において、適宜処理を追加する。図１１は、本実施形態における応答処理の制御の流れを示すフローチャートのうち、上述の実施形態との相異点を示す部分である。
【０１６１】
すなわち、補助装置１０３は、上記実施形態のステップＳ８０２とステップＳ８０５との間で、以下の処理を行うのである。
【０１６２】
まず、受信された補助要求に指定された識別子が、過去に受信された補助要求に指定された識別子のいずれとも異なるか否かを判断する（ステップＳ８５１）。いずれとも異なる場合（ステップＳ８５１；Ｙｅｓ）、受信された補助要求に指定された寿命を減じ（ステップＳ８５２）、当該寿命が尽きたか否かを判断し（ステップＳ８５３）、尽きない場合は（ステップＳ８５３；Ｎｏ）、減じた寿命を指定する補助要求を、他の補助装置１０３に転送して（ステップＳ８５４）、ステップＳ８０５に進む。
【０１６３】
転送の際は、当該補助要求が、要求元装置１０４から受信したものか、他の補助装置１０３の中継を経たものかを判断して、中継を経ている場合には、当該中継元の補助装置１０３には、ステップＳ８５４における転送は必要がない。
【０１６４】
また、転送の際には、当該補助要求の応答先の情報については、維持するものとし、転送先の補助装置１０３が補助応答を返す場合には、要求元装置１０４に直接返送ができるようにしておく。
【０１６５】
また、上記のように、寿命は典型的には整数で表現されるので、寿命を減ずるには１を減算し、寿命が尽きたか否かは値が０以下（０未満）になったか否かで判断すれば良い。
【０１６６】
一方、過去に受信された補助要求に指定された識別子に一致するものがある場合（ステップＳ８５１；Ｎｏ）や、寿命が尽きた場合（ステップＳ８５３；Ｙｅｓ）、転送は行わずにステップＳ８０５に進む。
【０１６７】
なお、寿命を減ずるのは、さらに、受信された補助要求に指定された識別子に対応付けられる断片が、断片記憶部７０２に記憶されていない場合に限ることとしても良い。この場合は、寿命は、断片を記憶している補助装置１０３に限った最長ホップ数を意味することになる。
【０１６８】
また、過去に転送したことのある補助要求か否かは、補助要求に指定される識別子（いわゆる「メッセージＩＤ」である。）によって判別される。
【０１６９】
さて、適宜転送を行った後は、受信された補助要求の吟味に入るが、本実施形態では、受信された補助要求の直近の送信元は、要求元装置１０４である場合と、他の補助装置１０３である場合とが考えられる。しかしながら、上記のように、補助要求を転送する場合であっても、補助応答の送信先、すなわち、大元の要求元装置１０４を指定する情報はそのまま維持されるので、ステップＳ８０７においては、直接要求元装置１０４に断片パケットを指定する補助応答を送信することになる。
【０１７０】
本発明によれば、要求元装置１０４が直接その所在を知らない補助装置１０３であっても、その補助装置１０３へ達するような所定のホップ数以下の経路が存在する場合には、当該補助装置１０３からも断片の提供を受けることができるようになる。
【実施例３】
【０１７１】
上記実施形態の要求元装置１０４は、所望のデータの断片パケットをすべて収集することが期待される。したがって、当該断片パケットの一部を外部記憶装置３０７に記憶することとし、当該要求元装置１０４が実現される情報処理装置３０１を、上記の補助装置１０３として機能させることも可能である。
【０１７２】
この場合、断片パケットは、中央装置１０２から直接送信されたものではなく、過去に自身がデータを復元しようとして他の補助装置から受信したもの、ということになる。
【０１７３】
どの断片パケットを利用して自身を補助装置１０３としても機能するようにするか、であるが、残すべき断片パケットは、以下のような判断基準で選択することができる。
（ａ）乱数を発生させて、当該乱数に基づいてランダムに選択する。最も容易な選択方法である。
（ｂ）中央装置１０２から中央応答により提供された断片パケットを選択する。複数ある場合には、適宜ランダムに選択する。
（ｃ）補助装置１０３から補助応答により提供された断片パケットのうち、最も後に到達したものを選択する。最も後に到達したもの複数の中から、適宜ランダムに選択しても良い。
（ｄ）上記（ｂ）（ｃ）のいずれか、もしくは、双方を用いる。たとえば、中央要求を出さなかった場合は（ｃ）、出した場合は（ｂ）とする等である。また、（ｂ）（ｃ）の両方で選択されたものを両方採用することとしても良い。
【０１７４】
上記（ｂ）〜（ｄ）によれば、当該情報処理装置３０１周辺の機器には、当該断片パケットを保持している補助装置１０３がないか、少ないと予想されるので、補助装置１０３における断片パケットの分布の不均衡をならすことが期待され、データ処理システム１０１全体の性能向上に貢献することができる。
【０１７５】
このほか、上記実施形態からもわかる通り、要求元装置１０４、補助装置１０３、中央装置１０２の間での断片パケットの送受を中継する他の情報処理装置が、断片パケットの内容を当該データが自身にとって必要なものであるか否かをチェックし、必要なものである場合には、自ら要求パケットを送ることなく、中継する断片パケットを自身でも使用するように構成することもできる。このように構成することにより、全体としてのパケット流通量を減少させることができ、データ処理システム１０１全体の性能向上に貢献することができる。
【０１７６】
また、補助要求や中央要求、断片パケットに、それが過去に通過した機器を記録すれば、経路探索情報を収集することができるとともに、過去に通過した機器への送信を行わず、未通過の機器のみに送信することができるようになる。これによって、無駄なパケットの送受を防止することができ、データ処理システム１０１全体の性能向上に貢献することができる。
【産業上の利用可能性】
【０１７７】
以上説明したように、本発明によれば、ネットワーク経由でデータを取得する際に、一つの装置にアクセスが集中することをできるだけ防止するのに好適なデータ処理システム、中央装置、補助装置、要求元装置、中央サービス方法、補助サービス方法、要求元方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができ、各種のデータ配布技術に適用することができる。
【図面の簡単な説明】
【０１７８】
【図１】本発明の実施形態の１つに係るデータ処理システムの概要構成を示す説明図である。
【図２】本実施形態における通信の様子を示すシーケンス図である。
【図３】本実施形態における中央装置、補助装置、あるいは、要求元装置が実現される情報処理装置の概要構成を示す模式図である。
【図４】本実施形態に係る中央装置の概要構成を示す模式図である。
【図５】本実施形態に係る中央装置にて実行される分割配送処理の制御の流れを示すフローチャートである。
【図６】本実施形態に係る中央装置にて実行される中央応答処理の制御の流れを示すフローチャートである。
【図７】本実施形態に係る補助装置の概要構成を示す模式図である。
【図８】本実施形態に係る補助装置にて実行される補助応答処理の制御の流れを示すフローチャートである。
【図９】本実施形態に係る要求元装置の概要構成を示す模式図である。
【図１０】当該要求元装置にて実行されるファイル（データ）取得処理の制御の流れを示すフローチャートである。
【図１１】その他の実施形態における応答処理の制御の流れのうち、上述の実施形態との相異点を示すフローチャートである。
【符号の説明】
【０１７９】
１０１  データ処理システム
１０２  中央装置
１０３  補助装置
１０４  要求元装置
１０５  インターネット
３０１  情報処理装置
３０２  ＣＰＵ
３０３  ＲＯＭ
３０４  ＲＡＭ
３０５  入力装置
３０６  表示装置
３０７  外部記憶装置
３０８  媒体読取装置
３０９  ＮＩＣ
５０１  データ記憶部
５０２  分割部
５０３  配送部
５０４  中央要求受信部
５０５  中央応答送信部
７０１  受付部
７０２  断片記憶部
７０３  補助要求受信部
７０４  補助応答送信部
７０５  補助要求転送部
９０１  補助要求送信部
９０２  補助応答受信部
９０３  中央要求送信部
９０４  中央応答受信部
９０５  復元部
【図１】
2006209343.tif 000003
【図２】
2006209343.tif 000004
【図３】
2006209343.tif 000005
【図４】
2006209343.tif 000006
【図５】
2006209343.tif 000007
【図６】
2006209343.tif 000008
【図７】
2006209343.tif 000009
【図８】
2006209343.tif 000010
【図９】
2006209343.tif 000011
【図１０】
2006209343.tif 000012
【図１１】
2006209343.tif 000013