JP5385874B2 - キャッシュ管理装置、キャッシュ管理プログラム及び記録媒体 - Google Patents

キャッシュ管理装置、キャッシュ管理プログラム及び記録媒体 Download PDF

Info

Publication number
JP5385874B2
JP5385874B2 JP2010186031A JP2010186031A JP5385874B2 JP 5385874 B2 JP5385874 B2 JP 5385874B2 JP 2010186031 A JP2010186031 A JP 2010186031A JP 2010186031 A JP2010186031 A JP 2010186031A JP 5385874 B2 JP5385874 B2 JP 5385874B2
Authority
JP
Japan
Prior art keywords
cache
data
change history
database
management
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010186031A
Other languages
English (en)
Other versions
JP2012043338A (ja
Inventor
真二 深津
恭太郎 堀口
清 田中
統之 堀井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2010186031A priority Critical patent/JP5385874B2/ja
Publication of JP2012043338A publication Critical patent/JP2012043338A/ja
Application granted granted Critical
Publication of JP5385874B2 publication Critical patent/JP5385874B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベースの検索結果をキャッシュとして保存し利用する検索システムにおいて、データベースとキャッシュの不整合を軽減する技術に関する。
検索システムにおいては、リクエストに応じてデータベースを検索し、その検索結果をレスポンスとして返却する。この際、同様のリクエストがあった場合、その都度、データベースを検索することはレスポンス時間やサーバ負荷を増大することとなる。そこで、リクエストに対するレスポンスをキャッシュデータとしてメモリなどの高速な記憶装置に蓄えておき、同様のリクエストがあった場合、レスポンス時間の短縮やサーバ負荷の軽減を実現している。
"RFC 2616, Hypertext Transfer Protocol - HTTP/1.1: Caching in HTTP", [online],[平成22年8月9日検索]、インターネット〈URL:http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html〉
検索結果をキャッシュとして保存する場合、データベースとの整合性を保つことが重要となる。つまり、データベースに変更(データの追加/削除/更新)があり、キャッシュに含まれる情報と最新のデータベース内の情報に不整合が生じると、ある検索クエリに対する最新の検索結果とキャッシュとして保存した検索結果が異なるという問題が生じる。
そこで、一般的には、各キャッシュデータに有効期限を設定することで十分に新鮮であるもののみをキャッシュとして用いる形にしたり、定期的にキャッシュとデータベースとの差分をチェックすることで対処している。しかしながら、前者の方法では、有効期限の設定によっては不整合が大きくなり、後者は全キャッシュをチェックするため、キャッシュ更新に要する処理が大きくなるという問題がある。
また、データベースへの変更に応じてキャッシュを更新する方法も考えられるが、検索クエリに対応する検索結果をキャッシュとして保存する場合、あるデータが複数の異なる検索結果のキャッシュに含まれることがある。そのため、あるデータが更新/削除された場合、そのデータが含まれるキャッシュを全て探し出して無効化する必要が生じる。また、データが追加/更新された場合、そのデータが関連するキャッシュを探すためには、検索クエリとデータを内容レベル(例えば、検索クエリで指定されたキーワードとデータ内容に含まれるテキスト情報)で照合する必要が生じ、全キャッシュに対してこのような処理を行うことは処理量が非常に大きくなり、非効率である。
他にも、データベースへの変更に応じ、保持するキャッシュを全削除する方法も考えられるが、データベースの更新頻度、キャッシュの生成頻度によっては、処理のみが増え、キャッシュが有効的に利用されなくなり、無駄が多く、非効率なキャッシュ管理となる。
本発明は、上記に鑑みてなされたものであり、キャッシュを用いた検索システムにおいて、データベースへの変更に伴うデータベースとキャッシュとの不整合を軽減し、かつ、キャッシュを効率的に管理することを実現することを目的とする。
の本発明に係るキャッシュ管理装置は、データベースに格納されたデータを検索クエリを用いて検索した検索結果をキャッシュデータとしてキャッシュに格納するキャッシュ管理装置であって、前記データベースに格納されたデータを一意に識別するデータID、当該データに対する操作内容を示す管理フラグを関連付けた変更履歴を蓄積する変更履歴蓄積手段と、前記キャッシュに格納されたキャッシュデータを一意に識別するキャッシュID、当該キャッシュデータに対応する検索クエリ、当該キャッシュデータに含まれるデータのデータIDを記載した検索結果リスト、当該キャッシュデータの生成日時を関連付けたキャッシュレコードを蓄積するキャッシュ管理テーブルと、検索クエリを受信したときに、当該検索クエリに一致する検索クエリを持つ前記キャッシュレコードを前記キャッシュ管理テーブルから検索し、検索したキャッシュレコードから前記検索結果リストと前記生成日時を取得する取得手段と、前記取得手段が取得した前記検索結果リストに記載されたデータIDと一致するデータIDを持つ前記変更履歴を前記変更履歴蓄積手段から検索し、該当する変更履歴が検索されない場合及び検索された前記変更履歴すべての管理フラグがデータの追加を示している場合は、前記取得手段が検索した前記キャッシュレコードに対応する前記キュッシュデータは有効であると判定し、それ以外の場合は当該キャッシュデータは無効であると判定する判定手段と、前記判定手段が前記キャッシュデータは有効であると判定した場合は、当該キャッシュデータを検索結果として返却し、受信した検索クエリに一致する検索クエリを持つ前記キャッシュレコードが検索できない場合、及び前記判定手段が前記キャッシュデータは無効であると判定した場合は、受信した検索クエリを用いて前記データベースを検索して検索結果を返却し、当該検索結果を前記キャッシュにキャッシュデータとして格納するとともに、前記キャッシュ管理テーブルに当該キャッシュデータのキャッシュID、検索に用いた検索クエリ、当該キャッシュデータに含まれるデータのデータIDを記載した検索結果リスト、当該キャッシュデータの生成日時を関連付けたキャッシュレコードを追加する検索手段と、前記変更履歴蓄積手段から各変更履歴の管理フラグを取得し、当該管理フラグがデータの追加を示している場合はデータが追加された件数をカウントし、それ以外の場合はその変更履歴のデータIDを削除対象リストに追加し、前記変更履歴蓄積手段から全変更履歴を削除する変更履歴更新手段と、前記件数に基づいて算出した不整合の程度が所定の閾値を超えた場合、前記キャッシュ管理テーブルの全キャッシュレコード及び前記キャッシュの格納された全キャッシュデータを削除し、前記件数に基づいて算出した不整合の程度が所定の閾値を超えない場合、前記削除対象リストに記載されているデータIDを有する前記キャッシュレコードを前記キャッシュ管理テーブルから削除するとともに、当該キャッシュレコードに対応するキャッシュデータを前記キャッシュから削除するキャッシュ削除手段と、を有することを特徴とする。
上記第の本発明に係るキャッシュ管理装置において、前記データベースにデータが追加されたときは、前記変更履歴蓄積手段に変更履歴を追加して当該変更履歴に前記データID、データの追加を示す管理フラグを登録し、前記データベースのデータが変更あるいは削除されたときは、変更あるいは削除されたデータのデータIDを有する変更履歴を前記変更履歴蓄積手段から検索し、該当する変更履歴がない場合及び管理フラグがデータの追加を示す変更履歴のみが検索された場合は、前記変更履歴蓄積手段に変更履歴を追加して当該変更履歴に前記データID、データの変更あるいは削除を示す管理フラグを登録し、管理フラグがデータの変更あるいは削除を示す変更履歴が検索された場合は、当該変更履歴の管理フラグを更新する変更履歴管理手段を有することを特徴とする。
の本発明に係るキャッシュ管理プログラムは、上記キャッシュ管理装置を構成する各手段としてコンピュータを機能させることを特徴とする。
の本発明に係る記録媒体は、上記キャッシュ管理プログラムを記録したことを特徴とする。
本発明によれば、キャッシュを用いた検索システムにおいて、データベースへの変更に伴うデータベースとキャッシュとの不整合を軽減し、かつ、キャッシュを効率的に管理することを実現することができる。
第1の実施の形態におけるキャッシュ管理装置を含む検索システムの構成を示すブロック図である。 データベース管理テーブルの保持する情報の例を示す図である。 キャッシュ管理テーブルの保持する情報の例を示す図である。 第1の実施の形態におけるデータベース変更時の処理の流れを示すフローチャートである。 第1の実施の形態における検索時の処理の流れを示すフローチャートである。 第1の実施の形態における有効期限切れキャッシュデータを削除する処理の流れを示すフローチャートである。 第2の実施の形態におけるキャッシュ管理装置を含む検索システムの構成を示すブロック図である。 データベース変更履歴の保持する情報の例を示す図である。 第2の実施の形態におけるデータベース変更時の処理の流れを示すフローチャートである。 第2の実施の形態における検索時の処理の流れを示すフローチャートである。 第2の実施の形態におけるキャッシュデータを削除する処理の流れを示すフローチャートである。 第2の実施の形態におけるキャッシュデータを削除する別の処理の流れを示すフローチャートである。 第3の実施の形態におけるデータベースにデータを追加したときの処理の流れを示すフローチャートである。 第4の実施の形態におけるキャッシュデータの有効性確認に無効期間を設けた場合の検索時の処理の流れを示すフローチャートである。
以下、本発明の実施の形態について図面を用いて説明する。
[第1の実施の形態]
図1は、第1の実施の形態におけるキャッシュ管理装置を含む検索システムの構成を示すブロック図である。同図に示す検索システムは、データ登録処理部100、検索処理部200、キャッシュ管理部300、データベース管理テーブル400、データベース410、キャッシュ管理テーブル500、およびキャッシュ510を備える。検索システムが備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは検索システムが備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。以下、各部について説明する。
データ登録処理部100は、データベース410への登録要求を受信し、データベース410への変更(データの追加/更新/削除)処理を行うとともに、データベース410への変更内容をデータベース管理テーブル400に登録する。
検索処理部200は、検索クエリの受信、検索結果の返却といった検索処理を行う。
キャッシュ管理部300は、キャッシュ510が保持するキャッシュデータの管理・削除を行うとともに、検索時にキャッシュの有効性を確認する。
データベース管理テーブル400は、データベース410に格納されたデータの情報を管理する。図2に、データベース管理テーブル400の保持する情報の例を示す。同図に示すように、データベース管理テーブル400の各レコードは、データベース410に格納されたデータを一意に識別するデータID、データ自体を格納するデータ内容、およびデータベースへの変更が発生した日時を示す登録日時で構成される。
キャッシュ管理テーブル500は、キャッシュ510に保存されたキャッシュデータの情報を管理する。図3に、キャッシュ管理テーブル500の保持する情報の例を示す。同図に示すように、キャッシュ管理テーブル500の各レコードは、キャッシュ510が保持するキャッシュデータを一意に識別するキャッシュID、キャッシュデータに対応する検索クエリ、キャッシュデータに含まれるデータのデータIDが記載された検索結果IDリスト、およびキャッシュデータを生成した日時を示す生成日時で構成される。なお、キャッシュIDは、後述する検索時の処理において、受信した検索クエリとキャッシュ管理テーブル500の検索クエリとの照合を高速に行うため、検索クエリの文字列から生成するハッシュ値を用いるとよい。また、キャッシュ510においては、検索クエリに対する検索結果をキャッシュデータとして保管するが、そのキャッシュデータをキャッシュIDに対応する形で保管するとよい。例えば、図3の項番c1のキャッシュデータは、"cache_000010010" というファイル名とする。
次に、データベース変更時の処理について説明する。図4は、データベース変更時の処理の流れを示すフローチャートである。
まず、データ登録処理部100がデータベース410への登録要求を受信すると、その登録要求をデータベース410に送信するとともに、その登録要求がデータの追加/更新であるか、データの削除であるかを判定する(ステップS101)。
登録要求が追加/更新の場合、データ登録処理部100は、データベース管理テーブル400から登録要求のデータに該当するレコードを検索し(ステップS102)、該当レコードの有無を判定する(ステップS103)。該当するレコードは、データベース410に格納されたデータを一意に識別するデータIDをキーに検索する。
該当レコードが無い場合は、データベース管理テーブル400にレコードを追加し(ステップS104)、そのレコードにデータベース410に追加した内容(データID、データ内容、登録日時)を登録する(ステップS105)。
該当レコードが有る場合は、そのレコードをデータベース410を更新した内容(データ内容、登録日時)で更新する。
一方、登録要求が「削除」の場合は、データベース管理テーブル400から登録要求のデータに該当するレコードを検索し(ステップS107)、そのレコードを削除する(ステップS108)。
次に、検索時の処理について説明する。図5は、検索時の処理の流れを示すフローチャートである。
まず、検索処理部200が検索クエリを受信すると、キャッシュ管理部300は、受信した検索クエリとキャッシュ管理テーブル500の検索クエリを照合し(ステップS201)、該当するレコードが有るか否か判定する(ステップS202)。このとき、キャッシュIDを検索クエリの文字列から生成したハッシュ値としている場合、受信した検索クエリをハッシュ値に変換し、キャッシュIDと照合してもよい。
検索クエリを照合した結果、キャッシュ管理テーブル500に該当レコードがある場合、当該レコードからキャッシュデータの生成日時を取得し(ステップS203)、当該レコードが示すキャッシュデータが有効期限内か否か確認する(ステップS204)。キャッシュデータの有効期限は運用に応じて設定されるものとし、例えば生成日時から1ヶ月を有効期限として設定する。
キャッシュデータが有効期限切れの場合、受信した検索クエリに対応するキャッシュデータを「無効」と判断し(ステップS213)、キャッシュ管理テーブル500から当該レコードを削除するとともに、当該レコードが示すキャッシュデータをキャッシュ510から削除する(ステップS214)。そして、ステップS221へ進み受信した検索クエリでデータベースを検索する。
キャッシュデータが有効期限内の場合は、当該レコードから検索結果IDリストを取得する(ステップS205)。
そして、検索結果IDリストに記載されたデータIDをキーとして、各データIDに対応するデータベース管理テーブル400のレコードを検索し(ステップS206)、該当するレコードが有るか否か判定する(ステップS207)。
データベース管理テーブル400に該当するレコードが無い場合、つまり、該当するデータがデータベース410から削除されていた場合、キャッシュが「無効」である場合の処理を行って(ステップS213,S214)、ステップS221へ進み受信した検索クエリでデータベースを検索する。
データベース管理テーブル400に該当するレコードがある場合、当該レコードの登録日時を取得し、ステップS203で取得した生成日時と照合し(ステップS208)、キャッシュデータの生成日時がデータの登録日時以前であるか否か判定する(ステップS209)。
キャッシュデータの生成日時がデータの登録日時以前の場合、つまり、キャッシュデータの生成後にデータが更新されている場合、キャッシュが「無効」である場合の処理を行って(ステップS213,S214)、ステップS221へ進みデータベースへの検索処理を行う。
キャッシュデータの生成日時がデータの登録日時以降の場合、つまり、キャッシュデータの生成後に該当するデータが更新されていない場合、検索結果IDリストに記載されたデータIDすべてについて処理を行ったか否か判定し(ステップS210)、まだ処理していないデータIDが存在する場合はステップS206に戻り、検索結果IDリストに記載された全てのデータIDに対して上記ステップS206〜S209の処理を繰り返す。
検索結果IDリストに記載された全てのデータIDがそれぞれ示すデータが、受信した検索クエリに対応するキャッシュデータの生成後に更新/削除されていない場合、つまり、検索結果IDリストに記載されたすべてのデータIDについて該当するデータレコードが存在し、そのデータレコードすべての登録日時が生成日時よりも古い場合、そのキャッシュデータを「有効」と判断し(ステップS211)、検索結果としてそのキャッシュデータを返却する(ステップS212)。
一方、受信した検索クエリに対応するキャッシュデータが無い場合、あるいは受信した検索クエリに対応するキャッシュデータが無効の場合は、受信した検索クエリでデータベース410を検索する(ステップS221)。そして、キャッシュ管理テーブル500にレコードを追加し、追加したレコードにキャッシュデータの情報、検索結果の情報(キャッシュID、検索クエリ、検索結果IDリスト、生成日時)を登録するとともに(ステップS222)、取得した検索結果をキャッシュデータとしてキャッシュ510に保存する(ステップS223)。そして、検索結果を返却する(ステップS224)。
次に、有効期限切れキャッシュデータを削除する処理について説明する。図6は、有効期限切れキャッシュデータを削除する処理の流れを示すフローチャートである。本処理は、運用に応じた設定に従って定期的(例えば、一週間毎)に実施されるものとする。
まず、キャッシュ管理部300は、キャッシュ管理テーブル500の各レコードの生成日時を取得し(ステップS301)、当該レコードが示すキャッシュデータが有効期限内か否か確認する(ステップS302)。キャッシュの有効期限は前述したように運用に応じて設定されるものである。
有効期限の確認の結果、キャッシュデータが有効期限切れであった場合、キャッシュ管理テーブル500から当該レコードを削除するとともに、該当するキャッシュデータをキャッシュ510から削除する(ステップS303)。
キャッシュ管理テーブル500の有する全てのレコードに対して処理を行ったか否か判定し(ステップS304)、全レコードに対して上記ステップS301〜S303の処理を繰り返す。
以上説明したように、本実施の形態によれば、データベース管理テーブル400に、データベース410へ登録したデータを一意に識別するデータID、およびデータを追加/更新した登録日時を格納するとともに、キャッシュ管理テーブル500に、キャッシュデータ生成時の検索クエリ、キャッシュデータに含まれるデータのデータIDを有する検索結果IDリスト、およびキュッシュデータを生成した日時を示す生成日時を格納しておき、検索時に、検索クエリと合致する検索クエリを有するレコードをキャッシュ管理テーブル500から検索し、検索されたレコードから検索結果IDリストと生成日時を取得し、検索結果IDリストに記載されたデータIDそれぞれについて一致するデータIDを持つレコードをデータベース管理テーブル400から検索し、検索結果IDリストに記載されたデータIDを有するレコードがデータベース管理テーブル400に存在しない場合、あるいは、検索されたレコードの登録日時がキャッシュデータの生成日時よりも新しい場合は、検索クエリに対応するキャッシュデータは無効であると判断し、検索結果IDリストに記載されたデータIDのすべてについて、一致するデータIDを有するレコードがデータベース管理テーブル400に存在し、そのレコードすべての登録日時がキャッシュデータの生成日時よりも古い場合は、検索クエリに対応するキャッシュデータは有効であると判断することにより、データベース410からデータを削除すること、並びに、データベース410のデータを更新することで生じるデータベース410とキャッシュ510との不整合を無くすことができる。
本実施の形態によれば、検索時にその検索クエリに対応するキャッシュデータのみ有効性を判断するので、キャッシュデータの有効性を判断する処理コストを抑えることができ、効率的なキャッシュ管理が可能となる。
[第2の実施の形態]
第1の実施の形態では、キャッシュ管理テーブル500のレコードが保持する検索結果IDリストに記載された各データIDが示すデータに更新/削除の操作があったか否かをデータベース管理テーブル400に照会することでキャッシュデータの有効性を判断した(図5のステップS206〜S209)。この際、データベース管理テーブル400の保持するレコード数が多くなれば照会に要する時間も長くなり、検索結果の応答時間を増加させることになる。
そこで、第2の実施の形態では、ある期間内に実施されたデータベースへの変更内容を管理し、キャッシュ管理テーブル500の検索結果IDリストに記載された各データIDとデータベースへの変更内容を照合し、キャッシュデータ生成後にそのキャッシュデータに関連するデータに変更があったか否か判定し、キャッシュデータの有効性を確認する。
図7は、第2の実施の形態におけるキャッシュ管理装置を含む検索システムの構成を示すブロック図である。同図に示す検索システムは、図1に示したものに対してデータベース変更履歴600を追加したものである。
データベース変更履歴600は、データベース410への変更情報を管理する。図8に、データベース変更履歴600の保持する情報の例を示す。同図に示すように、データベース変更履歴600の各レコードは、データベース410への変更が発生した登録日時、データベース410に格納されたデータを一意に識別するデータID、およびデータベース410への変更内容を表す管理フラグで構成される。管理フラグは、データの追加/更新/削除をそれぞれ”0”,”1”,”2”で表す。データベース変更履歴600は、キャッシュ管理テーブル500の検索結果IDリストとの照合処理を高速に実施できるようにメモリで保持するとよい。
次に、データベース変更時の処理について説明する。図9は、データベース変更時の処理の流れを示すフローチャートである。図9のステップS601〜S608のデータベース管理テーブル400にレコードを追加/更新/削除する処理は図4のステップS101〜S108と同様であるのでここでの説明は省略する。以下、本実施の形態の拡張部分である、データベース変更履歴600に関する処理について説明する。
データベース410にデータが追加されたときは、データベース管理テーブル400にレコードが追加される(ステップS604,S605)。そして、データ登録処理部100は、データベース変更履歴600にレコードを追加し(ステップS611)、追加したレコードに履歴情報(登録日時、データID、管理フラグ”0”)を登録する(ステップS612)。なお、管理フラグの”0”は、データが追加されたことを表す。
データベース410のデータが更新されたときは、データベース管理テーブル400のレコードを更新する(ステップS606)。そして、データ登録処理部100は、更新したデータのIDを有する履歴情報をデータベース変更履歴600から検索し(ステップS621)、その履歴情報の管理フラグを確認する(ステップS622)。管理フラグが”1”か”2”の場合、つまり、その履歴情報がデータの更新/削除を示す場合は、当該レコードの登録日時と管理フラグ(”1”を記載)を更新して処理を終了する(ステップS626)。管理フラグが”0”の場合、つまり、その履歴情報がデータの追加を示す場合は、全履歴情報を処理したか否か判定し(ステップS623)、まだ処理していない履歴情報がある場合はステップS621に戻り処理を繰り返す。上記の処理の結果、更新したデータのデータIDを有する履歴情報に管理フラグが”1”または”2”のものが無い場合は、データベース変更履歴600にレコードを追加し(ステップS624)、追加したレコードに履歴情報(登録日時、データID、管理フラグ”1”)を登録する(ステップS625)。
データベース410のデータが削除されたときは、データベース管理テーブル400のレコードを削除する(ステップS608)。そして、データ登録処理部100は、削除したデータのIDを有する履歴情報をデータベース変更履歴600から検索し(ステップS631)、その履歴情報の管理フラグを確認する(ステップS632)。管理フラグが”1”か”2”の場合、つまり、その履歴情報がデータの更新/削除を示す場合は、当該レコードの登録日時と管理フラグ(”2”を記載)を更新して処理を終了する(ステップS636)。管理フラグが”0”の場合、つまり、その履歴情報がデータの追加を示す場合は、全履歴情報を処理したか否か判定し(ステップS623)、まだ処理していない履歴情報がある場合はステップS621に戻り処理を繰り返す。上記の処理の結果、削除したデータのデータIDを有する履歴情報に管理フラグが”1”または”2”のものが無い場合は、データベース変更履歴600にレコードを追加し(ステップS634)、追加したレコードに履歴情報(登録日時、データID、管理フラグ”2”)を登録する(ステップS635)。
このように、データベース変更履歴600は、データベースへのデータの追加履歴とデータの変更/削除履歴を別々に管理する。また、データの変更/削除履歴に関しては、履歴情報を最新の情報に上書きすることで、データベースへの変更が頻繁に発生した場合でもデータベース変更履歴600のサイズを抑えることができ、あるキャッシュデータに関連するデータの変更/削除の履歴を照合する処理を高速に実施することが可能となる。
次に、検索時の処理について説明する。図10は、検索時の処理の流れを示すフローチャートである。同図に示す検索時の処理は、第1の実施の形態における検索時の処理(図5参照)と比べると、データベース管理テーブル400を利用する代わりに、データベース変更履歴600を利用する点で異なる。具体的には、図5のステップS206〜S209と、図10のステップS706〜S708が相違する部分である。
検索処理部200が検索クエリを受信すると、キャッシュ管理部300は、受信した検索クエリとキャッシュ管理テーブル500の検索クエリを照合し(ステップS701)、該当するレコードが有るか否か判定する(ステップS702)。該当するレコードが無い場合は、受信した検索クエリでデータベース410を検索し、検索結果をキャッシュデータとして保存し、検索結果を返却する(ステップS721〜S724)。
キャッシュ管理テーブル500に該当するレコードが有る場合は、当該レコードからキャッシュデータの生成日時を取得し(ステップS703)、当該レコードが示すキャッシュデータが有効期限内か否か確認する(ステップS704)。キャッシュデータが有効期限切れの場合は、受信した検索クエリに対応するキャッシュデータを「無効」と判断し(ステップS712)、キャッシュ管理テーブル500から当該レコードを削除するとともに、当該レコードが示すキャッシュデータをキャッシュ510から削除する(ステップS713)。そして、ステップS721へ進み受信した検索クエリでデータベースを検索する。
キャッシュデータが有効期限内の場合は、当該レコードから検索結果IDリストを取得する(ステップS705)。
そして、検索結果IDリストに記載されたデータIDをキーとして、各データIDを含む履歴情報をデータベース変更履歴600から検索し(ステップS706)、履歴情報が存在するか否か判定する(ステップS707)。
データベース変更履歴600に履歴情報が存在する場合、検索された履歴情報の中に管理フラグか”1”または”2”のものが存在するか否か判定する(ステップS708)。データベース変更履歴600は、1つのデータIDに対して管理フラグが異なる履歴情報が複数記載される場合があるので、ステップS706では、複数の履歴情報が検索されることがある。このステップS708の処理では、それら複数の履歴情報に対して処理を実施する。
検索された履歴情報の中に管理フラグが”1”または”2”の履歴情報がある場合、つまり、ある期間内に該当するデータが更新または削除されていた場合、キャッシュが「無効」である場合の処理を行って(ステップS712〜S713)、ステップS721へ進み受信した検索クエリでデータベースを検索する。
一方、データベース変更履歴600に履歴情報が存在しない場合、つまり、ある期間内に該当するデータの追加/変更/削除が無かった場合、及び、検索された履歴情報の中に管理フラグが”1”または”2”のものが存在しない場合、つまり、ある期間内に該当するデータは追加のみであった場合、検索結果IDリストに記載されたデータIDすべてについて処理を行ったか否か判定し(ステップS709)、まだ処理していないデータIDが存在する場合はステップS706に戻り、検索結果IDリストに記載された全てのデータIDに対して上記ステップS706〜S708の処理を繰り返す。
そして、検索結果IDリストに記載された全データIDに対して処理した結果、データベース変更履歴600に検索結果IDリストに記載されたデータIDに関係する履歴情報が無いか、あるいは、関係する履歴情報はあるが管理フラグが”1”または”2”の履歴情報が無い場合、つまり、ある期間内に、受信した検索クエリに対応するキャッシュデータに関係する全データが更新も、削除もされていなかった場合、そのキャッシュデータを「有効」と判断し(ステップS710)、検索結果としてそのキャッシュデータを返却する(ステップS711)。
次に、キャッシュデータを削除する処理について説明する。図11は、キャッシュデータを削除する処理の流れを示すフローチャートである。本処理は、運用に応じた設定に従って定期的(例えば、一日毎)に実施されるものとする。
まず、キャッシュ管理部300は、データベース変更履歴600の履歴情報毎にデータIDと管理フラグを取得し(ステップS801)、管理フラグの値を判定する(ステップS802)。
管理フラグが”0”の場合、キャッシュ管理部300で管理する追加件数をカウントする(ステップS803)。
管理フラグが”1”または”2”の場合、キャッシュ管理部300で管理するキャッシュ削除対象IDリストに当該データIDを追加し(ステップS804)、データベース変更履歴600から当該履歴情報を削除する(ステップS805)。
そして、データベース変更履歴600の全ての履歴情報について処理したか否か判定し(ステップS806)、全ての履歴情報についてステップS801〜S805を繰り返す。
データベース変更履歴600の全履歴情報の処理後、カウントされた追加件数をもとにデータベースとキャッシュとの不整合の程度を判定する(ステップS807)。不整合の程度を判定する方法としては、追加件数が所定の閾値を超えたか否かで判断する方法、総データ数に対する追加件数の比率が所定の閾値を超えたか否かで判断する方法が考えられる。他にも、データベース変更履歴600から登録日時を取得し、登録日時が予め定める閾値よりも古いか否かで判断する方法もある。
不整合の程度が所定の閾値を超えている場合、データベース変更履歴600の全履歴情報を削除し(ステップS808)、キャッシュ管理テーブル500の全レコード、並びに、キャッシュ510の保持する全キャッシュデータを削除する(ステップS809)。なお、追加件数はキャッシュデータを削除する処理のときに随時カウントするので、キャッシュ管理部300が永続的に管理する必要はない。
不整合の程度が所定の閾値を超えていない場合は、キャッシュ管理テーブル500の各レコードの検索結果IDリストを取得し(ステップS810)、ステップS804で作成したキャッシュ削除対象IDリストと取得した検索結果IDリストを照合する(ステップS811)。
照合の結果、一致するデータIDがある場合、つまり、ある期間内に該当するデータが更新、または、削除されていた場合、キャッシュ管理テーブル500の当該レコードが示す検索クエリに対応するキャッシュデータを「無効」と判断し、キャッシュ管理テーブル500の当該レコードを削除するとともに、該当するキャッシュデータをキャッシュ510から削除する(ステップS813)。
そして、キャッシュ管理テーブル500の全レコードについて処理したか否か判定し(ステップS814)、キャッシュ管理テーブル500の全てのレコードについて上記ステップS810〜S813の処理を繰り返す。
このように、データベース変更履歴600では、データベース410へデータを追加した場合の履歴情報はその数が増加し、データベースとキャッシュとの不整合の程度が所定の閾値を超えるまで保持される。一方、データベース410のデータを変更/削除した場合の履歴情報は、上記キャッシュデータを削除する処理が実行されるときに削除されるので、データベース変更履歴600のサイズの増大を抑えることができ、データベース変更履歴600との照合処理を高速に実施することが可能となる。
次に、上記のキャッシュデータを削除する処理において、キャッシュデータの有効期限切れ処理を追加した例について説明する。図12は、図11に示したフローチャートのステップS810〜S814の不整合の程度が閾値内であったときの処理に、キャッシュデータの有効期限切れ処理を追加したフローチャートである。他の処理は、図11と同様であるのでここでの説明は省略する。
不整合の程度が所定の閾値を超えていない場合は、キャッシュ管理テーブル500の各レコードの検索結果IDリストに加えて生成日時を取得し(ステップS820)、当該レコードが示すキャッシュデータが有効期限内であるか否か判定する(ステップS821)。キャッシュデータの有効期限は、運用に応じて設定されるものとし、例えば、生成日時が1ヶ月以内の場合は有効期限内であると判定する。
キャッシュデータが有効期限切れであった場合は、キャッシュ管理テーブル500から当該レコードを削除するとともに、該当するキャッシュデータをキャッシュ510から削除する(ステップS824)。
キャッシュデータが有効期限内の場合は、キャッシュ削除対象IDリストと取得した検索結果IDリストを照合し(ステップS822)、一致するデータIDがあるか否か判定する(ステップS823)。一致するデータIDがある場合は、キャッシュ管理テーブル500から当該レコードを削除するとともに、該当するキャッシュデータをキャッシュ510から削除する(ステップS824)。
そして、キャッシュ管理テーブル500の全レコードについて処理したか否か判定し(ステップS825)、キャッシュ管理テーブル500の全てのレコードについて上記ステップS820〜S824の処理を繰り返す。
もちろん、有効期限切れのキャッシュデータの処理として図6の処理を用いるものでもよい。
以上説明したように、本実施の形態によれば、データベース変更履歴600に、データベース410への変更が発生したデータのデータID、変更内容を表す管理フラグを格納しておき、検索時にキャッシュデータの有効性を判断するときに、検索クエリに対応するキャッシュデータの検索結果IDリストに記載されたデータIDが示すデータについて、データベース変更履歴600に変更/削除された履歴情報が存在する場合は、そのキャッシュデータは無効であると判断することにより、データベース管理テーブル400を参照する場合と比べて、処理コスト、処理時間を抑えることができる。
[第3の実施の形態]
第1の実施の形態を用いることで、データの更新、削除に伴うデータベースとキャッシュとの不整合を無くすことができる。しかしながら、データの追加に伴うデータベースとキャッシュとの不整合は、キャッシュデータの有効期限切れ、または、検索時のキャッシュ無効判断によるキャッシュデータの削除が実施され、その後、新たにキャッシュデータが生成されるまで解消されない。また、追加されたデータが関連するキャッシュデータを探す場合、検索クエリとデータを内容レベル(例えば、検索クエリで指定されたキーワードとデータ内容に含まれるテキスト情報)で照合する必要が生じ、全キャッシュデータに対してこのような処理を行うことは処理量が非常に大きくなり、非効率である。
そこで、第3の実施の形態では、データベース410へのデータ追加時に追加件数の累積をカウントし、その追加件数をもとにデータベースとキャッシュとの不整合の程度を判断し、不整合の程度が所定の閾値を超えた場合に、キャッシュ510が保持する全キャッシュデータを削除する。
図13は、データベース410にデータを追加したときの処理の流れを示すフローチャートであり、図4のステップS105以降に実施される。データの更新、削除の処理については図4に示す処理と同様である。
データ登録処理部100は、データベース410にデータを登録した後、データベース管理テーブル400にレコードを追加し、そのレコードにデータベース410に追加した内容を登録する(図4のステップS104,S105)。
その後、本実施の形態では、データ登録処理部100で管理する追加件数をカウントし(ステップS401)、不整合の程度を判定する(ステップS402)。不整合の程度を判定する方法としては、追加件数が所定の閾値を超えたか否かで判断する方法、あるいは、総データ数に対する追加件数の比率が所定の閾値を超えたか否かで判定する方法が考えられる。
不整合の程度が所定の閾値を超えている場合、追加件数をクリアし(ステップS403)、キャッシュ管理テーブル500の全レコード、並びに、キャッシュ510が保持する全キャッシュデータを削除する(ステップS404)。
また、データの追加によるデータベースとキャッシュの不整合を減らす方法として、データベースへの登録要求として「追加(キャッシュクリア)」を新たに設け、データ登録処理部100がその登録要求を受信した場合、データベースとキャッシュとの不整合の程度を判断することなく、キャッシュ管理テーブル500の全レコード、並びに、キャッシュ510が保持する全キャッシュデータを削除する方法も考えられる。
以上説明したように、本実施の形態によれば、データベース410へのデータの追加時に追加件数の累積をカウントし、その追加件数をもとにデータベースとキャッシュとの不整合の程度を判断し、不整合の程度が所定の閾値を超えた場合に全キャッシュデータを削除することにより、データの追加に伴うデータベースとキャッシュとの不整合についてもある程度軽減することができる。
なお、本実施の形態におけるキャッシュデータの削除は、第2の実施の形態にも適用でき、その場合、キャッシュデータを削除するときに全履歴情報を削除する。
[第4の実施の形態]
第1の実施の形態では、検索時にキャッシュの無効/有効を判定することで、データベースとキャッシュデータの不整合を軽減している。その際、受信した検索クエリに対するキュッシュデータのみの有効性を判断することで、キャッシュチェックに要する処理コストの軽減を図っている。しかしながら、同じ検索クエリが頻繁に来る場合にもその都度キャッシュデータの確認を実施するため、処理が冗長である。
そこで、第4の実施の形態では、キャッシュデータの生成から一定期間内(例えば1時間)にそのキャッシュデータに対応する検索クエリを受信した場合、保持するキャッシュデータは十分に新鮮で有効性の確認処理は不要であるとみなし、当該キャッシュデータを検索結果として返却する。
図14は、キャッシュデータの有効性確認に無効期間を設けた場合の検索時の処理の流れを示すフローチャートである。図14に示す処理は、図5,10に示す処理にキャッシュデータの生成日時から一定期間内であるか否か判断する処理を加えたものである。
検索処理部200が検索クエリを受信すると、キャッシュ管理部300は、受信した検索クエリとキャッシュ管理テーブル500の検索クエリを照合し(ステップS901)、該当するレコードが有るか否か判定する(ステップS902)。該当するレコードが無い場合は、受信した検索クエリでデータベース410を検索し、検索結果をキャッシュデータとして保存し、検索結果を返却する(ステップS908〜S911)。
該当するレコードが有る場合は、そのレコードからキャッシュデータの生成日時を取得する(ステップS903)。そして、生成日時と現在時刻を比較し(ステップS904)、現在時刻が生成日時から一定期間内であるか否か判定する(ステップS905)。
現在時刻が生成日時から一定期間内である場合は、キャッシュデータは十分に新鮮で有効性の確認処理は不要と判断し、ステップS906のキャッシュデータの有効性確認の処理を実施せず、検索結果として当該キャッシュデータを返却する(ステップS907)。
現在時刻が生成日時から一定期間以上離れている場合は、キャッシュデータの有効性を判定する(ステップS906)。キャッシュデータが有効の場合は、検索結果としてキャッシュデータを返却する(ステップS907)。キャッシュデータが無効の場合は、ステップS909へ進み受信した検索クエリでデータベースを検索する(ステップS908〜S911)。ステップS906のキャッシュデータの有効性の判定は、図5のステップS204〜S214、あるいは図10のステップS704〜S713の処理を用いる。
以上説明したように、本実施の形態によれば、検索時にキャッシュ管理テーブル500からキャッシュデータの生成日時を取得し、現在時刻が生成日時から一定期間内である場合は、そのキャッシュデータは十分に新鮮で有効性の確認処理は不要であると判断することにより、同じ検索クエリを頻繁に受信する場合に、その検索クエリに対応するキャッシュデータの有効性判断をその都度行わなくて済み、キャッシュ管理にかかる総体的な処理コストを軽減することができる。
100…データ登録処理部
200…検索処理部
300…キャッシュ管理部
400…データベース管理テーブル
410…データベース
500…キャッシュ管理テーブル
510…キャッシュ
600…データベース変更履歴

Claims (4)

  1. データベースに格納されたデータを検索クエリを用いて検索した検索結果をキャッシュデータとしてキャッシュに格納するキャッシュ管理装置であって、
    前記データベースに格納されたデータを一意に識別するデータID、当該データに対する操作内容を示す管理フラグを関連付けた変更履歴を蓄積する変更履歴蓄積手段と、
    前記キャッシュに格納されたキャッシュデータを一意に識別するキャッシュID、当該キャッシュデータに対応する検索クエリ、当該キャッシュデータに含まれるデータのデータIDを記載した検索結果リスト、当該キャッシュデータの生成日時を関連付けたキャッシュレコードを蓄積するキャッシュ管理テーブルと、
    検索クエリを受信したときに、当該検索クエリに一致する検索クエリを持つ前記キャッシュレコードを前記キャッシュ管理テーブルから検索し、検索したキャッシュレコードから前記検索結果リストと前記生成日時を取得する取得手段と、
    前記取得手段が取得した前記検索結果リストに記載されたデータIDと一致するデータIDを持つ前記変更履歴を前記変更履歴蓄積手段から検索し、該当する変更履歴が検索されない場合及び検索された前記変更履歴すべての管理フラグがデータの追加を示している場合は、前記取得手段が検索した前記キャッシュレコードに対応する前記キャッシュデータは有効であると判定し、それ以外の場合は当該キャッシュデータは無効であると判定する判定手段と、
    前記判定手段が前記キャッシュデータは有効であると判定した場合は、当該キャッシュデータを検索結果として返却し、受信した検索クエリに一致する検索クエリを持つ前記キャッシュレコードが検索できない場合、及び前記判定手段が前記キャッシュデータは無効であると判定した場合は、受信した検索クエリを用いて前記データベースを検索して検索結果を返却し、当該検索結果を前記キャッシュにキャッシュデータとして格納するとともに、前記キャッシュ管理テーブルに当該キャッシュデータのキャッシュID、検索に用いた検索クエリ、当該キャッシュデータに含まれるデータのデータIDを記載した検索結果リスト、当該キャッシュデータの生成日時を関連付けたキャッシュレコードを追加する検索手段と、
    前記変更履歴蓄積手段から各変更履歴の管理フラグを取得し、当該管理フラグがデータの追加を示している場合はデータが追加された件数をカウントし、それ以外の場合はその変更履歴のデータIDを削除対象リストに追加し、前記変更履歴蓄積手段から全変更履歴を削除する変更履歴更新手段と、
    前記件数に基づいて算出した不整合の程度が所定の閾値を超えた場合、前記キャッシュ管理テーブルの全キャッシュレコード及び前記キャッシュの格納された全キャッシュデータを削除し、前記件数に基づいて算出した不整合の程度が所定の閾値を超えない場合、前記削除対象リストに記載されているデータIDを有する前記キャッシュレコードを前記キャッシュ管理テーブルから削除するとともに、当該キャッシュレコードに対応するキャッシュデータを前記キャッシュから削除するキャッシュ削除手段と、
    を有することを特徴とするキャッシュ管理装置。
  2. 前記データベースにデータが追加されたときは、前記変更履歴蓄積手段に変更履歴を追加して当該変更履歴に前記データID、データの追加を示す管理フラグを登録し、
    前記データベースのデータが変更あるいは削除されたときは、変更あるいは削除されたデータのデータIDを有する変更履歴を前記変更履歴蓄積手段から検索し、該当する変更履歴がない場合及び管理フラグがデータの追加を示す変更履歴のみが検索された場合は、前記変更履歴蓄積手段に変更履歴を追加して当該変更履歴に前記データID、データの変更あるいは削除を示す管理フラグを登録し、管理フラグがデータの変更あるいは削除を示す変更履歴が検索された場合は、当該変更履歴の管理フラグを更新する変更履歴管理手段を有することを特徴とする請求項記載のキャッシュ管理装置。
  3. 請求項1又は2に記載のキャッシュ管理装置を構成する各手段としてコンピュータを機能させるためのキャッシュ管理プログラム。
  4. 請求項記載のキャッシュ管理プログラムを記録した記録媒体。
JP2010186031A 2010-08-23 2010-08-23 キャッシュ管理装置、キャッシュ管理プログラム及び記録媒体 Active JP5385874B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010186031A JP5385874B2 (ja) 2010-08-23 2010-08-23 キャッシュ管理装置、キャッシュ管理プログラム及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010186031A JP5385874B2 (ja) 2010-08-23 2010-08-23 キャッシュ管理装置、キャッシュ管理プログラム及び記録媒体

Publications (2)

Publication Number Publication Date
JP2012043338A JP2012043338A (ja) 2012-03-01
JP5385874B2 true JP5385874B2 (ja) 2014-01-08

Family

ID=45899532

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010186031A Active JP5385874B2 (ja) 2010-08-23 2010-08-23 キャッシュ管理装置、キャッシュ管理プログラム及び記録媒体

Country Status (1)

Country Link
JP (1) JP5385874B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101318234B1 (ko) * 2012-04-25 2013-10-15 주식회사 비트랜 데이터베이스 시스템을 위한 데이터 캐시 방법 및 장치
JP5991141B2 (ja) * 2012-10-31 2016-09-14 日本電気株式会社 データ読み込み装置、データ書き込み装置、分散システム、方法、及びプログラム
US10108668B2 (en) * 2012-12-14 2018-10-23 Sap Se Column smart mechanism for column based database
CN107239467B (zh) * 2016-03-29 2020-04-10 北京神州泰岳软件股份有限公司 基于数据库的数据处理方法及装置
CN109800538B (zh) * 2019-02-21 2022-09-13 安徽省川佰科技有限公司 一种基于大数据的建筑楼房日照分析系统
CN110018969B (zh) * 2019-03-08 2023-06-02 平安科技(深圳)有限公司 数据缓存方法、装置、计算机设备和存储介质
CN112506973B (zh) * 2020-12-14 2023-12-15 中国银联股份有限公司 一种存储数据管理的方法及装置
CN113486037A (zh) * 2021-07-27 2021-10-08 北京京东乾石科技有限公司 更新缓存数据的方法、管理器和缓存服务器
CN113626458A (zh) * 2021-08-19 2021-11-09 咪咕数字传媒有限公司 高并发数据更新方法、装置、设备以及计算机存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274401A (ja) * 1993-03-18 1994-09-30 Nec Corp 分散データベース制御方式
JP2005267540A (ja) * 2004-03-22 2005-09-29 Fuji Xerox Co Ltd ファイル検索装置およびファイル検索方法およびファイル検索プログラム
JP4763587B2 (ja) * 2006-12-11 2011-08-31 株式会社ソニー・コンピュータエンタテインメント キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体

Also Published As

Publication number Publication date
JP2012043338A (ja) 2012-03-01

Similar Documents

Publication Publication Date Title
JP5385874B2 (ja) キャッシュ管理装置、キャッシュ管理プログラム及び記録媒体
US7945637B2 (en) Server architecture and methods for persistently storing and serving event data
JP2020529673A5 (ja)
KR101496179B1 (ko) 데이터 부재 태깅 기반의 정보 검색 시스템 및 방법
JP2005122702A5 (ja)
WO2010016840A1 (en) Providing data structures for determining whether keys of an index are present in a storage system
CN111858496A (zh) 一种元数据的检索方法、装置、存储介质和电子设备
WO2013049530A1 (en) Efficient cache management in a cluster
JP2011191862A (ja) ファイル管理装置、ファイル管理システム、およびファイル管理プログラム
JP5322019B2 (ja) 関連する情報を事前にキャッシュする予測型キャッシュ方法、そのシステム及びそのプログラム
JP2009187393A (ja) アクセス頻度の高い情報を事前にキャッシュする予測型キャッシュ方法、そのシステム及びそのプログラム
WO2012011910A1 (en) Context-based item bookmarking
US20180203908A1 (en) Distributed database system and distributed data processing method
JP6225606B2 (ja) データベース監視装置、データベース監視方法、並びにコンピュータ・プログラム
KR20130136730A (ko) 비정형 로그 압축 저장 및 조회 방법 및 장치
JPWO2014162397A1 (ja) 計算機システム、データ管理方法、及び計算機
JP2012203792A (ja) 有効期限算出装置、有効期限算出方法及び有効期限算出プログラム
JP4256297B2 (ja) 情報中継装置
JP5365830B2 (ja) 利用される可能性の高い情報をキャッシュする予測型キャッシュ方法、そのシステム及びそのプログラム
CN110362535B (zh) 一种文件管理方法、装置及系统
JP2006185059A (ja) コンテンツ管理装置
JP2004252789A (ja) 情報検索装置、情報検索方法、情報検索プログラム及びそのプログラムを記録した記録媒体
JP4825504B2 (ja) データ登録・検索システムおよびデータ登録・検索方法
JP2004310630A (ja) キャッシュ制御装置
WO2012132947A1 (ja) サービス提供条件最適化方法、サービス検索装置、及びサービス提供条件最適化システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131001

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131004

R150 Certificate of patent or registration of utility model

Ref document number: 5385874

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350