(57)【要約】【課題】  計算資源が十分に使用できない状況において、データ最適化処理が中断されても適切にデータ最適化処理を再開する。【解決手段】  データ最適化処理が中断されても、中断時からのデータ更新によるデータの差分量により、最適化処理の適切な再開を判断するので、効率的に最適化処理を行い、応答性能のよいデータ記憶装置を提供する。【選択図】  図１０
2013003716.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶装置において、
データの断片化の最適化処理を行う最適化実行手段と、
前記最適化処理が中断していることを検出する検出手段と、
前記検出手段で検出された、中断している最適化処理を継続して再開可能か前記中断から更新されたデータの量により判定する判定手段と、を備え、
前記最適化実行手段は、前記判定手段により最適化処理が再開可能であると判定された場合に、データの最適化処理を再開することを特徴とするデータ記憶装置。
【請求項２】
前記データ記憶装置の状態を検知する検知手段を更に備え、
前記データ最適化実行手段は、前記検知手段で前記データ記憶装置の所定の状態を検知した場合に、データ最適化を中断することを特徴とする請求項１記載のデータ記憶装置。
【請求項３】
前記データ最適化実行手段は、前記検知手段で検知した前記データ記憶装置の状態に基づいて、データ最適化を計画し実行することを特徴とする請求項２記載のデータ記憶装置。
【請求項４】
前記検知手段が検知する状態は、給電状態、電気の残量、他装置との接続状態、データ状態、外部記憶部の状態、加速度センサ値、電波強度、通信状態、機器のリソース状態、外部からの指示、時刻のいずれか少なくとも１つであることを特徴とする請求項３記載のデータ記憶装置。
【請求項５】
前記データ最適化実行手段は、前記更新されたデータの量が少ない場合、前記中断前に最適化処理した部分に前記更新されたデータを適用して前記最適化処理した部分を更新することを特徴とする請求項１記載のデータ記憶装置。
【請求項６】
前記最適化処理を行うデータは、インデックスデータであることを特徴とする請求項１記載のデータ記憶装置。
【請求項７】
前記データ最適化実行手段は、最適化終了前の旧インデックスを残して最適化を実行し、最適化終了後に最適化した新インデックスと旧インデックスとを差し替えることを特徴とする請求項６記載のデータ記憶装置。
【請求項８】
前記最適化処理を行うデータは、サムネイル画像データであることを特徴とする請求項１記載のデータ記憶装置。
【請求項９】
データ記憶装置の制御方法において、
データの断片化の最適化処理を行う最適化実行工程と、
前記最適化処理が中断していることを検出する検出工程と、
前記検出工程で検出された、中断している最適化処理を継続して再開可能か前記中断から更新されたデータの量により判定する判定工程と、を備え、
前記最適化実行工程は、前記判定工程により最適化処理が再開可能であると判定された場合に、データの最適化処理を再開することを特徴とするデータ記憶装置の制御方法。
【請求項１０】
データ記憶装置の制御方法をコンピュータに実行させるプログラムであって、
データの断片化の最適化処理を行う最適化実行手順と、
前記最適化処理が中断していることを検出する検出手順と、
前記検出手順で検出された、中断している最適化処理を継続して再開可能か前記中断から更新されたデータの量により判定する判定手順と、を備え、
前記最適化実行手順は、前記判定手順により最適化処理が再開可能であると判定された場合に、データの最適化処理を再開することをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ最適化処理を行うデータ記憶装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年のフラッシュメモリ容量の増加に伴い、デジタルカメラやフォトフレーム、インクジェット複合機等、計算資源に制約がある省資源機器においても、数万枚から数十万枚のデータを保存できる記憶容量を持つようになっている。また、人名や地名をはじめとした多様な属性値が付与可能となっており、これらの属性値を用いて、多種多量のデータ検索を高速に行う利便性への要求が、省資源機器においても高まっている。
【０００３】
写真データの場合、日付や撮影パラメータ、位置情報であるＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）座標などの属性値が撮影時に付与され、お気に入り度合いや印刷指定等の属性値が再生時に付与される。これらの属性値を格納する枠組みとしては、Ｅｘｉｆ（Ｅｘｃｈａｎｇｅａｂｌｅ  ｉｍａｇｅ  ｆｉｌｅ  ｆｏｒｍａｔ）が代表的である。ユーザ所望のデータを検索する場合には、これらの属性値を用いることが有益である。しかしながら、データ、及び属性値が多種多量である場合に、各データに対して全走査を行って検索処理を行うことは照合のための計算量が膨大となり、応答時間の遅延を招いてしまう。
【０００４】
そこで、検索を高速に行えるようにするため、索引情報を納めたインデックスをあらかじめ構築しておき、検索時にインデックスを利用することで応答時間を短縮する手法が一般的である。しかし、常に正しい検索結果を得るためには、検索対象データが追加・更新された場合に、インデックスも同期して追加・更新する必要がある。このようなデータ更新が頻繁に発生し、インデックスの局所的な更新が続くとインデックス内部に断片化が発生する。即ち、使用されない空き領域が増えデータの格納位置が偏った検索処理に向かないアンバランスな構造が生まれる。この状況で検索を行うと、断片化の少ないインデックスを用いた場合に比べてデータアクセス量が増加し、装置全体の演算性能を低下させる。一般的には、この問題を解決するためにＲＡＭや主記憶部にキャッシュ機構等の中間層を設けて読み書き頻度を抑制する。しかし、省資源機器では計算資源の制約からキャッシュ機構が小容量であり、特に断片化が多いインデックスが装置全体の演算性能を低下させる影響度が大きくなる。
【０００５】
例えば、デジタルカメラ等においては、撮影した写真に対し、人名辞書等を参照して人名を事後登録する場合がある。このような属性値の事後登録を行う場合、構築済みのインデックスの一部を組み替えるためにインデックスの断片化を誘発する。結果としてデータアクセス時のキャッシュのヒット率が落ち、データベースファイルからのデータ読み出しが頻発しがちである。そのため、インデックスの断片化を解消する最適化処理を適切なタイミングで実施する必要がある。
【０００６】
従来、例えば特許文献１のように、画像データの伝送レートが所定値より下回ったときに画像データの最適化を行うものがある。また、特許文献２のように、機器の載置状態、電源供給状態、及び断片化率を勘案して、最適化を自動実行するものがあった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−８４４９９号公報
【特許文献２】特開２００５−２４２７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
さらに、データの最適化処理が中断された場合には、適切に処理を復帰して再開することが望まれる。最適化処理中断後の再開時には、途中まで最適化した最適化処理の結果を有効利用して継続するか、新たに最適化処理を開始するか判断して、適切に最適化処理を行うことが必要になる。
本発明は上記の問題に鑑みてなされたものであり、計算資源が確保できない状況を検知したときに、最適化処理が中断されても適切に最適化処理を実施することで、応答性能を向上させ、利便性を高めることを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係るデータ記憶装置は、以下の構成を備える。即ち、データの断片化の最適化処理を行う最適化実行手段と、前記最適化処理が中断していることを検出する検出手段と、前記検出手段で検出された、中断している最適化処理を継続して再開可能か前記中断から更新されたデータの量により判定する判定手段。前記最適化実行手段は、前記判定手段により最適化処理が再開可能であると判定された場合に、データの最適化処理を再開する。
【発明の効果】
【００１０】
本発明に依れば、データ最適化処理が中断されても、適切に最適化処理を再開するので、データの断片化を解消して応答性能を改善でき、ユーザの利便性が高まる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態によるデータ記憶装置の制御に係る主要部の構成を示す図である
【図２】本実施形態の効果が表れる例を端的に示す図である
【図３】本実施形態で用いるフラッシュメモリカードと、データ例としてＥｘｉｆの属性値の代表例と、インデックスをＢ−Ｔｒｅｅで構築した一例を示す図である
【図４】本実施形態によるデータ記憶装置の機能ブロック図である
【図５】本実施形態で用いる検索対象データの例と、検索対象データのインデックスの例を示す図である
【図６】本実施形態で用いる検索指示を記述したＳＱＬ文の例と、検索処理を実行したときの画面を示す図である
【図７】第１の実施形態の電源投入処理の流れを示すフローチャートである
【図８】第１の実施形態の検索処理の流れを示すフローチャートである
【図９】第１の実施形態のインデックス最適化処理が起動する流れを示すフローチャートである
【図１０】第１の実施形態のインデックス最適化処理の詳細の流れを示すフローチャートである
【発明を実施するための形態】
【００１２】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１３】
（第１の実施形態）  基本動作
図１は本実施形態を適用する装置を示す構成図である。データ記憶装置１０００はデータベース制御装置全体を示している。マイクロプロセッサＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１は，情報処理のための演算，論理判断等を行う。システムバス１０１０を介して，それらのバスに接続された各構成要素を制御する。読出し専用の固定メモリＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１００２は，本実施形態で実行される処理プログラム等の制御プログラムコードを記憶する。書き込み可能なＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１００３は，各構成要素からの各種データの一時記憶に用いられる。入力部１００４には，ユーザからの指示が入力される。電源部１００５は、データ記憶装置１０００に必要な電源を供給し、必要に応じて外部からの給電および充電に対応する。液晶パネル等の表示部１００９では，その表示部における画像情報の表示を表示コントローラ１００６で制御する。外部記憶部１００７では，各種データ及び画像情報が格納される。また，これらのデータを格納する記憶媒体としては，メモリカード，ＨＤＤ，ＤＶＤ−ＲＡＭなどを用いることができる。通信部１００８では，他の機器と接続することができる。
【００１４】
前記の各構成要素からなるデータ記憶装置１０００は，入力部１００４からの各種の入力及び通信部１００８から供給されるネットワーク経由の各種入力に応じて作動する。すなわち，入力部１００４からの入力及び通信部１００８からの入力が供給されると，まず，インタラプト信号がＣＰＵ１００１に送られる。そして，そのＣＰＵ１００１がＲＯＭ１００２，ＲＡＭ１００３，外部記憶部１００７に記憶してある各種の制御信号を読出し，それらの制御信号に従って，各種の制御が行われる。
【００１５】
また，本実施形態に係わるプログラムを格納した記憶媒体をシステムあるいは装置に供給し，そのシステムあるいは装置が，記憶媒体に格納されたプログラムコードを読み出し実行することによっても本実施形態は達成される。
【００１６】
図２は本実施形態が効果的な状況を示したＢ−Ｔｒｅｅ構造のインデックス例である。例えば、図２（ａ）に示した初期状態のインデックスに対して、人名「なし」から人名「太郎」に更新するように属性値の付与を行うと、図２（ｂ）に示すように更新前の属性値が格納されていた部分に空き領域が生まれる。検索対象のインデックスデータが分散してしまう。その結果アクセスデータ量が増え、検索及び更新時の応答性能が劣化してしまう。そこで適切なタイミングにおいてインデックス最適化処理を行い、図２（ｃ）に示すように無駄な空き領域を整理する。空き領域を整理することによってアクセスデータ量を減少させ、応答性能を向上させることができる。
【００１７】
図３（ａ）は外部記憶部１００７の例として、デジタルカメラ向けメモリカードの内部構成を示した図である。メモリカード３０００の内部には、写真や映像をはじめとした各種データがＤＣＦ（Ｄｅｓｉｇｎ  ｒｕｌｅ  ｆｏｒ  Ｃａｍｅｒａ  Ｆｉｌｅ  ｓｙｓｔｅｍ）に準拠した形で格納される（３００１）。また、写真や映像のデータにはデータの内容を説明する付加情報である属性値が付与されている。写真データの場合、日付や撮影パラメータ、ＧＰＳ座標などを格納する枠組みであるＥｘｉｆ（Ｅｘｃｈａｎｇｅａｂｌｅ  ｉｍａｇｅ  ｆｉｌｅ  ｆｏｒｍａｔ）が代表的な例である（３００２）。
図３（ｂ）に示したのはＥｘｉｆが持つ属性値の一例であり、日付、ＧＰＳ座標、地名、撮影機器メーカー、撮影機器機種名、人名等が格納されている。また、検索処理を高速に行えるようにするため、インデックス格納領域３００３に、索引情報を格納した各種インデックス（３００４〜３００７）をあらかじめ構築し、構築済みのインデックスを検索時に利用することで応答時間を短縮する手法が一般的である。インデックスはＢ−Ｔｒｅｅやハッシュ等の論理構造を持ち、検索キーとデータを紐付けておくことで高速な検索が可能になる。インデックス格納領域３００３には、日付のインデックス３００４、ＧＰＳ座標のインデックス３００５、地名のインデックス３００６、そして人名のインデックス３００７を保持している。各インデックス３００４〜３００７はデータベースファイル等の形式でインデックス格納領域３００３に永続化される。
図３（ｃ）は地名インデックス３００６が、Ｂ−Ｔｒｅｅの構造をもつ場合の図である。Ｂ−Ｔｒｅｅは階層構造を持つデータ構造であり、データの挿入、検索、及び削除が容易に行える特長を持つ。インデックスレコード３００８は地名からデータファイル名へのインデックスレコードを表している。
【００１８】
図４（ａ）はＲＡＭ１００３の構成を表す図である。おもにファイルキャッシュ４００１、及びデータベースキャッシュ４００２から構成される。ファイルキャッシュ４００１は、外部記憶部１００７に対するアクセス要求データをＲＡＭ１００３経由で受け渡しするようにして、データベースエンジン４００４や検索アプリケーション４００８からの要求に対して応答速度を向上させるために配置される。
図４（ｂ）は本実施形態に係る機能ブロック図である。機器状態変化検知部４００３は、給電状態やリソース状態、通信状態、加速度センサ等を監視して、状態変化に応じた機器の動作を決定する。データ記憶装置の検索処理を実行する検索アプリケーション４００８は、データ登録処理部４００９及びデータ検索処理部４０１０から構成される。データベースエンジン４００４は、検索処理を高速に行うために利用される。検索アプリケーション４００８は、データベースエンジン４００４を用いてデータ登録処理、およびデータ検索処理を行う。
【００１９】
図５（ａ）中のデータ表５００１は本実施形態に係る検索データベースの例である。各データを一意に区別するためのキーとしてＲｏｗＩＤを付与し、データベースファイル等に表形式で保存することを想定している。ＲｏｗＩＤは、データベースあるいはテーブルにおいて重複しないようにユニークに発番・付与される数値であり、一般的なデータベースエンジンで利用されている。
図５（ｂ）は本実施形態に係るインデックス格納領域３００３に格納されたインデックスの例である。各データに付与されたＥｘｉｆデータ３００２のインデックスを、インデックス登録処理部４００５によって予め生成しておくことで検索条件に合致するデータを素早く発見し、高速に検索処理を実行できる。例えば日付インデックス３００４は、日付とＲｏｗＩＤとを結びつけたデータマップを、人名インデックス３００７は人名とＲｏｗＩＤとを結びつけたデータマップを保持している。結び付けられたＲｏｗＩＤからデータを一意に特定し、検索結果を提示することが可能である。
【００２０】
データ記憶装置にはデータ検索機能に限らず、データ転送機能やデータ登録機能、撮像機能等さまざまな機能を搭載する場合がある。そのため、データ記憶装置は、機器の状態がどのようになっているかを検知し、適切な機能を選択して動作する。図７に示したのはデータ記憶装置１０００の電源投入からの動作を示すフローチャートの例である。電源が投入されるとステップＳ７００１において電源投入後の初期化処理を行う。続いてステップＳ７００２では機器の状態変化あるいはユーザからの入力等のイベントを待機し、検知すると次のステップへ続く。機器の状態変化としては給電状態の変化や通信状態等が考えられる。ステップＳ７００３では検知したイベントが何であるかを判別し、ステップＳ７００４に受け渡す。ステップＳ７００４で判別されたイベントに応じて適切な処理を行い、その結果がステップＳ７００５において表示部１００９に表示される。イベントの代表例としては、データ検索処理の起動命令、データ登録処理の起動命令が挙げられる。また、電源スイッチの入れ替え、給電状態の変化、他機器との接続状態の変化、外部記憶部状態変化、加速度変化、電波強度変化、通信状態変化、機器のリソース状態の変化、外部からの指示、時刻変化等も挙げられる。
【００２１】
ここでインデックスを用いたデータ検索処理、データ登録処理、断片化が起こる過程、および断片化を解消するインデックス最適化処理の詳細を述べる。
【００２２】
まず、データ検索処理について説明する。例えば、ユーザによってデータ検索処理を指示された場合は、図８に示したデータ検索処理のフローを呼び出し、データ検索処理部４０１０を起動する。データ検索処理部４０１０は検索条件入力部４０１１から受けた検索指示によって検索処理を実行し、検索結果表示制御部４０１２に検索処理の結果を返却する処理を行う。ステップＳ８００１において検索条件入力部４０１１からの検索条件入力を受け付ける。続いてステップＳ８００２において前記検索条件に基づき、データ検索処理部４０１０を発動させて検索処理を実行する。前記データ検索処理部４０１０は検索条件に応じてデータベースエンジン４００４に内包されるインデックス検索処理部４００６を呼び出し、検索条件に合致するデータを取得する。続いてステップＳ８００３において取得した結果が検索結果表示制御部４０１２によってユーザに提示される。
【００２３】
図６（ｂ）に示したのは、前記データ検索処理の検索結果を表示したユーザインターフェースの例である。領域６００１は検索条件表示領域である。ボックス６００２はユーザが指定した検索条件を選択するドロップダウンボックスである。また、領域６００３は検索条件に基づいて領域に検索結果をサムネイルで一覧表示する検索結果表示領域である。領域６００４は検索結果のページ数を提示する検索結果情報表示領域である。
図６（ａ）は検索条件入力部４０１１に対してユーザが与えた検索指示を表現したＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）文の例である。ユーザが指定した検索条件に応じて検索条件入力部４０１１等で生成する。生成したＳＱＬ文はインデックス検索処理部４００６によって解釈・実行され、データ検索処理が行われる。
【００２４】
続いてデータ登録機能について説明する。データ登録処理部４００９は、撮像、外部からのデータ複製等のイベント発生時に実行される。前記データ登録処理部４００９は、ステップＳ７００４から呼び出されて実行され、データ格納部３００１に登録、更新、または削除の要求を受けたデータを永続化する。また、前記データ登録処理部４００９はインデックス登録処理部４００５を呼び出して、検索処理の高速化のため、必要な各インデックス３００４〜３００７を更新し、インデックス格納領域３００３に格納する処理を行う。このように、ステップＳ７００４で、各種イベントに対応した処理をし、呼び出されたデータ登録処理部４００９、インデックス登録処理部４００５の処理の結果、インデックスの断片化が生じる。一般的にインデックスを永続化するインデックスファイルは、一定量のブロック単位で管理される。また、その論理構造はハッシュ、ＡＶＬ  Ｔｒｅｅ、Ｂ−Ｔｒｅｅ、ビットマップ等で表現される。
【００２５】
例えば、図２に示すのは人名インデックス３００７をＢ−Ｔｒｅｅ構造で表現したものである。一般的にＢ−Ｔｒｅｅ構造は大きく分けて、ルートノード、中間ノード、リーフノードの３要素からなる。ルートノードからリーフノードに向かって探索を行い、各ノードに格納されているデータを評価することにより、全走査を行うことなく検索条件に対応するデータを検索できる。
【００２６】
但し、前記データ登録処理部４００９で行われるインデックス登録処理において、インデックス内部の断片化に注意する必要がある。正しい検索結果を得るためには、検索対象となるデータが更新されるたびにインデックスも同様に更新する必要がある。図２（ａ）に示すインデックスでは人名「太郎」が付与されていない状態でインデックスが構築されている。このとき、人名認識処理等が行われて属性値が「なし」であるデータのいくつかに属性値「太郎」が付与されると、図２（ｂ）のようにＢ−Ｔｒｅｅ構造が更新される。属性値「太郎」の木が構築される。一方で高速に応答してインデックス更新するため、属性値「なし」の部分に生じた空き領域は詰めずに終了する。このような断片化が生じている状態で検索処理または登録処理を行うと、処理対象のデータが広く分散するため必要なデータアクセス量が増加することにより、キャッシュが枯渇してしまう。その結果、外部記憶部１００７へのアクセス要求が増えて処理終了が遅延してしまう。このような論理構造の断片化はＢ−Ｔｒｅｅに限らず、ハッシュ、ＡＶＬ  Ｔｒｅｅ、ビットマップ等においても発生する。また同様に、インデックスファイル自体についても、細かい更新を繰返すと単位ブロック内の空き領域の再利用率が落ちることによって断片化が発生する。特に書き換えが低速なフラッシュメモリを外部記憶部として利用する場合、既存領域の再利用よりも新規追記を優先する設計が行われることが多く、再利用率の低い更新が累積されて断片化の発生が顕著になる。断片化が多いインデックスファイルは読み出し量を多く必要とするため、機器のキャッシュメモリを枯渇させる原因となる。キャッシュメモリが枯渇すると外部記憶部へのアクセス頻度が高くなり、応答性能が劣化する。
【００２７】
そこで断片化を解消するため、定期的にデータ最適化処理、すなわちインデックス最適化処理を行う必要がある。しかしながら、構造の組み替え処理はデータ全体を俯瞰する必要があるため、件数に応じてコストが増加し、デジタルカメラ等の計算資源に制限がある環境では写真撮影等の他機能の性能を劣化させる場合がある。加えて外部記憶部にフラッシュメモリを用いた場合には、インデックス対象の属性値のような小容量の読込及び書込処理が低速である。そのため、インデックス最適化処理はさらなる処理負荷となる。よって、デジタルカメラ等においてはインデックスの断片化を許容して検索処理を続行せざるを得ない。
【００２８】
そこで、本実施形態においてはデータ最適化手段を用い、適切なタイミングでインデックス最適化処理を行う。機器状態変化検知部４００３を用いて機器の状態を監視し、写真撮影等の他機能への影響がない時間を検知してインデックス最適化部４００７を呼び出す。状態を監視する要素とはすなわち、給電状態、電池の残量、他機器との接続状態、データ状態、外部記憶部の状態、加速度センサ値、電波強度、通信状態、機器のリソース状態、外部からの指示、時刻等が挙げられる。前記状態検知結果のいずれかのうち、少なくとも一つを基にインデックス最適化処理を実施する。
【００２９】
図９に示したのは、充電状態およびインデックスの更新回数を監視することによってインデックス最適化処理を実施する処理フローの例である。充電が開始されるとインデックス最適化処理を行い、終了すると電源を切る。デジタルカメラ等においては充電処理が行われている間、充電が完了するまで利用されない可能性が高いためである。ステップＳ９００１において充電処理の開始を検知する。検知した場合にはステップＳ９００２においてインデックスの更新回数が所定以上かを確認し、インデックス最適化処理が必要か否かを判断する。インデックスの更新回数が多ければ、インデックスの断片化が大量に発生している可能性が高いからである。インデックス最適化処理が必要である場合にはステップＳ９００３においてインデックス最適化部４００７を起動し、そうでない場合には何もしない。そして最後にステップＳ９００４において機器終了処理を行い、機器の電源を切る。なお、インデックス最適化処理が必要か否かを判断する基準として、更新回数に限らず、機器の稼働時間や起動回数等を用いてもよい。インデックス更新頻度がほぼ一定である場合には、稼働時間を用いることにより、起動回数と更新回数の相関が高い場合には、起動回数を基準に用いることにより、それぞれ更新回数の計上コストを省略できる。
【００３０】
最適化処理の実施を行う他の例を挙げる。他機器と長く繋がっている接続状態のときに行っても良い。データの利用頻度が低い時に行っても良い。外部記憶部の状態が空き容量の少ないときに行っても良い。加速度センサ値の変化が少なく安定して置かれていると判断できる時に行っても良い。電波強度が強くて安定しているときに行っても良い。通信が長く繋がっているときや、通信量が少ない時に行っても良い。機器のリソース状態を監視し負荷の低い時、未使用時に行っても良い。利用者が就寝している夜中に行っても良い。もちろん、利用者が明示的に指示を行ったときでもよい。
【００３１】
ところで、小型のビューワやデジタルカメラ等において、充電を中断して持ち出し、利用するような状況では主機能の性能に影響を与えないようにするため、インデックス最適化処理を中断する必要がある。一方で中断状態のインデックスを放棄することは、インデックス最適化処理の効率上望ましくない。そのため、適切にデータ最適化中断と、中断後のデータ最適化再開を効率的に可能にする必要がある。
【００３２】
図４（ｃ）に示したのはインデックス最適化処理の中断および再開を行うインデックス最適化部４００７を詳細化した機能ブロック図の一例である。動作例について、図１０のインデックス最適化処理フローチャートを用いて詳細に説明する。
【００３３】
まずステップＳ１０００１において、インデックス最適化スケジュール生成部４０１３を実行する。ここでは給電状態やリソース状態を参照・分析することによって、機器状態に応じたインデックス最適化スケジューリングを行う。例えば、機器の電池残量が少なく残充電時間が長いと判断できる場合には、機器の利用される頻度が低くなると判断し、大規模なインデックス最適化処理をスケジューリングすることなどが考えられる。続いてインデックス最適化起動部４０１４においてスケジュールに対応したインデックス最適化処理を起動または再開する。
【００３４】
ステップＳ１０００２において、以前にインデックス最適化処理が中断されたか否かを検出する。中断を検出した場合には、ステップＳ１０００３に遷移して最適化処理を継続して再開することを試み、そうでない場合はステップＳ１０００６において最初から新たにインデックス作成を開始する。
【００３５】
ステップＳ１０００３では、検索対象のデータに中断時と比較してデータ更新による差分がどれくらいあるかを抽出する。ステップＳ１０００４では、インデックス最適化再開部４０１５を呼び出し、インデックス最適化処理の再開をする。抽出した差分量を基準に、インデックス最適化処理を継続して再開可能であるか否かを判定する。差分量の基準例としては、インデックスファイルサイズの変化、更新件数、中断時からの経過時間等を用いる。最適化処理の継続した再開可能の可否は、データの更新・削除の件数によって判断する。
【００３６】
データの更新・削除件数が少ない時には、インデックス最適化済みの部分に対応するデータに対する更新や削除を検出し、それらに対応するインデックスを更新して、続きの最適化を再開する。データの大半が更新または削除されたときには、中断時までに最適化済みのインデックスデータは使わずに、最初から最適化を実行することになる。
【００３７】
つまり、中断前に最適化済みの部分にデータの差分が存在した場合には、差分量が許容できる範囲内であれば最適化済みの部分に差分の適用を行うことになる。
【００３８】
ステップＳ１０００４の結果が真である場合にはＳ１０００５においてインデックス作成を再開し、偽である場合にはステップＳ１０００６に遷移して新インデックスを作成する。ステップＳ１０００５またはステップＳ１０００６からの流れを受け、ステップＳ１０００７からステップＳ１００１１のループにおいてインデックス作成を行う。
【００３９】
但し、ループ毎にステップＳ１０００７およびステップＳ１０００８において充電状態等の機器状態を監視し、インデックス最適化処理を中断すべきか否かを判断する。充電中断等によってインデックス最適化処理を中断すると判断された場合にはステップＳ１００１２においてインデックス最適化処理を中断する。中断方法としては、例えば最適化終了前の旧インデックスを残したまま新インデックス作成を行い、新インデックス構築完了後に、新旧インデックスを差し替える等の方法が考えられる。
【００４０】
図２（ｃ）は、前記インデックス最適化処理によって、図２（ｂ）に示すインデックスの断片化を解消した例である。空き領域となっていた部分が再構築によって埋まり、全体のノード数が減っている。なお、Ｂ−Ｔｒｅｅに限らず、ＡＶＬ  Ｔｒｅｅ等他の論理構造を持つインデックスや、インデックスファイル自体に対しても同様に、再利用が行われない空き領域を整理する等の最適化処理を行うことで断片化を解消する。このことにより、検索及び登録時に必要なデータ量が削減され、応答時間が向上する。
【００４１】
以上の処理により、インデックス最適化処理を、機器の状態に応じて任意のタイミングで中断および再開可能にする。新インデックス作成中には旧インデックスを上書きしないので突然の電源断や通信断絶時にも中断状態からの復帰が可能である。このことにより、機器の計算資源を効率よく利用してインデックスを最適化させることができる。その結果、データ検索時の応答速度が向上する。
【００４２】
本実施形態は、フラッシュメモリ等の更新速度が遅い環境を前提にしたが、ＲＡＭドライブ、ハードディスクドライブ、或いは速度改善されたフラッシュメモリ等、任意の環境においても応答時間の向上に効果がある。本実施形態の応用例として、他機器との接続時等において、インデックス最適化処理を他機器と分散、あるいは委託して実施することも、計算資源を有効利用する点で効果的である。
【００４３】
また、本実施形態はインデックス最適化処理に限らず、様々なユースケースにおいて適用できる。例えばファイルシステム最適化処理においても適用可能である。この場合、機器の状態検知結果を基に、適切なタイミングでデータ最適化処理の起動、中断及び再開処理を行う。その結果、主機能の性能を劣化させる事なく、外部記憶部１００７の空き領域や登録データの断片化を解消する。こうすることで、データ走査時間や書き込み時間遅延を改善する効果がある。
【００４４】
（第２の実施形態）
次に、本発明の第２の実施形態として、サムネイル画像構築処理、すなわち縮小画像の作成によって検索応答速度の向上と閲覧画質を両立する方法について詳細に説明する。本実施形態は第１の実施形態と同様の構成を持つ。本実施形態は画像検索等において、閲覧用の縮小画像（サムネイル）の作成を行う。こうすることで、データ閲覧時の画質と、検索時の応答性能とを両立させることを目的とする。
【００４５】
デジタルカメラ等の撮像機器においては、１０００万画素を超える高解像度な画像を記録することができる。一方で、このような高画質な画像を閲覧するにはデータ量に比例した計算量が必要となり、多量のデータを連続閲覧する等のユースケースにおいては計算負荷が大きくなる。そのため、Ｅｘｉｆ領域にはあらかじめ縮小画像が格納されており、こちらを優先的に表示することで高速な画像切り替えを可能にしている。しかしながら、表示デバイスの進歩によって表示解像度が向上し、従来のＥｘｉｆ規格の縮小画像を表示するだけでは十分な画質を確保できない場合がある。
【００４６】
そこで、本実施形態では、機器状態検知を行うことにより、適切なタイミングで撮像元画像とＥｘｉｆ縮小画像の中間解像度で縮小画像を構築しておき、閲覧時に優先的に閲覧することで画質と応答性能を両立する。
【００４７】
本実施形態も図１０に示したフローチャートの例において適用可能である。充電切断等、機器状態の変化を検知し、ステップＳ１００１２の中断処理を行う場合には、中間解像度縮小画像の作成進捗状況を保存しておく。次回の中間解像度縮小画像の作成開始時、ステップＳ１０００５において、進捗状況に応じて中間解像度縮小画像の作成を再開する。こうすることで中断時の状態を有効利用して中間解像度縮小画像の作成を円滑に実行できるし、検索時の応答性能と閲覧画質を両立することができる。
【００４８】
また、動画データのダイジェスト画像作成処理等においても適用可能である。本実施例と同様に機器の状態に応じて作成することで、主機能の性能を劣化させることなくデータ検索時の利便性を向上させる点で効果的である。
【００４９】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００５０】
ファイルキャッシュ  ４００１
データベースキャッシュ  ４００２
機器状態変化検知部  ４００３
データベースエンジン  ４００４
インデックス登録処理部  ４００５
インデックス検索処理部  ４００６
インデックス最適化部  ４００７
検索アプリケーション  ４００８
データ登録処理部  ４００９
データ検索処理部  ４０１０
検索条件入力部  ４０１１
検索結果表示制御部  ４０１２
インデックス最適化スケジュール生成部  ４０１３
インデックス最適化起動部  ４０１４
インデックス最適化再開部  ４０１５
【図１】
2013003716.tif 000003
【図２】
2013003716.tif 000004
【図３】
2013003716.tif 000005
【図４】
2013003716.tif 000006
【図５】
2013003716.tif 000007
【図６】
2013003716.tif 000008
【図７】
2013003716.tif 000009
【図８】
2013003716.tif 000010
【図９】
2013003716.tif 000011
【図１０】
2013003716.tif 000012