JP5071990B2 - データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム - Google Patents

データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム Download PDF

Info

Publication number
JP5071990B2
JP5071990B2 JP2009175924A JP2009175924A JP5071990B2 JP 5071990 B2 JP5071990 B2 JP 5071990B2 JP 2009175924 A JP2009175924 A JP 2009175924A JP 2009175924 A JP2009175924 A JP 2009175924A JP 5071990 B2 JP5071990 B2 JP 5071990B2
Authority
JP
Japan
Prior art keywords
cache
database
data
base table
update
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.)
Expired - Fee Related
Application number
JP2009175924A
Other languages
English (en)
Other versions
JP2011028658A (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 JP2009175924A priority Critical patent/JP5071990B2/ja
Publication of JP2011028658A publication Critical patent/JP2011028658A/ja
Application granted granted Critical
Publication of JP5071990B2 publication Critical patent/JP5071990B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベースにおけるデータのキャッシュエントリをメンテナンスするキャッシュメンテナンス技術に関する。
今日、インターネットの爆発的な普及に伴い、多くのサービスがインターネットを通じて提供されている。インターネットを通じて提供されるサービスとしては、例えば、オンラインショッピング、オンラインバンキング、ソーシャルネットワーキングサービス(SNS)等があげられる。これらのサービスを提供するシステムは、殆どの場合、ユーザのアカウント情報や商品情報、ユーザによる投稿記事等のデータを保管するデータベース(DB)と、アプリケーションとで構成される。このアプリケーションは、サービスに合わせてデータベースに問い合わせ(クエリ)を発行し、データベースから返却されるデータを用いて、ユーザに提示する結果を作成する。
これらのシステムでは、ユーザの増加等の原因によりデータベースヘのアクセス数が大
きく増加した場合、データベースの帯域幅やCPU(Central Processing Unit)資源を使い果たし、パフォーマンスの低下やサーバダウンが発生することがある。また、これらのシステムでは、アクセス数が増加しない場合でも、データベースへの問い合わせが複雑な場合、問い合わせの結果を返却するのに長い時間がかかってしまう。
そこで、上記のデータベースの処理負荷や参照性能の問題を解決する手法として、データベースとは別に、高速なアクセスが可能な記憶領域(キャッシュ)に、このデータベースヘの問い合わせ結果を利用して作られたデータを格納することが行われている。
ここで、キャッシュからデータを取得する場合、アプリケーションは、必要なデータがキャッシュ上に存在するか否かを確認する。キャッシュ上に当該データが存在しなかった場合、データベースからデータを取得するのと同時に、キャッシュにユーザからのリクエストを関連付けたデータを格納する。以降、同じデータが必要になった場合、アプリケーションは、キャッシュからこのデータを読み出して利用する。これによって、データベースにアクセスする必要がなくなるため、キャッシュを用いたシステムでは、高速にデータを参照可能とする他、データベースヘのアクセス数を低減してデータベースの負荷を軽減することができる。
一方、キャッシュを利用する場合、データベースに更新処理(登録、更新、削除)が発生すると、キャッシュに保存されたデータとデータベースに格納されたデータとに不整合が発生する可能性がある。例えば、データベースで更新されたデータをキャッシュで参照する場合、キャッシュに保存されたデータは更新されていないため、アプリケーションは、更新前の古いデータを参照してしまう。
従来から、この問題を解決するために、データベースに対して更新が行われた際、キャッシュの一貫性(cache consistency)を保つためのキャッシュメンテナンス技術が提案さ
れている。
この技術としては、キャッシュを破棄するものが提案されている(例えば、非特許文献1参照)。この非特許文献1に記載の方式では、データベースに対してキャッシュに不整合が発生するような更新が行われた場合、データベースがキャッシュに対して破棄メッセージを送信して、キャッシュで不整合が発生するデータを破棄し、キャッシュに保存された更新前のデータが参照されてしまうことを防止する。
また、このキャッシュ破棄後に、データベースに再度問い合わせを行うことでキャッシュに保存された全データを入れ替えて最新に保つ、再問い合わせ方式も提案されている(例えば、非特許文献2参照)。
Greg Barish,Katia obraczka,"World Wide Web Caching: Trens and techniques",IEEE Communications Magazine 2000.5 James Gwertzman,Margo Seltzer,"World Wide Web Cache Consistency",USENIX technical Conference,1996
しかし、前記した技術のいずれもが、データベースに対してキャッシュに不整合が発生するような更新が行われるたび、データベースがキャッシュに対して破棄メッセージを送信しなければならず処理負荷が大きかった。また、データベースは、データベースの更新内容およびデータベースを元に破棄メッセージの対象となるキャッシュを求めていた。このため、データベースは、実際にはキャッシュ上に存在しないキャッシュエントリの特定や、キャッシュエントリの破棄メッセージの送信処理を行う必要もあり、キャッシュメンテナンスの処理負荷が大きかった。
そこで、本発明は、前記した課題を解決し、データベースのキャッシュメンテナンス処理の負荷を軽減することを目的とする。
前記した課題を解決するため、本発明は、
データベース装置から読み出されたデータのキャッシュを備えるキャッシュ装置と、前記キャッシュ装置とネットワーク経由で接続された前記データベース装置とを有するデータベースシステムにおいて、自身のデータベース装置のデータの更新処理が行われたとき、前記ネットワーク経由で前記キャッシュ装置におけるキャッシュの破棄メッセージを送信するデータベース装置であって、
前記データを記憶する複数のベーステーブルと、このベーステーブルに記憶されたデータのうち、前記キャッシュにキャッシュエントリのあるデータを示したキャッシュ管理テーブルとを記憶する記憶部と、
前記ネットワーク経由で、前記キャッシュ装置との間で各種情報の送受信を司る入出力部と、
前記ベーステーブルの更新処理が発生したとき、前記キャッシュ装置に格納するキャッシュエントリを作成するための、前記複数のベーステーブルを対象としたキャッシュ作成用クエリを用いて、当該キャッシュ作成用クエリに記載の特定のベーステーブルの属性を示すパラメータ属性によってベーステーブルおよび属性を特定し、前記キャッシュ管理テーブルを用いて、特定したベーステーブルからレコードを絞り込み、前記ベーステーブルの更新処理内容を参照して、前記ベーステーブルの更新処理の影響を受けるデータのうち、前記キャッシュにキャッシュエントリが存在するデータを特定するキャッシュエントリ特定部と、
前記入出力部経由で、前記キャッシュ装置に対し、前記特定したデータのキャッシュエントリの破棄メッセージを送信するキャッシュメンテナンス部と、
前記入出力部経由で、前記キャッシュ装置におけるキャッシュエントリの更新情報を受信したとき、当該更新情報に基づき、前記キャッシュ管理テーブルを更新するキャッシュ管理テーブル更新部とを備える。
このようなデータベース装置は、ベーステーブルの更新処理の発生時、この更新処理の影響を受けるデータのうち、キャッシュ上にキャッシュエントリが存在するデータを特定する。そして、データベース装置は、この特定したデータのキャッシュエントリの破棄メッセージを、キャッシュ装置へ送信する。つまり、データベース装置は、キャッシュ装置のキャッシュ上に存在するキャッシュエントリを対象として破棄メッセージを送信するので、実際にはキャッシュ上に存在しないキャッシュエントリの特定を行う必要がなくなる。また、無駄な破棄メッセージを送信することがない。よって、データベース装置によるキャッシュメンテナンスの処理負荷を軽減することができる。
また、本発明は、前記したデータベース装置と、前記キャッシュの更新処理を監視し、前記ネットワーク経由で、前記キャッシュエントリの更新情報を前記データベース装置へ送信するキャッシュトラック部を備えるキャッシュ装置を1以上とを含んでなることを特徴とするデータベースシステムとした。
このようにすることで、データベース装置によるキャッシュメンテナンスの処理負荷を軽減するデータベースシステムを実現することができる。また、データベース装置は、キャッシュ装置のキャッシュが更新されたとき、キャッシュ装置からその更新情報を受信できるので、キャッシュ上に存在する最新のキャッシュエントリを把握することができる。
また、本発明は、キャッシュメンテナンス方法を、コンピュータであるデータベース装置に実行させるためのプログラムとした。
このようにすることで、一般的なデータベース装置に、前記したキャッシュメンテナンス方法を実行させることができる。
本発明によれば、データベースにおけるキャッシュメンテナンスの負荷を軽減することができる。
本実施の形態のデータベースシステムの構成例を示した図である。 図1のデータベースシステムの概要を概念的に示した図である。 (a)は、図1のベーステーブルを例示した図であり、(b)は、キャッシュ作成用クエリを例示した図である。 図1のキャッシュ管理テーブルを例示した図である。 図1のキャッシュを例示した図である。 図1のデータベース装置の処理手順を示した図である。 図1のベーステーブル更新時の処理(S330)の詳細フローを示した図である。 図1のベーステーブルの更新処理により影響を受けるキャッシュエントリの特定処理の例を説明した図である。 図7のベーステーブルの絞り込み処理(S420)の詳細フローを示した図である。 図7のベーステーブルの絞り込み処理の例を示した図である。 (a)は、図1のキャッシュ管理テーブルによるベーステーブルの絞り込みの問い合わせを例示した図であり、(b)は、絞り込み結果を例示した図である。 本実施の形態のデータベースシステムの構成例を示した図である。
以下、本発明を実施するための形態(以下、実施の形態とする)について説明する。まず、図1を用いて本実施の形態のデータベースシステムの概要を説明する。データベースシステムは、データベース装置100と、キャッシュ231を備えるキャッシュ装置200と、データベース装置100のデータの更新リクエストや読み出しリクエストを送信する端末装置300とを含んで構成される。このデータベース装置100、キャッシュ装置200および端末装置300は、インターネット等のネットワーク400により接続される。キャッシュ装置200のキャッシュ231には、端末装置300からデータベース装置100ヘの読み出し結果を利用して作られたデータ(キャッシュエントリ)が格納される。そして、端末装置300が、キャッシュ231からデータを読み出す場合、キャッシュ231に当該データがあるか否かを判断し、当該データがない場合、データベース装置100からデータを読み出す。そして、キャッシュ装置200は、キャッシュ231に、端末装置300からのリクエストを関連付けたデータ(キャッシュエントリ)を格納する。以降、端末装置300からのリクエストが同じデータのリクエストであれば、キャッシュ231から、そのデータのキャッシュエントリを読み出して利用する。このデータベースシステムの詳細は後記する。
次に、このようなデータベースシステムの動作概要を、図2を用いて説明する。まず、データベースシステムのデータベース装置100は、ベーステーブル1311の更新リクエストを受け付けると、(1)ベーステーブル1311のデータのうち、キャッシュ装置200のキャッシュ231上にキャッシュエントリがあるデータを絞り込む。ここでキャッシュ231上にキャッシュエントリがあるデータについては、キャッシュ管理テーブル1312に記録されている。よって、データベース装置100は、このキャッシュ管理テーブル1312を参照することで、ベーステーブル1311のどのデータに絞り込めばよいかが分かる。例えば、キャッシュ管理テーブル1312にkey値=d,e,fの記録があれば、これに基づき、ベーステーブル1311のデータのうち、このkey値=d,e,fを持つデータに絞り込めばよいことが分かる。
次に、(2)データベース装置100は、ベーステーブル1311の更新処理の内容を参照して、ベーステーブル1311の更新処理により影響を受けるデータを特定する。例えば、更新処理の内容が、ベーステーブル1311に、author_uid=bのデータを挿入、というものであれば、更新処理により影響を受けるデータは、ベーステーブル1311のto_uid=bを持つデータである。よって、(1)で絞り込まれたベーステーブル1311のデータの中から、このto_uid=bを持つデータ(from_uid=d,fを持つデータ)を特定する。
そして、(3)データベース装置100は、(2)で特定したデータを参照して、キャッシュ231から破棄するキャッシュエントリのkey値のリスト(例えば、key値=d,f)を作成し、キャッシュ装置200へ送信する。この後、キャッシュ装置200は、このリストに示されるキャッシュエントリを、キャッシュ231から破棄する。例えば、キャッシュ装置200は、データベース装置100から、key値=d,fを示したリスト(破棄メッセージ)を受信すると、このキャッシュ231から、このd,fをkey値とするキャッシュエントリを破棄する。
このように、データベース装置100はベーステーブル1311の更新処理の発生時、この更新処理の影響を受けるデータのうち、キャッシュ231上にキャッシュエントリが存在するデータを特定し、このデータのキャッシュエントリの破棄メッセージを、キャッシュ装置200へ送信する。つまり、データベース装置100は、キャッシュ装置200のキャッシュ231上に存在するキャッシュエントリを対象として破棄メッセージを送信するので、実際にはキャッシュ231上に存在しないキャッシュエントリの特定を行う必要がなくなる。また、無駄な破棄メッセージを送信することがなくなる。よって、データベース装置によるキャッシュメンテナンスの処理負荷を軽減することができる。
次に、図1に戻り、データベースシステムの構成を詳細に説明する。
<データベース装置>
データベース装置100は、ネットワーク400経由で通信可能なコンピュータにより実現され、入出力部110、記憶部130および処理部120を備える。入出力部110は、ネットワーク400経由で、端末装置300等から、このデータベース装置100のベーステーブル1311の更新リクエストや読み出しリクエストの入力を受け付けたり、キャッシュ231上のキャッシュエントリの破棄メッセージを送信したりするためのインタフェースである。記憶部130は、ベーステーブル1311およびキャッシュ管理テーブル1312からなるデータベース部131を備える。処理部120は、このデータベース装置100全体の制御を司り、ここでは主に、キャッシュ管理テーブル1312の更新や、ベーステーブル1311の更新処理後、この更新処理により影響を受けるデータを特定し、キャッシュ装置200へ、このデータのキャッシュエントリの破棄メッセージを送信する。
入出力部110は、通信インタフェースや入出力インタフェースから構成される。また、処理部120は、このデータベース装置100が備えるCPU(Central Processing Unit)によるプログラム実行処理や、専用回路等により実現される。さらに、記憶部130は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶媒体から構成される。なお、処理部120の機能をプログラム実行処理により実現する場合、記憶部130には、このデータベース装置100の機能を実現するためのプログラムが格納される。
記憶部130は、前記したとおりベーステーブル1311およびキャッシュ管理テーブル1312からなるデータベース部131を備える。
ベーステーブル1311は、1以上のデータを記憶するテーブルである。ベーステーブル1311は、例えば、図3(a)に示すmessageテーブル、followerテーブルのように複数であってもよい。なお、図3(a)に示すmessageテーブルはmessage_idごとに、そのメッセージのauthor_uid(作成者)およびbody(本文)を示したテーブルである。followerテーブルはfrom_uid(メッセージの送信元ユーザ)ごとに、to_uid(メッセージの送信先ユーザ)を示したテーブルである。なお、このベーステーブル1311に対し、ベーステーブル処理部121は、キャッシュ作成用クエリ(キャッシュ231に格納するキャッシュエントリを作成するためのクエリ)として、例えば、図3(b)に示すクエリを作成する。このキャッシュ作成用クエリは、[UID]をパラメータとするプリペアードクエリであり、messageテーブルおよびfollowerテーブルから、followerテーブルのfrom_uidが、[UID](指定されたユーザID)のデータで、かつ、そのデータのto_uidが、messageテーブルのauthor_uidと同じuidであるデータのmessage_idを探すというクエリである。なお、パラメータ(例えば、[UID])で指定されたベーステーブル1311の属性をパラメータ属性という。前記した例では、followerテーブルのfrom_uidがパラメータ属性である。
図1のキャッシュ管理テーブル1312は、キャッシュ装置200のキャッシュ231上に存在するキャッシュエントリを示した情報である。このキャッシュ管理テーブル1312は、例えば、図4に示すようにキャッシュ231上に存在するキャッシュエントリのkey値を示した情報である。このキャッシュ管理テーブル1312は、キャッシュエントリ特定部123(後記)が、ベーステーブル1311のデータの絞り込みを行う際に参照される。
図1の処理部120は、ベーステーブル処理部121と、キャッシュ管理テーブル更新部122と、キャッシュエントリ特定部123と、キャッシュメンテナンス部124とを備える。
ベーステーブル処理部121は、入出力部110経由で、端末装置300等からベーステーブル1311のデータの更新リクエスト(更新問い合わせ)や読み出しリクエストを受け付ける。そしてこれらのリクエストに応じて、ベーステーブル1311のデータの更新や読み出しを実行する。そして、ベーステーブル処理部121は、その実行結果を、キャッシュ装置200へ送信し、キャッシュ装置200は、キャッシュ231上にキャッシュエントリを追加する。なお、更新リクエスト(更新問い合わせ)は、例えば、ベーステーブル1311に対するINSERT、UPDATE、DELETE等である。
キャッシュ管理テーブル更新部122は、キャッシュ装置200のキャッシュトラック部223(後記)により、キャッシュ231上に存在するキャッシュエントリの情報を取得し、この情報をキャッシュ管理テーブル1312に記録する。つまり、キャッシュ管理テーブル1312を更新する。
キャッシュエントリ特定部123は、ベーステーブル1311を監視し、ベーステーブル1311の更新処理が発生すると、その更新処理内容(例えば、更新されたベーステーブル1311の識別情報およびこのベーステーブル1311において更新されたレコード)を、記憶部130の所定領域に記憶する。そして、キャッシュ管理テーブル1312と、ベーステーブル1311の更新処理内容とを参照して、キャッシュ231に記憶されたデータのうち、この更新処理の対象となるデータに関するキャッシュエントリを特定する。具体的には、キャッシュエントリ特定部123は、まず、キャッシュ管理テーブル1312を参照して、ベーステーブル1311のデータのうち、キャッシュ231上にキャッシュエントリのあるデータ(レコード)を絞り込む。そして、キャッシュエントリ特定部123は、ベーステーブル1311の更新処理内容から、ベーステーブル1311の更新により影響を受けるデータ(例えば、更新されるデータのkey値と同じkey値を持つデータ)のキャッシュエントリを特定する。
キャッシュメンテナンス部124は、キャッシュエントリ特定部123が特定したキャッシュエントリの破棄を指示する破棄メッセージをキャッシュ装置200へ送信する。また、キャッシュメンテナンス部124は、ベーステーブル処理部121において、端末装置300からのリクエストに応じ、ベーステーブル1311のデータの更新や読み出しを実行したとき、その実行結果を示すキャッシュエントリの追加を指示する追加メッセージをキャッシュ装置200へ送信する。
<キャッシュ装置>
キャッシュ装置200は、データベース装置100のキャッシュ231を備え、このキャッシュ231上に新たなキャッシュエントリを追加(セット)したり、所定のキャッシュエントリを破棄(エクスパイヤ)したり、読み出し(ゲットし)たりする。このキャッシュ装置200は、ネットワーク400経由で通信可能なコンピュータにより実現され、入出力部210、記憶部230および処理部220を備える。
入出力部210は、ネットワーク400経由で、端末装置300等から、データの更新や読み出しのリクエストの入力を受け付けたり、データベース装置100から、キャッシュエントリの破棄メッセージや追加メッセージ、キャッシュイン・アウト結果(キャッシュ231の更新処理結果)を出力したりするためのインタフェースである。記憶部230は、キャッシュ231を記憶する。処理部220は、キャッシュ装置200全体の制御を司り、ここでは主に、データベース装置100からの指示に従いキャッシュ231上のキャッシュエントリの追加や削除を行う。また、処理部220は、このキャッシュ231上のキャッシュエントリを監視し、その監視結果をデータベース装置100へ送信する。
入出力部210は、通信インタフェースや入出力インタフェースから構成される。また、処理部220は、このキャッシュ装置200が備えるCPUによるプログラム実行処理や、専用回路等により実現される。さらに、記憶部230は、RAMやHDD等の記憶媒体から構成される。なお、キャッシュ231は、例えば、この記憶部230のRAM上に形成される。キャッシュ装置200の処理部220の機能をプログラム実行処理により実現する場合、記憶部230には、処理部220の機能を実現するためのプログラムが格納される。
記憶部230は、1以上のキャッシュエントリからなるキャッシュ231を備える。キャッシュエントリとは、キャッシュ231における記憶単位である。このキャッシュ231は、例えば、図5に示すように、key値(ベーステーブル1311のデータの読み出し要求に用いたkey値)ごとに、そのkey値に用いて読み出したデータの値(value)を示した情報である。ここでは、1つのkey値に対するvalueを1つのキャッシュエントリとする。
処理部220は、キャッシュ処理部221と、キャッシュ更新部222と、キャッシュトラック部223とを備える。
キャッシュ処理部221は、端末装置300等からのリクエストに応じて、キャッシュ231のキャッシュエントリを読み出し処理等を実行する。そして、その結果をリクエストの送信元へ返す。なお、キャッシュ231上にリクエストの対象データのキャッシュエントリがなかった場合、その旨をリクエストの送信元へ返す。
キャッシュ更新部222は、データベース装置100からの破棄メッセージに従い、キャッシュ231上のキャッシュエントリを破棄(エクスパイヤ)する。また、データベース装置100から追加メッセージを受信したときには、これに従い、キャッシュ231上にキャッシュエントリを追加(セット)する。なお、キャッシュ更新部222は、キャッシュ231上のキャッシュエントリの総容量が所定量を超えたときに、一部のキャッシュエントリを破棄するようにしてもよい。このときのアルゴリズムは、例えば、LRU(Least Recently Used)やMRU(Most Recently Used)を用いる。なお、以下の説明において、キャッシュ231上に新たなキャッシュエントリが追加されることをキャッシュインといい、キャッシュ231上のキャッシュエントリが破棄されることをキャッシュアウトという。また、キャッシュインまたはキャッシュアウトが行われることを、まとめてキャッシュイン・アウトと表記する。
キャッシュトラック部223は、キャッシュ231を監視し、キャッシュ231上に存在するキャッシュエントリの情報をデータベース装置100へ送信する。例えば、キャッシュ231の更新処理が行われたとき、この更新処理後のキャッシュ231上のキャッシュエントリの情報をデータベース装置100へ送信する。なお、データベース装置100のキャッシュ管理テーブル更新部122は、このキャッシュエントリの情報を受信すると、この情報をキャッシュ管理テーブル1312に記録する。
<処理手順>
次に、図6を用いて図1のデータベース装置100の処理手順を説明する。まず、データベース装置100は、ベーステーブル1311の更新か、キャッシュ装置200のキャッシュ231のキャッシュ更新(キャッシュイン・アウト)が発生するまで待機し(S310)、ベーステーブル1311の更新発生を検出したとき(S320の“ベーステーブルの更新が発生”)、ベーステーブル1311の更新時の処理を実行する(S330)。つまり、データベース装置100のベーステーブル処理部121が、端末装置300等から、ベーステーブル1311の更新処理要求を受信し、これに基づきベーステーブル1311の更新処理したとき、S330の処理を実行する。そして、S350へ進む。
一方、データベース装置100は、キャッシュ装置200のキャッシュ231の更新処理(キャッシュイン・アウト)の発生を検出したとき(S320の“キャッシュ更新が発生”)、データベース装置100のキャッシュ管理テーブル更新部122は、キャッシュ管理テーブル1312を更新する(S340)。つまり、キャッシュ装置200のキャッシュトラック部223は、キャッシュ231のキャッシュイン・アウトを監視し、キャッシュイン・アウトの発生を検出すると、そのキャッシュイン・アウト結果を、データベース装置100へ通知する。データベース装置100のキャッシュ管理テーブル更新部122は、このキャッシュイン・アウト結果に基づき、キャッシュ管理テーブル1312(図4参照)に、キャッシュ231上に存在するキャッシュエントリの情報を記録する。
そして、データベース装置100は処理の終了命令等の入力があると(S350のYes)、処理を終了し、終了命令等の入力がなければ(S350のNo)、S310へ戻る。
次に、図7を用いて、図6のベーステーブル更新時の処理(S330)の詳細を説明する。まず、図1のデータベース装置100のベーステーブル処理部121は、ベーステーブル1311の更新を受け付ける(S410)。そして、ベーステーブル処理部121は、これに基づきベーステーブル1311を更新する。ここで、キャッシュエントリ特定部123は、ベーステーブル1311を監視し、ベーステーブル1311の更新処理内容(例えば、更新されたベーステーブル1311の識別情報および更新されたレコード)を、記憶部130の所定領域に記憶する。
続いて、データベース装置100のキャッシュエントリ特定部123は、キャッシュ管理テーブル1312を用いて、ベーステーブル1311中からレコード(データ)を絞り込む(S420)。すなわち、キャッシュ管理テーブル1312を用いて、ベーステーブル1311中から、キャッシュ231上に存在するキャッシュエントリに関するレコードを絞り込む。このレコードの絞り込み処理の詳細は後記する。
次に、キャッシュエントリ特定部123は、ベーステーブル1311の更新により影響を受けるキャッシュエントリを特定する(S430)。すなわち、キャッシュエントリ特定部123は、記憶部130に記憶されたベーステーブル1311の更新処理内容およびS420におけるベーステーブル1311の絞り込み結果をもとに、ベーステーブル1311の更新処理により影響を受けるキャッシュエントリを特定する。
例えば、図8の(a)に示すように、messageテーブルに符号1001に示すレコードが挿入され、図7のS420で、絞り込まれたfollowerテーブルのデータが符号1002に示すデータであった場合、キャッシュエントリ特定部123は、例えば、図8の(b)に示すようなキャッシュ破棄用クエリを発行する。このキャッシュ破棄用クエリは、絞り込まれたfollowerテーブルのto_uid=bをパラメータとし、このto_uid=bを持つレコードのfrom_uidの値からkey値を選択することを指示するプリペアードクエリである。ここで、followerテーブルから、to_uid=bの値を持つレコードのfrom_uidの値は「d,f」であるので、破棄対象のキャッシュエントリの特定結果として「d,f」を得る。
図7の説明に戻る。S430で、キャッシュエントリ特定部123が、キャッシュエントリの特定をした後、キャッシュメンテナンス部124は、キャッシュ装置200に対して、S430で特定した破棄メッセージを送信する(S440)。この破棄メッセージを受信したキャッシュ装置200は、この破棄メッセージに示されるキャッシュエントリを破棄する。そして、ベーステーブル1311の更新処理がまだ終了していなければ(S450のNo)、S410へ戻り、ベーステーブル1311の更新処理が終了していれば(S450のYes)、処理を終了する。
このようにすることで、データベース装置100は、キャッシュ装置200に対し、キャッシュ装置200のキャッシュ231上に存在するキャッシュエントリのうち、ベーステーブル1311の更新により影響を受けるキャッシュエントリを破棄させることができる。
ここで、図9を用いて、図7のS420の処理の詳細を説明する。まず、図1のデータベース装置100のキャッシュエントリ特定部123は、キャッシュ管理テーブル1312を読み出す(S1010)。つまり、キャッシュ231上に存在するキャッシュエントリのkey値のリストを読み出す。そして、キャッシュエントリ特定部123は、パラメータ属性を含むベーステーブル1311を選択する(S1020)。例えば、図3(b)に示すキャッシュ作成用クエリにおけるパラメータ属性は、followerテーブルのfrom_uidなので、キャッシュ管理テーブル1312は、followerテーブルを選択する。そして、選択したベーステーブル1311のレコードをキャッシュ管理テーブル1312の内容に基づいて選択(SELECT)する(S1030)。例えば、キャッシュエントリ特定部123が、図10に示すキャッシュ管理テーブル1312を用いて、ベーステーブル1311(followerテーブル)のレコードの絞り込みを行う場合、図11(a)に示すようなベーステーブル1311の絞り込みの問い合わせを発行する。つまり、followerテーブルを選択し、このfollowerテーブルのfrom_uidをパラメータ属性として、キャッシュ管理テーブル1312に記録されるkey値と同じ値のレコードを絞り込む問い合わせを発行する。この問い合わせをもとに、followerテーブルから、from_uid=d,e,fのレコードを検索し、図11の(b)に示すような絞り込み結果を得る。
図9の説明に戻る。データベース装置100のキャッシュエントリ特定部123は、すべてのベーステーブル1311の処理を終了すると(S1040のYes)、S420の処理を終了する。一方、まだ処理していないベーステーブル1311があれば(S1040のNo)、S1010へ戻る。
このようにすることで、キャッシュエントリ特定部123は、ベーステーブル1311のレコードを、キャッシュ231上に存在するキャッシュエントリに関するレコードに絞り込むことができる。
以上説明したデータベース装置100によれば、ベーステーブル1311の更新処理により影響を受けるデータのキャッシュエントリのうち、実際にキャッシュ231に存在するキャッシュエントリの破棄メッセージを、キャッシュ装置200へ送信することができる。つまり、データベース装置100はキャッシュ装置200に対し、必要以上に多くのキャッシュエントリの破棄メッセージを送信する必要がなくなるので、キャッシュ231のキャッシュメンテナンスの負荷を軽減することができる。
なお、データベースシステムにおけるキャッシュ装置200は、図12に示すように複数台用あってもよい。この場合、データベース装置100は、各キャッシュ装置200のキャッシュトラック部223から、送信元のキャッシュ装置200の識別情報と、そのキャッシュ装置200のキャッシュ231のキャッシュイン・アウト結果とを受信し、キャッシュ管理テーブル1312を更新する。これにより、キャッシュ管理テーブル1312には、各キャッシュ231上に存在するキャッシュエントリの情報とともに、各キャッシュエントリがどのキャッシュ装置200に存在するかが記録される。このようなキャッシュ管理テーブル1312を参照することで、データベース装置100は、当該キャッシュエントリのあるキャッシュ装置200に対し破棄メッセージを送信することができる。
100 データベース装置
110,210 入出力部
120,220 処理部
121 ベーステーブル処理部
122 キャッシュ管理テーブル更新部
123 キャッシュエントリ特定部
124 キャッシュメンテナンス部
130,230 記憶部
131 データベース部
200 キャッシュ装置
221 キャッシュ処理部
222 キャッシュ更新部
223 キャッシュトラック部
231 キャッシュ
300 端末装置
400 ネットワーク
1311 ベーステーブル
1312 キャッシュ管理テーブル

Claims (4)

  1. データベース装置から読み出されたデータのキャッシュを備えるキャッシュ装置と、前記キャッシュ装置とネットワーク経由で接続された前記データベース装置とを有するデータベースシステムにおいて、自身のデータベース装置のデータの更新処理が行われたとき、前記ネットワーク経由で前記キャッシュ装置におけるキャッシュの破棄メッセージを送信するデータベース装置であって、
    前記データを記憶する複数のベーステーブルと、このベーステーブルに記憶されたデータのうち、前記キャッシュにキャッシュエントリのあるデータを示したキャッシュ管理テーブルとを記憶する記憶部と、
    前記ネットワーク経由で、前記キャッシュ装置との間で各種情報の送受信を司る入出力部と、
    前記ベーステーブルの更新処理が発生したとき、前記キャッシュ装置に格納するキャッシュエントリを作成するための、前記複数のベーステーブルを対象としたキャッシュ作成用クエリを用いて、当該キャッシュ作成用クエリに記載の特定のベーステーブルの属性を示すパラメータ属性によってベーステーブルおよび属性を特定し、前記キャッシュ管理テーブルを用いて、特定したベーステーブルからレコードを絞り込み、前記ベーステーブルの更新処理内容を参照して、前記ベーステーブルの更新処理の影響を受けるデータのうち、前記キャッシュにキャッシュエントリが存在するデータを特定するキャッシュエントリ特定部と、
    前記入出力部経由で、前記キャッシュ装置に対し、前記特定したデータのキャッシュエントリの破棄メッセージを送信するキャッシュメンテナンス部と、
    前記入出力部経由で、前記キャッシュ装置におけるキャッシュエントリの更新情報を受信したとき、当該更新情報に基づき、前記キャッシュ管理テーブルを更新するキャッシュ管理テーブル更新部とを備えることを特徴とするデータベース装置。
  2. 請求項1に記載のデータベース装置と、前記キャッシュの更新処理を監視し、前記ネットワーク経由で、前記キャッシュエントリの更新情報を前記データベース装置へ送信するキャッシュトラック部を備えるキャッシュ装置を1以上とを含んでなることを特徴とするデータベースシステム。
  3. データベース装置から読み出されたデータのキャッシュを備えるキャッシュ装置と、前記キャッシュ装置とネットワーク経由で接続された前記データベース装置とを有するデータベースシステムにおいて、自身のデータベース装置のデータの更新処理が行われたとき、前記ネットワーク経由で前記キャッシュ装置におけるキャッシュの破棄メッセージを送信し、前記データを記憶する複数のベーステーブルと、このベーステーブルに記憶されたデータのうち、前記キャッシュにキャッシュエントリのあるデータを示したキャッシュ管理テーブルとを記憶する記憶部を備えるデータベース装置が、
    前記ベーステーブルの更新処理が発生したとき、前記キャッシュ装置に格納するキャッシュエントリを作成するための、前記複数のベーステーブルを対象としたキャッシュ作成用クエリを用いて、当該キャッシュ作成用クエリに記載の特定のベーステーブルの属性を示すパラメータ属性によってベーステーブルおよび属性を特定し、前記キャッシュ管理テーブルを用いて、特定したベーステーブルからレコードを絞り込み、前記ベーステーブルの更新処理内容を参照して、前記ベーステーブルの更新処理の影響を受けるデータのうち、前記キャッシュにキャッシュエントリが存在するデータを特定するステップと、
    前記キャッシュ装置に対し、前記特定したデータのキャッシュエントリの破棄メッセージを送信するステップと、
    前記キャッシュ装置におけるキャッシュエントリの更新情報を受信したとき、当該更新情報に基づき、前記キャッシュ管理テーブルを更新するステップとを実行することを特徴とするキャッシュメンテナンス方法。
  4. 請求項3に記載のキャッシュメンテナンス方法を、コンピュータである前記データベース装置に実行させるためのプログラム。
JP2009175924A 2009-07-28 2009-07-28 データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム Expired - Fee Related JP5071990B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009175924A JP5071990B2 (ja) 2009-07-28 2009-07-28 データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009175924A JP5071990B2 (ja) 2009-07-28 2009-07-28 データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム

Publications (2)

Publication Number Publication Date
JP2011028658A JP2011028658A (ja) 2011-02-10
JP5071990B2 true JP5071990B2 (ja) 2012-11-14

Family

ID=43637299

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009175924A Expired - Fee Related JP5071990B2 (ja) 2009-07-28 2009-07-28 データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム

Country Status (1)

Country Link
JP (1) JP5071990B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6021741B2 (ja) 2013-06-05 2016-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 時空間データベースの処理方法、プログラム及びシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007264744A (ja) * 2006-03-27 2007-10-11 Nippon Telegr & Teleph Corp <Ntt> ネットワークキャッシュシステム、キャッシュ装置、中継装置、およびプログラム
JP4804233B2 (ja) * 2006-06-09 2011-11-02 株式会社日立製作所 ストリームデータ処理方法
JP4763587B2 (ja) * 2006-12-11 2011-08-31 株式会社ソニー・コンピュータエンタテインメント キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体
WO2008139521A1 (ja) * 2007-04-27 2008-11-20 Fujitsu Limited リモートファイルシステム、端末装置およびサーバ装置

Also Published As

Publication number Publication date
JP2011028658A (ja) 2011-02-10

Similar Documents

Publication Publication Date Title
KR101570892B1 (ko) 로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템
US7287136B2 (en) Cache device, and method and computer program for controlling cached data
US7243136B2 (en) Approach for managing and providing content to users
KR102072203B1 (ko) 컨텐츠 중심 네트워크에 계층적 이름의 변화에 강인한 단축 이름을 생성하는 방법 및 노드
KR101150146B1 (ko) 클라이언트가 서버와 상호작용하는 컴퓨터 구현 방법, 서버가 클라이언트와 상호작용하는 컴퓨터 구현 방법, 오브젝트를 공유하는 분산 파일 시스템 및 컴퓨터 판독가능 기록 매체
WO2017092351A1 (zh) 缓存数据的更新方法及装置
US20070050491A1 (en) Cache system
CN104516974B (zh) 一种文件系统目录项的管理方法及装置
EP2227016A1 (en) A content buffering, querying method and point-to-point media transmitting system
US8914436B2 (en) Data processing device and data retriever
CN105074688B (zh) 使用对等节点图的基于流的数据去重复
CN105009520A (zh) 用于在通信网络中传送内容的方法及其装置
US20110282923A1 (en) File management system, method, and recording medium of program
JP2011091465A (ja) アクセスログ管理方法
JP2013218505A (ja) クライアントとサーバ間の通信を中継する通信装置及び通信システム
CN111190861B (zh) 热点文件管理方法、服务器及计算机可读存储介质
CN103416027A (zh) 缓存优化的方法、缓存器和缓存优化的系统
JP5071990B2 (ja) データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム
CN115883659B (zh) 一种支持cdn缓存批量刷新的方法及装置
US11568014B2 (en) Information centric network distributed search with approximate cache
CN107659626A (zh) 面向临时元数据的分离存储方法
JP2009193440A (ja) キャッシュシステム、サーバおよび端末
US11057470B2 (en) Communication device and communication method for processing meta data
KR102169930B1 (ko) M2M/IoT 플랫폼에서의 시맨틱 정보 관리 방법
CN110581883B (zh) 内容分发方法、内容发布装置、内容请求装置及路由节点

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111228

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120424

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120618

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120625

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: 20120815

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120816

R150 Certificate of patent or registration of utility model

Ref document number: 5071990

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150831

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees