(57)【要約】【課題】キャッシュされるデータの数の増大に伴うデータの読み出し速度の低下や処理負荷の増大等の不都合を低減する。【解決手段】データ処理装置は、要求元装置からの要求に応じてオリジナルストレージから読み出したファイルのサイズが閾値以下である場合は当該ファイルの全体をキャッシュする一方、当該ファイルのサイズが閾値を超える場合は当該ファイルのブロックのうち要求元装置が必要としたブロックのみをキャッシュする。データ処理装置は、キャッシュされているファイルを示す第１階層の索引データとキャッシュされているブロックを示す第２階層の索引データを管理している。データ処理装置はこれらの索引データを用いて要求されたデータがキャッシュされているか否かを判定し、要求されたデータがキャッシュされている場合はそのデータをキャッシュ用メモリから読み出して要求元装置に出力する。【選択図】図３
2015032210.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させる記憶制御手段と、
前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第１階層の索引データと第２階層の索引データを含み、前記第２階層の索引データが示すデータの各々に関し当該データと前記第１階層の索引データが示すデータの少なくとも１つとの対応関係を示す索引データを取得する索引データ取得手段と、
前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定するデータ特定手段と
を備えるデータ処理装置。
【請求項２】
前記記憶制御手段は、予め定められた条件を満たす一のファイルのサイズが予め定められた閾値以下である場合は当該一のファイルを前記キャッシュ用の記憶手段に記憶させ、当該一のファイルのサイズが当該閾値を超える場合は当該一のファイルを構成する複数のブロックのうち予め定められた条件を満たす１以上のブロックを前記キャッシュ用の記憶手段に記憶させ、
前記第１階層の索引データは前記キャッシュ用の記憶手段に記憶されているファイルおよび前記キャッシュ用の記憶手段に記憶されているブロックを含むファイルを、前記キャッシュ用の記憶手段にファイルおよびブロックのいずれが記憶されているかを区別可能に示し、
前記第２階層の索引データは前記キャッシュ用の記憶手段に記憶されているブロックを示し、
前記データ特定手段は、要求元の装置から、前記キャッシュ用の記憶手段とは異なる一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記第１階層の索引データに基づき当該一のブロックを含むファイルが前記キャッシュ用の記憶手段に記憶されていると判定した場合は当該ファイルを前記キャッシュ用の記憶手段から読み出す対象のデータとして特定し、前記第１階層の索引データおよび前記第２階層の索引データに基づき当該一のブロックが前記キャッシュ用の記憶手段に記憶されていると判定した場合は当該一のブロックを前記キャッシュ用の記憶手段から読み出す対象のデータとして特定し、
要求元の装置から前記一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記データ特定手段により当該一のブロックを含むファイルまたは当該一のブロックが前記キャッシュ用の記憶手段から読み出す対象のデータとして特定された場合には当該一のブロックを含むファイルまたは当該一のブロックを前記キャッシュ用の記憶手段から取得し、前記データ特定手段により当該一のブロックを含むファイルまたは当該一のブロックが前記キャッシュ用の記憶手段から読み出す対象のデータとして特定されなかった場合には当該一のブロックを含むファイルまたは当該一のブロックを前記一の記憶手段から取得する要求データ取得手段と、
要求元の装置から前記一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記要求データ取得手段により前記キャッシュ用の記憶手段または前記一の記憶手段から取得された当該一のブロックを含むファイルまたは当該一のブロックを当該要求元の装置に出力する出力手段と
を備える
請求項１に記載のデータ処理装置。
【請求項３】
前記第１階層の索引データは、前記キャッシュ用の記憶手段に記憶されているブロックを含むファイルに関し、当該ファイルに含まれるブロックを示すデータが前記第２階層の索引データにおいて含まれる範囲を示し、
前記データ特定手段は、前記第１階層の索引データおよび前記第２階層の索引データに基づき一のファイルに含まれる一のブロックが前記キャッシュ用の記憶手段に記憶されているか否かを判定する際、前記第２階層の索引データにおいて当該一のファイルに含まれるブロックを示すデータが含まれる範囲を前記第１階層の索引データに基づき特定し、前記第２階層の索引データの当該特定した範囲内から当該一のブロックを示すデータを検索する
請求項２に記載のデータ処理装置。
【請求項４】
前記記憶制御手段は、予め定められた条件を満たすデータであるルートデータと、当該ルートデータを利用する装置において当該ルートデータとともに用いられるデータであるサブデータを前記キャッシュ用の記憶手段に記憶させ、
前記第１階層の索引データは前記キャッシュ用の記憶手段に記憶されているルートデータを、読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方を特定可能に示し、
前記第２階層の索引データは前記キャッシュ用の記憶手段に記憶されているサブデータを示し、
前記データ特定手段は、前記第１階層の索引データが示すルートデータの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に関する予め定められた条件を満たすルートデータを前記キャッシュ用の記憶手段から解放する対象のデータとして特定し、
前記データ特定手段は、解放する対象のデータとして特定したルートデータと対応関係のあるサブデータを前記第２階層の索引データに基づき前記キャッシュ用の記憶手段から解放する対象のデータとして特定し、
前記記憶制御手段は、前記データ特定手段により解放する対象のデータとして特定されたルートデータおよびサブデータを前記キャッシュ用の記憶手段から解放させる
請求項１に記載のデータ処理装置。
【請求項５】
前記第２階層の索引データは、前記キャッシュ用の記憶手段に記憶されている１以上のサブデータの各々に関し、前記キャッシュ用の記憶手段に記憶されているルートデータのうち当該サブデータと対応関係のあるルートデータの数を示し、
前記データ特定手段は、前記第２階層の索引データにより対応関係のあるルートデータの数がゼロと示されるサブデータを、前記キャッシュ用の記憶手段から解放する対象のデータとして特定する
請求項４に記載のデータ処理装置。
【請求項６】
前記第２階層の索引データは前記キャッシュ用の記憶手段に記憶されているサブデータを、読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方を特定可能に示し、
前記データ特定手段は、前記第２階層の索引データが示すサブデータの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に関する予め定められた条件を満たすサブデータを前記キャッシュ用の記憶手段から解放する対象のデータとして特定する
請求項４または５に記載のデータ処理装置。
【請求項７】
コンピュータに、
予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させる処理と、
前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第１階層の索引データと第２階層の索引データを含み、前記第２階層の索引データにより示されるデータの各々に関し当該データと前記第１階層の索引データにより示されるデータの少なくとも１つとの対応関係を示す索引データを取得する処理と、
前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定する処理と
を実行させるプログラム。
【請求項８】
請求項７に記載のプログラムを持続的に記録するコンピュータ読み取り可能な記録媒体。
【請求項９】
データ処理装置が、予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させるステップと、
前記データ処理装置が、前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第１階層の索引データと第２階層の索引データを含み、前記第２階層の索引データにより示されるデータの各々に関し当該データと前記第１階層の索引データにより示されるデータの少なくとも１つとの対応関係を示す索引データを取得するステップと、
前記データ処理装置が、前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定するステップと
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュされたデータを管理するための技術に関する。
【背景技術】
【０００２】
データを処理する装置において、処理に必要なデータを記憶装置から読み出す時間を短縮するための技術としてキャッシュと呼ばれる仕組みが広く用いられている。キャッシュの仕組みの採用された装置は、ＨＤＤ（Hard Disc Drive）やネットワークストレージ等に代表される記憶装置（以下、「オリジナルストレージ」という）に記憶されているデータの一部の複製を、ＤＲＡＭ（Dynamic Random Access Memory）等に代表される、より高速にデータの読み出しが可能な記憶装置（以下、「キャッシュ用メモリ」という）に記憶しておき、処理に必要なデータがキャッシュ用メモリに記憶されている場合は当該データをキャッシュ用メモリから高速に読み出し、処理に必要なデータがキャッシュ用メモリに記憶されていない場合は当該データをオリジナルストレージから読み出す。その結果、平均的なデータの読み出し時間が短縮される。以下、キャッシュ用メモリにデータを記憶することを「キャッシュする」という。
【０００３】
キャッシュに関する技術を開示した文献の一例として特許文献１がある。特許文献１に記載のディスクキャッシュ管理装置は、ファイル毎にキャッシュ可能なブロックの最大数を割り当てておき、あるファイルのブロックを新たにキャッシュする場合、当該ファイルに割り当てたブロックの最大数を超えないように、必要に応じて既にキャッシュしている当該ファイルのブロックの一部を解放し、解放したブロックが占めていた記憶領域に新たなブロックをキャッシュする。特許文献１に記載のディスクキャッシュ管理装置によれば、アクセス頻度の高いファイルに対し、アクセス頻度の低いファイルよりもキャッシュ可能なブロックの最大数を大きく設定することで、アクセス頻度の低いファイルのブロックがディスクキャッシュ（キャッシュ用メモリ）の記憶容量の多くを占めてしまう、という不都合が回避される。
【０００４】
また、キャッシュに関する技術を開示した文献の他の一例として特許文献２がある。特許文献２に記載の電子ファイリングシステムは、キャッシュ装置（キャッシュ用メモリ）からファイルを消去する際に、消去対象のファイルと意味的な繋がりがあるファイルをキャッシュ装置に残す。特許文献２に記載の電子ファイリングシステムによれば、クライアントによりデータの読み出しが要求された場合、まずキャッシュ装置に保持されているファイルがクライアントに提供され、その間に、このデータの他のファイルが大容量記憶媒体からプリフェッチされてクライアントに提供される。その結果、クライアントは待たされることなくデータの提供を受けることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−２０４３５８号公報
【特許文献２】特開平９−１１４７１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
キャッシュ用メモリの記憶容量は限られているため、その効率的な利用が望まれる。例えば、キャッシュ用メモリの記憶容量の多くが少数の大きなサイズのファイルに占有されてしまうと、新たに要求されるファイルがキャッシュ用メモリから読み出される確率（以下、「キャッシュヒット率」という）が低下し、データの読み出し速度の高速化が図れない。
【０００７】
この不都合を回避するために、ファイルよりもサイズが小さいブロックの単位でキャッシュを行うと、キャッシュヒット率は高まる。その一方で、キャッシュ用メモリに記憶されているデータを示す索引データ（以下、「キャッシュテーブル」という）のサイズが大きくなるとともに、要求されたブロックがキャッシュ用メモリに記憶されているか否かの判定のために行うキャッシュテーブルの検索に要する時間が増大する。その結果、データの読み出し速度の高速化が抑制される。
【０００８】
また、例えば上記のようにブロック単位でデータのキャッシュを行う場合のように、キャッシュ用メモリに記憶されるデータの数が増加すると、新たにデータをキャッシュするための記憶領域を確保する処理に要する処理負荷が増大する。例えば、キャッシュヒット率を高めるためには、既にキャッシュされているデータの中から使用頻度の低いデータを解放することが望ましい。キャッシュされているデータ数が多い程、それらのデータの中から使用頻度の低いデータを特定する処理の負荷が増大する。
【０００９】
本発明は上述の背景に鑑みてなされたものであり、キャッシュされるデータの数の増大に伴うデータの読み出し速度の低下や処理負荷の増大等の不都合を低減する手段を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決するために、本発明は、一態様として、予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させる記憶制御手段と、前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第１階層の索引データと第２階層の索引データを含み、前記第２階層の索引データが示すデータの各々に関し当該データと前記第１階層の索引データが示すデータの少なくとも１つとの対応関係を示す索引データを取得する索引データ取得手段と、前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定するデータ特定手段とを備えるデータ処理装置を提供する。
【００１１】
上記のデータ処理装置において、前記記憶制御手段は、予め定められた条件を満たす一のファイルのサイズが予め定められた閾値以下である場合は当該一のファイルを前記キャッシュ用の記憶手段に記憶させ、当該一のファイルのサイズが当該閾値を超える場合は当該一のファイルを構成する複数のブロックのうち予め定められた条件を満たす１以上のブロックを前記キャッシュ用の記憶手段に記憶させ、前記第１階層の索引データは前記キャッシュ用の記憶手段に記憶されているファイルおよび前記キャッシュ用の記憶手段に記憶されているブロックを含むファイルを、前記キャッシュ用の記憶手段にファイルおよびブロックのいずれが記憶されているかを区別可能に示し、前記第２階層の索引データは前記キャッシュ用の記憶手段に記憶されているブロックを示し、前記データ特定手段は、要求元の装置から、前記キャッシュ用の記憶手段とは異なる一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記第１階層の索引データに基づき当該一のブロックを含むファイルが前記キャッシュ用の記憶手段に記憶されていると判定した場合は当該ファイルを前記キャッシュ用の記憶手段から読み出す対象のデータとして特定し、前記第１階層の索引データおよび前記第２階層の索引データに基づき当該一のブロックが前記キャッシュ用の記憶手段に記憶されていると判定した場合は当該一のブロックを前記キャッシュ用の記憶手段から読み出す対象のデータとして特定し、要求元の装置から前記一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記データ特定手段により当該一のブロックを含むファイルまたは当該一のブロックが前記キャッシュ用の記憶手段から読み出す対象のデータとして特定された場合には当該一のブロックを含むファイルまたは当該一のブロックを前記キャッシュ用の記憶手段から取得し、前記データ特定手段により当該一のブロックを含むファイルまたは当該一のブロックが前記キャッシュ用の記憶手段から読み出す対象のデータとして特定されなかった場合には当該一のブロックを含むファイルまたは当該一のブロックを前記一の記憶手段から取得する要求データ取得手段と、要求元の装置から前記一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記要求データ取得手段により前記キャッシュ用の記憶手段または前記一の記憶手段から取得された当該一のブロックを含むファイルまたは当該一のブロックを当該要求元の装置に出力する出力手段とを備える、という構成が採用されてもよい。
【００１２】
また、上記のデータ処理装置において、前記第１階層の索引データは、前記キャッシュ用の記憶手段に記憶されているブロックを含むファイルに関し、当該ファイルに含まれるブロックを示すデータが前記第２階層の索引データにおいて含まれる範囲を示し、前記データ特定手段は、前記第１階層の索引データおよび前記第２階層の索引データに基づき一のファイルに含まれる一のブロックが前記キャッシュ用の記憶手段に記憶されているか否かを判定する際、前記第２階層の索引データにおいて当該一のファイルに含まれるブロックを示すデータが含まれる範囲を前記第１階層の索引データに基づき特定し、前記第２階層の索引データの当該特定した範囲内から当該一のブロックを示すデータを検索する、という構成が採用されてもよい。
【００１３】
また、上記のデータ処理装置において、前記記憶制御手段は、予め定められた条件を満たすデータであるルートデータと、当該ルートデータを利用する装置において当該ルートデータとともに用いられるデータであるサブデータを前記キャッシュ用の記憶手段に記憶させ、前記第１階層の索引データは前記キャッシュ用の記憶手段に記憶されているルートデータを、読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方を特定可能に示し、前記第２階層の索引データは前記キャッシュ用の記憶手段に記憶されているサブデータを示し、前記データ特定手段は、前記第１階層の索引データが示すルートデータの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に関する予め定められた条件を満たすルートデータを前記キャッシュ用の記憶手段から解放する対象のデータとして特定し、前記データ特定手段は、解放する対象のデータとして特定したルートデータと対応関係のあるサブデータを前記第２階層の索引データに基づき前記キャッシュ用の記憶手段から解放する対象のデータとして特定し、前記記憶制御手段は、前記データ特定手段により解放する対象のデータとして特定されたルートデータおよびサブデータを前記キャッシュ用の記憶手段から解放させる、という構成が採用されてもよい。
【００１４】
また、上記のデータ処理装置において、前記第２階層の索引データは、前記キャッシュ用の記憶手段に記憶されている１以上のサブデータの各々に関し、前記キャッシュ用の記憶手段に記憶されているルートデータのうち当該サブデータと対応関係のあるルートデータの数を示し、前記データ特定手段は、前記第２階層の索引データにより対応関係のあるルートデータの数がゼロと示されるサブデータを、前記キャッシュ用の記憶手段から解放する対象のデータとして特定する、という構成が採用されてもよい。
【００１５】
また、上記のデータ処理装置において、前記第２階層の索引データは前記キャッシュ用の記憶手段に記憶されているサブデータを、読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方を特定可能に示し、前記データ特定手段は、前記第２階層の索引データが示すサブデータの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に関する予め定められた条件を満たすサブデータを前記キャッシュ用の記憶手段から解放する対象のデータとして特定する、という構成が採用されてもよい。
【００１６】
また、本発明は、他の一態様として、コンピュータに、予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させる処理と、前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第１階層の索引データと第２階層の索引データを含み、前記第２階層の索引データにより示されるデータの各々に関し当該データと前記第１階層の索引データにより示されるデータの少なくとも１つとの対応関係を示す索引データを取得する処理と、前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定する処理とを実行させるプログラムを提供する。
【００１７】
また、本発明は、他の一態様として、上記のプログラムを持続的に記録するコンピュータ読み取り可能な記録媒体を提供する。
【００１８】
また、本発明は、他の一態様として、データ処理装置が、予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させるステップと、前記データ処理装置が、前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第１階層の索引データと第２階層の索引データを含み、前記第２階層の索引データにより示されるデータの各々に関し当該データと前記第１階層の索引データにより示されるデータの少なくとも１つとの対応関係を示す索引データを取得するステップと、前記データ処理装置が、前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定するステップとを備える方法を提供する。
【発明の効果】
【００１９】
本発明によれば、キャッシュされたデータが階層構造を有した索引データにより管理される。その結果、キャッシュされたデータの中から読み出し対象や解放対象のデータを特定する処理が高速に、もしくは低処理負荷で行われ得る。
【図面の簡単な説明】
【００２０】
【図１】第１実施形態および第２実施形態にかかるデータ処理システムを実現するために用いられるコンピュータのハードウェア構成を示した図である。
【図２】第１実施形態にかかるデータ処理システムの機能構成を示した図である。
【図３】第１実施形態にかかる索引データの構成を示した図である。
【図４】第１実施形態にかかるデータ処理システムが行う処理のフローを示した図である。
【図５】第２実施形態にかかるデータ処理システムの機能構成を示した図である。
【図６】第２実施形態にかかる索引データの構成を示した図である。
【図７】第２実施形態にかかるデータ処理システムが行う処理のフローを示した図である。
【図８】第２実施形態にかかるデータ処理システムが行う処理のフローを示した図である。
【図９】第２実施形態にかかるデータ処理システムが行う処理のフローを示した図である。
【図１０】第２実施形態にかかるデータ処理システムが行う処理のフローを示した図である。
【図１１】第２実施形態にかかるデータ処理システムのキャッシュ用メモリの状態が追い出し処理により変化する様子を示した図である。
【図１２】第２実施形態の一変形例にかかるデータ処理システムが行う処理のフローを示した図である。
【発明を実施するための形態】
【００２１】
［第１実施形態］
以下、図を参照しながら本発明の一実施形態にかかるデータ処理システム１を説明する。データ処理システム１は階層構造を有した索引データを用いて、データサイズが様々に異なるファイルを扱う要求元の装置に対し、キャッシュを用いて高速にデータを出力する仕組みを備えたシステムである。
【００２２】
図１は、データ処理システム１を実現するためのハードウェアの一例であるコンピュータ１０のハードウェア構成を示した図である。コンピュータ１０は一般的なコンピュータであり、プロセッサ１０１およびメモリ１０２を備えており、これらはバス１０９を介してデータの受け渡しを行う。
【００２３】
プロセッサ１０１は例えばＣＰＵ、ＧＰＵ等であり、メモリ１０２に記憶されている各種プログラムに従い、各種データ処理を行うとともにコンピュータ１０の他の構成部を制御する。メモリ１０２は、例えば、ＤＲＡＭ等の揮発性メモリ１０２１、ＳＳＤ１０２２（Solid State Drive）、ＨＤＤ１０２３を備えるが、これらの構成は任意に変更可能である。メモリ１０２は、プロセッサ１０１により実行される各種プログラムやプロセッサ１０１による処理において用いられる各種データを記憶するとともに、プロセッサ１０１による処理において一時的に生成されるデータを記憶するワークエリアとしても用いられる。なお、メモリ１０２を構成するＳＳＤ１０２２、ＨＤＤ１０２３等は、コンピュータ１０が備える入出力ＩＦ（Interface）（図示略）を介して、もしくは通信ＩＦ（図示略）およびネットワーク（図示略）を介して、コンピュータ１０と通信可能に接続された外部の装置として構成されてもよい。
【００２４】
図２は、データ処理システム１の機能構成を示した図である。すなわち、図１に示されるコンピュータ１０のプロセッサ１０１がメモリ１０２に記憶されている各種プログラムに従った処理を行うことにより、図２に示される構成部を備えるデータ処理システム１が実現される。
【００２５】
データ処理システム１は、機能構成部として、要求元装置１１と、データ処理装置１２と、第１記憶手段１３と、第２記憶手段１４を備える。要求元装置１１は、例えばアプリケーションプログラムに従いコンピュータ１０において実現される仮想的な装置であり、処理に必要なデータをデータ処理装置１２に対し要求する。データ処理装置１２は、要求元装置１１から送信されてくるデータの要求に応じて、第１記憶手段１３もしくは第２記憶手段１４から要求されたデータ（以下、「要求データ」という）を取得し、要求元装置１１に出力する装置である。
【００２６】
第１記憶手段１３はキャッシュ用メモリとしての役割を果たす記憶手段であり、例えばＳＳＤ１０２２を用いてキャッシュ対象のデータを記憶する。第２記憶手段１４はオリジナルストレージとしての役割を果たす記憶手段であり、例えばＨＤＤ１０２３を用いてオリジナルのデータを記憶する。
【００２７】
データ処理装置１２は、索引データ記憶手段１２１と、記憶制御手段１２２と、索引データ取得手段１２３と、データ特定手段１２４と、要求データ取得手段１２５と、出力手段１２６を備える。
【００２８】
索引データ記憶手段１２１は、第１記憶手段１３に記憶されているデータを示す索引データを記憶する。図３は、索引データの構成を示した図である。索引データは、第１階層の索引データと第２階層の索引データを含んでいる。
【００２９】
第１階層の索引データは、第１記憶手段１３に記憶されているデータをファイルのレベルで管理するデータであり、ファイルに応じたデータレコードの集まりである。第１階層の索引データはデータフィールド「ファイル名」、「ファイル／ブロック」、「アドレス」、「シリアル番号」を有している。
【００３０】
データフィールド「ファイル名」はキャッシュされているデータがファイル単位のデータである場合は当該ファイルのファイル名を示すテキストデータを格納し、キャッシュされているデータがブロック単位のデータである場合は当該ブロックを含むファイルのファイル名を示すテキストデータを格納する。
【００３１】
データフィールド「ファイル／ブロック」は、キャッシュされているデータがファイル単位のデータである場合は「ファイル」というテキストデータを格納し、キャッシュされているデータがブロック単位のデータである場合は「ブロック」というテキストデータを格納する。
【００３２】
データフィールド「アドレス」は、キャッシュされているデータがファイル単位のデータである場合、第１記憶手段１３において当該データが記憶されている記憶領域の先頭アドレスを格納する。従って、ブロック単位のデータに関するデータレコードのデータフィールド「アドレス」は空欄となる。
【００３３】
データフィールド「シリアル番号」は、キャッシュされているデータがブロック単位のデータである場合、第２階層の索引データにおいて当該ブロックに関するデータレコードを検索する際の検索範囲の開始位置を示す数値データを格納する。従って、ファイル単位のデータに関するデータレコードのデータフィールド「シリアル番号」は空欄となる。
【００３４】
第２階層の索引データは、第１記憶手段１３に記憶されているブロックを管理するデータであり、ブロックに応じたデータレコードの集まりである。第２階層の索引データはデータフィールド「シリアル番号」、「ファイル名」、「ブロック番号」、「アドレス」を有している。
【００３５】
データフィールド「シリアル番号」は、第１記憶手段１３においてキャッシュされているブロックを識別するシリアル番号を格納する。なお、第２階層の索引データにおいてデータレコードはシリアル番号の昇順で並んでおり、また、同じファイルに含まれるブロックに関するデータレコードは第２階層の索引データにおいて連続して配置されている。
【００３６】
データフィールド「ファイル名」は、キャッシュされているブロックを含むファイルのファイル名を示すテキストデータを格納する。データフィールド「ブロック番号」は、キャッシュされているブロックがファイル名により特定されるファイルにおいて何番目のブロックであるかを示すブロック番号を格納する。
【００３７】
データフィールド「アドレス」は、第１記憶手段１３においてブロックが記憶されている記憶領域の先頭アドレスを格納する。
【００３８】
図２に戻り、データ処理装置１２の機能構成の説明を続ける。データ処理装置１２の記憶制御手段１２２は、要求データが第１記憶手段１３にはキャッシュされておらず、第２記憶手段１４から取得されて要求元装置１１に出力された場合、第２記憶手段１４から取得された要求データを第１記憶手段１３に記憶させる。
【００３９】
索引データ取得手段１２３は、索引データ記憶手段１２１から索引データ（図３）を読み取ることにより取得し、データ特定手段１２４に引き渡す。データ特定手段１２４は索引データに基づき、要求元装置１１からの要求に応じて、第１記憶手段１３および第２記憶手段１４のいずれの記憶手段からどのデータを読み出すかを特定する。
【００４０】
要求データ取得手段１２５は、データ特定手段１２４により特定されたデータ、すなわち要求データを、第１記憶手段１３または第２記憶手段１４から読み出すことにより取得する。出力手段１２６は要求データ取得手段１２５により取得された要求データを要求元装置１１に出力する。以上がデータ処理システム１の構成である。
【００４１】
続いて、データ処理システム１の動作を説明する。図４は、データ処理システム１において要求元装置１１によりデータの要求が行われた際にデータ処理装置１２が行う処理のフローを示した図である。なお、図４および以下の説明において参照するフロー図においては、紙面の都合上、分岐処理（判断）のブロックに、ＪＩＳ（Japanese Industrial Standards）に規格されている菱形に変えて六角形（準備）を用いている。
【００４２】
まず、データ処理装置１２は要求元装置１１より出力されたデータの要求を受け取る（ステップＳ１０１）。要求元装置１１はデータの要求において、要求するデータ、すなわち要求データを例えば「（ファイル名），（開始ブロックのブロック番号），（終了ブロックのブロック番号）」というフォーマットで指定する。このフォーマットにおいて、（ファイル名）は要求元装置１１が必要とするデータを含むファイルのファイル名を示し、（開始ブロックのブロック番号）および（終了ブロックのブロック番号）はそのファイルにおいて要求元装置１１が必要とする一連のブロックの開始位置および終了位置をブロック番号により示す。なお、要求元装置１１が要求データを指定する方法は、要求元装置１１が必要とするブロックの範囲を特定可能なデータであれば、必ずしも上記のフォーマットに従っていなくてもよい。
【００４３】
データ処理装置１２は要求元装置１１からのデータの要求に応じて、まず、要求データのファイル名が第１階層の索引データ（図３の上側のテーブル）に登録されているか否かを判定する（ステップＳ１０２）。具体的には、データ特定手段１２４は、索引データ取得手段１２３を介して索引データ記憶手段１２１から第１階層の索引データを読み出し、データフィールド「ファイル名」に要求データのファイル名を格納しているデータレコードを検索する。
【００４４】
要求データのファイル名が第１階層の索引データに登録されている場合、第１階層の索引データからデータレコードが検索される（ステップＳ１０２；「Ｙｅｓ」）。その場合、データ特定手段１２４は続いて、検索されたデータレコードのデータフィールド「ファイル／ブロック」に「ファイル」および「ブロック」のいずれが格納されているかを判定する（ステップＳ１０３）。
【００４５】
データフィールド「ファイル／ブロック」に「ファイル」が格納されていた場合（ステップＳ１０３；「１」）、要求データはファイル単位で第１記憶手段１３にキャッシュされていることになる。従って、データ特定手段１２４はデータフィールド「アドレス」からアドレスを読み出し、第１記憶手段１３から読み出すべき要求データのアドレスとして要求データ取得手段１２５に引き渡す。
【００４６】
要求データ取得手段１２５はデータ特定手段１２４から引き渡されたアドレスに従い、第１記憶手段１３から要求データを含むファイルを読み出し（ステップＳ１０４）、出力手段１２６に引き渡す。出力手段１２６は要求データ取得手段１２５から引き渡されたファイルを要求元装置１１に出力する（ステップＳ１０５）。これにより、要求元装置１１は必要なデータ（ブロック群）を含むファイルを取得することができる。
【００４７】
ステップＳ１０３の判定において、データフィールド「ファイル／ブロック」に「ブロック」が格納されていた場合（ステップＳ１０３；「２」）、データ処理装置１２は要求データのブロック番号の全てが第２階層の索引データ（図３の下側のテーブル）に登録されているか否かを判定する（ステップＳ１０６）。
【００４８】
具体的には、データ特定手段１２４は、まず、ステップＳ１０２において第１階層の索引データから検索したデータレコードのデータフィールド「シリアル番号」からシリアル番号を読み出す。続いて、データ特定手段１２４は、索引データ取得手段１２３を介して索引データ記憶手段１２１から第２階層の索引データを読み出し、第２階層の索引データにおいてデータフィールド「シリアル番号」に、第１階層の索引データのデータレコードから読み出したシリアル番号を格納しているデータレコードを検索範囲の先頭のデータレコードとして特定する。続いて、データ特定手段１２４は、検索範囲の先頭のデータレコードと、それに続くデータレコードのうちデータフィールド「ファイル名」が先頭のデータレコードと同じである一連のデータレコードを検索範囲として、データフィールド「ブロック番号」に格納されているブロック番号が、要求データのブロック番号の範囲内のものを抽出する。
【００４９】
要求データのブロック番号が第２階層の索引データに登録されている場合、第２階層の索引データからデータレコードが抽出される。データ特定手段１２４は、要求データのブロック番号の全てに応じたデータレコードが第２階層の索引データから抽出された場合（ステップＳ１０６；「Ｙｅｓ」）、データ特定手段１２４は抽出されたデータレコードの各々のデータフィールド「アドレス」からアドレスを読み出し、第１記憶手段１３から読み出すべき要求データのアドレス（またはアドレス群）として要求データ取得手段１２５に引き渡す。
【００５０】
要求データ取得手段１２５はデータ特定手段１２４から引き渡されたアドレス（またはアドレス群）に従い、第１記憶手段１３から要求データのブロック（またはブロック群）を読み出し（ステップＳ１０７）、出力手段１２６に引き渡す。出力手段１２６は要求データ取得手段１２５から引き渡されたブロック（またはブロック群）を要求元装置１１に出力する（ステップＳ１０５）。これにより、要求元装置１１は必要なデータ（ブロックまたはブロック群）を取得することができる。
【００５１】
ステップＳ１０６の判定において、要求データのブロック番号に応じたデータレコードが第２階層の索引データから抽出されなかった場合、もしくは第２階層の索引データから抽出されたデータレコードが要求データのブロック番号の一部に応じたもののみであった場合（ステップＳ１０６；「Ｎｏ」）、データ特定手段１２４は要求データの全てを第１記憶手段１３から取得することはできないと判定し、要求データのファイル名を、第２記憶手段１４から読み出すべき要求データのファイル名として要求データ取得手段１２５に引き渡す。なお、データ特定手段１２４は、後述のステップＳ１１０においてキャッシュするブロックを特定可能とするために、要求データ取得手段１２５にファイル名を引き渡す際、要求データのブロック番号（開始ブロックおよび終了ブロックのブロック番号）を当該ファイル名に付加して引き渡す。
【００５２】
要求データ取得手段１２５はデータ特定手段１２４から引き渡されたファイル名に従い、第２記憶手段１４から要求データのファイルを読み出す（ステップＳ１０８）。要求データ取得手段１２５は、第２記憶手段１４から読み出したファイルを、出力手段１２６と記憶制御手段１２２の各々に引き渡す。なお、要求データ取得手段１２５は、記憶制御手段１２２にファイルを引き渡す際、要求データのブロック番号（開始ブロックおよび終了ブロックのブロック番号）を当該ファイルに付加して引き渡す。
【００５３】
出力手段１２６は要求データ取得手段１２５から引き渡されたファイルを要求元装置１１に出力する（ステップＳ１０９）。これにより、要求元装置１１は必要なデータ（ブロックまたはブロック群）を含むファイルを取得することができる。
【００５４】
一方、記憶制御手段１２２は、要求データ取得手段１２５かファイルを引き渡されると、そのファイルのサイズが予め定められた閾値を超えるか否かを判定する（ステップＳ１１０）。ファイルのサイズが閾値を超える場合（ステップＳ１１０；「Ｙｅｓ」）、記憶制御手段１２２は要求データ取得手段１２５から引き渡されたファイルを構成するブロック群のうち、ファイルに付加されている要求データのブロック番号により特定されるブロック（またはブロック群）を第１記憶手段１３に記憶させる（ステップＳ１１１）。続いて、記憶制御手段１２２はステップＳ１１１において新たに第１記憶手段１３にキャッシュしたブロック（またはブロック群）に関するデータを第１階層の索引データおよび第２階層の索引データに反映させる（ステップＳ１１２）。
【００５５】
ステップＳ１１０の判定において、ファイルのサイズが予め定められた閾値以下である場合（ステップＳ１１０；「Ｎｏ」）、記憶制御手段１２２は要求データ取得手段１２５から引き渡されたファイルを第１記憶手段１３に記憶させる（ステップＳ１１３）。続いて、記憶制御手段１２２はステップＳにおいて新たに第１記憶手段１３にキャッシュしたファイルに関するデータを第１階層の索引データに反映させる（ステップＳ１１４）。
【００５６】
なお、ステップＳ１１１またはステップＳ１１３において新たなデータを第１記憶手段１３に記憶させるにあたり、第１記憶手段１３の空き容量が不足する場合、既に第１記憶手段１３にキャッシュされているデータの一部を解放する処理（追い出し処理）が行われる。その場合、ステップＳ１１２またはステップＳ１１４において、当該追い出し処理に伴う索引データの更新も併せて行われる。なお、本実施形態において既知の追い出し処理のいずれが採用されてもよいため、追い出し処理の説明は省略する。
【００５７】
以上のように、データ処理システム１によれば、要求元装置１１からの要求に応じて第２記憶手段１４からファイルが読み出されて要求元装置１１に出力された場合、当該ファイルのサイズが閾値以下であればファイル全体が第１記憶手段１３にキャッシュされる一方、当該ファイルのサイズが閾値を超える場合はファイル全体ではなく、ファイルを構成するブロック群のうち要求元装置１１が実際に必要としたブロック（またはブロック群）のみが第１記憶手段１３にキャッシュされる。その結果、サイズの大きいファイルが第１記憶手段１３の記憶容量の多くを占拠してしまい、キャッシュヒット率が低下する、という不都合が回避される。また、第１記憶手段１３の記憶容量を超えたサイズのファイルが第２記憶手段１４から読み出された場合においても、そのファイルのブロックの一部が第１記憶手段１３にキャッシュされるため、大きいサイズのファイルがキャッシュされない、という不都合も回避される。
【００５８】
また、データ処理システム１によれば、上記のように第１記憶手段１３にキャッシュされているデータの一部はファイル単位で管理されているため、全てのデータがブロック単位で管理される場合と比較し、索引データのサイズが小さくて済むと同時に、索引データから要求データに関するデータレコードを検索するために要する時間も短縮される。
【００５９】
なお、データ処理システム１においては、索引データからブロックに関するデータレコードの検索が行われる場合、第１階層の索引データからファイル名を検索キーとしたデータレコードの検索が行われ、第２階層の索引データからブロック番号を検索キーとしたデータレコードの検索が行われる。このように、ブロック単位でキャッシュされているデータに関しては第１記憶手段１３からの読み出しのために検索が２回行われるが、１回目の検索において第１階層の索引データから検索されたデータレコードにより、２回目の検索における検索範囲が示されるため、例えば第２階層の索引データからファイル名およびブロック番号を検索キーとして１回でブロックに関するデータレコードを検索する場合と比較し、検索に要する時間が増加することはない。
【００６０】
［第１実施形態の変形例］
上述した第１実施形態は様々に変形することができる。以下にそれらの変形の例を示す。
【００６１】
（１）上述した第１実施形態において説明に用いた索引データ（図３）の構成は一例であって、他の様々な構成が採用され得る。例えば、第２階層の索引データにおいてブロック毎にデータレコードを設ける構成に代えて、一連のブロック群毎にデータレコードを設けてもよい。そのような構成によれば、第２階層の索引データのデータレコード数が削減され、索引データのサイズが小さくなり望ましい。
【００６２】
（２）上述した第１実施形態においては、プログラムに従う処理を実行するコンピュータ１０によって、図２に示す機能構成を備えるデータ処理装置１２が実現される。これに代えて、いわゆる専用機によりデータ処理装置１２が実現されてもよい。
【００６３】
（３）上述した第１実施形態においては、第１記憶手段にキャッシュされるデータは要求元装置１１からの要求に応じて第２記憶手段から読み出されたデータとしているが、第１記憶手段にキャッシュされるデータは、例えば要求元装置１１が将来要求する可能性が高いと推定されるデータとして第２記憶手段からプリフェッチしたデータであってもよい。また、第２記憶手段から読み出されたデータの全てを第１記憶手段にキャッシュするデータの対象とする必要はなく、例えばファイルの属性等に基づき、予め定められた条件を満たすデータのみを第１記憶手段にキャッシュする対象としてもよい。
【００６４】
（４）上述した第１実施形態においてデータ処理装置１２の実現に用いられるプログラムは、ネットワークを介してコンピュータ１０にダウンロードされる形態で提供されるほか、プログラムを持続的に記録するコンピュータ読み取り可能な記録媒体の形態で配布され、当該記録媒体からコンピュータ１０により読み取られる形態で提供されてもよい。
【００６５】
［第２実施形態］
続いて、本発明の他の一実施形態にかかるデータ処理システム２を説明する。データ処理システム２は階層構造を有した索引データを用いて、階層関係を持つデータ群を扱う要求元の装置に対しキャッシュを用いて高速にデータを出力する仕組みを備えたシステムである。
【００６６】
階層関係を持つデータ群としては、例えば動画編集用のアプリケーションプログラムにより使用されるプロジェクトファイル（第１階層のデータ）と、プロジェクトファイルの使用に伴い使用される多数のフッテージファイル（第２階層のデータ）がある。プロジェクトファイルは動画全体を管理するファイルであり、フッテージファイルは動画の各コマを構成する多数の静止画、効果音等のサウンド、音楽、テロップ表示される文章、それらの中間データ等を各々表すファイルである。
【００６７】
要求元装置１１が動画編集用のアプリケーションプログラムに従いデータの要求を行う場合、まずプロジェクトファイルの要求が行われ、プロジェクトファイルのオープンに伴い、プロジェクトファイルにより指定される多数のフッテージファイルの要求が行われる。
【００６８】
本願において、動画編集用のアプリケーションプログラムにおけるプロジェクトファイルに例示される第１階層のデータをルートデータと呼び、フッテージファイルに例示される第２階層のデータをサブデータと呼ぶ。なお、ルートデータとサブデータの関係は、ルートデータの使用に伴いサブデータが使用される、という関係であれば如何なる関係であってもよい。以下、ルートデータと、当該ルートデータの使用に伴い使用されるサブデータとの関係を「ルートデータがサブデータを参照する」のように表現し、ルートデータを「参照元データ」、サブデータを「参照先データ」というものとする。
【００６９】
なお、ルートデータとサブデータのデータ単位はファイルに限られず、例えばブロック等の他の単位であってもよい。ただし、以下の説明においては、例として、データ処理システム２はファイル単位のルートデータおよびサブデータを扱うものとする。
【００７０】
データ処理システム２の構成および動作は、上述した第１実施形態にかかるデータ処理システム１の構成および動作と多くの点で共通している。従って、以下、データ処理システム２がデータ処理システム１と異なる点を中心に説明する。また、データ処理システム２が備える構成部のうちデータ処理システム１の構成部と共通または対応する構成部には、データ処理システム１において用いた符号を用いる。
【００７１】
データ処理システム２を実現するためのハードウェアの一例は、データ処理システム１と同様に図１に示す構成を備えるコンピュータ１０である。
【００７２】
図５は、データ処理システム２の機能構成を示した図である。すなわち、図１に示されるコンピュータ１０のプロセッサ１０１がメモリ１０２に記憶されている各種プログラムに従った処理を行うことにより、図５に示される構成部を備えるデータ処理システム２が実現される。
【００７３】
データ処理システム２が備える機能構成は、データ処理システム１が備える機能構成と比較し、データ特定手段１２４に替えてデータ特定手段２２４を備える点が異なっている。データ特定手段２２４は、読み出しデータ特定手段２２４１および解放データ特定手段２２４２を備える。読み出しデータ特定手段２２４１は、データ処理システム１におけるデータ特定手段１２４と同様に、要求元装置１１からの要求に応じて第１記憶手段１３または第２記憶手段１４から読み出す対象のデータを特定する。
【００７４】
解放データ特定手段２２４２は、第１記憶手段１３に新たなデータをキャッシュするための空き容量を確保するために、既にキャッシュされているデータの中から解放対象のデータを特定する。解放データ特定手段２２４２は、以下に説明する索引データを用いて低処理負荷で高速に解放対象のデータを特定する。
【００７５】
図６は、データ処理システム２における索引データ記憶手段１２１に、データ処理システム１における索引データ（図３）に代えて記憶されている索引データの構成を示した図である。データ処理システム２における索引データも、データ処理システム１における場合と同様に、第１階層の索引データと第２階層の索引データを含んでいる。
【００７６】
データ処理システム２における第１階層の索引データは、第１記憶手段１３に記憶されているルートデータを管理するデータであり、ルートデータに応じたデータレコードの集まりである。第１階層の索引データはデータフィールド「ルートファイル名」、「アドレス」を有している。
【００７７】
データフィールド「ルートファイル名」はキャッシュされているルートデータのファイル名を示すテキストデータを格納する。データフィールド「アドレス」は、キャッシュされているルートデータが第１記憶手段１３において記憶されている記憶領域の先頭アドレスを格納する。
【００７８】
データ処理システム２における第２階層の索引データは、第１記憶手段１３に記憶されているサブデータを管理するデータであり、サブデータに応じたデータレコードの集まりである。第２階層の索引データはデータフィールド「サブファイル名」、「アドレス」、「参照元」を有している。
【００７９】
データフィールド「サブファイル名」はキャッシュされているサブデータのファイル名を示すテキストデータを格納する。データフィールド「アドレス」は、キャッシュされているサブデータが第１記憶手段１３において記憶されている記憶領域の先頭アドレスを格納する。
【００８０】
データフィールド「参照元」は、サブデータの参照元のルートデータのファイル名を示すテキストデータを格納する。同じサブデータが複数のルートデータから参照される場合には、データフィールド「参照元」にはそれら複数のルートデータのファイル名を示すテキストデータが格納されることになる。
【００８１】
図７〜図１０は、要求元装置１１からルートデータまたはサブデータの要求が行われた際にデータ処理システム２のデータ処理装置１２が行う処理のフローを示した図である。
【００８２】
まず、要求元装置１１からデータの要求があると（ステップＳ２０１）、データ処理装置１２のデータ特定手段２２４の読み出しデータ特定手段２２４１は、例えば要求されたデータのファイル名の拡張子に基づき、要求されたデータがルートデータであるかサブデータであるかを判定する（ステップＳ２０２）。
【００８３】
要求されたデータがルートデータである場合（ステップＳ２０２；「１」）、読み出しデータ特定手段２２４１は索引データ取得手段１２３を介して索引データ記憶手段１２１から第１階層の索引データ（図６の上側のテーブル）を読み出し、第１階層の索引データから、データフィールド「ルートファイル名」に要求されたルートデータのファイル名を格納するデータレコードを検索することにより、当該ルートデータが第１階層の索引データに登録されているか否かの判定を行う（ステップＳ２０３）。
【００８４】
要求されたルートデータが第１記憶手段１３に記憶されていれば、第１階層の索引データに当該ルートデータに関するデータレコードが登録されているため、ステップＳ２０３の検索において当該データレコードが検索される（ステップＳ２０３；「Ｙｅｓ」）。その場合、読み出しデータ特定手段２２４１は検索されたデータレコードのデータフィールド「アドレス」に格納されているアドレスを要求データ取得手段１２５に引き渡す。要求データ取得手段１２５は引き渡されたアドレスに従い、第１記憶手段１３から要求されたルートデータを読み出し（ステップＳ２０４）、読み出したルートデータを出力手段１２６に引き渡すとともに、記憶制御手段１２２に当該ルートデータのファイル名を通知する。
【００８５】
出力手段１２６は引き渡されたルートデータを要求元装置１１に出力する（ステップＳ２０５）。一方、ルートデータのファイル名の通知を受けた記憶制御手段１２２は、索引データ記憶手段１２１に記憶されている第１階層の索引データにおける当該ルートデータに関するデータレコードを先頭に移動する（ステップＳ２０６）。このデータレコードの順序の変更処理は、後述する追い出し処理において、最近使用されたルートデータを優先的に第１記憶手段１３に残すための処理である。
【００８６】
要求されたルートデータが第１記憶手段１３に記憶されていなければ、第１階層の索引データに当該ルートデータに関するデータレコードは登録されていないため、ステップＳ２０３の検索は失敗する（ステップＳ２０３；「Ｎｏ」）。その場合、読み出しデータ特定手段２２４１は要求されたルートデータのファイル名を要求データ取得手段１２５に引き渡す。要求データ取得手段１２５は引き渡されたファイル名に従い、第２記憶手段１４から要求されたルートデータを読み出し（ステップＳ２０７）、読み出したルートデータを出力手段１２６および記憶制御手段１２２に引き渡す。出力手段１２６は引き渡されたルートデータを要求元装置１１に出力する（ステップＳ２０５）。
【００８７】
一方、ルートデータを引き渡された記憶制御手段１２２は、図８に示すフローに従い、引き渡されたルートデータを第１記憶手段１３にキャッシュする処理を行う。まず、記憶制御手段１２２は第１記憶手段１３の空き容量が、キャッシュ対象のルートデータのサイズ以上であるか否かを判定する（ステップＳ３０１）。第１記憶手段１３の空き容量が、キャッシュ対象のルートデータのサイズ以上である場合（ステップＳ３０１；「Ｙｅｓ」）、記憶制御手段１２２は第１記憶手段１３にルートデータを記憶させる（Ｓ３０２）。
【００８８】
第１記憶手段１３の空き容量が、キャッシュ対象のルートデータのサイズより大きい場合（ステップＳ３０１；「Ｎｏ」）、記憶制御手段１２２は後述する追い出し処理（ステップＳ５０）を行って第１記憶手段１３に空き容量を確保した後、第１記憶手段１３にルートデータを記憶させる（Ｓ３０２）。
【００８９】
ステップＳ３０２において第１記憶手段１３にルートデータを記憶させた後、記憶制御手段１２２は、索引データ記憶手段１２１に記憶されている第１階層の索引データにおける当該ルートデータに関するデータレコードを先頭に追加する（ステップＳ３０３）。
【００９０】
図７のステップＳ２０２の判定において、要求されたデータがサブデータである場合（ステップＳ２０２；「２」）、読み出しデータ特定手段２２４１は索引データ取得手段１２３を介して索引データ記憶手段１２１から第２階層の索引データ（図６の下側のテーブル）を読み出し、第２階層の索引データから、データフィールド「サブファイル名」に要求されたサブデータのファイル名を格納するデータレコードを検索することにより、当該サブデータが第２階層の索引データに登録されているか否かの判定を行う（ステップＳ２０８）。
【００９１】
要求されたサブデータが第１記憶手段１３に記憶されていれば、第２階層の索引データに当該サブデータに関するデータレコードが登録されているため、ステップＳ２０８の検索において当該データレコードが検索される（ステップＳ２０８；「Ｙｅｓ」）。その場合、読み出しデータ特定手段２２４１は検索されたデータレコードのデータフィールド「アドレス」に格納されているアドレスを要求データ取得手段１２５に引き渡す。要求データ取得手段１２５は引き渡されたアドレスに従い、第１記憶手段１３から要求されたサブデータを読み出し（ステップＳ２０９）、読み出したサブデータを出力手段１２６に引き渡すとともに、記憶制御手段１２２に当該サブデータのファイル名を通知する。
【００９２】
出力手段１２６は引き渡されたサブデータを要求元装置１１に出力する（ステップＳ２１０）。一方、サブデータのファイル名の通知を受けた記憶制御手段１２２は、索引データ記憶手段１２１に記憶されている第２階層の索引データにおける当該サブデータに関するデータレコードのデータフィールド「参照元」に当該サブデータの参照元のルートデータのファイル名を追加する（ステップＳ２１１）。なお、当該サブデータの参照元のルートデータのファイル名は、第１階層の索引データの先頭のデータレコードのデータフィールド「ルートファイル名」に格納されているファイル名である。
【００９３】
要求されたサブデータが第１記憶手段１３に記憶されていなければ、第２階層の索引データに当該サブデータに関するデータレコードは登録されていないため、ステップＳ２０８の検索は失敗する（ステップＳ２０８；「Ｎｏ」）。その場合、読み出しデータ特定手段２２４１は要求されたサブデータのファイル名を要求データ取得手段１２５に引き渡す。要求データ取得手段１２５は引き渡されたファイル名に従い、第２記憶手段１４から要求されたサブデータを読み出し（ステップＳ２１２）、読み出したルートデータを出力手段１２６および記憶制御手段１２２に引き渡す。出力手段１２６は引き渡されたサブデータを要求元装置１１に出力する（ステップＳ２１０）。
【００９４】
一方、サブデータを引き渡された記憶制御手段１２２は、図９に示すフローに従い、引き渡されたサブデータを第１記憶手段１３にキャッシュする処理を行う。図９に示すフローは、図８に示したルートデータを第１記憶手段１３にキャッシュする処理と比較し、キャッシュ対象のデータがルートデータではなくサブデータであり、更新される索引データが第１階層の索引データではなく第２階層の索引データである点を除き、共通している。従って、図９のフローの説明を省略する。なお、図９のステップＳ４０１〜４０３の処理は、各々、図８のステップＳ３０１〜Ｓ３０３に対応する。
【００９５】
上述した処理により、データ処理装置１２は要求元装置１１に対し、要求されたルートデータおよびサブデータを出力するとともに、新たに第２記憶手段１４から読み出して要求元装置１１に出力したルートデータおよびサブデータを第１記憶手段１３にキャッシュする。ただし、第１記憶手段１３に新たにデータをキャッシュする際、第１記憶手段１３の空き容量が不足する場合がある。その場合、既述のように、データ処理装置１２は第１記憶手段１３に空き容量を確保するための追い出し処理を行った後、データを第１記憶手段１３に記憶させる。
【００９６】
データ処理システム２のデータ処理装置１２は、追い出し処理において、第１記憶手段１３にキャッシュされているルートデータのうち最後に使用されたタイミングが古いものから順に第１記憶手段１３から解放するとともに、解放するルートデータのみを参照元とするサブファイルを全て、第１記憶手段１３から解放する。
【００９７】
図１０は、データ処理装置１２が行う追い出し処理（図８および図９のステップＳ５０）のフローを示した図である。記憶制御手段１２２は、新たにデータを第１記憶手段１３に記憶させるにあたり空き容量の不足を検出すると（図８のステップＳ３０１；「Ｎｏ」または図９のステップＳ４０１；「Ｎｏ」）、データ特定手段２２４の解放データ特定手段２２４２にキャッシュしたいデータのサイズを通知する（ステップＳ５０１）。
【００９８】
この通知に応じて、解放データ特定手段２２４２は索引データ取得手段１２３を介して索引データ記憶手段１２１から第１階層の索引データを読み出し、第１階層の索引データの末尾のデータレコードを記憶制御手段１２２に引き渡す。記憶制御手段１２２は、引き渡されたデータレコードのデータフィールド「アドレス」に格納されるアドレスに従い、第１記憶手段１３に記憶されているルートデータを削除する（ステップＳ５０２）。
【００９９】
続いて、記憶制御手段１２２は索引データ記憶手段１２１に記憶されている第１階層の索引データから末尾のデータレコード（解放データ特定手段２２４２から引き渡されたデータレコードと同じデータレコード）を削除する（ステップＳ５０３）。また、記憶制御手段１２２は、索引データ記憶手段１２１に記憶されている第２階層の索引データ（図６の下側のテーブル）から、データフィールド「参照元」に、第１記憶手段１３から削除したルートデータのファイル名（第１階層の索引データから削除したデータレコードのデータフィールド「ルートファイル名」に格納されていたファイル名）を含むデータレコードを抽出し、抽出したデータレコードのデータフィールド「参照元」から当該ルートデータのファイル名を削除する（ステップＳ５０４）。
【０１００】
続いて、解放データ特定手段２２４２は、索引データ取得手段１２３を介して索引データ記憶手段１２１から第２階層の索引データを読み出し、第２階層の索引データからデータフィールド「参照元」が空であるデータレコード、すなわち、参照元のルートデータの数がゼロであるデータレコードを抽出し、抽出したデータレコードを記憶制御手段１２２に引き渡す。なお、参照元のルートデータの数がゼロであるデータレコードは、ステップＳ５０２におけるルートデータの第１記憶手段１３からの削除に伴い、参照元のいずれのルートデータも第１記憶手段１３に記憶されなくなったサブデータに関するデータレコードである。
【０１０１】
記憶制御手段１２２は、解放データ特定手段２２４２から引き渡されたデータレコードの各々のデータフィールド「アドレス」に格納されるアドレスに従い、第１記憶手段１３に記憶されているサブデータを削除する（ステップＳ５０５）。続いて、記憶制御手段１２２は索引データ記憶手段１２１に記憶されている第２階層の索引データから、第１記憶手段１３から削除したサブデータに関するデータレコード（解放データ特定手段２２４２から引き渡されたデータレコードと同じデータレコード）を全て削除する（ステップＳ５０６）。
【０１０２】
続いて、解放データ特定手段２２４２は第１記憶手段１３の空き容量が新たなキャッシュ対象のデータのサイズ（ステップＳ５０１において通知されたサイズ）以上であるか否かを判定する（ステップＳ５０７）。空き容量が新たなキャッシュ対象のデータのサイズ未満であれば（ステップＳ５０７；「Ｎｏ」）、解放データ特定手段２２４２は処理をステップＳ５０２に戻す。その結果、新たなデータをキャッシュするために必要な空き容量が第１記憶手段１３に確保されるまで、上述したステップＳ５０２〜Ｓ５０７の処理が繰り返されることになる。
【０１０３】
空き容量が新たなキャッシュ対象のデータのサイズ以上であれば（ステップＳ５０７；「Ｙｅｓ」）、解放データ特定手段２２４２は追い出しの完了を記憶制御手段１２２に通知する（ステップＳ５０８）。
【０１０４】
図１１は、データ処理システム２において第１記憶手段１３にキャッシュされるデータが上述した追い出し処理により変化する様子を模式的に示した図である。図１１においては、説明のため、第１記憶手段１３の記憶容量がデータ１０個を記憶可能なサイズであるものとしている。また、図１１において、「Ｒ」で始まる符号の付された丸印はルートデータを示し、「Ｓ」で始まる符号の付された丸印はサブデータを示し、互いに先で結ばれている丸印はルートデータがサブデータを参照していることを示している。また、図１１において、右側ほど、第１階層の索引データおよび第２階層の索引データにおける対応するデータレコードが先頭側であることを示している。
【０１０５】
図１１（ａ）は、第１記憶手段１３に何もデータがキャッシュされていない状態で、ルートデータ「Ｒ１」と、ルートデータ「Ｒ１」が参照するサブデータ「Ｓ１」「Ｓ２」「Ｓ３」が要求元装置１１に出力された場合の第１記憶手段１３の状態を示している。
【０１０６】
図１１（ｃ）は、第１記憶手段１３が図１１（ａ）に示される状態において、図１１（ｂ）に示すルートデータ「Ｒ２」とサブデータ「Ｓ４」「Ｓ１」「Ｓ５」が要求元装置１１に出力された後の第１記憶手段１３の状態を示している。この時点ではまだ、第１記憶手段１３に記憶されているデータの数が１０個以下であるため、追い出し処理は生じていない。
【０１０７】
第１記憶手段１３が図１１（ｃ）に示される状態において、図１１（ｄ）に示すように、ルートデータ「Ｒ３」と、ルートデータ「Ｒ３」が参照するサブデータ「Ｓ６」「Ｓ５」「Ｓ７」「Ｓ８」がこの順で要求元装置１１に出力されると、サブデータ「Ｓ８」を新たに第１記憶手段１３に記憶する際に、図１１（ｅ）に示すように、既に第１記憶手段１３には１０個のデータがキャッシュされているため、追い出し処理が行われる。
【０１０８】
追い出し処理において、図１１（ｆ）に示すように、まず、最後に使用されたタイミングが最も古いルートデータ「Ｒ１」が追い出し対象のルートデータとして特定される。続いて、追い出し対象となったルートデータ「Ｒ１」のみを参照元としていたサブデータ、すなわち、ルートデータ「Ｒ１」が削除された場合に、参照元のルートデータの数がゼロとなるサブデータであるサブデータ「Ｓ２」「Ｓ３」が追い出し対象のサブデータとして特定される。なお、追い出し対象のルートデータ「Ｒ１」はサブデータ「Ｓ１」も参照しているが、追い出し対象となっていないルートデータ「Ｒ２」もサブデータ「Ｓ１」を参照しているため、サブデータ「Ｓ１」は追い出し対象とはならない。
【０１０９】
図１１（ｇ）は上記のように特定された追い出し対象のルートデータおよびサブデータが第１記憶手段１３から削除された後、サブデータ「Ｓ８」が第１記憶手段１３にキャッシュされた後の第１記憶手段１３の状態を示している。
【０１１０】
以上がデータ処理システム２におけるデータ処理装置１２が行う処理の説明である。以上説明したように、データ処理システム２においては、新たにデータをキャッシュ用メモリに記憶させるための空き容量が不足している場合、既にキャッシュ用メモリに記憶されているデータのうち、最後に使用されたタイミングが最も古いルートデータと、当該ルートデータのみを参照元とする全てのサブデータがキャッシュ用メモリから削除される。その際、追い出し対象のデータの特定にあたり、サブデータに関しては最後に使用されたタイミングの前後や使用された頻度の多少（いわゆるエージング）は一切考慮されない。従って、例えば全てのデータに関しエージングの管理を行い、それらのエージングに基づき追い出し対象のデータを特定する従来の方法と比較し、エージングの管理が不要であるとともに、追い出し処理が低負荷で高速に行われる。
【０１１１】
特に、動画編集用アプリケーションが扱うデータのように、１つのプロジェクトファイル（ルートデータ）が参照するフッテージファイル（サブデータ）の数が数百オーダーもしくはそれ以上となることも珍しくない。そのような場合、多数のフッテージファイルの各々に関しエージングの管理を行い、また追い出しの際にエージングを参照していると、それらの処理の負荷が大きくなる。データ処理システム２によれば、フッテージファイルのエージング管理および追い出し処理におけるエージングの参照は不要であるため、著しい処理負荷低減の効果が得られる。
【０１１２】
［第２実施形態の変形例］
上述した第２実施形態は様々に変形することができる。以下にそれらの変形の例を示す。
【０１１３】
（１）上述した第２実施形態において説明に用いた索引データ（図６）の構成は一例であって、他の様々な構成が採用され得る。例えば、第２階層の索引データにデータフィールド「参照元」を設ける代わりに、第１階層の索引データにデータフィールド「参照先」を設け、第１階層の索引データにおいてルートデータとサブデータの参照関係を管理する構成としてもよい。
【０１１４】
（２）上述した第２実施形態においては、プログラムに従う処理を実行するコンピュータ１０によって、図５に示す機能構成を備えるデータ処理装置１２が実現される。これに代えて、いわゆる専用機によりデータ処理装置１２が実現されてもよい。
【０１１５】
（３）上述した第２実施形態においては、第１記憶手段にキャッシュされるデータは要求元装置１１からの要求に応じて第２記憶手段から読み出されたデータとしているが、第１記憶手段にキャッシュされるデータは、例えば要求元装置１１が将来要求する可能性が高いと推定されるデータとして第２記憶手段からプリフェッチしたデータであってもよい。また、第２記憶手段から読み出されたデータの全てを第１記憶手段にキャッシュするデータの対象とする必要はなく、例えばファイルの属性等に基づき、予め定められた条件を満たすデータのみを第１記憶手段にキャッシュする対象としてもよい。
【０１１６】
（４）上述した第２実施形態においては、サブデータのエージング管理は一切行われない構成が採用されている。その場合、エージング管理が不要である、という効果が得られる一方で、参照元のルートデータは頻繁に使用されるが、長らく使用されていないサブファイルが第１記憶手段１３に残り続ける、という不都合が生じる場合がある。この不都合を回避するために、サブファイルのエージング管理を行い、エージングに基づくサブファイルの追い出し処理を併用する構成が採用されてもよい。
【０１１７】
この変形例においては、まず、サブファイルのエージングを管理するために、図７のステップＳ２１１において、記憶制御手段１２２は要求データ取得手段１２５から通知されたサブデータ（第２記憶手段１４から新たに読み出されたサブデータ）のファイル名に応じた第２階層の索引データのデータレコードを先頭に移動させる。そして、データ処理装置１２は、図１０に示した処理に代えて、図１２に示す処理を行う。なお、図１２において、図１０に示した処理と同様の処理に関しては図１０で用いたステップ番号と同じステップ番号が付されている。以下に、図１２の処理が図１０と異なる点を中心に説明する。
【０１１８】
まず、この変形例において、データ処理装置１２は、上述した第２実施形態における追い出しと同様の追い出し、すなわち、ルートデータの解放に伴い当該ルートデータのみを参照元とする全てのサブファイルを解放する方法による追い出しを連続して行った回数をカウントするためのカウンタを保持している。解放データ特定手段２２４２は、ステップＳ５０１において記憶制御手段１２２から空き容量不足の通知を受けると、まず、カウンタの値が所定の閾値ｋであるか否かを判定する（ステップＳ６０１）。
【０１１９】
ステップＳ６０１の判定において、カウンタの値が閾値ｋでない場合（ステップＳ６０１；「Ｎｏ」）、ステップＳ５０１〜Ｓ５０６の処理（第２実施形態における場合と同様の追い出し処理）が行われた後、解放データ特定手段２２４２により、カウンタの値が１だけ増加される（ステップＳ６０２）。その後、ステップＳ５０７の判定が行われ、空き容量がまだ不足している場合には（ステップＳ５０７；「Ｎｏ」）、処理がステップＳ６０１に戻される。一方、空き容量が確保された場合には（ステップＳ５０７；「Ｙｅｓ」）、空き容量が確保された旨の通知が記憶制御手段１２２に対し行われて（ステップＳ５０８）、一連の追い出し処理は終了する。
【０１２０】
ステップＳ６０１の判定において、カウンタの値が閾値ｋである場合（ステップＳ５０１；「Ｙｅｓ」）、解放データ特定手段２２４２は、索引データ取得手段１２３を介して索引データ記憶手段１２１から第２階層の索引データを読み出し、末尾から所定数のデータレコードを読み出して記憶制御手段１２２に引き渡す。
【０１２１】
記憶制御手段１２２は、引き渡されたデータレコードの各々のデータフィールド「アドレス」に格納されるアドレスに従い、第１記憶手段１３に記憶されているサブデータを削除する（ステップＳ６０３）。続いて、記憶制御手段１２２は索引データ記憶手段１２１に記憶されている第２階層の索引データから、第１記憶手段１３から削除したサブデータに関するデータレコード（解放データ特定手段２２４２から引き渡されたデータレコードと同じデータレコード）を全て削除する（ステップＳ６０４）。続いて、解放データ特定手段２２４２は、カウンタの値を「０」にリセットする（ステップＳ６０５）。
【０１２２】
その後、ステップＳ５０７の判定が行われ、空き容量がまだ不足している場合には（ステップＳ５０７；「Ｎｏ」）、処理がステップＳ６０１に戻される。一方、空き容量が確保された場合には（ステップＳ５０７；「Ｙｅｓ」）、空き容量が確保された旨の通知が記憶制御手段１２２に対し行われて（ステップＳ５０８）、一連の追い出し処理は終了する。
【０１２３】
（５）上述した第２実施形態において、第１階層の索引データはエージング管理用のデータフィールドを持つことなく、データレコードの順序により最後にデータが利用されたタイミングの前後を示す。また、上述した第２実施形態の変形例（４）において、第２階層の索引データはエージング管理用のデータフィールドを持つことなく、データレコードの順序により最後にデータが利用されたタイミングの前後を示す。これに替えて、第１階層の索引データもしくは第２階層の索引データがエージング管理用のデータフィールドを持ち、当該データフィールドに、最後にデータが利用されたタイミングの前後を示す数値等のデータを格納することで、エージングの管理が行われる構成が採用されてもよい。
【０１２４】
（６）上述した第２実施形態においては、解放対象のデータの選択において、最後に利用されたタイミングが古いデータほど優先的にキャッシュ用メモリから解放する構成が採用されている。キャッシュ用メモリから解放するデータを特定する規則はこれに限られず、データの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に基づき解放対象のデータを特定する他のいかなる規則が採用されてもよい。
【０１２５】
（７）上述した第２実施形態においてデータ処理装置１２の実現に用いられるプログラムは、ネットワークを介してコンピュータ１０にダウンロードされる形態で提供されるほか、プログラムを持続的に記録するコンピュータ読み取り可能な記録媒体の形態で配布され、当該記録媒体からコンピュータ１０により読み取られる形態で提供されてもよい。
【符号の説明】
【０１２６】
１…データ処理システム、２…データ処理システム、１０…コンピュータ、１１…要求元装置、１２…データ処理装置、１３…第１記憶手段、１４…第２記憶手段、１０１…プロセッサ、１０２…メモリ、１０９…バス、１２１…索引データ記憶手段、１２２…記憶制御手段、１２３…索引データ取得手段、１２４…データ特定手段、１２５…要求データ取得手段、１２６…出力手段、２２４…データ特定手段、１０２１…揮発性メモリ、１０２２…ＳＳＤ、１０２３…ＨＤＤ、２２４１…読み出しデータ特定手段、２２４２…解放データ特定手段
【図１】
2015032210.tif 000003
【図２】
2015032210.tif 000004
【図３】
2015032210.tif 000005
【図４】
2015032210.tif 000006
【図５】
2015032210.tif 000007
【図６】
2015032210.tif 000008
【図７】
2015032210.tif 000009
【図８】
2015032210.tif 000010
【図９】
2015032210.tif 000011
【図１０】
2015032210.tif 000012
【図１１】
2015032210.tif 000013
【図１２】
2015032210.tif 000014