JP2015032210A - キャッシュされたデータを管理するためのデータ処理装置、プログラム、記録媒体および方法 - Google Patents
キャッシュされたデータを管理するためのデータ処理装置、プログラム、記録媒体および方法 Download PDFInfo
- Publication number
- JP2015032210A JP2015032210A JP2013162540A JP2013162540A JP2015032210A JP 2015032210 A JP2015032210 A JP 2015032210A JP 2013162540 A JP2013162540 A JP 2013162540A JP 2013162540 A JP2013162540 A JP 2013162540A JP 2015032210 A JP2015032210 A JP 2015032210A
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache
- index
- block
- hierarchy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】キャッシュされるデータの数の増大に伴うデータの読み出し速度の低下や処理負荷の増大等の不都合を低減する。【解決手段】データ処理装置は、要求元装置からの要求に応じてオリジナルストレージから読み出したファイルのサイズが閾値以下である場合は当該ファイルの全体をキャッシュする一方、当該ファイルのサイズが閾値を超える場合は当該ファイルのブロックのうち要求元装置が必要としたブロックのみをキャッシュする。データ処理装置は、キャッシュされているファイルを示す第1階層の索引データとキャッシュされているブロックを示す第2階層の索引データを管理している。データ処理装置はこれらの索引データを用いて要求されたデータがキャッシュされているか否かを判定し、要求されたデータがキャッシュされている場合はそのデータをキャッシュ用メモリから読み出して要求元装置に出力する。【選択図】図3
Description
本発明は、キャッシュされたデータを管理するための技術に関する。
データを処理する装置において、処理に必要なデータを記憶装置から読み出す時間を短縮するための技術としてキャッシュと呼ばれる仕組みが広く用いられている。キャッシュの仕組みの採用された装置は、HDD(Hard Disc Drive)やネットワークストレージ等に代表される記憶装置(以下、「オリジナルストレージ」という)に記憶されているデータの一部の複製を、DRAM(Dynamic Random Access Memory)等に代表される、より高速にデータの読み出しが可能な記憶装置(以下、「キャッシュ用メモリ」という)に記憶しておき、処理に必要なデータがキャッシュ用メモリに記憶されている場合は当該データをキャッシュ用メモリから高速に読み出し、処理に必要なデータがキャッシュ用メモリに記憶されていない場合は当該データをオリジナルストレージから読み出す。その結果、平均的なデータの読み出し時間が短縮される。以下、キャッシュ用メモリにデータを記憶することを「キャッシュする」という。
キャッシュに関する技術を開示した文献の一例として特許文献1がある。特許文献1に記載のディスクキャッシュ管理装置は、ファイル毎にキャッシュ可能なブロックの最大数を割り当てておき、あるファイルのブロックを新たにキャッシュする場合、当該ファイルに割り当てたブロックの最大数を超えないように、必要に応じて既にキャッシュしている当該ファイルのブロックの一部を解放し、解放したブロックが占めていた記憶領域に新たなブロックをキャッシュする。特許文献1に記載のディスクキャッシュ管理装置によれば、アクセス頻度の高いファイルに対し、アクセス頻度の低いファイルよりもキャッシュ可能なブロックの最大数を大きく設定することで、アクセス頻度の低いファイルのブロックがディスクキャッシュ(キャッシュ用メモリ)の記憶容量の多くを占めてしまう、という不都合が回避される。
また、キャッシュに関する技術を開示した文献の他の一例として特許文献2がある。特許文献2に記載の電子ファイリングシステムは、キャッシュ装置(キャッシュ用メモリ)からファイルを消去する際に、消去対象のファイルと意味的な繋がりがあるファイルをキャッシュ装置に残す。特許文献2に記載の電子ファイリングシステムによれば、クライアントによりデータの読み出しが要求された場合、まずキャッシュ装置に保持されているファイルがクライアントに提供され、その間に、このデータの他のファイルが大容量記憶媒体からプリフェッチされてクライアントに提供される。その結果、クライアントは待たされることなくデータの提供を受けることができる。
キャッシュ用メモリの記憶容量は限られているため、その効率的な利用が望まれる。例えば、キャッシュ用メモリの記憶容量の多くが少数の大きなサイズのファイルに占有されてしまうと、新たに要求されるファイルがキャッシュ用メモリから読み出される確率(以下、「キャッシュヒット率」という)が低下し、データの読み出し速度の高速化が図れない。
この不都合を回避するために、ファイルよりもサイズが小さいブロックの単位でキャッシュを行うと、キャッシュヒット率は高まる。その一方で、キャッシュ用メモリに記憶されているデータを示す索引データ(以下、「キャッシュテーブル」という)のサイズが大きくなるとともに、要求されたブロックがキャッシュ用メモリに記憶されているか否かの判定のために行うキャッシュテーブルの検索に要する時間が増大する。その結果、データの読み出し速度の高速化が抑制される。
また、例えば上記のようにブロック単位でデータのキャッシュを行う場合のように、キャッシュ用メモリに記憶されるデータの数が増加すると、新たにデータをキャッシュするための記憶領域を確保する処理に要する処理負荷が増大する。例えば、キャッシュヒット率を高めるためには、既にキャッシュされているデータの中から使用頻度の低いデータを解放することが望ましい。キャッシュされているデータ数が多い程、それらのデータの中から使用頻度の低いデータを特定する処理の負荷が増大する。
本発明は上述の背景に鑑みてなされたものであり、キャッシュされるデータの数の増大に伴うデータの読み出し速度の低下や処理負荷の増大等の不都合を低減する手段を提供することを目的とする。
上述した課題を解決するために、本発明は、一態様として、予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させる記憶制御手段と、前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第1階層の索引データと第2階層の索引データを含み、前記第2階層の索引データが示すデータの各々に関し当該データと前記第1階層の索引データが示すデータの少なくとも1つとの対応関係を示す索引データを取得する索引データ取得手段と、前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定するデータ特定手段とを備えるデータ処理装置を提供する。
上記のデータ処理装置において、前記記憶制御手段は、予め定められた条件を満たす一のファイルのサイズが予め定められた閾値以下である場合は当該一のファイルを前記キャッシュ用の記憶手段に記憶させ、当該一のファイルのサイズが当該閾値を超える場合は当該一のファイルを構成する複数のブロックのうち予め定められた条件を満たす1以上のブロックを前記キャッシュ用の記憶手段に記憶させ、前記第1階層の索引データは前記キャッシュ用の記憶手段に記憶されているファイルおよび前記キャッシュ用の記憶手段に記憶されているブロックを含むファイルを、前記キャッシュ用の記憶手段にファイルおよびブロックのいずれが記憶されているかを区別可能に示し、前記第2階層の索引データは前記キャッシュ用の記憶手段に記憶されているブロックを示し、前記データ特定手段は、要求元の装置から、前記キャッシュ用の記憶手段とは異なる一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記第1階層の索引データに基づき当該一のブロックを含むファイルが前記キャッシュ用の記憶手段に記憶されていると判定した場合は当該ファイルを前記キャッシュ用の記憶手段から読み出す対象のデータとして特定し、前記第1階層の索引データおよび前記第2階層の索引データに基づき当該一のブロックが前記キャッシュ用の記憶手段に記憶されていると判定した場合は当該一のブロックを前記キャッシュ用の記憶手段から読み出す対象のデータとして特定し、要求元の装置から前記一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記データ特定手段により当該一のブロックを含むファイルまたは当該一のブロックが前記キャッシュ用の記憶手段から読み出す対象のデータとして特定された場合には当該一のブロックを含むファイルまたは当該一のブロックを前記キャッシュ用の記憶手段から取得し、前記データ特定手段により当該一のブロックを含むファイルまたは当該一のブロックが前記キャッシュ用の記憶手段から読み出す対象のデータとして特定されなかった場合には当該一のブロックを含むファイルまたは当該一のブロックを前記一の記憶手段から取得する要求データ取得手段と、要求元の装置から前記一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記要求データ取得手段により前記キャッシュ用の記憶手段または前記一の記憶手段から取得された当該一のブロックを含むファイルまたは当該一のブロックを当該要求元の装置に出力する出力手段とを備える、という構成が採用されてもよい。
また、上記のデータ処理装置において、前記第1階層の索引データは、前記キャッシュ用の記憶手段に記憶されているブロックを含むファイルに関し、当該ファイルに含まれるブロックを示すデータが前記第2階層の索引データにおいて含まれる範囲を示し、前記データ特定手段は、前記第1階層の索引データおよび前記第2階層の索引データに基づき一のファイルに含まれる一のブロックが前記キャッシュ用の記憶手段に記憶されているか否かを判定する際、前記第2階層の索引データにおいて当該一のファイルに含まれるブロックを示すデータが含まれる範囲を前記第1階層の索引データに基づき特定し、前記第2階層の索引データの当該特定した範囲内から当該一のブロックを示すデータを検索する、という構成が採用されてもよい。
また、上記のデータ処理装置において、前記記憶制御手段は、予め定められた条件を満たすデータであるルートデータと、当該ルートデータを利用する装置において当該ルートデータとともに用いられるデータであるサブデータを前記キャッシュ用の記憶手段に記憶させ、前記第1階層の索引データは前記キャッシュ用の記憶手段に記憶されているルートデータを、読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方を特定可能に示し、前記第2階層の索引データは前記キャッシュ用の記憶手段に記憶されているサブデータを示し、前記データ特定手段は、前記第1階層の索引データが示すルートデータの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に関する予め定められた条件を満たすルートデータを前記キャッシュ用の記憶手段から解放する対象のデータとして特定し、前記データ特定手段は、解放する対象のデータとして特定したルートデータと対応関係のあるサブデータを前記第2階層の索引データに基づき前記キャッシュ用の記憶手段から解放する対象のデータとして特定し、前記記憶制御手段は、前記データ特定手段により解放する対象のデータとして特定されたルートデータおよびサブデータを前記キャッシュ用の記憶手段から解放させる、という構成が採用されてもよい。
また、上記のデータ処理装置において、前記第2階層の索引データは、前記キャッシュ用の記憶手段に記憶されている1以上のサブデータの各々に関し、前記キャッシュ用の記憶手段に記憶されているルートデータのうち当該サブデータと対応関係のあるルートデータの数を示し、前記データ特定手段は、前記第2階層の索引データにより対応関係のあるルートデータの数がゼロと示されるサブデータを、前記キャッシュ用の記憶手段から解放する対象のデータとして特定する、という構成が採用されてもよい。
また、上記のデータ処理装置において、前記第2階層の索引データは前記キャッシュ用の記憶手段に記憶されているサブデータを、読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方を特定可能に示し、前記データ特定手段は、前記第2階層の索引データが示すサブデータの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に関する予め定められた条件を満たすサブデータを前記キャッシュ用の記憶手段から解放する対象のデータとして特定する、という構成が採用されてもよい。
また、本発明は、他の一態様として、コンピュータに、予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させる処理と、前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第1階層の索引データと第2階層の索引データを含み、前記第2階層の索引データにより示されるデータの各々に関し当該データと前記第1階層の索引データにより示されるデータの少なくとも1つとの対応関係を示す索引データを取得する処理と、前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定する処理とを実行させるプログラムを提供する。
また、本発明は、他の一態様として、上記のプログラムを持続的に記録するコンピュータ読み取り可能な記録媒体を提供する。
また、本発明は、他の一態様として、データ処理装置が、予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させるステップと、前記データ処理装置が、前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第1階層の索引データと第2階層の索引データを含み、前記第2階層の索引データにより示されるデータの各々に関し当該データと前記第1階層の索引データにより示されるデータの少なくとも1つとの対応関係を示す索引データを取得するステップと、前記データ処理装置が、前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定するステップとを備える方法を提供する。
本発明によれば、キャッシュされたデータが階層構造を有した索引データにより管理される。その結果、キャッシュされたデータの中から読み出し対象や解放対象のデータを特定する処理が高速に、もしくは低処理負荷で行われ得る。
[第1実施形態]
以下、図を参照しながら本発明の一実施形態にかかるデータ処理システム1を説明する。データ処理システム1は階層構造を有した索引データを用いて、データサイズが様々に異なるファイルを扱う要求元の装置に対し、キャッシュを用いて高速にデータを出力する仕組みを備えたシステムである。
以下、図を参照しながら本発明の一実施形態にかかるデータ処理システム1を説明する。データ処理システム1は階層構造を有した索引データを用いて、データサイズが様々に異なるファイルを扱う要求元の装置に対し、キャッシュを用いて高速にデータを出力する仕組みを備えたシステムである。
図1は、データ処理システム1を実現するためのハードウェアの一例であるコンピュータ10のハードウェア構成を示した図である。コンピュータ10は一般的なコンピュータであり、プロセッサ101およびメモリ102を備えており、これらはバス109を介してデータの受け渡しを行う。
プロセッサ101は例えばCPU、GPU等であり、メモリ102に記憶されている各種プログラムに従い、各種データ処理を行うとともにコンピュータ10の他の構成部を制御する。メモリ102は、例えば、DRAM等の揮発性メモリ1021、SSD1022(Solid State Drive)、HDD1023を備えるが、これらの構成は任意に変更可能である。メモリ102は、プロセッサ101により実行される各種プログラムやプロセッサ101による処理において用いられる各種データを記憶するとともに、プロセッサ101による処理において一時的に生成されるデータを記憶するワークエリアとしても用いられる。なお、メモリ102を構成するSSD1022、HDD1023等は、コンピュータ10が備える入出力IF(Interface)(図示略)を介して、もしくは通信IF(図示略)およびネットワーク(図示略)を介して、コンピュータ10と通信可能に接続された外部の装置として構成されてもよい。
図2は、データ処理システム1の機能構成を示した図である。すなわち、図1に示されるコンピュータ10のプロセッサ101がメモリ102に記憶されている各種プログラムに従った処理を行うことにより、図2に示される構成部を備えるデータ処理システム1が実現される。
データ処理システム1は、機能構成部として、要求元装置11と、データ処理装置12と、第1記憶手段13と、第2記憶手段14を備える。要求元装置11は、例えばアプリケーションプログラムに従いコンピュータ10において実現される仮想的な装置であり、処理に必要なデータをデータ処理装置12に対し要求する。データ処理装置12は、要求元装置11から送信されてくるデータの要求に応じて、第1記憶手段13もしくは第2記憶手段14から要求されたデータ(以下、「要求データ」という)を取得し、要求元装置11に出力する装置である。
第1記憶手段13はキャッシュ用メモリとしての役割を果たす記憶手段であり、例えばSSD1022を用いてキャッシュ対象のデータを記憶する。第2記憶手段14はオリジナルストレージとしての役割を果たす記憶手段であり、例えばHDD1023を用いてオリジナルのデータを記憶する。
データ処理装置12は、索引データ記憶手段121と、記憶制御手段122と、索引データ取得手段123と、データ特定手段124と、要求データ取得手段125と、出力手段126を備える。
索引データ記憶手段121は、第1記憶手段13に記憶されているデータを示す索引データを記憶する。図3は、索引データの構成を示した図である。索引データは、第1階層の索引データと第2階層の索引データを含んでいる。
第1階層の索引データは、第1記憶手段13に記憶されているデータをファイルのレベルで管理するデータであり、ファイルに応じたデータレコードの集まりである。第1階層の索引データはデータフィールド「ファイル名」、「ファイル/ブロック」、「アドレス」、「シリアル番号」を有している。
データフィールド「ファイル名」はキャッシュされているデータがファイル単位のデータである場合は当該ファイルのファイル名を示すテキストデータを格納し、キャッシュされているデータがブロック単位のデータである場合は当該ブロックを含むファイルのファイル名を示すテキストデータを格納する。
データフィールド「ファイル/ブロック」は、キャッシュされているデータがファイル単位のデータである場合は「ファイル」というテキストデータを格納し、キャッシュされているデータがブロック単位のデータである場合は「ブロック」というテキストデータを格納する。
データフィールド「アドレス」は、キャッシュされているデータがファイル単位のデータである場合、第1記憶手段13において当該データが記憶されている記憶領域の先頭アドレスを格納する。従って、ブロック単位のデータに関するデータレコードのデータフィールド「アドレス」は空欄となる。
データフィールド「シリアル番号」は、キャッシュされているデータがブロック単位のデータである場合、第2階層の索引データにおいて当該ブロックに関するデータレコードを検索する際の検索範囲の開始位置を示す数値データを格納する。従って、ファイル単位のデータに関するデータレコードのデータフィールド「シリアル番号」は空欄となる。
第2階層の索引データは、第1記憶手段13に記憶されているブロックを管理するデータであり、ブロックに応じたデータレコードの集まりである。第2階層の索引データはデータフィールド「シリアル番号」、「ファイル名」、「ブロック番号」、「アドレス」を有している。
データフィールド「シリアル番号」は、第1記憶手段13においてキャッシュされているブロックを識別するシリアル番号を格納する。なお、第2階層の索引データにおいてデータレコードはシリアル番号の昇順で並んでおり、また、同じファイルに含まれるブロックに関するデータレコードは第2階層の索引データにおいて連続して配置されている。
データフィールド「ファイル名」は、キャッシュされているブロックを含むファイルのファイル名を示すテキストデータを格納する。データフィールド「ブロック番号」は、キャッシュされているブロックがファイル名により特定されるファイルにおいて何番目のブロックであるかを示すブロック番号を格納する。
データフィールド「アドレス」は、第1記憶手段13においてブロックが記憶されている記憶領域の先頭アドレスを格納する。
図2に戻り、データ処理装置12の機能構成の説明を続ける。データ処理装置12の記憶制御手段122は、要求データが第1記憶手段13にはキャッシュされておらず、第2記憶手段14から取得されて要求元装置11に出力された場合、第2記憶手段14から取得された要求データを第1記憶手段13に記憶させる。
索引データ取得手段123は、索引データ記憶手段121から索引データ(図3)を読み取ることにより取得し、データ特定手段124に引き渡す。データ特定手段124は索引データに基づき、要求元装置11からの要求に応じて、第1記憶手段13および第2記憶手段14のいずれの記憶手段からどのデータを読み出すかを特定する。
要求データ取得手段125は、データ特定手段124により特定されたデータ、すなわち要求データを、第1記憶手段13または第2記憶手段14から読み出すことにより取得する。出力手段126は要求データ取得手段125により取得された要求データを要求元装置11に出力する。以上がデータ処理システム1の構成である。
続いて、データ処理システム1の動作を説明する。図4は、データ処理システム1において要求元装置11によりデータの要求が行われた際にデータ処理装置12が行う処理のフローを示した図である。なお、図4および以下の説明において参照するフロー図においては、紙面の都合上、分岐処理(判断)のブロックに、JIS(Japanese Industrial Standards)に規格されている菱形に変えて六角形(準備)を用いている。
まず、データ処理装置12は要求元装置11より出力されたデータの要求を受け取る(ステップS101)。要求元装置11はデータの要求において、要求するデータ、すなわち要求データを例えば「(ファイル名),(開始ブロックのブロック番号),(終了ブロックのブロック番号)」というフォーマットで指定する。このフォーマットにおいて、(ファイル名)は要求元装置11が必要とするデータを含むファイルのファイル名を示し、(開始ブロックのブロック番号)および(終了ブロックのブロック番号)はそのファイルにおいて要求元装置11が必要とする一連のブロックの開始位置および終了位置をブロック番号により示す。なお、要求元装置11が要求データを指定する方法は、要求元装置11が必要とするブロックの範囲を特定可能なデータであれば、必ずしも上記のフォーマットに従っていなくてもよい。
データ処理装置12は要求元装置11からのデータの要求に応じて、まず、要求データのファイル名が第1階層の索引データ(図3の上側のテーブル)に登録されているか否かを判定する(ステップS102)。具体的には、データ特定手段124は、索引データ取得手段123を介して索引データ記憶手段121から第1階層の索引データを読み出し、データフィールド「ファイル名」に要求データのファイル名を格納しているデータレコードを検索する。
要求データのファイル名が第1階層の索引データに登録されている場合、第1階層の索引データからデータレコードが検索される(ステップS102;「Yes」)。その場合、データ特定手段124は続いて、検索されたデータレコードのデータフィールド「ファイル/ブロック」に「ファイル」および「ブロック」のいずれが格納されているかを判定する(ステップS103)。
データフィールド「ファイル/ブロック」に「ファイル」が格納されていた場合(ステップS103;「1」)、要求データはファイル単位で第1記憶手段13にキャッシュされていることになる。従って、データ特定手段124はデータフィールド「アドレス」からアドレスを読み出し、第1記憶手段13から読み出すべき要求データのアドレスとして要求データ取得手段125に引き渡す。
要求データ取得手段125はデータ特定手段124から引き渡されたアドレスに従い、第1記憶手段13から要求データを含むファイルを読み出し(ステップS104)、出力手段126に引き渡す。出力手段126は要求データ取得手段125から引き渡されたファイルを要求元装置11に出力する(ステップS105)。これにより、要求元装置11は必要なデータ(ブロック群)を含むファイルを取得することができる。
ステップS103の判定において、データフィールド「ファイル/ブロック」に「ブロック」が格納されていた場合(ステップS103;「2」)、データ処理装置12は要求データのブロック番号の全てが第2階層の索引データ(図3の下側のテーブル)に登録されているか否かを判定する(ステップS106)。
具体的には、データ特定手段124は、まず、ステップS102において第1階層の索引データから検索したデータレコードのデータフィールド「シリアル番号」からシリアル番号を読み出す。続いて、データ特定手段124は、索引データ取得手段123を介して索引データ記憶手段121から第2階層の索引データを読み出し、第2階層の索引データにおいてデータフィールド「シリアル番号」に、第1階層の索引データのデータレコードから読み出したシリアル番号を格納しているデータレコードを検索範囲の先頭のデータレコードとして特定する。続いて、データ特定手段124は、検索範囲の先頭のデータレコードと、それに続くデータレコードのうちデータフィールド「ファイル名」が先頭のデータレコードと同じである一連のデータレコードを検索範囲として、データフィールド「ブロック番号」に格納されているブロック番号が、要求データのブロック番号の範囲内のものを抽出する。
要求データのブロック番号が第2階層の索引データに登録されている場合、第2階層の索引データからデータレコードが抽出される。データ特定手段124は、要求データのブロック番号の全てに応じたデータレコードが第2階層の索引データから抽出された場合(ステップS106;「Yes」)、データ特定手段124は抽出されたデータレコードの各々のデータフィールド「アドレス」からアドレスを読み出し、第1記憶手段13から読み出すべき要求データのアドレス(またはアドレス群)として要求データ取得手段125に引き渡す。
要求データ取得手段125はデータ特定手段124から引き渡されたアドレス(またはアドレス群)に従い、第1記憶手段13から要求データのブロック(またはブロック群)を読み出し(ステップS107)、出力手段126に引き渡す。出力手段126は要求データ取得手段125から引き渡されたブロック(またはブロック群)を要求元装置11に出力する(ステップS105)。これにより、要求元装置11は必要なデータ(ブロックまたはブロック群)を取得することができる。
ステップS106の判定において、要求データのブロック番号に応じたデータレコードが第2階層の索引データから抽出されなかった場合、もしくは第2階層の索引データから抽出されたデータレコードが要求データのブロック番号の一部に応じたもののみであった場合(ステップS106;「No」)、データ特定手段124は要求データの全てを第1記憶手段13から取得することはできないと判定し、要求データのファイル名を、第2記憶手段14から読み出すべき要求データのファイル名として要求データ取得手段125に引き渡す。なお、データ特定手段124は、後述のステップS110においてキャッシュするブロックを特定可能とするために、要求データ取得手段125にファイル名を引き渡す際、要求データのブロック番号(開始ブロックおよび終了ブロックのブロック番号)を当該ファイル名に付加して引き渡す。
要求データ取得手段125はデータ特定手段124から引き渡されたファイル名に従い、第2記憶手段14から要求データのファイルを読み出す(ステップS108)。要求データ取得手段125は、第2記憶手段14から読み出したファイルを、出力手段126と記憶制御手段122の各々に引き渡す。なお、要求データ取得手段125は、記憶制御手段122にファイルを引き渡す際、要求データのブロック番号(開始ブロックおよび終了ブロックのブロック番号)を当該ファイルに付加して引き渡す。
出力手段126は要求データ取得手段125から引き渡されたファイルを要求元装置11に出力する(ステップS109)。これにより、要求元装置11は必要なデータ(ブロックまたはブロック群)を含むファイルを取得することができる。
一方、記憶制御手段122は、要求データ取得手段125かファイルを引き渡されると、そのファイルのサイズが予め定められた閾値を超えるか否かを判定する(ステップS110)。ファイルのサイズが閾値を超える場合(ステップS110;「Yes」)、記憶制御手段122は要求データ取得手段125から引き渡されたファイルを構成するブロック群のうち、ファイルに付加されている要求データのブロック番号により特定されるブロック(またはブロック群)を第1記憶手段13に記憶させる(ステップS111)。続いて、記憶制御手段122はステップS111において新たに第1記憶手段13にキャッシュしたブロック(またはブロック群)に関するデータを第1階層の索引データおよび第2階層の索引データに反映させる(ステップS112)。
ステップS110の判定において、ファイルのサイズが予め定められた閾値以下である場合(ステップS110;「No」)、記憶制御手段122は要求データ取得手段125から引き渡されたファイルを第1記憶手段13に記憶させる(ステップS113)。続いて、記憶制御手段122はステップSにおいて新たに第1記憶手段13にキャッシュしたファイルに関するデータを第1階層の索引データに反映させる(ステップS114)。
なお、ステップS111またはステップS113において新たなデータを第1記憶手段13に記憶させるにあたり、第1記憶手段13の空き容量が不足する場合、既に第1記憶手段13にキャッシュされているデータの一部を解放する処理(追い出し処理)が行われる。その場合、ステップS112またはステップS114において、当該追い出し処理に伴う索引データの更新も併せて行われる。なお、本実施形態において既知の追い出し処理のいずれが採用されてもよいため、追い出し処理の説明は省略する。
以上のように、データ処理システム1によれば、要求元装置11からの要求に応じて第2記憶手段14からファイルが読み出されて要求元装置11に出力された場合、当該ファイルのサイズが閾値以下であればファイル全体が第1記憶手段13にキャッシュされる一方、当該ファイルのサイズが閾値を超える場合はファイル全体ではなく、ファイルを構成するブロック群のうち要求元装置11が実際に必要としたブロック(またはブロック群)のみが第1記憶手段13にキャッシュされる。その結果、サイズの大きいファイルが第1記憶手段13の記憶容量の多くを占拠してしまい、キャッシュヒット率が低下する、という不都合が回避される。また、第1記憶手段13の記憶容量を超えたサイズのファイルが第2記憶手段14から読み出された場合においても、そのファイルのブロックの一部が第1記憶手段13にキャッシュされるため、大きいサイズのファイルがキャッシュされない、という不都合も回避される。
また、データ処理システム1によれば、上記のように第1記憶手段13にキャッシュされているデータの一部はファイル単位で管理されているため、全てのデータがブロック単位で管理される場合と比較し、索引データのサイズが小さくて済むと同時に、索引データから要求データに関するデータレコードを検索するために要する時間も短縮される。
なお、データ処理システム1においては、索引データからブロックに関するデータレコードの検索が行われる場合、第1階層の索引データからファイル名を検索キーとしたデータレコードの検索が行われ、第2階層の索引データからブロック番号を検索キーとしたデータレコードの検索が行われる。このように、ブロック単位でキャッシュされているデータに関しては第1記憶手段13からの読み出しのために検索が2回行われるが、1回目の検索において第1階層の索引データから検索されたデータレコードにより、2回目の検索における検索範囲が示されるため、例えば第2階層の索引データからファイル名およびブロック番号を検索キーとして1回でブロックに関するデータレコードを検索する場合と比較し、検索に要する時間が増加することはない。
[第1実施形態の変形例]
上述した第1実施形態は様々に変形することができる。以下にそれらの変形の例を示す。
上述した第1実施形態は様々に変形することができる。以下にそれらの変形の例を示す。
(1)上述した第1実施形態において説明に用いた索引データ(図3)の構成は一例であって、他の様々な構成が採用され得る。例えば、第2階層の索引データにおいてブロック毎にデータレコードを設ける構成に代えて、一連のブロック群毎にデータレコードを設けてもよい。そのような構成によれば、第2階層の索引データのデータレコード数が削減され、索引データのサイズが小さくなり望ましい。
(2)上述した第1実施形態においては、プログラムに従う処理を実行するコンピュータ10によって、図2に示す機能構成を備えるデータ処理装置12が実現される。これに代えて、いわゆる専用機によりデータ処理装置12が実現されてもよい。
(3)上述した第1実施形態においては、第1記憶手段にキャッシュされるデータは要求元装置11からの要求に応じて第2記憶手段から読み出されたデータとしているが、第1記憶手段にキャッシュされるデータは、例えば要求元装置11が将来要求する可能性が高いと推定されるデータとして第2記憶手段からプリフェッチしたデータであってもよい。また、第2記憶手段から読み出されたデータの全てを第1記憶手段にキャッシュするデータの対象とする必要はなく、例えばファイルの属性等に基づき、予め定められた条件を満たすデータのみを第1記憶手段にキャッシュする対象としてもよい。
(4)上述した第1実施形態においてデータ処理装置12の実現に用いられるプログラムは、ネットワークを介してコンピュータ10にダウンロードされる形態で提供されるほか、プログラムを持続的に記録するコンピュータ読み取り可能な記録媒体の形態で配布され、当該記録媒体からコンピュータ10により読み取られる形態で提供されてもよい。
[第2実施形態]
続いて、本発明の他の一実施形態にかかるデータ処理システム2を説明する。データ処理システム2は階層構造を有した索引データを用いて、階層関係を持つデータ群を扱う要求元の装置に対しキャッシュを用いて高速にデータを出力する仕組みを備えたシステムである。
続いて、本発明の他の一実施形態にかかるデータ処理システム2を説明する。データ処理システム2は階層構造を有した索引データを用いて、階層関係を持つデータ群を扱う要求元の装置に対しキャッシュを用いて高速にデータを出力する仕組みを備えたシステムである。
階層関係を持つデータ群としては、例えば動画編集用のアプリケーションプログラムにより使用されるプロジェクトファイル(第1階層のデータ)と、プロジェクトファイルの使用に伴い使用される多数のフッテージファイル(第2階層のデータ)がある。プロジェクトファイルは動画全体を管理するファイルであり、フッテージファイルは動画の各コマを構成する多数の静止画、効果音等のサウンド、音楽、テロップ表示される文章、それらの中間データ等を各々表すファイルである。
要求元装置11が動画編集用のアプリケーションプログラムに従いデータの要求を行う場合、まずプロジェクトファイルの要求が行われ、プロジェクトファイルのオープンに伴い、プロジェクトファイルにより指定される多数のフッテージファイルの要求が行われる。
本願において、動画編集用のアプリケーションプログラムにおけるプロジェクトファイルに例示される第1階層のデータをルートデータと呼び、フッテージファイルに例示される第2階層のデータをサブデータと呼ぶ。なお、ルートデータとサブデータの関係は、ルートデータの使用に伴いサブデータが使用される、という関係であれば如何なる関係であってもよい。以下、ルートデータと、当該ルートデータの使用に伴い使用されるサブデータとの関係を「ルートデータがサブデータを参照する」のように表現し、ルートデータを「参照元データ」、サブデータを「参照先データ」というものとする。
なお、ルートデータとサブデータのデータ単位はファイルに限られず、例えばブロック等の他の単位であってもよい。ただし、以下の説明においては、例として、データ処理システム2はファイル単位のルートデータおよびサブデータを扱うものとする。
データ処理システム2の構成および動作は、上述した第1実施形態にかかるデータ処理システム1の構成および動作と多くの点で共通している。従って、以下、データ処理システム2がデータ処理システム1と異なる点を中心に説明する。また、データ処理システム2が備える構成部のうちデータ処理システム1の構成部と共通または対応する構成部には、データ処理システム1において用いた符号を用いる。
データ処理システム2を実現するためのハードウェアの一例は、データ処理システム1と同様に図1に示す構成を備えるコンピュータ10である。
図5は、データ処理システム2の機能構成を示した図である。すなわち、図1に示されるコンピュータ10のプロセッサ101がメモリ102に記憶されている各種プログラムに従った処理を行うことにより、図5に示される構成部を備えるデータ処理システム2が実現される。
データ処理システム2が備える機能構成は、データ処理システム1が備える機能構成と比較し、データ特定手段124に替えてデータ特定手段224を備える点が異なっている。データ特定手段224は、読み出しデータ特定手段2241および解放データ特定手段2242を備える。読み出しデータ特定手段2241は、データ処理システム1におけるデータ特定手段124と同様に、要求元装置11からの要求に応じて第1記憶手段13または第2記憶手段14から読み出す対象のデータを特定する。
解放データ特定手段2242は、第1記憶手段13に新たなデータをキャッシュするための空き容量を確保するために、既にキャッシュされているデータの中から解放対象のデータを特定する。解放データ特定手段2242は、以下に説明する索引データを用いて低処理負荷で高速に解放対象のデータを特定する。
図6は、データ処理システム2における索引データ記憶手段121に、データ処理システム1における索引データ(図3)に代えて記憶されている索引データの構成を示した図である。データ処理システム2における索引データも、データ処理システム1における場合と同様に、第1階層の索引データと第2階層の索引データを含んでいる。
データ処理システム2における第1階層の索引データは、第1記憶手段13に記憶されているルートデータを管理するデータであり、ルートデータに応じたデータレコードの集まりである。第1階層の索引データはデータフィールド「ルートファイル名」、「アドレス」を有している。
データフィールド「ルートファイル名」はキャッシュされているルートデータのファイル名を示すテキストデータを格納する。データフィールド「アドレス」は、キャッシュされているルートデータが第1記憶手段13において記憶されている記憶領域の先頭アドレスを格納する。
データ処理システム2における第2階層の索引データは、第1記憶手段13に記憶されているサブデータを管理するデータであり、サブデータに応じたデータレコードの集まりである。第2階層の索引データはデータフィールド「サブファイル名」、「アドレス」、「参照元」を有している。
データフィールド「サブファイル名」はキャッシュされているサブデータのファイル名を示すテキストデータを格納する。データフィールド「アドレス」は、キャッシュされているサブデータが第1記憶手段13において記憶されている記憶領域の先頭アドレスを格納する。
データフィールド「参照元」は、サブデータの参照元のルートデータのファイル名を示すテキストデータを格納する。同じサブデータが複数のルートデータから参照される場合には、データフィールド「参照元」にはそれら複数のルートデータのファイル名を示すテキストデータが格納されることになる。
図7〜図10は、要求元装置11からルートデータまたはサブデータの要求が行われた際にデータ処理システム2のデータ処理装置12が行う処理のフローを示した図である。
まず、要求元装置11からデータの要求があると(ステップS201)、データ処理装置12のデータ特定手段224の読み出しデータ特定手段2241は、例えば要求されたデータのファイル名の拡張子に基づき、要求されたデータがルートデータであるかサブデータであるかを判定する(ステップS202)。
要求されたデータがルートデータである場合(ステップS202;「1」)、読み出しデータ特定手段2241は索引データ取得手段123を介して索引データ記憶手段121から第1階層の索引データ(図6の上側のテーブル)を読み出し、第1階層の索引データから、データフィールド「ルートファイル名」に要求されたルートデータのファイル名を格納するデータレコードを検索することにより、当該ルートデータが第1階層の索引データに登録されているか否かの判定を行う(ステップS203)。
要求されたルートデータが第1記憶手段13に記憶されていれば、第1階層の索引データに当該ルートデータに関するデータレコードが登録されているため、ステップS203の検索において当該データレコードが検索される(ステップS203;「Yes」)。その場合、読み出しデータ特定手段2241は検索されたデータレコードのデータフィールド「アドレス」に格納されているアドレスを要求データ取得手段125に引き渡す。要求データ取得手段125は引き渡されたアドレスに従い、第1記憶手段13から要求されたルートデータを読み出し(ステップS204)、読み出したルートデータを出力手段126に引き渡すとともに、記憶制御手段122に当該ルートデータのファイル名を通知する。
出力手段126は引き渡されたルートデータを要求元装置11に出力する(ステップS205)。一方、ルートデータのファイル名の通知を受けた記憶制御手段122は、索引データ記憶手段121に記憶されている第1階層の索引データにおける当該ルートデータに関するデータレコードを先頭に移動する(ステップS206)。このデータレコードの順序の変更処理は、後述する追い出し処理において、最近使用されたルートデータを優先的に第1記憶手段13に残すための処理である。
要求されたルートデータが第1記憶手段13に記憶されていなければ、第1階層の索引データに当該ルートデータに関するデータレコードは登録されていないため、ステップS203の検索は失敗する(ステップS203;「No」)。その場合、読み出しデータ特定手段2241は要求されたルートデータのファイル名を要求データ取得手段125に引き渡す。要求データ取得手段125は引き渡されたファイル名に従い、第2記憶手段14から要求されたルートデータを読み出し(ステップS207)、読み出したルートデータを出力手段126および記憶制御手段122に引き渡す。出力手段126は引き渡されたルートデータを要求元装置11に出力する(ステップS205)。
一方、ルートデータを引き渡された記憶制御手段122は、図8に示すフローに従い、引き渡されたルートデータを第1記憶手段13にキャッシュする処理を行う。まず、記憶制御手段122は第1記憶手段13の空き容量が、キャッシュ対象のルートデータのサイズ以上であるか否かを判定する(ステップS301)。第1記憶手段13の空き容量が、キャッシュ対象のルートデータのサイズ以上である場合(ステップS301;「Yes」)、記憶制御手段122は第1記憶手段13にルートデータを記憶させる(S302)。
第1記憶手段13の空き容量が、キャッシュ対象のルートデータのサイズより大きい場合(ステップS301;「No」)、記憶制御手段122は後述する追い出し処理(ステップS50)を行って第1記憶手段13に空き容量を確保した後、第1記憶手段13にルートデータを記憶させる(S302)。
ステップS302において第1記憶手段13にルートデータを記憶させた後、記憶制御手段122は、索引データ記憶手段121に記憶されている第1階層の索引データにおける当該ルートデータに関するデータレコードを先頭に追加する(ステップS303)。
図7のステップS202の判定において、要求されたデータがサブデータである場合(ステップS202;「2」)、読み出しデータ特定手段2241は索引データ取得手段123を介して索引データ記憶手段121から第2階層の索引データ(図6の下側のテーブル)を読み出し、第2階層の索引データから、データフィールド「サブファイル名」に要求されたサブデータのファイル名を格納するデータレコードを検索することにより、当該サブデータが第2階層の索引データに登録されているか否かの判定を行う(ステップS208)。
要求されたサブデータが第1記憶手段13に記憶されていれば、第2階層の索引データに当該サブデータに関するデータレコードが登録されているため、ステップS208の検索において当該データレコードが検索される(ステップS208;「Yes」)。その場合、読み出しデータ特定手段2241は検索されたデータレコードのデータフィールド「アドレス」に格納されているアドレスを要求データ取得手段125に引き渡す。要求データ取得手段125は引き渡されたアドレスに従い、第1記憶手段13から要求されたサブデータを読み出し(ステップS209)、読み出したサブデータを出力手段126に引き渡すとともに、記憶制御手段122に当該サブデータのファイル名を通知する。
出力手段126は引き渡されたサブデータを要求元装置11に出力する(ステップS210)。一方、サブデータのファイル名の通知を受けた記憶制御手段122は、索引データ記憶手段121に記憶されている第2階層の索引データにおける当該サブデータに関するデータレコードのデータフィールド「参照元」に当該サブデータの参照元のルートデータのファイル名を追加する(ステップS211)。なお、当該サブデータの参照元のルートデータのファイル名は、第1階層の索引データの先頭のデータレコードのデータフィールド「ルートファイル名」に格納されているファイル名である。
要求されたサブデータが第1記憶手段13に記憶されていなければ、第2階層の索引データに当該サブデータに関するデータレコードは登録されていないため、ステップS208の検索は失敗する(ステップS208;「No」)。その場合、読み出しデータ特定手段2241は要求されたサブデータのファイル名を要求データ取得手段125に引き渡す。要求データ取得手段125は引き渡されたファイル名に従い、第2記憶手段14から要求されたサブデータを読み出し(ステップS212)、読み出したルートデータを出力手段126および記憶制御手段122に引き渡す。出力手段126は引き渡されたサブデータを要求元装置11に出力する(ステップS210)。
一方、サブデータを引き渡された記憶制御手段122は、図9に示すフローに従い、引き渡されたサブデータを第1記憶手段13にキャッシュする処理を行う。図9に示すフローは、図8に示したルートデータを第1記憶手段13にキャッシュする処理と比較し、キャッシュ対象のデータがルートデータではなくサブデータであり、更新される索引データが第1階層の索引データではなく第2階層の索引データである点を除き、共通している。従って、図9のフローの説明を省略する。なお、図9のステップS401〜403の処理は、各々、図8のステップS301〜S303に対応する。
上述した処理により、データ処理装置12は要求元装置11に対し、要求されたルートデータおよびサブデータを出力するとともに、新たに第2記憶手段14から読み出して要求元装置11に出力したルートデータおよびサブデータを第1記憶手段13にキャッシュする。ただし、第1記憶手段13に新たにデータをキャッシュする際、第1記憶手段13の空き容量が不足する場合がある。その場合、既述のように、データ処理装置12は第1記憶手段13に空き容量を確保するための追い出し処理を行った後、データを第1記憶手段13に記憶させる。
データ処理システム2のデータ処理装置12は、追い出し処理において、第1記憶手段13にキャッシュされているルートデータのうち最後に使用されたタイミングが古いものから順に第1記憶手段13から解放するとともに、解放するルートデータのみを参照元とするサブファイルを全て、第1記憶手段13から解放する。
図10は、データ処理装置12が行う追い出し処理(図8および図9のステップS50)のフローを示した図である。記憶制御手段122は、新たにデータを第1記憶手段13に記憶させるにあたり空き容量の不足を検出すると(図8のステップS301;「No」または図9のステップS401;「No」)、データ特定手段224の解放データ特定手段2242にキャッシュしたいデータのサイズを通知する(ステップS501)。
この通知に応じて、解放データ特定手段2242は索引データ取得手段123を介して索引データ記憶手段121から第1階層の索引データを読み出し、第1階層の索引データの末尾のデータレコードを記憶制御手段122に引き渡す。記憶制御手段122は、引き渡されたデータレコードのデータフィールド「アドレス」に格納されるアドレスに従い、第1記憶手段13に記憶されているルートデータを削除する(ステップS502)。
続いて、記憶制御手段122は索引データ記憶手段121に記憶されている第1階層の索引データから末尾のデータレコード(解放データ特定手段2242から引き渡されたデータレコードと同じデータレコード)を削除する(ステップS503)。また、記憶制御手段122は、索引データ記憶手段121に記憶されている第2階層の索引データ(図6の下側のテーブル)から、データフィールド「参照元」に、第1記憶手段13から削除したルートデータのファイル名(第1階層の索引データから削除したデータレコードのデータフィールド「ルートファイル名」に格納されていたファイル名)を含むデータレコードを抽出し、抽出したデータレコードのデータフィールド「参照元」から当該ルートデータのファイル名を削除する(ステップS504)。
続いて、解放データ特定手段2242は、索引データ取得手段123を介して索引データ記憶手段121から第2階層の索引データを読み出し、第2階層の索引データからデータフィールド「参照元」が空であるデータレコード、すなわち、参照元のルートデータの数がゼロであるデータレコードを抽出し、抽出したデータレコードを記憶制御手段122に引き渡す。なお、参照元のルートデータの数がゼロであるデータレコードは、ステップS502におけるルートデータの第1記憶手段13からの削除に伴い、参照元のいずれのルートデータも第1記憶手段13に記憶されなくなったサブデータに関するデータレコードである。
記憶制御手段122は、解放データ特定手段2242から引き渡されたデータレコードの各々のデータフィールド「アドレス」に格納されるアドレスに従い、第1記憶手段13に記憶されているサブデータを削除する(ステップS505)。続いて、記憶制御手段122は索引データ記憶手段121に記憶されている第2階層の索引データから、第1記憶手段13から削除したサブデータに関するデータレコード(解放データ特定手段2242から引き渡されたデータレコードと同じデータレコード)を全て削除する(ステップS506)。
続いて、解放データ特定手段2242は第1記憶手段13の空き容量が新たなキャッシュ対象のデータのサイズ(ステップS501において通知されたサイズ)以上であるか否かを判定する(ステップS507)。空き容量が新たなキャッシュ対象のデータのサイズ未満であれば(ステップS507;「No」)、解放データ特定手段2242は処理をステップS502に戻す。その結果、新たなデータをキャッシュするために必要な空き容量が第1記憶手段13に確保されるまで、上述したステップS502〜S507の処理が繰り返されることになる。
空き容量が新たなキャッシュ対象のデータのサイズ以上であれば(ステップS507;「Yes」)、解放データ特定手段2242は追い出しの完了を記憶制御手段122に通知する(ステップS508)。
図11は、データ処理システム2において第1記憶手段13にキャッシュされるデータが上述した追い出し処理により変化する様子を模式的に示した図である。図11においては、説明のため、第1記憶手段13の記憶容量がデータ10個を記憶可能なサイズであるものとしている。また、図11において、「R」で始まる符号の付された丸印はルートデータを示し、「S」で始まる符号の付された丸印はサブデータを示し、互いに先で結ばれている丸印はルートデータがサブデータを参照していることを示している。また、図11において、右側ほど、第1階層の索引データおよび第2階層の索引データにおける対応するデータレコードが先頭側であることを示している。
図11(a)は、第1記憶手段13に何もデータがキャッシュされていない状態で、ルートデータ「R1」と、ルートデータ「R1」が参照するサブデータ「S1」「S2」「S3」が要求元装置11に出力された場合の第1記憶手段13の状態を示している。
図11(c)は、第1記憶手段13が図11(a)に示される状態において、図11(b)に示すルートデータ「R2」とサブデータ「S4」「S1」「S5」が要求元装置11に出力された後の第1記憶手段13の状態を示している。この時点ではまだ、第1記憶手段13に記憶されているデータの数が10個以下であるため、追い出し処理は生じていない。
第1記憶手段13が図11(c)に示される状態において、図11(d)に示すように、ルートデータ「R3」と、ルートデータ「R3」が参照するサブデータ「S6」「S5」「S7」「S8」がこの順で要求元装置11に出力されると、サブデータ「S8」を新たに第1記憶手段13に記憶する際に、図11(e)に示すように、既に第1記憶手段13には10個のデータがキャッシュされているため、追い出し処理が行われる。
追い出し処理において、図11(f)に示すように、まず、最後に使用されたタイミングが最も古いルートデータ「R1」が追い出し対象のルートデータとして特定される。続いて、追い出し対象となったルートデータ「R1」のみを参照元としていたサブデータ、すなわち、ルートデータ「R1」が削除された場合に、参照元のルートデータの数がゼロとなるサブデータであるサブデータ「S2」「S3」が追い出し対象のサブデータとして特定される。なお、追い出し対象のルートデータ「R1」はサブデータ「S1」も参照しているが、追い出し対象となっていないルートデータ「R2」もサブデータ「S1」を参照しているため、サブデータ「S1」は追い出し対象とはならない。
図11(g)は上記のように特定された追い出し対象のルートデータおよびサブデータが第1記憶手段13から削除された後、サブデータ「S8」が第1記憶手段13にキャッシュされた後の第1記憶手段13の状態を示している。
以上がデータ処理システム2におけるデータ処理装置12が行う処理の説明である。以上説明したように、データ処理システム2においては、新たにデータをキャッシュ用メモリに記憶させるための空き容量が不足している場合、既にキャッシュ用メモリに記憶されているデータのうち、最後に使用されたタイミングが最も古いルートデータと、当該ルートデータのみを参照元とする全てのサブデータがキャッシュ用メモリから削除される。その際、追い出し対象のデータの特定にあたり、サブデータに関しては最後に使用されたタイミングの前後や使用された頻度の多少(いわゆるエージング)は一切考慮されない。従って、例えば全てのデータに関しエージングの管理を行い、それらのエージングに基づき追い出し対象のデータを特定する従来の方法と比較し、エージングの管理が不要であるとともに、追い出し処理が低負荷で高速に行われる。
特に、動画編集用アプリケーションが扱うデータのように、1つのプロジェクトファイル(ルートデータ)が参照するフッテージファイル(サブデータ)の数が数百オーダーもしくはそれ以上となることも珍しくない。そのような場合、多数のフッテージファイルの各々に関しエージングの管理を行い、また追い出しの際にエージングを参照していると、それらの処理の負荷が大きくなる。データ処理システム2によれば、フッテージファイルのエージング管理および追い出し処理におけるエージングの参照は不要であるため、著しい処理負荷低減の効果が得られる。
[第2実施形態の変形例]
上述した第2実施形態は様々に変形することができる。以下にそれらの変形の例を示す。
上述した第2実施形態は様々に変形することができる。以下にそれらの変形の例を示す。
(1)上述した第2実施形態において説明に用いた索引データ(図6)の構成は一例であって、他の様々な構成が採用され得る。例えば、第2階層の索引データにデータフィールド「参照元」を設ける代わりに、第1階層の索引データにデータフィールド「参照先」を設け、第1階層の索引データにおいてルートデータとサブデータの参照関係を管理する構成としてもよい。
(2)上述した第2実施形態においては、プログラムに従う処理を実行するコンピュータ10によって、図5に示す機能構成を備えるデータ処理装置12が実現される。これに代えて、いわゆる専用機によりデータ処理装置12が実現されてもよい。
(3)上述した第2実施形態においては、第1記憶手段にキャッシュされるデータは要求元装置11からの要求に応じて第2記憶手段から読み出されたデータとしているが、第1記憶手段にキャッシュされるデータは、例えば要求元装置11が将来要求する可能性が高いと推定されるデータとして第2記憶手段からプリフェッチしたデータであってもよい。また、第2記憶手段から読み出されたデータの全てを第1記憶手段にキャッシュするデータの対象とする必要はなく、例えばファイルの属性等に基づき、予め定められた条件を満たすデータのみを第1記憶手段にキャッシュする対象としてもよい。
(4)上述した第2実施形態においては、サブデータのエージング管理は一切行われない構成が採用されている。その場合、エージング管理が不要である、という効果が得られる一方で、参照元のルートデータは頻繁に使用されるが、長らく使用されていないサブファイルが第1記憶手段13に残り続ける、という不都合が生じる場合がある。この不都合を回避するために、サブファイルのエージング管理を行い、エージングに基づくサブファイルの追い出し処理を併用する構成が採用されてもよい。
この変形例においては、まず、サブファイルのエージングを管理するために、図7のステップS211において、記憶制御手段122は要求データ取得手段125から通知されたサブデータ(第2記憶手段14から新たに読み出されたサブデータ)のファイル名に応じた第2階層の索引データのデータレコードを先頭に移動させる。そして、データ処理装置12は、図10に示した処理に代えて、図12に示す処理を行う。なお、図12において、図10に示した処理と同様の処理に関しては図10で用いたステップ番号と同じステップ番号が付されている。以下に、図12の処理が図10と異なる点を中心に説明する。
まず、この変形例において、データ処理装置12は、上述した第2実施形態における追い出しと同様の追い出し、すなわち、ルートデータの解放に伴い当該ルートデータのみを参照元とする全てのサブファイルを解放する方法による追い出しを連続して行った回数をカウントするためのカウンタを保持している。解放データ特定手段2242は、ステップS501において記憶制御手段122から空き容量不足の通知を受けると、まず、カウンタの値が所定の閾値kであるか否かを判定する(ステップS601)。
ステップS601の判定において、カウンタの値が閾値kでない場合(ステップS601;「No」)、ステップS501〜S506の処理(第2実施形態における場合と同様の追い出し処理)が行われた後、解放データ特定手段2242により、カウンタの値が1だけ増加される(ステップS602)。その後、ステップS507の判定が行われ、空き容量がまだ不足している場合には(ステップS507;「No」)、処理がステップS601に戻される。一方、空き容量が確保された場合には(ステップS507;「Yes」)、空き容量が確保された旨の通知が記憶制御手段122に対し行われて(ステップS508)、一連の追い出し処理は終了する。
ステップS601の判定において、カウンタの値が閾値kである場合(ステップS501;「Yes」)、解放データ特定手段2242は、索引データ取得手段123を介して索引データ記憶手段121から第2階層の索引データを読み出し、末尾から所定数のデータレコードを読み出して記憶制御手段122に引き渡す。
記憶制御手段122は、引き渡されたデータレコードの各々のデータフィールド「アドレス」に格納されるアドレスに従い、第1記憶手段13に記憶されているサブデータを削除する(ステップS603)。続いて、記憶制御手段122は索引データ記憶手段121に記憶されている第2階層の索引データから、第1記憶手段13から削除したサブデータに関するデータレコード(解放データ特定手段2242から引き渡されたデータレコードと同じデータレコード)を全て削除する(ステップS604)。続いて、解放データ特定手段2242は、カウンタの値を「0」にリセットする(ステップS605)。
その後、ステップS507の判定が行われ、空き容量がまだ不足している場合には(ステップS507;「No」)、処理がステップS601に戻される。一方、空き容量が確保された場合には(ステップS507;「Yes」)、空き容量が確保された旨の通知が記憶制御手段122に対し行われて(ステップS508)、一連の追い出し処理は終了する。
(5)上述した第2実施形態において、第1階層の索引データはエージング管理用のデータフィールドを持つことなく、データレコードの順序により最後にデータが利用されたタイミングの前後を示す。また、上述した第2実施形態の変形例(4)において、第2階層の索引データはエージング管理用のデータフィールドを持つことなく、データレコードの順序により最後にデータが利用されたタイミングの前後を示す。これに替えて、第1階層の索引データもしくは第2階層の索引データがエージング管理用のデータフィールドを持ち、当該データフィールドに、最後にデータが利用されたタイミングの前後を示す数値等のデータを格納することで、エージングの管理が行われる構成が採用されてもよい。
(6)上述した第2実施形態においては、解放対象のデータの選択において、最後に利用されたタイミングが古いデータほど優先的にキャッシュ用メモリから解放する構成が採用されている。キャッシュ用メモリから解放するデータを特定する規則はこれに限られず、データの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に基づき解放対象のデータを特定する他のいかなる規則が採用されてもよい。
(7)上述した第2実施形態においてデータ処理装置12の実現に用いられるプログラムは、ネットワークを介してコンピュータ10にダウンロードされる形態で提供されるほか、プログラムを持続的に記録するコンピュータ読み取り可能な記録媒体の形態で配布され、当該記録媒体からコンピュータ10により読み取られる形態で提供されてもよい。
1…データ処理システム、2…データ処理システム、10…コンピュータ、11…要求元装置、12…データ処理装置、13…第1記憶手段、14…第2記憶手段、101…プロセッサ、102…メモリ、109…バス、121…索引データ記憶手段、122…記憶制御手段、123…索引データ取得手段、124…データ特定手段、125…要求データ取得手段、126…出力手段、224…データ特定手段、1021…揮発性メモリ、1022…SSD、1023…HDD、2241…読み出しデータ特定手段、2242…解放データ特定手段
Claims (9)
- 予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させる記憶制御手段と、
前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第1階層の索引データと第2階層の索引データを含み、前記第2階層の索引データが示すデータの各々に関し当該データと前記第1階層の索引データが示すデータの少なくとも1つとの対応関係を示す索引データを取得する索引データ取得手段と、
前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定するデータ特定手段と
を備えるデータ処理装置。 - 前記記憶制御手段は、予め定められた条件を満たす一のファイルのサイズが予め定められた閾値以下である場合は当該一のファイルを前記キャッシュ用の記憶手段に記憶させ、当該一のファイルのサイズが当該閾値を超える場合は当該一のファイルを構成する複数のブロックのうち予め定められた条件を満たす1以上のブロックを前記キャッシュ用の記憶手段に記憶させ、
前記第1階層の索引データは前記キャッシュ用の記憶手段に記憶されているファイルおよび前記キャッシュ用の記憶手段に記憶されているブロックを含むファイルを、前記キャッシュ用の記憶手段にファイルおよびブロックのいずれが記憶されているかを区別可能に示し、
前記第2階層の索引データは前記キャッシュ用の記憶手段に記憶されているブロックを示し、
前記データ特定手段は、要求元の装置から、前記キャッシュ用の記憶手段とは異なる一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記第1階層の索引データに基づき当該一のブロックを含むファイルが前記キャッシュ用の記憶手段に記憶されていると判定した場合は当該ファイルを前記キャッシュ用の記憶手段から読み出す対象のデータとして特定し、前記第1階層の索引データおよび前記第2階層の索引データに基づき当該一のブロックが前記キャッシュ用の記憶手段に記憶されていると判定した場合は当該一のブロックを前記キャッシュ用の記憶手段から読み出す対象のデータとして特定し、
要求元の装置から前記一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記データ特定手段により当該一のブロックを含むファイルまたは当該一のブロックが前記キャッシュ用の記憶手段から読み出す対象のデータとして特定された場合には当該一のブロックを含むファイルまたは当該一のブロックを前記キャッシュ用の記憶手段から取得し、前記データ特定手段により当該一のブロックを含むファイルまたは当該一のブロックが前記キャッシュ用の記憶手段から読み出す対象のデータとして特定されなかった場合には当該一のブロックを含むファイルまたは当該一のブロックを前記一の記憶手段から取得する要求データ取得手段と、
要求元の装置から前記一の記憶手段に記憶されている一のブロックの要求が行われた場合に、前記要求データ取得手段により前記キャッシュ用の記憶手段または前記一の記憶手段から取得された当該一のブロックを含むファイルまたは当該一のブロックを当該要求元の装置に出力する出力手段と
を備える
請求項1に記載のデータ処理装置。 - 前記第1階層の索引データは、前記キャッシュ用の記憶手段に記憶されているブロックを含むファイルに関し、当該ファイルに含まれるブロックを示すデータが前記第2階層の索引データにおいて含まれる範囲を示し、
前記データ特定手段は、前記第1階層の索引データおよび前記第2階層の索引データに基づき一のファイルに含まれる一のブロックが前記キャッシュ用の記憶手段に記憶されているか否かを判定する際、前記第2階層の索引データにおいて当該一のファイルに含まれるブロックを示すデータが含まれる範囲を前記第1階層の索引データに基づき特定し、前記第2階層の索引データの当該特定した範囲内から当該一のブロックを示すデータを検索する
請求項2に記載のデータ処理装置。 - 前記記憶制御手段は、予め定められた条件を満たすデータであるルートデータと、当該ルートデータを利用する装置において当該ルートデータとともに用いられるデータであるサブデータを前記キャッシュ用の記憶手段に記憶させ、
前記第1階層の索引データは前記キャッシュ用の記憶手段に記憶されているルートデータを、読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方を特定可能に示し、
前記第2階層の索引データは前記キャッシュ用の記憶手段に記憶されているサブデータを示し、
前記データ特定手段は、前記第1階層の索引データが示すルートデータの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に関する予め定められた条件を満たすルートデータを前記キャッシュ用の記憶手段から解放する対象のデータとして特定し、
前記データ特定手段は、解放する対象のデータとして特定したルートデータと対応関係のあるサブデータを前記第2階層の索引データに基づき前記キャッシュ用の記憶手段から解放する対象のデータとして特定し、
前記記憶制御手段は、前記データ特定手段により解放する対象のデータとして特定されたルートデータおよびサブデータを前記キャッシュ用の記憶手段から解放させる
請求項1に記載のデータ処理装置。 - 前記第2階層の索引データは、前記キャッシュ用の記憶手段に記憶されている1以上のサブデータの各々に関し、前記キャッシュ用の記憶手段に記憶されているルートデータのうち当該サブデータと対応関係のあるルートデータの数を示し、
前記データ特定手段は、前記第2階層の索引データにより対応関係のあるルートデータの数がゼロと示されるサブデータを、前記キャッシュ用の記憶手段から解放する対象のデータとして特定する
請求項4に記載のデータ処理装置。 - 前記第2階層の索引データは前記キャッシュ用の記憶手段に記憶されているサブデータを、読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方を特定可能に示し、
前記データ特定手段は、前記第2階層の索引データが示すサブデータの読み出されたタイミングの前後および読み出された頻度の多少の少なくとも一方に関する予め定められた条件を満たすサブデータを前記キャッシュ用の記憶手段から解放する対象のデータとして特定する
請求項4または5に記載のデータ処理装置。 - コンピュータに、
予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させる処理と、
前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第1階層の索引データと第2階層の索引データを含み、前記第2階層の索引データにより示されるデータの各々に関し当該データと前記第1階層の索引データにより示されるデータの少なくとも1つとの対応関係を示す索引データを取得する処理と、
前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定する処理と
を実行させるプログラム。 - 請求項7に記載のプログラムを持続的に記録するコンピュータ読み取り可能な記録媒体。
- データ処理装置が、予め定められた条件を満たすデータをキャッシュ用の記憶手段に記憶させるステップと、
前記データ処理装置が、前記キャッシュ用の記憶手段に記憶されているデータを示す索引データであって、第1階層の索引データと第2階層の索引データを含み、前記第2階層の索引データにより示されるデータの各々に関し当該データと前記第1階層の索引データにより示されるデータの少なくとも1つとの対応関係を示す索引データを取得するステップと、
前記データ処理装置が、前記索引データに基づき前記キャッシュ用の記憶手段に記憶されているデータの中から読み出す対象のデータもしくは解放する対象のデータを特定するステップと
を備える方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013162540A JP2015032210A (ja) | 2013-08-05 | 2013-08-05 | キャッシュされたデータを管理するためのデータ処理装置、プログラム、記録媒体および方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013162540A JP2015032210A (ja) | 2013-08-05 | 2013-08-05 | キャッシュされたデータを管理するためのデータ処理装置、プログラム、記録媒体および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015032210A true JP2015032210A (ja) | 2015-02-16 |
Family
ID=52517455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013162540A Pending JP2015032210A (ja) | 2013-08-05 | 2013-08-05 | キャッシュされたデータを管理するためのデータ処理装置、プログラム、記録媒体および方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015032210A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017060674A (ja) * | 2015-09-25 | 2017-03-30 | 富士通デバイス株式会社 | 遊技機用記憶装置 |
-
2013
- 2013-08-05 JP JP2013162540A patent/JP2015032210A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017060674A (ja) * | 2015-09-25 | 2017-03-30 | 富士通デバイス株式会社 | 遊技機用記憶装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102266756B1 (ko) | Kvs 트리 | |
KR102462781B1 (ko) | Kvs 트리 데이터베이스 | |
TWI702506B (zh) | 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法 | |
US9355112B1 (en) | Optimizing compression based on data activity | |
CN110383261A (zh) | 用于多流存储装置的流选择 | |
JP5488225B2 (ja) | データ管理システム、データ管理方法、及びデータ管理プログラム | |
CN110268399A (zh) | 用于维护操作的合并树修改 | |
EP2541423B1 (en) | Replacement policy for resource container | |
JP6106028B2 (ja) | サーバ及びキャッシュ制御方法 | |
US11775480B2 (en) | Method and system for deleting obsolete files from a file system | |
WO2020215580A1 (zh) | 一种分布式全局数据去重方法和装置 | |
JP2009211496A (ja) | 画像形成装置及びアクセス制御方法 | |
JP6194875B2 (ja) | キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム | |
JP2015032210A (ja) | キャッシュされたデータを管理するためのデータ処理装置、プログラム、記録媒体および方法 | |
JP2010238138A (ja) | ストレージシステムおよびファイル階層管理方法 | |
US20120150924A1 (en) | Apparatus for supporting continuous read/write in asymmetric storage system and method thereof | |
JP2016085522A (ja) | 情報管理装置 | |
JP6390196B2 (ja) | ストレージシステム、ストレージ方法、および、プログラム | |
CN104375781B (zh) | 数据存取方法及装置 | |
CN110825652B (zh) | 淘汰磁盘块上的缓存数据的方法、装置及设备 | |
JP6112193B2 (ja) | アクセス制御プログラム、ディスク装置及びアクセス制御方法 | |
JP2009217688A (ja) | 情報処理システム、情報処理装置およびデータ管理方法 | |
US9165009B1 (en) | Lightweight appliance for content storage | |
JP2013118510A (ja) | 画像処理装置及び画像処理方法 | |
JP5697403B2 (ja) | 情報処理装置、情報処理方法及びプログラム |