説明

検索装置、検索方法及び検索プログラム

【課題】データベースとの不整合を生じることなく検索の応答時間を短縮する。
【解決手段】応答データを構成する個別のドキュメントをフラグメントキャッシュ保存部111に保存しておき、ドキュメント取得部106は、取得するドキュメントがフラグメントキャッシュ保存部111に存在すればフラグメントキャッシュ保存部111からドキュメントを取得し、存在しなければ、RDBMS2からドキュメントを取得する。これにより、ドキュメントをRDBMS2から取得する回数を最小限にすることが可能となり、
検索の応答時間を短縮することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メタデータを検索する技術に関する。
【背景技術】
【0002】
従来、クライアントからの検索クエリに該当するメタデータをRelational DataBase Management System(RDBMS)から検索して検索結果を返却するアプリケーションサーバにおいて、初回問い合わせの検索クエリと検索結果をキャッシュとして保存しておき、2回目以降の同一の検索クエリの問い合わせがあった場合にキャッシュから検索結果を返却することで、応答時間を短縮していた(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−175896号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
アプリケーションサーバでは、メタデータがラージオブジェクト型で格納されたxml等の構造化文書である場合、RDBMS上の検索時間やRDBMSからのラージオブジェクトの取得時間がボトルネックとなる。ラージオブジェクトとは、RDBMSに格納するデータの型であり、データページを超えたサイズのデータを格納できるという特徴がある。
【0005】
従来技術のように、初回検索時に返却データをキャッシュしておき、次回以降の問い合わせ時はキャッシュに保存されている返却データを用いることで、応答時間を短縮し、リソースの消費量を低減することができる。しかしながら、検索クエリと返却データを1対1で管理している従来のキャッシュでは、返却データがRDBMS上に格納されたラージオブジェクト型データの集合である場合、RDBMS上で、返却データを構成する1つのラージオブジェクト型データが更新されるとキャッシュされた返却データとRDBMSに不整合が生じるという問題がある。
【0006】
本発明は、上記に鑑みてなされたものであり、返却データがラージオブジェクト型データの集合である場合に、データベースとの不整合を生じることなく検索の応答時間を短縮することを目的とする。
【課題を解決するための手段】
【0007】
第1の本発明に係る検索装置は、ドキュメントを格納したデータベースから検索条件に該当する前記ドキュメントを検索する検索装置であって、検索クエリを受信する受信手段と、前記検索クエリを用いて前記データベースを検索し、当該検索クエリの検索条件に該当するドキュメントに関して、前記ドキュメントの識別子及び前記ドキュメントの格納場所を示す格納場所情報を有する検索結果を取得する検索手段と、以前取得したドキュメント、当該ドキュメントの識別子を格納する第1キャッシュ保存手段と、前記検索結果のドキュメントの識別子に対応するドキュメントが前記第1キャッシュ保存手段に存在するか否か判定し、前記ドキュメントが前記第1キャッシュ保存手段に存在する場合は、前記第1キュッシュ保存手段から前記ドキュメントを取得し、存在しない場合は、前記検索結果の格納場所情報に基づいて前記データベースから前記ドキュメントを取得する取得手段と、前記データベースから取得した前記ドキュメントを当該ドキュメントの識別子とともに前記第1キャッシュ保存手段に格納する格納手段と、前記取得手段が取得した1つ以上の前記ドキュメントを結合して応答データを生成する生成手段と、前記応答データを返却する返却手段と、を有することを特徴とする。
【0008】
第2の本発明に係る検索方法は、検索装置がドキュメントを格納したデータベースから検索条件に該当する前記ドキュメントを検索する検索方法であって、検索クエリを受信するステップと、前記検索クエリを用いて前記データベースを検索し、当該検索クエリの検索条件に該当するドキュメントに関して、前記ドキュメントの識別子及び前記ドキュメントの格納場所を示す格納場所情報を有する検索結果を取得するステップと、前記検索結果のドキュメントの識別子に対応するドキュメントが、以前取得したドキュメント、当該ドキュメントの識別子を格納する前記第1キャッシュ保存手段に存在するか否か判定し、前記ドキュメントが前記第1キャッシュ保存手段に存在する場合は、前記第1キュッシュ保存手段から前記ドキュメントを取得し、存在しない場合は、前記検索結果の格納場所情報に基づいて前記データベースから前記ドキュメントを取得するステップと、前記データベースから取得した前記ドキュメントを当該ドキュメントの識別子とともに前記第1キャッシュ保存手段に格納するステップと、前記取得手段が取得した1つ以上の前記ドキュメントを結合して応答データを生成するステップと、前記応答データを返却するステップと、を有することを特徴とする。
【0009】
第3の本発明に係る検索プログラムは、上記検索方法をコンピュータに実行させるための検索プログラムである。
【発明の効果】
【0010】
本発明によれば、返却データがラージオブジェクト型データの集合である場合に、データベースとの不整合を生じることなく検索の応答時間を短縮することができる。
【図面の簡単な説明】
【0011】
【図1】本実施の形態における検索装置の構成を示す機能ブロック図である。
【図2】レンポンスキャッシュとフラグメントキャッシュを説明する概略図である。
【図3】本実施の形態における検索装置の処理の流れを示すフローチャートである。
【図4】ドキュメントを取得する処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について図面を用いて説明する。
【0013】
図1は、本実施の形態における検索装置1の構成を示す機能ブロック図である。同図に示す検索装置1は、端末3から検索クエリを受信し、RDBMS2から放送番組やビデオ・オン・デマンドコンテンツの番組メタデータを検索して端末3へ返却する装置である。検索クエリとは、端末3から検索装置1への情報検索要求であり、例えば、タイトル、ジャンル、日時等の検索条件を論理演算子や修飾子で結合したものである。端末3は、検索装置1へ検索クエリを送信し、検索クエリに対する検索結果を応答データとして受信するものであり、例えば、Internet Protocol Television(IPTV)サービスにおける受信端末などがある。
【0014】
まず、RDBMS2の構成について説明する。RDBMS2は、複数のアトリビュートテーブル201、ドキュメントテーブル202、一次検索結果テーブル203、およびキャッシュ管理テーブル204で構成される。アトリビュートテーブル201は、番組メタデータが記述されたドキュメントを属性に展開したものであり、コンテンツID(crid)、タイトル、概要、出演者等の番組に関する情報(番組メタデータ)で構成されている。ドキュメントとはXML等で記述された構造化文書のことであり、属性とは名前と値のペアで記述される文書の構成要素のことである。ドキュメントテーブル202は、フラグメントID(fid)、フラグメントバージョン(fver)、コンテンツID(crid)、および番組メタデータを返却単位に分割したドキュメント(フラグメント)をラージオブジェクト型としたものを格納する。一次検索結果テーブル203は、検索クエリから生成したhash値と、検索条件に該当する番組メタデータを持つコンテンツIDのリスト(cridlist)を格納する。キャッシュ管理テーブル204は、hash値と、一次検索結果テーブル203に格納した一次検索結果および後述するレスポンスキャッシュの有効期限を格納する。
【0015】
続いて、検索装置1の構成について説明する。図1に示すように、検索装置1は、クエリ受信部101、キャッシュ有効期限判定部102、構文解析部103、SQL生成部104、検索実行部105、ドキュメント取得部106、応答データ生成部107、応答データ返却部108、レスポンスキャッシュ保存部110、およびフラグメントキャッシュ保存部111を備える。検索装置1が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは検索装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0016】
クエリ受信部101は、端末3から検索クエリを受信する。
【0017】
キャッシュ有効期限判定部102は、受信した検索クエリからhash値を計算し、キャッシュ管理テーブル204からそのhash値に対応する有効期限、つまり検索クエリに対応する有効期限を取得して、一次検索結果とレスポンスキャッシュの有効期限判定を行う。受信した検索クエリと同じ検索クエリにより検索したことがある場合は、有効期限を取得でき、受信した検索クエリと同じ検索クエリにより検索したことがない場合は、有効期限を取得できない。計算したhash値は、有効期限を付してキュッシュ管理テーブル204に格納される。
【0018】
構文解析部103、SQL生成部104、検索実行部105は、hash値に対応する有効期限が存在しない場合、あるいは、hash値が有効期限切れの場合に、検索クエリからSQLを生成し、RDBMS2に対して検索を実行する。具体的には、構文解析部103が検索クエリから構文木を作成し、SQL生成部104がその構文木からSQLを生成し、検索実行部105が生成したSQLによりRDBMS2に対して検索を実行する。
【0019】
ドキュメント取得部106は、RDBMS2から得られる検索結果であるResultSetオブジェクト205からfid、fverを取得し、fidに該当するドキュメント(フラグメント)をフラグメントキャッシュ保存部111、あるいはRDBMS2から取得する。ResultSetオブジェクト205は、fid、fver、および実体データの格納場所を示すoidの情報を含む。ResultSetオブジェクト205から取得したfidに一致するfidのフラグメントがフラグメントキャッシュ保存部111に存在し、ResultSetオブジェクト205から取得したfverがフラグメントキャッシュ保存部111のfver以下の値であれば、fidに該当するフラグメントをフラグメントキャッシュ保存部111から取得する。一致するfidのフラグメントがフラグメントキャッシュ保存部111に存在しない場合、あるいは、ResultSetオブジェクト205から取得したfverがフラグメントキャッシュ保存部111のfverより大きい場合は、ResultSetオブジェクト205のoidに従って、RDBMS2から実体データを取得する。取得した実体データは、フラグメントキャッシュ保存部111に保存する。
【0020】
応答データ生成部107は、ドキュメント取得部106が取得したドキュメントをデリミタで区切り結合したものを応答データとして生成する。生成した応答データは、hash値とともにレスポンスキャッシュ保存部110に保存する。
【0021】
応答データ返却部108は、応答データを端末3へ返却する。検索クエリから生成したhash値が有効期限内であって、hash値に対応する応答データがレスポンスキャッシュ保存部110に存在する場合は、応答データ返却部108がレスポンスキャッシュ保存部110からhash値に対応するレスポンスキャッシュ(応答データ)を読み出して端末3へ返却する。hash値が有効期限切れ、あるいはhash値に対応する応答データがレスポンスキャッシュ保存部110に存在しない場合は、応答データ生成部107が生成した応答データを端末3へ返却する。
【0022】
レスポンスキャッシュ保存部110は、検索クエリから計算したhash値とその検索クエリにより得られた応答データとを関連付けてレスポンスキャッシュとして保存する。
【0023】
フラグメントキャッシュ保存部111は、fid、fverとともにfidに該当するドキュメント(フラグメント)をフラグメントキャッシュとして保存する。
【0024】
図2に、レンポンスキャッシュとフラグメントキャッシュを説明する概略図を示す。同図に示す応答データは、番組A,Bに関する情報を検索して得られたものである。番組単位に単数もしくは複数のフラグメントが存在することができる。図2において、番組Aの番組メタデータはフラグメントa1〜a3、番組Bの番組メタデータはフラグメントb1〜b3である。フラグメントa1〜b3は、ドキュメントテーブル202において、fid、fverに関連付けられて格納されている。応答データは、番組A,Bに関する情報を検索して得られた、番組メタデータの返却単位であるフラグメントa1〜b3を結合したものである。
【0025】
レスポンスキャッシュ保存部110は、検索要求単位で応答データをキャッシュする。具体的には、レスポンスキャッシュ保存部110は、番組A,Bに関する情報を検索するための検索クエリから計算したhash値とフラグメントa1〜b3を結合した応答データとを関連付けて保持する。
【0026】
フラグメントキャッシュ保存部111は、フラグメント単位でフラグメントをキャッシュする。具体的には、フラグメントキャッシュ保存部111は、ドキュメント取得部106がRDBMS2から取得した各フラグメントa1〜b3とfid、fverとを関連付けて保持する。fidは、フラグメントa1〜b3それぞれに一意に割り付けられた識別子である。fverは、フラグメントのバージョンを表す値であり、例えば、番組Aの番組メタデータであるフラグメントa1が更新された場合、fverが1から2へ更新される。fverとして単純に更新時刻を用いてもよい。
【0027】
次に、検索装置1の処理の流れについて説明する。
【0028】
図3は、検索装置1の処理の流れを示すフローチャートである。
【0029】
クエリ受信部101は、端末3から検索クエリを受信すると、検索クエリからhash値を生成する(ステップS101)。
【0030】
そして、キャッシュ有効期限判定部102は、そのhash値に対応する有効期限をRDBMS2のキャッシュ管理テーブル204より取得し(ステップS102)、hash値に対応する有効期限の有無を判定する(ステップS103)。
【0031】
hash値に対応する有効期限が取得できた場合、キャッシュ有効期限判定部102は、その有効期限が期限内か否かを判定する(ステップS104)。期限切れの場合は、一次検索結果テーブル203、キャッシュ管理テーブル204から該当レコードを削除する(ステップS105)。
【0032】
ステップS103においてhash値に対応する有効期限が無いと判定された場合、あるいはステップS104において取得した有効期限が期限切れと判定された場合は、受信した検索クエリを用いて、構文解析部103、SQL生成部104、検索実行部105によりRDBMS2に対して一次検索を実施する(ステップS106)。一次検索とは、検索条件に該当するコンテンツIDをアトリビュートテーブル201から検索するものである。具体的には、検索条件に従って、アトリビュートテーブル201の属性に該当するコンテンツIDを検索する。一次検索結果である、検索条件に該当するコンテンツIDのリスト(cridlist)を、検索クエリから生成したhash値とともに一次検索結果テーブル203に格納する。
【0033】
一方、hash値に対応する有効期限が期限内の場合は、hash値に対応する応答データがレスポンスキャッシュ保存部110に存在するか否か判定する(ステップS107)。
【0034】
レスポンスキャッシュ保存部110にhash値に対応する応答データが存在する場合は、応答データ返却部108は、レスポンスキャッシュ保存部110からその応答データを取得し(ステップS108)、端末3に返却する(ステップS113)。
【0035】
一次検索を実施した後、あるいはhash値に対応する応答データが存在しない場合は、二次検索を実施する(ステップS109)。二次検索とは、一次検索結果テーブル203の一次検索結果とドキュメントテーブル202を結合し、コンテンツIDのリスト(cridlist)に該当するドキュメントをResultSetオブジェクト205として取得するものである。具体的には、一次検索で得られたコンテンツIDのリスト(cridlist)とドキュメントテーブル202をコンテンツID(crid)で内部結合した表を取得する。
【0036】
二次検索後、ドキュメント取得部106が二次検索で得られたResultSetオブジェクト205を参照し、フラグメントキャッシュ保存部111あるいはRDBMS2からドキュメントを取得する(ステップS110)。ドキュメントを取得するステップS110の詳細は後述する。
【0037】
そして、応答データ生成部107が、取得したドキュメントを結合して応答データを生成し(ステップS111)、生成した応答データをhash値とともにレスポンスキャッシュ保存部110に保存する(ステップS112)。
【0038】
そして、応答データ返却部108が生成した応答データを端末3に返却する(ステップS113)。
【0039】
続いて、ドキュメントを取得する処理の流れについて説明する。
【0040】
図4は、ドキュメント取得部106がドキュメントを取得する処理の流れを示すフローチャートである。
【0041】
まず、ドキュメント取得部106は、ResultSetオブジェクト205よりfid,fverを1件取得し(ステップS201)、fid,fverが取得できたか否か判定する(ステップS202)。fid,fverが取得できない場合は、検索条件に該当するすべてのドキュメントを取得したのでドキュメントを取得する処理を終了する。
【0042】
そして、取得したfidに対応するフラグメントがフラグメントキャッシュ保存部111に存在するか否か判定する(ステップS203)。取得したfidに対応するフラグメントがフラグメントキャッシュ保存部111に存在する場合、取得したfverとフラグメントキャッシュ保存部111に格納されたフラグメントキャッシュのfverとを比較する(ステップS204)。
【0043】
取得したfverがフラグメントキャッシュのfver以下の場合は、フラグメントキャッシュ保存部111からドキュメント(フラグメント)を取得する(ステップS205)。
【0044】
一方、取得したfverがフラグメントキャッシュのfverより大きい場合は、ResultSetオブジェクト205のoidに該当するドキュメントをRDBMS2から取得する(ステップS206)。取得したドキュメントは、fid,fverとともにフラグメントキャッシュ保存部111に保存する(ステップS207)。
【0045】
ドキュメントを取得した後は、ステップS201に戻り、これらの処理をResultSetオブジェクト205が保持する全てのfidについて行う。
【0046】
以上説明したように、本実施の形態によれば、応答データを構成する個別のドキュメントをフラグメントキャッシュ保存部111に保存しておき、ドキュメント取得部106は、取得するドキュメントがフラグメントキャッシュ保存部111に存在すればフラグメントキャッシュ保存部111からドキュメントを取得し、存在しなければ、RDBMS2からドキュメントを取得することにより、ドキュメントをRDBMS2から取得する回数を最小限にすることが可能となり、検索の応答時間を短縮することができる。
【0047】
本実施の形態によれば、フラグメントキャッシュ保存部111にドキュメントのバージョンを保存しておき、ドキュメント取得部106は、フラグメントキャッシュ保存部111のドキュメントのバージョンがRDBMS2のドキュメントのバージョンより古い場合は、RDBMS2からドキュメントを取得することにより、キャッシュされたドキュメントとRDBMS2のドキュメントに不整合が生じない。
【0048】
また、レスポンスキャッシュ保存部110に検索要求単位で応答データをキャッシュしておくことで、同一の検索クエリを受信した場合には、より応答時間を短縮することができる。
【符号の説明】
【0049】
1…検索装置
101…クエリ受信部
102…キャッシュ有効期限判定部
103…構文解析部
104…SQL生成部
105…検索実行部
106…ドキュメント取得部
107…応答データ生成部
108…応答データ返却部
110…レスポンスキャッシュ保存部
111…フラグメントキャッシュ保存部
2…RDBMS
201…アトリビュートテーブル
202…ドキュメントテーブル
203…一次検索結果テーブル
204…キャッシュ管理テーブル
205…ResultSetオブジェクト
3…端末

【特許請求の範囲】
【請求項1】
ドキュメントを格納したデータベースから検索条件に該当する前記ドキュメントを検索する検索装置であって、
検索クエリを受信する受信手段と、
前記検索クエリを用いて前記データベースを検索し、当該検索クエリの検索条件に該当するドキュメントに関して、前記ドキュメントの識別子及び前記ドキュメントの格納場所を示す格納場所情報を有する検索結果を取得する検索手段と、
以前取得したドキュメント、当該ドキュメントの識別子を格納する第1キャッシュ保存手段と、
前記検索結果のドキュメントの識別子に対応するドキュメントが前記第1キャッシュ保存手段に存在するか否か判定し、前記ドキュメントが前記第1キャッシュ保存手段に存在する場合は、前記第1キュッシュ保存手段から前記ドキュメントを取得し、存在しない場合は、前記検索結果の格納場所情報に基づいて前記データベースから前記ドキュメントを取得する取得手段と、
前記データベースから取得した前記ドキュメントを当該ドキュメントの識別子とともに前記第1キャッシュ保存手段に格納する格納手段と、
前記取得手段が取得した1つ以上の前記ドキュメントを結合して応答データを生成する生成手段と、
前記応答データを返却する返却手段と、
を有することを特徴とする検索装置。
【請求項2】
前記検索結果は、前記ドキュメントのバージョンを有し、
前記第1キャッシュ保存手段は、前記ドキュメントのバージョンを格納するものであって、
前記取得手段は、前記検索結果中のバージョンが前記第1キャッシュ保存手段中のバージョンと同じかそれよりも古い場合は、前記第1キュッシュ保存手段から前記ドキュメントを取得し、前記検索結果中のバージョンが前記第1キャッシュ保存手段中のバージョンより新しい場合は、前記検索結果の格納場所情報に基づいて前記データベースから前記ドキュメントを取得し、
前記格納手段は、前記データベースから取得した前記ドキュメントのバージョンをさらに前記第1キャッシュ保存手段に格納することを特徴とする請求項1記載の検索装置。
【請求項3】
前記検索クエリに対応させて有効期限を保持する有効期限管理テーブルと、
前記検索クエリに対応させて以前返却した応答データを格納する第2キャッシュ保存手段と、
前記検索クエリに対応する前記有効期限を取得し、有効期限が取得でき、当該有効期限が期限内の場合は、前記第2キャッシュ保存手段から応答データを取得すると判定する判定手段と、を有し、
前記返却手段は、前記判定手段が前記第2キャッシュ保存手段から応答データを取得すると判定した場合は、前記第2キャッシュ保存手段から前記検索クエリに対応する前記応答データを取得して返却し、前記生成手段が生成した応答データを返却する場合は、当該応答データを前記検索クエリに対応させて前記第2キャッシュ保存手段に格納することを特徴とする請求項1又は2記載の検索装置。
【請求項4】
検索装置がドキュメントを格納したデータベースから検索条件に該当する前記ドキュメントを検索する検索方法であって、
検索クエリを受信するステップと、
前記検索クエリを用いて前記データベースを検索し、当該検索クエリの検索条件に該当するドキュメントに関して、前記ドキュメントの識別子及び前記ドキュメントの格納場所を示す格納場所情報を有する検索結果を取得するステップと、
前記検索結果のドキュメントの識別子に対応するドキュメントが、以前取得したドキュメント、当該ドキュメントの識別子を格納する前記第1キャッシュ保存手段に存在するか否か判定し、前記ドキュメントが前記第1キャッシュ保存手段に存在する場合は、前記第1キュッシュ保存手段から前記ドキュメントを取得し、存在しない場合は、前記検索結果の格納場所情報に基づいて前記データベースから前記ドキュメントを取得するステップと、
前記データベースから取得した前記ドキュメントを当該ドキュメントの識別子とともに前記第1キャッシュ保存手段に格納するステップと、
前記取得手段が取得した1つ以上の前記ドキュメントを結合して応答データを生成するステップと、
前記応答データを返却するステップと、
を有することを特徴とする検索方法。
【請求項5】
前記検索結果は、前記ドキュメントのバージョンを有し、
前記第1キャッシュ保存手段は、前記ドキュメントのバージョンを格納するものであって、
前記取得するステップは、前記検索結果中のバージョンが前記第1キャッシュ保存手段中のバージョンと同じかそれよりも古い場合は、前記第1キュッシュ保存手段から前記ドキュメントを取得し、前記検索結果中のバージョンが前記第1キャッシュ保存手段中のバージョンより新しい場合は、前記検索結果の格納場所情報に基づいて前記データベースから前記ドキュメントを取得し、
前記格納するステップは、前記データベースから取得した前記ドキュメントのバージョンをさらに前記第1キャッシュ保存手段に格納することを特徴とする請求項4記載の検索方法。
【請求項6】
前記検索クエリに対応させて有効期限を保持する有効期限管理テーブルから前記検索クエリに対応する前記有効期限を取得し、有効期限が取得でき、当該有効期限が期限内の場合は、前記検索クエリに対応させて以前返却した応答データを格納する第2キャッシュ保存手段から応答データを取得すると判定するステップを有し、
前記返却するステップは、前記判定するステップにおいて、前記第2キャッシュ保存手段から応答データを取得すると判定した場合は、前記第2キャッシュ保存手段から前記検索クエリに対応する前記応答データを取得して返却し、前記生成するステップにおいて生成した応答データを返却する場合は、当該応答データを前記検索クエリに対応させて前記第2キャッシュ保存手段に格納することを特徴とする請求項4又は5記載の検索方法。
【請求項7】
請求項4乃至6のいずれかに記載の検索方法をコンピュータに実行させるための検索プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate