(57)【要約】【課題】  組込み機器において、処理負荷の高い検索を、ユーザの使用状況に応じて高速に処理する。【解決手段】  処理負荷が規定負荷以上の検索結果と検索条件とを含む検索結果キャッシュデータをキャッシュメモリに格納する。更新要求を受信すると、ブロックキャッシュデータを生成すると共に、該更新要求によって影響を受ける検索結果を更新して更新検索結果を作成する。コミット要求を受信すると、ブロックキャッシュデータをデータベースに反映させると共に、更新検索結果を反映させてから検索結果キャッシュデータをデータベースに格納する。【選択図】図１
2013109659.tif 000002
【特許請求の範囲】
【請求項１】
データベース内のデータを検索するための検索条件を含む検索要求を受信すると、該検索条件を用いて前記データベースに対する検索処理を行う検索手段と、
前記検索処理の処理負荷を求め、該求めた処理負荷が規定負荷以上であるか否かを判断する判断手段と、
前記処理負荷が規定負荷以上である場合には、前記検索処理による検索結果と、前記検索条件と、を含む検索結果キャッシュデータを作成し、該作成した検索結果キャッシュデータをキャッシュメモリに格納する作成手段と、
前記データベースを更新する更新要求を受信すると、前記データベース内で該更新要求による更新対象部分を該更新要求に従って更新した結果をブロックキャッシュデータとして生成すると共に、前記検索結果キャッシュデータから、該更新要求によって影響を受ける検索結果を特定し、該特定した検索結果から、該検索結果に前記ブロックキャッシュデータに対する前記検索要求に従った検索結果を反映させた更新検索結果を作成する更新手段と、
コミット要求を受信すると、前記ブロックキャッシュデータを前記データベースに反映させると共に、前記特定した検索結果に前記更新検索結果を反映させてから前記検索結果キャッシュデータを前記データベースに格納する手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記更新手段は、前記検索結果キャッシュデータから、前記データベース内の確定したデータに対する検索結果いがいの、該更新要求によって影響を受ける検索結果を特定し、該特定した検索結果から、該検索結果に前記ブロックキャッシュデータに対する前記検索要求に従った検索結果を反映させた更新検索結果を作成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判断手段は、前記検索処理の処理ステップ数を計測することで、前記検索処理の処理負荷を求め、該求めた処理負荷が規定負荷以上であるか否かを判断することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判断手段は、前記検索条件の種別によって前記検索処理の処理負荷を求め、該求めた処理負荷が規定負荷以上であるか否かを判断することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の検索手段が、データベース内のデータを検索するための検索条件を含む検索要求を受信すると、該検索条件を用いて前記データベースに対する検索処理を行う検索工程と、
前記情報処理装置の判断手段が、前記検索処理の処理負荷を求め、該求めた処理負荷が規定負荷以上であるか否かを判断する判断工程と、
前記情報処理装置の作成手段が、前記処理負荷が規定負荷以上である場合には、前記検索処理による検索結果と、前記検索条件と、を含む検索結果キャッシュデータを作成し、該作成した検索結果キャッシュデータをキャッシュメモリに格納する作成工程と、
前記情報処理装置の更新手段が、前記データベースを更新する更新要求を受信すると、前記データベース内で該更新要求による更新対象部分を該更新要求に従って更新した結果をブロックキャッシュデータとして生成すると共に、前記検索結果キャッシュデータから、該更新要求によって影響を受ける検索結果を特定し、該特定した検索結果から、該検索結果に前記ブロックキャッシュデータに対する前記検索要求に従った検索結果を反映させた更新検索結果を作成する更新工程と、
前記情報処理装置の格納手段が、コミット要求を受信すると、前記ブロックキャッシュデータを前記データベースに反映させると共に、前記特定した検索結果に前記更新検索結果を反映させてから前記検索結果キャッシュデータを前記データベースに格納する工程と
を備えることを特徴とする情報処理方法。
【請求項６】
コンピュータを、請求項１乃至４の何れか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステム技術に関するものである。
【背景技術】
【０００２】
近年、記憶メディアの大容量化に伴って、機器の扱うデータの量が増大している。同時に、扱うデータの種類も増えている。そのため、機器でのデータ処理負荷の低減および機器内アプリケーションの開発負荷の低減のために、組込み機器用のデータベースシステムが多数提案され、利用されるようになってきている。
【０００３】
一般にデータベースシステムでは、検索結果数の取得（select count）や結果の並び替えを要する検索（order by）は、検索結果集合全体を特定する必要があるため低速である。検索結果をキャッシュとして保持しておけばよいが、データベース内のデータが更新されれば検索結果が変わる可能性があるため、低速な再検索を実行する必要がある。
【０００４】
保持している検索結果キャッシュに更新されたデータの内容を反映すれば、再検索は不要になる。そこで、検索が要求されるまえに、データベース内のデータ（更新されたデータ）とキャッシュの整合性を確保する取り組みがなされてきた。例えば、特許文献１には、検索条件と結果をキャッシュとして保持し、指定された間隔でキャッシュ内の検索条件を用いて再検索を実施し、再検索結果を保持することで検索時の整合性を確保する手法が開示されている。
【０００５】
また、再検索を回避するために、検索結果自体をキャッシュではなくデータベース内に格納し、データ更新時に自動的に更新させる方法がある。アプリケーションが検索結果を保持する専用のテーブルをデータベース内に作成し、トリガー機能を用いてデータベースへのデータ入出力時に自動的に同テーブルのデータ（検索結果）を更新するように設定することが可能である。これにより、検索結果集合全体を特定する低速な検索を、専用テーブルの所定の値を取得するだけの高速な検索で代替することが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２９５６８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、低リソース機器においては、検索を要求する前にバックエンドで定期的に再検索を実行することは、ＣＰＵ負荷・メモリリソース負荷が大きすぎる。また、低リソース機器では、ＣＰＵ・メモリリソースをすべて占有して実行するようなアプリケーションが通常存在するため、キャッシュされた内容をずっとメモリ上に保持することも困難である。以上から、検索実行前の定期的な再検索は、低リソース機器には高負荷なため実施が困難である。
【０００８】
また、データベース内に保持する方法では、再検索を回避し、データ更新内容に基づく結果の差分更新に負荷を抑えることが可能である。また、結果自体の永続化もデータベースのデータの永続化と同期する形で可能としている。しかしながら、事前に専用のテーブルを設計しておく必要がある。そのため、事前に使用される検索条件が特定できない場合は設計できないことになる。特定できたとしても大量の検索条件が存在する場合、組込み機器では全条件の結果を常に自動更新しながら、データベース内のデータを更新していくことは事実上不可能である。
【０００９】
また、コミット時に検索結果をデータベースへの更新データとともに永続化することが可能であるが、その分だけデータベースのデータ更新時間に時間がかかることになる。コミット中に電源断等で処理が中断された場合、通常その前のコミット状態に戻して復帰されるので、更新データを失うことになる。電源断リスクの高い低リソースの組込み機器では、コミットに時間がかかることはデータを失う可能性を高めることになる。
【００１０】
以上の問題から、組込み機器において、使用される検索負荷の高いクエリを事前に特定できない場合、それらの検索を高速に処理できない問題があった。また、検索結果の一部をデータベース内に保持させることによって、データの更新に時間がかかるという問題があった。
【００１１】
本発明はこのような問題に鑑みなされたものであり、組込み機器において、処理負荷の高い検索を、ユーザの使用状況に応じて高速に処理するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の目的を達成するために、例えば、本発明の情報処理装置は、データベース内のデータを検索するための検索条件を含む検索要求を受信すると、該検索条件を用いて前記データベースに対する検索処理を行う検索手段と、前記検索処理の処理負荷を求め、該求めた処理負荷が規定負荷以上であるか否かを判断する判断手段と、前記処理負荷が規定負荷以上である場合には、前記検索処理による検索結果と、前記検索条件と、を含む検索結果キャッシュデータを作成し、該作成した検索結果キャッシュデータをキャッシュメモリに格納する作成手段と、前記データベースを更新する更新要求を受信すると、前記データベース内で該更新要求による更新対象部分を該更新要求に従って更新した結果をブロックキャッシュデータとして生成すると共に、前記検索結果キャッシュデータから、該更新要求によって影響を受ける検索結果を特定し、該特定した検索結果から、該検索結果に前記ブロックキャッシュデータに対する前記検索要求に従った検索結果を反映させた更新検索結果を作成する更新手段と、コミット要求を受信すると、前記ブロックキャッシュデータを前記データベースに反映させると共に、前記特定した検索結果に前記更新検索結果を反映させてから前記検索結果キャッシュデータを前記データベースに格納する手段とを備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、ユーザの使用状況に応じて処理負荷の高い検索を高速に処理することができる。また、データベースのデータ更新処理に負担をかけずに検索を高速化することができる。
【図面の簡単な説明】
【００１４】
【図１】データベースシステムのハードウェア構成例を示すブロック図。
【図２】データ検索処理を説明する図。
【図３】検索結果キャッシュの構成例を示す図。
【図４】検索処理のフローチャート。
【図５】更新処理のフローチャート。
【図６】コミット処理のフローチャート。
【図７】ロールバック処理のフローチャート。
【図８】検索結果キャッシュ保存処理のフローチャート。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１６】
［第１の実施形態］
先ず、情報処理装置（コンピュータ）の一例であるデータベースシステムのハードウェア構成の一例について、図１のブロック図を用いて説明する。なお、この構成はあくまでも一例であり、下記に説明する各処理を実現可能な構成であれば、如何なる構成を採用しても良い。
【００１７】
ＣＰＵ（中央演算装置）１０１は、ＲＯＭ１０２やＲＡＭ１０３に格納されているコンピュータプログラムやデータを用いて処理を実行する。これによりＣＰＵ１０１は、データベースシステムを構成する各部の動作制御を行うと共に、データベースシステムが行うものとして後述する各処理を実行する。
【００１８】
ＲＯＭ１０２には、データベースシステムの設定データやブートプログラムなど、書き換える必要がないコンピュータプログラムやデータが格納されている。
【００１９】
ＲＡＭ１０３は、記憶装置１０６からロードされたコンピュータプログラムやデータを一時的に記憶するためのエリアや、通信装置１０７が外部から受信したコンピュータプログラムやデータを一時的に記憶するためのエリアを有する。更に、ＲＡＭ１０３は、ＣＰＵ１０１が各種の処理を実行するために用いるワークエリアを有する。即ち、ＲＡＭ１０３は、各種のエリアを適宜提供することができる。なお、ＲＡＭ１０３は、キャッシュデータとして入力されたデータを一時的に記憶するためのキャッシュメモリとしても機能する。
【００２０】
入力装置１０４は、キーボードやマウスなどにより構成されており、ユーザが操作することで、各種の指示をＣＰＵ１０１に対して入力することができる。例えば、後述するアプリケーションソフトウェアに対する操作は、ユーザがこの入力装置１０４を操作することでなされる。
【００２１】
表示装置１０５は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１０１による処理結果を画像や文字などでもって表示することができる。なお、表示装置１０５と入力装置１０４とを一体化させて、タッチパネル画面を構成するようにしても良い。
【００２２】
記憶装置１０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。この記憶装置１０６には、ＯＳ（オペレーティングシステム）や、後述するデータベースエンジン（コンピュータプログラム）、後述する様々なデータが格納されている。また、記憶装置１０６には、データベースシステムが行うものとして後述する各処理をＣＰＵ１０１に実行させるためのコンピュータプログラムやデータ、後述するデータベースファイルも格納されている。記憶装置１０６に格納されているコンピュータプログラムやデータは、ＣＰＵ１０１による制御に従って適宜ＲＡＭ１０３にロードされ、ＣＰＵ１０１による処理対象となる。なお、以下では便宜上、データベースエンジンを処理の主体として説明する場合もあるが、実際には、ＣＰＵ１０１がデータベースエンジンのコンピュータプログラムを実行することで、データベースエンジンが行うものとして後述する各処理を実行する。
【００２３】
通信装置１０７は、外部の装置とのデータ通信を行うものである。バス１０８は、上記の各部を接続するためのもので、上記の各部は、このバス１０８を介して互いにデータ通信を行うことができる。
【００２４】
次に、本実施形態に係るデータベースシステムが行うデータ検索処理について、図２の模式図を用いて説明する。
【００２５】
検索条件２０１、検索結果２０２，２０３、ブロック２０４，２０５は何れもキャッシュデータであり、データベースエンジンがＲＡＭ１０３上にその領域（キャッシュメモリ）を確保することで、この領域に格納されるものである。
【００２６】
キャッシュ保存ファイル２０６、データベースファイル２０７は、ＣＰＵ１０１による指示に基づいてファイルシステムが記憶装置１０６上にその領域を確保することで、この領域にデータの永続化目的用ファイルとして格納されるものである。
【００２７】
キャッシュデータのうち、データベースファイル２０７の一部であるブロックのデータを保持するものがブロック２０４、２０５である。
【００２８】
データベースエンジンは、扱うテーブルのスキーマ情報やレコード、カラムデータへのインデックスデータ等を固定長ブロックに分割して管理する。データベースファイル２０７にすべてのブロックが格納されている。データベースエンジンは、アプリケーションからの要求に基づいて、データベースファイル２０７内のブロックの一部をブロック２０４に適宜保持する。
【００２９】
データベースファイル２０７の更新方法は、トランザクションの開始要求、レコード等のデータ更新要求を繰り返し、コミット要求によってその更新されたデータを記憶装置１０６に書き込んでトランザクションを終了する。データ更新要求の時点では、データベースファイル２０７を更新するのではなく、ブロック２０５を更新する。その後、コミットが指示された時点で、データベースファイル２０７にこの更新されたブロック２０５の内容を書き込むことで、データベースファイル２０７を確定する。
【００３０】
データベースファイル２０７の検索方法は、検索要求に基づいてデータベースファイル２０７のインデックスデータをブロック２０４内に読み出し、検索結果となるレコードを特定する。次に該レコードのカラムデータをブロック２０４に呼び出し、要求に基づいて検索結果データを作成してリターンする。呼び出されたキャッシュはそのままＲＡＭ１０３上に保持され、次に同様な検索要求が出された場合にデータベースファイル２０７からデータを呼び出すことなく結果をリターンすることができる。
【００３１】
しかし、検索要求が、例えば指定条件に合致するレコード数を要求するような場合、検索結果となるレコード数の算出は、指定条件に合致するすべてのレコードを特定する必要がある。そのため、算出が終了するまでの処理時間が長く、処理は低速となる。さらにデータベースファイル２０７から呼び出すデータ（ブロック）量が多いことから、有限のブロックキャッシュからあふれて、キャッシュ内にすべてを保持することができない。故に、同じ条件で再要求されても、ブロックキャッシュ効果によって検索を高速化することができず、常に時間がかかる検索となってしまう。
【００３２】
本実施形態においては、上記のような検索を高速に処理するために、検索結果をデータベースエンジンのキャッシュデータとして保持する。ここで、すべての検索に対して検索結果のキャッシュの作成を行うのではなく、高負荷であると判定された検索による結果のみに絞る。
【００３３】
検索結果キャッシュは、検索条件２０１と二つの検索結果２０２、２０３から構成される。検索条件２０１は、ＳＱＬ等で表現される条件式や、条件式のパラメータ値を保持する。検索結果２０２は、データベースファイル２０７の確定済データを対象としたキャッシュであり、検索トランザクション実行時の検索結果データを保持する。検索結果２０３は、データベースファイル２０７の更新中のデータを対象としたキャッシュであり、更新トランザクション実行時の検索結果データを保持する。
【００３４】
データベースシステムが低リソース機器であったとしても、使用可能なＲＡＭ１０３内のメモリ領域のなかに、複数の検索条件に基づいた複数の検索結果キャッシュ（検索条件２０１と検索結果２０２、２０３）が保持される。
【００３５】
データベースエンジンはアプリケーションから検索要求を受信すると、データベースファイル２０７から必要なデータをブロック２０４に読み込み、該データに対して該検索要求に応じた検索処理を行って検索結果を作成し、アプリケーションにリターンする。そしてこの検索処理が高負荷な検索処理であると判定された場合、該検索結果のデータである検索結果２０２を作成する（処理動作２０８）。
【００３６】
また、データベースエンジンはアプリケーションから更新要求を受信すると、データベースファイル２０７から読み込んだデータを該更新要求に基づいて更新し、更新したデータをブロック２０５として保持する。更新トランザクション中（更新要求後以降、コミットあるいはロールバック処理終了まで）は、検索結果２０３を作成する（処理動作２０９）。この時点で検索結果２０２が作成されているか否かに関わらず、同トランザクション中(更新)は検索結果２０３が使用される。更新要求前に検索結果キャッシュ作成を要する検索要求が無かった場合、検索結果２０３のみが作成されている状態になる。検索結果２０３が作成されている状態において、データベースエンジンはアプリケーションの更新要求に基づいて検索結果２０３を直接更新する。
【００３７】
次に、データベースエンジンは、アプリケーションからコミット要求を受信すると、更新されているブロック２０５のデータをデータベースファイル２０７に書き込む（処理動作２１０）。データベースファイル２０７へのデータ更新（反映）が確定すると、検索結果２０２に検索結果２０３を上書きすることで、検索結果２０２を検索結果２０３に更新する（処理動作２１１）。
【００３８】
低リソース機器では、キャッシュデータを常時メモリ上に保持することは困難なため、検索結果キャッシュそのものをデータベースファイルと同様にファイルに書き込んで保存（永続化）する。保存する対象は検索結果２０２であって、未確定(更新中)のデータを対象とした検索結果２０３は保存対象とはしない。
【００３９】
アプリケーションあるいはシステムの任意のキャッシュ保存要求によりデータベースエンジンは、検索結果２０２を検索条件２０１とともにキャッシュ保存ファイル２０６に書き込む（処理動作２１２）。検索結果２０３のみしか作成されていない状況では、何も行わない。
【００４０】
デバイスやアプリケーションの再起動時に、システムあるいはアプリケーションの要求に基づいてキャッシュ保存ファイル２０６のデータをＲＡＭ１０３上に呼び出しておくことで、データベース検索の高速化が可能となる。
【００４１】
以上により、事前に使用されることが特定できていなかった負荷の高い検索に対しても、使用状況に応じて動的に作成される検索結果キャッシュにより、検索を高速に処理することが可能となる。また、データベースのデータ更新処理と非同期に同結果キャッシュを保存することで、データ更新処理自体に負担をかけることがなく、再起動時にも検索を高速に処理することが可能となる。
【００４２】
デジタルカメラやデジタル画像データを管理するＳＴＢ（ＳｅｔＴｏｐＢｏｘ）にデータベースを適用した場合では、ユーザ毎に使用される負荷の高い検索に対してユーザインターフェースの表示を遅延させることなくユーザに結果を提示することが可能となる。また、管理している画像データやその検索結果の多種多様なメタデータによるブラウズをスムーズなインターフェースで実現することが可能となる。具体的には、検索結果数に応じた画面構成、スクロールバー表示、適切な検索条件のナビゲート等のインターフェースが可能となる。
【００４３】
次に、検索結果キャッシュの構成例について、図３を用いて説明する。なお、この構成はあくまで一例であり、下記に説明する処理に適合可能な構成であれば、その変形例には、様々なものが考え得る。
【００４４】
データスコープ３０１には、検索対象であるデータベースやテーブル、カラム等を特定する情報が保持される。ＳＱＬ  Ｑｕｅｒｙ３０２には、ＳＱＬを用いて表現された検索要求の情報が保持される。パラメータ値３０３には、ＳＱＬ  Ｑｕｅｒｙ３０２の変数にバインドされるパラメータ値が保持される。
【００４５】
更新処理関数３０４には、データベースのデータ更新状況に応じてキャッシュを直接更新するキャッシュ更新操作を実現する関数ポインタ情報が保持される。通常は、Ｉｎｓｅｒｔ時とＤｅｌｅｔｅ時の二つの関数が保持され、Ｕｐｄａｔｅ時は双方が順次使用される。
【００４６】
有効ステータス３０５は、現時点での検索要求で有効な検索結果データを特定するための情報が保持される。具体的には、更新中か否かが判断できるフラグが保持される。最新使用情報３０６、使用頻度情報３０７は、有限なメモリ（ＲＡＭ１０３）上に保持するキャッシュを選択するための優先度情報を保持する。検索処理の処理負荷の判定によってキャッシュとして保持する検索を絞っているが、低リソース機器ではそのすべてを保持するメモリがあるとは限らない。そのため、さらに有効と思われる検索結果に絞り込むための情報が優先度情報である。
【００４７】
最新使用情報３０６には、最近使用されたかを判定する情報が保持される。具体的にはキャッシュ全体での使用回数が保持され、値の大きい順から最近使用されたキャッシュであると判定することができる。使用回数の値自体をシステムで保持し、データベースエンジンは使用するたびに同値を１増やし、その値を最新使用情報３０６に格納する。使用頻度情報３０７には、キャッシュ全体ではなく個々のキャッシュの使用回数が保持される。
【００４８】
検索結果データセット３０８は、ステータス３１０、データベースファイル２０７の更新識別情報３１１、検索結果のデータ３１２から構成される。検索結果データセット３０９も、検索結果データセット３０８と同様に、ステータス３１３、データベースファイル２０７の更新識別情報３１４、検索結果のデータ３１５から構成される。
【００４９】
図３においては、検索結果データセット３０８が確定済のデータを対象とした検索結果のキャッシュであり、検索結果データセット３０９が更新中のデータを対象とした検索結果のキャッシュである。
【００５０】
それぞれのステータス３１０、３１３には、対象としているデータが確定済か更新中かを示す情報が保持される。ステータス３１０には、確定済データを対象としていることを示すフラグ値が保持されており、ステータス３１３には、更新中のデータを対象としていることを示すフラグ値が保持されている。
【００５１】
データベースファイル２０７の更新識別情報には、データベースファイル２０７の更新状態を判定できる識別情報が保持される。具体的には、データベースファイル２０７の更新回数が保持される。この情報は、確定済データを対象とした結果データが保持されている時にのみ有効であるため、更新識別情報３１１のみに保持される。更新中データを対象とした検索結果データセット３０９内の更新識別情報３１４は、使用されていない。検索結果のデータ３１２、３１５は、それぞれの状態での検索結果データが保持される。
【００５２】
次に、本実施形態に係るデータベースシステムが、アプリケーションなどから、データベースファイル２０７に対する検索要求を受信した場合に行う処理について、同処理のフローチャートを示す図４を用いて説明する。なお、図４のフローチャートに従った処理をＣＰＵ１０１に実行させるためのコンピュータプログラム（データベースエンジン）やデータは、記憶装置１０６からＲＡＭ１０３にロードされているものとする。然るにＣＰＵ１０１は、このＲＡＭ１０３にロードされたコンピュータプログラムやデータを用いて処理を実行することで、図４のフローチャートに従った処理を実行することができる。
【００５３】
ステップＳ４０１では、ＣＰＵ１０１は、ＲＡＭ１０３上に保持している検索結果キャッシュ中に利用可能なキャッシュ（検索結果）が存在するか否かを判断する。利用可能か否かの判断は、アプリケーションから受信した検索要求に含まれている検索条件と、キャッシュ内の検索条件と、が合致しているか否かを判断することで実現可能である。すなわち、データスコープ３０１、ＳＱＬ  Ｑｕｅｒｙ３０２、パラメータ値３０３のすべてが互いに合致しているか否かを判断することで実現可能である。
【００５４】
この判断の結果、利用可能なキャッシュ（検索結果）が存在すると判断した場合には、処理はステップＳ４０８に進み、利用可能なキャッシュ（検索結果）は存在しないと判断した場合には、処理はステップＳ４０２に進む。
【００５５】
ステップＳ４０８では、ＣＰＵ１０１は、有効ステータス３０５を確認し、検索結果キャッシュ内の有効な検索結果を特定する。ステップＳ４０９では、ＣＰＵ１０１は、この特定された検索結果から「アプリケーションに返却する検索結果」を作成して、リターンする。
【００５６】
一方、ステップＳ４０２では、ＣＰＵ１０１は、通常の検索処理を実行し、検索結果を生成する。即ち、上述したように、データベースファイル２０７から必要なデータをブロック２０４に読み込み、該データに対して検索要求に応じた検索処理を行って検索結果を作成する。
【００５７】
次に、ステップＳ４０３では、ＣＰＵ１０１は、ステップＳ４０２で行った検索処理が高負荷な検索処理であるか否かを判断する。高負荷な検索処理であるか否かの判断は、検索処理の処理ステップ数を計測することで、検索処理の処理負荷を求め、該求めた処理負荷が規定負荷以上（処理ステップ数が規定値以上）であるか否かを判断することで実現可能である。この判断の結果、高負荷な検索処理であると判断した場合は、処理はステップＳ４０４に進み、高負荷な検索処理ではないと判断した場合は、そのままリターンする。
【００５８】
ステップＳ４０４では、ＣＰＵ１０１は、検索結果キャッシュの追加作成が可能であるか否かを判断する。一般に低リソース機器の場合には、保持する検索結果キャッシュの数には通常制限があり、作成済の検索結果数が上限に達しているか否かを判断する必要がある。
【００５９】
この判断の結果、追加作成可能と判断した場合（検索結果キャッシュの数が上限に達していない場合）、処理はステップＳ４０６に進み、追加作成不可能と判断した場合（検索結果キャッシュの数が上限に達している場合）、処理はステップＳ４０５に進む。
【００６０】
ステップＳ４０５では、ＣＰＵ１０１は、すでに存在する検索結果キャッシュのうち１つを削除する。削除する検索結果キャッシュは、それぞれの検索結果キャッシュの優先度情報に基づいて決定される。具体的には、ある閾値以下の使用頻度情報を保持する検索結果キャッシュの中で、最新使用情報３０６から最も古く使用された検索結果キャッシュに決定される。
【００６１】
ステップＳ４０６では、ＣＰＵ１０１は、ステップＳ４０２で作成した検索結果のデータを含む検索結果キャッシュを新規作成する。ステップＳ４０７では、ＣＰＵ１０１は、この検索結果キャッシュの有効ステータスを「更新中」に設定して、リターンする。
【００６２】
即ち、本実施形態に係るデータベースシステムは、データベース内のデータを検索するための検索条件を含む検索要求を受信すると、該検索条件を用いてデータベースに対する検索処理を行う。そして、検索処理の処理負荷を求め、該求めた処理負荷が規定負荷以上であるか否かを判断する。そして、処理負荷が規定負荷以上である場合には、検索処理による検索結果と、検索条件と、を含む検索結果キャッシュ（検索結果キャッシュデータ）を作成し、該作成した検索結果キャッシュをキャッシュメモリに格納する。
【００６３】
次に、本実施形態に係るデータベースシステムが、アプリケーションなどから、データベースファイル２０７を更新する更新要求を受信した場合に行う処理について、同処理のフローチャートを示す図５を用いて説明する。なお、図５のフローチャートに従った処理をＣＰＵ１０１に実行させるためのコンピュータプログラム（データベースエンジン）やデータは、記憶装置１０６からＲＡＭ１０３にロードされているものとする。然るにＣＰＵ１０１は、このＲＡＭ１０３にロードされたコンピュータプログラムやデータを用いて処理を実行することで、図５のフローチャートに従った処理を実行することができる。
【００６４】
ステップＳ５０１では、ＣＰＵ１０１は、このような更新要求を受信すると、データベースファイル２０７内で該更新要求による更新対象部分を、該更新要求に従って更新し、該更新の結果をブロックキャッシュデータ（ブロック２０５）として保持する。
【００６５】
ステップＳ５０２では、ＣＰＵ１０１は、検索結果キャッシュのうち、更新要求によって影響を受ける検索結果を含む検索結果キャッシュが存在するか否かを判断する。存在するか否かの判断は、データスコープ３０１に今回更新した対象が存在するか否かを判断することで実現可能である。この判断の結果、存在すると判断した場合は、処理はステップＳ５０３に進み、存在しないと判断した場合は、そのままリターンする。
【００６６】
ステップＳ５０３では、ＣＰＵ１０１は、検索結果キャッシュ内に更新中データを対象とした検索結果が存在するか否かを判断する。この判断の結果、存在すると判断した場合は、処理はステップＳ５０６に進み、存在しないと判断した場合は、処理はステップＳ５０４に進む。
【００６７】
ステップＳ５０４では、ＣＰＵ１０１は、確定済のデータを対象としている検索結果とは別に、更新中のデータを対象とした検索結果を新規に作成する。即ち、更新要求によって影響を受ける検索結果の複製を作成する。ステップＳ５０５では、ＣＰＵ１０１は、キャッシュの有効ステータスを「更新中」に変更する。
【００６８】
ステップＳ５０６では、ＣＰＵ１０１は、実行された更新処理の種別に応じた更新処理関数をキャッシュ内の更新処理関数３０４の中から選択する。続いて、ステップＳ５０７では、ＣＰＵ１０１は、ステップＳ５０６で選択された更新処理関数を用いてキャッシュ更新処理を実行する。具体的には、ステップＳ５０３で存在するとした検索結果の複製若しくはステップＳ５０４で複製した検索結果から、該複製にブロックキャッシュデータに対する検索要求に従った検索結果を反映させた更新検索結果を作成する。
【００６９】
ステップＳ５０８では、ＣＰＵ１０１は、最新使用情報３０６を更新する。すなわち、データベースエンジンが管理する最新使用情報の値をインクリメント（値を１増やす）後、同値を設定する。ステップＳ５０９では、ＣＰＵ１０１は、使用頻度情報３０７の値を直接インクリメントして、リターンする。
【００７０】
次に、本実施形態に係るデータベースシステムがデータベースエンジンを実行することで行うコミット処理について、同処理のフローチャートを示す図６を用いて説明する。
【００７１】
ステップＳ６０１においてＣＰＵ１０１は、通常のコミット処理、すなわちＲＡＭ１０３上の更新されたブロック２０５をデータベースファイル２０７に書き込むことによって永続化する処理を実行する。通常、処理中の電源断対策としてジャーナリング方式で書込み前のブロックデータを別途永続化してから、データベースファイル２０７の書込み処理を実行する。
【００７２】
通常のコミット処理実行後、ステップＳ６０２においてＣＰＵ１０１は、確定済のデータを対象とした検索結果データセットを削除する。続いて、ステップＳ６０３においてＣＰＵ１０１は、更新中のデータを対象とした検索結果データセットのステータス情報を確定済に変更し、ステップＳ６０４においてＣＰＵ１０１は、同セット内の更新識別情報を更新する。識別情報更新後に、ステップＳ６０５においてＣＰＵ１０１は、有効ステータス情報を確定済に変更して、リターンする。
【００７３】
次に、本実施形態に係るデータベースシステムがデータベースエンジンを実行することでのロールバック処理手順の一例を示したフローチャートである図７を用いて説明する。ステップＳ７０１ではＣＰＵ１０１は、通常のロールバック処理、すなわちＲＡＭ１０３上の更新されたブロック２０５の削除を実行する。通常のロールバック処理実行後、ステップＳ７０２ではＣＰＵ１０１は、更新中のデータを対象とした検索結果データセットを削除して、リターンする。
【００７４】
次に、本実施形態に係るデータベースシステムがデータベースエンジンを実行することで行う検索結果キャッシュ保存処理について、図８を用いて説明する。
【００７５】
ステップＳ８０１においてＣＰＵ１０１は、ＲＡＭ１０３上に保持されている検索結果の内、確定済の検索結果を保持しているものを保存対象候補として選択する。次に、ステップＳ８０２においてＣＰＵ１０１は、ステップＳ８０１で選択された保存対象候補の内、各キャッシュ内の優先度情報に基づいて保存対象キャッシュを決定する。本実施形態では、最新使用情報の値が最大のもの、使用頻度情報から使用頻度が閾知以上であるものを保存対象として決定している。
【００７６】
ステップＳ８０３においてＣＰＵ１０１は、保存対象キャッシュが有るか否かを判断する。この判断の結果、あると判断した場合には、処理はステップＳ８０４に進み、無いと判断した場合は、そのままリターンする。
【００７７】
ステップＳ８０４ではＣＰＵ１０１は、対象の検索結果をキャッシュ保存ファイル２０６に書き込んで、リターンする。書き込むデータは、更新中データを対象とした検索結果データセット以外のキャッシュ内に保持されているデータになる。ただし、有効ステータス情報に限り、保持している値に関わらず確定済として書き込む。
【００７８】
［第２の実施形態］
第１の実施形態では、検索結果そのものを結果データとして保持していたが、検索条件によっては最終結果を出す前の中間結果を保持するようにしてもよい。例えば、サブクエリ（検索条件内で入れ子になって指示されている検索条件）の処理が高負荷であった場合、サブクエリによる結果（中間結果）を保持する。これにより、同じサブクエリを使用する検索条件にキャッシュを適用することができる。中間結果を保持することで、検索結果キャッシュの利用範囲を広げることが可能となる。
【００７９】
また、第１の実施形態では、検索処理の処理負荷の判定を、実行時の内部処理ステップ数を計測することで行っている。しかしこの判定には様々な方法を適用することができ、例えば、検索条件に「検索結果数取得」のような一般的に高い処理負荷を要求する種別の検索条件が含まれているか否かを判断することで簡易に判断してもよい。格納されたデータ非依存になるため判定精度は落ちるが、実行時のステップ数計測負荷を低減することで、キャッシュを利用しない検索性能を向上させることができる。
【００８０】
また、検索処理の処理負荷の判定をデータベース内のデータの値の統計情報（値の偏在性等）を使用し、条件判定時に絞り込まれるデータ範囲を予測することで、検索処理の処理負荷を判定してもよい。統計情報を作成する負荷が発生するが、格納されたデータに基づく判定精度が得られ、かつキャッシュを利用しない検索性能を向上させることができる。
【００８１】
以上、上述した各実施形態によれば、ユーザの使用状況に応じて処理負荷の高い検索を高速に処理することができる。また、データベースのデータ更新処理に負担をかけずに検索を高速化することができる。
【００８２】
なお、第１，２の実施形態は適宜組み合わせて用いても良いし、適宜切り替えて使用しても良い。また、それぞれの実施形態で説明した構成は上記の通り、あくまで一例であり、例えば、１台の装置でデータベースシステムを構成しても良いし、互いにデータ通信が可能なように接続された複数台の装置でデータベースシステムを構成しても良い。また、上記の様々な要求は、アプリケーションから発せられるものとして説明したが、このアプリケーションは自装置で動作しているものであっても良いし、他装置で動作しているものであっても良い。他装置で動作しているものである場合、上記の様々な要求は、通信装置１０７を介して受信することになる。
【００８３】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2013109659.tif 000003
【図２】
2013109659.tif 000004
【図３】
2013109659.tif 000005
【図４】
2013109659.tif 000006
【図５】
2013109659.tif 000007
【図６】
2013109659.tif 000008
【図７】
2013109659.tif 000009
【図８】
2013109659.tif 000010