(57)【要約】【課題】アプリケーションサーバの処理を複雑化させることなく、アプリケーションサーバにキャッシュデータを提供できるキャッシュサーバを提供する。【解決手段】データ格納手段３から取得される元データをキャッシュデータとして格納し、データ格納手段３に格納された元データの少なくとも一部の参照範囲のデータを参照してその全部又は一部を取得する要求をアプリケーションサーバ２から受け付け、当該要求により要求されるデータとしてキャッシュデータを利用可能か否か判定し、判定の結果に応じてキャッシュデータ又はデータ格納手段３に格納された参照範囲のデータの少なくとも一方を参照して要求されるデータを取得し、当該判定の前にデータ格納手段３に格納された参照範囲のデータを含む元データに対する更新を制限するロック制御をデータ格納手段３に開始させるキャッシュサーバである。【選択図】図１
2008146380.tif 000002
【特許請求の範囲】
【請求項１】
データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、
前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段と、
前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付手段と、
前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定手段と、
前記キャッシュデータ利用可否判定手段による判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得手段と、
前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定手段による判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御手段と、
を含むことを特徴とするキャッシュサーバ。
【請求項２】
請求項１に記載のキャッシュサーバにおいて、
前記ロック制御手段は、少なくとも前記取得対象データ取得手段による前記取得対象データの取得が完了するまでの間、前記ロック制御を前記データ格納手段に実行させる
ことを特徴とするキャッシュサーバ。
【請求項３】
請求項１又は２に記載のキャッシュサーバにおいて、
前記データ格納手段は、前記元データとしてそれぞれ１又は複数のテーブルを格納する１又は複数のデータベースサーバからなり、
前記データ取得要求は、前記参照範囲のデータとして、１又は複数の前記テーブルを指定する情報を含む
ことを特徴とするキャッシュサーバ。
【請求項４】
請求項１乃至３のいずれか一項に記載のキャッシュサーバにおいて、
前記データ取得要求は、前記取得対象データを特定するためのデータ特定情報を含み、
前記キャッシュデータ利用可否判定手段は、前記データ取得要求に含まれる前記データ特定情報に基づいて過去に前記データ格納手段から取得されたデータを前記キャッシュデータ格納手段が前記キャッシュデータとして格納しており、かつ当該キャッシュデータを前記データ格納手段から取得した後に、当該データ格納手段に格納された前記参照範囲のデータが更新されていない場合に、前記キャッシュデータを利用可能と判定する
ことを特徴とするキャッシュサーバ。
【請求項５】
請求項４に記載のキャッシュサーバにおいて、
前記データ特定情報は、前記取得対象データとして前記参照範囲のデータの中から検索すべきデータの条件を指定する検索条件指定情報である
ことを特徴とするキャッシュサーバ。
【請求項６】
請求項１乃至５のいずれか一項に記載のキャッシュサーバにおいて、
前記データ格納手段から取得される前記元データを、前記アプリケーションサーバによる処理の単位となる所定のデータサイズ以下のサイズのデータに分割する取得データ分割手段をさらに含み、
前記キャッシュデータ格納手段は、前記所定のデータサイズに分割された前記元データを前記キャッシュデータとして格納する
ことを特徴とするキャッシュサーバ。
【請求項７】
請求項６に記載のキャッシュサーバにおいて、
前記アプリケーションサーバは、それぞれ所定の記憶容量の記憶手段を備える複数のデータ処理手段を含んで構成され、
前記所定のデータサイズは、前記各記憶手段の記憶容量に応じて決定される
ことを特徴とするキャッシュサーバ。
【請求項８】
請求項１乃至７のいずれか一項に記載のキャッシュサーバにおいて、
前記データ格納手段は、
１又は複数のデータベースを格納し、
それぞれ前記１又は複数のデータベースのいずれかに関連づけられ、前記キャッシュサーバから送信される当該関連づけられたデータベースに対するアクセス要求を受け付ける１又は複数のアクセス受付手段を含み、
前記キャッシュサーバは、
それぞれ１又は複数のアプリケーション実行手段を備える複数の前記アプリケーションサーバに接続され、
前記１又は複数のデータベースのそれぞれについて、当該データベースに関連づけられた前記アクセス受付手段を特定するアクセス受付手段特定情報を取得する手段と、
前記各アプリケーション実行手段から受け付けた、前記１又は複数のデータベースのうちの接続対象データベースに対するデータベース接続要求に応じて、当該アプリケーション実行手段を特定するアプリケーション実行手段特定情報と、当該接続対象データベースについて取得された１つの前記アクセス受付手段特定情報と、を関連づけて記憶する手段と、
前記各アプリケーション実行手段から受け付けた、前記接続対象データベースに含まれるデータを前記参照範囲のデータとして指定する前記データ取得要求に応じて、前記キャッシュデータ利用可否判定手段が前記キャッシュデータを利用できないと判定する場合に、当該アプリケーション実行手段を特定する前記アプリケーション実行手段特定情報に関連づけられた前記アクセス受付手段特定情報により特定される前記アクセス受付手段に対して前記アクセス要求を送信する手段と、
をさらに含むことを特徴とするキャッシュサーバ。
【請求項９】
データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、
前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段を備えるキャッシュサーバの制御方法であって、
前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付ステップと、
前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定ステップと、
前記キャッシュデータ利用可否判定ステップによる判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得ステップと、
前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定ステップによる判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御ステップと、
を含むことを特徴とするキャッシュサーバの制御方法。
【請求項１０】
データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、
前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段を備えるキャッシュサーバとしてコンピュータを機能させるためのプログラムであって、
前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付手段、
前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定手段、
前記キャッシュデータ利用可否判定手段による判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得手段、及び
前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定手段による判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御手段、
として前記コンピュータを機能させるためのプログラム。
【請求項１１】
請求項１０記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ格納手段及びアプリケーションサーバに接続されるキャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体に関する。
【背景技術】
【０００２】
例えばデータベースサーバなどのデータ格納手段と、このデータ格納手段に格納されたデータに基づく処理を実行するアプリケーションサーバと、を含んだ分散処理システム等のコンピュータシステムがある。このようなコンピュータシステムにおいて、アプリケーションサーバは、実行する処理に応じてデータ格納手段に格納されたデータを参照することによって、必要なデータを取得する。しかしながら、例えば必要なデータがデータベースサーバに格納されたデータベースの中の指定した条件を満たすレコードなどである場合、このようなデータを取得する際にはデータベースサーバにおいてデータベースの検索等による処理負荷が発生する。そのため、アプリケーションサーバにおいて必要となる都度、データ格納手段に格納されたデータを参照して必要なデータを取得するのは、非効率な場合がある。
【０００３】
そこで、このようなコンピュータシステムは、データ格納手段から取得したデータをキャッシュデータとして一時的に格納するキャッシュサーバを備える場合がある。図１５は、このようなキャッシュサーバを備えるコンピュータシステムの一例を示すシステム構成図である。この図に示すコンピュータシステムにおいて、アプリケーションサーバは、データベースサーバに格納されたデータが必要になった場合、当該データがキャッシュサーバに既に格納されているか否かをまず判定する。そして、キャッシュサーバ内に必要なデータが既に格納されていれば、データベースサーバにはアクセスせずにキャッシュサーバから必要なデータを取得する。これにより、当該コンピュータシステムは、アプリケーションサーバによるデータ取得の効率化を図ることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来例のコンピュータシステムによれば、アプリケーションサーバは、必要なデータを取得する際にキャッシュサーバからデータを取得するのか、あるいはデータベースサーバからデータを取得するのかを判断する必要がある。また、データベースサーバからデータを取得した場合には、再利用に備えてキャッシュサーバに取得したデータを格納する必要がある。そのため、アプリケーションサーバはキャッシュサーバの有無やキャッシュデータの格納状況などに応じた処理を実行しなければならず、処理が煩雑になってしまう場合がある。
【０００５】
具体例として、例えば複数のアプリケーションサーバがデータベースサーバにアクセスする場合や、１台のアプリケーションサーバ内で起動された複数のプロセスがそれぞれデータベースサーバにアクセスする場合などにおいては、複数のプロセスがデータベースサーバ内のデータをそれぞれ独立に更新してしまう可能性がある。このような場合、各プロセスはキャッシュサーバに格納されたキャッシュデータを利用する際に、当該キャッシュデータが最新のものであるか否かを判断する必要があり、各プロセスが実行する処理は複雑化してしまう。
【０００６】
本発明は上記実情に鑑みてなされたものであって、その目的の一つは、アプリケーションサーバの処理を複雑化させることなく、アプリケーションサーバに対してキャッシュデータを提供できるキャッシュサーバ、キャッシュサーバの制御方法、プログラム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するための本発明に係るキャッシュサーバは、データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段と、前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付手段と、前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定手段と、前記キャッシュデータ利用可否判定手段による判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得手段と、前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定手段による判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御手段と、を含むことを特徴とする。
【０００８】
また、本発明に係るキャッシュサーバの制御方法は、データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段を備えるキャッシュサーバの制御方法であって、前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付ステップと、前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定ステップと、前記キャッシュデータ利用可否判定ステップによる判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得ステップと、前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定ステップによる判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御ステップと、を含むことを特徴とする。
【０００９】
また、本発明に係るプログラムは、データ格納手段と、当該データ格納手段に格納された元データに基づく処理を実行するアプリケーションサーバと、に接続され、前記データ格納手段から取得される前記元データの一部又は全部をキャッシュデータとして格納するキャッシュデータ格納手段を備えるキャッシュサーバとしてコンピュータを機能させるためのプログラムであって、前記データ格納手段に格納された前記元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得するデータ取得要求を、前記アプリケーションサーバから受け付けるデータ取得要求受付手段、前記データ取得要求を受け付けた場合に、当該データ取得要求により要求される前記取得対象データの少なくとも一部として、前記キャッシュデータを利用可能か否か判定するキャッシュデータ利用可否判定手段、前記キャッシュデータ利用可否判定手段による判定の結果に応じて、前記キャッシュデータの一部又は全部と、前記データ格納手段に格納された前記元データのうち前記参照範囲のデータの一部又は全部と、のいずれか少なくとも一方を参照して前記取得対象データを取得する取得対象データ取得手段、及び前記データ取得要求を受け付けた場合に、少なくとも前記キャッシュデータ利用可否判定手段による判定の前に、前記データ格納手段に格納された前記元データのうち、前記参照範囲のデータを含む前記元データに対する更新を制限するロック制御を、前記データ格納手段に開始させるロック制御手段、として前記コンピュータを機能させるためのプログラムである。このプログラムは、コンピュータ読み取り可能な情報記憶媒体に記憶されてよい。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の一実施形態について、図面を参照しながら説明する。
【００１１】
図１は、本発明の実施の形態に係るキャッシュサーバ１を含んだコンピュータシステムの一例を示すシステム構成図である。本発明の実施の形態に係るコンピュータシステムは、図１に示すように、キャッシュサーバ１と、アプリケーションサーバ２と、データ格納手段３と、を含んで構成される。本実施形態において、データ格納手段３は、１又は複数のデータベースサーバ４を含んで構成される。また、図１においては、キャッシュサーバ１が２台あって、それぞれ４台のアプリケーションサーバ２と接続されている場合の例が示されているが、これは例示であって、キャッシュサーバ１及びアプリケーションサーバ２の数はこれ以外であってもよい。すなわち、アプリケーションサーバ２とキャッシュサーバ１は１台ずつであってもよいし、図１の例よりも多数あってもよい。また、各キャッシュサーバ１と接続されるアプリケーションサーバ２の数は、それぞれ異なってもよい。
【００１２】
また、本実施形態に係るコンピュータシステムは、例えばインターネット等の通信ネットワークを介して、複数のユーザ端末５と接続される。ユーザ端末５は、例えばパーソナルコンピュータや家庭用ゲーム機などの情報処理装置であって、本実施形態に係るコンピュータシステムによって提供されるサービスを利用する各ユーザが使用する端末である。本実施形態において、ユーザ端末５はウェブブラウザプログラム等のクライアントプログラムを実行して、いずれか１台のアプリケーションサーバ２に対してアプリケーション実行要求を送信したり、当該アプリケーション実行要求に応じてアプリケーションサーバ２から送信された処理結果を示すデータを画面上に表示したりする。
【００１３】
キャッシュサーバ１は、予め対応づけられたアプリケーションサーバ２、及びデータ格納手段３に含まれる各データベースサーバ４と相互にデータ通信可能に接続されたサーバコンピュータである。キャッシュサーバ１は、対応するアプリケーションサーバ２からのデータベースサーバ４に対するデータアクセス要求を受け付けて、このデータアクセス要求に応じた処理を行う。キャッシュサーバ１の構成及び機能については、後に詳しく説明する。
【００１４】
アプリケーションサーバ２は、複数のユーザ端末５及び予め対応づけられたキャッシュサーバ１と相互にデータ通信可能に接続されたサーバコンピュータである。アプリケーションサーバ２は、各ユーザ端末５から送信されるアプリケーション実行要求に応じて、各種の処理を実行する。この処理の少なくとも一部は、データ格納手段３に格納されたデータ（以下、元データという）に基づく処理である。アプリケーションサーバ２は、その処理内容に応じて、データ格納手段３に格納された元データを参照して必要なデータを取得するデータ取得要求や、データ格納手段３に格納された元データの内容を更新するデータ更新要求などのデータアクセス要求を出力する。ただし、本実施形態においてアプリケーションサーバ２は、このデータアクセス要求をデータ格納手段３ではなく対応するキャッシュサーバ１に対して送信する。
【００１５】
すなわち、本実施形態においては、後に詳しく説明するように、キャッシュサーバ１がアプリケーションサーバ２のデータ格納手段３に対するアクセスを仲介する。これにより、アプリケーションサーバ２は、それぞれ個別にデータ格納手段３に含まれる各データベースサーバ４との間で直接接続を確立せずとも、データベースサーバ４に格納されたデータに基づく処理を実行できる。こうすれば、アプリケーションサーバ２の数が多くなっても、データベースサーバ４が各アプリケーションサーバ２からの接続を受け付けるためのサーバプロセスを多数起動する必要はなくなり、データベースサーバ４への接続が確立できずにアプリケーションサーバ２が待たされる状態を避けることができる。また、各アプリケーションサーバ２がそれぞれ個別に接続されたキャッシュサーバ１にキャッシュデータを格納する場合と異なり、アプリケーションサーバ２は従来のデータベースサーバ４へのアクセスと同様の手順でキャッシュサーバ１にアクセスすることにより、キャッシュデータを利用できる。
【００１６】
データ格納手段３に含まれる各データベースサーバ４は、各キャッシュサーバ１と相互にデータ通信可能に接続されたサーバコンピュータである。各データベースサーバ４は、それぞれ１又は複数のデータベースを所定の記憶領域に格納している。さらに各データベースには、元データとして、１又は複数のテーブルが含まれている。ここで所定の記憶領域は、データベースサーバ４の筐体に内蔵されたハードディスク等のディスクデバイスであってもよいし、データベースサーバ４とストレージエリアネットワーク等を介して接続されたストレージデバイスであってもよい。各データベースサーバ４は、キャッシュサーバ１から送信されるアクセス要求に応じて、格納しているテーブル内のデータを更新したり、格納しているテーブルから要求された条件に基づいて抽出したデータをキャッシュサーバ１に対して送信したりする。
【００１７】
以上説明したように、アプリケーションサーバ２、キャッシュサーバ１、及び各データベースサーバ４が相互に連携して動作することにより、本実施形態に係るコンピュータシステムは、ユーザ端末５からのアプリケーション実行要求に応じて、データベースサーバ４に格納されたデータベースに基づく処理を実行し、処理結果を示すデータをユーザ端末５に対して送信する。
【００１８】
ここで、本実施形態に係るアプリケーションサーバ２のハードウェア構成の例について、図２の構成図に基づいて説明する。アプリケーションサーバ２は、図２に示すように、制御部２１と、メインメモリ２４と、通信部２５と、を含んで構成される。
【００１９】
本実施形態において、アプリケーションサーバ２は、それぞれ所定の記憶容量の記憶手段を備える複数のデータ処理手段を含んで構成される。具体例として、制御部２１は、１つのメインプロセッサ２２と、データ処理手段としての複数のサブプロセッサ２３と、を含んで構成される。また、各サブプロセッサ２３は、それぞれサブプロセッサユニット２３ａ及びローカルメモリ２３ｂを含んで構成される。
【００２０】
メインプロセッサ２２は、メインメモリ２４に格納されたプログラムに基づいて、各種の情報処理を行う。また、メインプロセッサ２２は、各サブプロセッサ２３に対して、処理を割り当てるなどの制御を行う。
【００２１】
サブプロセッサユニット２３ａは、メインプロセッサ２２からの指示に従って、各種の情報処理を行う。ローカルメモリ２３ｂは、所定の記憶容量の記憶手段であって、サブプロセッサユニット２３ａに割り当てられたプログラムやデータの少なくとも一部を格納し、サブプロセッサユニット２３ａのワークメモリとして動作する。
【００２２】
メインメモリ２４は、ＲＡＭやＲＯＭ等のメモリ素子を含んで構成されるコンピュータ読み取り可能な情報記憶媒体であって、制御部２１によって実行されるプログラムが格納される。また、メインメモリ２４は、制御部２１のワークメモリとしても動作する。
【００２３】
通信部２５は、ＬＡＮボード等のネットワークインタフェースであって、制御部２１からの指示に従って、通信ネットワークを介して情報を送信する。また、通信部２５は、通信ネットワークを介して到来する情報を受信して制御部２１に出力する。
【００２４】
続いて、アプリケーションサーバ２が実現する機能について説明する。本実施形態において、アプリケーションサーバ２は、機能的に図３に示すように、複数のアプリケーションプロセス部３１と、データベースプロキシ部３２と、を含んで構成される。
【００２５】
アプリケーションプロセス部３１は、複数のサブプロセッサ２３のそれぞれがメインメモリ２４に格納されたプログラムを実行することによって実現される。すなわち、複数のアプリケーションプロセス部３１は、各サブプロセッサ２３によってそれぞれ独立に実行される。アプリケーションプロセス部３１は、それぞれ対応するユーザ端末５で実行されるクライアントプログラムからアプリケーション実行要求を受け付けて、データベースサーバ４に格納されたデータベースに基づくトランザクション処理を含む、所定の情報処理（アプリケーション実行処理）を実行する。また、アプリケーションプロセス部３１は、トランザクション処理を実行する過程で、データベースサーバ４に格納されたデータベースに対する各種の処理要求を、データベースプロキシ部３２に対して出力する。
【００２６】
ここで、トランザクション処理は、データベースサーバ４に格納されているデータベースとの接続を確立するデータベースオープン要求や、接続が確立されたデータベースに含まれるテーブルを参照したり更新したりするデータアクセス要求などを含む、連続して実行される一連の処理である。アプリケーションプロセス部３１は、このトランザクション処理を含むアプリケーション実行処理を実行して、対応するユーザ端末５を利用するユーザに対してアプリケーションサービスを提供するアプリケーション実行手段として機能する。
【００２７】
データベースプロキシ部３２は、メインプロセッサ２２がメインメモリ２４に格納されたプログラムを実行することによって実現される。データベースプロキシ部３２は、複数のアプリケーションプロセス部３１とキャッシュサーバ１との間のデータの中継を行う。すなわち、データベースプロキシ部３２は、各アプリケーションプロセス部３１が出力する処理要求を受け付けて、当該処理要求をキャッシュサーバ１に対して送信する。また、キャッシュサーバ１から当該処理要求に応じて返信される応答データを、処理要求を出力したアプリケーションプロセス部３１に対して出力する。
【００２８】
次に、本実施形態に係るキャッシュサーバ１のハードウェア構成について、図４の構成図に基づいて説明する。キャッシュサーバ１は、図４に示すように、制御部１１と、記憶部１２と、通信部１３と、を含んで構成されるサーバコンピュータである。
【００２９】
制御部１１は、ＣＰＵ等であって、記憶部１２に格納されたプログラムに従って動作する。制御部１１は、アプリケーションサーバ２から送信されるデータ取得要求やデータ更新要求に応じて、データベースサーバ４からデータを取得したり、データベースサーバ４に格納されたデータを更新したりする。また、データベースサーバ４から取得したデータをキャッシュデータとして記憶部１２に格納し、所定の条件を満たす場合に当該キャッシュデータをアプリケーションサーバ２に対して出力する。本実施形態において制御部１１が実現する機能については、後に詳しく説明する。
【００３０】
記憶部１２は、ＲＡＭやＲＯＭ等のメモリ素子と、ハードディスク等のディスクデバイスと、の少なくとも一方を含んで構成されるコンピュータ読み取り可能な情報記憶媒体である。記憶部１２には、制御部１１によって実行されるプログラムが格納される。また、記憶部１２は、制御部１１のワークメモリとしても動作する。
【００３１】
さらに本実施形態において、記憶部１２は、キャッシュデータ格納手段としての機能を実現する。すなわち、記憶部１２は、各データベースサーバ４から取得される元データの一部又は全部をキャッシュデータとして格納する。
【００３２】
通信部１３は、ＬＡＮボード等のネットワークインタフェースであって、制御部１１からの指示に従って、通信ネットワークを介して情報を送信する。また、通信部１３は、通信ネットワークを介して到来する情報を受信して制御部１１に出力する。
【００３３】
以下、本実施形態に係るキャッシュサーバ１が実現する機能について、説明する。本実施形態において、キャッシュサーバ１は、機能的に図５に示すように、処理要求受付部４１と、データアクセス要求処理部４２と、キャッシュデータ管理部４３と、ロック制御部４４と、を含んで構成される。これらの機能は、例えば制御部１１が記憶部１２に格納されたプログラムを実行することによって実現できる。このプログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な情報記憶媒体に格納されて提供されてもよいし、インターネット等の通信ネットワークを介して提供されてもよい。
【００３４】
処理要求受付部４１は、アプリケーションプロセス部３１が出力するデータベースサーバ４に対する各種の処理要求を受け付ける。この処理要求の中には、アプリケーションプロセス部３１がデータベースサーバ４に格納されている特定のデータベースへアクセスするための接続を確立するデータベースオープン要求や、接続が確立されたデータベースに含まれる各テーブルに対するデータアクセス要求などが含まれる。さらに、このデータアクセス要求には、データベースサーバ４に格納されたテーブルの内容を更新するデータ更新要求と、データベースサーバ４に格納されたテーブルを参照して指定した条件を満たすデータを取得するデータ取得要求と、が含まれる。また、処理要求の中には、データアクセス要求に応じてなされたデータの取得や更新の処理内容を確定させるコミット要求が含まれてもよい。
【００３５】
データ取得要求は、データ格納手段３に格納された元データの少なくとも一部の参照範囲のデータを参照して、当該参照範囲のデータの全部又は一部を取得対象データとして取得する要求である。本実施形態においては、データ取得要求によって指定される参照範囲は、データ格納手段３に格納された元データのうちの１又は複数のテーブルであるものとする。すなわち、データ取得要求には、参照範囲として指定する１又は複数のテーブルを特定するテーブル特定情報が含まれる。テーブル特定情報は、例えばテーブル名と、当該テーブルを格納するデータベース名との組み合わせからなる情報である。また、データ取得要求には、取得対象データを特定するためのデータ特定情報も含まれている。ここでは具体例として、データ取得要求は、テーブル特定情報によって特定されるテーブルの中から検索すべきデータの条件を指定する検索条件指定情報を、データ特定情報として含んでいることとする。この検索条件指定情報によって指定された検索条件を満たすデータが、データ取得要求によって要求される取得対象データとなる。
【００３６】
データアクセス要求処理部４２は、処理要求受付部４１が受け付けたデータアクセス要求に応じて、このデータアクセス要求によって指定されたテーブルに対するデータの更新又は取得を行う。具体的に、データアクセス要求処理部４２は、処理要求受付部４１がデータ更新要求を受け付けた場合、指定されたテーブルに対してアクセスし、指示された内容に基づいてデータの更新を行う。また、この場合、データアクセス要求処理部４２は、更新対象として指定されたテーブルを過去に参照して取得したキャッシュデータが記憶部１２に格納されている場合、当該格納されたキャッシュデータを破棄する指示をキャッシュデータ管理部４３に対して出力してもよい。
【００３７】
一方、処理要求受付部４１がデータ取得要求を受け付けた場合、データアクセス要求処理部４２は、記憶部１２に格納されているキャッシュデータの一部又は全部と、データ取得要求によって指定されたテーブルの一部又は全部と、のいずれか少なくとも一方を参照して、当該データ取得要求により要求される取得対象データを取得する。
【００３８】
具体例として、処理要求受付部４１がデータ取得要求を受け付けた場合、データアクセス要求処理部４２は、まずキャッシュデータ管理部４３に問い合わせて、当該データ取得要求により要求される取得対象データの少なくとも一部として、記憶部１２に格納されているキャッシュデータを利用可能か否か判定する。そして、この判定の結果に応じて、記憶部１２に格納されたキャッシュデータとデータベースサーバ４に格納されたテーブルと、のいずれか一方を参照して取得対象データを取得する。例えば取得対象データの全部についてキャッシュデータを利用できると判定された場合、データアクセス要求処理部４２は、データベースサーバ４に格納されたテーブルへのアクセスは行わずに、記憶部１２に格納されているキャッシュデータを取得対象データとして取得する。一方、キャッシュデータを利用できないと判定した場合、データアクセス要求処理部４２は、データベースサーバ４に格納されたテーブルを参照するアクセスを実行する。そして、当該アクセスに応じてデータベースサーバ４が指定された検索条件に基づく検索を実行して得られたデータを、取得対象データとして取得する。この場合において、データアクセス要求処理部４２は、データベースサーバ４から取得したデータをキャッシュデータとして記憶部１２内に格納する指示を、キャッシュデータ管理部４３に対して出力する。
【００３９】
キャッシュデータの利用の可否に関わらず、以上説明した処理によって、データ取得要求によって要求された取得対象データはキャッシュデータとして記憶部１２に格納された状態となる。データアクセス要求処理部４２は、アプリケーションプロセス部３１からデータ取得要求に続いて同一トランザクション処理内において出力される取得結果送信要求に応じて、この記憶部１２に格納されたキャッシュデータを取得対象データとして送信する。
【００４０】
キャッシュデータ管理部４３は、データアクセス要求処理部４２の指示に従って、キャッシュデータの記憶部１２への格納や、格納されたキャッシュデータの読み出しを行う。具体例として、キャッシュデータ管理部４３は、データアクセス要求処理部４２がデータ取得要求に応じてデータベースサーバ４から取得対象データを取得した場合に、この取得対象データをキャッシュデータとして記憶部１２内に格納するとともに、格納したキャッシュデータの内容を示す情報をキャッシュデータ管理データとして記録する。ここで、キャッシュデータ管理データは、例えば図６に例示するように、データ取得要求に含まれるテーブル特定情報及び検索条件指定情報と、取得日時の情報と、キャッシュデータの記憶部１２内の格納位置を示す情報（例えばメモリアドレス）と、を関連づけるデータである。このキャッシュデータ管理データを参照することで、キャッシュデータ管理部４３は、記憶部１２内に格納された各キャッシュデータの内容及び取得時期に関する情報を取得できる。
【００４１】
なお、キャッシュデータ管理部４３は、データベースサーバ４から取得されるデータを、アプリケーションサーバ２による処理の単位となる所定のデータサイズ以下のサイズのデータに分割し、この分割されたデータをキャッシュデータとして記憶部１２に格納することとしてもよい。この場合の所定のデータサイズは、例えばアプリケーションサーバ２内のローカルメモリ２３ｂの記憶容量に応じて決定される。また、この所定のデータサイズは、キャッシュサーバ１がアプリケーションサーバ２に対してデータベースサーバ４から取得されるデータを送信する際のデータ送信単位に応じて決定されてもよい。
【００４２】
これにより、キャッシュサーバ１は、例えば複数のアプリケーションプロセス部３１から同じキャッシュデータを利用可能なデータ取得要求を複数回受け付けた場合に、このようなデータ取得要求を受け付けるたびにキャッシュデータを分割する処理をすることなく、分割された状態で格納された各キャッシュデータをそのままパケットに格納してアプリケーションサーバ２に対して送信できる。アプリケーションプロセス部３１は、キャッシュサーバ１から送信された所定のデータサイズのキャッシュデータをローカルメモリ２３ｂに読み込むことによって、要求したデータに応じた処理を実行できる。
【００４３】
また、キャッシュデータ管理部４３は、アプリケーションプロセス部３１からデータ取得要求があった場合に、データアクセス要求処理部４２からの問い合わせに応じて、当該データ取得要求により要求された取得対象データとしてキャッシュデータを利用可能か否か判定する。具体的に、キャッシュデータ管理部４３は、データ取得要求に含まれるデータ特定情報に基づいて過去にデータベースサーバ４から取得されたデータがキャッシュデータとして記憶部１２に格納されており、かつ当該キャッシュデータを取得した後に、当該データ取得要求により参照範囲として指定されたデータベースサーバ４内のテーブルが更新されていない場合に、当該キャッシュデータを取得対象データとして利用可能と判断する。
【００４４】
具体例として、キャッシュデータ管理部４３は、データアクセス要求処理部４２からの問い合わせがあった場合、まずキャッシュデータ管理データを参照して、アプリケーションプロセス部３１から要求された取得対象データがキャッシュデータとして記憶部１２に格納されているか否かを判定する。具体的には、データ取得要求に含まれるテーブル特定情報及び検索条件指定情報と一致するテーブル特定情報及び検索条件指定情報の組み合わせが、キャッシュデータ管理データ内にあるか否かを判定する。一致するテーブル特定情報及び検索条件指定情報の組み合わせがキャッシュデータ管理データ内になければ、キャッシュデータ管理部４３は要求された取得対象データをキャッシュデータとして保持していないと判定する。逆に、一致する組み合わせがあれば、データ取得要求で指定されたテーブルから過去に同条件で取得されたデータが、キャッシュデータとして記憶部１２内に格納されていることとなる。
【００４５】
この場合、続いてキャッシュデータ管理部４３は、キャッシュデータ管理データにおいて当該テーブル特定情報及び検索条件指定情報の組み合わせに関連づけられた取得日時の情報を取得する。そして、この取得日時以降に、テーブル特定情報によって特定されるテーブルが更新されているか否かを判定する。なお、以下ではこの判定の対象となるテーブルを判定対象テーブルという。
【００４６】
具体的に、例えばキャッシュデータ管理部４３は、判定対象テーブルを格納しているデータベースサーバ４に問い合わせて、判定対象テーブルの最終更新日時の情報を取得する。ここで、各データベースサーバ４は、例えば図７に例示するようなテーブル更新管理データを保持しているものとする。テーブル更新管理データは、格納されている各テーブルを特定するテーブル特定情報と、各テーブルの最終更新日時の情報と、を関連づけるデータである。各データベースサーバ４は、キャッシュサーバ１からの問い合わせに対して、当該テーブル更新管理データを参照して判定対象テーブルの最終更新日時の情報を取得し、キャッシュサーバ１に対して返信する。
【００４７】
なお、各データベースサーバ４は、格納している各テーブルに対する更新処理を監視し、更新処理があった場合に当該更新処理の対象となったテーブルの最終更新日時の情報を更新することとしてもよい。また、本実施形態において各データベースサーバ４に格納されたテーブルはキャッシュサーバ１からのアクセスによって更新される。そこで、キャッシュサーバ１は、アプリケーションプロセス部３１からデータ更新要求を受け付けて、データベースサーバ４に格納されたテーブルの更新を行った場合に、当該データベースサーバ４に保持されたテーブル更新管理データ内における、当該テーブルの最終更新日時の情報を更新してもよい。これにより、データベースサーバ４がテーブルの更新処理を監視する機能を備えていない場合であっても、各テーブルの更新に応じてテーブル更新管理データを更新することができる。
【００４８】
データベースサーバ４から最終更新日時の情報を取得したキャッシュデータ管理部４３は、この最終更新日時と、記憶部１２に格納されたキャッシュデータの取得日時とを比較する。そして、最終更新日時が取得日時より後であれば、キャッシュデータの取得後に判定対象テーブルが更新されており、キャッシュデータは利用できないと判定する。逆に取得日時が最終更新日時より後であれば、キャッシュデータの取得以後、判定対象テーブルは更新されておらず、キャッシュデータの内容は最新の判定対象テーブルの内容に基づくものであると判定する。この場合、キャッシュデータ管理部４３は、データ取得要求により要求された取得対象データとしてキャッシュデータを利用可能であるとの判定結果を、データアクセス要求処理部４２に対して出力する。
【００４９】
なお、キャッシュデータ管理部４３は、キャッシュデータの利用可否を判定するために、判定対象テーブルの最終更新日時をキャッシュデータの取得日時と比較するだけでなく、判定対象テーブルのロック状態を確認することとしてもよい。この場合、キャッシュデータ管理部４３は、判定対象テーブルに対するロックがなされているか否かを、判定対象テーブルを格納するデータベースサーバ４に問い合わせる。ここで、各データベースサーバ４は、格納している各テーブルのロック状態を管理するために、例えば図８に例示するようなテーブルロック管理データを保持しているものとする。テーブルロック管理データは、格納されている各テーブルを特定するテーブル特定情報と、各テーブルに対するロック制御の契機となったトランザクション処理を特定するトランザクション特定情報（トランザクション番号など）と、当該トランザクション処理によってなされたロックのモードを示す情報（リードロックか、又はライトロックかを示す情報）と、を関連づけるデータである。各データベースサーバ４は、キャッシュサーバ１からの問い合わせに対して、このテーブルロック管理データを参照して判定対象テーブルに対してライトロックがなされているか否かを判定し、判定結果をキャッシュサーバ１に対して返信する。
【００５０】
キャッシュデータ管理部４３は、問い合わせたデータベースサーバ４から返信された判定結果に応じて、判定対象テーブルに対してライトロックがなされていれば、キャッシュデータ管理部４３はキャッシュデータの利用はできないと判定する。なぜなら、ライトロックがなされている場合、他のキャッシュサーバ１により判定対象テーブルに対するデータ更新の処理が実行中であると推定されるためである。
【００５１】
以上説明したように、キャッシュデータ管理部４３は、データ取得要求によって参照範囲として指定されたテーブルに対するデータ更新の有無に関する情報を取得することによって、記憶部１２内に格納されたキャッシュデータが最新の判定対象テーブルの内容に基づいて取得されたデータであるか否かを判定できる。
【００５２】
ロック制御部４４は、処理要求受付部４１がデータアクセス要求を受け付けた場合に、このデータアクセス要求によりアクセスの対象として指定されたテーブルを格納するデータベースサーバ４に対して、指定されたテーブルをロックするロック制御を実行させるロック制御命令を出力する。このロック制御命令に応じて、データベースサーバ４は、指定されたテーブルに対してリードロック又はライトロックのいずれかのロック制御を行い、前述したテーブルロック管理データを更新する。
【００５３】
例えばロック制御部４４は、処理要求受付部４１がデータ取得要求を受け付けた場合に、少なくともキャッシュデータ管理部４３による取得対象データとしてキャッシュデータを利用可能か否かの判定が実行される前に、当該データ取得要求により指定されたテーブルを格納するデータベースサーバ４に対して、当該テーブルを含む元データに対する更新を制限するリードロックを開始させる。こうすれば、キャッシュデータ管理部４３がキャッシュデータの利用可否を判定している間に、データベースサーバ４内の参照範囲として指定されたテーブルが他のキャッシュサーバ１からのアクセスによって更新されてしまうことを防ぐことができる。これにより、キャッシュサーバ１は、取得対象データとしてキャッシュデータを取得すると判定しても、データベースサーバ４内のテーブルを参照して取得対象データを取得すると判定しても、どちらの場合であっても最新のテーブル内容に基づくデータを取得対象データとして取得することができる。
【００５４】
さらに、ロック制御部４４は、少なくともデータアクセス要求処理部４２による当該データ取得要求に応じた取得対象データの取得が完了するまでの間、当該データ取得要求により指定されたテーブルを格納するデータベースサーバ４に対して、当該テーブルを含む元データに対する更新を制限するリードロックを実行させてもよい。
【００５５】
具体例として、ロック制御部４４は、処理要求受付部４１がデータ取得要求を受け付けた時点でロック制御命令をデータベースサーバ４に対して出力し、ロック制御を実行させる。また、データアクセス要求処理部４２による取得対象データの取得の完了後に、ロックを解除するロック解除命令をデータベースサーバ４に対して出力する。例えばロック制御部４４は、アプリケーションプロセス部３１が当該データ取得要求に応じた処理の完了後にコミット要求（データ取得要求によって要求されたデータの取得を確定させる要求）をキャッシュサーバ１に対して出力した場合に、このコミット要求の受け付けに応じてロック解除命令をデータベースサーバ４に対して出力してもよい。
【００５６】
以上説明したようなロック制御により、キャッシュサーバ１は、既に記憶部１２に格納されているキャッシュデータをデータ取得要求に応じた取得対象データとして取得する場合も含めて、取得対象データの取得が完了するまで指定されたテーブルへの更新を制限することができる。これにより、キャッシュサーバ１が取得した取得対象データが取得時点におけるデータベースサーバ４内のテーブルの内容に基づいて取得されたデータであることを保証できる。
【００５７】
また、ロック制御部４４は、処理要求受付部４１がデータ更新要求を受け付けた場合に、少なくともデータアクセス要求処理部４２による当該データ更新要求に応じたテーブルの更新が完了するまでの間、当該データ更新要求により指定されたテーブルを格納するデータベースサーバ４に対して、当該テーブルを含む元データに対する更新及び参照の双方を制限するライトロックを実行させるロック制御命令を出力してもよい。
【００５８】
さらにロック制御部４４は、データアクセス要求処理部４２がデータベースサーバ４に格納されたデータベースに対する参照又は更新のアクセスを実行し、その応答がデータベースサーバ４から所定時間以上ない場合に、デッドロックの発生の有無を検査するデッドロック検出処理を実行してもよい。
【００５９】
具体例として、ロック制御部４４は、データアクセス要求処理部４２によるデータベースサーバ４へのアクセスにおいてタイムアウトが発生した場合に、アクセス先のデータベースサーバ４が保持しているテーブルロック管理データを参照して、このタイムアウトがテーブルのロックによるものか否かを判定する。タイムアウトがテーブルのロックによるものである場合、さらに当該ロック制御を行ったトランザクション処理をトランザクション番号によって特定し、特定されたトランザクション処理が他のテーブルのロック解除を待っているか否かを判定する。このような処理を繰り返すことによって、ロック制御部４４は、デッドロックの発生を検出できる。デッドロックの発生を検出した場合、ロック制御部４４は、このデッドロックの発生原因となったトランザクション処理によるデータベースへのアクセスをトランザクション処理開始時点の状態に戻すロールバック処理を実行する。
【００６０】
以下、本実施形態に係るキャッシュサーバが実行する処理の流れのいくつかの例について、説明する。
【００６１】
まず、アプリケーションプロセス部３１からデータベースオープン要求が出力された場合にキャッシュサーバ１が実行する処理の例について、図９のフロー図に基づいて説明する。
【００６２】
この場合、まず処理要求受付部４１が、アプリケーションプロセス部３１から出力されたデータベースオープン要求を受け付ける（Ｓ１）。そして、処理要求受付部４１は、Ｓ１で受け付けたデータベースオープン要求によって要求されたデータベース（接続対象データベース）にアクセスするための通信先となる、データベースサーバ内で起動されているサーバプロセスを特定するサーバプロセス特定情報を、データベース管理データを参照して取得する（Ｓ２）。
【００６３】
ここで、データベース管理データは、例えば図１０に例示するように、各データベースサーバ４に格納されたデータベースを特定するデータベース特定情報（データベース名など）と、当該データベース特定情報によって特定されるデータベースへのアクセス要求を受け付けるサーバプロセス特定情報と、を関連づけるデータである。このデータベース管理データは、例えばデータ格納手段３に含まれるデータベースサーバ４のうち、予め定められた１台のデータベースサーバ４内に格納されている。このデータベース管理データには、データ格納手段３に含まれる全てのデータベースサーバ４に格納されているデータベースに関する情報が記録されているものとする。
【００６４】
例えばサーバプロセス特定情報は、データベース特定情報によって特定されるデータベースを格納しているデータベースサーバ４のネットワーク上の位置を特定する情報（ＩＰアドレスなど）と、データベースサーバ４内で実行される当該データベースへのアクセスを受け付けるサーバプロセスに対する通信先を特定する情報（当該プロセスにアクセスするためのポート番号など）と、の組み合わせからなる情報である。本実施形態において、各データベースサーバ４は、当該データベースサーバ４に格納された１又は複数のデータベースのいずれかに関連づけられ、キャッシュサーバ１から送信される当該関連づけられたデータベースに対するアクセス要求を受け付けるアクセス受付手段として、１又は複数のサーバプロセスを予め起動している。そして、このサーバプロセスへのアクセスを受け付けるためのポート番号の情報を、データベース管理データを保持するデータベースサーバ４に対して送信する。これにより、データベース管理データには、データ格納手段３に格納された各データベースに関連づけられたサーバプロセスを特定するサーバプロセス特定情報が登録されることとなる。
【００６５】
Ｓ２の処理でサーバプロセス特定情報を取得した処理要求受付部４１は、当該データベースオープン要求を出力したアプリケーションプロセス部３１を特定するアプリケーションプロセス特定情報と、接続対象データベースを特定するデータベース特定情報と、接続対象データベースについてＳ２で取得されたサーバプロセス特定情報と、を関連づけて、データベース接続情報として記憶部１２内に登録する（Ｓ３）。そして、データベース接続情報が登録されたことを示す情報を、データベースオープン要求に対する応答データとして出力する（Ｓ４）。この応答データは、データベースプロキシ部３２を介してアプリケーションプロセス部３１に対して送信される。
【００６６】
以上説明した処理によってキャッシュサーバ１内にデータベース接続情報が登録されることによって、アプリケーションプロセス部３１と接続対象データベースとの間の接続が確立される。これ以降データベースクローズ要求を受け付けるまで、データアクセス要求処理部４２は、アプリケーションプロセス部３１からデータアクセス要求が送信された場合には、このデータベース接続情報を参照することで、データアクセス要求によって指定されたテーブルを格納するデータベースにアクセスするための通信先となるサーバプロセスを特定できる。すなわち、データアクセス要求処理部４２は、各アプリケーションプロセス部２１から受け付けた、接続対象データベースに含まれるテーブルを参照範囲又は更新対象として指定するデータアクセス要求に応じて、当該アプリケーションプロセス部２１を特定するアプリケーションプロセス特定情報に関連づけられたサーバプロセス特定情報により特定されるサーバプロセスに対して、アクセス要求を送信する。特に処理要求受付部４１がデータ取得要求を受け付けた場合には、このデータ取得要求により要求された取得対象データとしてキャッシュデータを利用できないとキャッシュデータ管理部４３が判定する場合に、このようなサーバプロセスを介してデータベースへのアクセスを行う。
【００６７】
以上説明した処理の例によれば、予め各データベースサーバ４はキャッシュサーバ１との通信に必要なサーバプロセスを起動しているので、キャッシュサーバ１は、データベースオープン要求を受け付けた時点では、データベースサーバ４にサーバプロセスを起動させる制御を行うことはない。このため、データベースオープン要求のたびにデータベースサーバ４においてサーバプロセスの起動処理が発生することを避け、データベースサーバ４の処理負荷を減らすことができる。
【００６８】
また、キャッシュサーバ１は、同時期に複数のアプリケーションプロセス部３１から同一のデータベースに対する複数のデータアクセス要求を受け付けた場合であっても、当該各要求に応じたデータベースへのアクセスを、サーバプロセス特定情報によって特定される一つのサーバプロセスとの間の通信によって実現できる。すなわち、データアクセス要求処理部４２は、複数のアプリケーションプロセス部３１からのデータ取得要求に応じた同一のデータベースに対するアクセスを、当該データベースに対応するサーバプロセス特定情報により特定される１つのサーバプロセスを共用して実行することができる。これにより、予めコネクションプールとして同一のデータベースにアクセスするためのサーバプロセスを複数データベースサーバ４内に起動させる場合と異なり、コネクションプールの不足によってデータベースへのアクセスが待たされるような状態が生じないようにすることができる。
【００６９】
なお、本実施形態においてキャッシュサーバ１は、前述したようにアプリケーションプロセス部３１から受け付けたデータアクセス要求に応じて各データベースサーバ４に対して直接ロック制御を実行させるロック制御命令を出力する。これにより、一つのサーバプロセスに対して複数のデータアクセス要求に応じたアクセスが同時期に発生したとしても、データベースへのアクセスが競合することによるデータの不整合が生じないよう制御することができる。
【００７０】
次に、アプリケーションプロセス部３１からデータ取得要求が出力された場合にキャッシュサーバ１が実行する処理の例について、図１１のフロー図に基づいて説明する。
【００７１】
まず、処理要求受付部４１が、アプリケーションプロセス部３１から出力されたデータ取得要求を受け付ける（Ｓ１１）。Ｓ１１で受け付けたデータ取得要求は、前述したように、参照範囲のデータとして指定する１又は複数のテーブルを特定するテーブル特定情報と、指定されたテーブルから検索すべきデータの条件を指定する検索条件指定情報と、を含んでいる。
【００７２】
次に、データアクセス要求処理部４２の指示に基づいて、ロック制御部４４が、参照範囲として指定されたテーブルを格納するデータベースサーバ４に対して、当該テーブルに対するリードロックを実行させるロック制御命令を出力する（Ｓ１２）。
【００７３】
続いて、キャッシュデータ管理部４３が、Ｓ１１のデータ取得要求により要求された取得対象データをキャッシュデータとして記憶部１２に格納しているか否かを、キャッシュデータ管理データを参照して判定する（Ｓ１３）。
【００７４】
Ｓ１３の処理によりキャッシュデータを格納していると判定した場合、キャッシュデータ管理部４３は、さらに当該キャッシュデータをＳ１１で受け付けたデータ取得要求に応じた取得対象データとして利用可能かを判定する（Ｓ１４）。具体的には、前述したように、参照範囲として指定されたテーブルの最終更新日時や、当該テーブルに対する現在時点のロック状態に関する情報を取得することによって、キャッシュデータ取得後に当該テーブルに対して更新処理がなされていないかを判定する。Ｓ１４の処理によりキャッシュデータを取得対象データとして利用可能であると判定した場合、キャッシュデータ管理部４３は、当該キャッシュデータの格納位置を示す情報をデータアクセス要求処理部４２に出力する（Ｓ１５）。
【００７５】
一方、Ｓ１３の処理によりキャッシュデータを格納していないと判定された場合、又はＳ１４の処理により格納しているキャッシュデータを取得対象データとして利用できないと判定された場合、データアクセス要求処理部４２は、当該判定結果を受けて、データベースサーバ４に格納されている指定されたテーブルを参照するアクセスを実行する（Ｓ１６）。このとき、データアクセス要求処理部４２は、前述したＳ３の処理によって記憶部１２に格納されているデータベース接続情報を参照して、指定されたテーブルへのアクセスの通信先を特定する。このアクセスに応じて、データベースサーバ４は、Ｓ１１で受け付けたデータ取得要求において指定された検索条件に基づいて指定されたテーブルの検索を行い、検索結果をキャッシュサーバ１に対して送信する。
【００７６】
キャッシュデータ管理部４３は、この検索結果のデータを、所定のデータサイズに分割して、キャッシュデータとして記憶部１２に格納する（Ｓ１７）。そして、その格納位置を示す情報をデータアクセス要求処理部４２に出力する（Ｓ１８）。
【００７７】
Ｓ１５又はＳ１８の処理によって、キャッシュデータとして格納された取得対象データの格納位置を取得したデータアクセス要求処理部４２は、Ｓ１１で受け付けたデータ取得要求に対して、取得対象データの取得が完了した旨の応答データを出力する（Ｓ１９）。この応答データは、キャッシュサーバ１からアプリケーションサーバ２に送信され、データベースプロキシ部３２を介してＳ１１のデータ取得要求を出力したアプリケーションプロセス部３１に通知される。
【００７８】
以上説明した処理によって、キャッシュサーバ１は、データ取得要求により要求された取得対象データをキャッシュデータとして保持していれば、データベースサーバ４にアクセスすることなく取得対象データの取得を完了できる。また、キャッシュデータの有無に関わらず、参照範囲として指定されたテーブルに対してリードロック制御を行うことによって、少なくとも取得対象データの取得完了まで当該テーブルが更新されないように制御できる。これにより、取得されたデータが最新のテーブル内容に基づくものであることを保証できる。
【００７９】
次に、図１１のフローに示した処理によってキャッシュサーバ１によるデータ取得要求に応じた処理が完了した後、アプリケーションプロセス部３１から取得結果送信要求が出力された場合にキャッシュサーバ１が実行する処理の例について、図１２のフロー図に基づいて説明する。
【００８０】
まず、取得結果送信要求によって送信が要求される取得結果のデータについて説明する。図１１のフローによってキャッシュサーバ１が取得した取得対象データは、前述したように、所定のデータサイズに分割された状態でキャッシュデータとして記憶部１２に格納されている。この分割された各キャッシュデータを、以下ではページデータという。取得対象データは１又は複数のページデータによって構成され、取得対象データ内の各ページデータには、当該ページデータを特定するページ番号が割り当てられている。図１３は、このようなキャッシュデータのデータ構造の一例を示す説明図である。
【００８１】
この場合、まず処理要求受付部４１が、アプリケーションプロセス部３１から出力された取得結果送信要求を受け付ける（Ｓ２１）。この取得結果送信要求には、データ取得要求によって取得された取得対象データのうち、アプリケーションプロセス部３１が要求するページデータを指定するページ番号情報が含まれている。
【００８２】
キャッシュデータ管理部４３は、データアクセス要求処理部４２の指示に基づいて、Ｓ２１で受け付けた取得結果送信要求により指定されたページデータを、記憶部１２から読み出す（Ｓ２２）。Ｓ２２で読み出されたページデータは、処理要求受付部４１によって、アプリケーションサーバ２に対して送信される（Ｓ２３）。これにより、アプリケーションプロセス部３１は、要求したページデータを取得できる。
【００８３】
以上説明した図１２のフローに示す処理を繰り返すことによって、例えばアプリケーションプロセス部３１は、データ取得要求に応じて取得された取得対象データを順に読み出して、当該読み出したデータに応じた各種の処理を実行できる。この場合において、ページデータは予めアプリケーションプロセス部３１による処理に適したデータサイズでキャッシュデータとして記憶部１２に格納されているため、キャッシュサーバ１やデータベースプロキシ部３２は改めてキャッシュデータを分割する処理を行うことなく、アプリケーションプロセス部３１に要求されたデータを送信できる。
【００８４】
次に、アプリケーションプロセス部３１からデータ更新要求が出力された場合にキャッシュサーバ１が実行する処理の例について、図１４のフロー図に基づいて説明する。
【００８５】
まず、処理要求受付部４１が、アプリケーションプロセス部３１から出力されたデータ更新要求を受け付ける（Ｓ３１）。Ｓ３１で受け付けたデータ更新要求は、更新対象となる１又は複数のテーブルを特定するテーブル特定情報と、当該テーブルに対する更新内容を示す情報と、を含んでいる。
【００８６】
次に、データアクセス要求処理部４２の指示に基づいて、ロック制御部４４が、更新対象として指定されたテーブルを格納するデータベースサーバ４に対して、当該テーブルに対するライトロックを実行させるロック制御命令を出力する（Ｓ３２）。
【００８７】
続いて、キャッシュデータ管理部４３が、更新対象として指定されたテーブルを参照してこれまでに取得されたキャッシュデータを破棄する（Ｓ３３）。これから実行する更新処理によって、記憶部１２に格納されたキャッシュデータは古いデータ内容に基づくものになってしまうためである。
【００８８】
次に、データアクセス要求処理部４２は、データベースサーバ４内の更新対象として指定されたテーブルに対して、指定された更新を行うアクセスを実行する（Ｓ３４）。なお、データアクセス要求処理部４２は、この場合も前述したＳ１６の処理の場合と同様に、データベース接続情報を参照して通信先を特定できる。このアクセスに応じて、データベースサーバ４は、指定されたテーブルの更新を行う。
【００８９】
さらに、キャッシュデータ管理部４３は、データベースサーバ４に格納されたテーブル更新管理データ内における、更新対象として指定されたテーブルの最終更新日時の情報を、現在日時を示す情報に更新する（Ｓ３５）。
【００９０】
その後、データアクセス要求処理部４２は、Ｓ３１で受け付けたデータ更新要求に対して、データの更新が完了した旨の応答データを出力する（Ｓ３６）。この応答データは、データ取得要求を受け付けた場合と同様に、アプリケーションプロセス部３１に通知される。
【００９１】
以上説明した本実施の形態によれば、複数のキャッシュサーバ１からデータベースサーバ４内のデータが参照又は更新される場合であっても、各キャッシュサーバ１は格納しているキャッシュデータを条件に応じて利用しつつ、アプリケーションサーバ２の要求に応じて取得するデータがデータベースサーバ４内における最新のデータに基づくものであることを保証できる。これにより、アプリケーションサーバ１は、キャッシュデータの有無やキャッシュデータの利用可否を気にすることなく、キャッシュサーバ１から取得するデータを用いてデータベースサーバ４に格納されたデータに基づくトランザクション処理を実行できる。
【００９２】
また、本発明は上記実施形態に限定されるものではなく、種々の変形実施が可能である。例えば、本実施形態においてアプリケーションサーバ２が実行することとした機能の少なくとも一部は、通信ネットワークを介して接続されたウェブサーバ等の他のサーバコンピュータにより実現されてもよい。
【００９３】
また、以上の説明においては、テーブルロック管理データやテーブル更新管理データは、１又は複数のデータベースサーバ４のそれぞれに格納されて、当該データベースサーバ４に格納されたテーブルの情報を管理するものであるとしたが、これらの情報は一元管理されてもよい。例えば、データベース管理データと同様に、１又は複数のデータベースサーバ４のうち、所定の１台のデータベースサーバ４にこれらのデータが格納されることとしてもよい。こうすれば、キャッシュサーバ１は、常にこの所定のデータベースサーバ４に格納されたデータを参照することで、データ格納手段３に格納された全てのテーブルの最終更新日時やテーブルのロック状態に関する情報を取得できる。
【００９４】
また、以上の説明においては、データ取得要求により指定される参照範囲は、１又は複数のテーブルであることとしたが、これに限らず、データベース単位で参照範囲が指定されることとしてもよい。あるいは、１つのテーブルに含まれる一部のレコードが参照範囲として指定されることとしてもよい。これに応じて、ロック制御部４４がデータベースサーバ４に実行させるロック制御も、データベース単位やレコード単位で実行されることとしてもよい。また、キャッシュデータ管理部４３によるキャッシュデータの利用可否の判定に用いられるデータベースサーバ４内のデータの最終更新日時の情報も、データベース単位やレコード単位で記録されることとしてもよい。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施の形態に係るコンピュータシステムの構成例を示すシステム構成図である。
【図２】アプリケーションサーバの構成例を示す構成図である。
【図３】アプリケーションサーバの機能例を示す機能ブロック図である。
【図４】キャッシュサーバの構成例を示す構成図である。
【図５】キャッシュサーバの機能例を示す機能ブロック図である。
【図６】キャッシュデータ管理データの一例を示す説明図である。
【図７】テーブル更新管理データの一例を示す説明図である。
【図８】テーブルロック管理データの一例を示す説明図である。
【図９】データベースオープン要求受け付け時にキャッシュサーバが実行する処理の一例を示すフロー図である。
【図１０】データベース管理データの一例を示す説明図である。
【図１１】データ取得要求受け付け時にキャッシュサーバが実行する処理の一例を示すフロー図である。
【図１２】取得結果送信要求受け付け時にキャッシュサーバが実行する処理の一例を示すフロー図である。
【図１３】ページデータに分割されたキャッシュデータの一例を示す説明図である。
【図１４】データ更新要求受け付け時にキャッシュサーバが実行する処理の一例を示すフロー図である。
【図１５】キャッシュサーバを含むコンピュータシステムの構成例を示すシステム構成図である。
【符号の説明】
【００９６】
１  キャッシュサーバ、２  アプリケーションサーバ、３  データ格納手段、４  データベースサーバ、５  ユーザ端末、１１，２１  制御部、１２  記憶部、１３，２５  通信部、２２  メインプロセッサ、２３  サブプロセッサ、２４  メインメモリ、３１  アプリケーションプロセス部、３２  データベースプロキシ部、４１  処理要求受付部、４２  データアクセス要求処理部、４３  キャッシュデータ管理部、４４  ロック制御部。
【図１】
2008146380.tif 000003
【図２】
2008146380.tif 000004
【図３】
2008146380.tif 000005
【図４】
2008146380.tif 000006
【図５】
2008146380.tif 000007
【図６】
2008146380.tif 000008
【図７】
2008146380.tif 000009
【図８】
2008146380.tif 000010
【図９】
2008146380.tif 000011
【図１０】
2008146380.tif 000012
【図１１】
2008146380.tif 000013
【図１２】
2008146380.tif 000014
【図１３】
2008146380.tif 000015
【図１４】
2008146380.tif 000016
【図１５】
2008146380.tif 000017