(58)【調査した分野】(Int.Cl.,DB名)
前記代替画像ファイルが前記記憶媒体から読み込まれた際に、当該代替画像ファイルを編集することによって、前記要求された画像ファイルを生成する生成手段を更に備えることを特徴とする請求項1に記載の画像管理装置。
前記タスク実行制御手段は、前記待機キュー内に同一の画像ファイルを対象とする複数の読み込みタスクが存在する場合には、それらの読み込みタスクを一つにまとめることを特徴とする請求項1に記載の画像管理装置。
前記タスク実行制御手段は、前記記憶媒体のシークに要する時間の特性、およびデータ転送に要する時間の特性から、前記待機キュー内の前記読込タスクの実行時間を算出し、
前記代替画像ファイルを読み込んだ方が前記待機キューに蓄積された前記読込タスクの実行時間が短くなる場合には、前記代替画像ファイルを読み込むように前記読込タスクを変換することを特徴とする請求項1に記載の画像管理装置。
【背景技術】
【0002】
近年、デジタルカメラ等で生成された画像ファイルをサーバに送信し、サーバ上で画像ファイルを管理する画像管理サービスが提供されている。多くの画像管理サービスは、インデックス表示用や携帯端末への配信用として、複数サイズのサムネイルをあらかじめ作成している。また、画像編集機能を有する画像管理サービスにおいては、ユーザからの指示に基づいて編集された画像ファイルを作成する。このように、画像管理サービスにおいては、オリジナルの画像ファイルだけでなく、サムネイルや編集された画像ファイル(以下、関連画像ファイルと呼ぶ)を作成し、保管している場合が多い。
【0003】
画像管理サービスのシステムは、画像ファイルを格納するコンテンツサーバ群から構成される。コンテンツサーバは多数の画像ファイルをディスク装置に記憶し、クライアント上のアプリケーションから要求された画像ファイルの読み込み処理や書き込み処理を行う。ディスク装置は、連続したデータ領域に対するアクセスであれば効率的に処理することができる。しかし、非連続なデータ領域に対するランダムなアクセスが行われると、シーク時間や回転待ち時間のため大幅に性能が低下してしまう。コンテンツサーバは、多数のクライアントから、複数の異なる画像ファイルに対する要求を次々と受け付けるため、ディスク装置に対してランダムなアクセスが多発し、性能低下を招く。さらに、近年のディスク装置はますます大容量化しているが、大容量になるほどアクセス対象となるデータ領域が広範囲となるため、このような性能低下がより顕著となる。
【0004】
ディスク装置に対する非効率なアクセスを最適化するための方法として、ディスク装置におけるデータ配置を考慮し、I/Oコマンドの実行順序を制御する技術が開示されている。
【0005】
例えば、特許文献1では、待機キューに蓄積されているI/Oコマンドを、連続したデータ領域をアクセスするように並び替えることで、I/Oコマンドの処理時間を短縮している。さらに、多重実行が可能なように並び替えることで、一つのディスク装置にアクセス待ちが発生しても、他のディスク装置にアクセスできるようにしている。
【0006】
また、特許文献2では、I/Oコマンドを直ちに実行できる状況であっても、積極的に待機キューに蓄積し、順序を並び替えて実行している。それによって、大量のデータにアクセスする場合のスループットを向上することができる。
【発明を実施するための形態】
【0016】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【0017】
<実施形態1>
本実施形態に係るシステムの構成例について、
図1のブロック図を用いて説明する。
【0018】
システムは、コンテンツサーバ101、クライアント102、ネットワーク115から構成される。クライアント102は、ネットワーク115を介してコンテンツサーバ101との通信が可能である。
図1ではコンテンツサーバ101、クライアント102の台数はそれぞれ1台としているが、この台数に限るものではない。
【0019】
コンテンツサーバ101は、画像ファイルを保管し、クライアント102に配信するための機能を提供する。コンテンツサーバ101は、CPU(Central Processing Unit)103、RAM(Random Access Memory)104、ROM(Read Only Memory)105、ネットワークインタフェース106、ディスク装置107を少なくとも備えている。
【0020】
CPU103は、コンテンツサーバ101を構成する各部の動作制御を行うと共に、コンテンツサーバ101が行うものとして後述する各種の処理を実行する主体となる。
【0021】
RAM104は、データや制御情報を一時的に格納するメモリであり、CPU103が各種の処理を実行する際に用いるワークエリアとなる。
【0022】
ROM105には、コンテンツサーバ101の固定の動作パラメータや動作プログラム等を格納される。
【0023】
ネットワークインタフェース106は、ネットワーク115に接続して通信するための機能を提供するものである。コンテンツサーバ101は、このネットワークインタフェース106によってクライアント102とデータの送受信を行うことができる。
【0024】
ディスク装置107は、円盤状の記憶媒体にデータを記憶する装置であり、データの読み書きを行うためのI/Oコマンドを受け付けるインタフェースを持つ。ディスク装置107は、例えば、ハードディスクドライブ(HDD)や光ディスクドライブである。ディスク装置107は、ネットワークを介して複数のコンテンツサーバ101で共有されていてもよい。ディスク装置107には、コンテンツサーバ101が行うものとして後述する各処理をCPU103に実行させるためのコンピュータプログラムやデータが格納されている。
【0025】
クライアント102では、画像ファイルを処理するアプリケーションが動作している。クライアント102は、CPU108、RAM109、ROM110、ネットワークインタフェース111、外部記憶装置112を少なくとも備えている。また、クライアント102の形態によっては、入力装置113、出力装置114を備えている。
【0026】
CPU108は、クライアント102を構成する各部の動作制御を行うと共に、クライアント102が行うものとして後述する各種の処理を実行する主体となる。
【0027】
RAM109は、データや制御情報を一時的に格納するメモリであり、CPU108が各種の処理を実行する際に用いるワークエリアとなる。
【0028】
ROM110には、クライアント102の固定の動作パラメータや動作プログラム等を格納される。
【0029】
ネットワークインタフェース111は、ネットワーク115に接続して通信するための機能を提供するものである。クライアント102は、このネットワークインタフェース111によってコンテンツサーバ101とデータの送受信を行うことができる。
【0030】
外部記憶装置112は、データを記憶する装置であり、データの読み書きを行うためのI/Oコマンドを受け付けるインタフェースを持つ。外部記憶装置112は、ハードディスクドライブ(HDD)、光ディスクドライブ、半導体記憶装置またはその他の記憶装置であってもよい。外部記憶装置112は、クライアント102が行うものとして後述する各処理をCPU108に実行させるためのコンピュータプログラムやデータが格納されている。
【0031】
入力装置113は、例えば、キーボードやマウス、タッチパネルである。出力装置114は、例えば、ディスプレイである。
【0032】
次に、コンテンツサーバ101およびクライアント102の機能構成例について、
図2のブロック図を用いて説明する。
【0033】
コンテンツサーバ101は、要求受付部201、要求実行制御部202、データ入出力部203で構成される。
【0034】
要求受付部201は、クライアント102が生成した、画像ファイルを取得するための要求を受け付ける。要求受付部201には、クライアント102から要求を受信するための要求受信手段204と、要求に対応した画像ファイルをクライアント102に送信するための画像送信手段205が含まれる。
【0035】
要求実行制御部202は、要求受付部201が受け付けたクライアント102からの要求の実行制御を行う。要求実行制御部202には、タスク並び替え部206、待機キュー207、ファイル情報管理部208、ディスク特性管理部209、画像編集部210が含まれる。待機キュー207は、要求受付部201が受け付けた要求に対応した画像ファイルの読込タスクを蓄積しておくために用いられる。タスク並び替え部206は、ディスク装置107へのアクセスができる限り連続したデータ領域に対して行われるように、待機キュー207に蓄積されている読込タスクを並び替える。タスクの順序が並び替わらなくても、待機キュー内の読込タスクの変換を行う。読込タスクの並び替えには、ファイル情報管理部208が管理するファイル情報、およびディスク特性管理部209が管理するディスク特性情報が用いられる。ファイル情報およびディスク特性情報については、
図4を用いて後述する。画像編集部210は、必要に応じて、ディスク装置107から読み込まれた画像ファイルの編集処理を行う。
【0036】
データ入出力部203は、要求実行制御部202から指示された読込タスクを、ディスク装置107が解釈可能なI/Oコマンドに変換して実行する。これによりディスク装置107から、画像ファイルを構成するデータが読み込まれる。
【0037】
クライアント102上では、画像ファイルを処理する様々なアプリケーション214が動作している。クライアント102は、アプリケーション214が必要とする画像ファイルをコンテンツサーバ101に要求するための要求生成部211を備える。要求生成部211は、コンテンツサーバ101に要求を送信するための要求送信部212と、要求した画像ファイルを受信するための画像受信部213を含む。
【0038】
図10は、コンテンツサーバ101がディスク装置107に記憶している画像ファイルの一例を示している。画像ファイル1001は、オリジナル画像であり、例えば、ユーザ等から受け取った画像である。画像ファイル1002は、オリジナル画像を半分のサイズに縮小した画像であり、例えば、サムネイル表示等に用いられる。画像ファイル1003は、オリジナル画像を90度回転させた画像であり、例えば、ユーザからの編集指示によって生成されたものである。このように、コンテンツサーバ101は、オリジナルの画像ファイルだけでなく、サムネイルや編集画像等の複数の関連画像ファイルをディスク装置107に記憶している。
【0039】
画像ファイル1002は、画像ファイル1001を縮小することで生成できる。そのため、ディスク装置107から画像ファイル1002を読み込みたい場合、画像ファイル1001は画像ファイル1002の代替画像ファイルとなりうる。また、画像ファイル1003は、−90度回転することでオリジナルの画像ファイル1001に戻すことができる。そのため、ディスク装置107から画像ファイル1001を読み込みたい場合、画像ファイル1003は画像ファイル1001の代替画像ファイルとなりうる。
【0040】
図3は、ファイル情報管理部208が管理するファイル情報の一例を示しており、画像ファイルごとの画像ファイルID301、編集履歴302、物理アドレス303を含んでいる。画像ファイルID301は、ディスク装置107に記憶されている画像ファイルを一意に特定するための識別子である。編集履歴302は、各画像ファイルに施された編集処理の履歴であり、オリジナル画像ファイルID304、画像処理内容305、その処理の可逆性情報306が含まれる。オリジナル画像ファイルID304は、編集処理される前のオリジナルファイルを示す画像ファイルIDである。可逆性情報306は、その処理と逆の処理によって、オリジナル画像に戻すことが可能であるか否かを表す。このような情報を含む編集履歴302に基づいて、上述のような各画像ファイル間の代替関係が判定できる。物理アドレス303は、その画像ファイルが記憶されているディスク装置107上の位置を表す情報である。
図3に示された例では、ディスクの先頭からのオフセット307と、画像ファイルのデータサイズ308によって位置を表しているが、他の情報によって位置を表してもよい。
【0041】
図4は、ディスク特性管理部209が管理するディスク装置107の特性情報の一例を示している。
図4(a)は、シークに要する時間の特性を示すグラフの一例である。このグラフの横軸はヘッドの移動距離、縦軸は予想されるシーク時間である。これに基づいて、任意のヘッド移動距離におけるシーク時間を算出できる。
図4(b)は、データ転送に要する時間の特性を示すグラフの一例である。このグラフの横軸はデータ転送量、縦軸は予想されるデータ転送時間である。これに基づいて、任意のデータ転送量におけるデータ転送時間を算出できる。これらの特性情報は、あらかじめ固定的な設定情報として与えられた値を用いてもよいし、データの入出力ごとにシーク時間とデータ転送時間を測定し、それをもとに算出された値を用いてもよい。このようなディスク特性情報の作成や更新については、公知の技術を用いて実現できるため、ここでは説明しない。
【0042】
図5は、クライアント102が画像ファイルを取得するためにコンテンツサーバ101に対して行う要求のメッセージ例を示す図である。
図5(a)は要求のリクエストメッセージ、
図5(b)は要求のレスポンスメッセージである。要求のメッセージは、HTTP(Hypertext Transfer Protocol)のプロトコルに従った構文によって構成される。リクエストメセージ501において、取得対象の画像ファイルはHTTPのパス部502によって指定される。また、リクエストに関するメタ情報はヘッダ部503に付加される。レスポンスメッセージ504では、ヘッダ部506に付加されたメタ情報とともに、要求した画像ファイル507が添付されている。
【0043】
次に、コンテンツサーバ101が行う処理について、同処理のフローチャートを示す
図6を用いて説明する。フローチャートは、CPUが制御プログラムを実行することにより実現される。
【0044】
ステップS601では、要求受信部204が、ディスク装置107に記憶されている画像ファイルの取得を要求するためのリクエストメッセージをクライアント102から受信する。そして、ステップS602で、要求に対応した読込タスクを生成し、待機キュー207に蓄積する。
【0045】
読込タスクをXML形式で表した一例を
図11に示す。読込タスクは、タスクID1101、対象ファイル1102、生成日時1103、関連要求情報1104、代替情報1105を含む。タスクID1101は、読込タスクを一意に特定するための識別子である。対象ファイル1102は、読込タスクが読み込む対象としている画像ファイルを表す。生成日時1103は、読込タスクが生成された日時を表す。関連要求情報1104は、その読込タスクによって読み込まれる画像ファイルを要求している、クライアント102からのリクエスト情報である。代替情報1105は、対象ファイルの代替として別のファイルを読み込む際に必要となる情報であり、代替ファイル情報1106、代替フラグ1107、必要編集処理情報1108を含む。代替ファイル情報1106は、対象ファイル1102の代替となる画像ファイルのファイルIDである。代替フラグ1107は、対象ファイルの代わりに代替ファイルの読み込みを実行するか否かを示すフラグである。必要編集処理情報1108は、代替ファイルから対象ファイルを生成するのに必要な編集処理を示している。ステップS602における読込タスク生成時には、代替情報1105は空の状態である。
【0046】
次に、ステップS603で、タスク並び替え部206が、ディスク装置107へのアクセスができる限り連続的に行われるように、待機キュー207内の読込タスクを並び替える。この際、対象ファイルの代わりに代替ファイルを読み込んだほうが効率的な場合には、代替ファイルの読み込むように読込タスクが変換される。この読込タスクの並び替え処理については、
図7を用いて後述する。
【0047】
続いて、ステップS604では、ステップS603で並び替えられた待機キュー207から、先頭に位置している読込タスクを取り出す。そして、データ入出力部203が、取り出された読込タスクが対象とする画像ファイルのデータを読み込むため、ディスク装置107にアクセスしてI/Oコマンドを実行する。
【0048】
ステップS605では、要求実行制御部202が、読み込まれた画像ファイルに対して画像編集が必要か否かを判定する。判定は、ステップS603において、代替ファイルへの読込タスクの変換が行われたか否かによって行われる。具体的には、読込タスクの代替フラグ1107の状態によって判定できる。画像編集が必要であると判定された場合には、ステップS606で、画像編集部210が編集処理を行うことによって、要求された画像ファイルを生成する。必要な編集処理は、読込タスクの必要編集処理情報1108に指定さている。
【0049】
最後に、ステップS607で、画像送信部205が、ステップS604でディスク装置107から読み込まれた画像ファイル、もしくはステップS606で生成された画像ファイルをクライアント102に送信する。送信するクライアント102は、読込タスクの関連要求情報1104から特定する。
【0050】
次に、ステップS603における読込タスクの並び替え処理について、同処理のフローチャートを示す
図7を用いて説明する。
【0051】
まず、ステップS701で、新たに待機キュー207に投入された読込タスクの対象ファイルと、待機キュー207から最後に取り出された読込タスクの対象ファイルとの間のシーク距離を算出する。最後に取り出された読込タスクとは、実行中の読込タスク、もしくは実行順序が確定している中で最後に順序づけられている読込タスクを示す。シーク距離は、ファイル情報管理部208が保持している各画像ファイルのディスク装置107上の位置を用いて算出される。新規の読込タスクの対象ファイルの開始位置と、最後に取り出された読込タスクの対象ファイルの終了位置の差がシーク距離となる。また、ステップS702で、ディスク特性管理部209が保持するシーク時間情報を参照することによって、ステップS701で算出されたシーク距離に対応するシーク時間を算出する。
【0052】
次に、ステップS703で、新規の読込タスクの対象ファイルの代わりとなる代替ファイルが存在するか否かを判定する。判定は、ファイル情報管理部208が保持する編集履歴302に基づいて行われる。代替ファイルが存在する場合はステップS704に進み、存在しない場合はステップS711に進む。
【0053】
ステップS704では、待機キュー207に蓄積されている全ての読込タスクを実行するのに要する総実行時間を算出する。各読込タスクの実行時間は、シーク時間にデータ転送時間を加算することよって算出する。データ転送時間は、対象ファイルのデータサイズと、ディスク特性管理部209が保持するデータ転送時間情報に基づいて算出する。
【0054】
続いて、ステップS705で、ステップS701と同様の方法により代替ファイルのシーク距離を算出する。そして、ステップS706で、ステップS702と同様の方法により代替ファイルのシーク時間を算出する。さらに、ステップS707で、対象ファイルの代わりに代替ファイルを読み込んだ場合の、待機キュー207に蓄積されている全ての読込タスクを実行するのに要する総実行時間を、ステップS704と同様の方法により算出する。
【0055】
ステップS708では、全ての代替ファイルに対して上記の処理を行ったかを判定し、残りがある場合にはステップS705からステップS707を繰り返す。
【0056】
次に、ステップS709では、ステップS704およびステップS707によって算出された総実行時間に基づいて、総実行時間を短縮することができる代替ファイルが存在するか否かを判定する。存在する場合にはステップS710に進み、存在しない場合にはステップS711に進む。ステップS710では、対象ファイルの代わりに代替ファイルを読み込むように、読込タスクを変換する。変換は、例えば、読込タスクの代替ファイル情報1106に代替ファイルIDを、代替フラグ1107にtrue(代替ファイルを読み込むことを示す)をセットすることによって行われる。
【0057】
最後に、ステップS711で、シーク時間が短くなるように、待機キュー207内の読込タスクを並び替える。ここで、代替ファイルを読み込むように変換された読込タスクに関しては、代替ファイルのシーク時間を見て並び替えが行われる。並び替えられた待機キュー207から読込タスクを順次取り出して実行することにより、ディスク装置107に対して連続的な(ディスク上で隣り合っているだけでなく、シーク距離が短いことを含む)アクセスを行うことができる。
【0058】
なお、読込タスクの並び替え処理に関しては様々な方法が考えられるため、上述の方法に限るものではなく、他の方法を用いて実現しても良い。
【0059】
また、上述の並び替え処理においては、待機キュー207内に蓄積された読込タスクの待機時間は考慮されていない。そのため、並び替えによって、ある読込タスクの実行が遅延し続ける可能性がある。これに対する対策としては、待機時間がある一定以上の場合は、実行順序確定扱いとしてそれ以上並び替えの対象とならないようにすることなどが考えられる。
【0060】
本実施形態においては、簡単のため、画像ファイルを構成するデータは、ディスク装置107上の連続したデータ領域に記憶されているものとして説明した。しかし、実際にはデータが分断され、非連続なデータ領域に記憶されている可能性がある。その場合、画像ファイルを構成するデータごとの配置を考慮してシーク時間を算出する必要がある。ディスク装置107へのアクセス効率化を考えると、単一のファイルを構成するデータが連続した状態で記憶されていることが望ましい。ただし、ファイルを構成するデータが連続した状態になるように配置することは公知の技術を用いて実現できるため、ここでは説明しない。
【0061】
以上のように、本実施形態のシステムによれば、待機キュー207内の読込タスクが、ディスク装置107上で連続的な順序となるように並び替えられる。そのため、ディスク装置におけるシーク時間を短縮することができ、効率的なアクセスが可能となる。
【0062】
<実施形態2>
実施形態1では、ステップS603において、待機キュー207に蓄積されている読込タスクの並び替え処理を行った。本実施形態では、ステップS603において、並び替え処理に加えてマージ処理も実施する例を説明する。マージ処理とは、複数の読込タスクを一つにまとめることを指す。これによって、ディスク装置107へのアクセスを減らすことができる。本実施形態は、基本的には実施形態1を前提としているため、以下では、実施形態1との差分について説明する。
【0063】
なお、本実施形態に係るシステム構成は、
図1に示す構成と同じである。
【0064】
読込タスクのマージ処理について、同処理のフローチャートを示す
図8を用いて説明する。フローチャートは、CPUが制御プログラムを実行することにより実現される。
【0065】
まず、ステップS801で、新たに待機キュー207に投入された読込タスクの対象ファイルのIDと、待機キュー207内の既存の読込タスクの対象ファイルのIDを比較する。そして、ステップS802で、IDが一致する画像ファイルを対象とする読込タスクが存在するか否かを判定する。存在する場合にはステップS807に進み、存在しない場合にはステップS803に進む。
【0066】
ステップS803では、新規の読込タスクの対象ファイルの代わりとなる代替ファイルが存在するか否かを判定する。判定は、ファイル情報管理部208が保持する編集履歴302に基づいて行われる。代替ファイルが存在する場合はステップS804に進む。
【0067】
ステップS804では、新たに待機キュー207に投入された読込タスクの代替ファイルのIDと、待機キュー207内の既存の読込タスクの対象ファイルのIDを比較する。そして、ステップS805で、IDが一致する画像ファイルを対象とする読込タスクが存在するか否かを判定する。存在する場合にはステップS806に進む。ステップS806では、対象ファイルの代わりに代替ファイルを読み込むように、読込タスクを変換する。変換は、例えば、読込タスクの代替ファイル情報1106に代替ファイルIDを、代替フラグ1107にtrue(代替ファイルを読み込むことを示す)をセットすることによって行われる。
【0068】
最後に、ステップS807で、待機キュー207内の既存の読込タスクに新規の読込タスクをマージする。マージは、例えば、既存の読込タスクの関連要求情報1104に、新規の読込タスクの読込要求情報1104に記載されている要求IDを追加することによって行われる。
【0069】
このように本実施形態では、ステップS603において、読込タスクの並び替え処理だけでなく、マージ処理も実施する。そのため、ディスク装置107へのアクセスをより一層軽減することが可能になる。
【0070】
<実施形態3>
実施形態1では、ディスク装置107から代替ファイルが読み込まれた場合に、対象ファイルを生成するための画像編集処理がコンテンツサーバ101において実施されていた。本実施形態では、画像編集処理をクライアント102において実施する例を説明する。
【0071】
本実施形態における、コンテンツサーバ101およびクライアント102の機能構成例を
図9に示す。画像編集処理を行う画像編集部901がクライアント102に備わっている。
【0072】
コンテンツサーバ101の画像送信部205がクライアント102に送信するレスポンスメッセージは、
図5(c)のようになる。ヘッダ部510に、添付された代替ファイル511に対して実行すべき編集処理の内容が含まれている。画像編集部901でこの編集処理を行うことによって、アプリケーション214が要求した画像ファイルが生成される。
【0073】
このように本実施形態では、代替ファイルが読み込まれた際に必要となる画像編集処理がクライアント102で実施される。そのため、コンテンツサーバ101においてCPU使用率が高い場合など、コンテンツサーバ101において画像編集処理を実施するのが適切ではない場合に有効となる。一方、代替ファイルが対象ファイルよりも大きいサイズの場合には、コンテンツサーバ101とクライアント102間のネットワーク転送量は増大することになる。
【0074】
<その他の実施形態>
以上、実施形態例を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体(記憶媒体)等としての実施態様をとることが可能である。具体的には、複数の機器(例えば、ホストコンピュータ、インタフェース機器、撮像装置、Webアプリケーション等)から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0075】
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコード(コンピュータプログラム)を記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。