以下に添付図面を参照して、開示の検索装置、検索方法、および検索プログラムの実施の形態を詳細に説明する。
図1は、検索装置の動作例を示す説明図である。複数のデータストアを統合するデータストア統合システム100は、ライフログデータを検索する検索装置101と、ライフログデータを記憶する記憶領域を制御するデータストアである、データストア#0と、データストア#1と、データストア#2を有する。また、データストア統合システム100は、識別子生成ルールテーブル111を有する。また、ライフログデータとは、人間の生活、行動、体験等を、映像・音声・位置情報などのデジタルデータとして記録したデータである。本実施の形態において、データストア統合システム100は、ライフログデータの日付、歩数、ランチコメント、ランチ写真という4つの属性を蓄積する。
データストア#0は、ライフログデータの検索インデクスを制御する。検索インデクスとは、ライフログデータを検索するための索引を示す。具体的に、データストア#0の種別は、RDB(Relational DataBase)である。データストア#0が制御する記憶領域は、レコード112−1〜レコード112−7を記憶する。なお、レコード112−1〜レコード112−3は、検索頻度が高いレコードであるとする。検索頻度が高いレコードは、レコード数が少ないものとする。また、レコード112−4〜レコード112−7は、検索頻度が低いレコードであるとする。検索頻度が低いレコードは、レコード数が多いものとする。検索インデクスのレコードが、このような検索頻度、レコード数となる理由としては、図10にて後述する。
また、データストア#1の種別は、KVS(Key Value Store)である。データストア#1が制御する記憶領域に記憶されているデータについては、図5にて後述する。さらに、データストア#2の種別は、ファイルシステムである。データストア#2が制御する記憶領域は、dataディレクトリの中に、画像ファイルfile#99と、画像ファイルfile#98と、画像ファイルfile#88を記憶する。データストアの種別の詳細については、図2にて後述する。
また、ライフログデータの4つの属性のうち、日付属性と歩数属性によって指定される値は、データストア#0が制御する記憶領域に記憶される。ランチコメント属性によって指定される値は、データストア#1が制御する記憶領域に記憶される。ランチ写真属性によって指定される値は、データストア#2が制御する記憶領域に記憶される。なお、データストア#0〜データストア#2が制御する記憶領域の記憶内容の詳細については、図5にて後述する。
また、データストア#0が制御する記憶領域には、ランチコメント属性によって指定される値とランチ写真属性によって指定される値の格納位置を示す識別子を記憶するフィールドを有する。以下、この識別子を、データストア依存識別子と呼称する。さらに、データストア#0が制御する記憶領域には、ランチコメント属性によって指定される値とランチ写真属性によって指定される値を識別する識別子を記憶するフィールドを有する。以下、この識別子を、データストア非依存識別子と呼称する。本実施の形態で示すデータストア非依存識別子は、ランチコメント属性によって指定される値とランチ写真属性によって指定される値に同一の識別子を用いているが、異なる識別子を用意してもよい。
識別子生成ルールテーブル111は、データストア非依存識別子と属性によって指定される値の格納位置の関係を示す情報である。図1の例では、識別子生成ルールテーブル111は、データストア非依存識別子とデータストア#2が制御する記憶領域に格納されたランチ写真属性によって指定される値の格納位置の関係を示す情報を記憶している。具体的に、識別子生成ルールテーブル111は、ランチ写真属性によって指定される値が、識別子フィールドを用いて“/data/file#{識別子}”で示される位置に格納されていることを示している。
初めに、検索装置101は、検索要求121を受け付ける。検索要求121の検索条件は、歩数が5000歩であり、かつ日付が2011/7/1から2011/8/31である。次に、検索装置101は、検索要求121の検索条件に合致したレコードを検索する。図1の例では、検索要求121の検索条件に合致したレコードは、レコード112−1と、レコード112−4となる。
続けて、検索条件に合致したレコード112−1とレコード112−4について、検索装置101は、データストア依存識別子とデータストア非依存識別子のうちデータストア#2へのアクセスに用いる識別子を決定する。レコード112−1について、検索頻度が高いため、検索装置101は、データストア依存識別子“/data/file#99”を用いてデータストア#2が制御する記憶領域にアクセスし、画像ファイルfile#99を取得する。
また、レコード112−4について、検索頻度が低いため、検索装置101は、識別子“88”と識別子生成ルールテーブル111内の“/data/file#{識別子}”を用いて、格納位置を示す識別子“/data/file#88”を生成する。続けて、検索装置101は、識別子“/data/file#88”を用いて、データストア#2が制御する記憶領域にアクセスし、画像ファイルfile#88を取得する。
このように、検索装置101は、検索頻度の高い情報にはデータストアでの属性の格納位置を示すデータストア依存識別子を付与し、検索頻度の低い情報には属性の識別子となるデータストア非依存識別子を付与して格納位置を生成する。これにより、検索装置101は、属性の移行処理には、検索頻度の高いレコードのデータストア依存識別子を変更すればよく、移行処理の負荷を低減できる。以下、検索装置101について、図2〜図17を用いて詳細に説明する。
図2は、データストア統合システムの接続例を示す説明図である。データストア統合システム100は、クライアント201と、クライアント202と、検索装置101と、データストア群203を含む。クライアント201と、クライアント202と、検索装置101は、ネットワーク210で接続されている。
クライアント201は、携帯電話機として、スマートフォンであってもよいし、PHS(Personal Handyphone System)であってもよいし、タブレット型端末であってもよい。クライアント202は、デスクトップ型PC(Personal Computer)である。検索装置101は、クライアント201またはクライアント202上で動作するアプリケーションソフトウェアからの検索要求に応じて、検索条件に対応する情報を取得して、アプリケーションソフトウェアに返却する。アプリケーションソフトウェアは、以下、“アプリ”と称する。
データストア群203は、データストア#0〜データストア#2を含む。データストアとは、データを決められた形式で記憶領域に記憶するソフトウェアである。図1で示したように、データストア#0の種別は、RDBである。また、データストア#1の種別がKVSである。さらに、データストア#2の種別は、ファイルシステムである。
RDBは、構造化した情報をテーブルに蓄積し、各カラムの値に関する条件を指定して、情報をテーブルから読み出す。RDBは、複雑な検索処理や、結果の集計処理を得意とする。KVSは、識別子となるキーに値を対応付け、キーを指定して対応する値を取得する。KVSは、ノードを追加することにより、容易にスケーラビリティを向上することが可能である。ファイルシステムは、識別子となるファイル名を指定して、コンテンツを読み書きする。ファイルシステムは、コンテンツのサイズが大きくてもよい。また、ファイルシステムは、ノードを追加することにより、容易にスケーラビリティを向上することができる。
また、RDB、KVS、ファイルシステム以外のデータストアとして、たとえば、全文検索エンジンがある。全文検索エンジンは、構造化されていない情報を蓄積し、フィールドの値やテキストに含まれる文字列を指定して検索する。なお、構造化されていない情報とは、たとえば、情報ごとに異なるフィールドを有していたり、1フィールドに複数の値を有していたり、または、テキスト情報である。
また、データストアはソフトウェアであるから、データストア#0〜データストア#2を実行する装置は、検索装置101であってもよいし、外部の装置であってもよい。外部の装置であれば、たとえば、外部の装置は、データストア#0〜データストア#2を実行して、データストア#0〜データストア#2それぞれが管理する記憶装置を制御する。データストア#0〜データストア#2を実行する装置は、同一であってもよいし、異なっていてもよい。
図2で示すように、データストア統合システム100は、複数のデータストアを組合せて、クライアント201やクライアント202にライフログデータを利用するサービスを提供する。具体的なデータストアの組合せ方としては、RDBであるデータストア#0が制御する記憶領域を検索インデクスとする。また、KVSであるデータストア#1やファイルシステムであるデータストア#2が制御する記憶領域は、ライフログデータの各属性のうち、それぞれのデータストアが最適な属性を記憶する。どのデータストアがどの属性を記憶するかについては、属性によって指定される値のサイズ、属性全体の蓄積量、値に対する更新頻度や検索条件の指定の有無等によって、データストア統合システム100の開発者が決定する。
また、図2には示していないが、データストア統合システム100に、データストア統合システム100の管理者が操作する管理者端末があってもよい。または、管理者が、クライアント201またはクライアント202から管理者用のアカウントを用いてデータストア統合システム100にログインしてもよい。
(検索装置101のハードウェア)
図3は、検索装置のハードウェア構成例を示す説明図である。図3において、検索装置101は、CPU(Central Processing Unit)301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、IF306と、を含む。また、各部はバス307によってそれぞれ接続されている。
ここで、CPU301は、検索装置101の全体の制御を司る演算処理装置である。ROM302は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM303は、CPU301のワークエリアとして使用される揮発性メモリである。磁気ディスクドライブ304は、CPU301の制御に従って磁気ディスク305に対するデータのリード/ライトを制御する制御装置である。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発性メモリである。
IF306は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他の装置に接続される。そして、IF306は、ネットワーク210と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。IF306には、たとえばモデムやLANアダプタなどを採用することができる。なお、検索装置101は、管理者が検索装置101を直接操作する場合、光ディスクドライブと、ディスプレイと、キーボードと、マウスと、を有していてもよい。
また、図3にて図示していないが、クライアント201は、たとえば、CPUと、RAMと、ROMと、フラッシュROMと、ディスプレイと、IFを有する。フラッシュROMは、記憶内容を書き換え可能な不揮発性メモリである。また、クライアント201は、カメラデバイスと、センサを有してもよい。また、クライアント202は、たとえば、CPUと、RAMと、ROMと、磁気ディスクドライブと、磁気ディスクと、IFと、光ディスクドライブと、ディスプレイと、キーボードと、マウスと、を有していてもよい。
(検索装置101の機能)
次に、検索装置101の機能について説明する。図4は、検索装置の機能例を示すブロック図である。検索装置101は、受付部401と、検索部402と、決定部403と、生成部404と、アクセス部405と、削除部406と、更新部407と、変更部408と、インデクスアダプタ409と、データストアアダプタ410を含む。制御部となる受付部401〜データストアアダプタ410は、記憶装置に記憶されたプログラムをCPU301が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305、などである。または、IF306を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、検索装置101は、データストア群203と、格納方式定義ルールテーブル411と、識別子生成ルールテーブル111と、検索状況テーブル412にアクセス可能である。格納方式定義ルールテーブル411と、識別子生成ルールテーブル111と、検索状況テーブル412は、RAM303、磁気ディスク305といった記憶装置に格納されている。
また、図4では、格納方式定義ルールテーブル411と、識別子生成ルールテーブル111と、検索状況テーブル412が、検索装置101の内部にあり、データストア群203が検索装置101の外部にある。格納方式定義ルールテーブル411と、識別子生成ルールテーブル111と、検索状況テーブル412が、検索装置101の外部にあってもよいし、データストア群203が検索装置101の内部にあってもよい。
受付部401は、特定の属性を有する情報群のうち検索条件に合致する情報の検索要求を受け付ける。たとえば、受付部401は、クライアント201上で動くアプリからの検索要求を受け付ける。
また、受付部401は、検索条件として属性によって指定される値が移行対象となる検索条件に合致する情報の検索要求を受け付けてもよい。移行対象となる検索条件としては、たとえば、移行対象となるランチ写真属性によって指定される値があるという検索条件であってもよいし、ランチ写真属性によって指定される値があり、かつ、管理者から指定された過去何年かまでの検索条件であってもよい。受付部401の機能により、検索装置101は、検索処理、移行処理の契機を検出することができる。なお、受け付けた検索要求は、RAM303、磁気ディスク305といった記憶領域に記憶される。
検索部402は、受付部401によって検索要求を受け付けた場合、第1の記憶部を参照して、検索条件に合致する情報を検索する。第1の記憶部とは、たとえば、データストア#0によって制御される記憶領域である。たとえば、検索部402は、アプリから受け付けた検索要求の検索条件に合致する情報を検索する。検索部402の機能により、検索装置101は、検索条件に合致するレコードを取得できる。なお、検索結果は、RAM303、磁気ディスク305といった記憶領域に記憶される。
第1の記憶部は、特定の属性によって指定される値の格納位置を示す第1の識別子または指定される値を識別する第2の識別子のうち少なくとも特定の属性を有する情報に基づいて特定された識別子を第1のデータストアの制御によって記憶する。第1の識別子は、たとえば、データストア依存識別子である。値の格納位置は、第1の記憶部を制御するデータストアが解釈可能な識別子となる。たとえば、第1のデータストアがKVSであれば、第1の識別子は、キーである。また、ファイルシステムであれば、第1の識別子は、ファイルパスである。
なお、格納位置を示す第1の識別子は、値に応じて一意となるため、値ごとに異なる。値ごとに異なるような格納位置とするため、たとえば、格納位置は、値を識別する第2の識別子を含んでもよい。または、第1の識別子は、第2の識別子を変換して得られる情報を含んでいてもよい。
また、第1の記憶部は、第1の識別子が特定された場合、第1の識別子を記憶し、第2の識別子については記憶してもよいし、記憶しなくてもよい。また、第1の記憶部は、第2の識別子が特定された場合、第2の識別子を記憶し、第1の識別子については記憶してもよいし、記憶しなくてもよい。また、具体的な特定方法は、たとえば、特定の属性を有する情報が第1の記憶部に登録された日付や、特定の属性を有する情報の検索頻度に応じて特定する。
また、第1の記憶部は、第1の識別子または第2の識別子のうち少なくとも特定の属性を有する情報が第1の記憶部に登録された日付および現在の日付の比較結果に基づいて特定された識別子を第1のデータストアの制御によって記憶する。たとえば、登録された日付と現在の日付が1か月以内であれば、第1の記憶部は、少なくとも第1の識別子を記憶する。また、たとえば、登録された日付と現在の日付が1か月を超えていれば、第1の記憶部は、少なくとも第2の識別子を記憶する。具体的には、現在の日付が“2011/8/31”であり、特定の属性を有する情報が第1の記憶部に登録された日付が“2011/8/1”であれば、第1の記憶部は、少なくとも第1の識別子を記憶する。
また、第1の記憶部は、第1の識別子または第2の識別子のうち少なくとも特定の属性を有する情報と更新部407によって更新された検索条件の履歴とに基づいて特定された識別子を記憶する。検索条件の履歴は、検索状況テーブル412に記憶されている。たとえば、検索条件の履歴として、過去1か月以内のレコードを取得する検索条件を受け付けた回数が管理者によって指定された閾値より大きいとする。このとき、特定の属性を有する情報が過去1か月以内のレコードである場合、第1の記憶部は、少なくとも第1の識別子を記憶する。また、過去1か月以内のレコードを取得する検索条件を受け付けた回数が指定された閾値以下であり、特定の属性を有する情報が過去1か月以内のレコードである場合、第1の記憶部は、少なくとも第2の識別子を記憶する。
決定部403は、検索部402によって検索された検索条件に合致する情報に基づいて、第1の識別子および第2の識別子のうち第1のデータストアとは異なる第2のデータストアの制御によって指定される値を記憶する第2の記憶部へのアクセスに用いる識別子を決定する。第2の記憶部は、たとえば、データストア#1によって制御される記憶領域、またはデータストア#2によって制御される記憶領域である。第1の識別子および第2の識別子のうちどちらの識別子を用いるかについての決定方法については、たとえば、検索条件に合致する情報の第1の記憶部に登録された日付や、検索条件に合致する情報への検索頻度、または第1の識別子の有無に応じて特定する。
また、決定部403は、検索部402によって検索された検索条件に合致する情報が第1の記憶部に登録された日付および現在の日付の比較結果に基づいて、第1の識別子および第2の識別子のうち第2の記憶部へのアクセスに用いる識別子を決定してもよい。たとえば、検索されたレコードの登録された日付と現在の日付が1か月以内であれば、決定部403は、第2の記憶部へのアクセスに用いる識別子を第1の識別子に決定する。また、たとえば、検索されたレコードの登録された日付と現在の日付が1か月を超えていれば、決定部403は、第2の記憶部へのアクセスに用いる識別子を第2の識別子に決定する。
また、決定部403は、検索部402によって検索された検索条件に合致する情報が第1の識別子を有する場合、第2の記憶部へのアクセスに用いる識別子を第1の識別子に決定してもよい。たとえば、検索されたレコードが第1の識別子を有していれば、決定部403は、第2の記憶部へのアクセスに用いる識別子を第1の識別子に決定する。
また、決定部403は、検索部402によって検索された検索条件に合致する情報と更新部407によって更新された検索条件の履歴とに基づいて、第1の識別子および第2の識別子のうち第2の記憶部へのアクセスに用いる識別子を決定してもよい。
たとえば、検索条件の履歴として、過去1か月以内のレコードを取得する検索条件を受け付けた回数が管理者によって指定された閾値より大きいとする。このとき、検索されたレコードが過去1か月以内のレコードであれば、決定部403は、第2の記憶部へのアクセスに用いる識別子を第1の識別子に決定する。また、過去1か月以内のレコードを取得する検索条件を受け付けた回数が閾値以下であり、検索されたレコードが過去1か月以内のレコードであれば、決定部403は、第2の記憶部へのアクセスに用いる識別子を第2の識別子に決定する。
決定部403の機能により、検索装置101は、検索頻度が高いレコードであれば、格納位置を示す識別子を生成せずに済む第1の識別子を用いることができ、検索頻度が低いレコードであれば、移行時に変更せずに済む第2の識別子を用いることができる。また、決定結果は、RAM303、磁気ディスク305といった記憶領域に記憶される。
生成部404は、決定部403によって決定された識別子が第2の識別子である場合、第2の識別子および指定される値の格納位置の関係を示す情報と第2の識別子とに基づいて、指定される値の格納位置を示す識別子を生成する。第2の識別子および指定される値の格納位置の関係を示す情報は、識別子生成ルールテーブル111で記憶される情報である。
たとえば、指定される値の格納位置の関係を示す情報は、特定の文字情報であり、文字情報の一部を第2の識別子に置き換えることにより、指定される値の格納位置を示す識別子となる情報である。具体的に、指定される値の格納位置の関係を示す情報は、“/data/file#{識別子}”である。{識別子}を第2の識別子に置き換えることにより、生成部404は、指定される値の格納位置を示す識別子を生成する。なお、指定される値の格納位置の関係を示す情報は、置き換えを行う以外に、たとえば、指定される値の格納位置の関係を示す情報と、第2の識別子を結合することにより、指定される値の格納位置を示す識別子を生成できるような情報であってもよい。この場合の指定される値の格納位置の関係を示す情報は、“/data/file#”である。
また、生成部404は、第2のデータストアとは異なる第3のデータストアの制御によって指定される値の第3の記憶部への格納位置を示す識別子を生成してもよい。具体的に、生成部404は、第2の識別子および指定される値の第3の記憶部への格納位置の関係を示す情報と、第2の識別子とから、第3の記憶部への格納位置を示す識別子を生成してもよい。
たとえば、第3の記憶部への格納位置の関係を示す情報が、“/data/usr1/file−{識別子}”であり、第2の識別子が“99”であるとする。生成部404は、第3の記憶部への格納位置を示す識別子を“/data/usr1/file−99”のように生成する。
また、検索部402によって検索された検索条件に合致する情報に、第2の識別子がない場合もあり得る。しかし、この場合、検索条件に合致する情報は第1の識別子を有している。したがって、生成部404は、第1の識別子から第2の識別子を抽出し、抽出した値と、第2の識別子および指定される値の第3の記憶部への格納位置の関係を示す情報とから、第3の記憶部への格納位置を示す識別子を生成してもよい。生成部404の機能により、検索装置101は、指定された値にアクセスすることができる。
アクセス部405は、生成部404によって生成された格納位置を示す識別子または第1の識別子を用いて、指定される値にアクセスする。たとえば、生成部404によって、格納位置を示す識別子である“/data/file#88”が生成された場合、アクセス部405は、“/data/file#88”に格納された値にアクセスする。
また、アクセス部405は、生成部404によって生成された第2の記憶部への格納位置を示す識別子または第1の識別子を用いて第2の記憶部から指定された値を読み込む。続けて、アクセス部405は、読み込んだ値を生成部404によって生成された第3の記憶部への格納位置を示す識別子を用いて第3の記憶部へ書き込む。たとえば、アクセス部405は、識別子“/data/file#99”を用いて指定された値を第2の記憶部から読み込む。続けて、アクセス部405は、識別子“/data/usr1/file−99”を用いて指定された値を第3の記憶部に書き込む。アクセス部405の機能により、検索装置101は、検索処理または移行処理の対象となった値にアクセスできる。
削除部406は、第1の記憶部に記憶された特定の属性を有する情報に基づいて、特定の属性を有する情報が有する第1の識別子を削除する。削除部406は、たとえば、特定の属性を有する情報の第1の記憶部に登録された日付や、特定の属性を有する情報への検索頻度に応じて、第1の識別子を削除する。具体的には、特定の属性を有する情報の登録された日付と現在の日付が1か月より離れていれば、削除部406は、特定の属性を有する情報の第1の識別子を削除する。
なお、特定の属性を有する情報に第2の識別子がない状態で第1の識別子を削除する場合、削除部406は、第1の識別子に含まれる第2の識別子を抽出し、抽出した値を第1の記憶部に書き込んでから、第1の識別子を削除する。削除部406の機能により、検索装置101は、第1の記憶部の記憶量を削減することができる。
更新部407は、受付部401によって検索要求を受け付けた場合、検索条件の履歴を更新する。検索条件の履歴は、第1の識別子を削除する。たとえば、受付部401が過去1か月以内という検索条件を有する検索要求を受け付けた場合、更新部407は、1か月以内の検索条件を受け付けた回数をインクリメントする。更新部407の機能により、検索装置101は、実際に検索された検索状況を用いることができる。
変更部408は、決定部403によって決定された識別子が第1の識別子である場合、第1の記憶部に記憶された第1の識別子を、生成部404によって生成された第3の記憶部への格納位置を示す識別子に変更する。たとえば、変更部408は、第1の記憶部に記憶された第1の識別子“/data/file#99”を生成部404によって生成された識別子“/data/usr1/file−99”に変更する。変更部408の機能により、検索装置101は、移行先のデータストアに書き込んだ値にアクセスできる。
インデクスアダプタ409は、検索インデクスごとのプロトコルやデータ形式の違いを吸収して、同一のAPI(Application Programming Interface)で検索インデクスとなるデータストア#0にアクセスできるようにするソフトウェアである。また、データストアアダプタ410は、データストアごとのプロトコルやデータ形式の違いを吸収して、同一のAPIでデータストア#1やデータストア#2にアクセスできるようにするソフトウェアである。
図5は、データストア群の記憶内容の一例を示す説明図である。本実施の形態で示すデータストア統合システム100は、ライフログデータを蓄積する。図5に示すデータストア#0が制御する記憶領域は、レコード112−1〜レコード112−7を記憶する。また、図5に示すデータストア#1が制御する記憶領域は、レコード501−1〜レコード501−3を記憶する。さらに、図5に示すデータストア#2が制御する記憶領域は、画像ファイルfile#99、画像ファイルfile#98を記憶する。さらに、レコード112−1〜レコード112−3は、検索頻度が高いレコードであるとする。また、レコード112−4〜レコード112−7は、検索頻度が低いレコードであるとする。
データストア#0が制御する記憶領域は、日付、歩数、識別子、ランチコメント、ランチ写真という5つのフィールドを有する。日付フィールドは、対象となるレコードが、ユーザの操作によるアプリによって登録された日、またはセンサが情報を登録した日を格納する。なお、日付フィールドは、時刻を含んでいてもよい。歩数フィールドは、日付フィールドで指定された日におけるユーザの歩数を格納する。識別子フィールドは、ランチコメントフィールドとランチ写真フィールドによって指定される値を識別するデータストア非依存識別子である。具体的に、識別子フィールドは、ランチコメントフィールドに格納される識別子およびランチ写真フィールドに格納される識別子のシリアル番号である。具体的には、識別子フィールドは、1から採番される数値である。
ランチコメントフィールドは、日付フィールドで指定された日におけるランチに対するユーザのコメントとなる文字情報の格納位置を示す識別子である。具体的には、文字情報は、データストア#1が制御する記憶領域内に格納されている。ランチ写真フィールドは、日付フィールドで指定された日におけるランチを写した画像情報の格納情報を示す識別子である。具体的には、画像情報は、データストア#2に格納されている。
データストア#1が制御する記憶領域は、識別子となるキーと、キーに対応するランチコメントと、いう2つのフィールドを有する。KVSの仕様上、キーフィールドには任意の文字列が設定可能である。本実施の形態の例では、キーフィールドには、データストア#0が制御する記憶領域内の対応するレコード内のランチコメントフィールドと同一の文字列が設定されるとする。ランチコメントフィールドには、ランチに対するユーザのコメントとなる文字情報が設定される。たとえば、レコード501−1は、キーが“key#99”であり、ランチコメントが“美味”であることを示す。
データストア#2が制御する記憶領域は、ディレクトリ構造を有する。図5で示すデータストア#2が制御する記憶領域は、“data”ディレクトリ内にユーザのランチを写した画像情報が格納されている。画像情報は、たとえば、画像ファイルfile#99、画像ファイルfile#98である。画像ファイルfile#99の識別子はファイルパスとなる“/data/file#99”である。画像ファイルfile#98の識別子はファイルパスとなる“/data/file#98”である。
たとえば、レコード112−1は、“2011/8/31”におけるライフログデータの歩数属性が5000歩であることを示す。また、レコード112−1は、ランチコメント属性によって指定される値となる文字情報が、データストア依存識別子であるランチコメントフィールド“key#99”が示すレコード501−1より“美味”であることを示す。また、レコード112−1は、ランチ写真属性によって指定される値となる画像情報が、ランチ写真フィールド“/data/file#99”が示すファイルパスを有する画像ファイルfile#99であることを示す。
図6は、格納方式定義ルールテーブルの記憶内容の一例を示す説明図である。図6に示す格納方式定義ルールテーブル411は、レコード411−1〜レコード411−3を記憶している。なお、格納方式定義ルールテーブル411の1レコード分の情報を、格納方式定義ルール情報と呼称する。格納方式定義ルールテーブル411は、属性名、格納先という2つのフィールドを含む。属性名フィールドには、ライフログデータの属性名が格納される。格納先フィールドには、属性によって指定される値が格納されている記憶領域を制御するデータストアの識別情報が格納される。
たとえば、レコード411−1は、ライフログデータの属性のうち、日付属性と歩数属性によって指定される値が、データストア#0が制御する記憶領域に格納されていることを示す。また、レコード411−2は、ライフログデータの属性のうち、ランチコメント属性によって指定される値が、データストア#1が制御する記憶領域に格納されていることを示す。同様に、レコード411−3は、ランチ写真属性によって指定される値が、データストア#2が制御する記憶領域に格納されていることを示す。
図7は、識別子生成ルールテーブルの記憶内容の一例を示す説明図である。図7に示す識別子生成ルールテーブル111は、レコード111−1、レコード111−2を記憶している。なお、識別子生成ルールテーブル111の1レコード分の情報を、識別子生成ルールと呼称する。識別子生成ルールテーブル111は、格納先、識別子生成ルールという2つのフィールドを含む。格納先フィールドには、ライフログデータの属性によって指定値の格納先となる記憶領域を制御するデータストア名が格納される。識別子生成ルールフィールドには、データストア非依存識別子および指定される値の格納位置の関係を示す情報が格納される。
たとえば、レコード111−1は、データストア#1の識別子生成ルールが、“key#{識別子}”であることを示す。具体的に、データストア非依存識別子が1であれば、検索装置101は、データストア依存識別子を、“key#1”のように生成する。
図8は、検索状況テーブルの記憶内容の一例を示す説明図である。図8に示す検索状況テーブル412は、レコード412−1〜レコード412−3を記憶している。なお、検索状況テーブル412の1レコード分の情報を、検索状況情報と呼称する。検索状況テーブル412は、期間、検索回数という2つのフィールドを含む。期間フィールドには、検索条件の中の期間が格納される。検索回数フィールドには、該当の期間に対して検索された回数が格納される。
たとえば、レコード412−1は、アプリからの検索条件が1か月以内であった回数が、100回であることを示す。また、レコード412−2は、アプリからの検索条件が半年以内であった回数が、50回であることを示す。続けて、図5〜図8で示した記憶内容を用いて、検索装置101が行う、登録処理、検索処理、識別子削除処理、移行処理の動作例を、図9〜図12に示す。
図9は、登録処理の動作例を示す説明図である。図9では、データストア群203へのライフログデータの登録処理について説明する。ライフログデータ901は、たとえば、ユーザによって操作されたクライアント201上で動作するアプリ、またはクライアント201内のセンサによって生成される。具体的に、データストア#0が制御する記憶領域の日付フィールドに格納される値は、ユーザによるアプリの操作日となる。また、歩数フィールドに格納される値は、センサによってカウントされた値となる。データストア#1が制御する記憶領域のランチコメントに格納される情報は、ユーザによるアプリの操作によって生成された情報である。データストア#2が制御する記憶領域の画像ファイルは、ユーザによる操作によって検索装置101のカメラデバイスが生成したファイルである。
たとえば、図9では、ライフログデータ901は、日付が“2011/8/31”であり、歩数が5000歩であり、ランチコメントが“美味”であり、ランチ写真が画像ファイル902であるとしている。
アプリは、ライフログデータ901を検索装置101に送信する。ライフログデータ901を受け付けた検索装置101は、データストア#0が制御する記憶領域に新規レコードとなるレコード112−1を追加する。次に、検索装置101は、レコード112−1の日付フィールドに“2011/8/31”を格納する。また、検索装置101は、レコード112−1の歩数フィールドに、“5000”を格納する。さらに、検索装置101は、レコード112−1の識別子フィールドに検索装置101が採番した“99”を格納する。
続けて、検索装置101は、識別子“99”を用いて、データストア依存識別子である“key#99”を生成して、レコード112−1のランチコメントフィールドに、生成したデータストア依存識別子を格納する。同様に、検索装置101は、識別子“99”を用いて、データストア依存識別子である“/data/file#99”を生成して、レコード112−1のランチ写真フィールドに、生成したデータストア依存識別子を格納する。
さらに、検索装置101は、データストア#1に、キーフィールドが“key#99”であり、ランチコメントフィールドが“美味”であるレコード501−1を追加する。続けて、検索装置101は、データストア#2の、“/data/file#99”となるファイルパスに、画像ファイル902を格納する。格納された画像ファイルは、図5で示した画像ファイルfile#99と同一である。
図10は、識別子削除処理の対象となるデータの一例を示す説明図である。図10では、データストア群203にて、データストア依存識別子を削除する対象について説明する。グラフ1001は、データストア群203への検索回数を示している。グラフ1001の横軸は、日付を示す。グラフ1001の縦軸は、検索回数を示す。
グラフ1001が示すように、データストア群203に格納されているライフログデータのうち、最新のライフログデータから、図10で示す最頻検索期間に含まれるライフログデータが、検索回数が多くなる傾向にある。最頻検索期間とは、現日付から一定期間前の日付とする。一定期間は、たとえば、1週間、1か月等である。このように、検索回数がライフログデータで偏る理由として、クライアント201上のアプリが表示する情報、または検索する情報は、最新のライフログデータから一定期間までのライフログデータとなることが多いためである。なお、最頻検索期間に含まれるライフログデータの数は少なく、最頻検索期間以降のライフログデータの数は多い。
したがって、データストア#0が制御する記憶領域のレコード群のうち、最頻検索期間に含まれるレコードに関して、検索装置101は、データストア依存識別子とデータストア非依存識別子を保存する。また、最頻検索期間以降のレコードに関して、検索装置101は、データストア非依存識別子を保存して、データストア依存識別子を削除する。
これにより、検索対象になる可能性の高い、最頻検索期間に含まれるレコードはデータストア依存識別子を有しており、データストア依存識別子を生成しなくてよいため、検索装置101は、検索性能を向上できる。また、移行時において、検索装置101は、最頻検索期間に含まれるレコードのデータストア依存識別子を変更することになるが、最頻検索期間に含まれるレコードは数が少ないため、移行負荷を小さくすることができる。
また、最頻検索期間以降のレコードはデータストア非依存識別子を有しており、移行時に変更を要するデータストア依存識別子を有していない。最頻検索期間以降のレコードは数が多いため、移行時において、検索装置101は、移行負荷を低減することができる。また、検索時において、検索装置101は、最頻検索期間以降のレコードのデータストア依存識別子を生成することになるが、最頻検索期間以降のレコードは検索対象となる機会が少ないため、検索性能への影響を小さくすることができる。
図11は、検索処理の動作例を示す説明図である。図11では、データストア群203への検索処理について説明する。検索装置101は、検索要求を受け付けると、データストア#0に検索要求を通知する。データストア#0は、自身が制御する記憶領域に格納しているレコード群のうち、検索要求の検索条件に合致するレコードを抽出する。図11では、レコード112−1〜レコード112−7が検索条件に合致するレコードであるとする。
レコード112−1〜レコード112−7を取得した検索装置101は、ランチコメントフィールドとランチ写真フィールド、または識別子フィールドのいずれかを用いてランチコメント属性によって指定される値とランチ写真属性によって指定される値を取得する。なお、図11と図12では、説明の簡略化のため、ランチ写真によって指定される値を取得する場合について説明する。ランチコメント属性によって指定される値の取得方法も、ランチ写真属性によって指定される値の取得方法と同一であるため、図11での表記を省略する。
図11では、レコード112−1〜レコード112−3に関して、検索装置101は、検索頻度が高いと判断したとする。また、レコード112−4〜レコード112−7に関して、検索装置101は、検索頻度が低いと判断したとする。ここで、具体的な判断基準としては、たとえば、検索装置101は、日付フィールドが最頻検索期間内に含まれるレコードを、検索頻度が高いレコードであると判断してもよい。図11で示す例は、最頻検索期間を1か月に設定した例となる。または、検索状況テーブル412を参照して、検索回数が特定の閾値以上となる期間に含まれるレコードを、検索頻度が高いレコードであると判断してもよい。
また、検索頻度が高いか否かの他の判断方法として、検索装置101は、データストア依存識別子の値の有無に応じて判断してもよい。この判断方法を用いた場合、検索装置101は、レコード112−1〜レコード112−4を検索頻度が高いと判断する。また、検索装置101は、データストア依存識別子となるランチコメントフィールドとランチ写真フィールドに“(削除済)”という値が格納されているレコード112−5〜レコード112−7を検索頻度が低いと判断する。
レコード112−1〜レコード112−3に関して、検索頻度が高いため、検索装置101は、ランチコメントフィールドとランチ写真フィールドを用いてランチコメント属性によって指定される値とランチ写真属性によって指定される値を取得する。たとえば、ランチ写真に関して、検索装置101は、ランチ写真フィールドに格納されているファイルパスを用いて、ランチ写真属性によって指定される値となる画像ファイルを取得する。
レコード112−4〜レコード112−7に関して、検索頻度が低いため、検索装置101は、識別子フィールドを用いてランチコメント属性によって指定される値とランチ写真属性によって指定される値を取得する。たとえば、ランチ写真に関して、検索装置101は、識別子フィールドと、ランチ写真が格納されているデータストア#2の識別子生成ルールを用いて、ランチ写真属性によって指定される値となる画像ファイルを取得する。具体的には、レコード112−4に関して、検索装置101は、識別子生成ルール“/data/file#{識別子}”の{識別子}を“88”に置き換えて、画像ファイルの格納位置を示す識別子“/data/file#88”を生成する。次に、検索装置101は、生成した識別子“/data/file#88”を用いて、ランチ写真属性によって指定される値となる画像ファイルを取得する。
図12は、移行処理の動作例を示す説明図である。図12では、データストア群203の移行処理について説明する。図12で行う移行処理は、ランチ写真属性によって指定される値となる画像ファイルを格納するデータストアを、データストア#2からデータストア#3に移行するとする。なお、データストア#3は、データストアの種別がファイルシステムであるとする。
また、移行処理を行う機会として、たとえば、データストア統合システム100の運用開始時には、ファイルシステムとして、開発コストや運用コストの低いローカルファイルシステムにライフログデータの特定の属性によって指定される値を格納していたとする。しかし、運用を続けていくうちに、指定される値の記憶量が増加したため、スケーラビリティが高い分散ファイルシステムに特定の属性によって指定される値を移行するといった場合である。また、移行処理を行う他の機会としては、データストア統合システム100を利用するユーザが増大したため、ファイルシステムの階層を追加し、ユーザグループ単位でディレクトリを分けるように変更する場合である。
図12では、移行元の情報が記載された格納方式定義ルールテーブル411を、格納方式定義ルールテーブル411_Sとして示す。また、移行先の情報が記載された格納方式定義ルールテーブル411を、格納方式定義ルールテーブル411_Dとして示す。また、移行元の情報が記載された識別子生成ルールテーブル111を、識別子生成ルールテーブル111_Sとして示す。また、移行先の情報が記載された識別子生成ルールテーブル111を、識別子生成ルールテーブル111_Dとして示す。
具体的に、格納方式定義ルールテーブル411_Sのレコード411−3_Sは、ランチ写真属性によって指定される値が移行元となるデータストア#2に格納されていることを示す。また、格納方式定義ルールテーブル411_Dのレコード411−3_Dは、ランチ写真属性によって指定される値が移行先となるデータストア#3に格納することを示す。さらに、識別子生成ルールテーブル111_Sのレコード111−2_Sは、データストア#2での識別子生成ルールが、“/data/file#{識別子}”であることを示す。また、識別子生成ルールテーブル111_Dのレコード111−2_Dは、データストア#3での識別子生成ルールが、“/data/usr1/file−{識別子}”であることを示す。
図12では、レコード112−1〜レコード112−3に関して、検索装置101は、検索頻度が高いと判断したとする。また、レコード112−4〜レコード112−7に関して、検索装置101は、検索頻度が低いと判断したとする。検索頻度の判断基準は、図11で示した判断基準と同一であるため、説明を省略する。
レコード112−1〜レコード112−3に関して、検索頻度が高いため、検索装置101は、ランチ写真フィールドの値をデータストア#2での格納位置を示す値から、データストア#3での格納位置を示す値に変更する。具体的に、レコード112−1に関して、検索装置101は、ランチ写真フィールドの値を“/data/file#99”から“/data/usr1/file−99”に変更する。また、検索装置101は、ランチ写真属性によって指定される値となる画像ファイルをデータストア#2からデータストア#3に移動する。次に、図10〜図12で示した動作を行うフローチャートについて、図13〜図17を用いて説明する。
図13は、識別子削除処理手順の一例を示すフローチャートである。図13では、データストア#0に対する識別子削除処理の一例について説明する。識別子削除処理は、検索装置101が有するタイマの満了によって定期的に実行されてもよい。または、識別子削除処理は、管理者による指示によって実行されてもよい。また、検索装置101は、識別子削除処理を実行した際の対象データの最新日付を記録している。
検索装置101は、検索状況テーブル412から検索状況情報を取得する(ステップS1301)。次に、検索装置101は、前回の識別子削除処理の対象データの最新日付を読み出す(ステップS1302)。なお、前回の識別子削除処理の対象データの最新日付が記憶されていない場合もありうる。この場合、検索装置101は、データストア#0が記憶する記憶領域のレコード群の日付フィールドのうち、最も古い日付を前回の識別子削除処理の対象データの最新日付とする。
続けて、検索装置101は、格納方式定義ルールテーブル411から、格納方式定義ルール情報を取得する(ステップS1303)。次に、検索装置101は、データストア#0が制御する記憶領域の日付フィールドが前回の識別子削除処理の対象データの最新日付より新しいレコード群から、最頻検索期間に含まれないレコードを検索する(ステップS1304)。
続けて、検索装置101は、検索結果が空か否かを判断する(ステップS1305)。検索結果が空でない場合(ステップS1305:No)、検索装置101は、検索結果の各レコードのデータストア依存識別子を削除する(ステップS1306)。次に、検索装置101は、識別子削除処理の対象データの最新日付を記憶する(ステップS1307)。ステップS1307の実行終了後、または検索結果が空である場合(ステップS1305:Yes)、検索装置101は、識別子削除処理を終了する。このように、図13で示した識別子削除処理は、読み出されることがないデータストア依存識別子を削除することになり、データストア#0が制御する記憶領域の記憶量を減らすことができる。
図14は、検索処理手順の一例を示すフローチャート(その1)である。図14と図15では、データストア群203への検索処理の一例について説明する。検索装置101は、アプリから検索要求を受け付ける(ステップS1401)。次に、検索装置101は、格納方式定義ルールテーブル411から、格納方式定義ルール情報を取得する(ステップS1402)。続けて、検索装置101は、格納方式定義ルール情報を取得できたか否かを判断する(ステップS1403)。取得できなかった場合(ステップS1403:No)、検索装置101は、エラーをアプリに返却する(ステップS1404)。ステップS1404の処理を終了後、検索装置101は、検索処理を終了する。
取得できた場合(ステップS1403:Yes)、検索装置101は、検索条件に応じて、検索状況テーブル412を更新する(ステップS1405)。ステップS1405の処理について、たとえば、検索条件が1か月以内である場合、検索装置101は、レコード412−1の検索回数フィールドの値をインクリメントする。また、検索条件が半年以内である場合、検索装置101は、レコード412−2の検索回数フィールドの値をインクリメントする。
続けて、検索装置101は、検索インデクスから検索条件に合致するレコードを検索する(ステップS1406)。次に、検索装置101は、検索結果が空か否かを判断する(ステップS1407)。検索結果が空である場合(ステップS1407:Yes)、検索装置101は、空の検索結果をアプリに返却する(ステップS1408)。ステップS1408の処理を終了後、検索装置101は、検索処理を終了する。
検索結果が空でない場合(ステップS1407:No)、検索装置101は、検索結果のレコード群のうち、先頭のレコードを選択する(ステップS1409)。ステップS1409の処理を終了後、検索装置101は、図15で示すステップS1501の処理に移行する。
図15は、検索処理手順の一例を示すフローチャート(その2)である。ステップS1409の処理を終了後、検索装置101は、選択されたレコード内の属性によって指定される値について、検索インデクス内のデータストア依存識別子を用いるか否かを判断する(ステップS1501)。なお、ステップS1501の処理である検索インデクス内のデータストア依存識別子を用いるか否かの判断方法は、たとえば、図10で示した選択されたレコードの日付フィールドを参照する方法である。
検索インデクス内のデータストア依存識別子を用いない場合(ステップS1501:No)、検索装置101は、識別子生成ルールテーブル111から、識別子生成ルール情報を取得する(ステップS1502)。次に、検索装置101は、取得した識別子生成ルール情報を用いて、データストア依存識別子を生成する(ステップS1503)。
次に、検索装置101は、ステップS1503の処理で生成したデータストア依存識別子、または検索インデクス内のデータストア依存識別子を用いて(ステップS1501:Yes)、データストア群203から属性によって指定される値を取得する(ステップS1504)。続けて、検索装置101は、検索結果のレコード群全てについて属性によって指定される値を取得したか否かを判断する(ステップS1505)。属性によって指定される値を取得していないレコードがある場合(ステップS1505:No)、検索装置101は、検索結果のレコード群のうち次のレコードを選択する(ステップS1506)。ステップS1506の終了後、検索装置101は、ステップS1501の処理に移行する。
検索結果のレコード群全てについて属性によって指定される値を取得した場合(ステップS1505:Yes)、検索装置101は、取得した値を集約する(ステップS1507)。次に、検索装置101は、集約した値をアプリに返却する(ステップS1508)。ステップS1508の処理を終了後、検索装置101は、検索処理を終了する。このように、図14と図15で示した検索処理は、アプリが要求した検索要求に対応する検索結果を返却することができる。
図16は、移行処理手順の一例を示すフローチャート(その1)である。図16と図17では、データストア群203の移行処理の一例について説明する。検索装置101は、管理者端末から移行要求を受け付ける(ステップS1601)。次に、検索装置101は、格納方式定義ルールテーブル411から、移行元および移行先の格納方式定義ルール情報を取得する(ステップS1602)。続けて、検索装置101は、移行元および移行先の格納方式定義ルール情報を取得できたか否かを判断する(ステップS1603)。
取得できなかった場合(ステップS1603:No)、検索装置101は、エラーを管理者端末に返却する(ステップS1604)。ステップS1604の処理終了後、検索装置101は、移行処理を終了する。取得できた場合(ステップS1603:Yes)、検索装置101は、検索インデクスから検索条件に合致したレコードを検索する(ステップS1605)。なお、ステップS1605の検索条件は、たとえば、検索インデクスのレコード群のうち、移行対象となる属性によって指定される値を有するという検索条件であってもよいし、検索インデクスのレコード群全てという検索条件であってもよい。
次に、検索装置101は、検索結果のレコード群のうち、先頭のレコードを選択する(ステップS1606)。ステップS1606の処理を実行後、検索装置101は、図17に示すステップS1701の処理に移行する。
図17は、移行処理手順の一例を示すフローチャート(その2)である。検索装置101は、選択されたレコード内の属性によって指定される値について、検索インデクス内のデータストア依存識別子を用いるか否かを判断する(ステップS1701)。なお、ステップS1701の処理である検索インデクス内のデータストア依存識別子を用いるか否かの判断方法は、たとえば、図10で示した選択されたレコードの日付フィールドを参照する方法である。
検索インデクス内のデータストア依存識別子を用いない場合(ステップS1701:No)、検索装置101は、移行元のデータストア依存識別子を生成する(ステップS1702)。続けて、検索装置101は、移行先のデータストア依存識別子を生成する(ステップS1703)。次に、検索装置101は、移行元および移行先のデータストア依存識別子を用いて、移行元データストアから移行先データストアへ属性によって指定される値を移行する(ステップS1704)。ステップS1704の具体的な処理として、検索装置101は、移行元のデータストア依存識別子を用いて、移行元データストアが制御する記憶領域から指定された値を読み込む。続けて、検索装置101は、移行先のデータストア依存識別子を用いて、移行先データストアが制御する記憶領域に読み込んだ値を書き込む。
検索インデクス内のデータストア依存識別子を用いる場合(ステップS1701:Yes)、検索装置101は、移行先のデータストア依存識別子を生成する(ステップS1705)。次に、検索装置101は、検索インデクス内のデータストア依存識別子および移行先のデータストア依存識別子を用いて、移行元データストアから移行先データストアへ属性によって指定される値を移行する(ステップS1706)。ステップS1706の具体的な処理として、検索装置101は、検索インデクス内のデータストア依存識別子を用いて、移行元データストアが制御する記憶領域から指定された値を読み込む。続けて、検索装置101は、移行先のデータストア依存識別子を用いて、移行先データストアが制御する記憶領域に読み込んだ値を書き込む。続けて、検索装置101は、検索インデクス内のデータストア依存識別子を、生成した移行先のデータストア依存識別子に変更する(ステップS1707)。
ステップS1704、またはステップS1707の処理を実行後、検索装置101は、検索結果のレコード群全てについて属性によって指定される値を移行したか否かを判断する(ステップS1708)。属性によって指定される値を移行していないレコードがある場合(ステップS1708:No)、検索装置101は、次のレコードを選択する(ステップS1709)。ステップS1709の実行終了後、検索装置101は、ステップS1701の処理に移行する。
検索結果のレコード群全てについて属性によって指定される値を移行した場合(ステップS1708:Yes)、検索装置101は、移行結果を管理者端末に返却する(ステップS1710)。ステップS1710の処理終了後、検索装置101は、移行処理を終了する。このように、図16と図17で示した移行処理は、管理者端末が要求した移行要求に対応する属性によって指定される値の移行処理を行うことができる。
以上説明したように、検索装置、検索方法、および検索プログラムによれば、検索頻度の高い情報にはデータストアでの属性によって指定される値の格納位置を付与し、低い情報には属性によって指定される値の識別子を付与して格納位置を求める。
これにより、検索装置は、特定のデータストアに格納されたデータを他のデータストアに移行する場合、検索インデクス内のデータストア依存識別子を変更するレコード数が検索インデクス全てのレコード数より少なくなるため、移行負荷を低減できる。移行負荷が低減できることにより、たとえば、検索装置は、移行処理中の登録処理、または検索処理の性能低下を抑制することができる。また、検索装置は、検索頻度の高いレコードに関して、データストア依存識別子を有しているため、データストア依存識別子を生成しなくてよく、検索性能を向上できる。このように、検索装置は、検索インデクスの移行負荷の低減と検索性能の向上という両立を達成することができる。
また、検索装置は、検索条件に合致する情報が登録された日付と現在の日付の比較結果に基づいて、データストア依存識別子とデータストア非依存識別子のうちどちらの識別子を用いてデータストアが制御する記憶領域にアクセスするかを決定してもよい。これにより、検索装置は、実際の検索状況を取得せず日付の比較という単純な処理によって、検索頻度が高いレコードを特定できる。
また、検索装置は、検索条件に合致する情報にデータストア依存識別子があれば、データストア依存識別子を用いてデータストアが制御する記憶領域にアクセスするかを決定してもよい。この場合、検索頻度が低い情報については、データストア非依存識別子を付与しておかないこととする。これにより、検索装置は、比較処理も行わずに検索頻度が高いレコードを特定できる。
また、検索装置は、検索条件の履歴を更新し、検索条件の履歴を用いてデータストア依存識別子とデータストア非依存識別子のうちどちらの識別子を用いてデータストアが制御する記憶領域にアクセスするかを決定してもよい。これにより、検索装置は、実際の検索状況に応じて、検索頻度が高いレコードを特定できる。
また、検索装置は、データストア依存識別子とデータストア非依存識別子のうち少なくとも特定の属性を有する情報が登録された日付と現在の日付の比較結果に基づいて特定された識別子を記憶してもよい。これにより、検索装置は、実際の検索状況を取得せず日付の比較という単純な処理によって、検索頻度が高い情報についてはデータストア依存識別子を用いてアクセスするように設定することができる。
また、検索装置は、検索条件の履歴を更新し、検索条件の履歴を用いてデータストア依存識別子とデータストア非依存識別子のうち少なくとも特定の属性を有する情報が登録された日付と現在の日付の比較結果に基づいて特定された識別子を記憶してもよい。これにより、検索装置は、実際の検索状況に応じて、検索頻度が高い情報についてはデータストア依存識別子を用いてアクセスするように設定することができる。
また、検索装置は、特定の属性を有する情報に基づいて、データストア依存識別子を削除してもよい。これにより、検索装置は、データストア依存識別子を記憶する検索インデクスの記憶量を低減できる。
また、検索装置は、移行対象となる検索条件に合致する情報を検索し、データストア依存識別子を用いてアクセスする情報について、データストア依存識別子を移行元から移行先に変更する。データストア非依存識別子を用いてアクセスする情報については変更しなくてよいため、検索装置は、移行処理の負荷を従来の検索装置より低減することができる。
なお、本実施の形態で説明した検索方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検索プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検索プログラムは、インターネット等のネットワークを介して配布してもよい。