(57)【要約】  本情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、第２のデータを管理する情報処理装置が第１の情報処理装置である場合に、第２のデータをデータ格納部から読み出し、キャッシュに展開する処理を含む。
2014155553.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法であって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、前記第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開する
処理を実行する情報処理方法。
【請求項２】
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置ではない場合に、前記複数の情報処理装置のうち前記第２のデータを管理する情報処理装置に対し、前記第２のデータをキャッシュに展開することを要求する第１の要求を送信する
処理をさらに実行する請求項１記載の情報処理方法。
【請求項３】
前記第１のデータに対するアクセスが終了した場合に、前記キャッシュに展開されている前記第１のデータのデータを削除する
処理をさらに実行する請求項１又は２記載の情報処理方法。
【請求項４】
複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法であって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、
前記複数の情報処理装置のうち第１のデータを管理する情報処理装置から、前記第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと前記所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、前記第１のデータと前記所定の関連性を有する第２のデータの識別情報を抽出し、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の要求の送信元の情報処理装置に送信する
処理を実行する情報処理方法。
【請求項５】
データの内容の関連性、データの格納場所及びデータのタイムスタンプの少なくともいずれかに基づき、前記関連データ格納部に格納されているデータを更新する
処理をさらに実行する請求項４記載の情報処理方法。
【請求項６】
前記分散処理システムにおけるデータへのアクセスの履歴に基づき、前記関連データ格納部に格納されているデータを更新する
処理をさらに実行する請求項４記載の情報処理方法。
【請求項７】
複数の情報処理装置によりデータの処理を行う分散処理システムにおいてキャッシュを管理するためのプログラムであって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置に、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、前記第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開する
処理を実行させるためのプログラム。
【請求項８】
複数の情報処理装置によりデータの処理を行う分散処理システムにおいてキャッシュを管理するためのプログラムであって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置に、
前記複数の情報処理装置のうち第１のデータを管理する情報処理装置から、前記第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと前記所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、前記第１のデータと前記所定の関連性を有する第２のデータの識別情報を抽出し、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の要求の送信元の情報処理装置に送信する
処理を実行させるためのプログラム。
【請求項９】
第１のデータに対するアクセスがあった場合に、データ間の関連性を管理する情報処理装置から、前記第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得する取得部と、
前記第２のデータを管理する情報処理装置が自情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開するキャッシュ処理部と、
を有する情報処理装置。
【請求項１０】
データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部と、
第１のデータを管理する情報処理装置から、前記第１のデータと前記所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、前記関連データ格納部から、前記第１のデータと前記所定の関連性を有する第２のデータの識別情報を抽出する抽出部と、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の要求の送信元の情報処理装置に送信する送信部と、
を有する情報処理装置。
【請求項１１】
複数の情報処理装置によりデータの処理を行う情報処理システムであって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記複数の情報処理装置のうちデータ間の関連性を管理する第２の情報処理装置から、前記第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を、前記第２のデータについての情報を要求する第１の要求を前記第２の情報処理装置に送信することにより取得する取得部と、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開するキャッシュ処理部と、
を有し、
前記第２の情報処理装置が、
データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部と、
前記第１の情報処理装置から前記第１の要求を受信した場合に、前記関連データ格納部から、前記第１のデータと前記所定の関連性を有する前記第２のデータの識別情報を抽出する抽出部と、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の情報処理装置に送信する送信部と、
を有する分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理技術に関する。
【背景技術】
【０００２】
近年、ウェブサイト、センサ或いは携帯端末等において発生する大量のデータ（以下、ビッグデータと呼ぶ）を短時間で処理する技術が求められている。【０００３】
ビッグデータを処理する技術として、ハドゥープ（Ｈａｄｏｏｐ）という分散処理フレームワークが知られている。Ｈａｄｏｏｐにおいては、マップリデュース（ＭａｐＲｅｄｕｃｅ）という分散処理方式に基づき１つのファイルを複数のファイルに分割し、複数のノードがファイルを並列処理する。Ｈａｄｏｏｐは、ノード数の増加に応じて処理性能が線形に高くなることを特徴とする。そのため、Ｈａｄｏｏｐを利用すれば、例えば数ペタバイト以上のデータを数十から数千のノードで処理するような大規模なシステムを比較的容易に実現することができる。【０００４】
Ｈａｄｏｏｐは、分散処理を効果的に行うため、ＨＤＦＳ（Hadoop Distributed File System）と呼ばれる分散ファイルシステムを採用している。ＨＤＦＳは、ファイルを特定の大きさに分割し、分割されたファイルを複数のサーバに分散して格納すると共に、分割されたファイルの複製を生成し、複製元のファイルを保持するサーバとは別のサーバに保持させる。分散処理においては、複製元のファイル及び複製されたファイルのいずれかを処理すればよいため、ＨＤＦＳが作業プロセスが空いているサーバに処理を振り分けることにより、サーバのリソース（ＣＰＵ（Central Processing Unit）資源等）を有効に利用できる。【０００５】
しかし、ＨＤＦＳ等の分散ファイルシステムは、処理の振り分けの際にＯＳ（Operating System）のキャッシュの状態を考慮しない。そのため、分散処理システムは、あるサーバのキャッシュ上にデータがあってもそれを考慮せず別のサーバに処理を振り分けてしまうので、ディスクＩ／Ｏ（Input／Output）が発生する。ディスクＩ／Ｏは時間がかかる処理であり、例えば数ギガバイトのデータの処理に要する時間の約半分をディスクのシーク時間が占めることがある。【０００６】
図１を用いて、分散ファイルシステムによるビッグデータの処理について説明する。サーバ１のディスクにはファイルＡが格納されており、サーバ２のディスクにはファイルＢが格納されており、サーバ３のディスクにはファイルＢの複製及びファイルＣが格納されている。また、サーバ３のキャッシュにはファイルＢが展開されている。分散処理システムにおけるいずれかのサーバに配置されたアプリケーションプログラムは、ファイルＡ、ファイルＢ、ファイルＣの順に処理を行う。アプリケーションプログラムは、サーバ１におけるファイルＡに対する処理をした後、サーバ２又はサーバ３におけるファイルＢに対して処理をする。サーバ３におけるファイルＢに対して処理をすれば、キャッシュを利用できるためディスクＩ／Ｏは発生しない。しかし、サーバ２又はサーバ３のいずれを選択するかは、サーバ２又はサーバ３における空きプロセスの状況等によるため、サーバ２を選択する場合もある。その場合にはディスクＩ／Ｏが発生するため、ファイルに対する処理の完了までの時間が大幅に遅れる。【０００７】
よって、ファイルに対する処理を短時間で完了させるという観点から、分散処理システムにおけるキャッシュヒット率を向上させることが好ましい。【０００８】
分散処理及びキャッシュの管理については、例えば以下のような技術が知られている。具体的には、ＭａｐＲｅｄｕｃｅ処理システムが、処理対象のデータを、データの更新頻度に基づき複数のグループに分け、グループに含まれるデータの更新頻度に基づきグループ更新頻度を計算する。そして、ＭａｐＲｅｄｕｃｅ処理システムは、グループ更新頻度が閾値以下であるグループに対するＭａｐＲｅｄｕｃｅ処理段階の部分的結果を生成し、生成された部分的結果をキャッシュする。これによりＭａｐＲｅｄｕｃｅ処理においてキャッシュを有効に利用する。【０００９】
また、キャッシュの有効利用に関して、以下のような技術も存在する。具体的には、ファイルのオープン時にファイルの全体又は部分領域のデータを多重化して複数のドライブに分散配置すると共に、ファイルのクローズ時にファイルの多重化データを消去する。【００１０】
また、複数のクライアントから特定のファイルサーバにアクセス要求が集中することによるスループットの低下を防ぐ技術が存在する。具体的には、マスタファイルサーバが、負荷が軽いファイルサーバを選定し、選定されたファイルサーバに、クライアント計算機から伝送されたファイルアクセス要求を分配する。【００１１】
また、広域ネットワークの状態に関わらず高速なファイルアクセスを提供するための技術が存在する。具体的には、キャッシュサーバは、ファイルアクセスを記録するアクセス履歴データベースを有しており、アクセス履歴データベースによってアクセス頻度が高いファイルの更新間隔を分析し、先読みすべきファイルを決定する。そして、キャッシュサーバは、広域ネットワークが空いている時間帯にアクセス頻度が高いファイルを先読みし、クライアントからの要求に対し先読みしたファイルを渡す。【００１２】
また、クライアントにログインするユーザ毎に、使用頻度が高いファイルを優先的にキャッシングすることにより、キャッシュヒット率を向上させ、ファイルアクセスを高速化する技術が存在する。【００１３】
しかしながら、これらの技術を利用したとしても、分散処理システムにおけるキャッシュヒット率を十分に向上させることができない場合がある。また、サーバにおけるキャッシュを有効に利用するという観点において、従来技術は十分ではない。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】Jeffrey Dean and Sanjay Ghemawat，"MapReduce: Simplified Data Processing on Large Clusters"，[online]，２００４年１２月，Symposium on Operating System Design and Implementation 2004 ，[平成２５年１月１０日検索]，インターネット＜URL:http://research.google.com/archive/mapreduce.html＞
【特許文献】
【００１５】
【特許文献１】特開２０１０−９２２２２号公報
【特許文献２】特開平６−３３２６２５号公報
【特許文献３】特開平６−３３２７８２号公報
【特許文献４】特開平１１−２４９８１号公報
【特許文献５】特開平７−９３２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
従って、本発明の目的は、１つの側面では、分散処理システムにおけるキャッシュヒット率を向上させるための技術を提供することである。
【課題を解決するための手段】
【００１７】
本発明の第１の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、第２のデータを管理する情報処理装置が第１の情報処理装置である場合に、第２のデータをデータ格納部から読み出し、キャッシュに展開する処理を含む。【００１８】
本発明の第２の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、複数の情報処理装置のうち第１のデータを管理する情報処理装置から、第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、第１のデータと所定の関連性を有する第２のデータの識別情報を抽出し、抽出された第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、第１の要求の送信元の情報処理装置に送信する処理を含む。
【発明の効果】
【００１９】
分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【図面の簡単な説明】
【００２０】
【図１】図１は、分散処理システムによるビッグデータの処理について説明するための図である。
【図２】図２は、本実施の形態におけるシステム概要を示す図である。
【図３】図３は、構成的関連性に基づき生成された関連ファイルデータの一例を示す図である。
【図４】図４は、統計的関連性に基づき生成された関連ファイルデータの一例を示す図である。
【図５】図５は、統計的関連性に基づく関連ファイルデータの生成について説明するための図である。
【図６】図６は、関連ファイルデータ格納部の詳細なデータ構造の一例を示す図である。
【図７】図７は、アプリケーションプログラムがファイルに対するアクセスを行う場合に行われる処理の処理フローを示す図である。
【図８Ａ】図８Ａは、先読み処理の処理フローを示す図である。
【図８Ｂ】図８Ｂは、先読み処理の処理フローを示す図である。
【図９】図９は、先読み処理について説明するための図である。
【図１０】図１０は、共有ディスク型の場合における先読み処理について説明するための図である。
【図１１】図１１は、アプリケーションプログラムがファイルに対するアクセスを行う場合に行われる処理の処理フローを示す図である。
【図１２】図１２は、破棄処理の処理フローを示す図である。
【図１３】図１３は、破棄処理について説明するための図である。
【図１４】図１４は、キャッシュヒット率の向上について説明するための図である。
【図１５】図１５は、ファイルを格納する場合に行われる処理の処理フローを示す図である。
【図１６】図１６は、ファイル格納要求について説明するための図である。
【図１７】図１７は、共有ディスク型の場合におけるファイル格納要求について説明するための図である。
【図１８】図１８は、ユーザが関連を指定した場合に行われる処理の処理フローを示す図である。
【図１９】図１９は、キャッシュのライフサイクルの一例を示す図である。
【図２０】図２０は、本実施の形態におけるシステム概要の他の例を示す図である。
【図２１】図２１は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００２１】
図２に、本実施の形態における分散処理システムの概要を示す。例えばインターネットであるネットワーク５には、管理サーバ１と、複数のサーバ３とが接続されている。図２に示した分散処理システムにおいては、サーバ３におけるアプリケーションプログラム３５が、複数のサーバ３のうちいずれかのサーバ３が管理するファイルに対する処理を行う。
【００２２】
管理サーバ１は、システム管理部１００と、関連ファイルデータ格納部１０８と、ログ格納部１０９とを有する。システム管理部１００は、通信制御部１０１と、システムデータ管理部１０２と、構成管理部１０３と、インデックス管理部１０５、メタデータ管理部１０６及び統計データ管理部１０７を含むファイル管理部１０４とを有する。
【００２３】
通信制御部１０１は、通信のための処理を行う。システムデータ管理部１０２は、分散処理システムにおいて共有するデータ（例えばファイルのブロックサイズ又は複製されたファイルの数等）を管理する。構成管理部１０３は、分散処理システムにおけるクラスタの構成の管理及び死活監視等を行う。ファイル管理部１０４は、関連ファイルデータ格納部１０８に格納されているデータ及びログ格納部１０９に格納されているデータを管理する処理等を行う。インデックス管理部１０５は、各サーバが管理しているファイルを二分木構造のファイルインデックスにより管理する。メタデータ管理部１０６は、ファイルのメタデータ（例えば、ファイルのサイズ及びファイルの所有者等）を管理する。統計データ管理部１０７は、ログ格納部１０９に格納されているデータを用いてファイル間の統計的関連を特定することにより、関連ファイルデータ格納部１０８に格納されているデータを更新する。
【００２４】
図３に、関連ファイルデータ格納部１０８に格納される関連ファイルデータの一例を示す。図３の例では、関連ファイルデータは、ファイルの識別子とそのファイルに関連するファイル（以下、関連ファイルと呼ぶ）の識別子とを含む。関連ファイルは、特定のファイルに対するアクセスがあった場合に、そのアクセスがあったタイミングの近傍のタイミングにおいてアクセスされる可能性が高いファイルである。
【００２５】
関連性には、構成的関連性と統計的関連性とユーザの指定による関連性とがある。図３に示した関連ファイルデータは、構成的関連性に基づき生成された関連ファイルデータである。構成的関連性があるファイルとは、例えば、元は１つであったファイルを分割することにより得られた複数のファイル、同一又は近傍のディレクトリに格納されているファイル、又は同じタイムスタンプを有するファイル等である。構成的関連性があるファイルは、例えばバッチ処理のような一括処理において一遍にアクセスされる可能性が高い。図３に示した関連ファイルデータは、ファイルＡ−１、ファイルＡ−２及びファイルＡ−３はファイルＡを分割することにより得られたファイルであるため、これらのファイルが構成的関連を有していることを表している。また、ファイルＢ−１は、ファイルＡ−１と同一又は近傍のディレクトリに格納されているか又は同一のタイムスタンプを有している。
【００２６】
図４に、統計的関連性に基づき生成された関連ファイルデータの一例を示す。図４の例では、関連ファイルデータは、ファイルの識別子と、関連ファイルの識別子と、関連ファイルにアクセスされた回数を示す数値とを含む。関連ファイルにアクセスされた回数は、対象のファイルに対するアクセスがあった後所定時間内に関連ファイルにアクセスがあった回数を表す。
【００２７】
統計的関連性に基づき生成された関連ファイルデータは、図５に示すように、統計データ管理部１０７がログ格納部１０９に格納されているアクセスログに基づき生成する。図５の左側には、アクセスログが示されており、図５の右側には統計的関連性に基づき生成された関連ファイルデータが示されている。例えばバッチ処理等においては、所定の時刻にファイルにアクセスしたり、所定の順番でファイルにアクセスすることがある。そこで、アクセスログを利用し、所定の条件（例えば、所定時間内のアクセスであるという条件、所定のアクセス順序であるという条件、又は所定の利用者によるアクセスであるという条件等）に合致すると判断された場合には、関連ファイルであるとみなす。
【００２８】
なお、統計的関連性に基づく関連ファイルデータは、関連性が高い（例えば、アクセス回数が多い）関連ファイルほどチェーン構造における先頭に近付くように生成される。
【００２９】
なお、ユーザの指定により関連性を定義すれば、アクセスパターンが固定されている場合に特に有効である。
【００３０】
図６に、関連ファイルデータ格納部１０８の詳細なデータ構造の一例を示す。関連ファイルの情報は、分散ファイルシステムが管理するファイルの情報の属性の一つである。図６の例では、インデックス管理部１０５が管理するファイルインデックス５０に、ファイル情報５１へのリンクが張られている。ファイル情報５１の構造体には、そのファイルの関連ファイルの情報へのポインタメンバが含まれる。
【００３１】
関連ファイルデータ５２はチェーン構造であり、関連ファイルの情報へのリンクが連結される。関連ファイルデータ５２の構造体には、ファイル識別子と、関連付けられるファイル情報のアドレスと、関連ファイルの格納場所を示す情報と、アクセス回数を示すカウンタと、次の関連ファイルのアドレスとが含まれる。カウンタの値が大きいほどアクセスされる可能性が高い関連ファイルであるため、優先的にキャッシュ３６に展開される。
【００３２】
図２の説明に戻り、サーバ３は、クライアント管理部３０と、アプリケーションプログラム３５と、キャッシュ３６と、ファイル格納部３７とを有する。クライアント管理部３０は、通信制御部３１と、アクセス制御部３３及び先読み処理部３４を含むファイル管理部３２とを有する。先読み処理部３４は、取得部３４１と、キャッシュ処理部３４２とを有する。
【００３３】
通信制御部３１は、通信のための処理を実行する。アクセス制御部３３は、ファイルアクセスを制御する処理を行う。取得部３４１は、関連ファイルの情報を管理サーバ１から取得する処理等を行う。キャッシュ処理部３４２は、関連ファイルをキャッシュ３６に展開する処理等を行う。アプリケーションプログラム３５は、ファイル格納部３７に格納されているファイルに対する処理を行う。キャッシュ３６は、例えばメモリ領域等に確保されたディスクキャッシュである。ファイル格納部３７は、例えばハードディスク等に確保された、ファイルを格納するための領域である。
【００３４】
次に、図７乃至図１９を用いて、図２に示したシステムの動作について説明する。まず、図７乃至図１４を用いて、アプリケーションプログラム３５がファイルに対するアクセスを行う場合の動作について説明する。
【００３５】
図２に示したシステムにおける複数のサーバ３のうちいずれかのサーバ３（ここでは、サーバＡとする）におけるアプリケーションプログラム３５は、特定のファイルに対するアクセスを行うとする。この場合、サーバＡにおけるアプリケーションプログラム３５は、アクセス対象のファイルの指定を含むファイルオープン要求を管理サーバ１に送信する（図７：ステップＳ１）。
【００３６】
管理サーバ１における通信制御部１０１は、ファイルオープン要求をサーバＡから受信すると（ステップＳ３）、ファイル管理部１０４に出力する。ファイル管理部１０４におけるインデックスル管理部１０５は、ファイルオープン要求において指定されたファイルの格納場所をファイルインデックスを用いて特定する（ステップＳ５）。インデックス管理部１０５は、ファイルの格納場所を示すデータを通信制御部１０１に出力する。
【００３７】
ファイル管理部１０４は、ログ格納部１０９に格納されているアクセスログ及び関連ファイルデータ格納部１０８に格納されているデータを更新する（ステップＳ７）。具体的には、ファイル管理部１０４における統計データ管理部１０７が、今回のアクセスについてのデータをアクセスログに追加することでアクセスログを更新する。また、統計データ管理部１０７は、アクセスログの更新を反映するように関連ファイルデータ格納部１０８に格納されているデータを更新する。
【００３８】
通信制御部１０１は、インデックス管理部１０５から受け取った、ファイルの格納場所を示すデータを、サーバＡに送信する（ステップＳ９）。
【００３９】
サーバＡにおけるアプリケーションプログラム３５は、ファイルの格納場所を示すデータを管理サーバ１から受信する（ステップＳ１１）。そして、アプリケーションプログラム３５は、ファイルの格納場所（ここではサーバＢとする）を示すデータに従い、アクセス対象のファイルの指定を含むファイルオープン要求をサーバＢに送信する（ステップＳ１３）。
【００４０】
サーバＢは、ファイルオープン要求をサーバＡから受信する（ステップＳ１５）。そして、サーバＢにおけるアクセス制御部３３は、ファイルオープン要求において指定されたファイルのオープン処理（すなわち、ファイルの使用を開始するための処理）を実行し、ファイルをキャッシュ３６に展開する（ステップＳ１７）。なお、ファイルオープン要求において指定されたファイルは、ファイル格納部３７から読み出される。
【００４１】
そして、先読み処理部３４は、先読み処理を実行する（ステップＳ１９）。先読み処理については、図８Ａ乃至図１０を用いて説明する。
【００４２】
まず、先読み処理部３４は、アクセス対象のファイルについて関連ファイルリストを要求する関連ファイル要求を管理サーバ１に送信する（図８Ａ：ステップＳ６１）。
【００４３】
図８Ｂを用いて、関連ファイル要求を受信した管理サーバ１の処理について説明する。管理サーバ１における通信制御部１０１は、関連ファイル要求をサーバＢから受信する（図８Ｂ：ステップＳ６２）。通信制御部１０１は、関連ファイル要求をファイル管理部１０４に出力する。
【００４４】
ファイル管理部１０４は、アクセス対象のファイルに対応する関連ファイルの識別子及び当該関連ファイルの格納場所（すなわち、関連ファイルを管理するサーバの識別子）を関連ファイルデータ格納部１０８から抽出する（ステップＳ６３）。ファイル管理部１０４は、関連ファイルの識別子及び関連ファイルを管理するサーバの識別子を通信制御部１０１に出力する。なお、関連ファイルの識別子及び当該関連ファイルを管理するサーバの識別子は複数である場合もある。また、関連ファイルが無い場合もある。
【００４５】
通信制御部１０１は、関連ファイルの識別子及び当該関連ファイルを管理するサーバの識別子を含む関連ファイルリストをサーバＢに送信する（ステップＳ６４）。そして処理を終了する。
【００４６】
これに応じ、サーバＢにおける先読み処理部３４は、関連ファイルリストを管理サーバ１から受信し（ステップＳ６５）、メインメモリ等の記憶装置に格納する。
【００４７】
先読み処理部３４は、関連ファイルリストに未処理の関連ファイルが有るか判断する（ステップＳ６６）。未処理の関連ファイルが無い場合（ステップＳ６６：Ｎｏルート）、元の処理に戻る。未処理の関連ファイルが有る場合（ステップＳ６６：Ｙｅｓルート）、先読み処理部３４は、未処理の関連ファイルを１つ特定し、当該関連ファイルが自サーバ（すなわちサーバＢ）に有るか判断する（ステップＳ６７）。ステップＳ６７の判断は、関連ファイルを管理するサーバの識別子が自サーバを示しているか否かにより行う。なお、ステップＳ６７において特定された関連ファイルを「処理対象の関連ファイル」と呼ぶ。
【００４８】
処理対象の関連ファイルが自サーバに無い場合（ステップＳ６７：Ｎｏルート）、先読み処理部３４は、処理対象の関連ファイルを管理するサーバ（ここでは、サーバＣとする）に先読み処理要求を送信する（ステップＳ６９）。ステップＳ６９の先読み処理要求に応じ、サーバＣは、先読み処理（ステップＳ１９）を実行する。そして処理は端子Ｄを介してステップＳ６６に戻る。
【００４９】
一方、処理対象の関連ファイルが自サーバに有る場合（ステップＳ６７：Ｙｅｓルート）、先読み処理部３４は、キャッシュ３６の使用量が閾値以下であるか判断する（ステップＳ７１）。キャッシュ３６の使用量が閾値以下ではない場合（ステップＳ７１：Ｎｏルート）、キャッシュ溢れが発生する可能性があるので、処理対象の関連ファイルをキャッシュに展開せず、元の処理に戻る。キャッシュ３６の使用量が閾値以下である場合（ステップＳ７１：Ｙｅｓルート）、先読み処理部３４は、処理対象の関連ファイルが既にキャッシュに展開されているか判断する（ステップＳ７３）。
【００５０】
処理対象の関連ファイルが既にキャッシュ３６に展開されている場合（ステップＳ７３：Ｙｅｓルート）、処理対象の関連ファイルをキャッシュ３６に展開しなくてもよいので、処理は端子Ｄを介してステップＳ６６の処理に戻る。一方、処理対象の関連ファイルがキャッシュ３６に展開されていない場合（ステップＳ７３：Ｎｏルート）、先読み処理部３４は、アクセス制御部３３に処理対象の関連ファイルのオープン処理を実行することを要求する。これに応じ、アクセス制御部３３は、処理対象の関連ファイルのオープン処理を実行する（ステップＳ７５）。そして処理は端子Ｄを介してステップＳ６６に戻る。
【００５１】
以上のような処理を実行すれば、特定のファイルに対してアクセスがあった場合に、そのファイルに関連するファイルがキャッシュ３６に展開されるようになる。関連ファイルは、特定のファイルに対するアクセスがあった場合にアクセスされる可能性が高いファイルであるから、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【００５２】
図９を用いて、先読み処理についてより具体的に説明する。例えば、サーバ１におけるアプリケーションプログラム３５がファイルＡに対する分散処理を要求したとする（図９における（１））。ファイルＡは、分散ファイルシステムによってファイルＡ−１、Ａ−２、・・・、Ａ−ｎのｎ個（ｎは２以上の自然数）に分割されており、分割されたファイルはサーバ１乃至３に分散して格納されている。ここで、ファイルＡ−１がサーバ１のファイル格納部３７からキャッシュ３６に展開され、アプリケーションプログラム３５による処理に供される（図９における（２））。この際、サーバ２におけるファイルＡ−２及びファイルＡ−３、並びにサーバ３におけるファイルＡ−ｎもキャッシュ３６に展開される（図９における（３））。そのため、アプリケーションプログラム３５がファイルＡ−２乃至Ａ−ｎについて処理する際には、これらのファイルは事前にキャッシュ３６に展開されているので、ディスクＩ／Ｏは発生しない。従って、ファイルＡの処理を高速で行うことができるようになる。
【００５３】
なお、上で述べた例では、各サーバがファイル格納部３７を有するとして説明したが、図１０に示すように、複数のサーバに対して共有のファイル格納部３７を１つ設けるような場合（以下、共有ディスク型の場合と呼ぶ）にも先読み処理は有効である。図１０の例では、ファイル格納部３７が３つの部分に分けられている。この場合、ファイルＡ−１乃至Ａ−３のいずれかに対するアクセスがあった場合には、サーバ１乃至サーバ３のうちいずれかのサーバが、共有のファイル格納部３７からファイルを読み出し、キャッシュ３６に展開する。これにより、ディスクＩ／Ｏは発生しなくなるので、ファイルＡの処理を高速で行うことができるようになる。なお、キャッシュへの展開を行なうサーバは、例えばラウンドロビン或いはキャッシュ３６の使用状況等に基づき分散ファイルシステムにより決定される。
【００５４】
図７の説明に戻り、サーバＢにおける通信制御部３１は、オープン処理の完了を示す通知をサーバＡに送信する（ステップＳ２１）。
【００５５】
サーバＡにおけるアプリケーションプログラム３５は、オープン処理の完了を示す通知を受信すると（ステップＳ２３）、オープン処理が行われたファイルに対するファイルアクセス要求（例えば、参照要求）をサーバＢに送信する（ステップＳ２５）。
【００５６】
サーバＢにおける通信制御部３１は、ファイルアクセス要求を受信する（ステップＳ２７）。通信制御部３１は、ファイルアクセス要求をファイル管理部３２に出力する。処理は端子Ａ乃至Ｃを介して図１１の処理に移行する。
【００５７】
図１１の説明に移行し、ファイル管理部３２におけるアクセス制御部３３は、ファイル格納部３７に格納されているファイルに対するアクセスを行う（ステップＳ２９）。アクセス制御部３３は、アクセス結果（例えば、ファイルアクセス要求が参照要求である場合には、参照した結果）を通信制御部３１に出力する。
【００５８】
通信制御部３１は、アクセス結果をファイルアクセス要求の送信元であるサーバＡに送信する（ステップＳ３１）。
【００５９】
サーバＡにおけるアプリケーションプログラム３５は、アクセス結果を受信する（ステップＳ３３）。その後、アプリケーションプログラム３５は、アクセス対象のファイルについてファイルクローズ要求をサーバＢに送信する（ステップＳ３５）。
【００６０】
サーバＢにおける通信制御部３１は、ファイルクローズ要求を受信する（ステップＳ３７）。通信制御部３１は、ファイルクローズ要求をファイル管理部３２に出力する。
【００６１】
ファイル管理部３２におけるアクセス制御部３３は、アクセス対象のファイルについてクローズ処理（すなわち、ファイルの使用を終了するための処理）を実行する（ステップＳ３９）。また、ファイル管理部３２における先読み処理部３４は、破棄処理を実行する（ステップＳ４１）。破棄処理については、図１２及び図１３を用いて説明する。
【００６２】
まず、先読み処理部３４は、キャッシュ３６に展開されているアクセス対象のファイルを削除する（図１２：ステップＳ８１）。
【００６３】
先読み処理部３４は、ステップＳ６５において受信した関連ファイルリストに、自サーバが管理する関連ファイルであり且つ未処理の関連ファイルが有るか判断する（ステップＳ８３）。
【００６４】
未処理の関連ファイルが無い場合（ステップＳ８５：Ｎｏルート）、元の処理に戻る。一方、未処理の関連ファイルが有る場合（ステップＳ８５：Ｙｅｓルート）、先読み処理部３４は、未処理の関連ファイルを１つ特定する。（以下では、特定されたファイルを「処理対象の関連ファイル」と呼ぶ）。そして、先読み処理部３４は、キャッシュ３６の使用量が閾値以下であるか判断する（ステップＳ８７）。
【００６５】
キャッシュ３６の使用量が閾値以下ではない場合（ステップＳ８７：Ｎｏルート）、処理対象の関連ファイルをキャッシュ３６に展開することはできないので、元の処理に戻る。一方、キャッシュ３６の使用量が閾値以下である場合（ステップＳ８７：Ｙｅｓルート）、先読み処理部３４は、処理対象の関連ファイルが既にキャッシュ３６に展開されているか判断する（ステップＳ８９）。
【００６６】
処理対象の関連ファイルが既にキャッシュ３６に展開されている場合（ステップＳ８９：Ｙｅｓルート）、処理対象の関連ファイルをキャッシュ３６に展開しなくてもよいので、ステップＳ８３の処理に戻る。一方、処理対象の関連ファイルがキャッシュ３６に展開されていない場合（ステップＳ８９：Ｎｏルート）、先読み処理部３４は、アクセス制御部３３に処理対象の関連ファイルのオープン処理を実行することを要求する。これに応じ、アクセス制御部３３は、処理対象の関連ファイルのオープン処理を実行する（ステップＳ９１）。そしてステップＳ８３に戻る。
【００６７】
以上のような処理を実行すれば、クローズ処理が完了したファイルについてはキャッシュ３６から削除されるので、キャッシュ３６を無駄に使用することが無くなる。また、図１３に示すように、キャッシュ３６の使用量は閾値以下になるように制御されている。図１３に示す例においては、処理済みであるファイルＡ−１がキャッシュ３６から削除されており、代わりに関連ファイルであるファイルＡ−４がキャッシュ３６に展開される。このようにすることで、未処理の関連ファイルがキャッシュに展開されやすくなるので、キャッシュヒット率をさらに向上させることができるようになる。
【００６８】
図１１の説明に戻り、サーバＢにおける通信制御部３１は、クローズ処理の完了を示す通知をサーバＡに送信する（ステップＳ４３）。
【００６９】
サーバＡにおけるアプリケーションプログラム３５は、クローズ処理の完了を示す通知をサーバＢから受信する（ステップＳ４５）。そして、アプリケーションプログラム３５は、アクセス対象のファイルについてファイルクローズ要求を管理サーバ１に送信する（ステップＳ４７）。
【００７０】
管理サーバ１における通信制御部１０１は、サーバＡからファイルクローズ要求を受信し（ステップＳ４９）、ファイル管理部１０４に出力する。そして、ファイル管理部１０４は、アクセス対象のファイルのステータス（ここでは、状態についての情報を意味する）を更新する（ステップＳ５１）。具体的には、アクセス対象のファイルについて、オープン又はクローズの状態、ロックの状態、ファイルサイズ、又は更新の日時等を更新し、図示しない記憶装置に記憶する。
【００７１】
以上のような処理を実行すれば、分散処理システムにおけるキャッシュヒット率を向上させ、ファイルに対する処理を高速で行うことができるようになる。
【００７２】
通常、キャッシュはアプリケーションプログラムの都合とは無関係にリフレッシュされる。しかし、本実施の形態においては、関連性があるファイルがキャッシュに残りやすいため、高速にファイルの処理をすることを期待できる。図１４を用いて、図１と同様の状況において本実施の形態の処理を行なった場合について説明する。本実施の形態の処理によれば、アプリケーションプログラム３５がサーバ２にアクセスした際にはファイルＢがキャッシュに展開されている可能性が高く、またアプリケーションプログラム３５がサーバ３にアクセスした際にはファイルＣがキャッシュに展開されている可能性が高い。よって、ファイルＢ及びファイルＣについてディスクＩ／Ｏが発生する可能性は低くなるので、ファイルに対する処理の完了までの時間を短くすることができるようになる。
【００７３】
なお、データ処理を高速化する一つの方法として、ＯＳのキャッシュとは別にアプリケーションプログラムのためのメモリ領域（以下、アプリケーションキャッシュと呼ぶ）を確保し、そこに予めデータを展開しておきアクセスするという方法が知られている。この方法によれば、独自のメモリ領域であればデータの取捨選択をも完全にコントロールできるため、効率的なアクセスが可能になる。但し、アプリケーションキャッシュを設けたとしてもＯＳのキャッシュが無くなるわけではないので、メモリ領域を２倍使用することになる。
【００７４】
これに対し、本実施の形態において説明した方法であれば、アプリケーションキャッシュを利用する方法と比べると、メモリの使用量は１／２程度に節約できる。
【００７５】
次に、図１５乃至図１７を用いて、ファイルを格納する際の動作について説明する。なお、図１５のフローは、処理の要点を示しており、通常の分散ファイルシステムが行う処理（例えば、ステータス更新、ファイルのロック及びクラスタ構成の管理等）については省略している。
【００７６】
まず、サーバ３（ここでは、サーバＡとする）におけるファイル管理部３２は、例えばアプリケーションプログラム３５によりファイルが生成された場合に、当該ファイルを分散して格納することを要求するファイル格納要求を生成する。そして、ファイル管理部３２は、ファイル格納要求を管理サーバ１に送信する（図１５：ステップＳ１０１）。なお、ファイル格納要求には、ファイルそのものを含ませるようにしてもよいし、ファイルサイズの情報等を含ませるようにしてもよい。
【００７７】
管理サーバ１における通信制御部１０１は、ファイル格納要求を受信すると（ステップＳ１０３）、ファイル格納要求をファイル管理部１０４に出力する。
【００７８】
ファイル管理部１０４は、ファイル格納要求において格納が要求されているファイルの格納場所を決定する（ステップＳ１０５）。例えば、ファイル格納部３７の空き容量が多いサーバをファイルの格納場所とする。また、ファイルサイズが大きい場合にはファイルを分割することになるため、複数のサーバをファイルの格納場所に決定する。
【００７９】
ファイル管理部１０４は、関連ファイルデータ格納部１０８に格納されているデータを更新する（ステップＳ１０７）。ステップＳ１０７においては、構成的関連に基づき関連ファイルデータを更新する。例えばファイルが特定のディレクトリに格納される場合には、そのディレクトリに格納されている他のファイルと構成的関連性を有することになるので、新たな構成的関連性に基づき更新を行う。また、ファイルが分割される場合には、分割後の複数のファイルは構成的関連性を有することになるので、新たな構成的関連性に基づき更新を行う。
【００８０】
ファイル管理部１０４は、ファイルの格納場所を示すデータを通信制御部１０１に出力する（ステップＳ１０９）。そして、通信制御部１０１は、ファイルの格納場所を示すデータ（ここでは、サーバＢを示しているとする）をサーバＡに送信する。
【００８１】
サーバＡにおけるファイル管理部３２は、ファイルの格納場所を示すデータを受信すると（ステップＳ１１１）、ファイルの格納場所を示すデータに従い、ファイル格納要求をサーバＢに送信する（ステップＳ１１３）。ステップＳ１１３において送信するファイル格納要求には、ファイルが含まれる。なお、ファイルの格納場所となるサーバが複数ある場合には、複数のサーバに対してファイル格納要求を送信する。
【００８２】
サーバＢにおける通信制御部３１は、ファイル格納要求を受信する（ステップＳ１１５）。通信制御部３１は、ファイル格納要求をアクセス制御部３３に出力する。
【００８３】
アクセス制御部３３は、ファイル格納要求に含まれるファイルをファイル格納部３７に格納する（ステップＳ１１７）。
【００８４】
以上のような処理を実行すれば、ファイルをファイル格納部３７に格納する際には、ファイルの構成的関連性に基づき関連ファイルデータを更新できるようになる。
【００８５】
図１６を用いて、ファイルの構成的関連性に基づく関連ファイルデータの更新について具体的に説明する。例えば、いずれかのサーバにおけるアプリケーションプログラム３５がファイルＡについてファイル格納要求を出力したとする。ファイルＡは、分散ファイルシステムによってファイルＡ−１、ファイルＡ−２及びファイルＡ−３の３つに分割され、分割されたファイルはサーバ１乃至３に分散して格納される。また、ファイルＡ−１はサーバ１のファイル格納部３７においてファイルＢ−１と同じディレクトリに格納されており、ファイルＡ−２はサーバ２のファイル格納部３７においてファイルＢ−２と同じディレクトリに格納されており、ファイルＡ−３はサーバ３のファイル格納部３７においてファイルＢ−３と同じディレクトリに格納されているとする。このような場合、管理サーバ１における関連ファイルデータ格納部１０８は、例えば図１６の１６０に示した状態に更新される。この例においては、ファイルＡ−１の関連ファイルはファイルＡ−２、ファイルＡ−３及びファイルＢ−１であり、ファイルＡ−２の関連ファイルはファイルＡ−１、ファイルＡ−３及びファイルＢ−２であり、ファイルＡ−３の関連ファイルはファイルＡ−１、ファイルＡ−２及びファイルＢ−３である。
【００８６】
なお、図１６においては、ファイルＡ−１の関連ファイルにファイルＢ−２及びファイルＢ−３が含まれておらず、同じディレクトリに格納されているファイルＢ−１に限定されている。これは、ファイルＢ−１のスプリットファイル（ここでは、ファイルＢ−２及びファイルＢ−３）まで関連ファイルとすると、ファイルＡ−１の関連ファイルの数が膨大になるからである。ファイルＡ−２及びファイルＡ−３についても同様である。
【００８７】
また、共有ディスク型の場合においても、ファイルの構成的関連性に基づく関連ファイルデータの更新を同様に行なうことができる。例えば図１７に示すように、複数のサーバに対して共有のファイル格納部３７が１つ設けられており、ファイル格納部３７が３つの部分に分けられているとする。ファイルＡは、分散ファイルシステムによってファイルＡ−１、ファイルＡ−２及びファイルＡ−３の３つに分割され、分割されたファイルは共有のファイル格納部３７における部分１乃至３に分散して格納される。また、ファイルＡ−１はファイル格納部３７の部分１においてファイルＢ−１と同じディレクトリに格納されており、ファイルＡ−２はファイル格納部３７の部分２においてファイルＢ−２と同じディレクトリに格納されており、ファイルＡ−３はファイル格納部３７の部分３においてファイルＢ−３と同じディレクトリに格納されているとする。このような場合にも、管理サーバ１における関連ファイルデータ格納部１０８は、図１７の１７０に示した状態に更新される。すなわち、ファイルＡ−１の関連ファイルはファイルＡ−２、ファイルＡ−３及びファイルＢ−１であり、ファイルＡ−２の関連ファイルはファイルＡ−１、ファイルＡ−３及びファイルＢ−２であり、ファイルＡ−３の関連ファイルはファイルＡ−１、ファイルＡ−２及びファイルＢ−３である。
【００８８】
次に、図１８を用いて、ユーザが関連を指定する場合の動作について説明する。
【００８９】
まず、ユーザは、対象ファイル及び当該対象ファイルに関連する関連ファイルをサーバ３における入力部（例えばキーボード又はマウス等）を使用して入力する。サーバ３におけるファイル管理部３２は、対象ファイル及び関連ファイルの指定を受け付ける。そして、ファイル管理部３２は、対象ファイル及び関連ファイルの指定を含む更新要求を管理サーバ１に送信する（図１８：ステップＳ１２１）。
【００９０】
管理サーバ１における通信制御部１０１は、サーバ３から更新要求を受信し（ステップＳ１２３）、ファイル管理部１０４に出力する。
【００９１】
ファイル管理部１０４は、更新要求において指定されている対象ファイルについての関連ファイルデータを関連ファイルデータ格納部１０８から特定する（ステップＳ１２５）。そして、ファイル管理部１０４は、更新要求におけるユーザの指定に従い関連ファイルデータを生成し、特定された関連ファイルデータを生成された関連ファイルデータで更新する（ステップＳ１２７）。なお、指定された対象ファイルについての関連ファイルデータが関連ファイルデータ格納部１０８に無い場合には、生成された関連ファイルデータを関連ファイルデータ格納部１０８に格納する。
【００９２】
ファイル管理部１０４は、更新完了を示す通知を通信制御部１０１に出力する。通信制御部１０１は、更新完了を示す通知をサーバ３に送信する（ステップＳ１２９）。
【００９３】
サーバ３における通信制御部３１は、更新完了を示す通知を管理サーバ１から受信する（ステップＳ１３１）。通信制御部３１は、更新完了を示す通知をファイル管理部３２に出力する。
【００９４】
ファイル管理部３２における先読み処理部３４は、先読み処理を実行する（ステップＳ１３３）。先読み処理については、図８Ａ乃至図１０を用いて説明をしたとおりである。なお、このようなタイミングで先読み処理を実行するのは、ユーザが関連を指定する場合には即ファイルに対する処理を行なう場合が多いと考えられるからである。
【００９５】
以上のような処理を実行すれば、ユーザの意図を関連ファイルデータ格納部１０８に適切に反映することができるようになる。
【００９６】
図１９に、キャッシュのライフサイクルの一例を示す。図１９の例は、サーバＡ及びサーバＢにおけるキャッシュのライフサイクルを示している。図１９において、キャッシュ３６にファイルが展開されている時間を、白色の長方形で表す。
【００９７】
例えばサーバＡにおける特定のファイルに対するアクセスがあった場合、サーバＡにおける先読み処理部３４は、管理サーバ１に関連ファイル要求を送信する（図１９：１００１）。これに応じ、管理サーバ１におけるファイル管理部１０４は、関連ファイルリストをサーバＡに送信する（図１９：１００２）。ここで、関連ファイルリストには、サーバＡが管理するファイルの識別情報と、サーバＢが管理するファイルの識別情報とが含まれるとする。
【００９８】
サーバＡにおける先読み処理部３４は、サーバＢに対し、先読み処理要求を送信する（図１９：１００４）。サーバＢにおける先読み処理部３４は、先読み処理要求を受信すると、応答を返す（図１９：１００５）。
【００９９】
サーバＢにおける先読み処理部３４は、関連ファイル要求を管理サーバ１に送信する（図１９：１００６）。これに応じ、管理サーバ１におけるファイル管理部１０４は、関連ファイルリストをサーバＢに送信する（図１９：１００７）。
【０１００】
一方、サーバＡにおける先読み処理部３４は、サーバＡが管理する関連ファイルをキャッシュに展開する（図１９：１００８）。また、サーバＢにおける先読み処理部３４は、サーバＢが管理する関連ファイルをキャッシュに展開する（図１９：１００９）。
【０１０１】
サーバＡにおけるアプリケーションプログラム３５は、ファイルクローズ要求を管理サーバ１に送信する（図１９：１０１０）。管理サーバ１におけるファイル管理部１０４は、ファイルクローズ要求を受信すると、ファイルのステータスの更新等を行い、クローズの完了をサーバＡに通知する（図１９：１０１１）。
【０１０２】
サーバＡにおける先読み処理部３４は、クローズの完了を管理サーバ１から通知されたことを契機として、キャッシュに展開されているファイルを削除する（図１９：１０１２）。また、先読み処理部３４は、残りの関連ファイルをキャッシュに展開する（図１９：１０１３）。
【０１０３】
一方、サーバＢにおけるアプリケーションプログラム３５は、ファイルクローズ要求を管理サーバ１に送信する（図１９：１０１４）。管理サーバ１におけるファイル管理部１０４は、ファイルクローズ要求を受信すると、ファイルのステータスの更新等を行い、クローズの完了をサーバＢに通知する（図１９：１０１５）。
【０１０４】
サーバＢにおける先読み処理部３４は、クローズの完了を管理サーバ１から通知されたことを契機として、キャッシュに展開されているファイルを削除する（図１９：１０１６）。また、先読み処理部３４は、残りの関連ファイルをキャッシュに展開する（図１９：１０１７）。
【０１０５】
以上のような処理が繰り返し行われることで、分散処理システムにおいてファイルに対する処理が進行する。
【０１０６】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した管理サーバ１及びサーバ３の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０１０７】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１０８】
なお、上で述べた例では、ファイルアクセス要求として参照要求を示したが、参照要求に限られるわけではない。例えば、ファイルに対する書き込み要求であってもよい。
【０１０９】
また、図７及び図１１に示したフローにおいては、サーバＢが管理サーバ１から関連ファイルリストを取得する例を示した。しかし、このような例に限られるわけではない。例えば、サーバＡが管理サーバ１からファイルの格納場所を示す情報を受信する際に関連ファイルリストを受信し、サーバＡが関連ファイルリストをサーバＢに送信するようにしてもよい。
【０１１０】
また、上では管理サーバ１がサーバ３の動作を行う例を示していないが、管理サーバ１がサーバ３の動作をも行なうようにしてもよい。
【０１１１】
また、上で述べたように、共有ディスク型の場合であっても、本実施の形態の処理を適用可能である。共有ディスク型の場合のシステムは、例えば図２０に示すようなシステムであればよい。具体的には、複数のサーバ３に対して１つのファイル格納部７０を設ければよい。
【０１１２】
なお、上で述べた管理サーバ１及びサーバ３は、コンピュータ装置であって、図２１に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１３】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１１４】
本実施の形態の第１の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、（Ａ）第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、（Ｂ）第２のデータを管理する情報処理装置が第１の情報処理装置である場合に、第２のデータをデータ格納部から読み出し、キャッシュに展開する処理を含む。
【０１１５】
第１のデータと所定の関連性を有する第２のデータがアクセスされるタイミングは、第１のデータがアクセスされるタイミングの近傍である可能性が高い。そこで、上で述べたようにすれば、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【０１１６】
また、上で述べた本情報処理方法が、（Ｃ）第２のデータを管理する情報処理装置が第１の情報処理装置ではない場合に、複数の情報処理装置のうち第２のデータを管理する情報処理装置に対し、第２のデータをキャッシュに展開することを要求する第１の要求を送信する処理をさらに含むようにしてもよい。このようにすれば、第１の情報処理装置が第２のデータを管理していない場合にも対処できるようになる。
【０１１７】
また、上で述べた本情報処理方法が、（Ｄ）第１のデータに対するアクセスが終了した場合に、キャッシュに展開されている第１のデータのデータを削除する処理をさらに含むようにしてもよい。このようにすれば、キャッシュ溢れの発生を抑制できるようになる。
【０１１８】
また、上で述べた所定の関連性が、データの内容の関連性、データの格納場所に基づく関連性、データのタイムスタンプに基づく関連性、データに対するアクセスの履歴に基づく関連性及びユーザにより指定された関連性の少なくともいずれかであってもよい。
【０１１９】
本実施の第２の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、（Ｅ）複数の情報処理装置のうち第１のデータを管理する情報処理装置から、第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、第１のデータと所定の関連性を有する第２のデータの識別情報を抽出し、（Ｆ）抽出された第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、第１の要求の送信元の情報処理装置に送信する処理を含む。
【０１２０】
このようにすれば、第１のデータにアクセスがあった場合に第２のデータをキャッシュに展開できるようになるので、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【０１２１】
また、上で述べた本情報処理方法が、（Ｇ）データの内容の関連性、データの格納場所及びデータのタイムスタンプの少なくともいずれかに基づき、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。このような事項はデータの関連性に関わっているため、このような事項に基づき更新を行えば、関連性を有するデータとして適切なデータを特定できるようになる。
【０１２２】
また、上で述べた本情報処理方法が、（Ｈ）分散処理システムにおけるデータへのアクセスの履歴に基づき、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。例えばアクセスの順序或いはアクセスパターン等はデータの関連性に関わっているため、アクセスの履歴に基づき更新を行えば、関連性を有するデータとして適切なデータを特定できるようになる。
【０１２３】
また、上で述べた本情報処理方法が、（Ｉ）ユーザからの指定を受け付けた場合に、当該指定に従い、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。このようにすれば、ユーザの意図どおりにキャッシュへの展開を行えるようになる。
【０１２４】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【図１】
2014155553.tif 000003
【図２】
2014155553.tif 000004
【図３】
2014155553.tif 000005
【図４】
2014155553.tif 000006
【図５】
2014155553.tif 000007
【図６】
2014155553.tif 000008
【図７】
2014155553.tif 000009
【図８Ａ】
2014155553.tif 000010
【図８Ｂ】
2014155553.tif 000011
【図９】
2014155553.tif 000012
【図１０】
2014155553.tif 000013
【図１１】
2014155553.tif 000014
【図１２】
2014155553.tif 000015
【図１３】
2014155553.tif 000016
【図１４】
2014155553.tif 000017
【図１５】
2014155553.tif 000018
【図１６】
2014155553.tif 000019
【図１７】
2014155553.tif 000020
【図１８】
2014155553.tif 000021
【図１９】
2014155553.tif 000022
【図２０】
2014155553.tif 000023
【図２１】
2014155553.tif 000024
【手続補正書】
【提出日】平成27年9月30日(2015.9.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法であって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、前記第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開する
処理を実行する情報処理方法。
【請求項２】
前記第１の情報処理装置が、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置ではない場合に、前記複数の情報処理装置のうち前記第２のデータを管理する情報処理装置に対し、前記第２のデータをキャッシュに展開することを要求する第１の要求を送信する
処理をさらに実行する請求項１記載の情報処理方法。
【請求項３】
前記第１の情報処理装置が、
前記第１のデータに対するアクセスが終了した場合に、前記キャッシュに展開されている前記第１のデータを削除する
処理をさらに実行する請求項１又は２記載の情報処理方法。
【請求項４】
複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法であって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、
前記複数の情報処理装置のうち第１のデータを管理する情報処理装置から、前記第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと前記所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、前記第１のデータと前記所定の関連性を有する第２のデータの識別情報を抽出し、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の要求の送信元の情報処理装置に送信する
処理を実行する情報処理方法。
【請求項５】
前記第１の情報処理装置が、
データの内容の関連性、データの格納場所及びデータのタイムスタンプの少なくともいずれかに基づき、前記関連データ格納部に格納されているデータを更新する
処理をさらに実行する請求項４記載の情報処理方法。
【請求項６】
前記第１の情報処理装置が、
前記分散処理システムにおけるデータへのアクセスの履歴に基づき、前記関連データ格納部に格納されているデータを更新する
処理をさらに実行する請求項４記載の情報処理方法。
【請求項７】
複数の情報処理装置によりデータの処理を行う分散処理システムにおいてキャッシュを管理するためのプログラムであって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置に、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、前記第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開する
処理を実行させるためのプログラム。
【請求項８】
複数の情報処理装置によりデータの処理を行う分散処理システムにおいてキャッシュを管理するためのプログラムであって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置に、
前記複数の情報処理装置のうち第１のデータを管理する情報処理装置から、前記第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと前記所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、前記第１のデータと前記所定の関連性を有する第２のデータの識別情報を抽出し、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の要求の送信元の情報処理装置に送信する
処理を実行させるためのプログラム。
【請求項９】
第１のデータに対するアクセスがあった場合に、データ間の関連性を管理する情報処理装置から、前記第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得する取得部と、
前記第２のデータを管理する情報処理装置が自情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開するキャッシュ処理部と、
を有する情報処理装置。
【請求項１０】
データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部と、
第１のデータを管理する情報処理装置から、前記第１のデータと前記所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、前記関連データ格納部から、前記第１のデータと前記所定の関連性を有する第２のデータの識別情報を抽出する抽出部と、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の要求の送信元の情報処理装置に送信する送信部と、
を有する情報処理装置。
【請求項１１】
複数の情報処理装置によりデータの処理を行う分散処理システムであって、
前記複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記複数の情報処理装置のうちデータ間の関連性を管理する第２の情報処理装置から、前記第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を、前記第２のデータについての情報を要求する第１の要求を前記第２の情報処理装置に送信することにより取得する取得部と、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開するキャッシュ処理部と、
を有し、
前記第２の情報処理装置が、
データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部と、
前記第１の情報処理装置から前記第１の要求を受信した場合に、前記関連データ格納部から、前記第１のデータと前記所定の関連性を有する前記第２のデータの識別情報を抽出する抽出部と、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の情報処理装置に送信する送信部と、
を有する分散処理システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理技術に関する。
【背景技術】
【０００２】
近年、ウェブサイト、センサ或いは携帯端末等において発生する大量のデータ（以下、ビッグデータと呼ぶ）を短時間で処理する技術が求められている。
【０００３】
ビッグデータを処理する技術として、ハドゥープ（Ｈａｄｏｏｐ）という分散処理フレームワークが知られている。Ｈａｄｏｏｐにおいては、マップリデュース（ＭａｐＲｅｄｕｃｅ）という分散処理方式に基づき１つのファイルを複数のファイルに分割し、複数のノードがファイルを並列処理する。Ｈａｄｏｏｐは、ノード数の増加に応じて処理性能が線形に高くなることを特徴とする。そのため、Ｈａｄｏｏｐを利用すれば、例えば数ペタバイト以上のデータを数十から数千のノードで処理するような大規模なシステムを比較的容易に実現することができる。
【０００４】
Ｈａｄｏｏｐは、分散処理を効果的に行うため、ＨＤＦＳ（Hadoop Distributed File System）と呼ばれる分散ファイルシステムを採用している。ＨＤＦＳは、ファイルを特定の大きさに分割し、分割されたファイルを複数のサーバに分散して格納すると共に、分割されたファイルの複製を生成し、複製元のファイルを保持するサーバとは別のサーバに保持させる。分散処理においては、複製元のファイル及び複製されたファイルのいずれかを処理すればよいため、ＨＤＦＳが作業プロセスが空いているサーバに処理を振り分けることにより、サーバのリソース（ＣＰＵ（Central Processing Unit）資源等）を有効に利用できる。
【０００５】
しかし、ＨＤＦＳ等の分散ファイルシステムは、処理の振り分けの際にＯＳ（Operating System）のキャッシュの状態を考慮しない。そのため、分散処理システムは、あるサーバのキャッシュ上にデータがあってもそれを考慮せず別のサーバに処理を振り分けてしまうので、ディスクＩ／Ｏ（Input／Output）が発生する。ディスクＩ／Ｏは時間がかかる処理であり、例えば数ギガバイトのデータの処理に要する時間の約半分をディスクのシーク時間が占めることがある。
【０００６】
図１を用いて、分散ファイルシステムによるビッグデータの処理について説明する。サーバ１のディスクにはファイルＡが格納されており、サーバ２のディスクにはファイルＢが格納されており、サーバ３のディスクにはファイルＢの複製及びファイルＣが格納されている。また、サーバ３のキャッシュにはファイルＢが展開されている。分散処理システムにおけるいずれかのサーバに配置されたアプリケーションプログラムは、ファイルＡ、ファイルＢ、ファイルＣの順に処理を行う。アプリケーションプログラムは、サーバ１におけるファイルＡに対する処理をした後、サーバ２又はサーバ３におけるファイルＢに対して処理をする。サーバ３におけるファイルＢに対して処理をすれば、キャッシュを利用できるためディスクＩ／Ｏは発生しない。しかし、サーバ２又はサーバ３のいずれを選択するかは、サーバ２又はサーバ３における空きプロセスの状況等によるため、サーバ２を選択する場合もある。その場合にはディスクＩ／Ｏが発生するため、ファイルに対する処理の完了までの時間が大幅に遅れる。
【０００７】
よって、ファイルに対する処理を短時間で完了させるという観点から、分散処理システムにおけるキャッシュヒット率を向上させることが好ましい。
【０００８】
分散処理及びキャッシュの管理については、例えば以下のような技術が知られている。具体的には、ＭａｐＲｅｄｕｃｅ処理システムが、処理対象のデータを、データの更新頻度に基づき複数のグループに分け、グループに含まれるデータの更新頻度に基づきグループ更新頻度を計算する。そして、ＭａｐＲｅｄｕｃｅ処理システムは、グループ更新頻度が閾値以下であるグループに対するＭａｐＲｅｄｕｃｅ処理段階の部分的結果を生成し、生成された部分的結果をキャッシュする。これによりＭａｐＲｅｄｕｃｅ処理においてキャッシュを有効に利用する。
【０００９】
また、キャッシュの有効利用に関して、以下のような技術も存在する。具体的には、ファイルのオープン時にファイルの全体又は部分領域のデータを多重化して複数のドライブに分散配置すると共に、ファイルのクローズ時にファイルの多重化データを消去する。
【００１０】
また、複数のクライアントから特定のファイルサーバにアクセス要求が集中することによるスループットの低下を防ぐ技術が存在する。具体的には、マスタファイルサーバが、負荷が軽いファイルサーバを選定し、選定されたファイルサーバに、クライアントから伝送されたファイルアクセス要求を分配する。
【００１１】
また、広域ネットワークの状態に関わらず高速なファイルアクセスを提供するための技術が存在する。具体的には、キャッシュサーバは、ファイルアクセスを記録するアクセス履歴データベースを有しており、アクセス履歴データベースによってアクセス頻度が高いファイルの更新間隔を分析し、先読みすべきファイルを決定する。そして、キャッシュサーバは、広域ネットワークが空いている時間帯にアクセス頻度が高いファイルを先読みし、クライアントからの要求に対し先読みしたファイルを渡す。
【００１２】
また、クライアントにログインするユーザ毎に、使用頻度が高いファイルを優先的にキャッシングすることにより、キャッシュヒット率を向上させ、ファイルアクセスを高速化する技術が存在する。
【００１３】
しかしながら、これらの技術を利用したとしても、分散処理システムにおけるキャッシュヒット率を十分に向上させることができない場合がある。また、サーバにおけるキャッシュを有効に利用するという観点において、従来技術は十分ではない。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】Jeffrey Dean and Sanjay Ghemawat，"MapReduce: Simplified Data Processing on Large Clusters"，[online]，２００４年１２月，Symposium on Operating System Design and Implementation 2004 ，[平成２５年１月１０日検索]，インターネット＜URL:http://research.google.com/archive/mapreduce.html＞
【特許文献】
【００１５】
【特許文献１】特開２０１０−９２２２２号公報
【特許文献２】特開平６−３３２６２５号公報
【特許文献３】特開平６−３３２７８２号公報
【特許文献４】特開平１１−２４９８１号公報
【特許文献５】特開平７−９３２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
従って、本発明の目的は、１つの側面では、分散処理システムにおけるキャッシュヒット率を向上させるための技術を提供することである。
【課題を解決するための手段】
【００１７】
本発明の第１の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、第２のデータを管理する情報処理装置が第１の情報処理装置である場合に、第２のデータをデータ格納部から読み出し、キャッシュに展開する処理を含む。
【００１８】
本発明の第２の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、複数の情報処理装置のうち第１のデータを管理する情報処理装置から、第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、第１のデータと所定の関連性を有する第２のデータの識別情報を抽出し、抽出された第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、第１の要求の送信元の情報処理装置に送信する処理を含む。
【発明の効果】
【００１９】
分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【図面の簡単な説明】
【００２０】
【図１】図１は、分散処理システムによるビッグデータの処理について説明するための図である。
【図２】図２は、本実施の形態におけるシステム概要を示す図である。
【図３】図３は、構成的関連性に基づき生成された関連ファイルデータの一例を示す図である。
【図４】図４は、統計的関連性に基づき生成された関連ファイルデータの一例を示す図である。
【図５】図５は、統計的関連性に基づく関連ファイルデータの生成について説明するための図である。
【図６】図６は、関連ファイルデータ格納部の詳細なデータ構造の一例を示す図である。
【図７】図７は、アプリケーションプログラムがファイルに対するアクセスを行う場合に行われる処理の処理フローを示す図である。
【図８Ａ】図８Ａは、先読み処理の処理フローを示す図である。
【図８Ｂ】図８Ｂは、先読み処理の処理フローを示す図である。
【図９】図９は、先読み処理について説明するための図である。
【図１０】図１０は、共有ディスク型の場合における先読み処理について説明するための図である。
【図１１】図１１は、アプリケーションプログラムがファイルに対するアクセスを行う場合に行われる処理の処理フローを示す図である。
【図１２】図１２は、破棄処理の処理フローを示す図である。
【図１３】図１３は、破棄処理について説明するための図である。
【図１４】図１４は、キャッシュヒット率の向上について説明するための図である。
【図１５】図１５は、ファイルを格納する場合に行われる処理の処理フローを示す図である。
【図１６】図１６は、ファイル格納要求について説明するための図である。
【図１７】図１７は、共有ディスク型の場合におけるファイル格納要求について説明するための図である。
【図１８】図１８は、ユーザが関連を指定した場合に行われる処理の処理フローを示す図である。
【図１９】図１９は、キャッシュのライフサイクルの一例を示す図である。
【図２０】図２０は、本実施の形態におけるシステム概要の他の例を示す図である。
【図２１】図２１は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００２１】
図２に、本実施の形態における分散処理システムの概要を示す。例えばインターネットであるネットワーク５には、管理サーバ１と、複数のサーバ３とが接続されている。図２に示した分散処理システムにおいては、サーバ３におけるアプリケーションプログラム３５が、複数のサーバ３のうちいずれかのサーバ３が管理するファイルに対する処理を行う。
【００２２】
管理サーバ１は、システム管理部１００と、関連ファイルデータ格納部１０８と、ログ格納部１０９とを有する。システム管理部１００は、通信制御部１０１と、システムデータ管理部１０２と、構成管理部１０３と、インデックス管理部１０５、メタデータ管理部１０６及び統計データ管理部１０７を含むファイル管理部１０４とを有する。
【００２３】
通信制御部１０１は、通信のための処理を行う。システムデータ管理部１０２は、分散処理システムにおいて共有するデータ（例えばファイルのブロックサイズ又は複製されたファイルの数等）を管理する。構成管理部１０３は、分散処理システムにおけるクラスタの構成の管理及び死活監視等を行う。ファイル管理部１０４は、関連ファイルデータ格納部１０８に格納されているデータ及びログ格納部１０９に格納されているデータを管理する処理等を行う。インデックス管理部１０５は、各サーバ３が管理しているファイルを二分木構造のファイルインデックスにより管理する。メタデータ管理部１０６は、ファイルのメタデータ（例えば、ファイルのサイズ及びファイルの所有者等）を管理する。統計データ管理部１０７は、ログ格納部１０９に格納されているデータを用いてファイル間の統計的関連を特定することにより、関連ファイルデータ格納部１０８に格納されているデータを更新する。
【００２４】
図３に、関連ファイルデータ格納部１０８に格納される関連ファイルデータの一例を示す。図３の例では、関連ファイルデータは、ファイルの識別子とそのファイルに関連するファイル（以下、関連ファイルと呼ぶ）の識別子とを含む。関連ファイルは、特定のファイルに対するアクセスがあった場合に、そのアクセスがあったタイミングの近傍のタイミングにおいてアクセスされる可能性が高いファイルである。
【００２５】
関連性には、構成的関連性と統計的関連性とユーザの指定による関連性とがある。図３に示した関連ファイルデータは、構成的関連性に基づき生成された関連ファイルデータである。構成的関連性があるファイルとは、例えば、元は１つであったファイルを分割することにより得られた複数のファイル、同一又は近傍のディレクトリに格納されているファイル、又は同じタイムスタンプを有するファイル等である。構成的関連性があるファイルは、例えばバッチ処理のような一括処理において一遍にアクセスされる可能性が高い。図３に示した関連ファイルデータは、ファイルＡ−１、ファイルＡ−２及びファイルＡ−３はファイルＡを分割することにより得られたファイルであるため、これらのファイルが構成的関連を有していることを表している。また、ファイルＢ−１は、ファイルＡ−１と同一又は近傍のディレクトリに格納されているか又は同一のタイムスタンプを有している。
【００２６】
図４に、統計的関連性に基づき生成された関連ファイルデータの一例を示す。図４の例では、関連ファイルデータは、ファイルの識別子と、関連ファイルの識別子と、関連ファイルにアクセスされた回数を示す数値とを含む。関連ファイルにアクセスされた回数は、対象のファイルに対するアクセスがあった後所定時間内に関連ファイルにアクセスがあった回数を表す。
【００２７】
統計的関連性に基づき生成された関連ファイルデータは、図５に示すように、統計データ管理部１０７がログ格納部１０９に格納されているアクセスログに基づき生成する。図５の左側には、アクセスログが示されており、図５の右側には統計的関連性に基づき生成された関連ファイルデータが示されている。例えばバッチ処理等においては、所定の時刻にファイルにアクセスしたり、所定の順番でファイルにアクセスすることがある。そこで、アクセスログを利用し、所定の条件（例えば、所定時間内のアクセスであるという条件、所定のアクセス順序であるという条件、又は所定の利用者によるアクセスであるという条件等）に合致すると判断された場合には、関連ファイルであるとみなす。
【００２８】
なお、統計的関連性に基づく関連ファイルデータは、関連性が高い（例えば、アクセス回数が多い）関連ファイルほどチェーン構造における先頭に近付くように生成される。
【００２９】
なお、ユーザの指定により関連性を定義すれば、アクセスパターンが固定されている場合に特に有効である。
【００３０】
図６に、関連ファイルデータ格納部１０８の詳細なデータ構造の一例を示す。関連ファイルの情報は、分散ファイルシステムが管理するファイルの情報の属性の一つである。図６の例では、インデックス管理部１０５が管理するファイルインデックス５０に、ファイル情報５１へのリンクが張られている。ファイル情報５１の構造体には、そのファイルの関連ファイルの情報へのポインタメンバが含まれる。
【００３１】
関連ファイルデータ５２はチェーン構造であり、関連ファイルの情報へのリンクが連結される。関連ファイルデータ５２の構造体には、ファイル識別子と、関連付けられるファイル情報のアドレスと、関連ファイルの格納場所を示す情報と、アクセス回数を示すカウンタと、次の関連ファイルのアドレスとが含まれる。カウンタの値が大きいほどアクセスされる可能性が高い関連ファイルであるため、優先的にキャッシュ３６に展開される。
【００３２】
図２の説明に戻り、サーバ３は、クライアント管理部３０と、アプリケーションプログラム３５と、キャッシュ３６と、ファイル格納部３７とを有する。クライアント管理部３０は、通信制御部３１と、アクセス制御部３３及び先読み処理部３４を含むファイル管理部３２とを有する。先読み処理部３４は、取得部３４１と、キャッシュ処理部３４２とを有する。
【００３３】
通信制御部３１は、通信のための処理を実行する。アクセス制御部３３は、ファイルアクセスを制御する処理を行う。取得部３４１は、関連ファイルの情報を管理サーバ１から取得する処理等を行う。キャッシュ処理部３４２は、関連ファイルをキャッシュ３６に展開する処理等を行う。アプリケーションプログラム３５は、ファイル格納部３７に格納されているファイルに対する処理を行う。キャッシュ３６は、例えばメモリ領域等に確保されたディスクキャッシュである。ファイル格納部３７は、例えばハードディスク等に確保された、ファイルを格納するための領域である。
【００３４】
次に、図７乃至図１９を用いて、図２に示したシステムの動作について説明する。まず、図７乃至図１４を用いて、アプリケーションプログラム３５がファイルに対するアクセスを行う場合の動作について説明する。
【００３５】
図２に示したシステムにおける複数のサーバ３のうちいずれかのサーバ３（ここでは、サーバＡとする）におけるアプリケーションプログラム３５は、特定のファイルに対するアクセスを行うとする。この場合、サーバＡにおけるアプリケーションプログラム３５は、アクセス対象のファイルの指定を含むファイルオープン要求を管理サーバ１に送信する（図７：ステップＳ１）。
【００３６】
管理サーバ１における通信制御部１０１は、ファイルオープン要求をサーバＡから受信すると（ステップＳ３）、ファイル管理部１０４に出力する。ファイル管理部１０４におけるインデックス管理部１０５は、ファイルオープン要求において指定されたファイルの格納場所をファイルインデックス５０を用いて特定する（ステップＳ５）。インデックス管理部１０５は、ファイルの格納場所を示すデータを通信制御部１０１に出力する。
【００３７】
ファイル管理部１０４は、ログ格納部１０９に格納されているアクセスログ及び関連ファイルデータ格納部１０８に格納されているデータを更新する（ステップＳ７）。具体的には、ファイル管理部１０４における統計データ管理部１０７が、今回のアクセスについてのデータをアクセスログに追加することでアクセスログを更新する。また、統計データ管理部１０７は、アクセスログの更新を反映するように関連ファイルデータ格納部１０８に格納されているデータを更新する。
【００３８】
通信制御部１０１は、インデックス管理部１０５から受け取った、ファイルの格納場所を示すデータを、サーバＡに送信する（ステップＳ９）。
【００３９】
サーバＡにおけるアプリケーションプログラム３５は、ファイルの格納場所を示すデータを管理サーバ１から受信する（ステップＳ１１）。そして、アプリケーションプログラム３５は、ファイルの格納場所（ここではサーバＢとする）を示すデータに従い、アクセス対象のファイルの指定を含むファイルオープン要求をサーバＢに送信する（ステップＳ１３）。
【００４０】
サーバＢは、ファイルオープン要求をサーバＡから受信する（ステップＳ１５）。そして、サーバＢにおけるアクセス制御部３３は、ファイルオープン要求において指定されたファイルのオープン処理（すなわち、ファイルの使用を開始するための処理）を実行し、ファイルをキャッシュ３６に展開する（ステップＳ１７）。なお、ファイルオープン要求において指定されたファイルは、ファイル格納部３７から読み出される。
【００４１】
そして、先読み処理部３４は、先読み処理を実行する（ステップＳ１９）。先読み処理については、図８Ａ乃至図１０を用いて説明する。
【００４２】
まず、先読み処理部３４は、アクセス対象のファイルについて関連ファイルリストを要求する関連ファイル要求を管理サーバ１に送信する（図８Ａ：ステップＳ６１）。
【００４３】
図８Ｂを用いて、関連ファイル要求を受信した管理サーバ１の処理について説明する。管理サーバ１における通信制御部１０１は、関連ファイル要求をサーバＢから受信する（図８Ｂ：ステップＳ６２）。通信制御部１０１は、関連ファイル要求をファイル管理部１０４に出力する。
【００４４】
ファイル管理部１０４は、アクセス対象のファイルに対応する関連ファイルの識別子及び当該関連ファイルの格納場所（すなわち、関連ファイルを管理するサーバの識別子）を関連ファイルデータ格納部１０８から抽出する（ステップＳ６３）。ファイル管理部１０４は、関連ファイルの識別子及び関連ファイルを管理するサーバの識別子を通信制御部１０１に出力する。なお、関連ファイルの識別子及び当該関連ファイルを管理するサーバの識別子は複数である場合もある。また、関連ファイルが無い場合もある。
【００４５】
通信制御部１０１は、関連ファイルの識別子及び当該関連ファイルを管理するサーバの識別子を含む関連ファイルリストをサーバＢに送信する（ステップＳ６４）。そして処理を終了する。
【００４６】
これに応じ、サーバＢにおける先読み処理部３４は、関連ファイルリストを管理サーバ１から受信し（ステップＳ６５）、メインメモリ等の記憶装置に格納する。
【００４７】
先読み処理部３４は、関連ファイルリストに未処理の関連ファイルが有るか判断する（ステップＳ６６）。未処理の関連ファイルが無い場合（ステップＳ６６：Ｎｏルート）、元の処理に戻る。未処理の関連ファイルが有る場合（ステップＳ６６：Ｙｅｓルート）、先読み処理部３４は、未処理の関連ファイルを１つ特定し、当該関連ファイルが自サーバ（すなわちサーバＢ）に有るか判断する（ステップＳ６７）。ステップＳ６７の判断は、関連ファイルを管理するサーバの識別子が自サーバを示しているか否かにより行う。なお、ステップＳ６７において特定された関連ファイルを「処理対象の関連ファイル」と呼ぶ。
【００４８】
処理対象の関連ファイルが自サーバに無い場合（ステップＳ６７：Ｎｏルート）、先読み処理部３４は、処理対象の関連ファイルを管理するサーバ（ここでは、サーバＣとする）に先読み処理要求を送信する（ステップＳ６９）。ステップＳ６９の先読み処理要求に応じ、サーバＣは、先読み処理（ステップＳ１９）を実行する。そして処理は端子Ｄを介してステップＳ６６に戻る。
【００４９】
一方、処理対象の関連ファイルが自サーバに有る場合（ステップＳ６７：Ｙｅｓルート）、先読み処理部３４は、キャッシュ３６の使用量が閾値以下であるか判断する（ステップＳ７１）。キャッシュ３６の使用量が閾値以下ではない場合（ステップＳ７１：Ｎｏルート）、キャッシュ溢れが発生する可能性があるので、処理対象の関連ファイルをキャッシュ３６に展開せず、元の処理に戻る。キャッシュ３６の使用量が閾値以下である場合（ステップＳ７１：Ｙｅｓルート）、先読み処理部３４は、処理対象の関連ファイルが既にキャッシュ３６に展開されているか判断する（ステップＳ７３）。
【００５０】
処理対象の関連ファイルが既にキャッシュ３６に展開されている場合（ステップＳ７３：Ｙｅｓルート）、処理対象の関連ファイルをキャッシュ３６に展開しなくてもよいので、処理は端子Ｄを介してステップＳ６６の処理に戻る。一方、処理対象の関連ファイルがキャッシュ３６に展開されていない場合（ステップＳ７３：Ｎｏルート）、先読み処理部３４は、アクセス制御部３３に処理対象の関連ファイルのオープン処理を実行することを要求する。これに応じ、アクセス制御部３３は、処理対象の関連ファイルのオープン処理を実行する（ステップＳ７５）。そして処理は端子Ｄを介してステップＳ６６に戻る。
【００５１】
以上のような処理を実行すれば、特定のファイルに対してアクセスがあった場合に、そのファイルに関連するファイルがキャッシュ３６に展開されるようになる。関連ファイルは、特定のファイルに対するアクセスがあった場合にアクセスされる可能性が高いファイルであるから、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【００５２】
図９を用いて、先読み処理についてより具体的に説明する。例えば、サーバ１におけるアプリケーションプログラム３５がファイルＡに対する分散処理を要求したとする（図９における（１））。ファイルＡは、分散ファイルシステムによってファイルＡ−１、Ａ−２、・・・、Ａ−ｎのｎ個（ｎは２以上の自然数）に分割されており、分割されたファイルはサーバ１乃至３に分散して格納されている。ここで、ファイルＡ−１がサーバ１のファイル格納部３７からキャッシュ３６に展開され、アプリケーションプログラム３５による処理に供される（図９における（２））。この際、サーバ２におけるファイルＡ−２及びファイルＡ−３、並びにサーバ３におけるファイルＡ−ｎもキャッシュ３６に展開される（図９における（３））。そのため、アプリケーションプログラム３５がファイルＡ−２乃至Ａ−ｎについて処理する際には、これらのファイルは事前にキャッシュ３６に展開されているので、ディスクＩ／Ｏは発生しない。従って、ファイルＡの処理を高速で行うことができるようになる。
【００５３】
なお、上で述べた例では、各サーバがファイル格納部３７を有するとして説明したが、図１０に示すように、複数のサーバに対して共有のファイル格納部３７を１つ設けるような場合（以下、共有ディスク型の場合と呼ぶ）にも先読み処理は有効である。図１０の例では、ファイル格納部３７が３つの部分に分けられている。この場合、ファイルＡ−１乃至Ａ−３のいずれかに対するアクセスがあった場合には、サーバ１乃至サーバ３のうちいずれかのサーバが、共有のファイル格納部３７からファイルを読み出し、キャッシュ３６に展開する。これにより、ディスクＩ／Ｏは発生しなくなるので、ファイルＡの処理を高速で行うことができるようになる。なお、キャッシュ３６への展開を行なうサーバは、例えばラウンドロビン或いはキャッシュ３６の使用状況等に基づき分散ファイルシステムにより決定される。
【００５４】
図７の説明に戻り、サーバＢにおける通信制御部３１は、オープン処理の完了を示す通知をサーバＡに送信する（ステップＳ２１）。
【００５５】
サーバＡにおけるアプリケーションプログラム３５は、オープン処理の完了を示す通知を受信すると（ステップＳ２３）、オープン処理が行われたファイルに対するファイルアクセス要求（例えば、参照要求）をサーバＢに送信する（ステップＳ２５）。
【００５６】
サーバＢにおける通信制御部３１は、ファイルアクセス要求を受信する（ステップＳ２７）。通信制御部３１は、ファイルアクセス要求をファイル管理部３２に出力する。処理は端子Ａ乃至Ｃを介して図１１の処理に移行する。
【００５７】
図１１の説明に移行し、ファイル管理部３２におけるアクセス制御部３３は、ファイル格納部３７に格納されているファイルに対するアクセスを行う（ステップＳ２９）。アクセス制御部３３は、アクセス結果（例えば、ファイルアクセス要求が参照要求である場合には、参照した結果）を通信制御部３１に出力する。
【００５８】
通信制御部３１は、アクセス結果をファイルアクセス要求の送信元であるサーバＡに送信する（ステップＳ３１）。
【００５９】
サーバＡにおけるアプリケーションプログラム３５は、アクセス結果を受信する（ステップＳ３３）。その後、アプリケーションプログラム３５は、アクセス対象のファイルについてファイルクローズ要求をサーバＢに送信する（ステップＳ３５）。
【００６０】
サーバＢにおける通信制御部３１は、ファイルクローズ要求を受信する（ステップＳ３７）。通信制御部３１は、ファイルクローズ要求をファイル管理部３２に出力する。
【００６１】
ファイル管理部３２におけるアクセス制御部３３は、アクセス対象のファイルについてクローズ処理（すなわち、ファイルの使用を終了するための処理）を実行する（ステップＳ３９）。また、ファイル管理部３２における先読み処理部３４は、破棄処理を実行する（ステップＳ４１）。破棄処理については、図１２及び図１３を用いて説明する。
【００６２】
まず、先読み処理部３４は、キャッシュ３６に展開されているアクセス対象のファイルを削除する（図１２：ステップＳ８１）。
【００６３】
先読み処理部３４は、ステップＳ６５において受信した関連ファイルリストに、自サーバが管理する関連ファイルであり且つ未処理の関連ファイルが有るか判断する（ステップＳ８３）。
【００６４】
未処理の関連ファイルが無い場合（ステップＳ８５：Ｎｏルート）、元の処理に戻る。一方、未処理の関連ファイルが有る場合（ステップＳ８５：Ｙｅｓルート）、先読み処理部３４は、未処理の関連ファイルを１つ特定する（以下では、特定されたファイルを「処理対象の関連ファイル」と呼ぶ）。そして、先読み処理部３４は、キャッシュ３６の使用量が閾値以下であるか判断する（ステップＳ８７）。
【００６５】
キャッシュ３６の使用量が閾値以下ではない場合（ステップＳ８７：Ｎｏルート）、処理対象の関連ファイルをキャッシュ３６に展開することはできないので、元の処理に戻る。一方、キャッシュ３６の使用量が閾値以下である場合（ステップＳ８７：Ｙｅｓルート）、先読み処理部３４は、処理対象の関連ファイルが既にキャッシュ３６に展開されているか判断する（ステップＳ８９）。
【００６６】
処理対象の関連ファイルが既にキャッシュ３６に展開されている場合（ステップＳ８９：Ｙｅｓルート）、処理対象の関連ファイルをキャッシュ３６に展開しなくてもよいので、ステップＳ８３の処理に戻る。一方、処理対象の関連ファイルがキャッシュ３６に展開されていない場合（ステップＳ８９：Ｎｏルート）、先読み処理部３４は、アクセス制御部３３に処理対象の関連ファイルのオープン処理を実行することを要求する。これに応じ、アクセス制御部３３は、処理対象の関連ファイルのオープン処理を実行する（ステップＳ９１）。そしてステップＳ８３に戻る。
【００６７】
以上のような処理を実行すれば、クローズ処理が完了したファイルについてはキャッシュ３６から削除されるので、キャッシュ３６を無駄に使用することが無くなる。また、図１３に示すように、キャッシュ３６の使用量は閾値以下になるように制御されている。図１３に示す例においては、処理済みであるファイルＡ−１がキャッシュ３６から削除されており、代わりに関連ファイルであるファイルＡ−４がキャッシュ３６に展開される。このようにすることで、未処理の関連ファイルがキャッシュ３６に展開されやすくなるので、キャッシュヒット率をさらに向上させることができるようになる。
【００６８】
図１１の説明に戻り、サーバＢにおける通信制御部３１は、クローズ処理の完了を示す通知をサーバＡに送信する（ステップＳ４３）。
【００６９】
サーバＡにおけるアプリケーションプログラム３５は、クローズ処理の完了を示す通知をサーバＢから受信する（ステップＳ４５）。そして、アプリケーションプログラム３５は、アクセス対象のファイルについてファイルクローズ要求を管理サーバ１に送信する（ステップＳ４７）。
【００７０】
管理サーバ１における通信制御部１０１は、サーバＡからファイルクローズ要求を受信し（ステップＳ４９）、ファイル管理部１０４に出力する。そして、ファイル管理部１０４は、アクセス対象のファイルのステータス（ここでは、状態についての情報を意味する）を更新する（ステップＳ５１）。具体的には、アクセス対象のファイルについて、オープン又はクローズの状態、ロックの状態、ファイルサイズ、又は更新の日時等を更新し、図示しない記憶装置に記憶する。
【００７１】
以上のような処理を実行すれば、分散処理システムにおけるキャッシュヒット率を向上させ、ファイルに対する処理を高速で行うことができるようになる。
【００７２】
通常、キャッシュはアプリケーションプログラムの都合とは無関係にリフレッシュされる。しかし、本実施の形態においては、関連性があるファイルがキャッシュに残りやすいため、高速にファイルの処理をすることを期待できる。図１４を用いて、図１と同様の状況において本実施の形態の処理を行なった場合について説明する。本実施の形態の処理によれば、アプリケーションプログラム３５がサーバ２にアクセスした際にはファイルＢがキャッシュ３６に展開されている可能性が高く、またアプリケーションプログラム３５がサーバ３にアクセスした際にはファイルＣがキャッシュ３６に展開されている可能性が高い。よって、ファイルＢ及びファイルＣについてディスクＩ／Ｏが発生する可能性は低くなるので、ファイルに対する処理の完了までの時間を短くすることができるようになる。
【００７３】
なお、データ処理を高速化する一つの方法として、ＯＳのキャッシュとは別にアプリケーションプログラムのためのメモリ領域（以下、アプリケーションキャッシュと呼ぶ）を確保し、そこに予めデータを展開しておきアクセスするという方法が知られている。この方法によれば、独自のメモリ領域であればデータの取捨選択をも完全にコントロールできるため、効率的なアクセスが可能になる。但し、アプリケーションキャッシュを設けたとしてもＯＳのキャッシュが無くなるわけではないので、メモリ領域を２倍使用することになる。
【００７４】
これに対し、本実施の形態において説明した方法であれば、アプリケーションキャッシュを利用する方法と比べると、メモリの使用量は１／２程度に節約できる。
【００７５】
次に、図１５乃至図１７を用いて、ファイルを格納する際の動作について説明する。なお、図１５のフローは、処理の要点を示しており、通常の分散ファイルシステムが行う処理（例えば、ステータス更新、ファイルのロック及びクラスタ構成の管理等）については省略している。
【００７６】
まず、サーバ３（ここでは、サーバＡとする）におけるファイル管理部３２は、例えばアプリケーションプログラム３５によりファイルが生成された場合に、当該ファイルを分散して格納することを要求するファイル格納要求を生成する。そして、ファイル管理部３２は、ファイル格納要求を管理サーバ１に送信する（図１５：ステップＳ１０１）。なお、ファイル格納要求には、ファイルそのものを含ませるようにしてもよいし、ファイルサイズの情報等を含ませるようにしてもよい。
【００７７】
管理サーバ１における通信制御部１０１は、ファイル格納要求を受信すると（ステップＳ１０３）、ファイル格納要求をファイル管理部１０４に出力する。
【００７８】
ファイル管理部１０４は、ファイル格納要求において格納が要求されているファイルの格納場所を決定する（ステップＳ１０５）。例えば、ファイル格納部３７の空き容量が多いサーバをファイルの格納場所とする。また、ファイルサイズが大きい場合にはファイルを分割することになるため、複数のサーバをファイルの格納場所に決定する。
【００７９】
ファイル管理部１０４は、関連ファイルデータ格納部１０８に格納されているデータを更新する（ステップＳ１０７）。ステップＳ１０７においては、構成的関連に基づき関連ファイルデータを更新する。例えばファイルが特定のディレクトリに格納される場合には、そのディレクトリに格納されている他のファイルと構成的関連性を有することになるので、新たな構成的関連性に基づき更新を行う。また、ファイルが分割される場合には、分割後の複数のファイルは構成的関連性を有することになるので、新たな構成的関連性に基づき更新を行う。
【００８０】
ファイル管理部１０４は、ファイルの格納場所を示すデータを通信制御部１０１に出力する（ステップＳ１０９）。そして、通信制御部１０１は、ファイルの格納場所を示すデータ（ここでは、サーバＢを示しているとする）をサーバＡに送信する。
【００８１】
サーバＡにおけるファイル管理部３２は、ファイルの格納場所を示すデータを受信すると（ステップＳ１１１）、ファイルの格納場所を示すデータに従い、ファイル格納要求をサーバＢに送信する（ステップＳ１１３）。ステップＳ１１３において送信するファイル格納要求には、ファイルが含まれる。なお、ファイルの格納場所となるサーバが複数ある場合には、複数のサーバに対してファイル格納要求を送信する。
【００８２】
サーバＢにおける通信制御部３１は、ファイル格納要求を受信する（ステップＳ１１５）。通信制御部３１は、ファイル格納要求をアクセス制御部３３に出力する。
【００８３】
アクセス制御部３３は、ファイル格納要求に含まれるファイルをファイル格納部３７に格納する（ステップＳ１１７）。
【００８４】
以上のような処理を実行すれば、ファイルをファイル格納部３７に格納する際には、ファイルの構成的関連性に基づき関連ファイルデータを更新できるようになる。
【００８５】
図１６を用いて、ファイルの構成的関連性に基づく関連ファイルデータの更新について具体的に説明する。例えば、いずれかのサーバにおけるアプリケーションプログラム３５がファイルＡについてファイル格納要求を出力したとする。ファイルＡは、分散ファイルシステムによってファイルＡ−１、ファイルＡ−２及びファイルＡ−３の３つに分割され、分割されたファイルはサーバ１乃至３に分散して格納される。また、ファイルＡ−１はサーバ１のファイル格納部３７においてファイルＢ−１と同じディレクトリに格納されており、ファイルＡ−２はサーバ２のファイル格納部３７においてファイルＢ−２と同じディレクトリに格納されており、ファイルＡ−３はサーバ３のファイル格納部３７においてファイルＢ−３と同じディレクトリに格納されているとする。このような場合、管理サーバ１における関連ファイルデータ格納部１０８は、例えば図１６の１６０に示した状態に更新される。この例においては、ファイルＡ−１の関連ファイルはファイルＡ−２、ファイルＡ−３及びファイルＢ−１であり、ファイルＡ−２の関連ファイルはファイルＡ−１、ファイルＡ−３及びファイルＢ−２であり、ファイルＡ−３の関連ファイルはファイルＡ−１、ファイルＡ−２及びファイルＢ−３である。
【００８６】
なお、図１６においては、ファイルＡ−１の関連ファイルにファイルＢ−２及びファイルＢ−３が含まれておらず、同じディレクトリに格納されているファイルＢ−１に限定されている。これは、ファイルＢ−１のスプリットファイル（ここでは、ファイルＢ−２及びファイルＢ−３）まで関連ファイルとすると、ファイルＡ−１の関連ファイルの数が膨大になるからである。ファイルＡ−２及びファイルＡ−３についても同様である。
【００８７】
また、共有ディスク型の場合においても、ファイルの構成的関連性に基づく関連ファイルデータの更新を同様に行なうことができる。例えば図１７に示すように、複数のサーバに対して共有のファイル格納部３７が１つ設けられており、ファイル格納部３７が３つの部分に分けられているとする。ファイルＡは、分散ファイルシステムによってファイルＡ−１、ファイルＡ−２及びファイルＡ−３の３つに分割され、分割されたファイルは共有のファイル格納部３７における部分ｐ１乃至ｐ３に分散して格納される。また、ファイルＡ−１はファイル格納部３７の部分ｐ１においてファイルＢ−１と同じディレクトリに格納されており、ファイルＡ−２はファイル格納部３７の部分ｐ２においてファイルＢ−２と同じディレクトリに格納されており、ファイルＡ−３はファイル格納部３７の部分ｐ３においてファイルＢ−３と同じディレクトリに格納されているとする。このような場合にも、管理サーバ１における関連ファイルデータ格納部１０８は、図１７の１７０に示した状態に更新される。すなわち、ファイルＡ−１の関連ファイルはファイルＡ−２、ファイルＡ−３及びファイルＢ−１であり、ファイルＡ−２の関連ファイルはファイルＡ−１、ファイルＡ−３及びファイルＢ−２であり、ファイルＡ−３の関連ファイルはファイルＡ−１、ファイルＡ−２及びファイルＢ−３である。
【００８８】
次に、図１８を用いて、ユーザが関連を指定する場合の動作について説明する。
【００８９】
まず、ユーザは、対象ファイル及び当該対象ファイルに関連する関連ファイルをサーバ３における入力部（例えばキーボード又はマウス等）を使用して入力する。サーバ３におけるファイル管理部３２は、対象ファイル及び関連ファイルの指定を受け付ける。そして、ファイル管理部３２は、対象ファイル及び関連ファイルの指定を含む更新要求を管理サーバ１に送信する（図１８：ステップＳ１２１）。
【００９０】
管理サーバ１における通信制御部１０１は、サーバ３から更新要求を受信し（ステップＳ１２３）、ファイル管理部１０４に出力する。
【００９１】
ファイル管理部１０４は、更新要求において指定されている対象ファイルについての関連ファイルデータを関連ファイルデータ格納部１０８から特定する（ステップＳ１２５）。そして、ファイル管理部１０４は、更新要求におけるユーザの指定に従い関連ファイルデータを生成し、特定された関連ファイルデータを生成された関連ファイルデータで更新する（ステップＳ１２７）。なお、指定された対象ファイルについての関連ファイルデータが関連ファイルデータ格納部１０８に無い場合には、生成された関連ファイルデータを関連ファイルデータ格納部１０８に格納する。
【００９２】
ファイル管理部１０４は、更新完了を示す通知を通信制御部１０１に出力する。通信制御部１０１は、更新完了を示す通知をサーバ３に送信する（ステップＳ１２９）。
【００９３】
サーバ３における通信制御部３１は、更新完了を示す通知を管理サーバ１から受信する（ステップＳ１３１）。通信制御部３１は、更新完了を示す通知をファイル管理部３２に出力する。
【００９４】
ファイル管理部３２における先読み処理部３４は、先読み処理を実行する（ステップＳ１３３）。先読み処理については、図８Ａ乃至図１０を用いて説明をしたとおりである。なお、このようなタイミングで先読み処理を実行するのは、ユーザが関連を指定する場合には即ファイルに対する処理を行なう場合が多いと考えられるからである。
【００９５】
以上のような処理を実行すれば、ユーザの意図を関連ファイルデータ格納部１０８に適切に反映することができるようになる。
【００９６】
図１９に、キャッシュのライフサイクルの一例を示す。図１９の例は、サーバＡ及びサーバＢにおけるキャッシュ３６のライフサイクルを示している。図１９において、キャッシュ３６にファイルが展開されている時間を、白色の長方形で表す。
【００９７】
例えばサーバＡにおける特定のファイルに対するアクセスがあった場合、サーバＡにおける先読み処理部３４は、管理サーバ１に関連ファイル要求を送信する（図１９：１００１）。これに応じ、管理サーバ１におけるファイル管理部１０４は、関連ファイルリストをサーバＡに送信する（図１９：１００２）。ここで、関連ファイルリストには、サーバＡが管理するファイルの識別情報と、サーバＢが管理するファイルの識別情報とが含まれるとする。
【００９８】
サーバＡにおける先読み処理部３４は、サーバＢに対し、先読み処理要求を送信する（図１９：１００４）。サーバＢにおける先読み処理部３４は、先読み処理要求を受信すると、応答を返す（図１９：１００５）。
【００９９】
サーバＢにおける先読み処理部３４は、関連ファイル要求を管理サーバ１に送信する（図１９：１００６）。これに応じ、管理サーバ１におけるファイル管理部１０４は、関連ファイルリストをサーバＢに送信する（図１９：１００７）。
【０１００】
一方、サーバＡにおける先読み処理部３４は、サーバＡが管理する関連ファイルをキャッシュ３６に展開する（図１９：１００８）。また、サーバＢにおける先読み処理部３４は、サーバＢが管理する関連ファイルをキャッシュ３６に展開する（図１９：１００９）。
【０１０１】
サーバＡにおけるアプリケーションプログラム３５は、ファイルクローズ要求を管理サーバ１に送信する（図１９：１０１０）。管理サーバ１におけるファイル管理部１０４は、ファイルクローズ要求を受信すると、ファイルのステータスの更新等を行い、クローズの完了をサーバＡに通知する（図１９：１０１１）。
【０１０２】
サーバＡにおける先読み処理部３４は、クローズの完了を管理サーバ１から通知されたことを契機として、キャッシュ３６に展開されているファイルを削除する（図１９：１０１２）。また、先読み処理部３４は、残りの関連ファイルをキャッシュ３６に展開する（図１９：１０１３）。
【０１０３】
一方、サーバＢにおけるアプリケーションプログラム３５は、ファイルクローズ要求を管理サーバ１に送信する（図１９：１０１４）。管理サーバ１におけるファイル管理部１０４は、ファイルクローズ要求を受信すると、ファイルのステータスの更新等を行い、クローズの完了をサーバＢに通知する（図１９：１０１５）。
【０１０４】
サーバＢにおける先読み処理部３４は、クローズの完了を管理サーバ１から通知されたことを契機として、キャッシュ３６に展開されているファイルを削除する（図１９：１０１６）。また、先読み処理部３４は、残りの関連ファイルをキャッシュ３６に展開する（図１９：１０１７）。
【０１０５】
以上のような処理が繰り返し行われることで、分散処理システムにおいてファイルに対する処理が進行する。
【０１０６】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した管理サーバ１及びサーバ３の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０１０７】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１０８】
なお、上で述べた例では、ファイルアクセス要求として参照要求を示したが、参照要求に限られるわけではない。例えば、ファイルに対する書き込み要求であってもよい。
【０１０９】
また、図７及び図１１に示したフローにおいては、サーバＢが管理サーバ１から関連ファイルリストを取得する例を示した。しかし、このような例に限られるわけではない。例えば、サーバＡが管理サーバ１からファイルの格納場所を示す情報を受信する際に関連ファイルリストを受信し、サーバＡが関連ファイルリストをサーバＢに送信するようにしてもよい。
【０１１０】
また、上では管理サーバ１がサーバ３の動作を行う例を示していないが、管理サーバ１がサーバ３の動作をも行なうようにしてもよい。
【０１１１】
また、上で述べたように、共有ディスク型の場合であっても、本実施の形態の処理を適用可能である。共有ディスク型の場合のシステムは、例えば図２０に示すようなシステムであればよい。具体的には、複数のサーバ３に対して１つのファイル格納部７０を設ければよい。
【０１１２】
なお、上で述べた管理サーバ１及びサーバ３は、コンピュータ装置であって、図２１に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１３】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１１４】
本実施の形態の第１の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、（Ａ）第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、（Ｂ）第２のデータを管理する情報処理装置が第１の情報処理装置である場合に、第２のデータをデータ格納部から読み出し、キャッシュに展開する処理を含む。
【０１１５】
第１のデータと所定の関連性を有する第２のデータがアクセスされるタイミングは、第１のデータがアクセスされるタイミングの近傍である可能性が高い。そこで、上で述べたようにすれば、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【０１１６】
また、上で述べた本情報処理方法が、（Ｃ）第２のデータを管理する情報処理装置が第１の情報処理装置ではない場合に、複数の情報処理装置のうち第２のデータを管理する情報処理装置に対し、第２のデータをキャッシュに展開することを要求する第１の要求を送信する処理をさらに含むようにしてもよい。このようにすれば、第１の情報処理装置が第２のデータを管理していない場合にも対処できるようになる。
【０１１７】
また、上で述べた本情報処理方法が、（Ｄ）第１のデータに対するアクセスが終了した場合に、キャッシュに展開されている第１のデータを削除する処理をさらに含むようにしてもよい。このようにすれば、キャッシュ溢れの発生を抑制できるようになる。
【０１１８】
また、上で述べた所定の関連性が、データの内容の関連性、データの格納場所に基づく関連性、データのタイムスタンプに基づく関連性、データに対するアクセスの履歴に基づく関連性及びユーザにより指定された関連性の少なくともいずれかであってもよい。
【０１１９】
本実施の第２の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、（Ｅ）複数の情報処理装置のうち第１のデータを管理する情報処理装置から、第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、第１のデータと所定の関連性を有する第２のデータの識別情報を抽出し、（Ｆ）抽出された第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、第１の要求の送信元の情報処理装置に送信する処理を含む。
【０１２０】
このようにすれば、第１のデータにアクセスがあった場合に第２のデータをキャッシュに展開できるようになるので、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【０１２１】
また、上で述べた本情報処理方法が、（Ｇ）データの内容の関連性、データの格納場所及びデータのタイムスタンプの少なくともいずれかに基づき、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。このような事項はデータの関連性に関わっているため、このような事項に基づき更新を行えば、関連性を有するデータとして適切なデータを特定できるようになる。
【０１２２】
また、上で述べた本情報処理方法が、（Ｈ）分散処理システムにおけるデータへのアクセスの履歴に基づき、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。例えばアクセスの順序或いはアクセスパターン等はデータの関連性に関わっているため、アクセスの履歴に基づき更新を行えば、関連性を有するデータとして適切なデータを特定できるようになる。
【０１２３】
また、上で述べた本情報処理方法が、（Ｉ）ユーザからの指定を受け付けた場合に、当該指定に従い、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。このようにすれば、ユーザの意図どおりにキャッシュへの展開を行えるようになる。
【０１２４】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図８Ｂ
【補正方法】変更
【補正の内容】
【図８Ｂ】
2014155553.tif 000025
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2014155553.tif 000026
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2014155553.tif 000027
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2014155553.tif 000028
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図１８
【補正方法】変更
【補正の内容】
【図１８】
2014155553.tif 000029
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図２０
【補正方法】変更
【補正の内容】
【図２０】
2014155553.tif 000030
【手続補正書】
【提出日】平成28年10月19日(2016.10.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データの処理を行う複数の情報処理装置と管理装置とを含む分散処理システムにおいて実行される情報処理方法であって、
前記複数の情報処理装置のうち第１の情報処理装置が、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記管理装置から、前記第１のデータに対するアクセスの後にアクセスされる可能性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開する
処理を実行する情報処理方法。
【請求項２】
前記第１の情報処理装置が、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置とは異なる第２の情報処理装置である場合に、前記第２の情報処理装置に対し、前記第２のデータをキャッシュに展開することを要求する第１の要求を送信する
処理をさらに実行する請求項１記載の情報処理方法。
【請求項３】
前記第１の情報処理装置が、
前記第１のデータに対するアクセスが終了した場合に、前記キャッシュに展開されている前記第１のデータを削除する
処理をさらに実行する請求項１又は２記載の情報処理方法。
【請求項４】
データの処理を行う複数の情報処理装置と管理装置とを含む分散処理システムにおいて実行される情報処理方法であって、
前記管理装置が、
前記複数の情報処理装置のうち第１のデータを管理する第１の情報処理装置から、前記第１のデータの識別情報を含む要求を受信した場合に、データの識別情報と当該データに対するアクセスの後にアクセスされる可能性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、前記第１のデータに対するアクセスの後にアクセスされる可能性を有する第２のデータの識別情報を抽出し、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の情報処理装置に送信する
処理を実行する情報処理方法。
【請求項５】
前記管理装置が、
データの内容の関連性、データの格納場所及びデータのタイムスタンプの少なくともいずれかに基づき、前記関連データ格納部に格納されているデータを更新する
処理をさらに実行する請求項４記載の情報処理方法。
【請求項６】
前記管理装置が、
前記分散処理システムにおけるデータへのアクセスの履歴に基づき、前記関連データ格納部に格納されているデータを更新する
処理をさらに実行する請求項４記載の情報処理方法。
【請求項７】
データの処理を行う複数の情報処理装置と管理装置とを含む分散処理システムにおいてキャッシュを管理するためのプログラムであって、
前記複数の情報処理装置のうち第１の情報処理装置に、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記管理装置から、前記第１のデータに対するアクセスの後にアクセスされる可能性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開する
処理を実行させるためのプログラム。
【請求項８】
データの処理を行う複数の情報処理装置と管理装置とを含む分散処理システムにおいてキャッシュを管理するためのプログラムであって、
前記管理装置に、
前記複数の情報処理装置のうち第１のデータを管理する第１の情報処理装置から、前記第１のデータの識別情報を含む要求を受信した場合に、データの識別情報と当該データに対するアクセスの後にアクセスされる可能性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、前記第１のデータに対するアクセスの後にアクセスされる可能性を有する第２のデータの識別情報を抽出し、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の情報処理装置に送信する
処理を実行させるためのプログラム。
【請求項９】
データの処理を行う複数の情報処理装置と管理装置とを含む分散処理システムにおける前記複数の情報処理装置に含まれる第１の情報処理装置であって、
第１のデータに対するアクセスがあった場合に、前記管理装置から、前記第１のデータに対するアクセスの後にアクセスされる可能性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得する取得部と、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開するキャッシュ処理部と、
を有する第１の情報処理装置。
【請求項１０】
データの処理を行う複数の情報処理装置と管理装置とを含む分散処理システムにおける前記管理装置であって、
データの識別情報と当該データに対するアクセスの後にアクセスされる可能性を有するデータの識別情報とを対応付けて格納する関連データ格納部と、
第１のデータを管理する第１の情報処理装置から、前記第１のデータの識別情報を含む要求を受信した場合に、前記関連データ格納部から、前記第１のデータに対するアクセスの後にアクセスされる可能性を有する第２のデータの識別情報を抽出する抽出部と、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の情報処理装置に送信する送信部と、
を有する管理装置。
【請求項１１】
データの処理を行う複数の情報処理装置と管理装置とを含む分散処理システムであって、
前記複数の情報処理装置のうち第１の情報処理装置が、
前記第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、前記管理装置から、前記第１のデータに対するアクセスの後にアクセスされる可能性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を、前記第１のデータの識別情報を含む要求を前記管理装置に送信することにより取得する取得部と、
前記第２のデータを管理する情報処理装置が前記第１の情報処理装置である場合に、前記第２のデータをデータ格納部から読み出し、キャッシュに展開するキャッシュ処理部と、
を有し、
前記管理装置が、
データの識別情報と当該データに対するアクセスの後にアクセスされる可能性を有するデータの識別情報とを対応付けて格納する関連データ格納部と、
前記第１の情報処理装置から前記要求を受信した場合に、前記関連データ格納部から、前記第１のデータの識別情報に対応付けられている前記第２のデータの識別情報を抽出する抽出部と、
抽出された前記第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、前記第１の情報処理装置に送信する送信部と、
を有する分散処理システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理技術に関する。
【背景技術】
【０００２】
近年、ウェブサイト、センサ或いは携帯端末等において発生する大量のデータ（以下、ビッグデータと呼ぶ）を短時間で処理する技術が求められている。
【０００３】
ビッグデータを処理する技術として、ハドゥープ（Ｈａｄｏｏｐ）という分散処理フレームワークが知られている。Ｈａｄｏｏｐにおいては、マップリデュース（ＭａｐＲｅｄｕｃｅ）という分散処理方式に基づき１つのファイルを複数のファイルに分割し、複数のノードがファイルを並列処理する。Ｈａｄｏｏｐは、ノード数の増加に応じて処理性能が線形に高くなることを特徴とする。そのため、Ｈａｄｏｏｐを利用すれば、例えば数ペタバイト以上のデータを数十から数千のノードで処理するような大規模なシステムを比較的容易に実現することができる。
【０００４】
Ｈａｄｏｏｐは、分散処理を効果的に行うため、ＨＤＦＳ（Hadoop Distributed File System）と呼ばれる分散ファイルシステムを採用している。ＨＤＦＳは、ファイルを特定の大きさに分割し、分割されたファイルを複数のサーバに分散して格納すると共に、分割されたファイルの複製を生成し、複製元のファイルを保持するサーバとは別のサーバに保持させる。分散処理においては、複製元のファイル及び複製されたファイルのいずれかを処理すればよいため、ＨＤＦＳが作業プロセスが空いているサーバに処理を振り分けることにより、サーバのリソース（ＣＰＵ（Central Processing Unit）資源等）を有効に利用できる。
【０００５】
しかし、ＨＤＦＳ等の分散ファイルシステムは、処理の振り分けの際にＯＳ（Operating System）のキャッシュの状態を考慮しない。そのため、分散処理システムは、あるサーバのキャッシュ上にデータがあってもそれを考慮せず別のサーバに処理を振り分けてしまうので、ディスクＩ／Ｏ（Input／Output）が発生する。ディスクＩ／Ｏは時間がかかる処理であり、例えば数ギガバイトのデータの処理に要する時間の約半分をディスクのシーク時間が占めることがある。
【０００６】
図１を用いて、分散ファイルシステムによるビッグデータの処理について説明する。サーバＡのディスクにはファイルＡが格納されており、サーバＢのディスクにはファイルＢが格納されており、サーバＣのディスクにはファイルＢの複製及びファイルＣが格納されている。また、サーバＣのキャッシュにはファイルＢが展開されている。分散処理システムにおけるいずれかのサーバに配置されたアプリケーションプログラムは、ファイルＡ、ファイルＢ、ファイルＣの順に処理を行う。アプリケーションプログラムは、サーバＡにおけるファイルＡに対する処理をした後、サーバＢ又はサーバＣにおけるファイルＢに対して処理をする。サーバＣにおけるファイルＢに対して処理をすれば、キャッシュを利用できるためディスクＩ／Ｏは発生しない。しかし、サーバＢ又はサーバＣのいずれを選択するかは、サーバＢ又はサーバＣにおける空きプロセスの状況等によるため、サーバＢを選択する場合もある。その場合にはディスクＩ／Ｏが発生するため、ファイルに対する処理の完了までの時間が大幅に遅れる。
【０００７】
よって、ファイルに対する処理を短時間で完了させるという観点から、分散処理システムにおけるキャッシュヒット率を向上させることが好ましい。
【０００８】
分散処理及びキャッシュの管理については、例えば以下のような技術が知られている。具体的には、ＭａｐＲｅｄｕｃｅ処理システムが、処理対象のデータを、データの更新頻度に基づき複数のグループに分け、グループに含まれるデータの更新頻度に基づきグループ更新頻度を計算する。そして、ＭａｐＲｅｄｕｃｅ処理システムは、グループ更新頻度が閾値以下であるグループに対するＭａｐＲｅｄｕｃｅ処理段階の部分的結果を生成し、生成された部分的結果をキャッシュする。これによりＭａｐＲｅｄｕｃｅ処理においてキャッシュを有効に利用する。
【０００９】
また、キャッシュの有効利用に関して、以下のような技術も存在する。具体的には、ファイルのオープン時にファイルの全体又は部分領域のデータを多重化して複数のドライブに分散配置すると共に、ファイルのクローズ時にファイルの多重化データを消去する。
【００１０】
また、複数のクライアントから特定のファイルサーバにアクセス要求が集中することによるスループットの低下を防ぐ技術が存在する。具体的には、マスタファイルサーバが、負荷が軽いファイルサーバを選定し、選定されたファイルサーバに、クライアントから伝送されたファイルアクセス要求を分配する。
【００１１】
また、広域ネットワークの状態に関わらず高速なファイルアクセスを提供するための技術が存在する。具体的には、キャッシュサーバは、ファイルアクセスを記録するアクセス履歴データベースを有しており、アクセス履歴データベースによってアクセス頻度が高いファイルの更新間隔を分析し、先読みすべきファイルを決定する。そして、キャッシュサーバは、広域ネットワークが空いている時間帯にアクセス頻度が高いファイルを先読みし、クライアントからの要求に対し先読みしたファイルを渡す。
【００１２】
また、クライアントにログインするユーザ毎に、使用頻度が高いファイルを優先的にキャッシングすることにより、キャッシュヒット率を向上させ、ファイルアクセスを高速化する技術が存在する。
【００１３】
しかしながら、これらの技術を利用したとしても、分散処理システムにおけるキャッシュヒット率を十分に向上させることができない場合がある。また、サーバにおけるキャッシュを有効に利用するという観点において、従来技術は十分ではない。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】Jeffrey Dean and Sanjay Ghemawat，"MapReduce: Simplified Data Processing on Large Clusters"，[online]，２００４年１２月，Symposium on Operating System Design and Implementation 2004 ，[平成２５年１月１０日検索]，インターネット＜URL:http://research.google.com/archive/mapreduce.html＞
【特許文献】
【００１５】
【特許文献１】特開２０１０−９２２２２号公報
【特許文献２】特開平６−３３２６２５号公報
【特許文献３】特開平６−３３２７８２号公報
【特許文献４】特開平１１−２４９８１号公報
【特許文献５】特開平７−９３２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
従って、本発明の目的は、１つの側面では、分散処理システムにおけるキャッシュヒット率を向上させるための技術を提供することである。
【課題を解決するための手段】
【００１７】
本発明の第１の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、第２のデータを管理する情報処理装置が第１の情報処理装置である場合に、第２のデータをデータ格納部から読み出し、キャッシュに展開する処理を含む。
【００１８】
本発明の第２の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、複数の情報処理装置のうち第１のデータを管理する情報処理装置から、第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、第１のデータと所定の関連性を有する第２のデータの識別情報を抽出し、抽出された第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、第１の要求の送信元の情報処理装置に送信する処理を含む。
【発明の効果】
【００１９】
分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【図面の簡単な説明】
【００２０】
【図１】図１は、分散処理システムによるビッグデータの処理について説明するための図である。
【図２】図２は、本実施の形態におけるシステム概要を示す図である。
【図３】図３は、構成的関連性に基づき生成された関連ファイルデータの一例を示す図である。
【図４】図４は、統計的関連性に基づき生成された関連ファイルデータの一例を示す図である。
【図５】図５は、統計的関連性に基づく関連ファイルデータの生成について説明するための図である。
【図６】図６は、関連ファイルデータ格納部の詳細なデータ構造の一例を示す図である。
【図７】図７は、アプリケーションプログラムがファイルに対するアクセスを行う場合に行われる処理の処理フローを示す図である。
【図８Ａ】図８Ａは、先読み処理の処理フローを示す図である。
【図８Ｂ】図８Ｂは、先読み処理の処理フローを示す図である。
【図９】図９は、先読み処理について説明するための図である。
【図１０】図１０は、共有ディスク型の場合における先読み処理について説明するための図である。
【図１１】図１１は、アプリケーションプログラムがファイルに対するアクセスを行う場合に行われる処理の処理フローを示す図である。
【図１２】図１２は、破棄処理の処理フローを示す図である。
【図１３】図１３は、破棄処理について説明するための図である。
【図１４】図１４は、キャッシュヒット率の向上について説明するための図である。
【図１５】図１５は、ファイルを格納する場合に行われる処理の処理フローを示す図である。
【図１６】図１６は、ファイル格納要求について説明するための図である。
【図１７】図１７は、共有ディスク型の場合におけるファイル格納要求について説明するための図である。
【図１８】図１８は、ユーザが関連を指定した場合に行われる処理の処理フローを示す図である。
【図１９】図１９は、キャッシュのライフサイクルの一例を示す図である。
【図２０】図２０は、本実施の形態におけるシステム概要の他の例を示す図である。
【図２１】図２１は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００２１】
図２に、本実施の形態における分散処理システムの概要を示す。例えばインターネットであるネットワーク５には、管理サーバ１と、複数のサーバ３とが接続されている。図２に示した分散処理システムにおいては、サーバ３におけるアプリケーションプログラム３５が、複数のサーバ３のうちいずれかのサーバ３が管理するファイルに対する処理を行う。
【００２２】
管理サーバ１は、システム管理部１００と、関連ファイルデータ格納部１０８と、ログ格納部１０９とを有する。システム管理部１００は、通信制御部１０１と、システムデータ管理部１０２と、構成管理部１０３と、インデックス管理部１０５、メタデータ管理部１０６及び統計データ管理部１０７を含むファイル管理部１０４とを有する。
【００２３】
通信制御部１０１は、通信のための処理を行う。システムデータ管理部１０２は、分散処理システムにおいて共有するデータ（例えばファイルのブロックサイズ又は複製されたファイルの数等）を管理する。構成管理部１０３は、分散処理システムにおけるクラスタの構成の管理及び死活監視等を行う。ファイル管理部１０４は、関連ファイルデータ格納部１０８に格納されているデータ及びログ格納部１０９に格納されているデータを管理する処理等を行う。インデックス管理部１０５は、各サーバ３が管理しているファイルを二分木構造のファイルインデックスにより管理する。メタデータ管理部１０６は、ファイルのメタデータ（例えば、ファイルのサイズ及びファイルの所有者等）を管理する。統計データ管理部１０７は、ログ格納部１０９に格納されているデータを用いてファイル間の統計的関連を特定することにより、関連ファイルデータ格納部１０８に格納されているデータを更新する。
【００２４】
図３に、関連ファイルデータ格納部１０８に格納される関連ファイルデータの一例を示す。図３の例では、関連ファイルデータは、ファイルの識別子とそのファイルに関連するファイル（以下、関連ファイルと呼ぶ）の識別子とを含む。関連ファイルは、特定のファイルに対するアクセスがあった場合に、そのアクセスがあったタイミングの近傍のタイミングにおいてアクセスされる可能性が高いファイルである。
【００２５】
関連性には、構成的関連性と統計的関連性とユーザの指定による関連性とがある。図３に示した関連ファイルデータは、構成的関連性に基づき生成された関連ファイルデータである。構成的関連性があるファイルとは、例えば、元は１つであったファイルを分割することにより得られた複数のファイル、同一又は近傍のディレクトリに格納されているファイル、又は同じタイムスタンプを有するファイル等である。構成的関連性があるファイルは、例えばバッチ処理のような一括処理において一遍にアクセスされる可能性が高い。図３に示した関連ファイルデータは、ファイルＡ−１、ファイルＡ−２及びファイルＡ−３はファイルＡを分割することにより得られたファイルであるため、これらのファイルが構成的関連を有していることを表している。また、ファイルＢ−１は、ファイルＡ−１と同一又は近傍のディレクトリに格納されているか又は同一のタイムスタンプを有している。
【００２６】
図４に、統計的関連性に基づき生成された関連ファイルデータの一例を示す。図４の例では、関連ファイルデータは、ファイルの識別子と、関連ファイルの識別子と、関連ファイルにアクセスされた回数を示す数値とを含む。関連ファイルにアクセスされた回数は、対象のファイルに対するアクセスがあった後所定時間内に関連ファイルにアクセスがあった回数を表す。
【００２７】
統計的関連性に基づき生成された関連ファイルデータは、図５に示すように、統計データ管理部１０７がログ格納部１０９に格納されているアクセスログに基づき生成する。図５の左側には、アクセスログが示されており、図５の右側には統計的関連性に基づき生成された関連ファイルデータが示されている。例えばバッチ処理等においては、所定の時刻にファイルにアクセスしたり、所定の順番でファイルにアクセスすることがある。そこで、アクセスログを利用し、所定の条件（例えば、所定時間内のアクセスであるという条件、所定のアクセス順序であるという条件、又は所定の利用者によるアクセスであるという条件等）に合致すると判断された場合には、関連ファイルであるとみなす。
【００２８】
なお、統計的関連性に基づく関連ファイルデータは、関連性が高い（例えば、アクセス回数が多い）関連ファイルほどチェーン構造における先頭に近付くように生成される。
【００２９】
なお、ユーザの指定により関連性を定義すれば、アクセスパターンが固定されている場合に特に有効である。
【００３０】
図６に、関連ファイルデータ格納部１０８の詳細なデータ構造の一例を示す。関連ファイルの情報は、分散ファイルシステムが管理するファイルの情報の属性の一つである。図６の例では、インデックス管理部１０５が管理するファイルインデックス５０に、ファイル情報５１へのリンクが張られている。ファイル情報５１の構造体には、そのファイルの関連ファイルの情報へのポインタメンバが含まれる。
【００３１】
関連ファイルデータ５２はチェーン構造であり、関連ファイルの情報へのリンクが連結される。関連ファイルデータ５２の構造体には、ファイル識別子と、関連付けられるファイル情報のアドレスと、関連ファイルの格納場所を示す情報と、アクセス回数を示すカウンタと、次の関連ファイルのアドレスとが含まれる。カウンタの値が大きいほどアクセスされる可能性が高い関連ファイルであるため、優先的にキャッシュ３６に展開される。
【００３２】
図２の説明に戻り、サーバ３は、クライアント管理部３０と、アプリケーションプログラム３５と、キャッシュ３６と、ファイル格納部３７とを有する。クライアント管理部３０は、通信制御部３１と、アクセス制御部３３及び先読み処理部３４を含むファイル管理部３２とを有する。先読み処理部３４は、取得部３４１と、キャッシュ処理部３４２とを有する。
【００３３】
通信制御部３１は、通信のための処理を実行する。アクセス制御部３３は、ファイルアクセスを制御する処理を行う。取得部３４１は、関連ファイルの情報を管理サーバ１から取得する処理等を行う。キャッシュ処理部３４２は、関連ファイルをキャッシュ３６に展開する処理等を行う。アプリケーションプログラム３５は、ファイル格納部３７に格納されているファイルに対する処理を行う。キャッシュ３６は、例えばメモリ領域等に確保されたディスクキャッシュである。ファイル格納部３７は、例えばハードディスク等に確保された、ファイルを格納するための領域である。
【００３４】
次に、図７乃至図１９を用いて、図２に示したシステムの動作について説明する。まず、図７乃至図１４を用いて、アプリケーションプログラム３５がファイルに対するアクセスを行う場合の動作について説明する。
【００３５】
図２に示したシステムにおける複数のサーバ３のうちいずれかのサーバ３（ここでは、サーバＡとする）におけるアプリケーションプログラム３５は、特定のファイルに対するアクセスを行うとする。この場合、サーバＡにおけるアプリケーションプログラム３５は、アクセス対象のファイルの指定を含むファイルオープン要求を管理サーバ１に送信する（図７：ステップＳ１）。
【００３６】
管理サーバ１における通信制御部１０１は、ファイルオープン要求をサーバＡから受信すると（ステップＳ３）、ファイル管理部１０４に出力する。ファイル管理部１０４におけるインデックス管理部１０５は、ファイルオープン要求において指定されたファイルの格納場所をファイルインデックス５０を用いて特定する（ステップＳ５）。インデックス管理部１０５は、ファイルの格納場所を示すデータを通信制御部１０１に出力する。
【００３７】
ファイル管理部１０４は、ログ格納部１０９に格納されているアクセスログ及び関連ファイルデータ格納部１０８に格納されているデータを更新する（ステップＳ７）。具体的には、ファイル管理部１０４における統計データ管理部１０７が、今回のアクセスについてのデータをアクセスログに追加することでアクセスログを更新する。また、統計データ管理部１０７は、アクセスログの更新を反映するように関連ファイルデータ格納部１０８に格納されているデータを更新する。
【００３８】
通信制御部１０１は、インデックス管理部１０５から受け取った、ファイルの格納場所を示すデータを、サーバＡに送信する（ステップＳ９）。
【００３９】
サーバＡにおけるアプリケーションプログラム３５は、ファイルの格納場所を示すデータを管理サーバ１から受信する（ステップＳ１１）。そして、アプリケーションプログラム３５は、ファイルの格納場所（ここではサーバＢとする）を示すデータに従い、アクセス対象のファイルの指定を含むファイルオープン要求をサーバＢに送信する（ステップＳ１３）。
【００４０】
サーバＢは、ファイルオープン要求をサーバＡから受信する（ステップＳ１５）。そして、サーバＢにおけるアクセス制御部３３は、ファイルオープン要求において指定されたファイルのオープン処理（すなわち、ファイルの使用を開始するための処理）を実行し、ファイルをキャッシュ３６に展開する（ステップＳ１７）。なお、ファイルオープン要求において指定されたファイルは、ファイル格納部３７から読み出される。
【００４１】
そして、先読み処理部３４は、先読み処理を実行する（ステップＳ１９）。先読み処理については、図８Ａ乃至図１０を用いて説明する。
【００４２】
まず、先読み処理部３４は、アクセス対象のファイルについて関連ファイルリストを要求する関連ファイル要求を管理サーバ１に送信する（図８Ａ：ステップＳ６１）。
【００４３】
図８Ｂを用いて、関連ファイル要求を受信した管理サーバ１の処理について説明する。管理サーバ１における通信制御部１０１は、関連ファイル要求をサーバＢから受信する（図８Ｂ：ステップＳ６２）。通信制御部１０１は、関連ファイル要求をファイル管理部１０４に出力する。
【００４４】
ファイル管理部１０４は、アクセス対象のファイルに対応する関連ファイルの識別子及び当該関連ファイルの格納場所（すなわち、関連ファイルを管理するサーバの識別子）を関連ファイルデータ格納部１０８から抽出する（ステップＳ６３）。ファイル管理部１０４は、関連ファイルの識別子及び関連ファイルを管理するサーバの識別子を通信制御部１０１に出力する。なお、関連ファイルの識別子及び当該関連ファイルを管理するサーバの識別子は複数である場合もある。また、関連ファイルが無い場合もある。
【００４５】
通信制御部１０１は、関連ファイルの識別子及び当該関連ファイルを管理するサーバの識別子を含む関連ファイルリストをサーバＢに送信する（ステップＳ６４）。そして処理を終了する。
【００４６】
これに応じ、サーバＢにおける先読み処理部３４は、関連ファイルリストを管理サーバ１から受信し（ステップＳ６５）、メインメモリ等の記憶装置に格納する。
【００４７】
先読み処理部３４は、関連ファイルリストに未処理の関連ファイルが有るか判断する（ステップＳ６６）。未処理の関連ファイルが無い場合（ステップＳ６６：Ｎｏルート）、元の処理に戻る。未処理の関連ファイルが有る場合（ステップＳ６６：Ｙｅｓルート）、先読み処理部３４は、未処理の関連ファイルを１つ特定し、当該関連ファイルが自サーバ（すなわちサーバＢ）に有るか判断する（ステップＳ６７）。ステップＳ６７の判断は、関連ファイルを管理するサーバの識別子が自サーバを示しているか否かにより行う。なお、ステップＳ６７において特定された関連ファイルを「処理対象の関連ファイル」と呼ぶ。
【００４８】
処理対象の関連ファイルが自サーバに無い場合（ステップＳ６７：Ｎｏルート）、先読み処理部３４は、処理対象の関連ファイルを管理するサーバ（ここでは、サーバＣとする）に先読み処理要求を送信する（ステップＳ６９）。ステップＳ６９の先読み処理要求に応じ、サーバＣは、先読み処理（ステップＳ１９）を実行する。そして処理は端子Ｄを介してステップＳ６６に戻る。
【００４９】
一方、処理対象の関連ファイルが自サーバに有る場合（ステップＳ６７：Ｙｅｓルート）、先読み処理部３４は、キャッシュ３６の使用量が閾値以下であるか判断する（ステップＳ７１）。キャッシュ３６の使用量が閾値以下ではない場合（ステップＳ７１：Ｎｏルート）、キャッシュ溢れが発生する可能性があるので、処理対象の関連ファイルをキャッシュ３６に展開せず、元の処理に戻る。キャッシュ３６の使用量が閾値以下である場合（ステップＳ７１：Ｙｅｓルート）、先読み処理部３４は、処理対象の関連ファイルが既にキャッシュ３６に展開されているか判断する（ステップＳ７３）。
【００５０】
処理対象の関連ファイルが既にキャッシュ３６に展開されている場合（ステップＳ７３：Ｙｅｓルート）、処理対象の関連ファイルをキャッシュ３６に展開しなくてもよいので、処理は端子Ｄを介してステップＳ６６の処理に戻る。一方、処理対象の関連ファイルがキャッシュ３６に展開されていない場合（ステップＳ７３：Ｎｏルート）、先読み処理部３４は、アクセス制御部３３に処理対象の関連ファイルのオープン処理を実行することを要求する。これに応じ、アクセス制御部３３は、処理対象の関連ファイルのオープン処理を実行する（ステップＳ７５）。そして処理は端子Ｄを介してステップＳ６６に戻る。
【００５１】
以上のような処理を実行すれば、特定のファイルに対してアクセスがあった場合に、そのファイルに関連するファイルがキャッシュ３６に展開されるようになる。関連ファイルは、特定のファイルに対するアクセスがあった場合にアクセスされる可能性が高いファイルであるから、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【００５２】
図９を用いて、先読み処理についてより具体的に説明する。例えば、サーバＡにおけるアプリケーションプログラム３５がファイルＡに対する分散処理を要求したとする（図９における（１））。ファイルＡは、分散ファイルシステムによってファイルＡ−１、Ａ−２、・・・、Ａ−ｎのｎ個（ｎは２以上の自然数）に分割されており、分割されたファイルはサーバＡ乃至Ｃに分散して格納されている。ここで、ファイルＡ−１がサーバＡのファイル格納部３７からキャッシュ３６に展開され、アプリケーションプログラム３５による処理に供される（図９における（２））。この際、サーバＢにおけるファイルＡ−２及びファイルＡ−３、並びにサーバＣにおけるファイルＡ−ｎもキャッシュ３６に展開される（図９における（３））。そのため、アプリケーションプログラム３５がファイルＡ−２乃至Ａ−ｎについて処理する際には、これらのファイルは事前にキャッシュ３６に展開されているので、ディスクＩ／Ｏは発生しない。従って、ファイルＡの処理を高速で行うことができるようになる。
【００５３】
なお、上で述べた例では、各サーバがファイル格納部３７を有するとして説明したが、図１０に示すように、複数のサーバに対して共有のファイル格納部３７を１つ設けるような場合（以下、共有ディスク型の場合と呼ぶ）にも先読み処理は有効である。図１０の例では、ファイル格納部３７が３つの部分に分けられている。この場合、ファイルＡ−１乃至Ａ−３のいずれかに対するアクセスがあった場合には、サーバＡ乃至サーバＣのうちいずれかのサーバが、共有のファイル格納部３７からファイルを読み出し、キャッシュ３６に展開する。これにより、ディスクＩ／Ｏは発生しなくなるので、ファイルＡの処理を高速で行うことができるようになる。なお、キャッシュ３６への展開を行なうサーバは、例えばラウンドロビン或いはキャッシュ３６の使用状況等に基づき分散ファイルシステムにより決定される。
【００５４】
図７の説明に戻り、サーバＢにおける通信制御部３１は、オープン処理の完了を示す通知をサーバＡに送信する（ステップＳ２１）。
【００５５】
サーバＡにおけるアプリケーションプログラム３５は、オープン処理の完了を示す通知を受信すると（ステップＳ２３）、オープン処理が行われたファイルに対するファイルアクセス要求（例えば、参照要求）をサーバＢに送信する（ステップＳ２５）。
【００５６】
サーバＢにおける通信制御部３１は、ファイルアクセス要求を受信する（ステップＳ２７）。通信制御部３１は、ファイルアクセス要求をファイル管理部３２に出力する。処理は端子Ａ乃至Ｃを介して図１１の処理に移行する。
【００５７】
図１１の説明に移行し、ファイル管理部３２におけるアクセス制御部３３は、ファイル格納部３７に格納されているファイルに対するアクセスを行う（ステップＳ２９）。アクセス制御部３３は、アクセス結果（例えば、ファイルアクセス要求が参照要求である場合には、参照した結果）を通信制御部３１に出力する。
【００５８】
通信制御部３１は、アクセス結果をファイルアクセス要求の送信元であるサーバＡに送信する（ステップＳ３１）。
【００５９】
サーバＡにおけるアプリケーションプログラム３５は、アクセス結果を受信する（ステップＳ３３）。その後、アプリケーションプログラム３５は、アクセス対象のファイルについてファイルクローズ要求をサーバＢに送信する（ステップＳ３５）。
【００６０】
サーバＢにおける通信制御部３１は、ファイルクローズ要求を受信する（ステップＳ３７）。通信制御部３１は、ファイルクローズ要求をファイル管理部３２に出力する。
【００６１】
ファイル管理部３２におけるアクセス制御部３３は、アクセス対象のファイルについてクローズ処理（すなわち、ファイルの使用を終了するための処理）を実行する（ステップＳ３９）。また、ファイル管理部３２における先読み処理部３４は、破棄処理を実行する（ステップＳ４１）。破棄処理については、図１２及び図１３を用いて説明する。
【００６２】
まず、先読み処理部３４は、キャッシュ３６に展開されているアクセス対象のファイルを削除する（図１２：ステップＳ８１）。
【００６３】
先読み処理部３４は、ステップＳ６５において受信した関連ファイルリストに、自サーバが管理する関連ファイルであり且つ未処理の関連ファイルが有るか判断する（ステップＳ８３）。
【００６４】
未処理の関連ファイルが無い場合（ステップＳ８５：Ｎｏルート）、元の処理に戻る。一方、未処理の関連ファイルが有る場合（ステップＳ８５：Ｙｅｓルート）、先読み処理部３４は、未処理の関連ファイルを１つ特定する（以下では、特定されたファイルを「処理対象の関連ファイル」と呼ぶ）。そして、先読み処理部３４は、キャッシュ３６の使用量が閾値以下であるか判断する（ステップＳ８７）。
【００６５】
キャッシュ３６の使用量が閾値以下ではない場合（ステップＳ８７：Ｎｏルート）、処理対象の関連ファイルをキャッシュ３６に展開することはできないので、元の処理に戻る。一方、キャッシュ３６の使用量が閾値以下である場合（ステップＳ８７：Ｙｅｓルート）、先読み処理部３４は、処理対象の関連ファイルが既にキャッシュ３６に展開されているか判断する（ステップＳ８９）。
【００６６】
処理対象の関連ファイルが既にキャッシュ３６に展開されている場合（ステップＳ８９：Ｙｅｓルート）、処理対象の関連ファイルをキャッシュ３６に展開しなくてもよいので、ステップＳ８３の処理に戻る。一方、処理対象の関連ファイルがキャッシュ３６に展開されていない場合（ステップＳ８９：Ｎｏルート）、先読み処理部３４は、アクセス制御部３３に処理対象の関連ファイルのオープン処理を実行することを要求する。これに応じ、アクセス制御部３３は、処理対象の関連ファイルのオープン処理を実行する（ステップＳ９１）。そしてステップＳ８３に戻る。
【００６７】
以上のような処理を実行すれば、クローズ処理が完了したファイルについてはキャッシュ３６から削除されるので、キャッシュ３６を無駄に使用することが無くなる。また、図１３に示すように、キャッシュ３６の使用量は閾値以下になるように制御されている。図１３に示す例においては、処理済みであるファイルＡ−１がキャッシュ３６から削除されており、代わりに関連ファイルであるファイルＡ−４がキャッシュ３６に展開される。このようにすることで、未処理の関連ファイルがキャッシュ３６に展開されやすくなるので、キャッシュヒット率をさらに向上させることができるようになる。
【００６８】
図１１の説明に戻り、サーバＢにおける通信制御部３１は、クローズ処理の完了を示す通知をサーバＡに送信する（ステップＳ４３）。
【００６９】
サーバＡにおけるアプリケーションプログラム３５は、クローズ処理の完了を示す通知をサーバＢから受信する（ステップＳ４５）。そして、アプリケーションプログラム３５は、アクセス対象のファイルについてファイルクローズ要求を管理サーバ１に送信する（ステップＳ４７）。
【００７０】
管理サーバ１における通信制御部１０１は、サーバＡからファイルクローズ要求を受信し（ステップＳ４９）、ファイル管理部１０４に出力する。そして、ファイル管理部１０４は、アクセス対象のファイルのステータス（ここでは、状態についての情報を意味する）を更新する（ステップＳ５１）。具体的には、アクセス対象のファイルについて、オープン又はクローズの状態、ロックの状態、ファイルサイズ、又は更新の日時等を更新し、図示しない記憶装置に記憶する。
【００７１】
以上のような処理を実行すれば、分散処理システムにおけるキャッシュヒット率を向上させ、ファイルに対する処理を高速で行うことができるようになる。
【００７２】
通常、キャッシュはアプリケーションプログラムの都合とは無関係にリフレッシュされる。しかし、本実施の形態においては、関連性があるファイルがキャッシュに残りやすいため、高速にファイルの処理をすることを期待できる。図１４を用いて、図１と同様の状況において本実施の形態の処理を行なった場合について説明する。本実施の形態の処理によれば、アプリケーションプログラム３５がサーバＢにアクセスした際にはファイルＢがキャッシュ３６に展開されている可能性が高く、またアプリケーションプログラム３５がサーバＣにアクセスした際にはファイルＣがキャッシュ３６に展開されている可能性が高い。よって、ファイルＢ及びファイルＣについてディスクＩ／Ｏが発生する可能性は低くなるので、ファイルに対する処理の完了までの時間を短くすることができるようになる。
【００７３】
なお、データ処理を高速化する一つの方法として、ＯＳのキャッシュとは別にアプリケーションプログラムのためのメモリ領域（以下、アプリケーションキャッシュと呼ぶ）を確保し、そこに予めデータを展開しておきアクセスするという方法が知られている。この方法によれば、独自のメモリ領域であればデータの取捨選択をも完全にコントロールできるため、効率的なアクセスが可能になる。但し、アプリケーションキャッシュを設けたとしてもＯＳのキャッシュが無くなるわけではないので、メモリ領域を２倍使用することになる。
【００７４】
これに対し、本実施の形態において説明した方法であれば、アプリケーションキャッシュを利用する方法と比べると、メモリの使用量は１／２程度に節約できる。
【００７５】
次に、図１５乃至図１７を用いて、ファイルを格納する際の動作について説明する。なお、図１５のフローは、処理の要点を示しており、通常の分散ファイルシステムが行う処理（例えば、ステータス更新、ファイルのロック及びクラスタ構成の管理等）については省略している。
【００７６】
まず、サーバ３（ここでは、サーバＡとする）におけるファイル管理部３２は、例えばアプリケーションプログラム３５によりファイルが生成された場合に、当該ファイルを分散して格納することを要求するファイル格納要求を生成する。そして、ファイル管理部３２は、ファイル格納要求を管理サーバ１に送信する（図１５：ステップＳ１０１）。なお、ファイル格納要求には、ファイルそのものを含ませるようにしてもよいし、ファイルサイズの情報等を含ませるようにしてもよい。
【００７７】
管理サーバ１における通信制御部１０１は、ファイル格納要求を受信すると（ステップＳ１０３）、ファイル格納要求をファイル管理部１０４に出力する。
【００７８】
ファイル管理部１０４は、ファイル格納要求において格納が要求されているファイルの格納場所を決定する（ステップＳ１０５）。例えば、ファイル格納部３７の空き容量が多いサーバをファイルの格納場所とする。また、ファイルサイズが大きい場合にはファイルを分割することになるため、複数のサーバをファイルの格納場所に決定する。
【００７９】
ファイル管理部１０４は、関連ファイルデータ格納部１０８に格納されているデータを更新する（ステップＳ１０７）。ステップＳ１０７においては、構成的関連に基づき関連ファイルデータを更新する。例えばファイルが特定のディレクトリに格納される場合には、そのディレクトリに格納されている他のファイルと構成的関連性を有することになるので、新たな構成的関連性に基づき更新を行う。また、ファイルが分割される場合には、分割後の複数のファイルは構成的関連性を有することになるので、新たな構成的関連性に基づき更新を行う。
【００８０】
ファイル管理部１０４は、ファイルの格納場所を示すデータを通信制御部１０１に出力する（ステップＳ１０９）。そして、通信制御部１０１は、ファイルの格納場所を示すデータ（ここでは、サーバＢを示しているとする）をサーバＡに送信する。
【００８１】
サーバＡにおけるファイル管理部３２は、ファイルの格納場所を示すデータを受信すると（ステップＳ１１１）、ファイルの格納場所を示すデータに従い、ファイル格納要求をサーバＢに送信する（ステップＳ１１３）。ステップＳ１１３において送信するファイル格納要求には、ファイルが含まれる。なお、ファイルの格納場所となるサーバが複数ある場合には、複数のサーバに対してファイル格納要求を送信する。
【００８２】
サーバＢにおける通信制御部３１は、ファイル格納要求を受信する（ステップＳ１１５）。通信制御部３１は、ファイル格納要求をアクセス制御部３３に出力する。
【００８３】
アクセス制御部３３は、ファイル格納要求に含まれるファイルをファイル格納部３７に格納する（ステップＳ１１７）。
【００８４】
以上のような処理を実行すれば、ファイルをファイル格納部３７に格納する際には、ファイルの構成的関連性に基づき関連ファイルデータを更新できるようになる。
【００８５】
図１６を用いて、ファイルの構成的関連性に基づく関連ファイルデータの更新について具体的に説明する。例えば、いずれかのサーバにおけるアプリケーションプログラム３５がファイルＡについてファイル格納要求を出力したとする。ファイルＡは、分散ファイルシステムによってファイルＡ−１、ファイルＡ−２及びファイルＡ−３の３つに分割され、分割されたファイルはサーバＡ乃至Ｃに分散して格納される。また、ファイルＡ−１はサーバＡのファイル格納部３７においてファイルＢ−１と同じディレクトリに格納されており、ファイルＡ−２はサーバＢのファイル格納部３７においてファイルＢ−２と同じディレクトリに格納されており、ファイルＡ−３はサーバＣのファイル格納部３７においてファイルＢ−３と同じディレクトリに格納されているとする。このような場合、管理サーバ１における関連ファイルデータ格納部１０８は、例えば図１６の１６０に示した状態に更新される。この例においては、ファイルＡ−１の関連ファイルはファイルＡ−２、ファイルＡ−３及びファイルＢ−１であり、ファイルＡ−２の関連ファイルはファイルＡ−１、ファイルＡ−３及びファイルＢ−２であり、ファイルＡ−３の関連ファイルはファイルＡ−１、ファイルＡ−２及びファイルＢ−３である。
【００８６】
なお、図１６においては、ファイルＡ−１の関連ファイルにファイルＢ−２及びファイルＢ−３が含まれておらず、同じディレクトリに格納されているファイルＢ−１に限定されている。これは、ファイルＢ−１のスプリットファイル（ここでは、ファイルＢ−２及びファイルＢ−３）まで関連ファイルとすると、ファイルＡ−１の関連ファイルの数が膨大になるからである。ファイルＡ−２及びファイルＡ−３についても同様である。
【００８７】
また、共有ディスク型の場合においても、ファイルの構成的関連性に基づく関連ファイルデータの更新を同様に行なうことができる。例えば図１７に示すように、複数のサーバに対して共有のファイル格納部３７が１つ設けられており、ファイル格納部３７が３つの部分に分けられているとする。ファイルＡは、分散ファイルシステムによってファイルＡ−１、ファイルＡ−２及びファイルＡ−３の３つに分割され、分割されたファイルは共有のファイル格納部３７における部分ｐ１乃至ｐ３に分散して格納される。また、ファイルＡ−１はファイル格納部３７の部分ｐ１においてファイルＢ−１と同じディレクトリに格納されており、ファイルＡ−２はファイル格納部３７の部分ｐ２においてファイルＢ−２と同じディレクトリに格納されており、ファイルＡ−３はファイル格納部３７の部分ｐ３においてファイルＢ−３と同じディレクトリに格納されているとする。このような場合にも、管理サーバ１における関連ファイルデータ格納部１０８は、図１７の１７０に示した状態に更新される。すなわち、ファイルＡ−１の関連ファイルはファイルＡ−２、ファイルＡ−３及びファイルＢ−１であり、ファイルＡ−２の関連ファイルはファイルＡ−１、ファイルＡ−３及びファイルＢ−２であり、ファイルＡ−３の関連ファイルはファイルＡ−１、ファイルＡ−２及びファイルＢ−３である。
【００８８】
次に、図１８を用いて、ユーザが関連を指定する場合の動作について説明する。
【００８９】
まず、ユーザは、対象ファイル及び当該対象ファイルに関連する関連ファイルをサーバ３における入力部（例えばキーボード又はマウス等）を使用して入力する。サーバ３におけるファイル管理部３２は、対象ファイル及び関連ファイルの指定を受け付ける。そして、ファイル管理部３２は、対象ファイル及び関連ファイルの指定を含む更新要求を管理サーバ１に送信する（図１８：ステップＳ１２１）。
【００９０】
管理サーバ１における通信制御部１０１は、サーバ３から更新要求を受信し（ステップＳ１２３）、ファイル管理部１０４に出力する。
【００９１】
ファイル管理部１０４は、更新要求において指定されている対象ファイルについての関連ファイルデータを関連ファイルデータ格納部１０８から特定する（ステップＳ１２５）。そして、ファイル管理部１０４は、更新要求におけるユーザの指定に従い関連ファイルデータを生成し、特定された関連ファイルデータを生成された関連ファイルデータで更新する（ステップＳ１２７）。なお、指定された対象ファイルについての関連ファイルデータが関連ファイルデータ格納部１０８に無い場合には、生成された関連ファイルデータを関連ファイルデータ格納部１０８に格納する。
【００９２】
ファイル管理部１０４は、更新完了を示す通知を通信制御部１０１に出力する。通信制御部１０１は、更新完了を示す通知をサーバ３に送信する（ステップＳ１２９）。
【００９３】
サーバ３における通信制御部３１は、更新完了を示す通知を管理サーバ１から受信する（ステップＳ１３１）。通信制御部３１は、更新完了を示す通知をファイル管理部３２に出力する。
【００９４】
ファイル管理部３２における先読み処理部３４は、先読み処理を実行する（ステップＳ１３３）。先読み処理については、図８Ａ乃至図１０を用いて説明をしたとおりである。なお、このようなタイミングで先読み処理を実行するのは、ユーザが関連を指定する場合には即ファイルに対する処理を行なう場合が多いと考えられるからである。
【００９５】
以上のような処理を実行すれば、ユーザの意図を関連ファイルデータ格納部１０８に適切に反映することができるようになる。
【００９６】
図１９に、キャッシュのライフサイクルの一例を示す。図１９の例は、サーバＡ及びサーバＢにおけるキャッシュ３６のライフサイクルを示している。図１９において、キャッシュ３６にファイルが展開されている時間を、白色の長方形で表す。
【００９７】
例えばサーバＡにおける特定のファイルに対するアクセスがあった場合、サーバＡにおける先読み処理部３４は、管理サーバ１に関連ファイル要求を送信する（図１９：１００１）。これに応じ、管理サーバ１におけるファイル管理部１０４は、関連ファイルリストをサーバＡに送信する（図１９：１００２）。ここで、関連ファイルリストには、サーバＡが管理するファイルの識別情報と、サーバＢが管理するファイルの識別情報とが含まれるとする。
【００９８】
サーバＡにおける先読み処理部３４は、サーバＢに対し、先読み処理要求を送信する（図１９：１００４）。サーバＢにおける先読み処理部３４は、先読み処理要求を受信すると、応答を返す（図１９：１００５）。
【００９９】
サーバＢにおける先読み処理部３４は、関連ファイル要求を管理サーバ１に送信する（図１９：１００６）。これに応じ、管理サーバ１におけるファイル管理部１０４は、関連ファイルリストをサーバＢに送信する（図１９：１００７）。
【０１００】
一方、サーバＡにおける先読み処理部３４は、サーバＡが管理する関連ファイルをキャッシュ３６に展開する（図１９：１００８）。また、サーバＢにおける先読み処理部３４は、サーバＢが管理する関連ファイルをキャッシュ３６に展開する（図１９：１００９）。
【０１０１】
サーバＡにおけるアプリケーションプログラム３５は、ファイルクローズ要求を管理サーバ１に送信する（図１９：１０１０）。管理サーバ１におけるファイル管理部１０４は、ファイルクローズ要求を受信すると、ファイルのステータスの更新等を行い、クローズの完了をサーバＡに通知する（図１９：１０１１）。
【０１０２】
サーバＡにおける先読み処理部３４は、クローズの完了を管理サーバ１から通知されたことを契機として、キャッシュ３６に展開されているファイルを削除する（図１９：１０１２）。また、先読み処理部３４は、残りの関連ファイルをキャッシュ３６に展開する（図１９：１０１３）。
【０１０３】
一方、サーバＢにおけるアプリケーションプログラム３５は、ファイルクローズ要求を管理サーバ１に送信する（図１９：１０１４）。管理サーバ１におけるファイル管理部１０４は、ファイルクローズ要求を受信すると、ファイルのステータスの更新等を行い、クローズの完了をサーバＢに通知する（図１９：１０１５）。
【０１０４】
サーバＢにおける先読み処理部３４は、クローズの完了を管理サーバ１から通知されたことを契機として、キャッシュ３６に展開されているファイルを削除する（図１９：１０１６）。また、先読み処理部３４は、残りの関連ファイルをキャッシュ３６に展開する（図１９：１０１７）。
【０１０５】
以上のような処理が繰り返し行われることで、分散処理システムにおいてファイルに対する処理が進行する。
【０１０６】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した管理サーバ１及びサーバ３の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０１０７】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１０８】
なお、上で述べた例では、ファイルアクセス要求として参照要求を示したが、参照要求に限られるわけではない。例えば、ファイルに対する書き込み要求であってもよい。
【０１０９】
また、図７及び図１１に示したフローにおいては、サーバＢが管理サーバ１から関連ファイルリストを取得する例を示した。しかし、このような例に限られるわけではない。例えば、サーバＡが管理サーバ１からファイルの格納場所を示す情報を受信する際に関連ファイルリストを受信し、サーバＡが関連ファイルリストをサーバＢに送信するようにしてもよい。
【０１１０】
また、上では管理サーバ１がサーバ３の動作を行う例を示していないが、管理サーバ１がサーバ３の動作をも行なうようにしてもよい。
【０１１１】
また、上で述べたように、共有ディスク型の場合であっても、本実施の形態の処理を適用可能である。共有ディスク型の場合のシステムは、例えば図２０に示すようなシステムであればよい。具体的には、複数のサーバ３に対して１つのファイル格納部７０を設ければよい。
【０１１２】
なお、上で述べた管理サーバ１及びサーバ３は、コンピュータ装置であって、図２１に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１３】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１１４】
本実施の形態の第１の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、（Ａ）第１の情報処理装置が管理する第１のデータに対するアクセスがあった場合に、複数の情報処理装置のうちデータ間の関連性を管理する情報処理装置から、第１のデータと所定の関連性を有する第２のデータの識別情報及び当該第２のデータを管理する情報処理装置の識別情報を取得し、（Ｂ）第２のデータを管理する情報処理装置が第１の情報処理装置である場合に、第２のデータをデータ格納部から読み出し、キャッシュに展開する処理を含む。
【０１１５】
第１のデータと所定の関連性を有する第２のデータがアクセスされるタイミングは、第１のデータがアクセスされるタイミングの近傍である可能性が高い。そこで、上で述べたようにすれば、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【０１１６】
また、上で述べた本情報処理方法が、（Ｃ）第２のデータを管理する情報処理装置が第１の情報処理装置ではない場合に、複数の情報処理装置のうち第２のデータを管理する情報処理装置に対し、第２のデータをキャッシュに展開することを要求する第１の要求を送信する処理をさらに含むようにしてもよい。このようにすれば、第１の情報処理装置が第２のデータを管理していない場合にも対処できるようになる。
【０１１７】
また、上で述べた本情報処理方法が、（Ｄ）第１のデータに対するアクセスが終了した場合に、キャッシュに展開されている第１のデータを削除する処理をさらに含むようにしてもよい。このようにすれば、キャッシュ溢れの発生を抑制できるようになる。
【０１１８】
また、上で述べた所定の関連性が、データの内容の関連性、データの格納場所に基づく関連性、データのタイムスタンプに基づく関連性、データに対するアクセスの履歴に基づく関連性及びユーザにより指定された関連性の少なくともいずれかであってもよい。
【０１１９】
本実施の第２の態様に係る情報処理方法は、複数の情報処理装置によりデータの処理を行う分散処理システムにおいて実行される情報処理方法である。そして、本情報処理方法は、複数の情報処理装置のうちいずれかの情報処理装置である第１の情報処理装置が、（Ｅ）複数の情報処理装置のうち第１のデータを管理する情報処理装置から、第１のデータと所定の関連性を有するデータについての情報を要求する第１の要求を受信した場合に、データの識別情報と当該データと所定の関連性を有するデータの識別情報とを対応付けて格納する関連データ格納部から、第１のデータと所定の関連性を有する第２のデータの識別情報を抽出し、（Ｆ）抽出された第２のデータの識別情報と当該第２のデータを管理する情報処理装置の識別情報とを、第１の要求の送信元の情報処理装置に送信する処理を含む。
【０１２０】
このようにすれば、第１のデータにアクセスがあった場合に第２のデータをキャッシュに展開できるようになるので、分散処理システムにおけるキャッシュヒット率を向上させることができるようになる。
【０１２１】
また、上で述べた本情報処理方法が、（Ｇ）データの内容の関連性、データの格納場所及びデータのタイムスタンプの少なくともいずれかに基づき、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。このような事項はデータの関連性に関わっているため、このような事項に基づき更新を行えば、関連性を有するデータとして適切なデータを特定できるようになる。
【０１２２】
また、上で述べた本情報処理方法が、（Ｈ）分散処理システムにおけるデータへのアクセスの履歴に基づき、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。例えばアクセスの順序或いはアクセスパターン等はデータの関連性に関わっているため、アクセスの履歴に基づき更新を行えば、関連性を有するデータとして適切なデータを特定できるようになる。
【０１２３】
また、上で述べた本情報処理方法が、（Ｉ）ユーザからの指定を受け付けた場合に、当該指定に従い、関連データ格納部に格納されているデータを更新する処理をさらに含むようにしてもよい。このようにすれば、ユーザの意図どおりにキャッシュへの展開を行えるようになる。
【０１２４】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2014155553.tif 000031
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2014155553.tif 000032
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2014155553.tif 000033
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図１４
【補正方法】変更
【補正の内容】
【図１４】
2014155553.tif 000034
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図１６
【補正方法】変更
【補正の内容】
【図１６】
2014155553.tif 000035
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2014155553.tif 000036
【国際調査報告】
2014155553.tif 000037
2014155553.tif 000038
2014155553.tif 000039
2014155553.tif 000040