[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP4763587B2 - キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体 - Google Patents

キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体 Download PDF

Info

Publication number
JP4763587B2
JP4763587B2 JP2006333243A JP2006333243A JP4763587B2 JP 4763587 B2 JP4763587 B2 JP 4763587B2 JP 2006333243 A JP2006333243 A JP 2006333243A JP 2006333243 A JP2006333243 A JP 2006333243A JP 4763587 B2 JP4763587 B2 JP 4763587B2
Authority
JP
Japan
Prior art keywords
data
cache
server
database
request
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
JP2006333243A
Other languages
English (en)
Other versions
JP2008146380A (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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
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 Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Priority to JP2006333243A priority Critical patent/JP4763587B2/ja
Publication of JP2008146380A publication Critical patent/JP2008146380A/ja
Application granted granted Critical
Publication of JP4763587B2 publication Critical patent/JP4763587B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、データ格納手段及びアプリケーションサーバに接続されるキャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体に関する。
例えばデータベースサーバなどのデータ格納手段と、このデータ格納手段に格納されたデータに基づく処理を実行するアプリケーションサーバと、を含んだ分散処理システム等のコンピュータシステムがある。このようなコンピュータシステムにおいて、アプリケーションサーバは、実行する処理に応じてデータ格納手段に格納されたデータを参照することによって、必要なデータを取得する。しかしながら、例えば必要なデータがデータベースサーバに格納されたデータベースの中の指定した条件を満たすレコードなどである場合、このようなデータを取得する際にはデータベースサーバにおいてデータベースの検索等による処理負荷が発生する。そのため、アプリケーションサーバにおいて必要となる都度、データ格納手段に格納されたデータを参照して必要なデータを取得するのは、非効率な場合がある。
そこで、このようなコンピュータシステムは、データ格納手段から取得したデータをキャッシュデータとして一時的に格納するキャッシュサーバを備える場合がある。図15は、このようなキャッシュサーバを備えるコンピュータシステムの一例を示すシステム構成図である。この図に示すコンピュータシステムにおいて、アプリケーションサーバは、データベースサーバに格納されたデータが必要になった場合、当該データがキャッシュサーバに既に格納されているか否かをまず判定する。そして、キャッシュサーバ内に必要なデータが既に格納されていれば、データベースサーバにはアクセスせずにキャッシュサーバから必要なデータを取得する。これにより、当該コンピュータシステムは、アプリケーションサーバによるデータ取得の効率化を図ることができる。
しかしながら、上記従来例のコンピュータシステムによれば、アプリケーションサーバは、必要なデータを取得する際にキャッシュサーバからデータを取得するのか、あるいはデータベースサーバからデータを取得するのかを判断する必要がある。また、データベースサーバからデータを取得した場合には、再利用に備えてキャッシュサーバに取得したデータを格納する必要がある。そのため、アプリケーションサーバはキャッシュサーバの有無やキャッシュデータの格納状況などに応じた処理を実行しなければならず、処理が煩雑になってしまう場合がある。
具体例として、例えば複数のアプリケーションサーバがデータベースサーバにアクセスする場合や、1台のアプリケーションサーバ内で起動された複数のプロセスがそれぞれデータベースサーバにアクセスする場合などにおいては、複数のプロセスがデータベースサーバ内のデータをそれぞれ独立に更新してしまう可能性がある。このような場合、各プロセスはキャッシュサーバに格納されたキャッシュデータを利用する際に、当該キャッシュデータが最新のものであるか否かを判断する必要があり、各プロセスが実行する処理は複雑化してしまう。
本発明は上記実情に鑑みてなされたものであって、その目的の一つは、アプリケーションサーバの処理を複雑化させることなく、アプリケーションサーバに対してキャッシュデータを提供できるキャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体を提供することにある。
上記課題を解決するための本発明に係るキャッシュサーバは、データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段と、前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付手段と、前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定手段と、前記キャッシュデータ利用可否判定手段による判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得手段と、前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定手段による判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御手段と、を含むことを特徴とする。
また、本発明に係るキャッシュサーバの制御方法は、データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段を備えるキャッシュサーバの制御方法であって、前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付ステップと、前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定ステップと、前記キャッシュデータ利用可否判定ステップによる判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得ステップと、前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定ステップによる判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御ステップと、を含むことを特徴とする。
また、本発明に係るプログラムは、データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段を備えるキャッシュサーバとしてコンピュータを機能させるためのプログラムであって、前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付手段、前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定手段、前記キャッシュデータ利用可否判定手段による判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得手段、及び前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定手段による判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御手段、として前記コンピュータを機能させるためのプログラムである。このプログラムは、コンピュータ読み取り可能な情報記憶媒体に記憶されてよい。
以下、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本発明の実施の形態に係るキャッシュサーバ1を含んだコンピュータシステムの一例を示すシステム構成図である。本発明の実施の形態に係るコンピュータシステムは、図1に示すように、キャッシュサーバ1と、アプリケーションサーバ2と、データ格納手段3と、を含んで構成される。本実施形態において、データ格納手段3は、1又は複数のデータベースサーバ4を含んで構成される。また、図1においては、キャッシュサーバ1が2台あって、それぞれ4台のアプリケーションサーバ2と接続されている場合の例が示されているが、これは例示であって、キャッシュサーバ1及びアプリケーションサーバ2の数はこれ以外であってもよい。すなわち、アプリケーションサーバ2とキャッシュサーバ1は1台ずつであってもよいし、図1の例よりも多数あってもよい。また、各キャッシュサーバ1と接続されるアプリケーションサーバ2の数は、それぞれ異なってもよい。
また、本実施形態に係るコンピュータシステムは、例えばインターネット等の通信ネットワークを介して、複数のユーザ端末5と接続される。ユーザ端末5は、例えばパーソナルコンピュータや家庭用ゲーム機などの情報処理装置であって、本実施形態に係るコンピュータシステムによって提供されるサービスを利用する各ユーザが使用する端末である。本実施形態において、ユーザ端末5はウェブブラウザプログラム等のクライアントプログラムを実行して、いずれか1台のアプリケーションサーバ2に対してアプリケーション実行要求を送信したり、当該アプリケーション実行要求に応じてアプリケーションサーバ2から送信された処理結果を示すデータを画面上に表示したりする。
キャッシュサーバ1は、予め対応づけられたアプリケーションサーバ2、及びデータ格納手段3に含まれる各データベースサーバ4と相互にデータ通信可能に接続されたサーバコンピュータである。キャッシュサーバ1は、対応するアプリケーションサーバ2からのデータベースサーバ4に対するデータアクセス要求を受け付けて、このデータアクセス要求に応じた処理を行う。キャッシュサーバ1の構成及び機能については、後に詳しく説明する。
アプリケーションサーバ2は、複数のユーザ端末5及び予め対応づけられたキャッシュサーバ1と相互にデータ通信可能に接続されたサーバコンピュータである。アプリケーションサーバ2は、各ユーザ端末5から送信されるアプリケーション実行要求に応じて、各種の処理を実行する。この処理の少なくとも一部は、データ格納手段3に格納されたデータ(以下、元データという)に基づく処理である。アプリケーションサーバ2は、その処理内容に応じて、データ格納手段3に格納された元データを参照して必要なデータを取得するデータ取得要求や、データ格納手段3に格納された元データの内容を更新するデータ更新要求などのデータアクセス要求を出力する。ただし、本実施形態においてアプリケーションサーバ2は、このデータアクセス要求をデータ格納手段3ではなく対応するキャッシュサーバ1に対して送信する。
すなわち、本実施形態においては、後に詳しく説明するように、キャッシュサーバ1がアプリケーションサーバ2のデータ格納手段3に対するアクセスを仲介する。これにより、アプリケーションサーバ2は、それぞれ個別にデータ格納手段3に含まれる各データベースサーバ4との間で直接接続を確立せずとも、データベースサーバ4に格納されたデータに基づく処理を実行できる。こうすれば、アプリケーションサーバ2の数が多くなっても、データベースサーバ4が各アプリケーションサーバ2からの接続を受け付けるためのサーバプロセスを多数起動する必要はなくなり、データベースサーバ4への接続が確立できずにアプリケーションサーバ2が待たされる状態を避けることができる。また、各アプリケーションサーバ2がそれぞれ個別に接続されたキャッシュサーバ1にキャッシュデータを格納する場合と異なり、アプリケーションサーバ2は従来のデータベースサーバ4へのアクセスと同様の手順でキャッシュサーバ1にアクセスすることにより、キャッシュデータを利用できる。
データ格納手段3に含まれる各データベースサーバ4は、各キャッシュサーバ1と相互にデータ通信可能に接続されたサーバコンピュータである。各データベースサーバ4は、それぞれ1又は複数のデータベースを所定の記憶領域に格納している。さらに各データベースには、元データとして、1又は複数のテーブルが含まれている。ここで所定の記憶領域は、データベースサーバ4の筐体に内蔵されたハードディスク等のディスクデバイスであってもよいし、データベースサーバ4とストレージエリアネットワーク等を介して接続されたストレージデバイスであってもよい。各データベースサーバ4は、キャッシュサーバ1から送信されるアクセス要求に応じて、格納しているテーブル内のデータを更新したり、格納しているテーブルから要求された条件に基づいて抽出したデータをキャッシュサーバ1に対して送信したりする。
以上説明したように、アプリケーションサーバ2、キャッシュサーバ1、及び各データベースサーバ4が相互に連携して動作することにより、本実施形態に係るコンピュータシステムは、ユーザ端末5からのアプリケーション実行要求に応じて、データベースサーバ4に格納されたデータベースに基づく処理を実行し、処理結果を示すデータをユーザ端末5に対して送信する。
ここで、本実施形態に係るアプリケーションサーバ2のハードウェア構成の例について、図2の構成図に基づいて説明する。アプリケーションサーバ2は、図2に示すように、制御部21と、メインメモリ24と、通信部25と、を含んで構成される。
本実施形態において、アプリケーションサーバ2は、それぞれ所定の記憶容量の記憶手段を備える複数のデータ処理手段を含んで構成される。具体例として、制御部21は、1つのメインプロセッサ22と、データ処理手段としての複数のサブプロセッサ23と、を含んで構成される。また、各サブプロセッサ23は、それぞれサブプロセッサユニット23a及びローカルメモリ23bを含んで構成される。
メインプロセッサ22は、メインメモリ24に格納されたプログラムに基づいて、各種の情報処理を行う。また、メインプロセッサ22は、各サブプロセッサ23に対して、処理を割り当てるなどの制御を行う。
サブプロセッサユニット23aは、メインプロセッサ22からの指示に従って、各種の情報処理を行う。ローカルメモリ23bは、所定の記憶容量の記憶手段であって、サブプロセッサユニット23aに割り当てられたプログラムやデータの少なくとも一部を格納し、サブプロセッサユニット23aのワークメモリとして動作する。
メインメモリ24は、RAMやROM等のメモリ素子を含んで構成されるコンピュータ読み取り可能な情報記憶媒体であって、制御部21によって実行されるプログラムが格納される。また、メインメモリ24は、制御部21のワークメモリとしても動作する。
通信部25は、LANボード等のネットワークインタフェースであって、制御部21からの指示に従って、通信ネットワークを介して情報を送信する。また、通信部25は、通信ネットワークを介して到来する情報を受信して制御部21に出力する。
続いて、アプリケーションサーバ2が実現する機能について説明する。本実施形態において、アプリケーションサーバ2は、機能的に図3に示すように、複数のアプリケーションプロセス部31と、データベースプロキシ部32と、を含んで構成される。
アプリケーションプロセス部31は、複数のサブプロセッサ23のそれぞれがメインメモリ24に格納されたプログラムを実行することによって実現される。すなわち、複数のアプリケーションプロセス部31は、各サブプロセッサ23によってそれぞれ独立に実行される。アプリケーションプロセス部31は、それぞれ対応するユーザ端末5で実行されるクライアントプログラムからアプリケーション実行要求を受け付けて、データベースサーバ4に格納されたデータベースに基づくトランザクション処理を含む、所定の情報処理(アプリケーション実行処理)を実行する。また、アプリケーションプロセス部31は、トランザクション処理を実行する過程で、データベースサーバ4に格納されたデータベースに対する各種の処理要求を、データベースプロキシ部32に対して出力する。
ここで、トランザクション処理は、データベースサーバ4に格納されているデータベースとの接続を確立するデータベースオープン要求や、接続が確立されたデータベースに含まれるテーブルを参照したり更新したりするデータアクセス要求などを含む、連続して実行される一連の処理である。アプリケーションプロセス部31は、このトランザクション処理を含むアプリケーション実行処理を実行して、対応するユーザ端末5を利用するユーザに対してアプリケーションサービスを提供するアプリケーション実行手段として機能する。
データベースプロキシ部32は、メインプロセッサ22がメインメモリ24に格納されたプログラムを実行することによって実現される。データベースプロキシ部32は、複数のアプリケーションプロセス部31とキャッシュサーバ1との間のデータの中継を行う。すなわち、データベースプロキシ部32は、各アプリケーションプロセス部31が出力する処理要求を受け付けて、当該処理要求をキャッシュサーバ1に対して送信する。また、キャッシュサーバ1から当該処理要求に応じて返信される応答データを、処理要求を出力したアプリケーションプロセス部31に対して出力する。
次に、本実施形態に係るキャッシュサーバ1のハードウェア構成について、図4の構成図に基づいて説明する。キャッシュサーバ1は、図4に示すように、制御部11と、記憶部12と、通信部13と、を含んで構成されるサーバコンピュータである。
制御部11は、CPU等であって、記憶部12に格納されたプログラムに従って動作する。制御部11は、アプリケーションサーバ2から送信されるデータ取得要求やデータ更新要求に応じて、データベースサーバ4からデータを取得したり、データベースサーバ4に格納されたデータを更新したりする。また、データベースサーバ4から取得したデータをキャッシュデータとして記憶部12に格納し、所定の条件を満たす場合に当該キャッシュデータをアプリケーションサーバ2に対して出力する。本実施形態において制御部11が実現する機能については、後に詳しく説明する。
記憶部12は、RAMやROM等のメモリ素子と、ハードディスク等のディスクデバイスと、の少なくとも一方を含んで構成されるコンピュータ読み取り可能な情報記憶媒体である。記憶部12には、制御部11によって実行されるプログラムが格納される。また、記憶部12は、制御部11のワークメモリとしても動作する。
さらに本実施形態において、記憶部12は、キャッシュデータ格納手段としての機能を実現する。すなわち、記憶部12は、各データベースサーバ4から取得される元データの一部又は全部をキャッシュデータとして格納する。
通信部13は、LANボード等のネットワークインタフェースであって、制御部11からの指示に従って、通信ネットワークを介して情報を送信する。また、通信部13は、通信ネットワークを介して到来する情報を受信して制御部11に出力する。
以下、本実施形態に係るキャッシュサーバ1が実現する機能について、説明する。本実施形態において、キャッシュサーバ1は、機能的に図5に示すように、処理要求受付部41と、データアクセス要求処理部42と、キャッシュデータ管理部43と、ロック制御部44と、を含んで構成される。これらの機能は、例えば制御部11が記憶部12に格納されたプログラムを実行することによって実現できる。このプログラムは、CD−ROMやDVD−ROM等のコンピュータ読み取り可能な情報記憶媒体に格納されて提供されてもよいし、インターネット等の通信ネットワークを介して提供されてもよい。
処理要求受付部41は、アプリケーションプロセス部31が出力するデータベースサーバ4に対する各種の処理要求を受け付ける。この処理要求の中には、アプリケーションプロセス部31がデータベースサーバ4に格納されている特定のデータベースへアクセスするための接続を確立するデータベースオープン要求や、接続が確立されたデータベースに含まれる各テーブルに対するデータアクセス要求などが含まれる。さらに、このデータアクセス要求には、データベースサーバ4に格納されたテーブルの内容を更新するデータ更新要求と、データベースサーバ4に格納されたテーブルを参照して指定した条件を満たすデータを取得するデータ取得要求と、が含まれる。また、処理要求の中には、データアクセス要求に応じてなされたデータの取得や更新の処理内容を確定させるコミット要求が含まれてもよい。
データ取得要求は、データ格納手段3に格納された元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得する要求である。本実施形態においては、データ取得要求によって指定される参照範囲は、データ格納手段3に格納された元データのうちの1又は複数のテーブルであるものとする。すなわち、データ取得要求には、参照範囲として指定する1又は複数のテーブルを特定するテーブル特定情報が含まれる。テーブル特定情報は、例えばテーブル名と、当該テーブルを格納するデータベース名との組み合わせからなる情報である。また、データ取得要求には、取得対象データを特定するためのデータ特定情報も含まれている。ここでは具体例として、データ取得要求は、テーブル特定情報によって特定されるテーブルの中から検索すべきデータの条件を指定する検索条件指定情報を、データ特定情報として含んでいることとする。この検索条件指定情報によって指定された検索条件を満たすデータが、データ取得要求によって要求される取得対象データとなる。
データアクセス要求処理部42は、処理要求受付部41が受け付けたデータアクセス要求に応じて、このデータアクセス要求によって指定されたテーブルに対するデータの更新又は取得を行う。具体的に、データアクセス要求処理部42は、処理要求受付部41がデータ更新要求を受け付けた場合、指定されたテーブルに対してアクセスし、指示された内容に基づいてデータの更新を行う。また、この場合、データアクセス要求処理部42は、更新対象として指定されたテーブルを過去に参照して取得したキャッシュデータが記憶部12に格納されている場合、当該格納されたキャッシュデータを破棄する指示をキャッシュデータ管理部43に対して出力してもよい。
一方、処理要求受付部41がデータ取得要求を受け付けた場合、データアクセス要求処理部42は、記憶部12に格納されているキャッシュデータの一部又は全部と、データ取得要求によって指定されたテーブルの一部又は全部と、のいずれか少なくとも一方を参照して、当該データ取得要求により要求される取得対象データを取得する。
具体例として、処理要求受付部41がデータ取得要求を受け付けた場合、データアクセス要求処理部42は、まずキャッシュデータ管理部43に問い合わせて、当該データ取得要求により要求される取得対象データの少なくとも一部として、記憶部12に格納されているキャッシュデータを利用可能か否か判定する。そして、この判定の結果に応じて、記憶部12に格納されたキャッシュデータとデータベースサーバ4に格納されたテーブルと、のいずれか一方を参照して取得対象データを取得する。例えば取得対象データの全部についてキャッシュデータを利用できると判定された場合、データアクセス要求処理部42は、データベースサーバ4に格納されたテーブルへのアクセスは行わずに、記憶部12に格納されているキャッシュデータを取得対象データとして取得する。一方、キャッシュデータを利用できないと判定した場合、データアクセス要求処理部42は、データベースサーバ4に格納されたテーブルを参照するアクセスを実行する。そして、当該アクセスに応じてデータベースサーバ4が指定された検索条件に基づく検索を実行して得られたデータを、取得対象データとして取得する。この場合において、データアクセス要求処理部42は、データベースサーバ4から取得したデータをキャッシュデータとして記憶部12内に格納する指示を、キャッシュデータ管理部43に対して出力する。
キャッシュデータの利用の可否に関わらず、以上説明した処理によって、データ取得要求によって要求された取得対象データはキャッシュデータとして記憶部12に格納された状態となる。データアクセス要求処理部42は、アプリケーションプロセス部31からデータ取得要求に続いて同一トランザクション処理内において出力される取得結果送信要求に応じて、この記憶部12に格納されたキャッシュデータを取得対象データとして送信する。
キャッシュデータ管理部43は、データアクセス要求処理部42の指示に従って、キャッシュデータの記憶部12への格納や、格納されたキャッシュデータの読み出しを行う。具体例として、キャッシュデータ管理部43は、データアクセス要求処理部42がデータ取得要求に応じてデータベースサーバ4から取得対象データを取得した場合に、この取得対象データをキャッシュデータとして記憶部12内に格納するとともに、格納したキャッシュデータの内容を示す情報をキャッシュデータ管理データとして記録する。ここで、キャッシュデータ管理データは、例えば図6に例示するように、データ取得要求に含まれるテーブル特定情報及び検索条件指定情報と、取得日時の情報と、キャッシュデータの記憶部12内の格納位置を示す情報(例えばメモリアドレス)と、を関連づけるデータである。このキャッシュデータ管理データを参照することで、キャッシュデータ管理部43は、記憶部12内に格納された各キャッシュデータの内容及び取得時期に関する情報を取得できる。
なお、キャッシュデータ管理部43は、データベースサーバ4から取得されるデータを、アプリケーションサーバ2による処理の単位となる所定のデータサイズ以下のサイズのデータに分割し、この分割されたデータをキャッシュデータとして記憶部12に格納することとしてもよい。この場合の所定のデータサイズは、例えばアプリケーションサーバ2内のローカルメモリ23bの記憶容量に応じて決定される。また、この所定のデータサイズは、キャッシュサーバ1がアプリケーションサーバ2に対してデータベースサーバ4から取得されるデータを送信する際のデータ送信単位に応じて決定されてもよい。
これにより、キャッシュサーバ1は、例えば複数のアプリケーションプロセス部31から同じキャッシュデータを利用可能なデータ取得要求を複数回受け付けた場合に、このようなデータ取得要求を受け付けるたびにキャッシュデータを分割する処理をすることなく、分割された状態で格納された各キャッシュデータをそのままパケットに格納してアプリケーションサーバ2に対して送信できる。アプリケーションプロセス部31は、キャッシュサーバ1から送信された所定のデータサイズのキャッシュデータをローカルメモリ23bに読み込むことによって、要求したデータに応じた処理を実行できる。
また、キャッシュデータ管理部43は、アプリケーションプロセス部31からデータ取得要求があった場合に、データアクセス要求処理部42からの問い合わせに応じて、当該データ取得要求により要求された取得対象データとしてキャッシュデータを利用可能か否か判定する。具体的に、キャッシュデータ管理部43は、データ取得要求に含まれるデータ特定情報に基づいて過去にデータベースサーバ4から取得されたデータがキャッシュデータとして記憶部12に格納されており、かつ当該キャッシュデータを取得した後に、当該データ取得要求により参照範囲として指定されたデータベースサーバ4内のテーブルが更新されていない場合に、当該キャッシュデータを取得対象データとして利用可能と判断する。
具体例として、キャッシュデータ管理部43は、データアクセス要求処理部42からの問い合わせがあった場合、まずキャッシュデータ管理データを参照して、アプリケーションプロセス部31から要求された取得対象データがキャッシュデータとして記憶部12に格納されているか否かを判定する。具体的には、データ取得要求に含まれるテーブル特定情報及び検索条件指定情報と一致するテーブル特定情報及び検索条件指定情報の組み合わせが、キャッシュデータ管理データ内にあるか否かを判定する。一致するテーブル特定情報及び検索条件指定情報の組み合わせがキャッシュデータ管理データ内になければ、キャッシュデータ管理部43は要求された取得対象データをキャッシュデータとして保持していないと判定する。逆に、一致する組み合わせがあれば、データ取得要求で指定されたテーブルから過去に同条件で取得されたデータが、キャッシュデータとして記憶部12内に格納されていることとなる。
この場合、続いてキャッシュデータ管理部43は、キャッシュデータ管理データにおいて当該テーブル特定情報及び検索条件指定情報の組み合わせに関連づけられた取得日時の情報を取得する。そして、この取得日時以降に、テーブル特定情報によって特定されるテーブルが更新されているか否かを判定する。なお、以下ではこの判定の対象となるテーブルを判定対象テーブルという。
具体的に、例えばキャッシュデータ管理部43は、判定対象テーブルを格納しているデータベースサーバ4に問い合わせて、判定対象テーブルの最終更新日時の情報を取得する。ここで、各データベースサーバ4は、例えば図7に例示するようなテーブル更新管理データを保持しているものとする。テーブル更新管理データは、格納されている各テーブルを特定するテーブル特定情報と、各テーブルの最終更新日時の情報と、を関連づけるデータである。各データベースサーバ4は、キャッシュサーバ1からの問い合わせに対して、当該テーブル更新管理データを参照して判定対象テーブルの最終更新日時の情報を取得し、キャッシュサーバ1に対して返信する。
なお、各データベースサーバ4は、格納している各テーブルに対する更新処理を監視し、更新処理があった場合に当該更新処理の対象となったテーブルの最終更新日時の情報を更新することとしてもよい。また、本実施形態において各データベースサーバ4に格納されたテーブルはキャッシュサーバ1からのアクセスによって更新される。そこで、キャッシュサーバ1は、アプリケーションプロセス部31からデータ更新要求を受け付けて、データベースサーバ4に格納されたテーブルの更新を行った場合に、当該データベースサーバ4に保持されたテーブル更新管理データ内における、当該テーブルの最終更新日時の情報を更新してもよい。これにより、データベースサーバ4がテーブルの更新処理を監視する機能を備えていない場合であっても、各テーブルの更新に応じてテーブル更新管理データを更新することができる。
データベースサーバ4から最終更新日時の情報を取得したキャッシュデータ管理部43は、この最終更新日時と、記憶部12に格納されたキャッシュデータの取得日時とを比較する。そして、最終更新日時が取得日時より後であれば、キャッシュデータの取得後に判定対象テーブルが更新されており、キャッシュデータは利用できないと判定する。逆に取得日時が最終更新日時より後であれば、キャッシュデータの取得以後、判定対象テーブルは更新されておらず、キャッシュデータの内容は最新の判定対象テーブルの内容に基づくものであると判定する。この場合、キャッシュデータ管理部43は、データ取得要求により要求された取得対象データとしてキャッシュデータを利用可能であるとの判定結果を、データアクセス要求処理部42に対して出力する。
なお、キャッシュデータ管理部43は、キャッシュデータの利用可否を判定するために、判定対象テーブルの最終更新日時をキャッシュデータの取得日時と比較するだけでなく、判定対象テーブルのロック状態を確認することとしてもよい。この場合、キャッシュデータ管理部43は、判定対象テーブルに対するロックがなされているか否かを、判定対象テーブルを格納するデータベースサーバ4に問い合わせる。ここで、各データベースサーバ4は、格納している各テーブルのロック状態を管理するために、例えば図8に例示するようなテーブルロック管理データを保持しているものとする。テーブルロック管理データは、格納されている各テーブルを特定するテーブル特定情報と、各テーブルに対するロック制御の契機となったトランザクション処理を特定するトランザクション特定情報(トランザクション番号など)と、当該トランザクション処理によってなされたロックのモードを示す情報(リードロックか、又はライトロックかを示す情報)と、を関連づけるデータである。各データベースサーバ4は、キャッシュサーバ1からの問い合わせに対して、このテーブルロック管理データを参照して判定対象テーブルに対してライトロックがなされているか否かを判定し、判定結果をキャッシュサーバ1に対して返信する。
キャッシュデータ管理部43は、問い合わせたデータベースサーバ4から返信された判定結果に応じて、判定対象テーブルに対してライトロックがなされていれば、キャッシュデータ管理部43はキャッシュデータの利用はできないと判定する。なぜなら、ライトロックがなされている場合、他のキャッシュサーバ1により判定対象テーブルに対するデータ更新の処理が実行中であると推定されるためである。
以上説明したように、キャッシュデータ管理部43は、データ取得要求によって参照範囲として指定されたテーブルに対するデータ更新の有無に関する情報を取得することによって、記憶部12内に格納されたキャッシュデータが最新の判定対象テーブルの内容に基づいて取得されたデータであるか否かを判定できる。
ロック制御部44は、処理要求受付部41がデータアクセス要求を受け付けた場合に、このデータアクセス要求によりアクセスの対象として指定されたテーブルを格納するデータベースサーバ4に対して、指定されたテーブルをロックするロック制御を実行させるロック制御命令を出力する。このロック制御命令に応じて、データベースサーバ4は、指定されたテーブルに対してリードロック又はライトロックのいずれかのロック制御を行い、前述したテーブルロック管理データを更新する。
例えばロック制御部44は、処理要求受付部41がデータ取得要求を受け付けた場合に、少なくともキャッシュデータ管理部43による取得対象データとしてキャッシュデータを利用可能か否かの判定が実行される前に、当該データ取得要求により指定されたテーブルを格納するデータベースサーバ4に対して、当該テーブルを含む元データに対する更新を制限するリードロックを開始させる。こうすれば、キャッシュデータ管理部43がキャッシュデータの利用可否を判定している間に、データベースサーバ4内の参照範囲として指定されたテーブルが他のキャッシュサーバ1からのアクセスによって更新されてしまうことを防ぐことができる。これにより、キャッシュサーバ1は、取得対象データとしてキャッシュデータを取得すると判定しても、データベースサーバ4内のテーブルを参照して取得対象データを取得すると判定しても、どちらの場合であっても最新のテーブル内容に基づくデータを取得対象データとして取得することができる。
さらに、ロック制御部44は、少なくともデータアクセス要求処理部42による当該データ取得要求に応じた取得対象データの取得が完了するまでの間、当該データ取得要求により指定されたテーブルを格納するデータベースサーバ4に対して、当該テーブルを含む元データに対する更新を制限するリードロックを実行させてもよい。
具体例として、ロック制御部44は、処理要求受付部41がデータ取得要求を受け付けた時点でロック制御命令をデータベースサーバ4に対して出力し、ロック制御を実行させる。また、データアクセス要求処理部42による取得対象データの取得の完了後に、ロックを解除するロック解除命令をデータベースサーバ4に対して出力する。例えばロック制御部44は、アプリケーションプロセス部31が当該データ取得要求に応じた処理の完了後にコミット要求(データ取得要求によって要求されたデータの取得を確定させる要求)をキャッシュサーバ1に対して出力した場合に、このコミット要求の受け付けに応じてロック解除命令をデータベースサーバ4に対して出力してもよい。
以上説明したようなロック制御により、キャッシュサーバ1は、既に記憶部12に格納されているキャッシュデータをデータ取得要求に応じた取得対象データとして取得する場合も含めて、取得対象データの取得が完了するまで指定されたテーブルへの更新を制限することができる。これにより、キャッシュサーバ1が取得した取得対象データが取得時点におけるデータベースサーバ4内のテーブルの内容に基づいて取得されたデータであることを保証できる。
また、ロック制御部44は、処理要求受付部41がデータ更新要求を受け付けた場合に、少なくともデータアクセス要求処理部42による当該データ更新要求に応じたテーブルの更新が完了するまでの間、当該データ更新要求により指定されたテーブルを格納するデータベースサーバ4に対して、当該テーブルを含む元データに対する更新及び参照の双方を制限するライトロックを実行させるロック制御命令を出力してもよい。
さらにロック制御部44は、データアクセス要求処理部42がデータベースサーバ4に格納されたデータベースに対する参照又は更新のアクセスを実行し、その応答がデータベースサーバ4から所定時間以上ない場合に、デッドロックの発生の有無を検査するデッドロック検出処理を実行してもよい。
具体例として、ロック制御部44は、データアクセス要求処理部42によるデータベースサーバ4へのアクセスにおいてタイムアウトが発生した場合に、アクセス先のデータベースサーバ4が保持しているテーブルロック管理データを参照して、このタイムアウトがテーブルのロックによるものか否かを判定する。タイムアウトがテーブルのロックによるものである場合、さらに当該ロック制御を行ったトランザクション処理をトランザクション番号によって特定し、特定されたトランザクション処理が他のテーブルのロック解除を待っているか否かを判定する。このような処理を繰り返すことによって、ロック制御部44は、デッドロックの発生を検出できる。デッドロックの発生を検出した場合、ロック制御部44は、このデッドロックの発生原因となったトランザクション処理によるデータベースへのアクセスをトランザクション処理開始時点の状態に戻すロールバック処理を実行する。
以下、本実施形態に係るキャッシュサーバが実行する処理の流れのいくつかの例について、説明する。
まず、アプリケーションプロセス部31からデータベースオープン要求が出力された場合にキャッシュサーバ1が実行する処理の例について、図9のフロー図に基づいて説明する。
この場合、まず処理要求受付部41が、アプリケーションプロセス部31から出力されたデータベースオープン要求を受け付ける(S1)。そして、処理要求受付部41は、S1で受け付けたデータベースオープン要求によって要求されたデータベース(接続対象データベース)にアクセスするための通信先となる、データベースサーバ内で起動されているサーバプロセスを特定するサーバプロセス特定情報を、データベース管理データを参照して取得する(S2)。
ここで、データベース管理データは、例えば図10に例示するように、各データベースサーバ4に格納されたデータベースを特定するデータベース特定情報(データベース名など)と、当該データベース特定情報によって特定されるデータベースへのアクセス要求を受け付けるサーバプロセス特定情報と、を関連づけるデータである。このデータベース管理データは、例えばデータ格納手段3に含まれるデータベースサーバ4のうち、予め定められた1台のデータベースサーバ4内に格納されている。このデータベース管理データには、データ格納手段3に含まれる全てのデータベースサーバ4に格納されているデータベースに関する情報が記録されているものとする。
例えばサーバプロセス特定情報は、データベース特定情報によって特定されるデータベースを格納しているデータベースサーバ4のネットワーク上の位置を特定する情報(IPアドレスなど)と、データベースサーバ4内で実行される当該データベースへのアクセスを受け付けるサーバプロセスに対する通信先を特定する情報(当該プロセスにアクセスするためのポート番号など)と、の組み合わせからなる情報である。本実施形態において、各データベースサーバ4は、当該データベースサーバ4に格納された1又は複数のデータベースのいずれかに関連づけられ、キャッシュサーバ1から送信される当該関連づけられたデータベースに対するアクセス要求を受け付けるアクセス受付手段として、1又は複数のサーバプロセスを予め起動している。そして、このサーバプロセスへのアクセスを受け付けるためのポート番号の情報を、データベース管理データを保持するデータベースサーバ4に対して送信する。これにより、データベース管理データには、データ格納手段3に格納された各データベースに関連づけられたサーバプロセスを特定するサーバプロセス特定情報が登録されることとなる。
S2の処理でサーバプロセス特定情報を取得した処理要求受付部41は、当該データベースオープン要求を出力したアプリケーションプロセス部31を特定するアプリケーションプロセス特定情報と、接続対象データベースを特定するデータベース特定情報と、接続対象データベースについてS2で取得されたサーバプロセス特定情報と、を関連づけて、データベース接続情報として記憶部12内に登録する(S3)。そして、データベース接続情報が登録されたことを示す情報を、データベースオープン要求に対する応答データとして出力する(S4)。この応答データは、データベースプロキシ部32を介してアプリケーションプロセス部31に対して送信される。
以上説明した処理によってキャッシュサーバ1内にデータベース接続情報が登録されることによって、アプリケーションプロセス部31と接続対象データベースとの間の接続が確立される。これ以降データベースクローズ要求を受け付けるまで、データアクセス要求処理部42は、アプリケーションプロセス部31からデータアクセス要求が送信された場合には、このデータベース接続情報を参照することで、データアクセス要求によって指定されたテーブルを格納するデータベースにアクセスするための通信先となるサーバプロセスを特定できる。すなわち、データアクセス要求処理部42は、各アプリケーションプロセス部21から受け付けた、接続対象データベースに含まれるテーブルを参照範囲又は更新対象として指定するデータアクセス要求に応じて、当該アプリケーションプロセス部21を特定するアプリケーションプロセス特定情報に関連づけられたサーバプロセス特定情報により特定されるサーバプロセスに対して、アクセス要求を送信する。特に処理要求受付部41がデータ取得要求を受け付けた場合には、このデータ取得要求により要求された取得対象データとしてキャッシュデータを利用できないとキャッシュデータ管理部43が判定する場合に、このようなサーバプロセスを介してデータベースへのアクセスを行う。
以上説明した処理の例によれば、予め各データベースサーバ4はキャッシュサーバ1との通信に必要なサーバプロセスを起動しているので、キャッシュサーバ1は、データベースオープン要求を受け付けた時点では、データベースサーバ4にサーバプロセスを起動させる制御を行うことはない。このため、データベースオープン要求のたびにデータベースサーバ4においてサーバプロセスの起動処理が発生することを避け、データベースサーバ4の処理負荷を減らすことができる。
また、キャッシュサーバ1は、同時期に複数のアプリケーションプロセス部31から同一のデータベースに対する複数のデータアクセス要求を受け付けた場合であっても、当該各要求に応じたデータベースへのアクセスを、サーバプロセス特定情報によって特定される一つのサーバプロセスとの間の通信によって実現できる。すなわち、データアクセス要求処理部42は、複数のアプリケーションプロセス部31からのデータ取得要求に応じた同一のデータベースに対するアクセスを、当該データベースに対応するサーバプロセス特定情報により特定される1つのサーバプロセスを共用して実行することができる。これにより、予めコネクションプールとして同一のデータベースにアクセスするためのサーバプロセスを複数データベースサーバ4内に起動させる場合と異なり、コネクションプールの不足によってデータベースへのアクセスが待たされるような状態が生じないようにすることができる。
なお、本実施形態においてキャッシュサーバ1は、前述したようにアプリケーションプロセス部31から受け付けたデータアクセス要求に応じて各データベースサーバ4に対して直接ロック制御を実行させるロック制御命令を出力する。これにより、一つのサーバプロセスに対して複数のデータアクセス要求に応じたアクセスが同時期に発生したとしても、データベースへのアクセスが競合することによるデータの不整合が生じないよう制御することができる。
次に、アプリケーションプロセス部31からデータ取得要求が出力された場合にキャッシュサーバ1が実行する処理の例について、図11のフロー図に基づいて説明する。
まず、処理要求受付部41が、アプリケーションプロセス部31から出力されたデータ取得要求を受け付ける(S11)。S11で受け付けたデータ取得要求は、前述したように、参照範囲のデータとして指定する1又は複数のテーブルを特定するテーブル特定情報と、指定されたテーブルから検索すべきデータの条件を指定する検索条件指定情報と、を含んでいる。
次に、データアクセス要求処理部42の指示に基づいて、ロック制御部44が、参照範囲として指定されたテーブルを格納するデータベースサーバ4に対して、当該テーブルに対するリードロックを実行させるロック制御命令を出力する(S12)。
続いて、キャッシュデータ管理部43が、S11のデータ取得要求により要求された取得対象データをキャッシュデータとして記憶部12に格納しているか否かを、キャッシュデータ管理データを参照して判定する(S13)。
S13の処理によりキャッシュデータを格納していると判定した場合、キャッシュデータ管理部43は、さらに当該キャッシュデータをS11で受け付けたデータ取得要求に応じた取得対象データとして利用可能かを判定する(S14)。具体的には、前述したように、参照範囲として指定されたテーブルの最終更新日時や、当該テーブルに対する現在時点のロック状態に関する情報を取得することによって、キャッシュデータ取得後に当該テーブルに対して更新処理がなされていないかを判定する。S14の処理によりキャッシュデータを取得対象データとして利用可能であると判定した場合、キャッシュデータ管理部43は、当該キャッシュデータの格納位置を示す情報をデータアクセス要求処理部42に出力する(S15)。
一方、S13の処理によりキャッシュデータを格納していないと判定された場合、又はS14の処理により格納しているキャッシュデータを取得対象データとして利用できないと判定された場合、データアクセス要求処理部42は、当該判定結果を受けて、データベースサーバ4に格納されている指定されたテーブルを参照するアクセスを実行する(S16)。このとき、データアクセス要求処理部42は、前述したS3の処理によって記憶部12に格納されているデータベース接続情報を参照して、指定されたテーブルへのアクセスの通信先を特定する。このアクセスに応じて、データベースサーバ4は、S11で受け付けたデータ取得要求において指定された検索条件に基づいて指定されたテーブルの検索を行い、検索結果をキャッシュサーバ1に対して送信する。
キャッシュデータ管理部43は、この検索結果のデータを、所定のデータサイズに分割して、キャッシュデータとして記憶部12に格納する(S17)。そして、その格納位置を示す情報をデータアクセス要求処理部42に出力する(S18)。
S15又はS18の処理によって、キャッシュデータとして格納された取得対象データの格納位置を取得したデータアクセス要求処理部42は、S11で受け付けたデータ取得要求に対して、取得対象データの取得が完了した旨の応答データを出力する(S19)。この応答データは、キャッシュサーバ1からアプリケーションサーバ2に送信され、データベースプロキシ部32を介してS11のデータ取得要求を出力したアプリケーションプロセス部31に通知される。
以上説明した処理によって、キャッシュサーバ1は、データ取得要求により要求された取得対象データをキャッシュデータとして保持していれば、データベースサーバ4にアクセスすることなく取得対象データの取得を完了できる。また、キャッシュデータの有無に関わらず、参照範囲として指定されたテーブルに対してリードロック制御を行うことによって、少なくとも取得対象データの取得完了まで当該テーブルが更新されないように制御できる。これにより、取得されたデータが最新のテーブル内容に基づくものであることを保証できる。
次に、図11のフローに示した処理によってキャッシュサーバ1によるデータ取得要求に応じた処理が完了した後、アプリケーションプロセス部31から取得結果送信要求が出力された場合にキャッシュサーバ1が実行する処理の例について、図12のフロー図に基づいて説明する。
まず、取得結果送信要求によって送信が要求される取得結果のデータについて説明する。図11のフローによってキャッシュサーバ1が取得した取得対象データは、前述したように、所定のデータサイズに分割された状態でキャッシュデータとして記憶部12に格納されている。この分割された各キャッシュデータを、以下ではページデータという。取得対象データは1又は複数のページデータによって構成され、取得対象データ内の各ページデータには、当該ページデータを特定するページ番号が割り当てられている。図13は、このようなキャッシュデータのデータ構造の一例を示す説明図である。
この場合、まず処理要求受付部41が、アプリケーションプロセス部31から出力された取得結果送信要求を受け付ける(S21)。この取得結果送信要求には、データ取得要求によって取得された取得対象データのうち、アプリケーションプロセス部31が要求するページデータを指定するページ番号情報が含まれている。
キャッシュデータ管理部43は、データアクセス要求処理部42の指示に基づいて、S21で受け付けた取得結果送信要求により指定されたページデータを、記憶部12から読み出す(S22)。S22で読み出されたページデータは、処理要求受付部41によって、アプリケーションサーバ2に対して送信される(S23)。これにより、アプリケーションプロセス部31は、要求したページデータを取得できる。
以上説明した図12のフローに示す処理を繰り返すことによって、例えばアプリケーションプロセス部31は、データ取得要求に応じて取得された取得対象データを順に読み出して、当該読み出したデータに応じた各種の処理を実行できる。この場合において、ページデータは予めアプリケーションプロセス部31による処理に適したデータサイズでキャッシュデータとして記憶部12に格納されているため、キャッシュサーバ1やデータベースプロキシ部32は改めてキャッシュデータを分割する処理を行うことなく、アプリケーションプロセス部31に要求されたデータを送信できる。
次に、アプリケーションプロセス部31からデータ更新要求が出力された場合にキャッシュサーバ1が実行する処理の例について、図14のフロー図に基づいて説明する。
まず、処理要求受付部41が、アプリケーションプロセス部31から出力されたデータ更新要求を受け付ける(S31)。S31で受け付けたデータ更新要求は、更新対象となる1又は複数のテーブルを特定するテーブル特定情報と、当該テーブルに対する更新内容を示す情報と、を含んでいる。
次に、データアクセス要求処理部42の指示に基づいて、ロック制御部44が、更新対象として指定されたテーブルを格納するデータベースサーバ4に対して、当該テーブルに対するライトロックを実行させるロック制御命令を出力する(S32)。
続いて、キャッシュデータ管理部43が、更新対象として指定されたテーブルを参照してこれまでに取得されたキャッシュデータを破棄する(S33)。これから実行する更新処理によって、記憶部12に格納されたキャッシュデータは古いデータ内容に基づくものになってしまうためである。
次に、データアクセス要求処理部42は、データベースサーバ4内の更新対象として指定されたテーブルに対して、指定された更新を行うアクセスを実行する(S34)。なお、データアクセス要求処理部42は、この場合も前述したS16の処理の場合と同様に、データベース接続情報を参照して通信先を特定できる。このアクセスに応じて、データベースサーバ4は、指定されたテーブルの更新を行う。
さらに、キャッシュデータ管理部43は、データベースサーバ4に格納されたテーブル更新管理データ内における、更新対象として指定されたテーブルの最終更新日時の情報を、現在日時を示す情報に更新する(S35)。
その後、データアクセス要求処理部42は、S31で受け付けたデータ更新要求に対して、データの更新が完了した旨の応答データを出力する(S36)。この応答データは、データ取得要求を受け付けた場合と同様に、アプリケーションプロセス部31に通知される。
以上説明した本実施の形態によれば、複数のキャッシュサーバ1からデータベースサーバ4内のデータが参照又は更新される場合であっても、各キャッシュサーバ1は格納しているキャッシュデータを条件に応じて利用しつつ、アプリケーションサーバ2の要求に応じて取得するデータがデータベースサーバ4内における最新のデータに基づくものであることを保証できる。これにより、アプリケーションサーバ1は、キャッシュデータの有無やキャッシュデータの利用可否を気にすることなく、キャッシュサーバ1から取得するデータを用いてデータベースサーバ4に格納されたデータに基づくトランザクション処理を実行できる。
また、本発明は上記実施形態に限定されるものではなく、種々の変形実施が可能である。例えば、本実施形態においてアプリケーションサーバ2が実行することとした機能の少なくとも一部は、通信ネットワークを介して接続されたウェブサーバ等の他のサーバコンピュータにより実現されてもよい。
また、以上の説明においては、テーブルロック管理データやテーブル更新管理データは、1又は複数のデータベースサーバ4のそれぞれに格納されて、当該データベースサーバ4に格納されたテーブルの情報を管理するものであるとしたが、これらの情報は一元管理されてもよい。例えば、データベース管理データと同様に、1又は複数のデータベースサーバ4のうち、所定の1台のデータベースサーバ4にこれらのデータが格納されることとしてもよい。こうすれば、キャッシュサーバ1は、常にこの所定のデータベースサーバ4に格納されたデータを参照することで、データ格納手段3に格納された全てのテーブルの最終更新日時やテーブルのロック状態に関する情報を取得できる。
また、以上の説明においては、データ取得要求により指定される参照範囲は、1又は複数のテーブルであることとしたが、これに限らず、データベース単位で参照範囲が指定されることとしてもよい。あるいは、1つのテーブルに含まれる一部のレコードが参照範囲として指定されることとしてもよい。これに応じて、ロック制御部44がデータベースサーバ4に実行させるロック制御も、データベース単位やレコード単位で実行されることとしてもよい。また、キャッシュデータ管理部43によるキャッシュデータの利用可否の判定に用いられるデータベースサーバ4内のデータの最終更新日時の情報も、データベース単位やレコード単位で記録されることとしてもよい。
本発明の実施の形態に係るコンピュータシステムの構成例を示すシステム構成図である。 アプリケーションサーバの構成例を示す構成図である。 アプリケーションサーバの機能例を示す機能ブロック図である。 キャッシュサーバの構成例を示す構成図である。 キャッシュサーバの機能例を示す機能ブロック図である。 キャッシュデータ管理データの一例を示す説明図である。 テーブル更新管理データの一例を示す説明図である。 テーブルロック管理データの一例を示す説明図である。 データベースオープン要求受け付け時にキャッシュサーバが実行する処理の一例を示すフロー図である。 データベース管理データの一例を示す説明図である。 データ取得要求受け付け時にキャッシュサーバが実行する処理の一例を示すフロー図である。 取得結果送信要求受け付け時にキャッシュサーバが実行する処理の一例を示すフロー図である。 ページデータに分割されたキャッシュデータの一例を示す説明図である。 データ更新要求受け付け時にキャッシュサーバが実行する処理の一例を示すフロー図である。 キャッシュサーバを含むコンピュータシステムの構成例を示すシステム構成図である。
符号の説明
1 キャッシュサーバ、2 アプリケーションサーバ、3 データ格納手段、4 データベースサーバ、5 ユーザ端末、11,21 制御部、12 記憶部、13,25 通信部、22 メインプロセッサ、23 サブプロセッサ、24 メインメモリ、31 アプリケーションプロセス部、32 データベースプロキシ部、41 処理要求受付部、42 データアクセス要求処理部、43 キャッシュデータ管理部、44 ロック制御部。

Claims (10)

  1. 少なくとも1つのデータベースを格納し、1又は複数のサーバプロセスであって、そのそれぞれが前記少なくとも1つのデータベースのうちの1つに対するアクセス要求を受け付ける1又は複数のサーバプロセスを実行するデータ格納手段と、複数のアプリケーションサーバであって、そのそれぞれが前記データ格納手段に格納された元データに基づく処理を行う1又は複数のアプリケーションプロセスを実行する複数のアプリケーションサーバと、に接続され、
    前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段と、
    前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付手段と、
    前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定手段と、
    前記キャッシュデータ利用可否判定手段による判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得手段と、
    前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定手段による判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御手段と、
    前記少なくとも1つのデータベースのうちの1つの注目データベースに対するアクセス要求を受け付ける1つのサーバプロセスを特定する1つのサーバプロセス特定情報を取得する手段と、
    前記複数のアプリケーションサーバが実行する複数のアプリケーションプロセスのそれぞれから、前記注目データベースに対する接続の確立を要求するデータベースオープン要求を受け付けた場合に、当該複数のアプリケーションプロセスのそれぞれを特定するアプリケーションプロセス特定情報と、当該注目データベースについて取得された前記1つのサーバプロセスを特定する前記1つのサーバプロセス特定情報と、を関連づけて記憶する手段と、
    を含み、
    前記データ取得要求受付手段は、前記データベースオープン要求を行った複数のアプリケーションプロセスのそれぞれを特定するアプリケーションプロセス特定情報が、同時期に前記1つのサーバプロセス特定情報と関連づけられた状態において、前記データベースオープン要求を行った複数のアプリケーションプロセスのそれぞれから、前記注目データベースに含まれるデータを前記参照範囲のデータとして指定する前記データ取得要求を受け付け、
    前記取得対象データ取得手段は、前記データ取得要求に応じて、前記キャッシュデータ利用可否判定手段が前記キャッシュデータを利用できないと判定する場合に、当該データ取得要求を行ったアプリケーションプロセスを特定する前記アプリケーションプロセス特定情報に関連づけられた前記1つのサーバプロセス特定情報により特定される前記1つのサーバプロセスに対して、前記取得対象データの取得を要求する
    ことを特徴とするキャッシュサーバ。
  2. 請求項1に記載のキャッシュサーバにおいて、
    前記ロック制御手段は、少なくとも前記取得対象データ取得手段による前記取得対象データの取得が完了するまでの間、前記ロック制御を前記データ格納手段に実行させる
    ことを特徴とするキャッシュサーバ。
  3. 請求項1又は2に記載のキャッシュサーバにおいて、
    前記データ格納手段は、前記元データとしてそれぞれ1又は複数のテーブルを格納する1又は複数のデータベースサーバからなり、
    前記データ取得要求は、前記参照範囲のデータとして、1又は複数の前記テーブルを指定する情報を含む
    ことを特徴とするキャッシュサーバ。
  4. 請求項1乃至3のいずれか一項に記載のキャッシュサーバにおいて、
    前記データ取得要求は、前記取得対象データを特定するためのデータ特定情報を含み、
    前記キャッシュデータ利用可否判定手段は、前記データ取得要求に含まれる前記データ特定情報に基づいて過去に前記データ格納手段から取得されたデータを前記キャッシュデータ格納手段が前記キャッシュデータとして格納しており、かつ当該キャッシュデータを前記データ格納手段から取得した後に、当該データ格納手段に格納された前記参照範囲のデータが更新されていない場合に、前記キャッシュデータを利用可能と判定する
    ことを特徴とするキャッシュサーバ。
  5. 請求項4に記載のキャッシュサーバにおいて、
    前記データ特定情報は、前記取得対象データとして前記参照範囲のデータの中から検索すべきデータの条件を指定する検索条件指定情報である
    ことを特徴とするキャッシュサーバ。
  6. 請求項1乃至5のいずれか一項に記載のキャッシュサーバにおいて、
    前記データ格納手段から取得される前記元データを、前記アプリケーションサーバによる処理の単位となる所定のデータサイズ以下のサイズのデータに分割する取得データ分割手段をさらに含み、
    前記キャッシュデータ格納手段は、前記所定のデータサイズに分割された前記元データを前記キャッシュデータとして格納する
    ことを特徴とするキャッシュサーバ。
  7. 請求項6に記載のキャッシュサーバにおいて、
    前記アプリケーションサーバは、それぞれ所定の記憶容量の記憶手段を備える複数のデータ処理手段を含んで構成され、
    前記所定のデータサイズは、前記各記憶手段の記憶容量に応じて決定される
    ことを特徴とするキャッシュサーバ。
  8. 少なくとも1つのデータベースを格納し、1又は複数のサーバプロセスであって、そのそれぞれが前記少なくとも1つのデータベースのうちの1つに対するアクセス要求を受け付ける1又は複数のサーバプロセスを実行するデータ格納手段と、複数のアプリケーションサーバであって、そのそれぞれが前記データ格納手段に格納された元データに基づく処理を行う1又は複数のアプリケーションプロセスを実行する複数のアプリケーションサーバと、に接続され、
    前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段を備えるキャッシュサーバの制御方法であって、
    前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付ステップと、
    前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定ステップと、
    前記キャッシュデータ利用可否判定ステップによる判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得ステップと、
    前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定ステップによる判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御ステップと、
    前記データ取得要求受付ステップに先立って、前記複数のアプリケーションサーバが実行する複数のアプリケーションプロセスのそれぞれから、前記少なくとも1つのデータベースのうちの1つの注目データベースに対する接続の確立を要求するデータベースオープン要求を受け付けた場合に、当該注目データベースに対するアクセス要求を受け付ける1つのサーバプロセスを特定する1つのサーバプロセス特定情報を取得し、取得した1つのサーバプロセス特定情報と、当該複数のアプリケーションプロセスのそれぞれを特定するアプリケーションプロセス特定情報と、を関連づけて記憶手段に記憶させるステップと、
    を含み、
    前記データ取得要求受付ステップでは、前記データベースオープン要求を行った複数のアプリケーションプロセスのそれぞれを特定するアプリケーションプロセス特定情報が、同時期に前記1つのサーバプロセス特定情報と関連づけられた状態において、前記データベースオープン要求を行った複数のアプリケーションプロセスのそれぞれから、前記注目データベースに含まれるデータを前記参照範囲のデータとして指定する前記データ取得要求を受け付け、
    前記取得対象データ取得ステップでは、前記データ取得要求に応じて、前記キャッシュデータ利用可否判定ステップで前記キャッシュデータを利用できないと判定される場合に、当該データ取得要求を行ったアプリケーションプロセスを特定する前記アプリケーションプロセス特定情報に関連づけられた前記1つのサーバプロセス特定情報により特定される前記1つのサーバプロセスに対して、前記取得対象データの取得を要求する
    ことを特徴とするキャッシュサーバの制御方法。
  9. 少なくとも1つのデータベースを格納し、1又は複数のサーバプロセスであって、そのそれぞれが前記少なくとも1つのデータベースのうちの1つに対するアクセス要求を受け付ける1又は複数のサーバプロセスを実行するデータ格納手段と、複数のアプリケーションサーバであって、そのそれぞれが前記データ格納手段に格納された元データに基づく処理を行う1又は複数のアプリケーションプロセスを実行する複数のアプリケーションサーバと、に接続され、
    前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段を備えるキャッシュサーバとしてコンピュータを機能させるためのプログラムであって、
    前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付手段、
    前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定手段、
    前記キャッシュデータ利用可否判定手段による判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得手段、
    前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定手段による判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御手段、
    前記少なくとも1つのデータベースのうちの1つの注目データベースに対するアクセス要求を受け付ける1つのサーバプロセスを特定する1つのサーバプロセス特定情報を取得する手段、及び
    前記複数のアプリケーションサーバが実行する複数のアプリケーションプロセスのそれぞれから、前記注目データベースに対する接続の確立を要求するデータベースオープン要求を受け付けた場合に、当該複数のアプリケーションプロセスのそれぞれを特定するアプリケーションプロセス特定情報と、当該注目データベースについて取得された前記1つのサーバプロセスを特定する前記1つのサーバプロセス特定情報と、を関連づけて記憶手段に記憶させる手段、
    として前記コンピュータを機能させるためのプログラムであって、
    前記データ取得要求受付手段は、前記データベースオープン要求を行った複数のアプリケーションプロセスのそれぞれを特定するアプリケーションプロセス特定情報が、同時期に前記1つのサーバプロセス特定情報と関連づけられた状態において、前記データベースオープン要求を行った複数のアプリケーションプロセスのそれぞれから、前記注目データベースに含まれるデータを前記参照範囲のデータとして指定する前記データ取得要求を受け付け、
    前記取得対象データ取得手段は、前記データ取得要求に応じて、前記キャッシュデータ利用可否判定手段が前記キャッシュデータを利用できないと判定する場合に、当該データ取得要求を行ったアプリケーションプロセスを特定する前記アプリケーションプロセス特定情報に関連づけられた前記1つのサーバプロセス特定情報により特定される前記1つのサーバプロセスに対して、前記取得対象データの取得を要求する
    ことを特徴とするプログラム。
  10. 請求項9記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体。
JP2006333243A 2006-12-11 2006-12-11 キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体 Expired - Fee Related JP4763587B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006333243A JP4763587B2 (ja) 2006-12-11 2006-12-11 キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006333243A JP4763587B2 (ja) 2006-12-11 2006-12-11 キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体

Publications (2)

Publication Number Publication Date
JP2008146380A JP2008146380A (ja) 2008-06-26
JP4763587B2 true JP4763587B2 (ja) 2011-08-31

Family

ID=39606492

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006333243A Expired - Fee Related JP4763587B2 (ja) 2006-12-11 2006-12-11 キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体

Country Status (1)

Country Link
JP (1) JP4763587B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010217974A (ja) * 2009-03-13 2010-09-30 Toshiba Corp 情報検索装置、情報検索方法及びプログラム
JP5071990B2 (ja) * 2009-07-28 2012-11-14 日本電信電話株式会社 データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム
JP5231368B2 (ja) * 2009-09-15 2013-07-10 ヤフー株式会社 イベント通知機能提供システム
JP5483561B2 (ja) * 2010-02-25 2014-05-07 楽天株式会社 ストレージ装置、サーバ装置、ストレージシステム、データベース装置、データの提供方法、及び、プログラム
JP5374444B2 (ja) * 2010-06-01 2013-12-25 日本電信電話株式会社 検索装置、検索方法及び検索プログラム
JP5556498B2 (ja) * 2010-08-17 2014-07-23 富士通株式会社 管理装置,ファイルサーバシステム,処理方法及び管理プログラム
JP5385874B2 (ja) * 2010-08-23 2014-01-08 日本電信電話株式会社 キャッシュ管理装置、キャッシュ管理プログラム及び記録媒体
JP5265711B2 (ja) * 2011-01-05 2013-08-14 日本電信電話株式会社 キャッシュ制御システム及びキャッシュ制御方法
JP5143917B2 (ja) * 2011-01-11 2013-02-13 ヤフー株式会社 キャッシュサーバ、キャッシュ管理方法およびキャッシュ管理プログラム
JP5437335B2 (ja) * 2011-09-09 2014-03-12 ヤフー株式会社 集約装置、集約方法及び集約プログラム
JP5449462B2 (ja) * 2012-06-22 2014-03-19 株式会社東芝 分散型データベースシステム及びプログラム
JP6090431B2 (ja) 2013-03-27 2017-03-08 富士通株式会社 分散処理のための情報処理方法、情報処理装置及びプログラム、並びに分散処理システム
US10630756B2 (en) * 2013-05-31 2020-04-21 Koninklijke Philips N.V. System and method for automatically downloading data such as sleep study data
US11030215B2 (en) * 2016-12-23 2021-06-08 Ingram Micro Inc. Technologies for scaling user interface backend clusters for database-bound applications
EP4072078A4 (en) * 2019-12-06 2023-06-21 Sony Interactive Entertainment Inc. DISTRIBUTION CONTROL DEVICE, DISTRIBUTION CONTROL METHOD AND DISTRIBUTION CONTROL PROGRAM
CN114185905A (zh) * 2021-12-06 2022-03-15 蓝信移动(北京)科技有限公司 缓存数据更新方法、装置、设备、存储介质和程序

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3838406B2 (ja) * 1999-05-11 2006-10-25 日本電信電話株式会社 ファイル配信システム
JP2002215445A (ja) * 2001-01-18 2002-08-02 Toshiba Corp Pdmシステム、並びにそのpdmキャッシュサーバ装置及びpdmサーバ装置
JP2002351729A (ja) * 2001-05-22 2002-12-06 Nec Corp データ共有システム
JP4306152B2 (ja) * 2001-06-26 2009-07-29 株式会社日立製作所 クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
EP1584036A4 (en) * 2003-01-17 2008-06-18 Tacit Networks Inc METHOD AND SYSTEM FOR USING INTERMEDIATE STORAGE IN A DISTRIBUTED FILE SYSTEM
JP4257785B2 (ja) * 2003-04-22 2009-04-22 株式会社日立製作所 キャッシュストレージ装置

Also Published As

Publication number Publication date
JP2008146380A (ja) 2008-06-26

Similar Documents

Publication Publication Date Title
JP4763587B2 (ja) キャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体
US7194532B2 (en) Distributed file management method and program therefor
US7065526B2 (en) Scalable database management system
JP4559158B2 (ja) データにアクセスするための方法及びシステム
US20080256248A1 (en) Single server access in a multiple tcp/ip instance environment
US20030018740A1 (en) Contents sharing system and software program executed by devices of the system
JP6220850B2 (ja) データベースへの中間層トランザクションログのインライン委譲をサポートするためのシステムおよび方法
EP1014266A2 (en) Method, apparatus and program storage device for a client and adaptive synchronization and transformation server
US8620926B2 (en) Using a hashing mechanism to select data entries in a directory for use with requested operations
JPH10320361A (ja) 動的移動エージェント
US8600933B2 (en) Multi-master attribute uniqueness
US7844710B2 (en) Proxy caching for directory services
JP2006252085A (ja) ユーザ識別情報を変換するファイルサーバ
US8996484B2 (en) Recursive lock-and-propagate operation
JP4500318B2 (ja) 分散トランザクション処理方法、装置、及びプログラム
US20060123121A1 (en) System and method for service session management
US7756961B2 (en) Hardware device and method for creation and management of toe-based socket information
JP2006172067A (ja) データベース管理方法、システム及びプログラム
CN118051342A (zh) 一种在局域网环境下创建k8s负载均衡的方法、系统、设备
JP2006106933A (ja) 負荷分散ネットワークシステム及び負荷分散用プログラム
JP5300650B2 (ja) HttpServiceを用いたサービス登録装置、コンテンツ登録装置、サービス登録方法、コンテンツ登録方法、プログラム及び記録媒体
JP4722519B2 (ja) 計算機システム及びストレージサーバ、検索サーバ、端末装置並びに検索方法
US20080140687A1 (en) Socket structure simultaneously supporting both toe and ethernet network interface card and method of forming the socket structure
JP2006085521A (ja) 情報伝達方法及びホスト装置
JP4232606B2 (ja) ファイル配信システム、クライアントプログラム、クライアント、サーバプログラム、サーバ、及び方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101004

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101124

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20101203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110328

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

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

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

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees