(57)【要約】【課題】  従来技術に関する問題点は、キャッシュエントリを無効化するために使用することができるデータベーステーブル変更情報の登録および取り出しを行うためのシステム、方法、コンピュータプログラム製品、およびデータ構造を対象とする本発明の原理により克服される。【解決手段】  サーバは、データベース内のデータテーブルのコンテンツを入れられるＷｅｂ応答を供給する。サーバは、コンテンツ（データテーブルからのコンテンツを含む）を格納することができるキャッシュ（例えば、システムメモリ内の）を保持し、後でクライアントのＷｅｂ要求に応じるため同じコンテンツを供給する際の効率を高めることができる。サーバは、データテーブルに変更がないか監視し、特定のデータテーブルに変更があった場合、特定のデータテーブルに依存するキャッシュエントリを無効化する。【選択図】  図１
2005018787.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のデータテーブルを有するデータベースにアクセスするコンピュータシステムにおいて、前記データテーブルのうちの１つのコンテンツが変更されたときにテーブル変更通知を供給するようにデータベースを構成する方法であって、
コンテンツの変更が監視されるデータテーブルを選択する動作と、
前記選択されたデータテーブルに対応するレコードを変更通知テーブルに挿入する動作であって、前記対応するレコードは前記選択されたデータテーブルのバージョン情報を含む動作と、
前記選択されたデータテーブルにトリガを割り当てる動作であって、前記トリガは、前記選択されたデータテーブルのコンテンツが変更されたときに、前記変更通知テーブルにおいて前記選択されたデータテーブルの前記バージョン情報を更新させる動作と、
前記選択されたデータテーブルのコンテンツが変更されたことに応答して、前記変更通知テーブルの前記バージョン情報を更新する動作と、
前記更新されたバージョン情報を要求側サーバコンピュータシステムに返し、前記更新されたバージョン情報を使用して前記サーバコンピュータシステムのキャッシュエントリのコンテンツの有効性を決定することができるようにする動作とを備えることを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、前記コンテンツの変更が監視されるデータテーブルを選択する動作は、コンテンツの変更が監視されるデータテーブルを選択するユーザ入力を受信する動作を備えることを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、前記コンテンツの変更が監視されるデータテーブルを選択する動作は、受信したＷｅｂ要求に応答して、前記コンピュータシステムがデータテーブルを自動的に選択する動作を備えることを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、前記選択されたデータテーブルに対応するレコードを変更通知テーブルに挿入する動作は、ユーザ入力に応答して前記レコードを挿入する動作を備えることを特徴とする方法。
【請求項５】
請求項１に記載の方法であって、前記選択されたデータテーブルに対応するレコードを変更通知テーブルに挿入する動作は、Ｗｅｂ要求に応答して、前記コンピュータシステムが前記レコードを自動的に挿入する動作を備えることを特徴とする方法。
【請求項６】
請求項１に記載の方法であって、前記選択されたデータテーブルに対応するレコードを変更通知テーブルに挿入する動作は、前記レコードをＳＱＬテーブルに挿入する動作を備えることを特徴とする方法。
【請求項７】
請求項１に記載の方法であって、前記選択されたデータテーブルにトリガを割り当てる動作は、前記選択されたデータテーブルにトリガを割り当てることを指令するユーザ入力を受信する動作を備えることを特徴とする方法。
【請求項８】
請求項１に記載の方法であって、前記選択されたデータテーブルにトリガを割り当てる動作は、前記選択されたテーブルに含まれるコンテンツに対するＷｅｂ要求を受信したことに応答して、前記コンピュータシステムが前記選択されたテーブルにトリガを自動的に割り当てる動作を備えることを特徴とする方法。
【請求項９】
請求項１に記載の方法であって、前記選択されたデータテーブルにトリガを割り当てる動作は、前記選択されたデータテーブル内のコンテンツが変更されたことに応答して実行された場合に、前記テーブル変更通知テーブルの対応する変更ＩＤを更新するトリガを割り当てる動作を備えることを特徴とする方法。
【請求項１０】
請求項１に記載の方法であって、前記選択されたデータテーブルのコンテンツが変更されたことに応答して前記変更通知テーブルの前記バージョン情報を更新する動作は、前記トリガを実行する動作を備えることを特徴とする方法。
【請求項１１】
請求項１に記載の方法であって、前記更新されたバージョン情報を要求側サーバコンピュータシステムに返す動作は、前記選択されたデータテーブルのコンテンツを含むＷｅｂ応答を構築する要求側サーバコンピュータシステムに前記更新されたバージョン情報を返す動作を備えることを特徴とする方法。
【請求項１２】
要求側クライアントコンピュータシステムにＷｅｂ応答を供給するサーバコンピュータシステムにおける方法であって、前記Ｗｅｂ応答は、データベースの１つ以上のデータテーブルからのコンテンツを含む可能性があり、前記サーバコンピュータシステムは、データテーブルからすでに受け取っているキャッシュされているコンテンツの一部およびキャッシュされているコンテンツに対応するキャッシュされているバージョン情報を格納するキャッシュロケーションを含み、前記方法は、前記キャッシュされているコンテンツの一部を無効化する方法であり、前記方法は、
前記１つ以上のデータテーブルに対応するバージョン情報について変更通知テーブルに問い合わせる動作と、
前記サーバコンピュータシステムが前記変更通知テーブルに最後に問合せをした以降に変更された少なくとも１つのデータテーブルのリストを受け取る動作であって、前記少なくとも１つのデータテーブルのリストは、前記少なくとも１つのデータテーブルの現在のバージョン情報を含む動作と、
前記キャッシュされているコンテンツが前記少なくとも１つのデータテーブルに依存することを決定する動作と、
前記現在のバージョン情報を前記キャッシュされているバージョン情報と比較する動作と、
前記比較の結果に基づき、前記キャッシュロケーションから、前記キャッシュされているコンテンツの一部を削除する動作とを備えることを特徴とする方法。
【請求項１３】
請求項１２に記載の方法であって、前記１つ以上のデータテーブルに対応するバージョン情報について変更通知テーブルに問い合わせる動作は、前記データベースに問合せを送信する動作を備えることを特徴とする方法。
【請求項１４】
請求項１３に記載の方法であって、前記データベースに問合せを送信する前記動作は、キャッシュされているバージョン情報を指定し、前記キャッシュされている情報ともはや一致していないテーブルおよびバージョン情報のみを選択する問合せを送信する動作を備えることを特徴とする方法。
【請求項１５】
請求項１４に記載の方法であって、
どのテーブルバージョン情報も変更されていない結果として空の結果を受け取る動作をさらに備えることを特徴とする方法。
【請求項１６】
請求項１４に記載の方法であって、前記データベースに問合せを送信する動作は、前記要求されたテーブルバージョン情報に変更が加えられるまでデータベース内でブロックする問合せを送信する動作を備えることを特徴とする方法。
【請求項１７】
請求項１６に記載の方法であって、前記要求されたテーブルバージョン情報に変更が加えられるまで前記データベース内でブロックする問合せを送信する動作は、前記要求されたテーブルバージョン情報に変更が加えられたことを検出するまで、前記サーバコンピュータシステム内の対応するスレッドをブロックする問合せを送信する動作を備えることを特徴とする方法。
【請求項１８】
請求項１６に記載の方法であって、前記要求されたテーブルバージョン情報に変更が加えられるまで前記データベース内でブロックする問合せを送信する動作は、前記要求されたテーブルバージョン情報に変更が加えられたことが検出された場合に呼び出されるように構成されたコールバックを前記サーバコンピュータシステムに登録する動作を備えることを特徴とする方法。
【請求項１９】
請求項１３に記載の方法であって、前記データベースに問合せを送信する動作は、前記サーバコンピュータシステムにより監視されているすべてのテーブルについてのバージョン情報を要求する問合せを送信する動作を備えることを特徴とする方法。
【請求項２０】
請求項１９に記載の方法であって、
前記すべての監視されているテーブルについての前記要求されたバージョン情報を受け取る動作と、
前記サーバコンピュータシステムが受信したバージョン情報を前記サーバコンピュータシステムに保持されているバージョン情報と比較する動作とをさらに備えることを特徴とする方法。
【請求項２１】
請求項１２に記載の方法であって、前記１つ以上のデータテーブルに対応するバージョン情報について変更通知テーブルに問い合わせる動作は、前記１つ以上のデータテーブルに対応する変更ＩＤについて変更通知テーブルに問い合わせる動作を備えることを特徴とする方法。
【請求項２２】
請求項１２に記載の方法であって、前記サーバコンピュータシステムが前記変更通知テーブルに最後に問い合わせた以降に変更された少なくとも１つのデータテーブルのリストを受け取る動作は、１つ以上のバージョン情報データ構造のリストを受け取る動作を備えることを特徴とする方法。
【請求項２３】
請求項１２に記載の方法であって、前記キャッシュされているコンテンツが前記少なくとも１つのデータテーブルに依存していると決定する動作は、キャッシュエントリがキーエントリに依存していると決定する動作を備え、前記キーエントリの無効化により前記キャッシュエントリが自動的に無効化されるように、前記キーエントリがデータテーブルに依存することを特徴とする方法。
【請求項２４】
請求項１２に記載の方法であって、前記現在のバージョン情報を前記キャッシュされているバージョン情報と比較する動作は、受け取った変更ＩＤをキャッシュされている変更ＩＤと比較する動作を備えることを特徴とする方法。
【請求項２５】
請求項１２に記載の方法であって、前記比較結果に基づき前記キャッシュロケーションから、前記キャッシュされているコンテンツの一部を削除する動作は、キーエントリの無効化に応答して、依存するキャッシュエントリを自動的に無効化する動作を備えることを特徴とする方法。
【請求項２６】
要求側クライアントコンピュータシステムにＷｅｂ応答を供給するサーバコンピュータシステムにおける方法であって、前記Ｗｅｂ応答は、データベースの１つ以上のデータテーブルからのコンテンツを含む可能性があり、前記サーバコンピュータシステムは、データテーブルからすでに受け取っているキャッシュされているコンテンツの一部およびキャッシュされているデータに対応するキャッシュされているバージョン情報を格納するキャッシュロケーションを含み、前記方法は、要求側クライアントコンピュータシステムに提供するコンテンツにアクセスする方法であり、前記方法は、
クライアントコンピュータシステムからＷｅｂ要求を受信する動作であって、前記Ｗｅｂ要求は、データテーブルに含まれる要求されたコンテンツを含めるＷｅｂ応答の配信を要求し、前記データテーブルは、前記データテーブルに格納されているコンテンツを変更することができる他のアプリケーションから一般的にアクセス可能であり、当該変更には前記要求されたコンテンツの変更が含まれる動作と、
前記Ｗｅｂ応答に含めるコンテンツの少なくとも一部が前記サーバコンピュータシステムに現在キャッシュされていないことを決定する動作と、
前記データテーブルからの前記要求されたコンテンツにアクセスする動作と、
前記Ｗｅｂ応答を構築する動作であって、当該Ｗｅｂ応答は前記要求されたコンテンツを含む動作と、
前記Ｗｅｂ応答の構築時に実行されるコマンドに基づき、前記構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる動作であって、前記データベースキャッシュ依存関係が、前記構築されたＷｅｂ応答の前記少なくとも一部が前記データテーブルに依存していることを示す動作と、
前記構築されたＷｅｂ応答の前記少なくとも一部を、前記サーバコンピュータシステムにおけるキャッシュロケーションにキャッシュする動作と、
前記Ｗｅｂ要求に応答して、前記構築されたＷｅｂ応答を前記クライアントコンピュータシステムに配信する動作とを備えることを特徴とする方法。
【請求項２７】
請求項２６に記載の方法であって、前記クライアントコンピュータシステムからＷｅｂ要求を受信する動作は、対応するＵＲＬにアクセスする前記クライアントコンピュータシステムにおけるブラウザの結果としてＨＴＴＰ要求を受信する動作を備えることを特徴とする方法。
【請求項２８】
請求項２６に記載の方法であって、前記Ｗｅｂ応答の構築時に実行されるコマンドに基づき前記構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる動作は、前記構築されたＷｅｂ応答を前記データベースのデータテーブルに依存させるディレクティブを実行する動作を備えることを特徴とする方法。
【請求項２９】
請求項２６に記載の方法であって、前記Ｗｅｂ応答の構築時に実行されるコマンドに基づき前記構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる動作は、データテーブルからのコンテンツを前記データテーブルに依存させるスクリプトのコンピュータ実行可能命令を実行する動作を備えることを特徴とする方法。
【請求項３０】
請求項２６に記載の方法であって、前記Ｗｅｂ応答の構築時に実行されるコマンドに基づき前記構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる動作は、キーエントリに依存するようにキャッシュエントリを割り当てる動作であって、前記キーエントリが無効化されたときに前記キャッシュエントリが自動的に無効化されるように前記キーエントリが前記データテーブルに依存する動作を備えることを特徴とする方法。
【請求項３１】
請求項２６に記載の方法であって、前記構築されたＷｅｂ応答の前記少なくとも一部を、前記サーバコンピュータシステムにおけるキャッシュロケーションにキャッシュする動作は、前記Ｗｅｂ応答全体をキャッシュする動作を備えることを特徴とする方法。
【請求項３２】
請求項３１に記載の方法であって、前記Ｗｅｂ応答全体をキャッシュする動作は、前記Ｗｅｂ応答全体を第２の下位レベルキャッシュロケーションにプッシュする動作を備えることを特徴とする方法。
【請求項３３】
請求項３２に記載の方法であって、
前記Ｗｅｂ応答が無効化されるときに前記サーバコンピュータが前記第２の下位層のキャッシュロケーションから前記Ｗｅｂ応答全体を削除する動作をさらに備えることを特徴とする方法。
【請求項３４】
請求項３２に記載の方法であって、前記Ｗｅｂ応答全体を第２の下位レベルのキャッシュロケーションにプッシュする動作は、前記Ｗｅｂ応答全体を最適化されたシステム応答キャッシュにプッシュする動作を備えることを特徴とする方法。
【請求項３５】
要求側クライアントコンピュータシステムにＷｅｂ応答を供給するサーバコンピュータシステムにおける方法であって、前記Ｗｅｂ応答は、データベースの１つ以上のデータテーブルからのコンテンツを含む可能性があり、前記サーバコンピュータシステムは、データテーブルからすでに受け取っているキャッシュされているコンテンツの一部およびキャッシュされているデータに対応するキャッシュされているバージョン情報を格納するキャッシュロケーションを含み、前記方法は、要求側クライアントコンピュータシステムに提供するコンテンツにアクセスする方法であり、前記方法は、
クライアントコンピュータシステムからＷｅｂ要求を受信する動作であって、前記Ｗｅｂ要求は、データテーブルに含まれる要求されたコンテンツを含めるＷｅｂ応答の配信を要求し、前記データテーブルは、前記データテーブルに格納されているコンテンツを変更することができる他のアプリケーションから一般的にアクセス可能であり、当該変更には前記要求されたコンテンツの変更が含まれる動作と、
前記Ｗｅｂ応答に含めるコンテンツの少なくとも一部が前記サーバコンピュータシステムに現在キャッシュされていないことを決定する動作と、
前記データテーブルからの前記要求されたコンテンツにアクセスする動作と、
前記Ｗｅｂ応答を構築する動作であって、前記構築されたＷｅｂ応答は前記要求されたコンテンツを含む動作と、
前記要求されたコンテンツが効率よくアクセスされ、後続のＷｅｂ要求に応じられるように前記要求されたコンテンツを格納するステップと、
前記Ｗｅｂ要求に応答して、前記構築されたＷｅｂ応答を前記クライアントコンピュータシステムに配信する動作とを備えることを特徴とする方法。
【請求項３６】
１つ以上のデータテーブル有するデータベースにアクセスするコンピュータシステムで使用されるコンピュータプログラムであって、当該コンピュータプログラムは、前記データテーブルのうちの１つの中のデータが変更されたときにテーブル変更通知を送るように前記データベースを構成する方法を実現し、前記コンピュータプログラムはコンピュータ実行可能命令を備え、当該コンピュータ実行可能命令は、プロセッサによって実行されると、前記コンピュータシステムに、
データ変更が監視されるデータテーブルを選択する動作と、
前記選択されたデータテーブルに対応するレコードを変更通知テーブルに挿入する動作であって、前記対応するレコードは前記選択されたデータテーブルのバージョン情報を含む動作と、
前記選択されたデータテーブルにトリガを割り当てる動作であって、前記トリガは、前記選択されたデータテーブルのコンテンツが変更されたときに、前記変更通知テーブルにおいて前記選択されたデータテーブルの前記バージョン情報を更新させる動作と、
前記選択されたデータテーブルのデータが変更されたことに応答して、前記変更通知テーブルの前記バージョン情報を更新する動作と、
前記更新されたバージョン情報を要求側サーバコンピュータシステムに送信し、前記更新されたバージョン情報を使用して前記サーバコンピュータシステムのキャッシュエントリのデータの有効性を決定することができるようにする動作とを実行させることを特徴とするコンピュータプログラム。
【請求項３７】
請求項３６に記載のコンピュータプログラムを格納した１つ以上のコンピュータ可読媒体であって、当該１つ以上のコンピュータ可読媒体は物理媒体であることを特徴とするコンピュータ可読媒体。
【請求項３８】
請求項３６に記載のコンピュータプログラムを格納した１つ以上のコンピュータ可読媒体であって、当該１つ以上のコンピュータ可読媒体はシステムメモリを含むことを特徴とするコンピュータ可読媒体。
【請求項３９】
要求側クライアントコンピュータシステムにＷｅｂ応答を供給するサーバコンピュータシステムで使用されるコンピュータプログラムであって、前記Ｗｅｂ応答は、データベースの１つ以上のデータテーブルからのコンテンツを含む可能性があり、前記サーバコンピュータシステムは、データテーブルからすでに受け取っているキャッシュされているコンテンツの一部およびキャッシュされているコンテンツに対応するキャッシュされているバージョン情報を格納するキャッシュロケーションを含み、前記コンピュータプログラムは、前記キャッシュされているコンテンツの一部を無効化する方法を実現し、前記コンピュータプログラムは、前記コンピュータプログラムはコンピュータ実行可能命令を備え、当該コンピュータ実行可能命令は、プロセッサによって実行されると、前記サーバコンピュータシステムに、
前記１つ以上のデータテーブルに対応するバージョン情報について変更通知テーブルに問い合わせる動作と、
前記サーバコンピュータシステムが前記変更通知テーブルに最後に問合せをした以降に変更された少なくとも１つのデータテーブルのリストを受け取る動作であって、前記少なくとも１つのデータテーブルのリストは、前記少なくとも１つのデータテーブルの現在のバージョン情報を含む動作と、
前記キャッシュされているコンテンツが前記少なくとも１つのデータテーブルに依存することを決定する動作と、
前記現在のバージョン情報を前記キャッシュされているバージョン情報と比較する動作と、
前記比較の結果に基づき、前記キャッシュロケーションから、前記キャッシュされているコンテンツの一部を削除する動作とを実行させることを特徴とするコンピュータプログラム。
【請求項４０】
請求項３９に記載のコンピュータプログラムを格納した１つ以上のコンピュータ可読媒体であって、当該１つ以上のコンピュータ可読媒体は物理媒体であることを特徴とするコンピュータ可読媒体。
【請求項４１】
請求項３９に記載のコンピュータプログラムを格納した１つ以上のコンピュータ可読媒体であって、当該１つ以上のコンピュータ可読媒体はシステムメモリを含むことを特徴とするコンピュータ可読媒体。
【請求項４２】
要求側クライアントコンピュータシステムにＷｅｂ応答を供給するサーバコンピュータシステムで使用されるコンピュータプログラムであって、前記Ｗｅｂ応答は、データベースの１つ以上のデータテーブルからのコンテンツを含む可能性があり、前記サーバコンピュータシステムは、データテーブルからすでに受け取っているキャッシュされているコンテンツの一部およびキャッシュされているデータに対応するキャッシュされているバージョン情報を格納するキャッシュロケーションを含み、前記コンピュータプログラムは、要求側クライアントコンピュータシステムに提供するコンテンツにアクセスする方法を実現し、前記コンピュータプログラムはコンピュータ実行可能命令を備え、当該コンピュータ実行可能命令は、プロセッサによって実行されると、前記サーバコンピュータシステムに、
クライアントコンピュータシステムからＷｅｂ要求を受信する動作であって、前記Ｗｅｂ要求は、データテーブルに含まれる要求されたコンテンツを含めるＷｅｂ応答の配信を要求し、前記データテーブルは、前記データテーブルに格納されているコンテンツを変更することができる他のアプリケーションから一般的にアクセス可能であり、当該変更には前記要求されたコンテンツの変更が含まれる動作と、
前記Ｗｅｂ応答に含めるコンテンツの少なくとも一部が前記サーバコンピュータシステムに現在キャッシュされていないことを決定する動作と、
前記データテーブルからの前記要求されたコンテンツにアクセスする動作と、
前記Ｗｅｂ応答を構築する動作であって、当該Ｗｅｂ応答は前記要求されたコンテンツを含む動作と、
前記Ｗｅｂ応答の構築時に実行されるコマンドに基づき、前記構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる動作であって、前記データベースキャッシュ依存関係が、前記構築されたＷｅｂ応答の前記少なくとも一部が前記データテーブルに依存していることを示す動作と、
前記構築されたＷｅｂ応答を前記クライアントコンピュータシステムに配信する前に、前記構築されたＷｅｂ応答の前記少なくとも一部を、前記サーバコンピュータシステムにおけるキャッシュロケーションにキャッシュする動作と、
前記Ｗｅｂ要求に応答して、前記構築されたＷｅｂ応答を前記クライアントコンピュータシステムに配信する動作とを実行させることを特徴とするコンピュータプログラム。
【請求項４３】
請求項４２に記載のコンピュータプログラムを格納した１つ以上のコンピュータ可読媒体であって、当該１つ以上のコンピュータ可読媒体は物理媒体であることを特徴とするコンピュータ可読媒体。
【請求項４４】
請求項４２に記載のコンピュータプログラムを格納した１つ以上のコンピュータ可読媒体であって、当該１つ以上のコンピュータ可読媒体はシステムメモリを含むことを特徴とするコンピュータ可読媒体。
【請求項４５】
請求項４２に記載のコンピュータプログラムであって、プロセッサによって実行されると、前記サーバコンピュータシステムに、前記Ｗｅｂ応答の構築時に実行されるコマンドに基づき前記構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる動作を行わせるコンピュータ実行可能命令は、プロセッサによって実行されると、前記サーバコンピュータシステムに、データベースキャッシュ依存関係を前記構築されたＷｅｂ応答全体に割り当てる動作を行わせるディレクティブを備えることを特徴とするコンピュータプログラム。
【請求項４６】
請求項４２に記載のコンピュータプログラムであって、プロセッサによって実行されると、前記サーバコンピュータシステムに、前記Ｗｅｂ応答の構築時に実行されるコマンドに基づき前記構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる動作を行わせるコンピュータ実行可能命令は、プロセッサによって実行されると、前記サーバコンピュータシステムに、データベースキャッシュ依存関係をデータテーブルから取り出されたコンテンツに割り当てる動作を行わせるスクリプトのコンピュータ実行可能命令を備えることを特徴とするコンピュータプログラム。
【請求項４７】
データテーブルのバージョン情報を表すデータ構造であって、
データテーブルを識別するために使用することができるテーブルＩＤを表すテーブルＩＤフィールドと、
前記テーブルＩＤフィールド内で表されているテーブルＩＤにより識別されるデータテーブルの変更ＩＤを表す変更ＩＤフィールドであって、前記変更ＩＤは、キャッシュエントリを無効化するかどうかを決定するために使用される変更ＩＤフィールドとを備えることを特徴とするデータ構造。
【請求項４８】
請求項４７に記載のデータテーブルのバージョン情報を表すデータ構造であって、
前記テーブルＩＤフィールドで表されている前記テーブルＩＤにより識別される前記データテーブルのバージョン情報を表す前記データ構造が変更通知テーブルに挿入されたときの日付を表す日付フィールドをさらに備えることを特徴とするデータ構造。
【請求項４９】
請求項４７に記載のデータテーブルのバージョン情報を表すデータ構造であって、
前記テーブルＩＤフィールドで表される前記テーブルＩＤにより識別される前記データテーブルに依存するページコンテンツを表すページコンテンツフィールドをさらに備えることを特徴とするデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュされているコンテンツを管理することに関する。具体的には、本発明は、キャッシュエントリの無効化に使用できるデータベーステーブル変更通知（ｄａｔａｂａｓｅ  ｔａｂｌｅ  ｃｈａｎｇｅ  ｎｏｔｉｆｉｃａｔｉｏｎｓ）の登録および受信に関する。
【背景技術】
【０００２】
コンピュータシステムおよび関係する技術は、社会の多くの側面に影響を及ぼしている。実際、コンピュータシステムを使って情報を処理できるようになったため、われわれの生活様式や仕事のやり方が変化した。コンピュータシステムが出現する以前には手作業で行われていた多くの作業（例えば、文書処理、日程作成、およびデータベース管理）を、コンピュータシステムで実行するのが現在では一般的になっている。最近では、コンピュータシステムを相互に結合して有線と無線の両方を利用したコンピュータネットワークを形成し、このネットワークを介してコンピュータシステムが電子的情報伝達を行い、データを共有することができるようになっている。そのため、コンピュータシステムで実行される多くの作業（例えば、音声通信、電子メールのアクセス、電子会議、Ｗｅｂブラウズ）は、有線および／または無線コンピュータネットワークを介した１つ以上の他のコンピュータシステムとの電子的情報の伝達を含む。
【０００３】
とりわけ、ワールドワイドウェブ（「ＷＷＷ」）は、情報交換するための重要なメカニズムとなっている。一般に、ＷＷＷ上のコンテンツは、クライアント／サーバモデルでアクセスされる。クライアントコンピュータシステム側の「Ｗｅｂブラウザ」は、サーバコンピュータシステム側の「Ｗｅｂサーバ」により保持されているコンテンツにアクセスする要求を送信する。適切であれば、Ｗｅｂサーバは、その後、要求されたコンテンツをＷｅｂブラウザに供給する。
【０００４】
Ｗｅｂブラウズからコンテンツを利用できるようにする１つの手段として、Ｗｅｂ開発者が、例えば、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）などでハードコーディングされた多数のコンピュータ可読命令を含む静的Ｗｅｂページを作成する方法がある。こうして得られた静的Ｗｅｂページは、Ｗｅｂサーバからアクセス可能な場所（例えば、サーバコンピュータシステム、ネットワーク接続可能データベースなど）に格納される。Ｗｅｂブラウザからの要求に対する応答として、Ｗｅｂサーバは静的ＷｅｂページをＷｅｂブラウザに転送することができる（例えば、ユーザからの入力によりＷｅｂブラウザが静的Ｗｅｂページに対応するＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ（「ＵＲＬ」）にアクセスした結果として）。静的Ｗｅｂページを受信すると、Ｗｅｂブラウザはその静的Ｗｅｂページのコンテンツ（例えば、テキスト、グラフィックスなど）をクライアントコンピュータシステムにおいて提供することができる。
【０００５】
ネットワーク資源を節約するために、Ｗｅｂブラウザでは、さらに、クライアントコンピュータシステム側で静的Ｗｅｂページのコピーをキャッシュ（例えば、システムメモリまたは大容量記憶デバイス）に残すこともできる。後で静的Ｗｅｂページが要求された場合、ＷｅｂブラウザはＷｅｂサーバへの新たなネットワーク要求を開始する前に、キャッシュからその静的Ｗｅｂページを取り出そうとする。静的Ｗｅｂページがキャッシュ内に見つかると、Ｗｅｂブラウザはキャッシュに残されている静的Ｗｅｂページを取り出し、ネットワーク要求を開始しない。ローカルに格納されているデータは効率よくアクセスできるため、クライアントコンピュータシステムのキャッシュに静的Ｗｅｂページを残しておくと、静的Ｗｅｂページのコンテンツの提供にかかる待ち時間（ｌａｔｅｎｃｙ）を短縮できる。
【０００６】
また、要求が頻繁にある静的Ｗｅｂページは、サーバコンピュータシステム側のキャッシュ（一般に出力キャッシングと呼ばれる）に残しておくことで、待ち時間を短縮することができる。例えば、頻繁に要求される静的Ｗｅｂページをサーバコンピュータシステム側のシステムメモリ内にキャッシュしておくと、静的Ｗｅｂページが要求される毎に大容量記憶デバイスから静的Ｗｅｂページを取り出さなくて済む。静的Ｗｅｂページは、その静的であるという性質から、長期間、場合によってはいつまでも、キャッシュ（クライアントまたはサーバコンピュータシステムの）に残しておくことができる。
【０００７】
しかし、静的Ｗｅｂページを使用すると、本質的に、Ｗｅｂブラウザではリアルタイムまたはカスタムデータを提供できない。多くの場合、Ｗｅｂブラウザに動的データ（例えば、毎日の売り上げの数字、現在の株価など）を提供するのが望まれる。そこで、Ｗｅｂブラウザにおいて提供すべき動的データを動的Ｗｅｂページ内に入れるメカニズムがいくつか開発されてきた。動的Ｗｅｂページに動的データを含めるメカニズムの１つとして、コンピュータ実行可能命令のモジュール断片（一般に、「スクリプト」と呼ばれる）を使用する方法がある。
【０００８】
スクリプトを、例えば、Ｊａｖａ（登録商標）ＳｃｒｉｐｔおよびＶＢＳｃｒｉｐｔなどのスクリプティング言語を使用して作成し、ページファイル（例えば、Ａｃｔｉｖｅ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ（「ＡＳＰ」）ファイル）内にＨＴＭＬおよび拡張マークアップ言語（「ＸＭＬ」）命令とともに埋め込むことができる。動的Ｗｅｂページの要求を受け取ると、サーバコンピュータシステムは、その要求を、対応するページファイルを処理する処理モジュール（例えば、ＡＳＰモジュール）にリダイレクトする。処理モジュールは、ページファイルに含まれているスクリプトを実行し、要求への応答として返す適切なＨＴＭＬ命令を生成する。スクリプトには、例えば、現在の売り上げの数字または株価を保持するデータベースなど、動的な場所のデータにアクセスするコンピュータ実行可能命令を入れることができる。スクリプトは本質的に要求を受け取ったときに実行されるので、スクリプトを使用することによりリアルタイムデータを含む動的Ｗｅｂページを生成することができる。
【０００９】
静的Ｗｅｂページと同様に、動的Ｗｅｂページもキャッシュに残す（キャッシュする）ことで、動的Ｗｅｂページへのアクセスを効率化できる。しかし、動的Ｗｅｂページに含まれる動的コンテンツ（例えば、価格見積もり）は、通常、限られた時間の間（例えば、動的コンテンツが取り出された場所での値が変わるまで）有効である。多くの場合、動的コンテンツ（例えば、株価）は、非常に短い期間、例えば、わずか数秒間だけ有効である。動的コンテンツの値が変化した場合、キャッシュに入っている動的コンテンツは無効になる可能性がある。例えば、株価が＄２０．００から＄２１．００に変わった場合、キャッシュされている＄２０．００という価格は有効でない（正しい価格でさえない）。無効な動的コンテンツがキャッシュに残っている場合、Ｗｅｂサーバが不正な動的コンテンツをＷｅｂブラウザに送る可能性がある。例えば、無効な株価がキャッシュに残っていると、Ｗｅｂサーバは、スクリプトを再度実行してデータベースから更新された株価を取り出すのではなく、キャッシュから無効な株価を取り出す可能性がある。したがって、キャッシュされている動的コンテンツの有効性を保証しようと試みるキャッシュ管理メカニズムがこれまでに開発されてきた。
【００１０】
指定された時間間隔、例えば、１０分おきに、キャッシュから動的コンテンツを自動的に削除するキャッシュ管理メカニズムもある。しかし、動的コンテンツの値が指定された時間間隔の間に変化した場合でも、無効な動的コンテンツの値がキャッシュ内に残る可能性は存在する。例えば、指定された時間間隔が５分間であり、動的コンテンツの値がキャッシュされてから１分後に更新された場合、動的コンテンツの値は無効化されるが、少なくとも４分間はキャッシュされたままである。この４分間に、Ｗｅｂサーバは、スクリプトを実行して更新された動的コンテンツの値を取り出すのではなく、キャッシュされている動的コンテンツを不正に取り出す可能性がある。
【００１１】
さらに、指定された時間間隔でコンテンツを削除すると、まだ有効な値がキャッシュから削除される可能性がある。例えば、指定された時間間隔が１０分間であり、動的コンテンツの値がキャッシュされてから１０分後も有効である場合、それでも動的コンテンツの値はキャッシュから削除される。したがって、後の要求に対する応答として動的コンテンツの値をより効率よく取り出す可能性がなくなる。
【００１２】
他のキャッシュ管理メカニズムでは、サーバコンピュータシステム側に格納されているファイル（例えば、ＸＭＬファイル）を監視し、監視されているファイルが変化したときに監視されているファイルからのキャッシュされている動的コンテンツを無効化する。さらに他のキャッシュ管理メカニズムでは、キャッシュエントリを監視し、あるキャッシュエントリが無効化されたときに他のキャッシュエントリを無効化する。したがって、キャッシュ管理メカニズムによっては、キャッシュエントリの有効性が時間、対応するファイル、または他の対応するキャッシュエントリに依存することもある。
【００１３】
しかし、既存のキャッシュ管理メカニズム（時間、ファイル、およびキャッシュ依存関係を使用するものを含む）は、サーバコンピュータシステムの外部にある場所から取り出されたキャッシュされている動的コンテンツの値を無効化するのにはあまり適していない。例えば、Ｗｅｂブラウザは、データベース内の多数の異なるテーブルに、動的コンテンツの値を含むＷｅｂページを要求することができる。したがって、適切なスクリプトが含まれるページファイルをサーバコンピュータシステム側で処理して動的コンテンツの値を取り出し、適切なＨＴＭＬ命令を生成することができる。
【００１４】
しかし、データベースからデータを取り出す操作はネットワークとデータベース資源の両方を消費する。取り出されたデータについて計算を実行する場合、さらにサーバコンピュータシステム資源も消費される。さらに、サーバコンピュータシステムが同時にデータベースに対して、異なるＷｅｂページに含まれる動的コンテンツの多数の異なる部分について問い合わせるという可能性もある。また、多数のサーバコンピュータシステムがそれぞれ、同じデータベースからの動的コンテンツにアクセスする可能性もある。
【００１５】
したがって、単一のデータベースにより動的コンテンツを複数のサーバコンピュータシステムに同時に供給することができ、各サーバコンピュータシステムはデータベースに動的コンテンツの異なる部分について同時に問い合わせる。その結果、単一のデータベースは多数のサーバコンピュータシステム間で共有される資源となり、拡張性を制限するおそれがある。つまり、各サーバコンピュータシステムは少なくとも、単一データベースからコンテンツを取り出すのに要する時間の制限を受けるため、追加するサーバコンピュータシステムを増やしても、パフォーマンスは必ずしも上がることはない。さらに、コンテンツが早いうちにキャッシュから削除された場合（例えば、指定された間隔で）、キャッシュ内の動的コンテンツがまだ有効であったとしてもサーバコンピュータシステムはデータベースに再度問い合わせる必要があるかもしれない。マルチサーバ環境では、キャッシュされているコンテンツの早期の削除が行われると、共有データベースの資源に対して不要な負担となる可能性があり、したがってこれもまた、場合によっては著しく、拡張性が制限される可能性がある。したがって、都合がよいメカニズムは、データベーステーブル内の変更に依存するようにキャッシュエントリを構成し、その変更に基づいてキャッシュエントリを無効化するメカニズムである。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
従来技術に関する前記の問題点は、キャッシュエントリを無効化するために使用することができるデータベーステーブル変更情報の登録および取り出しを行うためのシステム、方法、コンピュータプログラム製品、およびデータ構造を対象とする本発明の原理により克服される。ブラウザを備えるクライアントコンピュータシステムは、ネットワークを介して、Ｗｅｂ応答（例えば、Ｗｅｂページおよび／またはＷｅｂサービス結果）を生成してクライアントコンピュータシステムに供給することができるサーバコンピュータシステムに接続可能である。サーバコンピュータシステムは、データベース内のデータテーブルからのＷｅｂ応答に関するコンテンツの少なくとも一部にアクセスする。サーバコンピュータシステムは、供給されたコンテンツを格納することができるキャッシュ（例えば、システムメモリ内の）を保持し、後でクライアントのＷｅｂ要求に応じるため同じコンテンツを供給する際の効率を高めることができる。
【課題を解決するための手段】
【００１７】
サーバコンピュータシステムは、データ変更について監視されるデータベース（例えば、ＳＱＬデータベース）内に格納されているデータテーブルを（例えば、ユーザ入力に応答して）選択する。選択されたデータテーブルに対応するレコードが、変更通知テーブル内に挿入される（データベースにも含まれる）。対応するレコードは、選択されたデータテーブルのバージョンに関する情報、例えば、変更ＩＤを含む。選択されたデータテーブル内のコンテンツが変更されたときに変更通知テーブル内の選択されたデータテーブルのバージョン情報の更新を引き起こすトリガが、選択されたデータテーブルに割り当てられる。
【００１８】
選択されたデータテーブル内のコンテンツの変更（例えば、レコードの挿入、削除、または更新）に対する応答として、変更通知テーブル内の対応するバージョン情報が更新される。ときどき、またはキャッシュされているコンテンツを取り出す要求に対する応答として、サーバコンピュータシステムは、変更通知テーブルに、データベース内の１つ以上のテーブルに対応するバージョン情報について問い合わせる。問合せ（ｑｕｅｒｙ）は、変更通知テーブルで要求されているすべての監視されているデータテーブルのバージョン情報を要求する、または未解決のキャッシュ依存関係を含む監視されているデータテーブルのバージョン情報を要求する、またはすでに変更された監視されているデータテーブルのバージョン情報を要求する（例えば、現在のバージョン情報を問合せに含めることにより）ように構成することができる。問合せに対する応答として、更新されたバージョン情報がデータベースからサーバコンピュータシステムに返される。問合せの構成に基づき、データベースは、例えば、すべての監視されているデータテーブルのバージョン情報、未解決のキャッシュ依存関係を含む監視されているデータテーブルのバージョン情報、または変更された監視されているデータテーブルのバージョン情報を返すことができる。
【００１９】
それとは別に、サーバコンピュータシステムは、変更通知テーブルに問合せを発行し、要求されたテーブルのバージョン情報が更新されるまでサーバコンピュータシステム上で発行済み問合せがブロックすることを要求することができる。例えば、サーバコンピュータシステムは、現在のバージョン情報が指定された閾値よりも大きくなるまでサーバコンピュータシステム上でブロックする問合せを発行することができる。発行されたブロッキング問合せ（ｉｓｓｕｅｄ  ｂｌｏｃｋｉｎｇ  ｑｕｅｒｙ）は、結果が利用可能になるまでサーバコンピュータシステム上の対応するスレッドがブロックするように、同期して実行することができる。他方で、発行されたブロッキング問合せは、結果が利用可能になったときに、サーバコンピュータシステム上の対応するスレッドがブロックされず、サーバコンピュータシステム上（例えば、別のスレッド）でコールバックが呼び出されるように、非同期に実行することができる。
【００２０】
サーバコンピュータシステムは、キャッシュされているコンテンツがデータテーブルの１つに依存していると判断（決定）する（例えば、すでに割り当てられているデータベースキャッシュ依存関係の結果として）。サーバコンピュータシステムでは、現在のバージョン情報（リスト内に受けた）とキャッシュされているバージョン情報（例えば、キャッシュされているコンテンツの一部とともにキャッシュされているバージョン情報）とを比較する。これには、受け取った変更ＩＤとキャッシュされている変更ＩＤとの比較を含めることができる。適切であれば、例えば、データテーブルに基づくコンテンツの一部がキャッシュされた後にデータテーブル内のコンテンツが変更された場合に、キャッシュされているコンテンツは一部がキャッシュから削除される。したがって、監視されているデータテーブルに依存するキャッシュされているコンテンツは、適切に無効化し、キャッシュから削除することができる。キャッシュされているコンテンツを適切に無効化し、削除すると、サーバコンピュータシステムに無効なキャッシュされたコンテンツをＷｅｂ応答に含める可能性が減じる。さらに、有効なデータを削除する可能性（例えば、時間によって生じる可能性がある）も少なくなり、Ｗｅｂ応答の生成効率も向上する場合もある。
【００２１】
いくつかの実施形態では、キャッシュされているコンテンツは、表形式データ、オブジェクト、コレクション、または部分的応答などの、Ｗｅｂ応答を生成するのに使用されるオブジェクトまたは結果の形をとる。こうした暫定的な結果をキャッシュするのは、複数のＷｅｂ応答の生成に結果を使用できる場合に適切であり、その場合、各Ｗｅｂ応答はさらに識別情報を含む（例えば、他の関連する情報をカスタマイズしたり含めたりする）。他の実施形態では、Ｗｅｂ応答全体がキャッシュに残される。Ｗｅｂ応答全体をキャッシュするのは、複数のＷｅｂ要求間でＷｅｂ応答全体を共有することができる場合に適切である。Ｗｅｂ応答を丸ごとキャッシュする場合は、Ｗｅｂ応答を押し下げる形で、サーバコンピュータシステムの下の方のレベル、例えば、カーネルモード応答キャッシュにキャッシュすることができる。したがって、Ｗｅｂ応答は、無効化されると、下位のキャッシュから削除される。
【００２２】
サーバコンピュータシステムは、データテーブルに含まれる要求されているコンテンツを含むＷｅｂ応答についてのクライアントのＷｅｂ要求を受信することがあり得る。データテーブルは、要求されたコンテンツを含む、データテーブル内のコンテンツを変更することができる他のアプリケーションから一般的にアクセス可能なデータテーブルとすることができる。サーバコンピュータシステムは、Ｗｅｂ応答に入れるコンテンツの少なくとも一部が現在、サーバコンピュータシステムのキャッシュに残されていないと判断する。サーバコンピュータシステムは、データテーブルからの要求されたコンテンツにアクセスし、Ｗｅｂ応答を構築して要求されたコンテンツを含めるようにする。
【００２３】
サーバコンピュータシステムは、Ｗｅｂ応答の構築時に実行されるコマンドに基づいて、データベースキャッシュ依存関係を構築されたＷｅｂ応答の少なくとも一部に割り当てる。データベースキャッシュ依存関係を割り当てることには、データテーブルに依存するＷｅｂ応答を割り当てるか、またはデータテーブルに依存するデータテーブルから取り出したデータに基づきコンテンツを割り当てることを含むことができる。データベースキャッシュ依存関係は、サーバコンピュータシステム側でＷｅｂ応答を構築するため処理されるページファイル（例えば、Ａｃｔｉｖｅ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ（「ＡＳＰ」）ファイル）に含まれるディレクティブ（ｄｉｒｅｃｔｉｖｅ）またはプログラムコードを使用して割り当てることができる。構築されたＷｅｂ応答の少なくとも一部は、サーバコンピュータシステム側にキャッシュされる。したがって、構築されたＷｅｂ応答に対する後のＷｅｂ要求に対する応答として、サーバコンピュータシステムは構築されたＷｅｂ応答のキャッシュされている少なくとも一部を取り出すことができる。キャッシュされているコンテンツ（Ｗｅｂ応答丸ごとである場合もある）を取り出すようにすると、（ページファイルの一部が再実行されないので）サーバコンピュータシステムの資源と（データベースに対し再び問い合わされず、したがってデータがネットワーク経由で転送されないので）ネットワークおよびデータベースの資源の両方が節約される。したがって、Ｗｅｂ要求に応答するために必要な処理および資源を減らすことで待ち時間が短縮し、データベースなどの共有資源への同時アクセスを減らすことによりスケーラビリティが向上する。
【００２４】
本発明の他の特徴および利点は、以下の説明の中で述べられており、一部は、説明から明らかであるか、または本発明を実施することから学ぶことができる。本発明の特徴および利点については、付属の請求項で特に指摘されている機器および組み合わせを使用することで、理解され、得られる。本発明のこれらの特徴および他の特徴は、以下の説明および付属の請求項を読むとよりいっそう明らかになるか、または以下で述べているように本発明を実施することで学ぶことができる。
【発明を実施するための最良の形態】
【００２５】
本発明の上記の利点および特徴およびその他の利点および特徴を得る方法を説明するために、上で簡単に説明した本発明のより具体的な説明を付属の図面に示されている特定の実施形態を参照しながら行う。これらの図面が本発明の代表的な実施形態を示しているだけであり、したがってその範囲を制限しているものとみなされないことを理解していることを前提として、付属の図面を使用して本発明を具体的内容および詳細とともに説明する。
【００２６】
本発明は、キャッシュエントリの無効化に使用できるデータベーステーブル変更情報の登録および取り出しを行う方法、システム、コンピュータプログラム製品、およびデータ構造を対象とする。ブラウザを備えるクライアントコンピュータシステムは、ネットワークを介して、Ｗｅｂ応答（例えば、Ｗｅｂページおよび／またはＷｅｂサービスの結果）を生成してクライアントコンピュータシステムに供給することができるサーバコンピュータシステムに接続可能である。サーバコンピュータシステムは、データベース内のデータテーブルからのＷｅｂ応答に関するコンテンツの少なくとも一部にアクセスする。サーバコンピュータシステムは、供給されたコンテンツ（データテーブルからのコンテンツを含む）を格納することができるキャッシュ（例えば、システムメモリ内の）を保持し、後でクライアントのＷｅｂ要求に応じるため同じコンテンツを供給する際の効率を高めることができる。
【００２７】
サーバコンピュータシステムは（例えば、ユーザ入力に応答して）、データベース内にデータテーブルを構成し、データテーブル内のコンテンツに変更（例えば、挿入、削除、更新）があった場合に変更通知テーブルを更新されたバージョン情報（例えば、変更ＩＤ）とともに供給する。サーバコンピュータシステムは、ときどき、またはキャッシュされているコンテンツを取り出す要求への応答として、変更通知テーブルに問い合わせ、対応するデータテーブルの更新されたバージョン情報を要求する。それに対する応答として、データベースは、その問合せに対応するデータテーブルの更新されたバージョン情報を供給する。サーバコンピュータシステムは、更新されたバージョン情報を使用して、キャッシュエントリを無効化することができる（例えば、すでに割り当てられているデータベースキャッシュ依存関係に基づき）。
【００２８】
いくつかの実施形態では、サーバコンピュータシステムは、データテーブルに含まれる要求されているコンテンツを含めるＷｅｂ応答についてのクライアントのＷｅｂ要求を受信する。サーバコンピュータシステムは、Ｗｅｂ応答に入れるコンテンツの少なくとも一部が現在、サーバコンピュータシステムのキャッシュに残されていないと判断する。サーバコンピュータシステムは、データテーブルからの要求されたコンテンツにアクセスし、Ｗｅｂ応答を構築して要求されたコンテンツを含めるようにする。サーバコンピュータシステムは、Ｗｅｂ応答の構築時に実行されるコマンドに基づいて、データベースキャッシュ依存関係を構築されたＷｅｂ応答の少なくとも一部に割り当てる。構築されたＷｅｂ応答の少なくとも一部は、サーバコンピュータシステム側にキャッシュされる。
【００２９】
本発明の実施形態は、後で詳述するように、さまざまなコンピュータハードウェアおよびソフトウェアを含む専用または汎用コンピュータを備えることができる。特に、本発明の範囲内の実施形態は、格納されているコンピュータ実行可能命令またはデータ構造を搬送するまたは保持するためのコンピュータ可読媒体も含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータからアクセスできる使用可能な媒体とすることができる。例として、ただしこれに限るわけではないが、このようなコンピュータ可読媒体はＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または光ディスク記憶装置、磁気ディスク記憶装置、またはその他の磁気記憶デバイスなどのその他の物理的光記録媒体、またはコンピュータ実行可能命令またはデータ構造の形で望むプログラムコード手段を搬送または格納するために使用でき、汎用または専用コンピュータによりアクセス可能なその他の媒体を備えることができる。
【００３０】
ネットワークまたは他の通信接続（ハード配線、無線、またはハード配線と無線の組み合わせ）を介して情報をコンピュータに転送または供給すると、コンピュータはその接続をコンピュータ可読媒体として適切に認識する。したがって、そのような接続は、コンピュータ可読媒体と呼んで間違いない。上記の組み合わせも、コンピュータ可読媒体の範囲に含めなければならない。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、またはＧＰＵなどの専用処理デバイスに特定の機能または機能群を実行させる命令およびデータを含む。
【００３１】
この説明および請求項では、「コンピュータシステム」は、連携して電子データに対するオペレーションを実行する１つ以上のソフトウェアモジュール、１つ以上のハードウェアモジュール、またはそれらの組み合わせとして定義される。例えば、コンピュータシステムの定義は、パーソナルコンピュータのハードウェアコンポーネントだけでなく、パーソナルコンピュータのオペレーティングシステムなどのソフトウェアモジュールを含む。モジュールの物理的レイアウトは重要でない。コンピュータシステムは、ネットワークを介して結合された１つ以上のコンピュータを備えることができる。同様に、コンピュータシステムは、内部モジュール（メモリおよびプロセッサなど）が連携し、電子データに対するオペレーションを実行する単一の物理デバイス（携帯電話またはパーソナルデジタルアシスタント「ＰＤＡ」など）を備えることができる。
【００３２】
この説明および請求項では、「Ｗｅｂ応答」は、人間が読めるページ、例えば、Ｗｅｂページ、および／またはＷｅｂサービスからの結果として定義される。Ｗｅｂページは、例えば、ワールドワイドウェブ（「ＷＷＷ」）などのネットワークから、対応するＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ（「ＵＲＬ」）にアクセスすることにより取り出すことができる。Ｗｅｂページは、例えば、ブラウザ１０２などのＷｅｂブラウザにおいて提供可能な１つ以上のハイパーテキストマークアップ言語（「ＨＴＭＬ」）命令を含むことができる。Ｗｅｂサービスは、異なるソースからの異なるアプリケーションがカスタム命令を作成せずに（ユーザとの対話と潜在的に無関係に）通信するためのメカニズムを備える。Ｗｅｂサービスは、例えば、データのタグ付けを行うための拡張マークアップ言語（「ＸＭＬ」）、データを転送するためのシンプルオブジェクトアクセスプロトコル（「ＳＯＡＰ」）、使用可能なサービスを記述するためのＷｅｂサービス記述言語（「ＷＳＤＬ」）、および使用可能なサービスのリスティングであるＵｎｉｖｅｒｓａｌ  Ｄｅｓｃｒｉｐｔｉｏｎ，Ｄｉｓｃｏｖｅｒｙ  ａｎｄ  Ｉｎｔｅｇｒａｔｉｏｎ（「ＵＤＤＩ」）などのさまざまな技術を統合することができる。Ｗｅｂサービスは、ネットワーク上のプログラマチックインターフェースを介してビジネスロジック、データ、およびプロセスを共有することができる。
【００３３】
この説明および請求項では、「Ｗｅｂ要求」は、「Ｗｅｂ応答」の要求として定義される。ユーザは、ユーザインターフェースで適切なコマンドを入力してＷｅｂ要求を開始することがありえる。例えば、クライアントコンピュータシステム１０１のユーザは、ブラウザ１０２で適切なコマンドを入力してＷｅｂページに対応するＵＲＬにアクセスすることができる。他方で、アプリケーションがＷｅｂ要求を開始することもある。例えば、クライアントコンピュータシステム１０１のＷｅｂサービスアプリケーションは、サーバコンピュータシステム１１１でＷｅｂサービスアプリケーションへのＷｅｂ要求を開始することができる。
【００３４】
当業者であれば、本発明が、パーソナルコンピュータ、ラップトップコンピュータ、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータなどを含む、さまざまな種類のコンピュータシステム構成により実施できることを理解するであろう。また、本発明は、（ハード配線リンク、無線リンク、またはハード配線と無線リンクの組み合わせにより）リンクされているローカルおよびリモートコンピュータシステムは通信ネットワークを通じて両方ともタスクを実行する分散コンピューティング環境で実施することもできる。分散システム環境では、プログラムモジュールおよび関連するデータ構造は、ローカルとおよびリモートの両方のメモリ記憶デバイス内に配置することができる。
【００３５】
図１を参照すると、図１は、本発明の原理による、データベーステーブルに生じた変更に依存するようにキャッシュエントリを構成し、その変更に基づいてキャッシュエントリを無効化する操作を円滑にするネットワークアーキテクチャ１００の例を示す。ネットワークアーキテクチャ１００内の矩形要素（例えば、ブラウザ１０２、キャッシュインターフェースモジュール１３２、応答構築モジュール１３３、データベースインターフェースモジュール１３６、トリガ１６７、およびトリガ１７７）は、本発明の原理を円滑にする実行可能モジュールを表す。スクロール要素（キャッシュエントリ１２１および１２６、応答コンテンツ１３４、レコード１５１および１５６、およびデータ１６３および１６４）は、実行可能モジュールにより処理されるデータを表す。したがって、ネットワークアーキテクチャ１００で示される実行可能モジュールおよびスクロール要素は連携し、相互作用して、本発明の原理を実装する。
【００３６】
ネットワークアーキテクチャ１００内では、クライアントコンピュータシステム１０１およびサーバコンピュータシステム１１１はそれぞれ、対応するリンク１０３および１０４によりネットワーク１０６に接続される。ネットワーク１０６は、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、またはインターネットであってもよい。クライアントコンピュータシステム１０１は、Ｗｅｂページ用にＷｅｂ要求（例えば、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）要求）を送信し、Ｗｅｂ要求への応答としてコンピュータシステム１０１に返されるＷｅｂページを受信することができる、ブラウザ１０２を備える。ブラウザ１０２は、さらに、クライアントコンピュータシステム１０１で、受信したＷｅｂページコンテンツ（例えば、テキスト、グラフィックス、ビデオ、およびオーディオ）を提供することもできる。クライアントコンピュータシステム１０１はさらに、サーバコンピュータシステム１１１で対応するＷｅｂサービスアプリケーションと通信するＷｅｂサービスアプリケーションを備えることもできる。
【００３７】
サーバコンピュータシステム１１１は、クライアントＷｅｂ要求に対する応答としてＷｅｂ応答を構築することができる応答構築モジュール１３３を備える。応答構築モジュール１３３は、例えば、Ａｃｔｉｖｅ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ（「ＡＳＰ」）ファイルなどのページファイルを処理して、Ｗｅｂページを構築することができる。ページファイルは、例えば、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）、拡張マークアップ言語（「ＸＭＬ」）、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、およびＶＢＳｃｒｉｐｔなどのさまざまな言語による命令および／またはコマンドを記述することができる。応答構築モジュール１３３は、ページファイル内の命令および／またはコマンドを処理することによりＷｅｂ応答に対するコンテンツを生成することができる。応答構築モジュール１３３は、例えば、ブラウザからのＷｅｂ要求への応答として、Ｗｅｂページを生成するように構成することができ、また例えば、ＷｅｂサービスアプリケーションからのＷｅｂ要求への応答として、Ｗｅｂサービスの結果を生成するように構成することができる。
【００３８】
サーバコンピュータシステム１１１は、リンク１０７によりデータベース１４１（例えば、ＳＱＬデータベース）に接続される。データベースインターフェースモジュール１３６は、リンク１０７を介してデータベースコマンドをデータベース１４１に転送することができる。データベースコマンドは、データベース１４１の中のコンテンツを操作する（例えば、行またはレコードの追加、削除、または変更）場合、またはデータベース１４１からコンテンツを取り出す場合に使用することができる。データベースインターフェースモジュール１３６が（例えば、キーボードまたはマウスから）ユーザ入力を受け取ると、この入力は、データベースコマンドに翻訳され、データベース１４１に転送される。それとは別に、データベースインターフェースモジュール１３６は、Ｗｅｂ応答に入れるコンテンツを要求する応答構築モジュール１３３から入力を受け取ることができる。それに対する応答として、データベースインターフェースモジュール１３６は、データベース１４１からコンテンツを取り出して、取り出されるコンテンツを応答構築モジュール１３３に供給することができる。応答構築モジュール１３３は、取り出したコンテンツと応答コンテンツ１３４内の静的コンテンツとを組み合わせて、適切なＷｅｂ応答を構築することができる。
【００３９】
データベース１４１は、データベース１４１に含まれているデータテーブルのバージョン情報を格納することができる。データベースインターフェースモジュール１３６は、データテーブルのバージョン情報を取り出して、取り出したバージョン情報をキャッシュインターフェースモジュール１３２に供給することができる。キャッシュインターフェースモジュール１３２は、取り出したバージョン情報を使用して、キャッシュ１１２からエントリをいつ無効化（し、その後削除）するかを決定することができる。例えば、取り出したバージョン情報に基づき、キャッシュインターフェースモジュール１３２は、キャッシュエントリ１２１またはキャッシュエントリ１２６をいつ無効化するかを決定することができる。キャッシュ１１２は、例えば、サーバコンピュータシステム１１１のシステムメモリなど、待ち時間の短い格納ロケーション（storage location）とすることができる。
【００４０】
バージョン情報は、データベース１４１に含まれるデータテーブルのバージョンを表すバージョン情報データ構造に格納することができる。バージョン情報データ構造のフィールドの１つは、データベース１４１内のデータテーブルを識別するテーブルＩＤを表すテーブルＩＤフィールドとすることができる。テーブルＩＤは、例えば、データテーブルを一意的に識別する数字および／またはアルファベット文字を含む値でよい。例えば、テーブルＩＤ「Ｓａｌｅｓ  Ｔａｂｌｅ  ３」は、テーブル１６２を識別するのに使用することができる。
【００４１】
バージョン情報データ構造のフィールドのもう１つは、対応するテーブルＩＤにより識別されるデータテーブルの変更ＩＤを表す変更ＩＤフィールドとすることができる。変更ＩＤは、例えば、データテーブルの現在のバージョンを識別する数字を含む値でよい。データテーブル内のコンテンツが変更されたら、対応する変更ＩＤを更新することができる（例えば、変更ＩＤを増分することで）。例えば、コンテンツがテーブル１７２に挿入されたら、変更ＩＤ１５８を増分することができる。バージョン情報データ構造のフィールドのもう１つは、対応するテーブルＩＤにより識別されるデータテーブルのバージョンの追跡をデータベース１４１で開始したときの日付を表す日付フィールドとすることができる。例えば、日付１５４は、データベース１４１でテーブル１６２のバージョン情報の追跡を始めた時期を示すことができる。したがって、バージョン情報データ構造は次の形式とすることができる。
【００４２】
【表１】
2005018787.tif 000003
【００４３】
１つ以上のバージョン情報データ構造は、データベース１４１に含まれる変更通知テーブルにレコードとして格納することができる。例えば、変更通知テーブル１４２はレコード１５１および１５６を含む。さらに、変更通知テーブル１４２内の３個の縦の点からなる各系列（つまり、各縦省略記号）は変更通知テーブル１４２が他のレコードを含む可能性があることを表している。変更通知１４２内の各レコードは、バージョン情報を追跡するように構成されているデータテーブルに対応している。例えば、レコード１５１および１５６は、テーブル１６２および１７２にそれぞれ対応すると思われる。さらに、テーブルＩＤ１５２はテーブル１６２の識別に使用される値を格納することができ、変更ＩＤ１５３はテーブル１６２の現在バージョンを示す値を格納することができ、および日付１５４はデータベース１４１でテーブル１６２のバージョン情報の追跡をいつ開始するかを示す値を格納することができる。同様に、テーブルＩＤ１５７はテーブル１７２の識別に使用される値を格納することができ、変更ＩＤ１５８はテーブル１７２の現在バージョンを示す値を格納することができ、および日付１５９はデータベース１４１でテーブル１７２のバージョン情報の追跡をいつ開始するかを示す値を格納することができる。
【００４４】
データテーブルは、変更通知テーブル内の適切な変更ＩＤを更新する対応するデータベーストリガ（例えば、コンピュータ実行可能命令の一部）を使用してバージョン情報を追跡するように構成することができる。データテーブルのコンテンツが変更された場合、データベーストリガが実行され、適切な変更ＩＤが更新される。例えば、レコード１６４内のデータが変更された場合、トリガ１６７の実行で変更ＩＤ１５３の値を更新することができる。同様に、レコード１７６がデータ１７３の中に挿入された場合、トリガ１７７の実行で変更ＩＤ１５８の値を更新することができる。データベース１４１（またはそれと別にサーバコンピュータシステム１１１）の管理者またはユーザは、データテーブルに関連付けられる適切なトリガを引き起こすユーザ入力を入力することができる。
【００４５】
テーブル１６２およびテーブル１７２は、データベース１４１に含まれるデータテーブルである。テーブル１６２および１７２のそれぞれは、Ｗｅｂ応答に含めるデータベースインターフェースモジュール１３６により取り出すことが可能なコンテンツを含むことができる。例えば、テーブル１６２およびテーブル１７２は、在庫および売上高情報をそれぞれ格納することができる。データテーブル内のコンテンツは、１つ以上のレコードで表すことができる。例えば、データ１６３はレコード１６４および１６６で表される。（そして、他のレコードは縦省略記号により表される可能性がある。）同様に、データ１７３はレコード１７４および１７６で表される。（そして、他のレコードは縦省略記号により表される可能性がある。）
データベースインターフェースモジュール１３６は、データベース１４１（または他のデータベース）からコンテンツを取り出させるコマンドをデータベース１４１（または他のデータベース）に転送することができる。取り出されたコンテンツは、その後要求側コンピュータシステムに転送されるＷｅｂ応答のコンテンツとして使用することができる。例えば、サーバコンピュータシステム１１１は、クライアントコンピュータシステム１０１からＷｅｂ要求を受信することができる。Ｗｅｂ要求は、対応するページファイルを処理して対応するＷｅｂ応答を構築する応答構築モジュール１３３に転送することができる。応答構築モジュール１３３は、キャッシュ１１２を調べて、Ｗｅｂ応答（またはその一部）がキャッシュ１１２に格納されているかどうかを判別（決定）することができる。Ｗｅｂ応答がキャッシュ１１２に格納されている場合、Ｗｅｂ応答は直接、クライアントコンピュータシステム１０１に返すことができる。
【００４６】
Ｗｅｂ応答がキャッシュ１１２に格納されていない場合、対応するページファイルを含む、スクリプトを実行して、Ｗｅｂ応答を決定することができる。スクリプトの実行では、キャッシュ１１２に格納されているＷｅｂ応答の一部をチェックし、使用可能であれば、それを使用することができる。コンテンツがキャッシュ１１２に格納されていない場合、スクリプトが実行されると、データベース１４１にコンテンツが要求される。したがって、コンテンツの要求はデータベースインターフェースモジュール１３６に転送され、このモジュールは、変更ＩＤおよびテーブルＩＤを取り出し、変更ＩＤおよびテーブルＩＤに基づき要求されたコンテンツを取り出す適切なコマンドを発行することができる。例えば、その後、データベースインターフェースモジュール１３６は、変更ＩＤ１５３およびテーブルＩＤ１５２に基づいて、テーブル１６２からデータを取り出すことができる。
【００４７】
データについて問い合わせる前にバージョン情報を取り出すこともあり得る。例えば、データベースインターフェースモジュール１３６は、データ（例えば、データ１６３および／またはデータ１７３）について問い合わせる前に、バージョン情報（例えば、１つ以上の変更ＩＤおよび１つ以上の対応するテーブルＩＤ）を取り出すように構成することができる。データについて問い合わせる前にバージョン情報を取り出すと、データテーブル内のデータが、データの問合せからバージョン情報取り出しまでの間に変更される競合状態が発生する可能性が著しく減じる。
【００４８】
応答構築モジュール１３３は、さらに、取り出されたコンテンツをキャッシュに残すか、また取り出されたコンテンツがデータテーブルに依存しているかを判別することもできる。応答構築モジュール１３３は、データテーブル（例えば、テーブルＩＤおよび対応する変更ＩＤ）への依存関係の指示とともにキャッシュに入れる取り出されたコンテンツをキャッシュインターフェースモジュール１３２に転送することができる。キャッシュインターフェースモジュール１３２は、取り出されたコンテンツをキャッシュ１１２に挿入することができる。したがって、取り出されたコンテンツに対する後のＷｅｂ要求は、非常に効率よく処理することができる。
【００４９】
キャッシュされているコンテンツは、キャッシュされているコンテンツおよび対応する依存関係を表すキャッシュエントリデータ構造に格納することができる。キャッシュエントリデータ構造のフィールドの１つは、要求されたＷｅｂ応答でクライアントコンピュータに返された（または返されるべき）コンテンツを表すページコンテンツフィールドとすることができる。ページコンテンツは、Ｗｅｂ応答の一部（例えば、データテーブルから１つ以上のレコード）を含むか、または完全なＷｅｂ応答を含むことができる。例えば、応答コンテンツ１２２は、レコード１６４および１６６からのコンテンツを含むことができる。それとは別に、応答コンテンツ１２２は、データベース１４１からのコンテンツ、応答コンテンツ１３４からのコンテンツ、および他の場所（例えば、他のデータベースまたは他のＷｅｂサービス）からのコンテンツを含むＷｅｂ応答全体を含むこともできる。
【００５０】
キャッシュエントリデータ構造のフィールドの１つは、データベース１４１内のデータテーブルを識別するテーブルＩＤを表すテーブルＩＤフィールドとすることができる。テーブルＩＤは、例えば、変更通知テーブルから取り出された数字および／またはアルファベット文字を含む、値でよい。例えば、コンテンツがテーブル１６２から取り出される場合、テーブルＩＤ１５２も、変更通知テーブル１４２から取り出すことができる。したがって、キャッシュ１１２内のテーブルＩＤは、変更通知テーブル１４２内のテーブルＩＤに対応することができる。例えば、コンテンツがテーブル１７２から取り出される場合、テーブルＩＤ１２８およびテーブルＩＤ１５７は両方ともテーブル１７２を識別することができる。
【００５１】
いくつかの実施形態では、単一のテーブルＩＤ／変更ＩＤタプル、例えば、キーエントリが、監視されているデータテーブル毎にキャッシュ内に保持される。テーブルに依存するコンテンツがあれば、これは対応するキーエントリに依存するようにできる。したがって、複数のキャッシュを同じキーエントリに依存させられることがありうる。テーブルＩＤによりテーブルが変更された場合、対応する変更ＩＤをキーエントリで更新するか、またはキーを削除することができる。キーエントリを更新または削除すると、依存しているキャッシュエントリ（例えば、キャッシュエントリ１２６）はキャッシュから削除される。単一のキー依存関係で複数のキャッシュエントリを無効化させると、キャッシュエントリを保持するために必要な問合せおよびバージョン比較回数を減らすことができる。したがって、キーエントリを使用することにより、依存するコンテンツをいつ無効化するかを判別する効率を高めることができる。
【００５２】
キャッシュエントリデータ構造のフィールドのもう１つは、対応するテーブルＩＤにより識別されるデータテーブルの変更ＩＤを表す変更ＩＤフィールドとすることができる。変更ＩＤは、例えば、変更通知テーブルから取り出された数字を含む値でよい。例えば、コンテンツがテーブル１６２から取り出される場合、変更ＩＤ１５３も、変更通知テーブル１４２から取り出すことができる。したがって、キャッシュ１１２内の変更ＩＤは、変更通知テーブル１４２内の変更ＩＤに対応する。例えば、データをテーブル１７２から取り出したときに、変更ＩＤ１９２および変更ＩＤ１５８は同等としてよい。したがって、キャッシュエントリデータ構造は次の形式とすることができる。
【００５３】
【表２】
2005018787.tif 000004
【００５４】
１つ以上のキャッシュエントリデータ構造をキャッシュ１１２に格納することができる。例えば、キャッシュ１１２は、キャッシュエントリ１２１および１２６を含む。さらに、キャッシュ１１２内の３個の縦の点からなる各系列（つまり、各縦省略記号）は、キャッシュ１１２が他のキャッシュエントリを含む可能性があることを表している。キャッシュ１１２内の各キャッシュエントリは、すでに構築済みのＷｅｂ応答に含まれていたコンテンツの一部に対応する。例えば、キャッシュエントリ１２１および１２６は応答コンテンツ１２２および１２７をそれぞれ含み、またこれらの応答コンテンツは、クライアントコンピュータシステム１０１に配信されたＷｅｂ応答に含まれていてもよい（またはＷｅｂ応答でもよい）。
【００５５】
ときどき、サーバコンピュータシステム１１１は、データベース１４１に対してバージョン情報について問い合わせることができる。例えば、データベースインターフェースモジュール１３６は、指定された間隔（例えば、５分おき）でデータベース１４１に問い合わせるように構成することができる。問合せを受信すると、データベース１４１は、それに対する応答として、最後のポーリング信号を受信した以降に変更されたデータテーブルのバージョン情報を返すことができる。問合せは、問合せに含まれるバージョン情報と異なるバージョン情報を持つデータテーブルに対する特定の要求とすることができる。データベースインターフェースモジュール１３６は、問合せに対する応答としてデータベース１４１から返されたバージョン情報を受信することができる。データベースインターフェースモジュール１３６は、受信したバージョン情報をキャッシュインターフェースモジュール１３２に転送することができる。そしてキャッシュインターフェースモジュール１３２は、受信したバージョン情報を処理して、無効化され、キャッシュ１１２から削除される可能性のあるキャッシュエントリを識別することができる。あるいは、キャッシュインターフェースモジュール１３２は、受信したバージョン情報を処理して、キャッシュ１１２内の適切なキーエントリを更新することができる。
【００５６】
他の実施形態では、サーバコンピュータシステム１１１はデータベース１４１に対し、変更されたバージョン情報について問い合わせ、何らかの変更が判別されるまで問合せが戻らないよう要求することができる。例えば、データベースインターフェースモジュール１３６を使用して、監視されているテーブル毎にブロッキング問合せを発行することができる。発行されたブロッキング問合せは、監視されている各テーブルについて現在保持されているバージョン情報を含むことができる。発行済みブロッキング問合せを受信した後、データベース１４１は、要求されたテーブルのうち１つ以上のバージョン情報が更新されるのを待つ。更新に対する応答として、データベース１４１は、変更されたテーブルのテーブルＩＤおよびバージョン情報を返すことができる。ブロッキング問合せを同期方式で実行すると、データの要求は変更情報が使用可能になるまで戻らない。それに対し、ブロッキング問合せを非同期方式で実行すると、要求は即座に戻り、変更情報が利用可能になるとコールバックがサーバコンピュータシステム１１１内で呼び出される。
【００５７】
図２は、本発明の原理による、テーブル変更通知を出すようにデータベースを構成する方法２００の例の流れ図を示している。方法２００については、ネットワークアーキテクチャ１００で表されているコンピュータシステムおよびデータベースに関して説明する。方法２００は、変更の監視を行うためデータテーブルを選択する動作を含む（動作２０１）。動作２０１は、コンテンツの変更に関して監視が行われるデータベースからデータテーブルを選択するデータベースにネットワーク経由で接続可能である（またはそのデータベースを含む）コンピュータシステムを含むことができる。変更を監視するためデータテーブルを選択することには、データベースインターフェースモジュール１３６が監視対象のデータテーブルを識別するユーザ入力を受け取ることも含めることができる。例えば、サーバコンピュータシステム１１１および／またはデータベース１４１の管理者は監視するテーブル１６２および／またはテーブル１７２を選択するコマンドをサブミットすることができる。変更通知テーブルがまだ存在していない場合、管理者は変更通知テーブルを作成するコマンドを入力することもできる。例えば、サーバコンピュータシステム１１１および／またはデータベース１４１の管理者は、変更通知テーブル１４２を作成するコマンドをデータベース１４１にサブミットすることができる。
【００５８】
それとは別に、コンピュータシステム１１１は、選択されたデータテーブルからコンテンツを含める対応するＷｅｂ応答のＷｅｂ要求を受け取ったことに対する応答として監視のためデータテーブルを選択するコマンドを自動的にサブミットすることもできる。例えば、テーブル１６２および／またはテーブル１７２のコンテンツを含む対応するＷｅｂ応答に対するＷｅｂ要求を受信したことに対する応答として、サーバコンピュータシステム１１１は、監視のためテーブル１６２および／またはテーブル１７２を選択するコマンドを自動的にサブミットすることができる。変更通知テーブルがまだ存在していなければ、サーバコンピュータシステム１１１は、例えば、スクリプト内のページディレクティブに基づいて、変更通知テーブルを作成させるコマンドを自動的にサブミットすることができる。例えば、データベース１４１内のデータテーブルのコンテンツを含む対応するＷｅｂ応答に対するＷｅｂ要求を受信したことに対する応答として、サーバコンピュータシステム１１１は、変更通知テーブル１４２を作成させるコマンドを自動的にサブミットすることができる。データベースインターフェースモジュール１３６はユーザ入力および／または自動的に生成された変更通知テーブル作成コマンドおよびデータテーブル選択コマンドをデータベース１４１に転送することができる。
【００５９】
方法２００は、データテーブルに対応するレコードを変更通知テーブルの中に挿入する動作を含む（動作２０２）。動作２０２では、変更通知テーブルがまだデータテーブルに対応するレコードを格納していない場合にデータテーブルに対応するレコードを変更通知テーブルに挿入することができる。例えば、データベースにネットワーク経由で接続可能な（またはデータベースを含む）コンピュータシステムは、選択されたデータテーブルに対応するレコードを変更通知テーブルの中に挿入することができる。挿入されるレコードには、選択されたデータテーブルに対応する（例えば、バージョン情報データ構造により表される）バージョン情報を収めることができる。レコードを変更通知テーブルに挿入することには、データベースインターフェースモジュール１３６が、レコードを変更通知テーブルに挿入することを指示するユーザ入力を受け取ることも含めることができる。
【００６０】
例えば、サーバコンピュータシステム１１１および／またはデータベース１４１の管理者は、レコード１５１および１５６を変更通知テーブル１４２に挿入させるコマンドをサブミットすることができる。それとは別に、コンピュータシステム１１１は、対応する選択されたデータテーブルからコンテンツを含める対応するＷｅｂ応答のＷｅｂ要求を受け取ったことに対する応答としてレコードを変更通知テーブルに挿入させるコマンドを自動的にサブミットすることもできる。例えば、テーブル１６２および／またはテーブル１７２のコンテンツを含む対応するＷｅｂ応答に対するＷｅｂ要求を受信したことに対する応答として、サーバコンピュータシステム１１１は、レコード１５１および１５６を変更通知テーブル１４２に挿入させるコマンドを自動的にサブミットすることができる。データベースインターフェースモジュール１３６は、ユーザ入力または自動生成レコード挿入コマンドをデータベース１４１に転送することができる。
【００６１】
方法２００は、選択されたデータテーブルにトリガを割り当てる動作を含む（動作２０３）。動作２０３では、トリガがまだ選択されたデータテーブルに割り当てられていない場合に、トリガを選択されたデータテーブルに割り当てることができる。例えば、データベースにネットワーク経由で接続可能な（またはデータベースを含む）コンピュータシステムは、トリガを選択されたデータテーブルに割り当てることができる。選択されたデータテーブル内のコンテンツが変更された場合に、割り当てられたトリガにより、選択されたデータテーブルに対するバージョン情報を変更通知テーブル内で更新させることができる。例えば、トリガ１６７により、テーブル１６２内のコンテンツが変更されたとき（例えば、レコードをデータ１６３に挿入したり、そこから削除したり、変更したりする場合）に変更ＩＤ１５３を更新させることができる（例えば、増分）。同様に、トリガ１７７により、テーブル１７２内のコンテンツが変更されたとき（例えば、レコードをデータ１７３に挿入したり、そこから削除したり、変更したりする場合）に変更ＩＤ１５８を更新させることができる（例えば、増分）。
【００６２】
トリガを割り当てることには、データベースインターフェースモジュール１３６が、トリガが選択されたデータテーブルに割り当てられることを指示するユーザ入力を受け取ることを含めることができる。サーバコンピュータシステム１１１および／またはデータベース１４１の管理者は、トリガを選択されたデータテーブルに割り当てるコマンドをサブミットすることができる。例えば、管理者は、トリガ１６７をテーブル１６２に割り当て、トリガ１７７をテーブル１７２に割り当てるコマンドをサブミットすることができる。それとは別に、コンピュータシステム１１１は、対応する選択されたデータテーブルからコンテンツを含める対応するＷｅｂ応答のＷｅｂ要求を受け取ったことに対する応答として自動的にトリガを割り当てることもできる。例えば、テーブル１６２および／またはテーブル１７２のデータを含む対応するＷｅｂ応答に対するＷｅｂ要求を受信したことに対する応答として、サーバコンピュータシステム１１１は、トリガ１６７をテーブル１６２に割り当て、かつ／またはトリガ１７７をテーブル１７２に割り当てるコマンドを自動的にサブミットすることができる。データベースインターフェースモジュール１３６は、ユーザ入力または自動生成トリガ割り当てコマンドをデータベース１４１に転送することができる。
【００６３】
トリガは、テーブルにアタッチされているコンピュータ実行可能命令の一部を含むことができる。トリガは、イベントドリブン方式であり、コンピュータ実行可能命令の一部は、イベントが発生すると実行される。例えば、トリガ１６７は、データ１６３のコンテンツが変更されたときにアクティブになるように構成することができ、また変更ＩＤ１５３を増分させるコンピュータ実行可能命令の一部を含めることもできる。
【００６４】
方法２００は、変更される選択されたデータテーブル内のコンテンツに応じて、バージョン情報更新する動作を含む（動作２０４）。動作２０４には、選択されたデータテーブルが変更されることに対する応答としてバージョン情報を更新するデータベースにネットワーク経由で接続可能な（またはデータベースを含む）コンピュータシステムが含まれる。例えば、データ１６２内のコンテンツが変更されると（自動またはユーザ入力の結果）、コンピュータシステムは、変更ＩＤ１５３を増分させるトリガ１６７に含まれるコンピュータ実行可能命令の一部を実行することができる。
【００６５】
方法２００には、更新されたバージョン情報を要求側サーバコンピュータシステムに返す動作が含まれる（動作２０５）。動作２０５では、更新されたバージョン情報を要求側サーバコンピュータシステムに返すので、更新されたバージョン情報を使用してサーバコンピュータシステムのキャッシュエントリ内のコンテンツの有効性を調べることができる。例えば、データベース１４１は、サーバコンピュータシステム１１１からの問合せに対する応答としてレコード１５１および１５６（またはその一部）をサーバコンピュータシステム１１１に送信できる。データベースインターフェースモジュール１３６は、データベース１４１からデータレコードを受信することができる。データベースインターフェースモジュール１３６は、レコード１５１および１５６からのデータ（例えば、テーブルＩＤ１５２および１５７および変更ＩＤ１５３および１５８）をキャッシュインターフェースモジュール１３２に転送することができ、このデータは無効化されるキャッシュエントリの識別に使用される。
【００６６】
いくつかの実施形態では、キャッシュされているコンテンツは、表形式データ、オブジェクト、コレクション、または部分的Ｗｅｂ応答などの、Ｗｅｂ応答を生成するのに使用されるオブジェクトまたは結果の形をとる。こうした暫定的な結果をキャッシュするのは、複数のＷｅｂ応答の生成に結果を使用できる場合に適切であり、その場合、各Ｗｅｂ応答はさらに識別情報を含む（例えば、他の関連する情報をカスタマイズしたり含めたりする）。他の実施形態では、Ｗｅｂ応答全体がキャッシュに残される。Ｗｅｂ応答全体をキャッシュするのは、複数の異なるＷｅｂ要求間でＷｅｂ応答全体を共有することができる場合に適切である。Ｗｅｂ応答を丸ごとキャッシュする場合は、Ｗｅｂ応答を押し下げる形で、サーバコンピュータシステムの下の方のレベル、例えば、カーネルモード応答キャッシュにキャッシュすることができる。したがって、Ｗｅｂ応答は、無効化されると、下位のキャッシュから削除される。
【００６７】
図３は、本発明の原理による、キャッシュされているコンテンツの一部を無効化する方法３００の例の流れ図を示している。方法３００については、ネットワークアーキテクチャ１００で表されているコンピュータシステムおよびデータベースに関して説明する。方法３００は、１つ以上のデータテーブルに対応するバージョン情報について変更通知テーブルに問い合わせる動作を含む（動作３０１）。動作３０１には、１つ以上のデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが１つ以上のデータテーブルに対応するバージョン情報について変更通知テーブルに問い合わせることを含めることができる。例えば、データベースインターフェースモジュール１３６は、変更通知テーブル１４２に対して、テーブル１６２および１６３に対応するバージョン情報について問い合わせることができる。データベースインターフェースモジュール１３６は、キャッシュされているコンテンツを取り出す要求に対する応答として、指定されたポーリング間隔の発生について、受け取ったユーザ入力の結果として変更通知テーブル１４２に問い合わせるか、またはブロッキング問合せを、依存するテーブルにデータを要求する前に開始することができる。
【００６８】
問合せは、変更通知テーブルで要求されているすべての監視されているデータテーブルのバージョン情報を要求する、または未解決のキャッシュ依存関係を含む監視されているデータテーブルのバージョン情報を要求する、またはすでに変更された監視されているデータテーブルのバージョン情報を要求する（例えば、現在のバージョン情報を問合せに含めることにより）ように構成することができる。問合せに対する応答として、更新されたバージョン情報がデータベースからサーバコンピュータシステムに返される。問合せの構成に基づき、データベースは、例えば、すべての監視されているデータテーブルのバージョン情報、未解決のキャッシュ依存関係を含む監視されているデータテーブルのバージョン情報、または変更された監視されているデータテーブルのバージョン情報を返すことができる。
【００６９】
それとは別に、サーバコンピュータシステムは、変更通知テーブルに問合せを発行し、要求されたテーブルのバージョン情報が更新されるまでサーバコンピュータシステム上で発行済み問合せがブロックすることを要求することができる。例えば、サーバコンピュータシステムは、現在のバージョン情報が指定された閾値よりも大きくなるまでサーバコンピュータシステム上でブロックする問合せを発行することができる。発行されたブロッキング問合せは、結果が利用可能になるまでサーバコンピュータシステム上の対応するスレッド（ｔｈｒｅａｄ）がブロックするように、同期して実行することができる。他方で、発行されたブロッキング問合せは、結果が利用可能になったときに、サーバコンピュータシステム上の対応するスレッドがブロックされず、サーバコンピュータシステム上（例えば、別のスレッド）でコールバックが呼び出されるように、非同期に実行することができる。
【００７０】
方法３００は、変更通知テーブルに対し最後に問い合わせた以降に変更された少なくとも１つのデータテーブルからなるリストを受信する動作を含む（動作３０２）。動作３０２は、少なくとも１つのデータテーブルからのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、サーバコンピュータシステムが最後に変更通知テーブルに問い合わせた以降に変更された少なくとも１つのデータテーブルからなるリストを受信することを含むことができる。少なくとも１つデータテーブルからなるリストに、少なくとも１つのデータテーブルに対する現在のバージョン情報を含めることができる。例えば、データベース１４１は、テーブル１６２に対するバージョン情報（例えば、テーブルＩＤ１５２および変更ＩＤ１５３）およびテーブル１７２に対するバージョン情報（例えば、テーブルＩＤ１５７および変更ＩＤ１５８）を含むデータテーブルのリストをサーバコンピュータシステム１１１に返すことができる。データベースインターフェースモジュール１３６は、データベース１４１からデータテーブルのリストを受信することができる。
【００７１】
方法３００は、キャッシュされているコンテンツが少なくとも１つのデータテーブルに依存していると判断する動作を含む（動作３０３）。動作３０３には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、キャッシュされているコンテンツが少なくとも１つのデータテーブルに依存していると判定することを含めることができる。例えば、サーバコンピュータシステム１１１は、応答コンテンツ１２２がテーブル１６２に依存しており、応答コンテンツ１２７がテーブル１７２に依存していると判定することができる。キャッシュインターフェースモジュール１３２は、受信したテーブルＩＤ（テーブルＩＤ１５２および１５７）を対応するキャッシュされているテーブルＩＤ（テーブルＩＤ１２３および１２８）と比較することができる。テーブルＩＤの比較結果が該当する場合（例えば、受信したテーブルＩＤおよびキャッシュされているテーブルＩＤが同じデータテーブルを識別している場合）、キャッシュインターフェースモジュール１３２は、キャッシュされているコンテンツはデータテーブルに依存していると判定する。例えば、テーブルＩＤ１２３の値がテーブルＩＤ１５２の値と一致した場合、キャッシュインターフェースモジュール１３２は、応答コンテンツ１２２はテーブル１６２に依存していると判定することができる。同様に、テーブルＩＤ１２８の値がテーブルＩＤ１５７の値と一致した場合、キャッシュインターフェースモジュール１３２は、応答コンテンツ１２７はテーブル１７２に依存していると判定することができる。
【００７２】
方法３００は、現在のバージョン情報をキャッシュされているバージョン情報と比較する動作を含む（動作３０４）。動作３０４には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、現在のバージョン情報をキャッシュされているバージョン情報と比較することを含めることができる。例えば、サーバコンピュータシステム１１１は、返されたリストの中のバージョン情報をキャッシュ１１２に含まれているバージョン情報と比較することができる。キャッシュインターフェースモジュール１３２は、受信した変更ＩＤ（変更ＩＤ１５３および１５８）を対応するキャッシュされている変更ＩＤ（変更ＩＤ１２４および１２９）と比較することができる。
【００７３】
この方法には、比較結果に基づきキャッシュされているコンテンツの一部を削除する動作が含まれる（動作３０５）。動作３０５には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、比較結果に基づいてキャッシュされているコンテンツの一部を削除することを含めることができる。例えば、サーバコンピュータシステム１１１は、現在のバージョン情報とキャッシュされているバージョン情報との比較結果に基づきキャッシュ１１２からキャッシュされているコンテンツを削除することができる。変更ＩＤの比較結果が該当する場合（例えば、受信した変更ＩＤの値がキャッシュされている変更ＩＤの値よりも大きい場合）、キャッシュインターフェースモジュール１３２はキャッシュされているコンテンツを削除する。例えば、変更ＩＤ１５３が変更ＩＤ１２４よりも大きい場合、キャッシュインターフェースモジュール１３２は、キャッシュ１１２からキャッシュエントリ１２１を削除することができる。同様に、変更ＩＤ１５８が変更ＩＤ１２９よりも大きい場合、キャッシュインターフェースモジュール１３２は、キャッシュ１１２からキャッシュエントリ１２６を削除することができる。変更ＩＤが等しい場合、キャッシュされているコンテンツはキャッシュ１１２から削除されない。
【００７４】
したがって、データベースキャッシュ依存関係を利用することにより、キャッシュされているコンテンツを適切に無効化できる可能性が高まる。データテーブルが変更されていない場合、キャッシュから有効な依存コンテンツを早いうちに削除してしまう可能性が減じる。したがって、キャッシュからの有効な依存コンテンツを使用して、より効率的にＷｅｂ応答を構築することができる。その一方で、データテーブルが変更されている場合、キャッシュから対応する無効な依存コンテンツを削除できる可能性が高まる。そのため、無効な依存コンテンツをＷｅｂ応答に含めないようにすることが可能である。
【００７５】
図４は、本発明の原理による、要求側クライアントコンピュータシステムに送るコンテンツにアクセスする方法４００の例の流れ図を示している。方法４００については、ネットワークアーキテクチャ１００で表されているコンピュータシステムおよびデータベースに関して説明する。方法４００には、クライアントコンピュータシステムからＷｅｂ要求を受信する動作が含まれる（動作４０１）。動作４０１には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、クライアントからＷｅｂ要求を受信することを含めることができる。例えば、サーバコンピュータシステム１１１は、クライアントコンピュータシステム１０１からＷｅｂ要求を受信することができる（例えば、ブラウザ１０２で受け取ったユーザ入力の結果発信する）。Ｗｅｂ要求は、例えば、ブラウザ１０２がＷｅｂ応答に対応するＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ（「ＵＲＬ」）にアクセスする場合に発生する。
【００７６】
Ｗｅｂ要求では、データテーブルに含まれる要求されたコンテンツを含めるものとするＷｅｂ応答の配信を要求することができる。例えば、クライアントコンピュータシステム１０１からのＷｅｂ要求は、テーブル１６２および／またはテーブル１７２からのコンテンツを含めるＷｅｂ応答の要求とすることができる。テーブル１６２および１７２は、一般に、テーブル１６２および１７２に含まれるコンテンツ（要求されたＷｅｂ応答に入れるコンテンツを含む）を変更することができる他のアプリケーション（例えば、ワークフローまたは在庫アプリケーション）からアクセス可能である。したがって、データ１６３およびデータ１７３に含まれるコンテンツは、Ｗｅｂ要求間で他のアプリケーションにより変更される可能性がある。
【００７７】
Ｗｅｂ要求を受信した場合にそれに対する応答として、サーバコンピュータシステム１１１は、対応するＷｅｂ応答全体がキャッシュ１１２（またはそれよりも下のレベルのキャッシュ）に格納されていることを判別することができる。対応するＷｅｂ応答全体がキャッシュされている場合、サーバコンピュータシステム１１１は、Ｗｅｂ要求の結果としてさらに処理を行わなくても、キャッシュ１１２からキャッシュされているＷｅｂ応答全体を返すことができる。したがって、Ｗｅｂ応答全体がキャッシュされている場合、Ｗｅｂ要求を遂行するのに関わる待ち時間は、著しく短縮することができる。
【００７８】
その一方で、Ｗｅｂ要求を受信したことに対する応答として、サーバコンピュータシステム１１１は、対応するＷｅｂ応答の少なくとも一部が最新のキャッシュ内容でないと判別する可能性がある。方法４００は、対応するＷｅｂ応答に入れるコンテンツの少なくとも一部が現在、キャッシュされていないと判定する動作を含む（動作４０２）。動作４０２には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、Ｗｅｂ応答に入れるコンテンツの少なくとも一部がサーバコンピュータシステムのキャッシュに現在残されていないと判定することを含めることができる。例えば、サーバコンピュータシステム１１１は、クライアントコンピュータシステム１０１に配信するＷｅｂ応答に入れるコンテンツの少なくとも一部が現在、コンピュータシステム１１１のキャッシュに残されていないと判定することができる。
【００７９】
サーバコンピュータシステム１１１で受信したＷｅｂ要求は、応答構築モジュール１３３に転送することができる。したがって、応答構築モジュール１３３は、適切なページファイル（例えば、ＡＳＰファイル）を取り出し、そのページファイルを処理して、対応するＷｅｂ応答を構築することができる。ページファイルに含まれるスクリプトは、サーバコンピュータシステム１１１の外部にある場所（テーブル１６２および／または１６３）に格納されているコンテンツを要求することができる。外部コンテンツの要求が処理されると、応答構築モジュール１３３は適切な命令をキャッシュインターフェースモジュール１３２に送信し、キャッシュインターフェースモジュール１３２にキャッシュ１１２内の外部コンテンツを見つけさせようとする。外部コンテンツがキャッシュ１１２に格納されている場合、キャッシュインターフェースモジュール１３２は応答構築モジュール１３３に応答し、外部コンテンツがキャッシュ１１２に格納されていることを知らせることができる。その一方で、外部コンテンツがキャッシュ１１２に格納されていない場合、キャッシュインターフェースモジュール１３２は応答構築モジュール１３３に応答し、外部コンテンツがキャッシュ１１２に格納されていないことを知らせることができる。
【００８０】
Ｗｅｂ応答に含めるコンテンツの少なくとも一部がキャッシュに残されていないと判定された場合、サーバコンピュータシステム１１１は、さらに、コンテンツの少なくとも一部がデータベース１４１内のデータテーブルに依存しているか判別することができる。コンテンツの少なくとも一部がデータベース１４１内のデータテーブルに依存している場合、サーバコンピュータシステム１１１は、さらに、データテーブルの対応するキーエントリがキャッシュ１１２に格納されているかどうかを判別することができる。対応するキーエントリがキャッシュ１１２に格納されていない場合、サーバコンピュータシステム１１１は、（例えば、変更通知テーブル１４２から）データテーブルの適切なバージョン情報を取り出して、適切なバージョン情報を含む対応するキーエントリをキャッシュ１１２に格納することができる。
【００８１】
方法４００は、データテーブルの要求されたコンテンツにアクセスする動作を含む（動作４０３）。動作４０３には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、データテーブルの要求されたコンテンツにアクセスすることを含めることができる。例えば、サーバコンピュータシステム１１１は、データベース１４１内のデータテーブルの要求されたコンテンツにアクセスすることができる。要求されたコンテンツがキャッシュ１１２に格納されていないという連絡に対する応答として、応答構築モジュール１３３は適切な命令を（例えば、問合せを発行することにより）データベースインターフェースモジュール１３６に送信し、データベースインターフェースモジュール１３６にデータベース１４１内の要求されたコンテンツを探させることができる。データベース１４１は、要求されたコンテンツ（例えば、レコード１６４、１６６、１７４、および／または１７６の中から）を見つけて、その要求されたコンテンツをデータベースインターフェースモジュール１３６に返すことができる。その後、データベースインターフェースモジュール１３６は、要求されたコンテンツを応答構築モジュール１３３に転送することができる。
【００８２】
方法４００は、対応するＷｅｂ応答を構築する動作を含み、Ｗｅｂ応答は要求されたコンテンツを含む（動作４０４）。動作４０４には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、Ｗｅｂ応答を構築することを含めることができる。例えば、サーバコンピュータシステム１１１は、クライアントコンピュータシステム１０１に返すべきＷｅｂ応答にデータベース１４１からのコンテンツを格納することができる。応答構築モジュール１３３は、データベースインターフェースモジュール１３６から受信した要求された（例えば、レコード１６４、１６６、１７４、および／または１７６からの）コンテンツを格納し、Ｗｅｂ要求に応えることができる。要求されたコンテンツ（だけでなく、該当するページファイルに含まれる他のＨＴＭＬおよびＸＭＬコマンドおよびスクリプト）に基づき、応答構築モジュール１３３は適切なＷｅｂ応答を生成することができる。
【００８３】
方法４００は、要求されたコンテンツに効率よくアクセスし、その後のＷｅｂ要求に応じられるように要求されたコンテンツを格納する機能的結果指向のステップを含む（ステップ４０７）。ステップ４０７は、要求されたコンテンツに効率よくアクセスし、その後のＷｅｂ要求に応じられるように要求されたコンテンツを格納する対応する動作を含むことができる。しかし、図４の例では、ステップ４０７は、構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる対応する動作を含む（動作４０５）。動作４０５には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、構築されたＷｅｂ応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てることを含めることができる。
【００８４】
ステップ４０７はさらに、構築されたＷｅｂ応答の少なくとも一部をキャッシュする対応する動作も含む（動作４０６）。動作４０６には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、構築されたＷｅｂ応答の少なくとも一部をキャッシュすることを含めることができる。サーバコンピュータシステムは、構築されたＷｅｂ応答の少なくとも一部を、サーバコンピュータシステム側にあるキャッシュに残すことができる。例えば、キャッシュインターフェースモジュール１３２は、構築されたＷｅｂ応答がクライアントコンピュータシステム１０１に配信される前に、応答構築モジュール１３３により構築された構築Ｗｅｂ応答の少なくとも一部をキャッシュ１１２に格納するようにできる。
【００８５】
Ｗｅｂ応答を丸ごとキャッシュする場合は、Ｗｅｂ応答を押し下げる形で、サーバコンピュータシステムの下の方のレベル、例えば、カーネルモード応答キャッシュにキャッシュすることができる。例えば、Ｗｅｂ応答全体を、Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｅｒ（「ＩＩＳ」）モジュールにより保持されているキャッシュにプッシュすることも可能である。したがって、Ｗｅｂ応答は、無効化されると、下位のキャッシュから削除される。
【００８６】
Ｗｅｂ応答構築時に実行したコマンドの結果として、データベースキャッシュ依存を割り当て、コンテンツの少なくとも一部をキャッシュすることができる。いくつかの実施形態では、データベースキャッシュ依存関係がＷｅｂ応答内のコンテンツの一部に割り当てられる。以下の第１の命令の例をページファイルに記述して、Ｗｅｂ応答のコンテンツの一部にデータベースキャッシュ依存関係を割り当てるようにできる。
【００８７】
【表３】
2005018787.tif 000005
【００８８】
第１の命令の例の３行目では、データ型ＳｑｌＣａｃｈｅＤｅｐｅｎｄｅｎｃｙの変数「ｃ」を作成する。ＳｑｌＣａｃｈｅＤｅｐｅｎｄｅｎｃｙは、データベースキャッシュ依存関係を表すためすでに確立されているデータ型とすることができる。この第１の命令の例の４行目では、「ｐｕｂｓ」データベースに格納されている「ｐｒｏｄｕｃｔｓ」テーブルに対する依存関係を表す変数ｃを割り当てている。これは、例えば、データベース１４１に格納されているテーブル１６２への依存関係を表すことも可能である。第１の命令の例の５行目では、データ型「ＰｒｏｄｕｃｔＣｏｌｌｅｃｔｉｏｎ」の変数「ｐ」を作成する。ＰｒｏｄｕｃｔＣｏｌｌｅｃｔｉｏｎは、ｐｒｏｄｕｃｔｓデータベースから取り出されたｐｒｏｄｕｃｔｓのリストを表すためにすでに確立されているデータ型とすることができる。「ｇｅｔｐｒｏｄｕｃｔｓ（）」関数は、５行目で実行され、変数ｐに格納されるｐｒｏｄｕｃｔｓのリスト（例えば、テーブル１６２および／または１６３から）を返す。
【００８９】
第１の命令の例の６行目では、キャッシュエントリを作成する（例えば、キャッシュ１１２の中に）。キャッシュエントリは、「Ｐｉｎｆｏ」というキーで作成され、後でキャッシュエントリを参照するのに使用することができる。キャッシュエントリは、変数ｐにより表されるｐｒｏｄｕｃｔｓのリストを格納するために作成され（例えば、応答コンテンツ１２２として）、またキャッシュエントリは、変数ｃにより表されるｐｕｂｓデータベース内のｐｒｏｄｕｃｔｓテーブルに依存する（例えば、テーブルＩＤ１２３として）。第１の命令の例は、複数のＷｅｂ応答にコンテンツの同じ部分を入れる場合に特に都合がよい。以下の命令の例は、キャッシュに入っているｐｒｏｄｕｃｔｓのリストを取り出すためにページファイルに記述することができる。
【００９０】
【表４】
2005018787.tif 000006
【００９１】
ｐｕｂｓデータベース内のｐｒｏｄｕｃｔｓテーブルが変更されたことが検出されると、キーＰｉｎｆｏにより参照されるキャッシュエントリは無効化される。他の実施形態では、データベースキャッシュ依存関係はＷｅｂ応答全体に割り当てられる。以下の第２の命令の例をページファイルに記述して、Ｗｅｂ応答全体にデータベースキャッシュ依存関係を割り当てるようにできる。
【００９２】
【表５】
2005018787.tif 000007
【００９３】
第２の命令の例の１行目は、ページファイルからの結果として生じたＷｅｂ応答全体を「ｐｕｂｓ」データベースに格納されている「ｐｒｏｄｕｃｔｓ」テーブルに依存させるディレクティブである。キャッシュエントリを作成して、ページファイルから得られるＷｅｂ応答全体を（例えば、応答コンテンツ１２７として）キャッシュすることができる。４行目の省略記号は、例えば、ページファイルを処理するときに、ｐｕｂｓデータベース内のｐｒｏｄｕｃｔｓテーブルにアクセスするなどの他のスクリプト命令を実行できることを示している。第２の命令の例は、複数のクライアントが同じＷｅｂ応答を要求した場合に特に都合がよい。
【００９４】
データベースキャッシュ依存関係は、１つ以上の他のキャッシュ依存関係、例えば、時刻、ファイル、キー、および／またはＷｅｂサービスキャッシュ依存関係またはさらには他のデータベースキャッシュ依存関係と併用される可能性がある。例えば、以下の命令の例をページファイルに記述して、Ｗｅｂ応答全体にデータベースキャッシュ依存関係と時間依存関係の両方を割り当てるようにできる。 
<% Output Cache Duration= 600s SglTableDepend="pubs:customers"%>
このディレクティブの例では、対応するＷｅｂ応答を、対応するＷｅｂ応答が作成されてから６００秒間、または「ｐｕｂｓ」データベース内の「ｃｕｓｔｏｍｅｒｓ」テーブルが変更されるまで、キャッシュに残す。
【００９５】
いくつかの実施形態では、１つ以上のキャッシュエントリはキー依存キャッシュエントリであり、データベース依存キャッシュエントリに依存する（つまり、リンクされる）（したがって、キー依存関係が生じる）。したがって、データベース依存キャッシュエントリを無効化すると、キー依存キャッシュエントリのそれぞれも無効化される。キー依存キャッシュエントリはキャッシュ内の（例えば、システムメモリ内の）他のデータに依存するので、キー依存キャッシュエントリの無効化は、データベース依存キャッシュエントリの無効化（データベースの問合せ、ネットワーク通信、データシリアル化などを必要とする場合がある）よりも効率がよい。したがって、キャッシュエントリの無効化の効率を高めるために、第２のキャッシュエントリに（キー依存関係を通じて）依存するように依存するコンテンツを含む第１のキャッシュエントリを構成することができる。対応するデータテーブルの変更が検出されると、第２のキャッシュエントリにより、依存するキャッシュエントリが無効化される。検出された変更に対する応答として、第２のキャッシュエントリをさらにキャッシュから削除するか、または対応するデータテーブルの適切なバージョン情報を更新することができる。
【００９６】
例えば、キャッシュエントリ１２１およびキャッシュエントリ１２６は両方ともテーブル１６２に依存する可能性がある（例えば、テーブルＩＤ１２３およびテーブルＩＤ１２８は両方とも、テーブルＩＤ１５２に対応する）。応答コンテンツ１２２および応答コンテンツ１２７をいつ無効化するかを効率よく決められるようにするために、テーブル１６２に依存するキーエントリをキャッシュ１１２（つまり、システムメモリ）に挿入することができる。キャッシュエントリ１２１および１２６を挿入されたキーエントリに依存させることができる。テーブル１６２が変更された場合、その後データベース１４１に問い合わせることにより、変更ＩＤ１５３が更新されることを識別し、挿入されたキーエントリを無効化することができる。挿入されたキーエントリを無効化すると、変更ＩＤ１２４および変更ＩＤ１２９を直接変更ＩＤ１５３と比較しなくても、キャッシュエントリ１２１および１２６が自動的に無効化される。したがって、データベース問合せおよびバージョン比較の回数を減らすことができ、ネットワーク、データベース、および処理資源を節約することができる。
【００９７】
方法４００は、Ｗｅｂ要求に対する応答として構築されたＷｅｂ応答をクライアントコンピュータシステムに配信する動作を含む（動作４０８）。動作４０８には、少なくとも１つのデータテーブルのコンテンツを含むＷｅｂ応答を構築するサーバコンピュータシステムが、構築されたＷｅｂ応答をクライアントコンピュータシステムに配信することを含めることができる。例えば、サーバコンピュータシステム１１１は、クライアントコンピュータシステム１０１からのＷｅｂ要求に対する応答として、Ｗｅｂ応答をクライアントコンピュータシステム１０１に配信することができる。配信されるＷｅｂ応答は、応答構築モジュール１３３により構築されるＷｅｂ応答とすることができる。
【００９８】
図５は、本発明の原理に好適な動作環境を例示している。図５および以下の説明は、本発明を実施できる適当なコンピューティング環境について簡潔に述べた一般的な説明である。必要というわけではないが、本発明について、コンピュータシステムによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈において説明する。一般に、プログラムモジュールには、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書で開示している方法の動作を実行するプログラムコード手段の例を表している。
【００９９】
図５を参照すると、本発明を実装するシステム例は、処理ユニット５２１、システムメモリ５２２、およびシステムメモリ５２２を含むさまざまなシステムコンポーネントを処理ユニット５２１に結合するシステムバス５２３を備える、コンピュータシステム５２０の形をとる汎用コンピューティングデバイスを含む。処理ユニット５２１は、本発明の特徴などのコンピュータシステム５２０の特徴を実装するように設計されているコンピュータ実行可能命令を実行することができる。システムバス５２３は、メモリバスまたはメモリコントローラ、周辺機器バス、および各種バスアーキテクチャを採用するローカルバスを含む数種類のバス構造のどれでもよい。システムメモリは、読み取り専用メモリ（「ＲＯＭ」）５２４およびランダムアクセスメモリ（「ＲＡＭ」）５２５を含む。起動時などにコンピュータ５２０内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム（「ＢＩＯＳ」）５２６は、ＲＯＭ５２４に格納することができる。
【０１００】
コンピュータシステム５２０は、磁気ハードディスク５３９への読み書きを行うための磁気ハードディスクドライブ５２７、取り外し可能磁気ディスク５２９への読み書きを行うための磁気ディスクドライブ５２８、取り外し可能光ディスク５３１、例えば、ＣＤ−ＲＯＭまたはその他の光媒体への読み書きを行うための光ディスクドライブ５３０を備えることもできる。磁気ハードディスクドライブ５２７、磁気ディスクドライブ５２８、および光ディスクドライブ５３０は、ハードディスクドライブインターフェース５５２、磁気ディスクドライブインターフェース５３３、および光ドライブインターフェース５３４によりそれぞれシステムバス５２３に接続される。ドライブおよび関連コンピュータ可読媒体は、コンピュータ５２０用のコンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータを格納する不揮発性記憶装置を備える。本明細書で説明している環境例では磁気ハードディスク５３９、取り外し可能磁気ディスク５２９、および取り外し可能光ディスク５３１を採用しているが、磁気カセット、フラッシュメモリカード、デジタル多目的ディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどの、データを格納するための他の種類のコンピュータ可読媒体を使用することができる。
【０１０１】
ハードディスク５３９、磁気ディスク５２９、光ディスク５３１、ＲＯＭ５２４、またはＲＡＭ５２５には、オペレーティングシステム５３５、１つ以上のアプリケーションプログラム５３６、その他のプログラムモジュール５３７、およびプログラムデータ５３８など１つ以上のプログラムモジュールを含むプログラムコード手段を格納できる。ユーザは、キーボード５４０、ポインティングデバイス５４２、または例えば、マイク、ジョイスティック、ゲームパッド、スキャナなどの他の入力デバイス（図に示されていない）を介してコンピュータ５２０にコマンドおよび情報を入力できる。これらの入力デバイスやその他の入力デバイスは、システムバス５２３に結合されているシリアルポートインターフェース５４６を通じて処理ユニット５２１に接続することができる。それとは別に、入力デバイスは、例えば、パラレルポート、ゲームポート、ユニバーサルシリアルバス（「ＵＳＢ」）、またはＦｉｒｅ  Ｗｉｒｅポートなどの他のインターフェースにより接続することができる。モニタ５４７またはその他の種類の表示デバイスも、ビデオアダプタ５４８を介してバス５２３に接続される。コンピュータシステム５２０も、他の周辺機器出力デバイス（図に示されていない）、例えば、スピーカおよびプリンタなどに接続することもできる。
【０１０２】
コンピュータシステム５２０は、例えば、オフィス全体を結ぶ、または会社全体を結ぶコンピュータネットワーク、イントラネット、および／またはインターネットに接続可能である。コンピュータシステム５２０は、そのようなネットワーク上で外部ソース、例えば、リモートコンピュータシステム、リモートアプリケーション、および／またはリモートデータベースなどとデータを交換することができる。
【０１０３】
コンピュータシステム５２０は、ネットワークインターフェース５５３を備え、このインターフェースを通じて、コンピュータシステム５２０は外部ソースからデータを受信し、かつ／またはデータを外部ソースに送信する。図５に示されているように、ネットワークインターフェース５５３を使用することで、リンク５５１を介したリモートコンピュータシステム５８３とのデータの交換が円滑に行われる。リンク５５１はネットワークの一部を表しており、リモートコンピュータシステム５８３はネットワークのノードを表している。例えば、リモートコンピュータシステム５８３は、コンピュータシステム５２０で構築されたＷｅｂ応答のコンテンツを供給するデータベースを保持することができる。その一方で、コンピュータシステム５８３は、コンピュータシステム５２０に保持されるデータベースにコンテンツを要求したサーバコンピュータでもよい。
【０１０４】
同様に、コンピュータシステム５２０は、シリアルポートインターフェース５４６を備え、このインターフェースを通じて、コンピュータシステム５２０は、外部ソースからデータを受信し、かつ／またはデータを外部ソースに送信する。シリアルポートインターフェース５４６はモデム５５４に結合され、このモデムを通じて、コンピュータシステム５２０は外部ソースからデータを受信し、かつ／またはデータを外部ソースに送信する。それとは別に、モデム５５４は、適切なインターフェースを介してコンピュータシステム５２０に接続されているＤａｔａ  Ｏｖｅｒ  Ｃａｂｌｅ  Ｓｅｒｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（「ＤＯＣＳＩＳ」）モデムまたはデジタル加入者回線（「ＤＳＬ」）モデムとすることができる。しかし、図５に示されているように、シリアルポートインターフェース５４６およびモデム５５４を使用することにより、リンク５５２を介したリモートコンピュータシステム５９３とのデータの交換が円滑に行われる。リンク５５２はネットワークの一部を表しており、リモートコンピュータシステム５９３はネットワークのノードを表している。例えば、リモートコンピュータシステム５９３は、コンピュータシステム５２０にＷｅｂ応答を要求するクライアントコンピュータシステムとすることができる。一方、コンピュータシステム５９３は、コンピュータシステム５２０にＷｅｂ応答を供給するサーバコンピュータシステムとすることができる。
【０１０５】
図５は本発明の適当なオペレーティング環境を表しているが、本発明の原理は、必要ならば適当な修正を加えることで、本発明の原理を実装することができる任意のシステムで採用することができる。図５に示されている環境は、説明のためのみであり、決して、本発明の原理が実装されるさまざまな環境の小さな一部すら表すものではない。
【０１０６】
本発明のモジュールは、関連するデータとともに格納することができ、コンピュータシステム５２０に関連するコンピュータ可読媒体からアクセスすることができる。例えば、そのようなモジュールの一部および関連するプログラムデータの一部をオペレーティングシステム５３５、アプリケーションプログラム５３６、プログラムモジュール５３７、および／またはプログラムデータ５３８に含め、システムメモリ５２２に格納することができる。大容量記憶デバイス、例えば、磁気ハードディスク５３９がコンピュータシステム５２０に結合されている場合、そのようなモジュールおよび関連するプログラムデータも、大容量記憶デバイスに格納することができる。ネットワークで接続された環境において、コンピュータシステム５２０に関して示されているプログラムモジュールおよび関連するデータ、またはその一部をリモートメモリ記憶デバイス、例えば、リモートコンピュータシステム５８３および／またはリモートコンピュータシステム５９３に関連付けられたシステムメモリおよび／または大容量記憶デバイスに格納することができる。このようなモジュールは、すでに述べているように、分散環境で実行することができる。
【０１０７】
本発明は、本発明の精神または本質的特徴から逸脱することなく他の特定の形で実現することが可能である。説明した実施形態は、すべての点で、説明のみを目的としており、制限することを目的としていないとみなすべきである。したがって、本発明の範囲は、上記の説明ではなく、付属の請求項で指示される。請求項の同等性の意味および範囲内にあるすべての変更は本発明の範囲に含まれるものとする。
【図面の簡単な説明】
【０１０８】
【図１】本発明の原理による、データベーステーブルに生じた変更に依存するようにキャッシュエントリを構成し、その変更に基づいてキャッシュエントリを無効化する操作を円滑にするネットワークアーキテクチャ例を示す図である。
【図２】本発明の原理による、テーブル変更通知を出すようにデータベースを構成する方法の例の流れ図である。
【図３】本発明の原理による、キャッシュされているコンテンツの一部を無効化する方法の例の流れ図である。
【図４】本発明の原理による、要求側クライアントコンピュータシステムに送るコンテンツにアクセスする方法の例の流れ図である。
【図５】本発明の原理に好適な動作環境を例示する図である。
【符号の説明】
【０１０９】
１０１  クライアントコンピュータシステム
１０２  ブラウザ
１０６  ネットワーク
１１１  サーバコンピュータシステム
１１２  キャッシュ
１２２  応答コンテンツ
１２３  テーブルＩＤ
１２４  変更ＩＤ
１２７  応答コンテンツ
１２８  テーブルＩＤ
１２９  変更ＩＤ
１３２  キャッシュインターフェースモジュール
１３３  応答構築モジュール
１３４  応答コンテンツ
１３６  データベースインターフェースモジュール
１４１  データベース
１４２  変更通知テーブル
１５２  テーブルＩＤ
１５３  変更ＩＤ
１５４  日付
１５７  テーブルＩＤ
１５８  変更ＩＤ
１５９  日付
１６２  テーブル
１６３  データ
１６４  レコード
１６６  レコード
１６７  トリガ
１７２  テーブル
１７３  データ
１７４  レコード
１７６  レコード
１７７  トリガ
５２０  コンピュータシステム
５２１  処理ユニット
５２２  システムメモリ
５２３  システムバス
５３２  ハードディスクドライブインターフェース
５３３  磁気ディスクドライブインターフェース
５３４  光ドライブインターフェース
５３５  オペレーティングシステム
５３６  アプリケーションプログラム
５３７  その他のプログラムモジュール
５３８  プログラムデータ
５４０  キーボード
５４６  シリアルポートインターフェース
５４７  モニタ
５４８  ビデオアダプタ
５５３  ネットワークインターフェース
５５４  モデム
５８３  リモートコンピュータシュテム
５９３  リモートコンピュータシステム
【図１】
2005018787.tif 000008
【図２】
2005018787.tif 000009
【図３】
2005018787.tif 000010
【図４】
2005018787.tif 000011
【図５】
2005018787.tif 000012