(57)【要約】【課題】データの断片化を解消して検索の応答性を改善し、ユーザの利便性を向上させる。【解決手段】ＰＣ２００２は、ＰＣ２００２の状態とＤＳＣ２００１の状態とを検知し、検知結果に基づいて、ＰＣ２００２とＤＳＣ２００１との間におけるデータの最適化処理の分担計画を生成する。そしてＰＣ２００２は、分担計画に基づいて、データの最適化処理を実行する。【選択図】図２
2013218431.tif 000002
【特許請求の範囲】
【請求項１】
データの最適化処理を行うことが可能な他の最適化処理装置の状態と当該最適化処理装置の状態とを検知する検知手段と、
前記検知手段による検知結果に基づいて、前記他の最適化処理装置と当該最適化処理装置との間におけるデータの最適化処理の分担計画を生成する生成手段と、
前記分担計画に基づいて、データの最適化処理を実行する最適化手段とを有することを特徴とする最適化処理装置。
【請求項２】
前記最適化手段によるデータの最適化処理を再開可能な状態で中断する中断手段を更に有し、
前記最適化手段は、前記中断手段により中断された状態からデータの最適化処理を再開することを特徴とする請求項１に記載の最適化処理装置。
【請求項３】
前記最適化手段は、インデックスの最適化処理及びファイルシステムにおけるファイル配置の最適化処理のうちの少なくとも何れか一方を実行することを特徴とする請求項１又は２に記載の最適化処理装置。
【請求項４】
前記最適化手段は、前記他の最適化処理装置においてデータの最適化処理が中断された場合であっても、前記分担計画に基づき当該最適化処理装置においてデータの最適化処理が続行可能であると判断される場合には、当該最適化処理装置においてデータの最適化処理を続行することを特徴とする請求項１乃至３の何れか１項に記載の最適化処理装置。
【請求項５】
前記最適化手段は、前記中断手段によりデータの最適化処理が中断された状態におけるデータ更新を、データの最適化処理が中断された領域とは別の領域において行うことを特徴とする請求項２に記載の最適化処理装置。
【請求項６】
前記最適化手段は、前記別の領域に対するデータの最適化処理を、データの最適化処理が中断された領域とは独立して行うことを特徴とする請求項５に記載の最適化処理装置。
【請求項７】
前記他の最適化処理装置におけるデータの訂番と当該最適化処理装置におけるデータの訂番とに基づいて、前記他の最適化処理装置との間でデータを同期させることを特徴とする請求項１乃至６の何れか１項に記載の最適化処理装置。
【請求項８】
前記他の最適化処理装置におけるデータの最適化処理の進捗度と当該最適化処理装置におけるデータの最適化処理の進捗度とに基づいて、前記他の最適化処理装置との間でデータを同期させることを特徴とする請求項１乃至６の何れか１項に記載の最適化処理装置。
【請求項９】
前記検知手段は、前記他の最適化処理装置及び当該最適化処理装置における、給電状態、電力の残量、データ状態、外部記憶部の状態、加速度センサ値、電波強度、通信状態、リソース状態、外部からの指示、及び、時刻のうちの少なくとも何れか一つを検知することを特徴とする請求項１乃至８の何れか１項に記載の最適化処理装置。
【請求項１０】
データの更新回数、起動回数、及び、外部からの指示のうちの少なくとも何れか一つに応じて、前記最適化手段を起動させる起動手段を更に有することを特徴とする請求項１乃至９の何れか１項に記載の最適化処理装置。
【請求項１１】
前記分担計画に基づき、前記他の最適化処理装置とともにデータの最適化処理が続行可能と判断される場合、前記最適化手段におけるデータの最適化処理の結果及び進捗度のうちの少なくとも何れか一つを、他の最適化処理装置と同期させることを特徴とする請求項１乃至１０の何れか１項に記載の最適化処理装置。
【請求項１２】
前記分担計画に基づき、前記他の最適化処理装置とともにデータの最適化処理が続行可能であると判断される場合、前記他の最適化処理装置と当該最適化処理装置との状態を比較することにより、前記他の最適化処理装置においてデータの最適化処理を続行するか、当該最適化処理装置においてデータの最適化処理を続行するかを決定することを特徴とする請求項１乃至１１の何れか１項に記載の最適化処理装置。
【請求項１３】
最適化処理装置によって実行される最適化処理方法であって、
データの最適化処理を行うことが可能な他の最適化処理装置の状態と当該最適化処理装置の状態とを検知する検知ステップと、
前記検知ステップによる検知結果に基づいて、前記他の最適化処理装置と当該最適化処理装置との間におけるデータの最適化処理の分担計画を生成する生成ステップと、
前記分担計画に基づいて、データの最適化処理を実行する最適化ステップとを有することを特徴とする最適化処理方法。
【請求項１４】
データの最適化処理を行うことが可能な他の最適化処理装置の状態と当該最適化処理装置の状態とを検知する検知ステップと、
前記検知ステップによる検知結果に基づいて、前記他の最適化処理装置と当該最適化処理装置との間におけるデータの最適化処理の分担計画を生成する生成ステップと、
前記分担計画に基づいて、データの最適化処理を実行する最適化ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの最適化処理の技術に関するものである。
【背景技術】
【０００２】
近年のフラッシュメモリ容量の増加に伴い、デジタルスチルカメラ、フォトフレーム又はインクジェット複合機等、計算資源に制約がある省資源機器においても、数万枚から数十万枚の画像データを保存できる記憶容量を持つようになっている。また、認識技術等の向上によって、人名や地名をはじめとした多様な属性値を画像データに付与することが可能となっており、これらの属性値を用いて、多種多量の画像データを対象として検索を高速に行う必要性が省資源機器においても高まっている。例えば、写真の画像データである場合、日付、撮影パラメータ及び位置情報であるＧＰＳ（Global Positioning System）座標等の属性値が撮影時に付与されるほか、お気に入り度合いや印刷指定等の属性値が再生時に付与される。これらの属性値を画像データに付与する枠組みとしては、Ｅｘｉｆ（Exchangeable image file format）を用いる方法が代表的である。ユーザが所望の画像データを検索する場合には、これらの属性値を用いることが有益である。しかしながら、画像データ及び属性値が多種多量である場合、各画像データに対して全走査を行って検索を行うことは計算量が膨大となり、応答時間の遅延を招いてしまう。
【０００３】
そこで、検索を高速に行えるようにするためにインデックスを予め構築しておき、検索時にインデックスを利用することで応答時間を短縮する手法が一般的である。しかし、常に正しい検索結果を得るためには、検索対象の画像データの追加及び更新をインデックスにも同期させる必要がある。このように検索対象の画像データの追加及び更新が頻繁に発生し、インデックスの局所的な更新が続くと、インデックス内部に断片化が発生する。即ち、使用されない空き領域や検索に向かないアンバランスな構造がインデックス内部に生じる。この状況で画像データの検索を行うと、断片化の少ないインデックスを用いた場合に比べてデータアクセス量が増加し、装置全体の演算性能を低下させてしまう。
【０００４】
一般的には、この問題を解決するためにＲＡＭや主記憶部にキャッシュ機構等の中間層を設けて読み書き頻度を抑制するが、省資源機器では計算資源の制約からキャッシュ機構が小容量であり、抑制効果を得ることは難しい。例えばデジタルスチルカメラ等においては、撮影した写真に対し、人名辞書等を参照して人名を事後登録する場合がある。このような属性値の事後更新を行う場合、構築済みのインデックスの一部を組み替えるためにインデックスの断片化を誘発する。インデックスが断片化したデータベースファイルの容量は肥大化するため、キャッシュ容量が逼迫する。その結果、データアクセス時のキャッシュヒット率が落ち、データベースファイルからのデータ読み出しが頻発しがちである。そのため、インデックスの断片化を解消するための最適化処理を適切なタイミングで実施する必要がある。
【０００５】
従来、インデックスやデータの最適化処理に着眼した検索手法として、例えば特許文献１において、最適化処理時にデータ構造、インデックス及びバッファ等の性能チューニングを行う手法が開示されている。また特許文献２には、最適化対象データを複製して、複製物に対して最適化が可能な部分を抽出してインデックスの最適化処理を行い、書き戻した上で差分の同期を行う手法が開示されている。さらに特許文献３には、断片化が一定以上になった場合、電力が十分且つスタンバイ状態のときに最適化処理を行う手法が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−２５１５号公報
【特許文献２】特開２００７−２６０６２号公報
【特許文献３】特開２００７−７２６７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術は、計算資源が限定される省資源機器において完遂させることが困難である。なぜなら、インデックスの最適化処理には一定量の処理時間を要するためである。加えて、デジタルスチルカメラやフォトビューワ等の情報検索装置においては、給電が切断されることや、ユーザの操作による割り込みがあるため、安定してインデックスの最適化処理を行うことが困難である。
【０００８】
そこで、本発明の目的は、データの断片化を解消して検索の応答性を改善し、ユーザの利便性を向上させることにある。
【課題を解決するための手段】
【０００９】
本発明の最適化処理装置は、データの最適化処理を行うことが可能な他の最適化処理装置の状態と当該最適化処理装置の状態とを検知する検知手段と、前記検知手段による検知結果に基づいて、前記他の最適化処理装置と当該最適化処理装置との間におけるデータの最適化処理の分担計画を生成する生成手段と、前記分担計画に基づいて、データの最適化処理を実行する最適化手段とを有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、データの断片化を解消して検索の応答性を改善することができ、ユーザの利便性を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係るデータベース制御システムに適用されるデータ検索装置の構成を示す図である。
【図２】本発明の第１の実施形態に係るデータベース制御システムによるインデックスの最適化処理の概略を説明するための図である。
【図３】外部記憶部における内部構成、画像データに属性値が付与された状態、及び、Ｂ−Ｔｒｅｅの構造を示す図である。
【図４】データベースの例、及び、インデックス格納領域に格納されるインデックスの例を示す図である。
【図５】Ｂ−Ｔｒｅｅ構造のインデックスの例を示す図である。
【図６】ＲＡＭの構成、及び、データ検索装置の機能構成を示す図である。
【図７】検索条件を表現したＳＱＬ文の例、及び、画像データの検索結果を表示したユーザインタフェースの例を示す図である。
【図８】電源投入後におけるデータ検索装置の処理を示すフローチャートである。
【図９】ユーザによって画像データ検索が指示された場合におけるデータ検索装置の処理を示すフローチャートである。
【図１０】インデックスの最適化処理を示すフローチャートである。
【図１１】インデックスの最適化処理の詳細を示すフローチャートである。
【図１２】インデックスの最適化処理の完了待ち処理の詳細を示すフローチャートである。
【図１３】ＤＳＣの電力が安定している場合に、ＰＣにインデックスの最適化処理を委託した後も、ＤＳＣにおいて並行してインデックスの最適化処理を実行させる処理を説明するための図である。
【図１４】本発明の第２の実施形態に係るデータベース制御システムの構成及び動作を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１３】
先ず、本発明の第１の実施形態について説明する。本発明の第１の実施形態に係るデータベース制御システムは、少なくとも２台のデータ検索装置によって構成される。図１は、第１の実施形態に係るデータベース制御システムに適用されるデータ検索装置１０００の構成を示す図である。
【００１４】
図１において、ＣＰＵ（Central Processing Unit）１００１は、情報処理のための演算や論理判断等を行う。ＣＰＵ１００１は、システムバス１０１０を介して、それらのバスに接続された各構成要素を制御する。読出し専用メモリであるＲＯＭ（Read Only Memory）１００２は、本実施形態で実行される処理プログラム等の制御プログラムコードを記憶する。書き込み可能なメモリであるＲＡＭ（Random Access Memory）１００３は、各構成要素からの各種データの一時記憶に用いられる。入力部１００４は、ボタン、タッチパネル、キーボード又はマウス等であり、ユーザからの指示が入力される。電源部１００５は、データ検索装置１０００に必要な電源を供給し、必要に応じて外部からの給電及び充電に対応する。表示部１００９は液晶パネル等である。表示コントローラ１００６は、表示部１００９における画像データの表示を制御する。外部記憶部１００７は、画像データ等の各種データを格納する。外部記憶部１００７としては、メモリカード、ＨＤＤ又はＤＶＤ−ＲＡＭ等を用いることができる。通信部１００８は、ネットワークコントローラ等であり、他のデータ検索装置との接続を制御する。
【００１５】
上述した各構成要素から成るデータ検索装置１０００は、入力部１００４から入力される情報、及び、ネットワークを経由して通信部１００８から入力される情報に応じて動作する。即ち、入力部１００４又は通信部１００８から情報が入力されると、先ずインタラプト信号がＣＰＵ１００１に送信される。そしてＣＰＵ１００１は、ＲＯＭ１００２、ＲＡＭ１００３及び外部記憶部１００７に記憶される各種制御信号を読み出し、制御信号に従って制御を行う。
【００１６】
また、本実施形態に係わるプログラムが格納された記憶媒体をシステム又は装置に供給し、そのシステム又は装置が記憶媒体に格納されたプログラムを読み出し、実行することによっても本実施形態を達成することができる。
【００１７】
図２は、本実施形態に係るデータベース制御システムによるインデックスの最適化処理の概略を説明するための図である。ここでは、本実施形態に係るデータベース制御システムの具体例として、デジタルスチルカメラ（以下、ＤＳＣと称す）２００１及びパーソナルコンピュータ（以下、ＰＣと称す）２００２の２つのデータ検索装置から構成されるデータベース制御システムを示している。
【００１８】
ＤＳＣ２００１及びＰＣ２００２は、接続状態の変化が検知されることを契機として処理を行う。先ず、充電や画像データの同期を目的として有線通信手段又は無線通信手段を用いてＤＳＣ２００１とＰＣ２００２とが接続される（ステップＳ１０１）。ＤＳＣ２００１とＰＣ２００２との接続が検知されると、ＤＳＣ２００１からＰＣ２００２にインデックスが格納された最適化前データベースファイル２００３が転送される。そして、ＤＳＣ２００１とＰＣ２００２との間で最適化前データベースファイル２００３が同期される（ステップＳ１０２）。最適化前データベースファイル２００３が同期された後、ＰＣ２００２においてインデックスの最適化処理が開始される（ステップＳ１０３）。これは、ＤＳＣ２００１と比較してＰＣ２００２の方が高い演算性能を持っており、インデックスの最適化処理を高速に実行することができるためである。
【００１９】
ＰＣ２００２にてインデックスの最適化処理が開始された後、ＤＳＣ２００１が持ち出されること等によって、ＤＳＣ２００１とＰＣ２００２との接続が切断される場合がある（ステップＳ１０４）。このような切断に対し、インデックスの最適化処理が実行中であるか否かをフラグ化して格納しておくこと等によって、ＤＳＣ２００１及びＰＣ２００２の双方において切断に備える。接続状態が切断されても、ＰＣ２００２側ではインデックスの最適化処理が続行される。これにより、ＤＳＣ２００１の計算資源を消費することなく、インデックスを最適化することができる。一方、ＤＳＣ２００１は、切断後の再開処理を容易にするため、追加撮影された画像データ２００４に対するインデックスの更新を別の差分データ更新領域である差分データベースファイル２００５に対して行う。
【００２０】
ＰＣ２００２におけるインデックスの最適化処理が完了すると（ステップＳ１０５）、最適化後データベースファイル２００６が生成される。ＤＳＣ２００１とＰＣ２００２とが再接続された場合（ステップＳ１０６）、ＤＳＣ２００１において生成された差分データベースファイル２００５は、ＰＣ２００２に対して転送される。ＤＳＣ２００１とＰＣ２００２との間で差分データベースファイル２００５が同期されると（ステップＳ１０７）、ＰＣ２００２は、最適化後データベースファイル２００６をＤＳＣ２００１に転送する。ＤＳＣ２００１は、最適化前データベースファイル２００３から最適化後データベースファイル２００６に置換する（ステップＳ１０８）。以上の処理を繰り返すことにより、常にＤＳＣ２００１における画像データの検索性能を高速に保つことができる。
【００２１】
図３（ａ）は、図１に示した外部記憶部１００７の例として、ＤＳＣ２００１向けメモリカードの内部構成を示している。図３（ａ）の３００１に示すように、メモリカード３０００の内部には、写真や映像をはじめとした各種画像データがＤＣＦ（Design rule for Camera File system）に準拠した形で格納される。また、画像データには、当該画像データに関する情報としての属性値が付与されている。写真の画像データである場合、日付、撮影パラメータ及びＧＰＳ座標等の属性値がＥｘｉｆ（Exchangeable image file format）３００２により画像データに付与されるのが代表的な例である。
【００２２】
Ｅｘｉｆには、日付、ＧＰＳ座標、地名、撮影機器メーカ、撮影機器機種名及び人名等の属性値が格納されている。また、検索を高速に行えるようにするため、図３（ａ）の３００４〜３００７に示すように、インデックス格納領域３００３には、索引情報が格納された各種インデックスが予め構築され、構築済みのインデックスを検索時に利用することで応答時間を短縮する手法が一般的である。インデックスは、Ｂ−ＴｒｅｅやＡＶＬ Ｔｒｅｅ、ハッシュ等の論理構造を持ち、検索キーと画像データとを紐付けておくことで高速な検索が可能になる。なお、各インデックス３００４〜３００７は、データベースファイル等の形式でインデックス格納領域３００３に永続的に格納される。
【００２３】
図３（ｂ）は、Ｅｘｉｆにより画像データに属性値が付与された状態の例を示している。図３（ｂ）の例では、画像データ（IMG_0001.JPG）に対して、日付（Date Time）、ＧＰＳ座標（GPS Pos.）、地名（Place）、撮影機器メーカ（Make）、撮影機器機種（Model）及び人名（Person）等の属性値が付与されている。
【００２４】
図３（ｃ）は、地名インデックス３００６がＢ−Ｔｒｅｅの構造を持つ場合を示している。Ｂ−Ｔｒｅｅは階層構造を持つデータ構造であり、画像データの挿入、検索及び削除を容易に行うことができるという特長を持つ。インデックスレコード３００８は、地名を用いてデータファイル名を高速に検索するためのインデックスである。
【００２５】
図４（ａ）は、ＤＳＣ２００１及びＰＣ２００２において格納されるデータベースの例を示している。データベース４００１においては、各画像データを一意に区別するためのキーとしてＲｏｗＩＤが付与され、データベースファイル等に表形式で保存されることを想定している。ＲｏｗＩＤは、データベース又はテーブルにおいて重複しないようにユニークに発番及び付与される数値であり、一般的なデータベースエンジンで利用されている。
【００２６】
図４（ｂ）は、本実施形態におけるインデックス格納領域３００３に格納されるインデックスの例を示している。本実施形態では、各画像データに対してＥｘｉｆ３００２により付与された属性値のインデックスを、後述するインデックス登録処理部６００５によって予め生成しておく。これにより、検索条件に合致する画像データを素早く発見し、高速に検索することができる。例えば日付インデックス３００４は、日付とＲｏｗＩＤとを結びつけたデータマップを保持している。人名インデックス３００７は、人名とＲｏｗＩＤとを結びつけたデータマップを保持している。これにより、ＲｏｗＩＤに基づいてデータベースから画像データを一意に特定し、検索結果を提示することが可能になる。
【００２７】
図５は、Ｂ−Ｔｒｅｅ構造のインデックスの例を示している。一般的にＢ−Ｔｒｅｅ構造は大きく分けて、ルートノード、中間ノード及びリーフノードの３要素からなる。ルートノードからリーフノードに向かって探索が行われ、各ノードに格納されているデータが評価されることにより、全走査を行うことなく検索条件に対応する画像データを検索することができる。
【００２８】
例えば、図５（ａ）に示す初期状態のインデックスに対して人名「太郎」が付与されると、図５（ｂ）に示すように、人名「太郎」が付与されたインデックスが格納されていた部分に空き領域が生まれ、ノードが分散してしまう。その結果、アクセスデータ量が増え、検索及び更新時の応答性能が劣化してしまう。そこで、適切なタイミングにおいてインデックスの最適化処理が行われ、図５（ｃ）に示すように無駄な空き領域が整理される。これにより、空き領域となっていた部分が再構築によって埋まり、全体のノード数が減っている。このように空き領域を整理することによってアクセスデータ量を減少させ、応答性能を向上させることができる。
【００２９】
図６（ａ）は、図１に示したＲＡＭ１００３の構成を示す図である。ＲＡＭ１００３は、主にファイルキャッシュ６００１及びデータベースキャッシュ６００２から構成される。ファイルキャッシュ６００１は、外部記憶部１００７に対するアクセス要求データをＲＡＭ１００３経由で受け渡しするようにして、データベースファイルへのアクセスに対する応答速度を向上させるために配置される。
【００３０】
図６（ｂ）は、本実施形態におけるデータ検索装置１０００の機能構成を示す図である。以下、図６（ｂ）を参照しながら、本実施形態におけるデータ検索装置１０００の機能構成について説明する。
【００３１】
装置状態変化検知部６００３は、データ検索装置１０００の給電状態、リソース状態、通信状態及び加速度センサ等を監視し、その監視結果に応じてデータ検索装置１０００の動作を決定する。データベースエンジン６００４は、画像データ検索を高速に行うために利用される。図６（ｂ）に示すように、データベースエンジン６００４は、インデックス登録処理部６００５、インデックス検索処理部６００６及びインデックス最適化部６００７から構成される。インデックス登録処理部６００５は、高速に画像データ検索を行うためのインデックスを構築した上でデータベースファイルに登録する。インデックス検索処理部６００６は、アプリケーション等から指示された検索条件でインデックスを検索し、検索結果を提示する。インデックス最適化部６００７は、インデックスの断片化等を最適化処理によって解決する。その結果、画像データ検索時の応答性能劣化を抑制することができる。
【００３２】
画像データの検索を実行する検索アプリケーション６００８は、データ登録処理部６００９及びデータ検索処理部６０１０から構成される。データ登録処理部６００９は、画像データの追加、編集及び削除をデータ格納部３００１に対して行う。さらにデータ登録処理部６００９は、インデックス登録処理部６００５を呼び出して画像データ検索の高速化のために必要な各インデックス３００４〜３００７を更新し、インデックス格納領域３００３に対して格納する処理を行う。データ検索処理部６０１０は、インデックス検索処理部６００６を用いて、ユーザによって入力された検索条件に応じた画像データ検索を行う。検索条件入力部６０１１は、ユーザによって入力された検索条件を受け付け、データ検索処理部６０１０に対して上記検索条件を出力する。検索結果表示制御部６０１２は、データ検索処理部６０１０の検索結果をユーザに提示する。
【００３３】
図７（ａ）は、検索条件入力部６０１１において受け付けられる検索条件を表現したＳＱＬ（Structured Query Language）文の例を示している。図７（ａ）に示すようなＳＱＬ文は、ユーザによって入力された検索条件に応じて生成される。生成されたＳＱＬ文は、インデックス検索処理部６００６によって解釈され、検索条件に応じたインデックスが検索される。
【００３４】
図７（ｂ）は、画像データの検索結果を表示したユーザインタフェース７０００の例を示している。領域７００１は、検索条件表示領域である。ボックス７００２は、ユーザが検索条件を選択するためのドロップダウンボックスである。領域７００３は、画像データの検索結果をサムネイルで一覧表示する検索結果表示領域である。領域７００４は、画像データの検索結果のページ数を提示する検索情報表示領域である。
【００３５】
図８は、電源投入後におけるデータ検索装置１０００の処理を示すフローチャートである。以下、図８を参照しながら、電源投入後におけるデータ検索装置１０００の処理について説明する。
【００３６】
ステップＳ８００１において、データ検索装置１０００は、電源投入後の初期化処理を行う。ステップＳ８００２において、データ検索装置１０００は、自らの状態変化又はユーザからの入力等のイベントの検出を待つ。イベントが検出されると、処理はステップＳ８００３に移行する。ステップＳ８００３において、データ検索装置１０００は、ステップＳ８００２で検出したイベントを判別する。ステップＳ８００４において、データ検索装置１０００は、判別したイベントに対応する処理を行う。ステップＳ８００５において、データ検索装置１０００は、ステップＳ８００４における処理結果を表示部１００９に表示させる。なお、ステップＳ８００２において検出されるイベントの例としては、画像データ検索の起動命令、画像データ登録処理の起動命令、稼働時間、更新回数、及び、起動回数等が挙げられる。また、電源スイッチの入れ替え、給電状態の変化、他装置との連携状態、即ち、接続状態の変化、外部記憶部の状態の変化、加速度の変化、電波強度の変化、通信状態の変化、装置のリソース状態の変化、外部からの指示、及び、時刻変化等も挙げられる。
【００３７】
図９は、ユーザによって画像データ検索が指示された場合におけるデータ検索装置１０００の処理を示すフローチャートである。以下、図９を参照しながら、ユーザによって画像データ検索が指示された場合におけるデータ検索装置１０００の処理について説明する。
【００３８】
ステップＳ９００１において、検索条件入力部６０１１は、ユーザにより入力された検索条件を受け付ける。ステップＳ９００２において、データ検索処理部６０１０は、ステップＳ９００１で受け付けられた検索条件に基づいて画像データ検索を実行する。即ち、データ検索処理部６０１０は、検索条件に応じてデータベースエンジン６００４に内包されるインデックス検索処理部６００６を呼び出し、検索条件に合致するインデックスを検索させる。そしてデータ検索処理部６０１０は、検索されたインデックスに基づいて画像データを検索する。ステップＳ９００３において、検索結果表示制御部６０１２は、ステップＳ９００２における画像データ検索結果をユーザに提示する。
【００３９】
次に、画像データの登録によって発生するインデックスの断片化、インデックスの断片化による影響、及び、インデックスの断片化を解消するためのインデックスの最適化処理について詳細に説明する。
【００４０】
先ず、画像データが登録されることによって発生するインデックスの断片化について説明する。正しい検索結果を得るためには、検索対象となる画像データが更新される度にインデックスも同様に更新する必要がある。例えば、属性値が付与されていない画像データに対して人名認識処理等が行われることにより、属性値が付与されることがある。属性値の付与と同時にインデックスも更新されるが、このとき、更新によって生じたインデックスの断片化を解消せずに終了することがある。
【００４１】
インデックスの断片化が生じている状態において画像データの検索又は登録が行われると、上述したようにノードが広く分散するため、必要なデータアクセス量が増加し、キャッシュメモリが枯渇してしまう。その結果、外部記憶部１００７に対するアクセス要求が増えて処理終了が遅延してしまう。このような論理構造の断片化はＢ−Ｔｒｅｅに限らず、ハッシュ、ＡＶＬ Ｔｒｅｅ、ビットマップ等においても発生する。また同様に、インデックス自体についても、細かい更新を繰り返すと単位ブロック内の空き領域の再利用率が落ちることによってインデックスの断片化が発生する。特に書き換えが低速なフラッシュメモリを外部記憶部１００７として利用する場合、既存領域の再利用よりも新規追記を優先する設計が行われることが多く、再利用率の低い更新が累積されてインデックスの断片化の発生が顕著になる。断片化が多いインデックスは読み出し量を多く必要とするため、キャッシュメモリを枯渇させる原因となる。キャッシュメモリが枯渇すると外部記憶部１００７へのアクセス頻度が高くなり、応答性能が劣化する。
【００４２】
そこで、インデックスの断片化を解消するため、定期的にインデックスの最適化処理を行う必要がある。しかしながら、構造の組み替え処理はデータ全体を俯瞰する必要があるため、件数に応じてコストが増加し、ＤＳＣ２００１等の計算資源に制限がある環境では写真撮影等の他の機能の性能を劣化させる場合がある。加えて外部記憶部１００７にフラッシュメモリを用いた場合、インデックス対象の属性値のような小容量の読み込み及び書き込みが低速である。そのため、インデックスの最適化処理はさらなる負荷となる。よって、ＤＳＣ２００１等の計算資源に制約のある装置単体においてインデックスの最適化処理を完遂することは困難である。
【００４３】
さらに、小型のビューワやＤＳＣ２００１等において、充電を中断して持ち出し、利用するような状況では主機能の性能に影響を与えないようにするため、インデックスの最適化処理を中断する必要がある。一方で、インデックスの最適化処理が中断状態にあるインデックスを放棄することは、最適化処理の効率上望ましくない。そのため、適切にインデックスの最適化処理の中断と中断後のインデックスの最適化処理の再開とを行う必要がある。
【００４４】
これに対し、本実施形態においては、適切なタイミング及びデータ検索装置同士の分担でインデックスの最適化処理を行うことによって検索性能を向上させている。少なくとも２台のデータ検索装置で構成されるデータ検索システムにおいて、各データ検索装置の状態を検知する。続いて、データ検索システムは、その検知結果に応じて分担計画を作成した上でインデックスの最適化処理を起動する。また、インデックスの最適化処理が開始されてからデータ検索装置同士が切断され、インデックスの最適化処理の中断が必要になる場合、データ検索システムは、インデックスの最適化処理を再開可能にするように中断処理を行う。その後、再び接続される等によってインデックスの最適化処理を起動する場合、データ検索システムは、中断状態であるか否かを判定して再開可能である場合には中断状態からインデックスの最適化処理を再開する。インデックスの最適化処理の再開時には、データ検索システムは、各データ検索装置間でインデックスを同期させ、同期後にインデックスの最適化処理を行う。このように、計算資源の潤沢な環境においてインデックスの最適化処理を行うことによって、計算資源に制約のあるデータ検索装置における画像データ検索性能を改善することができる。
【００４５】
なお、上述した各データ検索装置の状態の検知要素としては、給電状態、電力の残量、データ状態、外部記憶部の状態、加速度センサ値、電波強度、通信状態、データ検索装置のリソース状態、稼働時間、更新回数、起動回数、外部からの指示、及び、時刻等が挙げられる。データ検索システムは、これらの検知要素のうちの少なくとも何れか一つを検知すると、インデックスの最適化処理を起動する。例えば、給電状態又は電力の残量を監視することにより、電力資源がインデックスの最適化処理を実行するために十分であるかを判断できる効果が得られる。データ状態又は外部記憶部１００７の状態を監視することにより、データ差分を俊敏に把握できる効果が得られる。また、加速度センサ値、電波強度、通信状態、データ検索装置のリソース状態又は稼働時間を監視することにより、データ検索装置がインデックスの最適化処理を安定して行えるか否かを判定することができるという効果も得られる。また、更新回数、起動回数、外部からの指示、又は、時刻を監視することにより、インデックスの最適化処理を計画的に実行することができるという効果もある。
【００４６】
図１０は、本実施形態におけるインデックスの最適化処理を示すフローチャートである。以下、図１０を参照しながら、本実施形態におけるインデックスの最適化処理について説明する。なお、図１０に示すインデックスの最適化処理は、図８のステップＳ８００４において、給電状態の変化、他データ検索装置との接続状態の変化、通信状態変化又は外部からの指示等のイベントに対応して実行される処理である。
【００４７】
ステップＳ１０００１において、データ検索装置１０００は、他のデータ検索装置との接続を検知する。ステップＳ１０００２において、データ検索装置１０００は、他のデータ検索装置と差分データベースファイル（図２の２００５）を同期させる。ステップＳ１０００３において、データ検索装置１０００は、過去に中断されたインデックスの最適化処理を再開する。
【００４８】
ステップＳ１０００４において、データ検索装置１０００は、他のデータ検索装置とインデックスの最適化処理の状態を比較し、訂番の新しい最適化済みインデックスが他のデータ検索装置に存在するか否かを判定する。訂番の新しい最適化済みインデックスが他のデータ検索装置に存在する場合、処理はステップＳ１０００５に移行する。一方、訂番の新しい最適化済みインデックスが他のデータ検索装置に存在しない場合、処理はステップＳ１０００７に移行する。なお、ステップＳ１０００４では、訂番以外にも、データ検索装置１０００間におけるインデックスの最適化処理の進捗度を比較するようにしてもよい。
【００４９】
ステップＳ１０００５において、データ検索装置１０００は、他のデータ検索装置から最適化済みインデックスを受け取る。ステップＳ１０００６において、データ検索装置１０００に元々あったインデックスを破棄し、ステップＳ１０００５で受け取った最適化済みインデックスに置き換える。
【００５０】
ステップＳ１０００７において、データ検索装置１０００は、ステップＳ１０００２における同期前までの最適化済みインデックスが本データ検索装置１０００に存在するか否かを判定する。最適化済みインデックスが本データ検索装置１０００に存在する場合、処理はステップＳ１０００８に移行する。一方、最適化済みインデックスが本データ検索装置１０００に存在しない場合、処理はステップＳ１０００８をスキップしてＳ１０００９に移行する。ステップＳ１０００８において、データ検索装置１０００は、他のデータ検索装置に対して最適化済みインデックスを送信する。
【００５１】
ステップＳ１０００９において、データ検索装置１０００は、性能情報及び負荷状態を他のデータ検索装置と交換する。ステップＳ１００１０において、データ検索装置１０００は、他のデータ検索装置から取得した性能情報及び負荷情報と、本データ検索装置１０００の性能情報及び負荷状態とを比較する。ステップＳ１００１１において、データ検索装置１０００は、ステップＳ１００１０における比較結果に基づいて、データ検索装置間における分担計画を作成する。ステップＳ１００１２において、データ検索装置１０００は、作成した分担計画を他のデータ検索装置に対して送信することにより、当該分担計画を他のデータ検索装置と共有する。
【００５２】
上記分担計画では、インデックスの最適化処理の中断時においても、インデックスの最適化処理が続行可能なデータ検索装置においてインデックスの最適化処理を続行するように決定される。分担計画の具体例としては、電力供給安定度又は計算能力等に応じてインデックスの最適化処理を続行すること等が挙げられる。これにより、計算能力の低いデータ検索装置においても高速な画像データ検索を行うことができるという効果がある。
【００５３】
また、利用頻度が高い日付属性や利用頻度が低い位置情報等、属性や用途毎にインデックスを分割しておき、各インデックスをデータ検索装置同士で分担すること等が挙げられる。例えば、画像データ検索時の利用頻度が高い日付属性のインデックスの最適化処理をＤＳＣ２００１において行い、利用頻度が低く、計算負荷の高い位置情報のインデックスの最適化処理をＰＣ２００２で行うこと等が考えられる。これにより、ＤＳＣ２００１が持ち出される等によってインデックスの最適化処理が中断された状況においても、矛盾なく画像データ検索を行うことができる。
【００５４】
ステップＳ１００１３において、データ検索装置１０００は、分担計画の作成結果に応じて、インデックスの最適化処理を行うか否かを判定する。インデックスの最適化処理を行う場合、処理はステップＳ１００１４に移行する。一方、インデックスの最適化処理を行わない場合、処理はステップＳ１００１５に移行する。ステップＳ１００１４において、データ検索装置１０００は、インデックスの最適化処理を実行する。Ｓ１００１５において、データ検索装置１０００は、インデックスの最適化処理を続行可能な他のデータ検索装置に対してインデックスの最適化処理を委託し、その完了を待つ。
【００５５】
ステップＳ１００１６において、データ検索装置１０００は、他のデータ検索装置との接続状態が有効であるか否かを判定する。他のデータ検索装置との接続状態が有効である場合、処理はステップＳ１００１７に移行する。一方、他のデータ検索装置との接続状態が有効ではない場合、処理は終了する。
【００５６】
ステップＳ１００１７において、データ検索装置１０００は、インデックスの最適化処理が完了したか否かを判定する。インデックスの最適化処理が完了した場合、処理はステップＳ１００１８に移行する。一方、インデックスの最適化処理が完了していない場合、処理はステップＳ１００１８をスキップしてステップＳ１００１９に移行する。ステップＳ１００１８において、データ検索装置１０００は、最適化済みインデックスを他のデータ検索装置と同期させる。ステップＳ１００１９において、データ検索装置１０００は、他のデータ検索装置との接続を解除する。
【００５７】
図１１は、ステップＳ１００１４におけるインデックスの最適化処理の詳細を示すフローチャートである。以下、図１１を参照しながら、本実施形態におけるインデックスの最適化処理について詳細に説明する。
【００５８】
ステップＳ１１００１において、データ検索装置１０００は、１件のインデックスの最適化処理を行う。ステップＳ１１００２において、データ検索装置１０００は、他のデータ検索装置との接続状態を確認する。ステップＳ１１００３において、データ検索装置１０００は、他のデータ検索装置との接続が有効であるか否かを判定する。他のデータ検索装置との接続が有効である場合、処理はステップＳ１１００７に移行する。一方、他のデータ検索装置との接続が有効ではない場合、処理はステップＳ１１００４に移行する。
【００５９】
ステップＳ１１００４において、データ検索装置１０００は、他のデータ検索装置との接続解除が既に実施済みであるか否かを判定する。未だ接続解除が実施済みでない場合、処理はステップＳ１１００５に移行する。一方、既に接続解除が実施済みである場合、処理はステップＳ１１００７に移行する。ステップＳ１１００５において、データ検索装置１０００は、インデックスの最適化処理の中断対応処理を行う。ステップＳ１１００６において、データ検索装置１０００は、他のデータ検索装置との接続解除を実施する。なお、ステップＳ１１００５におけるインデックスの最適化処理の中断対応処理とは、他のデータ検索装置が再び接続された際に、他のデータ検索装置側におけるインデックスの最適化処理の再開処理を矛盾なく行うために実施するものである。具体的には、データ検索装置同士が切断された日時を記録する等の処理を行うことが考えられる。これにより、次回接続時におけるインデックスの最適化処理の再開処理において、上記切断日時等を用いてインデックスの整合性を判断することが可能になる。
【００６０】
ステップＳ１１００７において、データ検索装置１０００は、最適化処理の対象となるインデックスが未だ存在するか否かを判定する。最適化処理の対象となるインデックスが未だ存在する場合、処理はステップＳ１１００８に移行する。一方、最適化処理の対象となるインデックスが存在しない場合、処理は終了する。ステップＳ１１００８において、データ検索装置１０００は、次の最適化処理の対象となるインデックスを選択する。
【００６１】
図１２は、図１０のステップＳ１００１５におけるインデックスの最適化処理の完了待ち処理の詳細を示すフローチャートである。以下、図１２を参照しながら、本実施形態におけるインデックスの最適化処理の完了待ち処理について説明する。
【００６２】
ステップＳ１２００１において、データ検索装置１０００は、他のデータ検索装置におけるインデックスの最適化処理完了の検出処理を行う。ステップＳ１２００２において、データ検索装置１０００は、他のデータ検索装置におけるインデックスの最適化処理が完了したか否かを判定する。インデックスの最適化処理が完了した場合、処理は終了する。一方、インデックスの最適化処理が完了していない場合、処理はステップＳ１２００３に移行する。ステップＳ１２００３において、データ検索装置１０００は、他のデータ検索装置との接続状態を確認する。ステップＳ１２００４において、データ検索装置１０００は、他のデータ検索装置との接続が有効であるか否かを判定する。他のデータ検索装置との接続が有効である場合、処理はステップＳ１２００１に戻る。一方、他のデータ検索装置との接続が無効である場合、処理はステップＳ１２００５に移行する。ステップＳ１２００５において、データ検索装置１０００は、インデックスの最適化処理を中断した上で、インデックスの最適化処理の完了待ち処理を終了する。具体的なインデックスの最適化処理の中断方法としては、インデックスの最適化処理が他のデータ検索装置において続行中である旨のフラグを記録することや切断日時を記録する等が考えられる。これにより、インデックスの最適化処理の再開時にインデックスの整合性を判断できるようにするものである。
【００６３】
図１３は、ＤＳＣ１３００１の電力が安定している場合に、ＰＣ１３００２にインデックスの最適化処理を委託した後も、ＤＳＣ１３００１において並行してインデックスの最適化処理を実行させる処理を説明するための図である。
【００６４】
ＤＳＣ１３００１及びＰＣ１３００２は、接続状態の変化が検知されることを契機として処理を行う。先ず、充電や画像データの同期を目的として有線通信手段又は無線通信手段を用いてＤＳＣ１３００１とＰＣ１３００２とが接続される（ステップＳ１３０１）。ＤＳＣ１３００１とＰＣ１３００２との接続が検知されると、ＤＳＣ１３００１からＰＣ１３００２にインデックスが格納された最適化前データベースファイル１３００３が転送される。そして、ＤＳＣ１３００１とＰＣ１３００２との間で最適化前データベースファイル１３００３が同期される（ステップＳ１３０２）。最適化前データベースファイル１３００３が同期された後、ＰＣ１３００２においてインデックスの最適化処理が開始される（ステップＳ１３０３）。これは、ＤＳＣ１３００１と比較してＰＣ１３００２の方が高い演算性能を持っており、インデックスの最適化処理を高速に実行することができるためである。
【００６５】
ＰＣ１３００２にてインデックスの最適化処理が開始された後、ＤＳＣ１３００１が持ち出されること等によって、ＤＳＣ１３００１とＰＣ１３００２との接続が切断される場合がある（ステップＳ１３０４）。このような切断に対し、インデックスの最適化処理が実行中であるか否かをフラグ化して格納しておくこと等によって、ＤＳＣ１３００１及びＰＣ１３００２の双方において切断に備える。接続状態が切断されても、ＰＣ１３００２側ではインデックスの最適化処理が続行される。これにより、ＤＳＣ１３００１の計算資源を消費することなく、インデックスを最適化することができる。一方、ＤＳＣ１３００１は、切断後の再開処理を容易にするため、追加撮影された画像データ１３００５に対するインデックスの更新を別の差分データ更新領域である差分データベースファイル１３００６に対して行う。
【００６６】
ＰＣ１３００２におけるインデックスの最適化処理が完了すると（ステップＳ１３０８）、最適化後データベースファイル１３００８が生成される。ここで、図１３の例においては、ＤＳＣ１３００１とＰＣ１３００２との間におけるインデックスの最適化処理後における最適化後データベースファイルを、次回の同期時に統合することでインデックスの矛盾を回避している。具体的には、インデックスの登録件数を比較するためのバージョン番号を最適化後データベースファイルに付与しておくこと等の方法により、最適化後データベースファイルの新旧を判断することができる。そして、次回の同期時には古い最適化後データベースファイルが新しい最適化後データベースファイルに置換される。図１３の例においては、ＰＣ１３００２へインデックスの最適化処理が委託された後、ＤＳＣ１３００１単体で追加撮影された画像データ１３００５に対応するインデックスの更新が発生するため、ＰＣ１３００２における最適化後データベースファイルが古くなる。その後、ＤＳＣ１３００１の充電が開始され（ステップＳ１３０５）、電力が安定すると、ＤＳＣ１３００１ではインデックスの最適化処理が開始される（ステップＳ１３０６）。ＤＳＣ１３００１におけるインデックスの最適化処理が完了すると（ステップＳ１３０７）、ＤＳＣ１３００１において最適化後データベースファイル１３００７が生成される。
【００６７】
ＤＳＣ１３００１とＰＣ１３００２とが再接続された場合（ステップＳ１３０９）、ＤＳＣ１３００１とＰＣ１３００２との間で互いのバージョン番号が転送される（ステップＳ１３１０）。ＤＳＣ１３００１及びＰＣ１３００２は、バージョン番号に基づいて、どちらの最適化後データベースファイルの方が新しいかを判断し、新しいと判断した最適化後データベースファイルを選択する（ステップＳ１３１１）。図１３の例では、最適化後データベースファイル１３００８より最適化後データベースファイル１３００７の方が新しいと判断され、最適化後データベースファイル１３００７が選択される。従って、ＤＳＣ１３００１は、最適化後データベースファイル１３００８をＰＣ１３００２に対して送信する。ＰＣ１３００２は、自ら保持する最適化後データベースファイル１３００８をＤＳＣ１３００１から受け取った最適化後データベースファイル１３００７で置換し（ステップＳ１３１２）、最適化後データベースファイル１３００８を削除する（ステップＳ１３１３）。
【００６８】
なお、ＰＣ１３００２に対してインデックスの最適化処理が委託された状態において、ＤＳＣ１３００１の電力が安定している場合には、差分データベースファイル１３００６に対するインデックスの最適化処理を最適化前データベースファイル１３００３のインデックスの最適化処理とは独立して行ってもよい。これは、次回の同期時までに最適化前データベースファイル１３００３のインデックスの最適化処理が間に合わない場合等に、差分データベースファイル１３００６におけるインデックスの断片化及び肥大化が進むことを抑制する点において効果的である。
【００６９】
なお、Ｂ−Ｔｒｅｅに限らず、ＡＶＬ Ｔｒｅｅ等他の論理構造を持つインデックスや、インデックスファイル自体に対しても同様に再利用が行われない空き領域を整理する等のインデックスの最適化処理を行うことでインデックスの断片化が解消される。これにより、画像データの検索及び登録時に必要なデータ量が削減され、応答時間を向上させることができる。
【００７０】
以上のように、インデックスの最適化処理を計算能力の高いデータ検索装置側において続行させ、計算能力の低いデータ検索装置側にインデックスを最適化した結果を分配することにより、計算資源を効率よく利用したインデックスの最適化処理を行うことができる。その結果、計算能力の低いデータ検索装置においても画像データ検索時の応答速度が向上する。また、新しいインデックス作成中には古いインデックスを上書きしないため、突然の電源断や通信断絶時にも中断状態からの復帰が可能である。従って、画像データ検索機能運用の利便性も高くなる。
【００７１】
なお、本実施形態はインデックスの最適化処理に限らず、様々なユースケースにおいて適用できる。例えば記憶媒体中のファイル配置を並び替える等の処理を行うファイルシステムの最適化処理等においても適用可能である。ファイルシステムの最適化処理の場合、装置の状態検知結果を基に、適切なタイミングでファイルシステムの最適化処理を起動させ、中断及び再開処理を行わせる。例えば、ＤＳＣのファイルシステムの最適化処理をＰＣと連携して行う場合、ＤＳＣはＵＳＢ（Universal Serial Bus）等の有線接続や無線ＬＡＮ等の無線接続によってＰＣと接続される。このとき、ＤＳＣはＰＣに対してディスクドライブとして見ることができる。ＰＣは、ＤＳＣを一般的なディスクドライブとして扱うことで最適化処理を実施する。その結果、主機能の性能を劣化させることなく、外部記憶部１００７の空き領域や登録データの断片化を解消する。これにより、データ走査時間や書き込み時間遅延を改善する効果がある。
【００７２】
本実施形態は、ＤＳＣ環境におけるフラッシュメモリ等の更新速度が遅い環境を前提にしたが、ＲＡＭドライブ、ハードディスクドライブ、或いは速度改善されたフラッシュメモリ等、任意の環境においても応答時間の向上に効果がある。
【００７３】
また、ＤＳＣ及びＰＣにおいてインデックスの最適化処理を行う例を挙げたが、ＰＣに限らずフォトストレージ、テレビ、携帯電話等の情報装置に置き換えても適用可能である。また、計算資源が少ない環境においても電力供給が安定している状況等、十分な能力がある状況において、データファイルを分割する等によって複数のデータ検索装置間で分散最適化処理を行うことも効果的である。
【００７４】
次に、本発明の第２の実施形態について説明する。本発明の第２の実施形態では、３台以上の装置においてインデックスの最適化処理を実施する方法について説明する。第２の実施形態は、第１の実施形態と同様の構成に加え、少なくとも１つのインデックスの最適化処理能力を有する情報処理装置から構成される。第２の実施形態は、画像データ検索等において、複数の装置の間でインデックスの最適化処理を並行して行い、その進捗度及びデータ解析結果を共有する。本実施形態は、画像データ検索の応答速度を高速化するとともに、データ検索装置同士の同期時における利便性を高めることを目的とする。
【００７５】
図１４は、第２の実施形態に係るデータベース制御システムの構成及び動作を説明するための図である。図１４に示すように、第２の実施形態に係るデータベース制御システムは、ＤＳＣ１４００１、ＰＣ１４００２及びフォトストレージ１４００３の３台から構成される。
【００７６】
先ず、ＤＳＣ１４００１とＰＣ１４００２とが接続されたとき、最適化前データベースファイル１４００４が各装置間で同期される（ステップＳ１４０１）。続いてＰＣ１４００２は、インデックスの最適化処理を開始する（ステップＳ１４０２）。ＰＣ１４００２においてインデックスの最適化処理が実行されている間、ＤＳＣ１４００１とＰＣ１４００２とは切断されても構わない（ステップＳ１４０３）。
【００７７】
次に、ＰＣ１４００２とフォトストレージ１４００３とは、インデックスの最適化処理の進捗度を共有するとともに、最適化後データベースファイル１４００７の同期をネットワーク回線や通信ケーブルを経由して行う（ステップＳ１４０４）。インデックスの最適化処理後に、ＤＳＣ１４００１がフォトストレージ１４００３に接続された場合（ステップＳ１４０５）、ＤＳＣ１４００１はフォトストレージ１４００３から最適化後データベースファイル１４００７が書き戻される（ステップＳ１４０６）。このとき、第１の実施形態と同様に、追加撮影された画像データ１４００５については、差分データベースファイル１４００６にインデックスを構築しておくことによって同期後の統合を容易にできる。以上の処理によって、３台以上の装置においてインデックスの最適化処理を実行することができる。各装置の計算資源に差があるデータベース制御システムにおいても、最適にインデックスの最適化処理を分担することによって、データベース制御システム全体において高速な画像データ検索が可能になり、画像データデータ検索時の利便性を向上させる点で効果的である。
【００７８】
なお、第１の実施形態と同様に、各々の装置で並行してインデックスの最適化処理を行う状況において、装置の計算資源の状況に応じて並行してインデックスの最適化処理を行うことも考えられる。また、最適化範囲を分割して複数の装置間でインデックスの最適化処理を分担することや、性能の良い方でインデックスの最適化処理を行うことも考えられる。同期時に既に最適化後データベースファイルが存在した場合、それぞれの新旧を判断して、最も新しいものに統合する等によって同期時のデータ矛盾を回避する方法が考えられる。ここでは３つの装置における例を挙げたが、もちろん３つを超える装置においても同様に実施可能である。なお、分担計画に基づいて、複数のデータ検索装置においてインデックスの最適化処理が続行可能であると判断される場合、インデックスの最適化処理の結果及び進捗度のうちの少なくとも何れか一つを、当該複数のデータ検索装置間で同期させてもよい。また、同じく分担計画に基づいて、複数のデータ検索装置においてインデックスの最適化処理が続行可能であると判断される場合、当該複数のデータ検索装置間で状態を比較することにより、何れかのデータ検索装置でインデックスの最適化処理を続行させるかを決定するようにしてもよい。
【００７９】
上述した実施形態においては、各データ検索装置の状態を検知し、計算資源が確保できるデータ検索装置においてインデックスの最適化を実行している。これにより、インデックスの断片化を解消して画像データの検索の応答性を改善することができ、ユーザの利便性を向上させることができる。
【００８０】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８１】
１０００：データ検索装置、６００１：ファイルキャッシュ、６００２：データベースキャッシュ、６００３：装置状態変化検知部、６００４：データベースエンジン、６００５：インデックス登録処理部、６００６：インデックス検索処理部、６００７：インデックス最適化部、６００８：検索アプリケーション、６００９：データ登録処理部、６０１０：データ検索処理部、６０１１：検索条件入力部、６０１２：検索結果表示制御部
【図１】
2013218431.tif 000003
【図２】
2013218431.tif 000004
【図３】
2013218431.tif 000005
【図４】
2013218431.tif 000006
【図５】
2013218431.tif 000007
【図６】
2013218431.tif 000008
【図７】
2013218431.tif 000009
【図８】
2013218431.tif 000010
【図９】
2013218431.tif 000011
【図１０】
2013218431.tif 000012
【図１１】
2013218431.tif 000013
【図１２】
2013218431.tif 000014
【図１３】
2013218431.tif 000015
【図１４】
2013218431.tif 000016