JP4578160B2 - キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し - Google Patents

キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し Download PDF

Info

Publication number
JP4578160B2
JP4578160B2 JP2004189028A JP2004189028A JP4578160B2 JP 4578160 B2 JP4578160 B2 JP 4578160B2 JP 2004189028 A JP2004189028 A JP 2004189028A JP 2004189028 A JP2004189028 A JP 2004189028A JP 4578160 B2 JP4578160 B2 JP 4578160B2
Authority
JP
Japan
Prior art keywords
web
data table
cache
response
database
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
JP2004189028A
Other languages
English (en)
Other versions
JP2005018787A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005018787A publication Critical patent/JP2005018787A/ja
Application granted granted Critical
Publication of JP4578160B2 publication Critical patent/JP4578160B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、キャッシュされているコンテンツを管理することに関する。具体的には、本発明は、キャッシュエントリの無効化に使用できるデータベーステーブル変更通知(database table change notifications)の登録および受信に関する。
コンピュータシステムおよび関係する技術は、社会の多くの側面に影響を及ぼしている。実際、コンピュータシステムを使って情報を処理できるようになったため、われわれの生活様式や仕事のやり方が変化した。コンピュータシステムが出現する以前には手作業で行われていた多くの作業(例えば、文書処理、日程作成、およびデータベース管理)を、コンピュータシステムで実行するのが現在では一般的になっている。最近では、コンピュータシステムを相互に結合して有線と無線の両方を利用したコンピュータネットワークを形成し、このネットワークを介してコンピュータシステムが電子的情報伝達を行い、データを共有することができるようになっている。そのため、コンピュータシステムで実行される多くの作業(例えば、音声通信、電子メールのアクセス、電子会議、Webブラウズ)は、有線および/または無線コンピュータネットワークを介した1つ以上の他のコンピュータシステムとの電子的情報の伝達を含む。
とりわけ、ワールドワイドウェブ(「WWW」)は、情報交換するための重要なメカニズムとなっている。一般に、WWW上のコンテンツは、クライアント/サーバモデルでアクセスされる。クライアントコンピュータシステム側の「Webブラウザ」は、サーバコンピュータシステム側の「Webサーバ」により保持されているコンテンツにアクセスする要求を送信する。適切であれば、Webサーバは、その後、要求されたコンテンツをWebブラウザに供給する。
Webブラウズからコンテンツを利用できるようにする1つの手段として、Web開発者が、例えば、ハイパーテキストマークアップ言語(「HTML」)などでハードコーディングされた多数のコンピュータ可読命令を含む静的Webページを作成する方法がある。こうして得られた静的Webページは、Webサーバからアクセス可能な場所(例えば、サーバコンピュータシステム、ネットワーク接続可能データベースなど)に格納される。Webブラウザからの要求に対する応答として、Webサーバは静的WebページをWebブラウザに転送することができる(例えば、ユーザからの入力によりWebブラウザが静的Webページに対応するUniform Resource Locator(「URL」)にアクセスした結果として)。静的Webページを受信すると、Webブラウザはその静的Webページのコンテンツ(例えば、テキスト、グラフィックスなど)をクライアントコンピュータシステムにおいて提供することができる。
ネットワーク資源を節約するために、Webブラウザでは、さらに、クライアントコンピュータシステム側で静的Webページのコピーをキャッシュ(例えば、システムメモリまたは大容量記憶デバイス)に残すこともできる。後で静的Webページが要求された場合、WebブラウザはWebサーバへの新たなネットワーク要求を開始する前に、キャッシュからその静的Webページを取り出そうとする。静的Webページがキャッシュ内に見つかると、Webブラウザはキャッシュに残されている静的Webページを取り出し、ネットワーク要求を開始しない。ローカルに格納されているデータは効率よくアクセスできるため、クライアントコンピュータシステムのキャッシュに静的Webページを残しておくと、静的Webページのコンテンツの提供にかかる待ち時間(latency)を短縮できる。
また、要求が頻繁にある静的Webページは、サーバコンピュータシステム側のキャッシュ(一般に出力キャッシングと呼ばれる)に残しておくことで、待ち時間を短縮することができる。例えば、頻繁に要求される静的Webページをサーバコンピュータシステム側のシステムメモリ内にキャッシュしておくと、静的Webページが要求される毎に大容量記憶デバイスから静的Webページを取り出さなくて済む。静的Webページは、その静的であるという性質から、長期間、場合によってはいつまでも、キャッシュ(クライアントまたはサーバコンピュータシステムの)に残しておくことができる。
しかし、静的Webページを使用すると、本質的に、Webブラウザではリアルタイムまたはカスタムデータを提供できない。多くの場合、Webブラウザに動的データ(例えば、毎日の売り上げの数字、現在の株価など)を提供するのが望まれる。そこで、Webブラウザにおいて提供すべき動的データを動的Webページ内に入れるメカニズムがいくつか開発されてきた。動的Webページに動的データを含めるメカニズムの1つとして、コンピュータ実行可能命令のモジュール断片(一般に、「スクリプト」と呼ばれる)を使用する方法がある。
スクリプトを、例えば、Java(登録商標)ScriptおよびVBScriptなどのスクリプティング言語を使用して作成し、ページファイル(例えば、Active Server Pages(「ASP」)ファイル)内にHTMLおよび拡張マークアップ言語(「XML」)命令とともに埋め込むことができる。動的Webページの要求を受け取ると、サーバコンピュータシステムは、その要求を、対応するページファイルを処理する処理モジュール(例えば、ASPモジュール)にリダイレクトする。処理モジュールは、ページファイルに含まれているスクリプトを実行し、要求への応答として返す適切なHTML命令を生成する。スクリプトには、例えば、現在の売り上げの数字または株価を保持するデータベースなど、動的な場所のデータにアクセスするコンピュータ実行可能命令を入れることができる。スクリプトは本質的に要求を受け取ったときに実行されるので、スクリプトを使用することによりリアルタイムデータを含む動的Webページを生成することができる。
静的Webページと同様に、動的Webページもキャッシュに残す(キャッシュする)ことで、動的Webページへのアクセスを効率化できる。しかし、動的Webページに含まれる動的コンテンツ(例えば、価格見積もり)は、通常、限られた時間の間(例えば、動的コンテンツが取り出された場所での値が変わるまで)有効である。多くの場合、動的コンテンツ(例えば、株価)は、非常に短い期間、例えば、わずか数秒間だけ有効である。動的コンテンツの値が変化した場合、キャッシュに入っている動的コンテンツは無効になる可能性がある。例えば、株価が$20.00から$21.00に変わった場合、キャッシュされている$20.00という価格は有効でない(正しい価格でさえない)。無効な動的コンテンツがキャッシュに残っている場合、Webサーバが不正な動的コンテンツをWebブラウザに送る可能性がある。例えば、無効な株価がキャッシュに残っていると、Webサーバは、スクリプトを再度実行してデータベースから更新された株価を取り出すのではなく、キャッシュから無効な株価を取り出す可能性がある。したがって、キャッシュされている動的コンテンツの有効性を保証しようと試みるキャッシュ管理メカニズムがこれまでに開発されてきた。
指定された時間間隔、例えば、10分おきに、キャッシュから動的コンテンツを自動的に削除するキャッシュ管理メカニズムもある。しかし、動的コンテンツの値が指定された時間間隔の間に変化した場合でも、無効な動的コンテンツの値がキャッシュ内に残る可能性は存在する。例えば、指定された時間間隔が5分間であり、動的コンテンツの値がキャッシュされてから1分後に更新された場合、動的コンテンツの値は無効化されるが、少なくとも4分間はキャッシュされたままである。この4分間に、Webサーバは、スクリプトを実行して更新された動的コンテンツの値を取り出すのではなく、キャッシュされている動的コンテンツを不正に取り出す可能性がある。
さらに、指定された時間間隔でコンテンツを削除すると、まだ有効な値がキャッシュから削除される可能性がある。例えば、指定された時間間隔が10分間であり、動的コンテンツの値がキャッシュされてから10分後も有効である場合、それでも動的コンテンツの値はキャッシュから削除される。したがって、後の要求に対する応答として動的コンテンツの値をより効率よく取り出す可能性がなくなる。
他のキャッシュ管理メカニズムでは、サーバコンピュータシステム側に格納されているファイル(例えば、XMLファイル)を監視し、監視されているファイルが変化したときに監視されているファイルからのキャッシュされている動的コンテンツを無効化する。さらに他のキャッシュ管理メカニズムでは、キャッシュエントリを監視し、あるキャッシュエントリが無効化されたときに他のキャッシュエントリを無効化する。したがって、キャッシュ管理メカニズムによっては、キャッシュエントリの有効性が時間、対応するファイル、または他の対応するキャッシュエントリに依存することもある。
しかし、既存のキャッシュ管理メカニズム(時間、ファイル、およびキャッシュ依存関係を使用するものを含む)は、サーバコンピュータシステムの外部にある場所から取り出されたキャッシュされている動的コンテンツの値を無効化するのにはあまり適していない。例えば、Webブラウザは、データベース内の多数の異なるテーブルに、動的コンテンツの値を含むWebページを要求することができる。したがって、適切なスクリプトが含まれるページファイルをサーバコンピュータシステム側で処理して動的コンテンツの値を取り出し、適切なHTML命令を生成することができる。
しかし、データベースからデータを取り出す操作はネットワークとデータベース資源の両方を消費する。取り出されたデータについて計算を実行する場合、さらにサーバコンピュータシステム資源も消費される。さらに、サーバコンピュータシステムが同時にデータベースに対して、異なるWebページに含まれる動的コンテンツの多数の異なる部分について問い合わせるという可能性もある。また、多数のサーバコンピュータシステムがそれぞれ、同じデータベースからの動的コンテンツにアクセスする可能性もある。
したがって、単一のデータベースにより動的コンテンツを複数のサーバコンピュータシステムに同時に供給することができ、各サーバコンピュータシステムはデータベースに動的コンテンツの異なる部分について同時に問い合わせる。その結果、単一のデータベースは多数のサーバコンピュータシステム間で共有される資源となり、拡張性を制限するおそれがある。つまり、各サーバコンピュータシステムは少なくとも、単一データベースからコンテンツを取り出すのに要する時間の制限を受けるため、追加するサーバコンピュータシステムを増やしても、パフォーマンスは必ずしも上がることはない。さらに、コンテンツが早いうちにキャッシュから削除された場合(例えば、指定された間隔で)、キャッシュ内の動的コンテンツがまだ有効であったとしてもサーバコンピュータシステムはデータベースに再度問い合わせる必要があるかもしれない。マルチサーバ環境では、キャッシュされているコンテンツの早期の削除が行われると、共有データベースの資源に対して不要な負担となる可能性があり、したがってこれもまた、場合によっては著しく、拡張性が制限される可能性がある。したがって、都合がよいメカニズムは、データベーステーブル内の変更に依存するようにキャッシュエントリを構成し、その変更に基づいてキャッシュエントリを無効化するメカニズムである。
従来技術に関する前記の問題点は、キャッシュエントリを無効化するために使用することができるデータベーステーブル変更情報の登録および取り出しを行うためのシステム、方法、コンピュータプログラム製品、およびデータ構造を対象とする本発明の原理により克服される。ブラウザを備えるクライアントコンピュータシステムは、ネットワークを介して、Web応答(例えば、Webページおよび/またはWebサービス結果)を生成してクライアントコンピュータシステムに供給することができるサーバコンピュータシステムに接続可能である。サーバコンピュータシステムは、データベース内のデータテーブルからのWeb応答に関するコンテンツの少なくとも一部にアクセスする。サーバコンピュータシステムは、供給されたコンテンツを格納することができるキャッシュ(例えば、システムメモリ内の)を保持し、後でクライアントのWeb要求に応じるため同じコンテンツを供給する際の効率を高めることができる。
サーバコンピュータシステムは、データ変更について監視されるデータベース(例えば、SQLデータベース)内に格納されているデータテーブルを(例えば、ユーザ入力に応答して)選択する。選択されたデータテーブルに対応するレコードが、変更通知テーブル内に挿入される(データベースにも含まれる)。対応するレコードは、選択されたデータテーブルのバージョンに関する情報、例えば、変更IDを含む。選択されたデータテーブル内のコンテンツが変更されたときに変更通知テーブル内の選択されたデータテーブルのバージョン情報の更新を引き起こすトリガが、選択されたデータテーブルに割り当てられる。
選択されたデータテーブル内のコンテンツの変更(例えば、レコードの挿入、削除、または更新)に対する応答として、変更通知テーブル内の対応するバージョン情報が更新される。ときどき、またはキャッシュされているコンテンツを取り出す要求に対する応答として、サーバコンピュータシステムは、変更通知テーブルに、データベース内の1つ以上のテーブルに対応するバージョン情報について問い合わせる。問合せ(query)は、変更通知テーブルで要求されているすべての監視されているデータテーブルのバージョン情報を要求する、または未解決のキャッシュ依存関係を含む監視されているデータテーブルのバージョン情報を要求する、またはすでに変更された監視されているデータテーブルのバージョン情報を要求する(例えば、現在のバージョン情報を問合せに含めることにより)ように構成することができる。問合せに対する応答として、更新されたバージョン情報がデータベースからサーバコンピュータシステムに返される。問合せの構成に基づき、データベースは、例えば、すべての監視されているデータテーブルのバージョン情報、未解決のキャッシュ依存関係を含む監視されているデータテーブルのバージョン情報、または変更された監視されているデータテーブルのバージョン情報を返すことができる。
それとは別に、サーバコンピュータシステムは、変更通知テーブルに問合せを発行し、要求されたテーブルのバージョン情報が更新されるまでサーバコンピュータシステム上で発行済み問合せがブロックすることを要求することができる。例えば、サーバコンピュータシステムは、現在のバージョン情報が指定された閾値よりも大きくなるまでサーバコンピュータシステム上でブロックする問合せを発行することができる。発行されたブロッキング問合せ(issued blocking query)は、結果が利用可能になるまでサーバコンピュータシステム上の対応するスレッドがブロックするように、同期して実行することができる。他方で、発行されたブロッキング問合せは、結果が利用可能になったときに、サーバコンピュータシステム上の対応するスレッドがブロックされず、サーバコンピュータシステム上(例えば、別のスレッド)でコールバックが呼び出されるように、非同期に実行することができる。
サーバコンピュータシステムは、キャッシュされているコンテンツがデータテーブルの1つに依存していると判断(決定)する(例えば、すでに割り当てられているデータベースキャッシュ依存関係の結果として)。サーバコンピュータシステムでは、現在のバージョン情報(リスト内に受けた)とキャッシュされているバージョン情報(例えば、キャッシュされているコンテンツの一部とともにキャッシュされているバージョン情報)とを比較する。これには、受け取った変更IDとキャッシュされている変更IDとの比較を含めることができる。適切であれば、例えば、データテーブルに基づくコンテンツの一部がキャッシュされた後にデータテーブル内のコンテンツが変更された場合に、キャッシュされているコンテンツは一部がキャッシュから削除される。したがって、監視されているデータテーブルに依存するキャッシュされているコンテンツは、適切に無効化し、キャッシュから削除することができる。キャッシュされているコンテンツを適切に無効化し、削除すると、サーバコンピュータシステムに無効なキャッシュされたコンテンツをWeb応答に含める可能性が減じる。さらに、有効なデータを削除する可能性(例えば、時間によって生じる可能性がある)も少なくなり、Web応答の生成効率も向上する場合もある。
いくつかの実施形態では、キャッシュされているコンテンツは、表形式データ、オブジェクト、コレクション、または部分的応答などの、Web応答を生成するのに使用されるオブジェクトまたは結果の形をとる。こうした暫定的な結果をキャッシュするのは、複数のWeb応答の生成に結果を使用できる場合に適切であり、その場合、各Web応答はさらに識別情報を含む(例えば、他の関連する情報をカスタマイズしたり含めたりする)。他の実施形態では、Web応答全体がキャッシュに残される。Web応答全体をキャッシュするのは、複数のWeb要求間でWeb応答全体を共有することができる場合に適切である。Web応答を丸ごとキャッシュする場合は、Web応答を押し下げる形で、サーバコンピュータシステムの下の方のレベル、例えば、カーネルモード応答キャッシュにキャッシュすることができる。したがって、Web応答は、無効化されると、下位のキャッシュから削除される。
サーバコンピュータシステムは、データテーブルに含まれる要求されているコンテンツを含むWeb応答についてのクライアントのWeb要求を受信することがあり得る。データテーブルは、要求されたコンテンツを含む、データテーブル内のコンテンツを変更することができる他のアプリケーションから一般的にアクセス可能なデータテーブルとすることができる。サーバコンピュータシステムは、Web応答に入れるコンテンツの少なくとも一部が現在、サーバコンピュータシステムのキャッシュに残されていないと判断する。サーバコンピュータシステムは、データテーブルからの要求されたコンテンツにアクセスし、Web応答を構築して要求されたコンテンツを含めるようにする。
サーバコンピュータシステムは、Web応答の構築時に実行されるコマンドに基づいて、データベースキャッシュ依存関係を構築されたWeb応答の少なくとも一部に割り当てる。データベースキャッシュ依存関係を割り当てることには、データテーブルに依存するWeb応答を割り当てるか、またはデータテーブルに依存するデータテーブルから取り出したデータに基づきコンテンツを割り当てることを含むことができる。データベースキャッシュ依存関係は、サーバコンピュータシステム側でWeb応答を構築するため処理されるページファイル(例えば、Active Server Pages(「ASP」)ファイル)に含まれるディレクティブ(directive)またはプログラムコードを使用して割り当てることができる。構築されたWeb応答の少なくとも一部は、サーバコンピュータシステム側にキャッシュされる。したがって、構築されたWeb応答に対する後のWeb要求に対する応答として、サーバコンピュータシステムは構築されたWeb応答のキャッシュされている少なくとも一部を取り出すことができる。キャッシュされているコンテンツ(Web応答丸ごとである場合もある)を取り出すようにすると、(ページファイルの一部が再実行されないので)サーバコンピュータシステムの資源と(データベースに対し再び問い合わされず、したがってデータがネットワーク経由で転送されないので)ネットワークおよびデータベースの資源の両方が節約される。したがって、Web要求に応答するために必要な処理および資源を減らすことで待ち時間が短縮し、データベースなどの共有資源への同時アクセスを減らすことによりスケーラビリティが向上する。
本発明の他の特徴および利点は、以下の説明の中で述べられており、一部は、説明から明らかであるか、または本発明を実施することから学ぶことができる。本発明の特徴および利点については、付属の請求項で特に指摘されている機器および組み合わせを使用することで、理解され、得られる。本発明のこれらの特徴および他の特徴は、以下の説明および付属の請求項を読むとよりいっそう明らかになるか、または以下で述べているように本発明を実施することで学ぶことができる。
本発明の上記の利点および特徴およびその他の利点および特徴を得る方法を説明するために、上で簡単に説明した本発明のより具体的な説明を付属の図面に示されている特定の実施形態を参照しながら行う。これらの図面が本発明の代表的な実施形態を示しているだけであり、したがってその範囲を制限しているものとみなされないことを理解していることを前提として、付属の図面を使用して本発明を具体的内容および詳細とともに説明する。
本発明は、キャッシュエントリの無効化に使用できるデータベーステーブル変更情報の登録および取り出しを行う方法、システム、コンピュータプログラム製品、およびデータ構造を対象とする。ブラウザを備えるクライアントコンピュータシステムは、ネットワークを介して、Web応答(例えば、Webページおよび/またはWebサービスの結果)を生成してクライアントコンピュータシステムに供給することができるサーバコンピュータシステムに接続可能である。サーバコンピュータシステムは、データベース内のデータテーブルからのWeb応答に関するコンテンツの少なくとも一部にアクセスする。サーバコンピュータシステムは、供給されたコンテンツ(データテーブルからのコンテンツを含む)を格納することができるキャッシュ(例えば、システムメモリ内の)を保持し、後でクライアントのWeb要求に応じるため同じコンテンツを供給する際の効率を高めることができる。
サーバコンピュータシステムは(例えば、ユーザ入力に応答して)、データベース内にデータテーブルを構成し、データテーブル内のコンテンツに変更(例えば、挿入、削除、更新)があった場合に変更通知テーブルを更新されたバージョン情報(例えば、変更ID)とともに供給する。サーバコンピュータシステムは、ときどき、またはキャッシュされているコンテンツを取り出す要求への応答として、変更通知テーブルに問い合わせ、対応するデータテーブルの更新されたバージョン情報を要求する。それに対する応答として、データベースは、その問合せに対応するデータテーブルの更新されたバージョン情報を供給する。サーバコンピュータシステムは、更新されたバージョン情報を使用して、キャッシュエントリを無効化することができる(例えば、すでに割り当てられているデータベースキャッシュ依存関係に基づき)。
いくつかの実施形態では、サーバコンピュータシステムは、データテーブルに含まれる要求されているコンテンツを含めるWeb応答についてのクライアントのWeb要求を受信する。サーバコンピュータシステムは、Web応答に入れるコンテンツの少なくとも一部が現在、サーバコンピュータシステムのキャッシュに残されていないと判断する。サーバコンピュータシステムは、データテーブルからの要求されたコンテンツにアクセスし、Web応答を構築して要求されたコンテンツを含めるようにする。サーバコンピュータシステムは、Web応答の構築時に実行されるコマンドに基づいて、データベースキャッシュ依存関係を構築されたWeb応答の少なくとも一部に割り当てる。構築されたWeb応答の少なくとも一部は、サーバコンピュータシステム側にキャッシュされる。
本発明の実施形態は、後で詳述するように、さまざまなコンピュータハードウェアおよびソフトウェアを含む専用または汎用コンピュータを備えることができる。特に、本発明の範囲内の実施形態は、格納されているコンピュータ実行可能命令またはデータ構造を搬送するまたは保持するためのコンピュータ可読媒体も含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータからアクセスできる使用可能な媒体とすることができる。例として、ただしこれに限るわけではないが、このようなコンピュータ可読媒体はRAM、ROM、EEPROM、CD−ROM、または光ディスク記憶装置、磁気ディスク記憶装置、またはその他の磁気記憶デバイスなどのその他の物理的光記録媒体、またはコンピュータ実行可能命令またはデータ構造の形で望むプログラムコード手段を搬送または格納するために使用でき、汎用または専用コンピュータによりアクセス可能なその他の媒体を備えることができる。
ネットワークまたは他の通信接続(ハード配線、無線、またはハード配線と無線の組み合わせ)を介して情報をコンピュータに転送または供給すると、コンピュータはその接続をコンピュータ可読媒体として適切に認識する。したがって、そのような接続は、コンピュータ可読媒体と呼んで間違いない。上記の組み合わせも、コンピュータ可読媒体の範囲に含めなければならない。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、またはGPUなどの専用処理デバイスに特定の機能または機能群を実行させる命令およびデータを含む。
この説明および請求項では、「コンピュータシステム」は、連携して電子データに対するオペレーションを実行する1つ以上のソフトウェアモジュール、1つ以上のハードウェアモジュール、またはそれらの組み合わせとして定義される。例えば、コンピュータシステムの定義は、パーソナルコンピュータのハードウェアコンポーネントだけでなく、パーソナルコンピュータのオペレーティングシステムなどのソフトウェアモジュールを含む。モジュールの物理的レイアウトは重要でない。コンピュータシステムは、ネットワークを介して結合された1つ以上のコンピュータを備えることができる。同様に、コンピュータシステムは、内部モジュール(メモリおよびプロセッサなど)が連携し、電子データに対するオペレーションを実行する単一の物理デバイス(携帯電話またはパーソナルデジタルアシスタント「PDA」など)を備えることができる。
この説明および請求項では、「Web応答」は、人間が読めるページ、例えば、Webページ、および/またはWebサービスからの結果として定義される。Webページは、例えば、ワールドワイドウェブ(「WWW」)などのネットワークから、対応するUniform Resource Locator(「URL」)にアクセスすることにより取り出すことができる。Webページは、例えば、ブラウザ102などのWebブラウザにおいて提供可能な1つ以上のハイパーテキストマークアップ言語(「HTML」)命令を含むことができる。Webサービスは、異なるソースからの異なるアプリケーションがカスタム命令を作成せずに(ユーザとの対話と潜在的に無関係に)通信するためのメカニズムを備える。Webサービスは、例えば、データのタグ付けを行うための拡張マークアップ言語(「XML」)、データを転送するためのシンプルオブジェクトアクセスプロトコル(「SOAP」)、使用可能なサービスを記述するためのWebサービス記述言語(「WSDL」)、および使用可能なサービスのリスティングであるUniversal Description,Discovery and Integration(「UDDI」)などのさまざまな技術を統合することができる。Webサービスは、ネットワーク上のプログラマチックインターフェースを介してビジネスロジック、データ、およびプロセスを共有することができる。
この説明および請求項では、「Web要求」は、「Web応答」の要求として定義される。ユーザは、ユーザインターフェースで適切なコマンドを入力してWeb要求を開始することがありえる。例えば、クライアントコンピュータシステム101のユーザは、ブラウザ102で適切なコマンドを入力してWebページに対応するURLにアクセスすることができる。他方で、アプリケーションがWeb要求を開始することもある。例えば、クライアントコンピュータシステム101のWebサービスアプリケーションは、サーバコンピュータシステム111でWebサービスアプリケーションへのWeb要求を開始することができる。
当業者であれば、本発明が、パーソナルコンピュータ、ラップトップコンピュータ、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータなどを含む、さまざまな種類のコンピュータシステム構成により実施できることを理解するであろう。また、本発明は、(ハード配線リンク、無線リンク、またはハード配線と無線リンクの組み合わせにより)リンクされているローカルおよびリモートコンピュータシステムは通信ネットワークを通じて両方ともタスクを実行する分散コンピューティング環境で実施することもできる。分散システム環境では、プログラムモジュールおよび関連するデータ構造は、ローカルとおよびリモートの両方のメモリ記憶デバイス内に配置することができる。
図1を参照すると、図1は、本発明の原理による、データベーステーブルに生じた変更に依存するようにキャッシュエントリを構成し、その変更に基づいてキャッシュエントリを無効化する操作を円滑にするネットワークアーキテクチャ100の例を示す。ネットワークアーキテクチャ100内の矩形要素(例えば、ブラウザ102、キャッシュインターフェースモジュール132、応答構築モジュール133、データベースインターフェースモジュール136、トリガ167、およびトリガ177)は、本発明の原理を円滑にする実行可能モジュールを表す。スクロール要素(キャッシュエントリ121および126、応答コンテンツ134、レコード151および156、およびデータ163および164)は、実行可能モジュールにより処理されるデータを表す。したがって、ネットワークアーキテクチャ100で示される実行可能モジュールおよびスクロール要素は連携し、相互作用して、本発明の原理を実装する。
ネットワークアーキテクチャ100内では、クライアントコンピュータシステム101およびサーバコンピュータシステム111はそれぞれ、対応するリンク103および104によりネットワーク106に接続される。ネットワーク106は、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、またはインターネットであってもよい。クライアントコンピュータシステム101は、Webページ用にWeb要求(例えば、ハイパーテキスト転送プロトコル(「HTTP」)要求)を送信し、Web要求への応答としてコンピュータシステム101に返されるWebページを受信することができる、ブラウザ102を備える。ブラウザ102は、さらに、クライアントコンピュータシステム101で、受信したWebページコンテンツ(例えば、テキスト、グラフィックス、ビデオ、およびオーディオ)を提供することもできる。クライアントコンピュータシステム101はさらに、サーバコンピュータシステム111で対応するWebサービスアプリケーションと通信するWebサービスアプリケーションを備えることもできる。
サーバコンピュータシステム111は、クライアントWeb要求に対する応答としてWeb応答を構築することができる応答構築モジュール133を備える。応答構築モジュール133は、例えば、Active Server Pages(「ASP」)ファイルなどのページファイルを処理して、Webページを構築することができる。ページファイルは、例えば、ハイパーテキストマークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、Java(登録商標)Script、およびVBScriptなどのさまざまな言語による命令および/またはコマンドを記述することができる。応答構築モジュール133は、ページファイル内の命令および/またはコマンドを処理することによりWeb応答に対するコンテンツを生成することができる。応答構築モジュール133は、例えば、ブラウザからのWeb要求への応答として、Webページを生成するように構成することができ、また例えば、WebサービスアプリケーションからのWeb要求への応答として、Webサービスの結果を生成するように構成することができる。
サーバコンピュータシステム111は、リンク107によりデータベース141(例えば、SQLデータベース)に接続される。データベースインターフェースモジュール136は、リンク107を介してデータベースコマンドをデータベース141に転送することができる。データベースコマンドは、データベース141の中のコンテンツを操作する(例えば、行またはレコードの追加、削除、または変更)場合、またはデータベース141からコンテンツを取り出す場合に使用することができる。データベースインターフェースモジュール136が(例えば、キーボードまたはマウスから)ユーザ入力を受け取ると、この入力は、データベースコマンドに翻訳され、データベース141に転送される。それとは別に、データベースインターフェースモジュール136は、Web応答に入れるコンテンツを要求する応答構築モジュール133から入力を受け取ることができる。それに対する応答として、データベースインターフェースモジュール136は、データベース141からコンテンツを取り出して、取り出されるコンテンツを応答構築モジュール133に供給することができる。応答構築モジュール133は、取り出したコンテンツと応答コンテンツ134内の静的コンテンツとを組み合わせて、適切なWeb応答を構築することができる。
データベース141は、データベース141に含まれているデータテーブルのバージョン情報を格納することができる。データベースインターフェースモジュール136は、データテーブルのバージョン情報を取り出して、取り出したバージョン情報をキャッシュインターフェースモジュール132に供給することができる。キャッシュインターフェースモジュール132は、取り出したバージョン情報を使用して、キャッシュ112からエントリをいつ無効化(し、その後削除)するかを決定することができる。例えば、取り出したバージョン情報に基づき、キャッシュインターフェースモジュール132は、キャッシュエントリ121またはキャッシュエントリ126をいつ無効化するかを決定することができる。キャッシュ112は、例えば、サーバコンピュータシステム111のシステムメモリなど、待ち時間の短い格納ロケーション(storage location)とすることができる。
バージョン情報は、データベース141に含まれるデータテーブルのバージョンを表すバージョン情報データ構造に格納することができる。バージョン情報データ構造のフィールドの1つは、データベース141内のデータテーブルを識別するテーブルIDを表すテーブルIDフィールドとすることができる。テーブルIDは、例えば、データテーブルを一意的に識別する数字および/またはアルファベット文字を含む値でよい。例えば、テーブルID「Sales Table 3」は、テーブル162を識別するのに使用することができる。
バージョン情報データ構造のフィールドのもう1つは、対応するテーブルIDにより識別されるデータテーブルの変更IDを表す変更IDフィールドとすることができる。変更IDは、例えば、データテーブルの現在のバージョンを識別する数字を含む値でよい。データテーブル内のコンテンツが変更されたら、対応する変更IDを更新することができる(例えば、変更IDを増分することで)。例えば、コンテンツがテーブル172に挿入されたら、変更ID158を増分することができる。バージョン情報データ構造のフィールドのもう1つは、対応するテーブルIDにより識別されるデータテーブルのバージョンの追跡をデータベース141で開始したときの日付を表す日付フィールドとすることができる。例えば、日付154は、データベース141でテーブル162のバージョン情報の追跡を始めた時期を示すことができる。したがって、バージョン情報データ構造は次の形式とすることができる。
Figure 0004578160
1つ以上のバージョン情報データ構造は、データベース141に含まれる変更通知テーブルにレコードとして格納することができる。例えば、変更通知テーブル142はレコード151および156を含む。さらに、変更通知テーブル142内の3個の縦の点からなる各系列(つまり、各縦省略記号)は変更通知テーブル142が他のレコードを含む可能性があることを表している。変更通知142内の各レコードは、バージョン情報を追跡するように構成されているデータテーブルに対応している。例えば、レコード151および156は、テーブル162および172にそれぞれ対応すると思われる。さらに、テーブルID152はテーブル162の識別に使用される値を格納することができ、変更ID153はテーブル162の現在バージョンを示す値を格納することができ、および日付154はデータベース141でテーブル162のバージョン情報の追跡をいつ開始するかを示す値を格納することができる。同様に、テーブルID157はテーブル172の識別に使用される値を格納することができ、変更ID158はテーブル172の現在バージョンを示す値を格納することができ、および日付159はデータベース141でテーブル172のバージョン情報の追跡をいつ開始するかを示す値を格納することができる。
データテーブルは、変更通知テーブル内の適切な変更IDを更新する対応するデータベーストリガ(例えば、コンピュータ実行可能命令の一部)を使用してバージョン情報を追跡するように構成することができる。データテーブルのコンテンツが変更された場合、データベーストリガが実行され、適切な変更IDが更新される。例えば、レコード164内のデータが変更された場合、トリガ167の実行で変更ID153の値を更新することができる。同様に、レコード176がデータ173の中に挿入された場合、トリガ177の実行で変更ID158の値を更新することができる。データベース141(またはそれと別にサーバコンピュータシステム111)の管理者またはユーザは、データテーブルに関連付けられる適切なトリガを引き起こすユーザ入力を入力することができる。
テーブル162およびテーブル172は、データベース141に含まれるデータテーブルである。テーブル162および172のそれぞれは、Web応答に含めるデータベースインターフェースモジュール136により取り出すことが可能なコンテンツを含むことができる。例えば、テーブル162およびテーブル172は、在庫および売上高情報をそれぞれ格納することができる。データテーブル内のコンテンツは、1つ以上のレコードで表すことができる。例えば、データ163はレコード164および166で表される。(そして、他のレコードは縦省略記号により表される可能性がある。)同様に、データ173はレコード174および176で表される。(そして、他のレコードは縦省略記号により表される可能性がある。)
データベースインターフェースモジュール136は、データベース141(または他のデータベース)からコンテンツを取り出させるコマンドをデータベース141(または他のデータベース)に転送することができる。取り出されたコンテンツは、その後要求側コンピュータシステムに転送されるWeb応答のコンテンツとして使用することができる。例えば、サーバコンピュータシステム111は、クライアントコンピュータシステム101からWeb要求を受信することができる。Web要求は、対応するページファイルを処理して対応するWeb応答を構築する応答構築モジュール133に転送することができる。応答構築モジュール133は、キャッシュ112を調べて、Web応答(またはその一部)がキャッシュ112に格納されているかどうかを判別(決定)することができる。Web応答がキャッシュ112に格納されている場合、Web応答は直接、クライアントコンピュータシステム101に返すことができる。
Web応答がキャッシュ112に格納されていない場合、対応するページファイルを含む、スクリプトを実行して、Web応答を決定することができる。スクリプトの実行では、キャッシュ112に格納されているWeb応答の一部をチェックし、使用可能であれば、それを使用することができる。コンテンツがキャッシュ112に格納されていない場合、スクリプトが実行されると、データベース141にコンテンツが要求される。したがって、コンテンツの要求はデータベースインターフェースモジュール136に転送され、このモジュールは、変更IDおよびテーブルIDを取り出し、変更IDおよびテーブルIDに基づき要求されたコンテンツを取り出す適切なコマンドを発行することができる。例えば、その後、データベースインターフェースモジュール136は、変更ID153およびテーブルID152に基づいて、テーブル162からデータを取り出すことができる。
データについて問い合わせる前にバージョン情報を取り出すこともあり得る。例えば、データベースインターフェースモジュール136は、データ(例えば、データ163および/またはデータ173)について問い合わせる前に、バージョン情報(例えば、1つ以上の変更IDおよび1つ以上の対応するテーブルID)を取り出すように構成することができる。データについて問い合わせる前にバージョン情報を取り出すと、データテーブル内のデータが、データの問合せからバージョン情報取り出しまでの間に変更される競合状態が発生する可能性が著しく減じる。
応答構築モジュール133は、さらに、取り出されたコンテンツをキャッシュに残すか、また取り出されたコンテンツがデータテーブルに依存しているかを判別することもできる。応答構築モジュール133は、データテーブル(例えば、テーブルIDおよび対応する変更ID)への依存関係の指示とともにキャッシュに入れる取り出されたコンテンツをキャッシュインターフェースモジュール132に転送することができる。キャッシュインターフェースモジュール132は、取り出されたコンテンツをキャッシュ112に挿入することができる。したがって、取り出されたコンテンツに対する後のWeb要求は、非常に効率よく処理することができる。
キャッシュされているコンテンツは、キャッシュされているコンテンツおよび対応する依存関係を表すキャッシュエントリデータ構造に格納することができる。キャッシュエントリデータ構造のフィールドの1つは、要求されたWeb応答でクライアントコンピュータに返された(または返されるべき)コンテンツを表すページコンテンツフィールドとすることができる。ページコンテンツは、Web応答の一部(例えば、データテーブルから1つ以上のレコード)を含むか、または完全なWeb応答を含むことができる。例えば、応答コンテンツ122は、レコード164および166からのコンテンツを含むことができる。それとは別に、応答コンテンツ122は、データベース141からのコンテンツ、応答コンテンツ134からのコンテンツ、および他の場所(例えば、他のデータベースまたは他のWebサービス)からのコンテンツを含むWeb応答全体を含むこともできる。
キャッシュエントリデータ構造のフィールドの1つは、データベース141内のデータテーブルを識別するテーブルIDを表すテーブルIDフィールドとすることができる。テーブルIDは、例えば、変更通知テーブルから取り出された数字および/またはアルファベット文字を含む、値でよい。例えば、コンテンツがテーブル162から取り出される場合、テーブルID152も、変更通知テーブル142から取り出すことができる。したがって、キャッシュ112内のテーブルIDは、変更通知テーブル142内のテーブルIDに対応することができる。例えば、コンテンツがテーブル172から取り出される場合、テーブルID128およびテーブルID157は両方ともテーブル172を識別することができる。
いくつかの実施形態では、単一のテーブルID/変更IDタプル、例えば、キーエントリが、監視されているデータテーブル毎にキャッシュ内に保持される。テーブルに依存するコンテンツがあれば、これは対応するキーエントリに依存するようにできる。したがって、複数のキャッシュを同じキーエントリに依存させられることがありうる。テーブルIDによりテーブルが変更された場合、対応する変更IDをキーエントリで更新するか、またはキーを削除することができる。キーエントリを更新または削除すると、依存しているキャッシュエントリ(例えば、キャッシュエントリ126)はキャッシュから削除される。単一のキー依存関係で複数のキャッシュエントリを無効化させると、キャッシュエントリを保持するために必要な問合せおよびバージョン比較回数を減らすことができる。したがって、キーエントリを使用することにより、依存するコンテンツをいつ無効化するかを判別する効率を高めることができる。
キャッシュエントリデータ構造のフィールドのもう1つは、対応するテーブルIDにより識別されるデータテーブルの変更IDを表す変更IDフィールドとすることができる。変更IDは、例えば、変更通知テーブルから取り出された数字を含む値でよい。例えば、コンテンツがテーブル162から取り出される場合、変更ID153も、変更通知テーブル142から取り出すことができる。したがって、キャッシュ112内の変更IDは、変更通知テーブル142内の変更IDに対応する。例えば、データをテーブル172から取り出したときに、変更ID192および変更ID158は同等としてよい。したがって、キャッシュエントリデータ構造は次の形式とすることができる。
Figure 0004578160
1つ以上のキャッシュエントリデータ構造をキャッシュ112に格納することができる。例えば、キャッシュ112は、キャッシュエントリ121および126を含む。さらに、キャッシュ112内の3個の縦の点からなる各系列(つまり、各縦省略記号)は、キャッシュ112が他のキャッシュエントリを含む可能性があることを表している。キャッシュ112内の各キャッシュエントリは、すでに構築済みのWeb応答に含まれていたコンテンツの一部に対応する。例えば、キャッシュエントリ121および126は応答コンテンツ122および127をそれぞれ含み、またこれらの応答コンテンツは、クライアントコンピュータシステム101に配信されたWeb応答に含まれていてもよい(またはWeb応答でもよい)。
ときどき、サーバコンピュータシステム111は、データベース141に対してバージョン情報について問い合わせることができる。例えば、データベースインターフェースモジュール136は、指定された間隔(例えば、5分おき)でデータベース141に問い合わせるように構成することができる。問合せを受信すると、データベース141は、それに対する応答として、最後のポーリング信号を受信した以降に変更されたデータテーブルのバージョン情報を返すことができる。問合せは、問合せに含まれるバージョン情報と異なるバージョン情報を持つデータテーブルに対する特定の要求とすることができる。データベースインターフェースモジュール136は、問合せに対する応答としてデータベース141から返されたバージョン情報を受信することができる。データベースインターフェースモジュール136は、受信したバージョン情報をキャッシュインターフェースモジュール132に転送することができる。そしてキャッシュインターフェースモジュール132は、受信したバージョン情報を処理して、無効化され、キャッシュ112から削除される可能性のあるキャッシュエントリを識別することができる。あるいは、キャッシュインターフェースモジュール132は、受信したバージョン情報を処理して、キャッシュ112内の適切なキーエントリを更新することができる。
他の実施形態では、サーバコンピュータシステム111はデータベース141に対し、変更されたバージョン情報について問い合わせ、何らかの変更が判別されるまで問合せが戻らないよう要求することができる。例えば、データベースインターフェースモジュール136を使用して、監視されているテーブル毎にブロッキング問合せを発行することができる。発行されたブロッキング問合せは、監視されている各テーブルについて現在保持されているバージョン情報を含むことができる。発行済みブロッキング問合せを受信した後、データベース141は、要求されたテーブルのうち1つ以上のバージョン情報が更新されるのを待つ。更新に対する応答として、データベース141は、変更されたテーブルのテーブルIDおよびバージョン情報を返すことができる。ブロッキング問合せを同期方式で実行すると、データの要求は変更情報が使用可能になるまで戻らない。それに対し、ブロッキング問合せを非同期方式で実行すると、要求は即座に戻り、変更情報が利用可能になるとコールバックがサーバコンピュータシステム111内で呼び出される。
図2は、本発明の原理による、テーブル変更通知を出すようにデータベースを構成する方法200の例の流れ図を示している。方法200については、ネットワークアーキテクチャ100で表されているコンピュータシステムおよびデータベースに関して説明する。方法200は、変更の監視を行うためデータテーブルを選択する動作を含む(動作201)。動作201は、コンテンツの変更に関して監視が行われるデータベースからデータテーブルを選択するデータベースにネットワーク経由で接続可能である(またはそのデータベースを含む)コンピュータシステムを含むことができる。変更を監視するためデータテーブルを選択することには、データベースインターフェースモジュール136が監視対象のデータテーブルを識別するユーザ入力を受け取ることも含めることができる。例えば、サーバコンピュータシステム111および/またはデータベース141の管理者は監視するテーブル162および/またはテーブル172を選択するコマンドをサブミットすることができる。変更通知テーブルがまだ存在していない場合、管理者は変更通知テーブルを作成するコマンドを入力することもできる。例えば、サーバコンピュータシステム111および/またはデータベース141の管理者は、変更通知テーブル142を作成するコマンドをデータベース141にサブミットすることができる。
それとは別に、コンピュータシステム111は、選択されたデータテーブルからコンテンツを含める対応するWeb応答のWeb要求を受け取ったことに対する応答として監視のためデータテーブルを選択するコマンドを自動的にサブミットすることもできる。例えば、テーブル162および/またはテーブル172のコンテンツを含む対応するWeb応答に対するWeb要求を受信したことに対する応答として、サーバコンピュータシステム111は、監視のためテーブル162および/またはテーブル172を選択するコマンドを自動的にサブミットすることができる。変更通知テーブルがまだ存在していなければ、サーバコンピュータシステム111は、例えば、スクリプト内のページディレクティブに基づいて、変更通知テーブルを作成させるコマンドを自動的にサブミットすることができる。例えば、データベース141内のデータテーブルのコンテンツを含む対応するWeb応答に対するWeb要求を受信したことに対する応答として、サーバコンピュータシステム111は、変更通知テーブル142を作成させるコマンドを自動的にサブミットすることができる。データベースインターフェースモジュール136はユーザ入力および/または自動的に生成された変更通知テーブル作成コマンドおよびデータテーブル選択コマンドをデータベース141に転送することができる。
方法200は、データテーブルに対応するレコードを変更通知テーブルの中に挿入する動作を含む(動作202)。動作202では、変更通知テーブルがまだデータテーブルに対応するレコードを格納していない場合にデータテーブルに対応するレコードを変更通知テーブルに挿入することができる。例えば、データベースにネットワーク経由で接続可能な(またはデータベースを含む)コンピュータシステムは、選択されたデータテーブルに対応するレコードを変更通知テーブルの中に挿入することができる。挿入されるレコードには、選択されたデータテーブルに対応する(例えば、バージョン情報データ構造により表される)バージョン情報を収めることができる。レコードを変更通知テーブルに挿入することには、データベースインターフェースモジュール136が、レコードを変更通知テーブルに挿入することを指示するユーザ入力を受け取ることも含めることができる。
例えば、サーバコンピュータシステム111および/またはデータベース141の管理者は、レコード151および156を変更通知テーブル142に挿入させるコマンドをサブミットすることができる。それとは別に、コンピュータシステム111は、対応する選択されたデータテーブルからコンテンツを含める対応するWeb応答のWeb要求を受け取ったことに対する応答としてレコードを変更通知テーブルに挿入させるコマンドを自動的にサブミットすることもできる。例えば、テーブル162および/またはテーブル172のコンテンツを含む対応するWeb応答に対するWeb要求を受信したことに対する応答として、サーバコンピュータシステム111は、レコード151および156を変更通知テーブル142に挿入させるコマンドを自動的にサブミットすることができる。データベースインターフェースモジュール136は、ユーザ入力または自動生成レコード挿入コマンドをデータベース141に転送することができる。
方法200は、選択されたデータテーブルにトリガを割り当てる動作を含む(動作203)。動作203では、トリガがまだ選択されたデータテーブルに割り当てられていない場合に、トリガを選択されたデータテーブルに割り当てることができる。例えば、データベースにネットワーク経由で接続可能な(またはデータベースを含む)コンピュータシステムは、トリガを選択されたデータテーブルに割り当てることができる。選択されたデータテーブル内のコンテンツが変更された場合に、割り当てられたトリガにより、選択されたデータテーブルに対するバージョン情報を変更通知テーブル内で更新させることができる。例えば、トリガ167により、テーブル162内のコンテンツが変更されたとき(例えば、レコードをデータ163に挿入したり、そこから削除したり、変更したりする場合)に変更ID153を更新させることができる(例えば、増分)。同様に、トリガ177により、テーブル172内のコンテンツが変更されたとき(例えば、レコードをデータ173に挿入したり、そこから削除したり、変更したりする場合)に変更ID158を更新させることができる(例えば、増分)。
トリガを割り当てることには、データベースインターフェースモジュール136が、トリガが選択されたデータテーブルに割り当てられることを指示するユーザ入力を受け取ることを含めることができる。サーバコンピュータシステム111および/またはデータベース141の管理者は、トリガを選択されたデータテーブルに割り当てるコマンドをサブミットすることができる。例えば、管理者は、トリガ167をテーブル162に割り当て、トリガ177をテーブル172に割り当てるコマンドをサブミットすることができる。それとは別に、コンピュータシステム111は、対応する選択されたデータテーブルからコンテンツを含める対応するWeb応答のWeb要求を受け取ったことに対する応答として自動的にトリガを割り当てることもできる。例えば、テーブル162および/またはテーブル172のデータを含む対応するWeb応答に対するWeb要求を受信したことに対する応答として、サーバコンピュータシステム111は、トリガ167をテーブル162に割り当て、かつ/またはトリガ177をテーブル172に割り当てるコマンドを自動的にサブミットすることができる。データベースインターフェースモジュール136は、ユーザ入力または自動生成トリガ割り当てコマンドをデータベース141に転送することができる。
トリガは、テーブルにアタッチされているコンピュータ実行可能命令の一部を含むことができる。トリガは、イベントドリブン方式であり、コンピュータ実行可能命令の一部は、イベントが発生すると実行される。例えば、トリガ167は、データ163のコンテンツが変更されたときにアクティブになるように構成することができ、また変更ID153を増分させるコンピュータ実行可能命令の一部を含めることもできる。
方法200は、変更される選択されたデータテーブル内のコンテンツに応じて、バージョン情報更新する動作を含む(動作204)。動作204には、選択されたデータテーブルが変更されることに対する応答としてバージョン情報を更新するデータベースにネットワーク経由で接続可能な(またはデータベースを含む)コンピュータシステムが含まれる。例えば、データ162内のコンテンツが変更されると(自動またはユーザ入力の結果)、コンピュータシステムは、変更ID153を増分させるトリガ167に含まれるコンピュータ実行可能命令の一部を実行することができる。
方法200には、更新されたバージョン情報を要求側サーバコンピュータシステムに返す動作が含まれる(動作205)。動作205では、更新されたバージョン情報を要求側サーバコンピュータシステムに返すので、更新されたバージョン情報を使用してサーバコンピュータシステムのキャッシュエントリ内のコンテンツの有効性を調べることができる。例えば、データベース141は、サーバコンピュータシステム111からの問合せに対する応答としてレコード151および156(またはその一部)をサーバコンピュータシステム111に送信できる。データベースインターフェースモジュール136は、データベース141からデータレコードを受信することができる。データベースインターフェースモジュール136は、レコード151および156からのデータ(例えば、テーブルID152および157および変更ID153および158)をキャッシュインターフェースモジュール132に転送することができ、このデータは無効化されるキャッシュエントリの識別に使用される。
いくつかの実施形態では、キャッシュされているコンテンツは、表形式データ、オブジェクト、コレクション、または部分的Web応答などの、Web応答を生成するのに使用されるオブジェクトまたは結果の形をとる。こうした暫定的な結果をキャッシュするのは、複数のWeb応答の生成に結果を使用できる場合に適切であり、その場合、各Web応答はさらに識別情報を含む(例えば、他の関連する情報をカスタマイズしたり含めたりする)。他の実施形態では、Web応答全体がキャッシュに残される。Web応答全体をキャッシュするのは、複数の異なるWeb要求間でWeb応答全体を共有することができる場合に適切である。Web応答を丸ごとキャッシュする場合は、Web応答を押し下げる形で、サーバコンピュータシステムの下の方のレベル、例えば、カーネルモード応答キャッシュにキャッシュすることができる。したがって、Web応答は、無効化されると、下位のキャッシュから削除される。
図3は、本発明の原理による、キャッシュされているコンテンツの一部を無効化する方法300の例の流れ図を示している。方法300については、ネットワークアーキテクチャ100で表されているコンピュータシステムおよびデータベースに関して説明する。方法300は、1つ以上のデータテーブルに対応するバージョン情報について変更通知テーブルに問い合わせる動作を含む(動作301)。動作301には、1つ以上のデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが1つ以上のデータテーブルに対応するバージョン情報について変更通知テーブルに問い合わせることを含めることができる。例えば、データベースインターフェースモジュール136は、変更通知テーブル142に対して、テーブル162および163に対応するバージョン情報について問い合わせることができる。データベースインターフェースモジュール136は、キャッシュされているコンテンツを取り出す要求に対する応答として、指定されたポーリング間隔の発生について、受け取ったユーザ入力の結果として変更通知テーブル142に問い合わせるか、またはブロッキング問合せを、依存するテーブルにデータを要求する前に開始することができる。
問合せは、変更通知テーブルで要求されているすべての監視されているデータテーブルのバージョン情報を要求する、または未解決のキャッシュ依存関係を含む監視されているデータテーブルのバージョン情報を要求する、またはすでに変更された監視されているデータテーブルのバージョン情報を要求する(例えば、現在のバージョン情報を問合せに含めることにより)ように構成することができる。問合せに対する応答として、更新されたバージョン情報がデータベースからサーバコンピュータシステムに返される。問合せの構成に基づき、データベースは、例えば、すべての監視されているデータテーブルのバージョン情報、未解決のキャッシュ依存関係を含む監視されているデータテーブルのバージョン情報、または変更された監視されているデータテーブルのバージョン情報を返すことができる。
それとは別に、サーバコンピュータシステムは、変更通知テーブルに問合せを発行し、要求されたテーブルのバージョン情報が更新されるまでサーバコンピュータシステム上で発行済み問合せがブロックすることを要求することができる。例えば、サーバコンピュータシステムは、現在のバージョン情報が指定された閾値よりも大きくなるまでサーバコンピュータシステム上でブロックする問合せを発行することができる。発行されたブロッキング問合せは、結果が利用可能になるまでサーバコンピュータシステム上の対応するスレッド(thread)がブロックするように、同期して実行することができる。他方で、発行されたブロッキング問合せは、結果が利用可能になったときに、サーバコンピュータシステム上の対応するスレッドがブロックされず、サーバコンピュータシステム上(例えば、別のスレッド)でコールバックが呼び出されるように、非同期に実行することができる。
方法300は、変更通知テーブルに対し最後に問い合わせた以降に変更された少なくとも1つのデータテーブルからなるリストを受信する動作を含む(動作302)。動作302は、少なくとも1つのデータテーブルからのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、サーバコンピュータシステムが最後に変更通知テーブルに問い合わせた以降に変更された少なくとも1つのデータテーブルからなるリストを受信することを含むことができる。少なくとも1つデータテーブルからなるリストに、少なくとも1つのデータテーブルに対する現在のバージョン情報を含めることができる。例えば、データベース141は、テーブル162に対するバージョン情報(例えば、テーブルID152および変更ID153)およびテーブル172に対するバージョン情報(例えば、テーブルID157および変更ID158)を含むデータテーブルのリストをサーバコンピュータシステム111に返すことができる。データベースインターフェースモジュール136は、データベース141からデータテーブルのリストを受信することができる。
方法300は、キャッシュされているコンテンツが少なくとも1つのデータテーブルに依存していると判断する動作を含む(動作303)。動作303には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、キャッシュされているコンテンツが少なくとも1つのデータテーブルに依存していると判定することを含めることができる。例えば、サーバコンピュータシステム111は、応答コンテンツ122がテーブル162に依存しており、応答コンテンツ127がテーブル172に依存していると判定することができる。キャッシュインターフェースモジュール132は、受信したテーブルID(テーブルID152および157)を対応するキャッシュされているテーブルID(テーブルID123および128)と比較することができる。テーブルIDの比較結果が該当する場合(例えば、受信したテーブルIDおよびキャッシュされているテーブルIDが同じデータテーブルを識別している場合)、キャッシュインターフェースモジュール132は、キャッシュされているコンテンツはデータテーブルに依存していると判定する。例えば、テーブルID123の値がテーブルID152の値と一致した場合、キャッシュインターフェースモジュール132は、応答コンテンツ122はテーブル162に依存していると判定することができる。同様に、テーブルID128の値がテーブルID157の値と一致した場合、キャッシュインターフェースモジュール132は、応答コンテンツ127はテーブル172に依存していると判定することができる。
方法300は、現在のバージョン情報をキャッシュされているバージョン情報と比較する動作を含む(動作304)。動作304には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、現在のバージョン情報をキャッシュされているバージョン情報と比較することを含めることができる。例えば、サーバコンピュータシステム111は、返されたリストの中のバージョン情報をキャッシュ112に含まれているバージョン情報と比較することができる。キャッシュインターフェースモジュール132は、受信した変更ID(変更ID153および158)を対応するキャッシュされている変更ID(変更ID124および129)と比較することができる。
この方法には、比較結果に基づきキャッシュされているコンテンツの一部を削除する動作が含まれる(動作305)。動作305には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、比較結果に基づいてキャッシュされているコンテンツの一部を削除することを含めることができる。例えば、サーバコンピュータシステム111は、現在のバージョン情報とキャッシュされているバージョン情報との比較結果に基づきキャッシュ112からキャッシュされているコンテンツを削除することができる。変更IDの比較結果が該当する場合(例えば、受信した変更IDの値がキャッシュされている変更IDの値よりも大きい場合)、キャッシュインターフェースモジュール132はキャッシュされているコンテンツを削除する。例えば、変更ID153が変更ID124よりも大きい場合、キャッシュインターフェースモジュール132は、キャッシュ112からキャッシュエントリ121を削除することができる。同様に、変更ID158が変更ID129よりも大きい場合、キャッシュインターフェースモジュール132は、キャッシュ112からキャッシュエントリ126を削除することができる。変更IDが等しい場合、キャッシュされているコンテンツはキャッシュ112から削除されない。
したがって、データベースキャッシュ依存関係を利用することにより、キャッシュされているコンテンツを適切に無効化できる可能性が高まる。データテーブルが変更されていない場合、キャッシュから有効な依存コンテンツを早いうちに削除してしまう可能性が減じる。したがって、キャッシュからの有効な依存コンテンツを使用して、より効率的にWeb応答を構築することができる。その一方で、データテーブルが変更されている場合、キャッシュから対応する無効な依存コンテンツを削除できる可能性が高まる。そのため、無効な依存コンテンツをWeb応答に含めないようにすることが可能である。
図4は、本発明の原理による、要求側クライアントコンピュータシステムに送るコンテンツにアクセスする方法400の例の流れ図を示している。方法400については、ネットワークアーキテクチャ100で表されているコンピュータシステムおよびデータベースに関して説明する。方法400には、クライアントコンピュータシステムからWeb要求を受信する動作が含まれる(動作401)。動作401には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、クライアントからWeb要求を受信することを含めることができる。例えば、サーバコンピュータシステム111は、クライアントコンピュータシステム101からWeb要求を受信することができる(例えば、ブラウザ102で受け取ったユーザ入力の結果発信する)。Web要求は、例えば、ブラウザ102がWeb応答に対応するUniform Resource Locator(「URL」)にアクセスする場合に発生する。
Web要求では、データテーブルに含まれる要求されたコンテンツを含めるものとするWeb応答の配信を要求することができる。例えば、クライアントコンピュータシステム101からのWeb要求は、テーブル162および/またはテーブル172からのコンテンツを含めるWeb応答の要求とすることができる。テーブル162および172は、一般に、テーブル162および172に含まれるコンテンツ(要求されたWeb応答に入れるコンテンツを含む)を変更することができる他のアプリケーション(例えば、ワークフローまたは在庫アプリケーション)からアクセス可能である。したがって、データ163およびデータ173に含まれるコンテンツは、Web要求間で他のアプリケーションにより変更される可能性がある。
Web要求を受信した場合にそれに対する応答として、サーバコンピュータシステム111は、対応するWeb応答全体がキャッシュ112(またはそれよりも下のレベルのキャッシュ)に格納されていることを判別することができる。対応するWeb応答全体がキャッシュされている場合、サーバコンピュータシステム111は、Web要求の結果としてさらに処理を行わなくても、キャッシュ112からキャッシュされているWeb応答全体を返すことができる。したがって、Web応答全体がキャッシュされている場合、Web要求を遂行するのに関わる待ち時間は、著しく短縮することができる。
その一方で、Web要求を受信したことに対する応答として、サーバコンピュータシステム111は、対応するWeb応答の少なくとも一部が最新のキャッシュ内容でないと判別する可能性がある。方法400は、対応するWeb応答に入れるコンテンツの少なくとも一部が現在、キャッシュされていないと判定する動作を含む(動作402)。動作402には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、Web応答に入れるコンテンツの少なくとも一部がサーバコンピュータシステムのキャッシュに現在残されていないと判定することを含めることができる。例えば、サーバコンピュータシステム111は、クライアントコンピュータシステム101に配信するWeb応答に入れるコンテンツの少なくとも一部が現在、コンピュータシステム111のキャッシュに残されていないと判定することができる。
サーバコンピュータシステム111で受信したWeb要求は、応答構築モジュール133に転送することができる。したがって、応答構築モジュール133は、適切なページファイル(例えば、ASPファイル)を取り出し、そのページファイルを処理して、対応するWeb応答を構築することができる。ページファイルに含まれるスクリプトは、サーバコンピュータシステム111の外部にある場所(テーブル162および/または163)に格納されているコンテンツを要求することができる。外部コンテンツの要求が処理されると、応答構築モジュール133は適切な命令をキャッシュインターフェースモジュール132に送信し、キャッシュインターフェースモジュール132にキャッシュ112内の外部コンテンツを見つけさせようとする。外部コンテンツがキャッシュ112に格納されている場合、キャッシュインターフェースモジュール132は応答構築モジュール133に応答し、外部コンテンツがキャッシュ112に格納されていることを知らせることができる。その一方で、外部コンテンツがキャッシュ112に格納されていない場合、キャッシュインターフェースモジュール132は応答構築モジュール133に応答し、外部コンテンツがキャッシュ112に格納されていないことを知らせることができる。
Web応答に含めるコンテンツの少なくとも一部がキャッシュに残されていないと判定された場合、サーバコンピュータシステム111は、さらに、コンテンツの少なくとも一部がデータベース141内のデータテーブルに依存しているか判別することができる。コンテンツの少なくとも一部がデータベース141内のデータテーブルに依存している場合、サーバコンピュータシステム111は、さらに、データテーブルの対応するキーエントリがキャッシュ112に格納されているかどうかを判別することができる。対応するキーエントリがキャッシュ112に格納されていない場合、サーバコンピュータシステム111は、(例えば、変更通知テーブル142から)データテーブルの適切なバージョン情報を取り出して、適切なバージョン情報を含む対応するキーエントリをキャッシュ112に格納することができる。
方法400は、データテーブルの要求されたコンテンツにアクセスする動作を含む(動作403)。動作403には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、データテーブルの要求されたコンテンツにアクセスすることを含めることができる。例えば、サーバコンピュータシステム111は、データベース141内のデータテーブルの要求されたコンテンツにアクセスすることができる。要求されたコンテンツがキャッシュ112に格納されていないという連絡に対する応答として、応答構築モジュール133は適切な命令を(例えば、問合せを発行することにより)データベースインターフェースモジュール136に送信し、データベースインターフェースモジュール136にデータベース141内の要求されたコンテンツを探させることができる。データベース141は、要求されたコンテンツ(例えば、レコード164、166、174、および/または176の中から)を見つけて、その要求されたコンテンツをデータベースインターフェースモジュール136に返すことができる。その後、データベースインターフェースモジュール136は、要求されたコンテンツを応答構築モジュール133に転送することができる。
方法400は、対応するWeb応答を構築する動作を含み、Web応答は要求されたコンテンツを含む(動作404)。動作404には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、Web応答を構築することを含めることができる。例えば、サーバコンピュータシステム111は、クライアントコンピュータシステム101に返すべきWeb応答にデータベース141からのコンテンツを格納することができる。応答構築モジュール133は、データベースインターフェースモジュール136から受信した要求された(例えば、レコード164、166、174、および/または176からの)コンテンツを格納し、Web要求に応えることができる。要求されたコンテンツ(だけでなく、該当するページファイルに含まれる他のHTMLおよびXMLコマンドおよびスクリプト)に基づき、応答構築モジュール133は適切なWeb応答を生成することができる。
方法400は、要求されたコンテンツに効率よくアクセスし、その後のWeb要求に応じられるように要求されたコンテンツを格納する機能的結果指向のステップを含む(ステップ407)。ステップ407は、要求されたコンテンツに効率よくアクセスし、その後のWeb要求に応じられるように要求されたコンテンツを格納する対応する動作を含むことができる。しかし、図4の例では、ステップ407は、構築されたWeb応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てる対応する動作を含む(動作405)。動作405には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、構築されたWeb応答の少なくとも一部にデータベースキャッシュ依存関係を割り当てることを含めることができる。
ステップ407はさらに、構築されたWeb応答の少なくとも一部をキャッシュする対応する動作も含む(動作406)。動作406には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、構築されたWeb応答の少なくとも一部をキャッシュすることを含めることができる。サーバコンピュータシステムは、構築されたWeb応答の少なくとも一部を、サーバコンピュータシステム側にあるキャッシュに残すことができる。例えば、キャッシュインターフェースモジュール132は、構築されたWeb応答がクライアントコンピュータシステム101に配信される前に、応答構築モジュール133により構築された構築Web応答の少なくとも一部をキャッシュ112に格納するようにできる。
Web応答を丸ごとキャッシュする場合は、Web応答を押し下げる形で、サーバコンピュータシステムの下の方のレベル、例えば、カーネルモード応答キャッシュにキャッシュすることができる。例えば、Web応答全体を、Internet Information Server(「IIS」)モジュールにより保持されているキャッシュにプッシュすることも可能である。したがって、Web応答は、無効化されると、下位のキャッシュから削除される。
Web応答構築時に実行したコマンドの結果として、データベースキャッシュ依存を割り当て、コンテンツの少なくとも一部をキャッシュすることができる。いくつかの実施形態では、データベースキャッシュ依存関係がWeb応答内のコンテンツの一部に割り当てられる。以下の第1の命令の例をページファイルに記述して、Web応答のコンテンツの一部にデータベースキャッシュ依存関係を割り当てるようにできる。
Figure 0004578160
第1の命令の例の3行目では、データ型SqlCacheDependencyの変数「c」を作成する。SqlCacheDependencyは、データベースキャッシュ依存関係を表すためすでに確立されているデータ型とすることができる。この第1の命令の例の4行目では、「pubs」データベースに格納されている「products」テーブルに対する依存関係を表す変数cを割り当てている。これは、例えば、データベース141に格納されているテーブル162への依存関係を表すことも可能である。第1の命令の例の5行目では、データ型「ProductCollection」の変数「p」を作成する。ProductCollectionは、productsデータベースから取り出されたproductsのリストを表すためにすでに確立されているデータ型とすることができる。「getproducts()」関数は、5行目で実行され、変数pに格納されるproductsのリスト(例えば、テーブル162および/または163から)を返す。
第1の命令の例の6行目では、キャッシュエントリを作成する(例えば、キャッシュ112の中に)。キャッシュエントリは、「Pinfo」というキーで作成され、後でキャッシュエントリを参照するのに使用することができる。キャッシュエントリは、変数pにより表されるproductsのリストを格納するために作成され(例えば、応答コンテンツ122として)、またキャッシュエントリは、変数cにより表されるpubsデータベース内のproductsテーブルに依存する(例えば、テーブルID123として)。第1の命令の例は、複数のWeb応答にコンテンツの同じ部分を入れる場合に特に都合がよい。以下の命令の例は、キャッシュに入っているproductsのリストを取り出すためにページファイルに記述することができる。
Figure 0004578160
pubsデータベース内のproductsテーブルが変更されたことが検出されると、キーPinfoにより参照されるキャッシュエントリは無効化される。他の実施形態では、データベースキャッシュ依存関係はWeb応答全体に割り当てられる。以下の第2の命令の例をページファイルに記述して、Web応答全体にデータベースキャッシュ依存関係を割り当てるようにできる。
Figure 0004578160
第2の命令の例の1行目は、ページファイルからの結果として生じたWeb応答全体を「pubs」データベースに格納されている「products」テーブルに依存させるディレクティブである。キャッシュエントリを作成して、ページファイルから得られるWeb応答全体を(例えば、応答コンテンツ127として)キャッシュすることができる。4行目の省略記号は、例えば、ページファイルを処理するときに、pubsデータベース内のproductsテーブルにアクセスするなどの他のスクリプト命令を実行できることを示している。第2の命令の例は、複数のクライアントが同じWeb応答を要求した場合に特に都合がよい。
データベースキャッシュ依存関係は、1つ以上の他のキャッシュ依存関係、例えば、時刻、ファイル、キー、および/またはWebサービスキャッシュ依存関係またはさらには他のデータベースキャッシュ依存関係と併用される可能性がある。例えば、以下の命令の例をページファイルに記述して、Web応答全体にデータベースキャッシュ依存関係と時間依存関係の両方を割り当てるようにできる。
<% Output Cache Duration= 600s SglTableDepend="pubs:customers"%>
このディレクティブの例では、対応するWeb応答を、対応するWeb応答が作成されてから600秒間、または「pubs」データベース内の「customers」テーブルが変更されるまで、キャッシュに残す。
いくつかの実施形態では、1つ以上のキャッシュエントリはキー依存キャッシュエントリであり、データベース依存キャッシュエントリに依存する(つまり、リンクされる)(したがって、キー依存関係が生じる)。したがって、データベース依存キャッシュエントリを無効化すると、キー依存キャッシュエントリのそれぞれも無効化される。キー依存キャッシュエントリはキャッシュ内の(例えば、システムメモリ内の)他のデータに依存するので、キー依存キャッシュエントリの無効化は、データベース依存キャッシュエントリの無効化(データベースの問合せ、ネットワーク通信、データシリアル化などを必要とする場合がある)よりも効率がよい。したがって、キャッシュエントリの無効化の効率を高めるために、第2のキャッシュエントリに(キー依存関係を通じて)依存するように依存するコンテンツを含む第1のキャッシュエントリを構成することができる。対応するデータテーブルの変更が検出されると、第2のキャッシュエントリにより、依存するキャッシュエントリが無効化される。検出された変更に対する応答として、第2のキャッシュエントリをさらにキャッシュから削除するか、または対応するデータテーブルの適切なバージョン情報を更新することができる。
例えば、キャッシュエントリ121およびキャッシュエントリ126は両方ともテーブル162に依存する可能性がある(例えば、テーブルID123およびテーブルID128は両方とも、テーブルID152に対応する)。応答コンテンツ122および応答コンテンツ127をいつ無効化するかを効率よく決められるようにするために、テーブル162に依存するキーエントリをキャッシュ112(つまり、システムメモリ)に挿入することができる。キャッシュエントリ121および126を挿入されたキーエントリに依存させることができる。テーブル162が変更された場合、その後データベース141に問い合わせることにより、変更ID153が更新されることを識別し、挿入されたキーエントリを無効化することができる。挿入されたキーエントリを無効化すると、変更ID124および変更ID129を直接変更ID153と比較しなくても、キャッシュエントリ121および126が自動的に無効化される。したがって、データベース問合せおよびバージョン比較の回数を減らすことができ、ネットワーク、データベース、および処理資源を節約することができる。
方法400は、Web要求に対する応答として構築されたWeb応答をクライアントコンピュータシステムに配信する動作を含む(動作408)。動作408には、少なくとも1つのデータテーブルのコンテンツを含むWeb応答を構築するサーバコンピュータシステムが、構築されたWeb応答をクライアントコンピュータシステムに配信することを含めることができる。例えば、サーバコンピュータシステム111は、クライアントコンピュータシステム101からのWeb要求に対する応答として、Web応答をクライアントコンピュータシステム101に配信することができる。配信されるWeb応答は、応答構築モジュール133により構築されるWeb応答とすることができる。
図5は、本発明の原理に好適な動作環境を例示している。図5および以下の説明は、本発明を実施できる適当なコンピューティング環境について簡潔に述べた一般的な説明である。必要というわけではないが、本発明について、コンピュータシステムによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈において説明する。一般に、プログラムモジュールには、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書で開示している方法の動作を実行するプログラムコード手段の例を表している。
図5を参照すると、本発明を実装するシステム例は、処理ユニット521、システムメモリ522、およびシステムメモリ522を含むさまざまなシステムコンポーネントを処理ユニット521に結合するシステムバス523を備える、コンピュータシステム520の形をとる汎用コンピューティングデバイスを含む。処理ユニット521は、本発明の特徴などのコンピュータシステム520の特徴を実装するように設計されているコンピュータ実行可能命令を実行することができる。システムバス523は、メモリバスまたはメモリコントローラ、周辺機器バス、および各種バスアーキテクチャを採用するローカルバスを含む数種類のバス構造のどれでもよい。システムメモリは、読み取り専用メモリ(「ROM」)524およびランダムアクセスメモリ(「RAM」)525を含む。起動時などにコンピュータ520内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム(「BIOS」)526は、ROM524に格納することができる。
コンピュータシステム520は、磁気ハードディスク539への読み書きを行うための磁気ハードディスクドライブ527、取り外し可能磁気ディスク529への読み書きを行うための磁気ディスクドライブ528、取り外し可能光ディスク531、例えば、CD−ROMまたはその他の光媒体への読み書きを行うための光ディスクドライブ530を備えることもできる。磁気ハードディスクドライブ527、磁気ディスクドライブ528、および光ディスクドライブ530は、ハードディスクドライブインターフェース552、磁気ディスクドライブインターフェース533、および光ドライブインターフェース534によりそれぞれシステムバス523に接続される。ドライブおよび関連コンピュータ可読媒体は、コンピュータ520用のコンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータを格納する不揮発性記憶装置を備える。本明細書で説明している環境例では磁気ハードディスク539、取り外し可能磁気ディスク529、および取り外し可能光ディスク531を採用しているが、磁気カセット、フラッシュメモリカード、デジタル多目的ディスク、ベルヌーイカートリッジ、RAM、ROMなどの、データを格納するための他の種類のコンピュータ可読媒体を使用することができる。
ハードディスク539、磁気ディスク529、光ディスク531、ROM524、またはRAM525には、オペレーティングシステム535、1つ以上のアプリケーションプログラム536、その他のプログラムモジュール537、およびプログラムデータ538など1つ以上のプログラムモジュールを含むプログラムコード手段を格納できる。ユーザは、キーボード540、ポインティングデバイス542、または例えば、マイク、ジョイスティック、ゲームパッド、スキャナなどの他の入力デバイス(図に示されていない)を介してコンピュータ520にコマンドおよび情報を入力できる。これらの入力デバイスやその他の入力デバイスは、システムバス523に結合されているシリアルポートインターフェース546を通じて処理ユニット521に接続することができる。それとは別に、入力デバイスは、例えば、パラレルポート、ゲームポート、ユニバーサルシリアルバス(「USB」)、またはFire Wireポートなどの他のインターフェースにより接続することができる。モニタ547またはその他の種類の表示デバイスも、ビデオアダプタ548を介してバス523に接続される。コンピュータシステム520も、他の周辺機器出力デバイス(図に示されていない)、例えば、スピーカおよびプリンタなどに接続することもできる。
コンピュータシステム520は、例えば、オフィス全体を結ぶ、または会社全体を結ぶコンピュータネットワーク、イントラネット、および/またはインターネットに接続可能である。コンピュータシステム520は、そのようなネットワーク上で外部ソース、例えば、リモートコンピュータシステム、リモートアプリケーション、および/またはリモートデータベースなどとデータを交換することができる。
コンピュータシステム520は、ネットワークインターフェース553を備え、このインターフェースを通じて、コンピュータシステム520は外部ソースからデータを受信し、かつ/またはデータを外部ソースに送信する。図5に示されているように、ネットワークインターフェース553を使用することで、リンク551を介したリモートコンピュータシステム583とのデータの交換が円滑に行われる。リンク551はネットワークの一部を表しており、リモートコンピュータシステム583はネットワークのノードを表している。例えば、リモートコンピュータシステム583は、コンピュータシステム520で構築されたWeb応答のコンテンツを供給するデータベースを保持することができる。その一方で、コンピュータシステム583は、コンピュータシステム520に保持されるデータベースにコンテンツを要求したサーバコンピュータでもよい。
同様に、コンピュータシステム520は、シリアルポートインターフェース546を備え、このインターフェースを通じて、コンピュータシステム520は、外部ソースからデータを受信し、かつ/またはデータを外部ソースに送信する。シリアルポートインターフェース546はモデム554に結合され、このモデムを通じて、コンピュータシステム520は外部ソースからデータを受信し、かつ/またはデータを外部ソースに送信する。それとは別に、モデム554は、適切なインターフェースを介してコンピュータシステム520に接続されているData Over Cable Service Interface Specification(「DOCSIS」)モデムまたはデジタル加入者回線(「DSL」)モデムとすることができる。しかし、図5に示されているように、シリアルポートインターフェース546およびモデム554を使用することにより、リンク552を介したリモートコンピュータシステム593とのデータの交換が円滑に行われる。リンク552はネットワークの一部を表しており、リモートコンピュータシステム593はネットワークのノードを表している。例えば、リモートコンピュータシステム593は、コンピュータシステム520にWeb応答を要求するクライアントコンピュータシステムとすることができる。一方、コンピュータシステム593は、コンピュータシステム520にWeb応答を供給するサーバコンピュータシステムとすることができる。
図5は本発明の適当なオペレーティング環境を表しているが、本発明の原理は、必要ならば適当な修正を加えることで、本発明の原理を実装することができる任意のシステムで採用することができる。図5に示されている環境は、説明のためのみであり、決して、本発明の原理が実装されるさまざまな環境の小さな一部すら表すものではない。
本発明のモジュールは、関連するデータとともに格納することができ、コンピュータシステム520に関連するコンピュータ可読媒体からアクセスすることができる。例えば、そのようなモジュールの一部および関連するプログラムデータの一部をオペレーティングシステム535、アプリケーションプログラム536、プログラムモジュール537、および/またはプログラムデータ538に含め、システムメモリ522に格納することができる。大容量記憶デバイス、例えば、磁気ハードディスク539がコンピュータシステム520に結合されている場合、そのようなモジュールおよび関連するプログラムデータも、大容量記憶デバイスに格納することができる。ネットワークで接続された環境において、コンピュータシステム520に関して示されているプログラムモジュールおよび関連するデータ、またはその一部をリモートメモリ記憶デバイス、例えば、リモートコンピュータシステム583および/またはリモートコンピュータシステム593に関連付けられたシステムメモリおよび/または大容量記憶デバイスに格納することができる。このようなモジュールは、すでに述べているように、分散環境で実行することができる。
本発明は、本発明の精神または本質的特徴から逸脱することなく他の特定の形で実現することが可能である。説明した実施形態は、すべての点で、説明のみを目的としており、制限することを目的としていないとみなすべきである。したがって、本発明の範囲は、上記の説明ではなく、付属の請求項で指示される。請求項の同等性の意味および範囲内にあるすべての変更は本発明の範囲に含まれるものとする。
本発明の原理による、データベーステーブルに生じた変更に依存するようにキャッシュエントリを構成し、その変更に基づいてキャッシュエントリを無効化する操作を円滑にするネットワークアーキテクチャ例を示す図である。 本発明の原理による、テーブル変更通知を出すようにデータベースを構成する方法の例の流れ図である。 本発明の原理による、キャッシュされているコンテンツの一部を無効化する方法の例の流れ図である。 本発明の原理による、要求側クライアントコンピュータシステムに送るコンテンツにアクセスする方法の例の流れ図である。 本発明の原理に好適な動作環境を例示する図である。
符号の説明
101 クライアントコンピュータシステム
102 ブラウザ
106 ネットワーク
111 サーバコンピュータシステム
112 キャッシュ
122 応答コンテンツ
123 テーブルID
124 変更ID
127 応答コンテンツ
128 テーブルID
129 変更ID
132 キャッシュインターフェースモジュール
133 応答構築モジュール
134 応答コンテンツ
136 データベースインターフェースモジュール
141 データベース
142 変更通知テーブル
152 テーブルID
153 変更ID
154 日付
157 テーブルID
158 変更ID
159 日付
162 テーブル
163 データ
164 レコード
166 レコード
167 トリガ
172 テーブル
173 データ
174 レコード
176 レコード
177 トリガ
520 コンピュータシステム
521 処理ユニット
522 システムメモリ
523 システムバス
532 ハードディスクドライブインターフェース
533 磁気ディスクドライブインターフェース
534 光ドライブインターフェース
535 オペレーティングシステム
536 アプリケーションプログラム
537 その他のプログラムモジュール
538 プログラムデータ
540 キーボード
546 シリアルポートインターフェース
547 モニタ
548 ビデオアダプタ
553 ネットワークインターフェース
554 モデム
583 リモートコンピュータシュテム
593 リモートコンピュータシステム

Claims (23)

  1. 1つ以上のデータテーブルを有するデータベースにアクセスするコンピュータシステムにおいて、前記コンピュータシステムはウェブベースコンテンツの要求に対して、ウェブベース応答中に含めるために、前記データベースからのコンテンツをウェブサーバに提供するように構成されていて、前記コンピュータシステムはその後のウェブベース応答を構築する時にキャッシュされたデータベースコンテンツに一層効率的なアクセスを提供するためにウェブベース応答に含まれるデータベースコンテンツをキャッシュするように構成されたキャッシュを含んでいて、データベースコンテンツに対するウェブベース要求を受信することに応答してウェブベース応答を構築してキャッシュするため、前記コンピュータシステムにより実行される方法であって、
    前記キャッシュの中に既にウェブベースコンテンツに対する要求により要求されたウェブベースコンテンツのキャッシュエントリが存在しているかどうかを決定する動作と、
    キャッシュエントリが存在していないという決定時に、
    コンテンツ変化を監視するためのデータテーブルを前記データベースの1つ以上のデータテーブルから選択する動作と、
    前記選択されたデータテーブルに対するレコードを別の変化通知テーブルに挿入する動作と、前記レコードは前記選択されたデータテーブルに対応して識別するバージョン情報を含み、前記バージョン情報は前記選択されたデータテーブルからのキャッシュ可能なコンテンツを含んだ対応するキャッシュエントリが無効である時を決定するために前記ウェブサーバにより検索可能なものであり、
    前記選択されたデータテーブルにトリガを割当てる動作と、前記トリガは前記選択されたデータテーブル内のコンテンツが変更された時に前記変化通知テーブル内の前記選択されたテーブルに対する前記バージョン情報を更新するように構成されていて、
    前記キャッシュ内のキャッシュエントリ内に複数の異なるウェブベース応答の生成に使用できる暫定的結果をキャッシュする動作と、前記暫定的結果は前記選択されたデータテーブルからの1以上のレコードに基づいており、前記キャッシュエントリは前記キャッシュエントリ内の前記選択されたデータテーブルに対応して識別する前記バージョン情報を含むことにより前記選択されたデータテーブルに依存して作成されており、
    前記キャッシュエントリ内の前記暫定的結果をキャッシュした後に前記暫定的結果を含むウェブベース応答に対するウェブベース要求を受信する動作と、前記ウェブベース要求は前記ウェブベース応答を決定するために実行される1つ以上のスクリプトを含んだページファイルに対応しており、
    前記選択されたデータテーブルに対応して識別するバージョン情報のために前記変更通知テーブルを照会する動作と、
    前記選択されたデータテーブルに対応して識別する現在のバージョン情報を受信する動作と、
    前記キャッシュされたバージョン情報と現在のバージョン情報とを比較する動作と、
    コンテンツの部分に対する前記ウェブベース要求の受信に応答しそして前記バージョン情報を比較した結果に基づいてウェブベース応答内に含めるために前記暫定結果をどのようにアクセスするかを決定する動作と、該動作は前記暫定的結果が前記選択されたデータテーブル内の1以上のレコード及び1以上の他のデータテーブル内の1以上のレコードから再構築されるべきかを決定する動作を含み、
    前記決定に従って前記暫定的結果にアクセスする動作と、該動作は、暫定的結果が前記ウェブベース要求が受信された時に前記コンピュータシステムにキャッシュされていたかどうかにかかわらず、前記暫定的結果を前記選択されたデータテーブル内の1以上のレコード及び1以上の他のデータテーブル内の1以上のレコードから再構築する動作を含み、
    前記暫定的結果に基づいて前記ウェブベース要求に応答したウェブベース応答を構築するために1以上のスクリプトを含んだページファイル内に含まれた命令を実行する動作と、
    前記ウェブベース応答の構築の際に実行される命令に基づいて、
    前記構築されたウェブベース応答の少なくとも1部分にデータベースキャッシュ依存性を割当てる動作と、前記実行される命令は前記データベースキャッシュエントリが依存する少なくとも1つのテーブルと少なくとも1つのデータベースとを定義し、さらに前記キャッシュ依存性が依存する前記構築されたウェブベース応答の1部分を定義し、
    前記キャッシュ中のキャッシュエントリ内に前記構築されたウェブベース応答の少なくとも1部分をキャッシュする動作と
    を実行することを含む方法。
  2. 請求項1に記載の方法であって、前記コンテンツの変更が監視されるデータテーブルを選択する動作は、コンテンツの変更が監視されるデータテーブルを前記コンピュータシステムに選択させるユーザ入力を受信する動作を備えることを特徴とする方法。
  3. 請求項1に記載の方法であって、前記コンテンツの変更が監視されるデータテーブルを選択する動作は、受信したWeb要求に応答して、前記コンピュータシステムがデータテーブルを自動的に選択する動作を備えることを特徴とする方法。
  4. 請求項1に記載の方法であって、前記選択されたデータテーブルに対応するレコードを変更通知テーブルに挿入する動作は、ユーザ入力に応答して前記レコードを挿入する動作を備えることを特徴とする方法。
  5. 請求項1に記載の方法であって、前記選択されたデータテーブルに対応するレコードを変更通知テーブルに挿入する動作は、Web要求に応答して、前記コンピュータシステムが前記レコードを自動的に挿入する動作を備えることを特徴とする方法。
  6. 請求項1に記載の方法であって、前記選択されたデータテーブルに対応するレコードを変更通知テーブルに挿入する動作は、前記レコードをSQLテーブルに挿入する動作を備えることを特徴とする方法。
  7. 請求項1に記載の方法であって、前記選択されたデータテーブルにトリガを割り当てる動作は、前記選択されたデータテーブルにトリガを割り当てることを指令するユーザ入力を受信する動作を備えることを特徴とする方法。
  8. 請求項1に記載の方法であって、前記選択されたデータテーブルにトリガを割り当てる動作は、前記選択されたテーブルに含まれるコンテンツに対するWeb要求を受信したことに応答して、前記コンピュータシステムが前記選択されたテーブルにトリガを自動的に割り当てる動作を備えることを特徴とする方法。
  9. 請求項1に記載の方法であって、前記選択されたデータテーブルにトリガを割り当てる動作は、前記選択されたデータテーブル内のコンテンツが変更されたことに応答して実行された場合に、前記テーブル変更通知テーブルの対応する変更IDを更新するトリガを割り当てる動作を備えることを特徴とする方法。
  10. 請求項1に記載の方法であって、前記選択されたデータテーブルに対応して識別する現在のバージョン情報を受信する動作は、無効化されるべきキャッシュエントリを示す更新されたバージョン情報を受信する動作を含むことを特徴とする方法。
  11. 1つ以上のデータテーブルを有するデータベースにアクセスするコンピュータシステムにおいて実行され、前記コンピュータシステムはウェブベースコンテンツの要求に対して、ウェブベース応答中に含めるために、前記データベースからのコンテンツをウェブサーバに提供するように構成されていて、前記コンピュータシステムはその後のウェブベース応答を構築する時にキャッシュされたデータベースコンテンツに一層効率的なアクセスを提供するためにウェブベース応答に含まれるデータベースコンテンツをキャッシュするように構成されたキャッシュを含んでいて、データベースコンテンツに対するウェブベース要求を受信することに応答してウェブベース応答を構築してキャッシュするため、前記コンピュータシステムに以下の動作を含んだ方法を実行させるための命令を含んだコンピュータプログラムであって、
    前記キャッシュの中に既にウェブベースコンテンツに対する要求により要求されたウェブベースコンテンツのキャッシュエントリが存在しているかどうかを決定する動作と、
    キャッシュエントリが存在していないという決定時に、
    コンテンツ変化を監視するためのデータテーブルを前記データベースの1つ以上のデータテーブルから選択する動作と、
    前記選択されたデータテーブルに対するレコードを別の変化通知テーブルに挿入する動作と、前記レコードは前記選択されたデータテーブルに対応して識別するバージョン情報を含み、前記バージョン情報は前記選択されたデータテーブルからのキャッシュ可能なコンテンツを含んだ対応するキャッシュエントリが無効である時を決定するために前記ウェブサーバにより検索可能なものであり、
    前記選択されたデータテーブルにトリガを割当てる動作と、前記トリガは前記選択されたデータテーブル内のコンテンツが変更された時に前記変化通知テーブル内の前記選択されたテーブルに対する前記バージョン情報を更新するように構成されていて、
    前記キャッシュ内のキャッシュエントリ内に複数の異なるウェブベース応答の生成に使用できる暫定的結果をキャッシュする動作と、前記暫定的結果は前記選択されたデータテーブルからの1以上のレコードに基づいており、前記キャッシュエントリは前記キャッシュエントリ内の前記選択されたデータテーブルに対応して識別する前記バージョン情報を含むことにより前記選択されたデータテーブルに依存して作成されており、
    前記キャッシュエントリ内の前記暫定的結果をキャッシュした後に前記暫定的結果を含むウェブベース応答に対するウェブベース要求を受信する動作と、前記ウェブベース要求は前記ウェブベース応答を決定するために実行される1つ以上のスクリプトを含んだページファイルに対応しており、
    前記選択されたデータテーブルに対応して識別するバージョン情報のために前記変更通知テーブルを照会する動作と、
    前記選択されたデータテーブルに対応して識別する現在のバージョン情報を受信する動作と、
    前記キャッシュされたバージョン情報と現在のバージョン情報とを比較する動作と、
    前記暫定的結果が前記選択されたデータテーブル内の1以上のレコード及び1以上の他のデータテーブル内の1以上のレコードから再構築されるべきかを決定することにより、コンテンツの部分に対する前記ウェブベース要求の受信に応答して前記バージョン情報を比較した結果に基づいてウェブベース応答内に含めるために前記暫定結果をどのようにアクセスするかを決定する動作と、
    前記決定に従って、前記暫定的結果が前記ウェブベース要求が受信された時に前記コンピュータシステムにキャッシュされていたかどうかにかかわらず、前記暫定的結果を前記選択されたデータテーブル内の1以上のレコード及び1以上の他のデータテーブル内の1以上のレコードから再構築することにより、前記暫定的結果にアクセスする動作と
    前記暫定的結果に基づいて前記ウェブベース要求に応答したウェブベース応答を構築するために1以上のスクリプトを含んだページファイル内に含まれた命令を実行する動作と、
    前記ウェブベース応答の構築の際に実行される前記命令に基づいて、
    前記構築されたウェブベース応答の少なくとも1部分にデータベースキャッシュ依存性を割当てる動作と、前記実行される命令は前記データベースキャッシュエントリが依存する少なくとも1つのテーブルと少なくとも1つのデータベースとを定義し、さらに前記キャッシュ依存性が依存する前記構築されたウェブベース応答の1部分を定義し、
    前記キャッシュ中のキャッシュエントリ内に前記構築されたウェブベース応答の少なくとも1部分をキャッシュする動作と
    を実行することを含むコンピュータプログラム。
  12. 請求項11に記載のコンピュータプログラムを記憶した物理媒体であることを特徴とするコンピュータ可読記録媒体
  13. 請求項11に記載のコンピュータプログラムを記憶した物理媒体はシステムメモリであることを特徴とするコンピュータ可読記録媒体。
  14. 請求項1に記載の方法であって、コンテンツの1部分に対する前記ウェブベース要求を受信することに応答してバージョン情報の比較に基づいて前記暫定的結果を含む前記キャッシュエントリを無効化する動作をさらに備えることを特徴とする方法。
  15. 請求項1に記載の方法であって、前記暫定的結果をどのようにアクセスするかを決定する動作は、前記暫定的結果が前記キャッシュエントリから検索されるべきかどうかを決定する動作を備えることを特徴とする方法。
  16. 請求項1に記載の方法であって、前記暫定的結果に基づいて前記ウェブベース要求に応答してウェブベース応答を構築する動作は、暫定的結果が前記ウェブベース要求が受信された時に前記コンピュータシステムにキャッシュされていたかどうかにかかわらず、前記再構築された暫定的結果を前記ウェブベース応答内に含める動作を備えることを特徴とする方法。
  17. 請求項11に記載のコンピュータプログラムであって、前記命令は、コンテンツの1部分に対する前記ウェブベース要求を受信することに応答してバージョン情報の比較に基づいて前記暫定的結果を含む前記キャッシュエントリを無効化する動作をさらに実行することを特徴とするコンピュータプログラム。
  18. 請求項11に記載のコンピュータプログラムであって、前記命令が、前記暫定的結果をどのようにアクセスするかを決定する動作を実行する時、前記暫定的結果が前記キャッシュエントリから検索されるべきかどうかを決定する動作を実行することを特徴とするコンピュータプログラム。
  19. 請求項11に記載のコンピュータプログラムであって、前記命令が、前記暫定的結果に基づいて前記ウェブベース要求に応答してウェブベース応答を構築する動作を実行する時、暫定的結果が前記ウェブベース要求が受信された時に前記コンピュータシステムにキャッシュされていたかどうかにかかわらず、前記再構築された暫定的結果を前記ウェブベース応答内に含める動作を実行することを特徴とするコンピュータプログラム。
  20. 1つ以上のデータテーブルを有するデータベースにアクセスするコンピュータシステムにおいて、前記コンピュータシステムはウェブベースコンテンツの要求に対して、ウェブベース応答中に含めるために、前記データベースからのコンテンツをウェブサーバに提供するように構成されていて、前記コンピュータシステムはその後のウェブベース応答を構築する時にキャッシュされたデータベースコンテンツに一層効率的なアクセスを提供するためにウェブベース応答に含まれるデータベースコンテンツをキャッシュするように構成されたキャッシュを含んでいて、データベース内に変更が検出された時、キー依存性データベース依存キャッシュエントリを持つキー依存性キャッシュエントリを無効化し、データベース依存キャッシュエントリを更新する方法であって、
    コンテンツ変化を監視するためのデータテーブルを前記データベースの1つ以上のデータテーブルから選択する動作と、
    前記選択されたデータテーブルに対するレコードを別の変化通知テーブルに挿入する動作と、前記レコードは前記選択されたデータテーブルに対応して識別するバージョン情報を含み、前記バージョン情報は前記選択されたデータテーブルからのキャッシュ可能なコンテンツを含んだ対応するキャッシュエントリが無効である時を決定するために前記ウェブサーバにより検索可能なものであり、
    前記選択されたデータテーブルにトリガを取り付ける動作と、前記トリガは前記レコードを変化するために使用されたメカニズムに関係なく、前記選択されたデータテーブル内のどんなレコードが変更された時に前記変化通知テーブル内の前記選択されたテーブルに対する前記バージョン情報を更新するように構成されていて、
    前記選択されたデータテーブル内の複数のレコード及び1以上の他のデータテーブル内の1以上のレコードを含むレコードの収集から第1暫定的結果を構築する動作と、前記第1暫定的結果は複数の異なるウェブベース応答を生成するために使用可能であり、
    前記選択されたデータテーブル内の複数のレコード及び1以上の他のデータテーブル内の1以上のレコードを含むレコードの収集から第2暫定的結果を構築する動作と、前記第2暫定的結果は複数の異なるウェブベース応答を生成するために使用可能であり、且つ、第1暫定的結果に依存しており、
    前記第1暫定的結果を前記キャッシュ内のデータベース依存キャッシュエントリ内にキャッシュする動作と、前記データベース依存キャッシュエントリは前記選択されたデータテーブルに対応して識別する前記バージョン情報を含み、
    前記第2暫定的結果を前記キャッシュ内のデータベース依存キャッシュエントリ内にキャッシュする動作と、キー依存性キャッシュエントリはデータベース依存キャッシュエントリへのキー依存性を含み、キー依存性はキー依存性キャッシュエントリが前記選択されたデータテーブル内のレコードの変化が検出された時に前記データベース依存キャッシュエントリにより無効化されるべきことを指示するものであり、
    前記選択されたデータテーブルに対応し識別するバージョン情報のために前記変更通知テーブルにブロッキング照会を発行するキャッシュインターフェイスモジュールの動作と、前記ブロッキング照会は前記選択されたデータテーブルに対する前記バージョン情報を戻す前記選択されたテーブルに対するバージョン情報が更新されるまで待つ、
    前記ブロッキング照会を発行した後、前記選択されたデータテーブル内のレコードの変化を検出する動作と、
    前記ブロッキング照会を発行した後、前記変更通知テーブル内の前記選択されたデータテーブルのための前記バージョン情報を前記割当てられたトリガが更新する動作と、
    前記ブロッキング照会に応答して、前記キャッシュインターフェイスモジュールが前記更新されたバージョン情報を受信する動作と、
    前記データベース依存キャッシュエントリ内の前記キャッシュされたバージョン情報を前記更新されたバージョン情報と比較する動作と、
    前記比較の結果に基づいて、
    前記データベース依存キャッシュエントリが前記第2暫定的結果に対する前記キー依存キャッシュエントリを無効化する動作と、
    前記第1暫定的結果に対する前記データベース依存キャッシュエントリ内の前記キャッシュされたバージョン情報を前記更新されたバージョン情報に更新する動作と、
    を含む方法。
  21. 請求項1に記載の方法であって、前記キャッシュ内の複数のキャッシュエントリは、複数のキャッシュエントリの各々の前記選択されたデータテーブルに対応して識別する前記バージョン情報を含むことにより、単一の選択されたデータテーブルに依存していることを特徴とする方法。
  22. 請求項1に記載の方法であって、前記別の変更通知テーブル内のレコードが除去されることを特徴とする方法。
  23. 請求項22に記載の方法であって、選択されたデータテーブルに対応する前記別の変更通知テーブル内のレコードが除去される時、前記レコードにより参照される前記選択されたデータテーブルに依存するようにされた複数のキャッシュエントリもまた除去されることを特徴とする方法。
JP2004189028A 2003-06-25 2004-06-25 キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し Expired - Fee Related JP4578160B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/603,532 US7624126B2 (en) 2003-06-25 2003-06-25 Registering for and retrieving database table change information that can be used to invalidate cache entries

Publications (2)

Publication Number Publication Date
JP2005018787A JP2005018787A (ja) 2005-01-20
JP4578160B2 true JP4578160B2 (ja) 2010-11-10

Family

ID=33418662

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004189028A Expired - Fee Related JP4578160B2 (ja) 2003-06-25 2004-06-25 キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し

Country Status (12)

Country Link
US (1) US7624126B2 (ja)
EP (2) EP2096555A3 (ja)
JP (1) JP4578160B2 (ja)
KR (1) KR20050001422A (ja)
CN (2) CN100461162C (ja)
AT (1) ATE444531T1 (ja)
AU (1) AU2004202508A1 (ja)
BR (1) BRPI0402506A (ja)
CA (1) CA2471813A1 (ja)
DE (1) DE602004023355D1 (ja)
MX (1) MXPA04006267A (ja)
RU (1) RU2380748C2 (ja)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624126B2 (en) * 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
US20070038889A1 (en) * 2005-08-11 2007-02-15 Wiggins Robert D Methods and systems to access process control log information associated with process control systems
US20070088700A1 (en) * 2005-10-13 2007-04-19 International Business Machines Corporation Sending keys that identify changes to clients
KR100789771B1 (ko) * 2005-12-08 2007-12-28 한국전자통신연구원 트리거를 이용한 입력 데이터 스트림과 저장 데이터의 통합질의 처리 시스템 및 그 방법
US7856455B2 (en) * 2006-03-01 2010-12-21 International Business Machines Corporation System, method and program product for generating triggers for a relational database
KR100791628B1 (ko) * 2006-06-09 2008-01-04 고려대학교 산학협력단 이동망 시스템의 능동적 캐쉬 제어 방법, 그 기록 매체 및그 시스템
US10296629B2 (en) * 2006-10-20 2019-05-21 Oracle International Corporation Server supporting a consistent client-side cache
US9697253B2 (en) * 2006-10-20 2017-07-04 Oracle International Corporation Consistent client-side cache
US20080208606A1 (en) * 2006-11-20 2008-08-28 Yapta, Inc. Dynamic Price Tracking for Products and Services in Electronic Commerce
US8095618B2 (en) 2007-03-30 2012-01-10 Microsoft Corporation In-memory caching of shared customizable multi-tenant data
EP2009638A1 (en) 2007-06-28 2008-12-31 THOMSON Licensing Video copy prevention if the difference betweeen the fingerprints before and after its modification is above a threshold
US20090024916A1 (en) * 2007-07-20 2009-01-22 Burckart Erik J Seamless Asynchronous Updates of Dynamic Content
US9600509B2 (en) * 2007-12-21 2017-03-21 Thomson Reuters Global Resources Systems, methods, and software for entity relationship resolution
US8170213B1 (en) * 2007-12-27 2012-05-01 Emc Corporation Methodology for coordinating centralized key management and encryption keys cached through proxied elements
US8239416B2 (en) 2008-05-30 2012-08-07 Armanta, Inc. System, method, and computer program product for modeling changes to large scale datasets
KR101023622B1 (ko) * 2008-12-16 2011-03-22 지에스네오텍(주) 적응적 고성능 프락시 캐시 서버 및 캐싱방법
US8380930B2 (en) * 2009-01-06 2013-02-19 Disney Enterprises, Inc. Refreshing cached data based on content identifier map
JP5395532B2 (ja) * 2009-06-22 2014-01-22 日本電信電話株式会社 クライアント装置、サーバ装置、コンピュータシステム、および、ファイルシステムアクセス方法、並びに、クライアントプログラムおよびサーバプログラム
US9292587B2 (en) * 2010-07-21 2016-03-22 Citrix System, Inc. Systems and methods for database notification interface to efficiently identify events and changed data
US8543554B1 (en) 2010-08-10 2013-09-24 ScalArc Inc. Method and system for transparent database query caching
US9275165B2 (en) * 2010-09-17 2016-03-01 Oracle International Corporation Method and apparatus for defining an application to allow polymorphic serialization
US8627448B2 (en) 2010-11-02 2014-01-07 Jose Renato Santos Selective invalidation of packet filtering results
WO2012095165A1 (en) 2011-01-10 2012-07-19 Telefonaktiebolaget Lm Ericsson (Publ) Caching of announcements at the edge of a packet switched telecommunication network
CN102622381B (zh) * 2011-03-14 2013-11-13 小米科技有限责任公司 一种网页重排版的方法和系统
CN102741843B (zh) * 2011-03-22 2014-03-26 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
US20130086323A1 (en) * 2011-09-30 2013-04-04 Oracle International Corporation Efficient cache management in a cluster
WO2013069655A1 (en) * 2011-11-07 2013-05-16 Square Enix Holdings Co., Ltd. Information processing system, control method, program, and recording medium
US8935480B1 (en) * 2012-01-09 2015-01-13 Amazon Technologies, Inc. Efficiently caching data at a client device
KR101436049B1 (ko) 2012-06-01 2014-09-01 에스케이텔레콤 주식회사 컨텐츠 캐싱 서비스 제공 방법 및 이를 위한 로컬 캐싱 장치
US10146885B1 (en) * 2012-12-10 2018-12-04 Emc Corporation Method and system for deciding on ordering of scripting language source code for dependency resolution
US8990205B2 (en) * 2013-01-28 2015-03-24 International Business Machines Corporation Data caveats for database tables
CN105188521A (zh) * 2013-03-14 2015-12-23 皇家飞利浦有限公司 用于获得对象的生命体征信息的设备和方法
CN103246696A (zh) * 2013-03-21 2013-08-14 宁波公众信息产业有限公司 高并发数据库的访问方法及应用于多服务器系统的方法
CN103336789A (zh) * 2013-06-06 2013-10-02 华为技术有限公司 一种数据库系统的锁操作方法及设备
US9420056B2 (en) 2013-06-26 2016-08-16 International Business Machines Corporation Analytics caching based on users connected
US9641640B2 (en) * 2013-10-04 2017-05-02 Akamai Technologies, Inc. Systems and methods for controlling cacheability and privacy of objects
US9813515B2 (en) 2013-10-04 2017-11-07 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation with extension to clients
US9648125B2 (en) * 2013-10-04 2017-05-09 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation
US20160267293A1 (en) * 2013-10-29 2016-09-15 Hewlett Packard Enterprise Development Lp Validating a Query Execution
US9954948B2 (en) * 2014-07-11 2018-04-24 Microsoft Technology Licensing, Llc Private content distribution network
US9672026B2 (en) 2014-07-21 2017-06-06 Xiaomi Inc. Light app offline updating method, device and terminal
CN104156233B (zh) * 2014-07-21 2016-05-18 小米科技有限责任公司 轻应用离线更新方法、装置及终端
US9753904B2 (en) * 2014-07-25 2017-09-05 Qualcomm Incorporated Fast rendering of websites containing dynamic content and stale content
CN104202360B (zh) * 2014-08-13 2015-12-30 小米科技有限责任公司 访问网页的方法、装置及路由器
US9654576B2 (en) * 2014-09-12 2017-05-16 Sap Se Database triggered push notification
GB201505067D0 (en) * 2015-03-25 2015-05-06 Advanced Risc Mach Ltd Rendering systems
US9760591B2 (en) 2015-05-14 2017-09-12 Walleye Software, LLC Dynamic code loading
US10868665B1 (en) * 2015-05-18 2020-12-15 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring accesses to sensitive data
US10311229B1 (en) 2015-05-18 2019-06-04 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring alternatives in code
US10061852B1 (en) * 2015-05-19 2018-08-28 Amazon Technologies, Inc. Transparent proxy tunnel caching for database access
US10185744B2 (en) * 2015-06-23 2019-01-22 Sap Se Caching views on historical data
CN104965935B (zh) * 2015-08-06 2018-10-12 上海携程商务有限公司 网络监控日志的更新方法
US9876873B1 (en) 2015-10-21 2018-01-23 Perfect Sense, Inc. Caching techniques
US10353895B2 (en) * 2015-11-24 2019-07-16 Sap Se Atomic visibility switch for transactional cache invalidation
US9916465B1 (en) * 2015-12-29 2018-03-13 Palantir Technologies Inc. Systems and methods for automatic and customizable data minimization of electronic data stores
US9591047B1 (en) * 2016-04-11 2017-03-07 Level 3 Communications, Llc Invalidation in a content delivery network (CDN)
CN108280097B (zh) * 2017-01-06 2022-09-09 阿里云计算有限公司 一种数据库系统的故障处理方法和装置
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
US11567934B2 (en) 2018-04-20 2023-01-31 Oracle International Corporation Consistent client-side caching for fine grained invalidations
US11403366B2 (en) * 2018-09-30 2022-08-02 Hewlett Packard Enterprise Development Lp On-demand retrieval of information from databases
US10977244B2 (en) * 2018-11-06 2021-04-13 Snowflake Inc. Tracking intermediate changes in database data
US10922229B2 (en) 2019-03-11 2021-02-16 Microsoft Technology Licensing, Llc In-memory normalization of cached objects to reduce cache memory footprint
KR102027823B1 (ko) * 2019-04-24 2019-10-02 주식회사 리앙커뮤니케이션즈 플러그 인 방식의 시스템 응답 성능향상 지능형 캐싱 시스템
CN110413679B (zh) * 2019-07-31 2023-01-24 深圳前海微众银行股份有限公司 数据库信息处理方法、装置、设备及可读存储介质
WO2022173555A1 (en) * 2021-02-13 2022-08-18 Oracle International Corporation Invalidating cached flow information in a cloud infrastructure
US20220382680A1 (en) * 2021-05-28 2022-12-01 Zoom Video Communications, Inc. Versioning Group Cache System
CN116016397B (zh) * 2023-03-28 2023-05-30 湖南毂梁微电子有限公司 一种报文传输缓冲区快速检索方法和电路

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1165905A (ja) * 1997-08-22 1999-03-09 Nec Corp HomePage更新履歴情報の利用によるwwwサービス方式
JPH11149405A (ja) * 1997-11-14 1999-06-02 Hitachi Ltd Wwwキャッシュシステムおよびwwwデータの先読み方法
JP2000089996A (ja) * 1998-09-16 2000-03-31 Nec Corp 情報処理装置およびデータベースシステム
JP2001312218A (ja) * 2000-04-28 2001-11-09 Shizuki Electric Co Inc 情報表示器
JP2002073401A (ja) * 2000-08-28 2002-03-12 Mitsubishi Electric Corp Wwwコンテンツ配信システム、プロキシサーバ装置、wwwサーバ装置、wwwコンテンツ配信方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2002312218A (ja) * 2001-04-10 2002-10-25 Ricoh Co Ltd レプリケーションデータベースシステム及びその制御プログラムが記録されたコンピュータ読取り可能な記録媒体

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897634A (en) * 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
US6493720B1 (en) * 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
EP0959416A3 (en) 1998-05-08 2005-08-10 International Business Machines Corporation Using database query technology for message subscriptions in messaging systems
US6185608B1 (en) * 1998-06-12 2001-02-06 International Business Machines Corporation Caching dynamic web pages
US6466949B2 (en) * 1998-11-23 2002-10-15 Myway.Com Corporation Performing event notification in a database having a distributed web cluster
US6516327B1 (en) * 1998-12-24 2003-02-04 International Business Machines Corporation System and method for synchronizing data in multiple databases
US6487641B1 (en) * 1999-04-19 2002-11-26 Oracle Corporation Dynamic caches with miss tables
US6405191B1 (en) * 1999-07-21 2002-06-11 Oracle Corporation Content based publish-and-subscribe system integrated in a relational database system
US6757708B1 (en) * 2000-03-03 2004-06-29 International Business Machines Corporation Caching dynamic content
US8060389B2 (en) * 2000-06-07 2011-11-15 Apple Inc. System and method for anonymous location based services
US6591266B1 (en) * 2000-07-14 2003-07-08 Nec Corporation System and method for intelligent caching and refresh of dynamically generated and static web content
EP1178402A1 (en) * 2000-08-03 2002-02-06 Hsing Tech Enterprises Co., Ltd. Method and apparatus for actively updating program file(s) of a client computer
US6732237B1 (en) * 2000-08-29 2004-05-04 Oracle International Corporation Multi-tier caching system
US7139973B1 (en) * 2000-11-20 2006-11-21 Cisco Technology, Inc. Dynamic information object cache approach useful in a vocabulary retrieval system
US20020116582A1 (en) * 2000-12-18 2002-08-22 Copeland George P. Batching of invalidations and new values in a web cache with dynamic content
EP1227667A1 (en) * 2001-01-18 2002-07-31 Sony Service Centre (Europe) N.V. Method and device for providing downloaded objects to an application
US6917922B1 (en) * 2001-07-06 2005-07-12 Amazon.Com, Inc. Contextual presentation of information about related orders during browsing of an electronic catalog
US7269648B1 (en) * 2001-09-27 2007-09-11 Emc Corporation Resolving multiple master node conflict in a DDB
US8290909B2 (en) * 2001-11-15 2012-10-16 International Business Machines Corporation Access manager for databases
US6970981B2 (en) * 2001-12-21 2005-11-29 Tibco Software, Inc. Method and apparatus to maintain consistency between an object store and a plurality of caches utilizing transactional updates to data caches
US6871268B2 (en) * 2002-03-07 2005-03-22 International Business Machines Corporation Methods and systems for distributed caching in presence of updates and in accordance with holding times
US7089228B2 (en) * 2002-04-18 2006-08-08 International Business Machines Corporation Computer apparatus and method for caching results of a database query
US6996584B2 (en) 2002-05-14 2006-02-07 Pervasive Software, Inc. System and method of maintaining functional client side data cache coherence
US7136885B2 (en) * 2002-12-20 2006-11-14 International Business Machines Corporation Free space management
US6950823B2 (en) * 2002-12-23 2005-09-27 International Business Machines Corporation Transparent edge-of-network data cache
US7765196B2 (en) * 2003-06-23 2010-07-27 Dell Products L.P. Method and apparatus for web cache using database triggers
US7624126B2 (en) * 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
US7318074B2 (en) * 2003-11-17 2008-01-08 International Business Machines Corporation System and method for achieving deferred invalidation consistency

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1165905A (ja) * 1997-08-22 1999-03-09 Nec Corp HomePage更新履歴情報の利用によるwwwサービス方式
JPH11149405A (ja) * 1997-11-14 1999-06-02 Hitachi Ltd Wwwキャッシュシステムおよびwwwデータの先読み方法
JP2000089996A (ja) * 1998-09-16 2000-03-31 Nec Corp 情報処理装置およびデータベースシステム
JP2001312218A (ja) * 2000-04-28 2001-11-09 Shizuki Electric Co Inc 情報表示器
JP2002073401A (ja) * 2000-08-28 2002-03-12 Mitsubishi Electric Corp Wwwコンテンツ配信システム、プロキシサーバ装置、wwwサーバ装置、wwwコンテンツ配信方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2002312218A (ja) * 2001-04-10 2002-10-25 Ricoh Co Ltd レプリケーションデータベースシステム及びその制御プログラムが記録されたコンピュータ読取り可能な記録媒体

Also Published As

Publication number Publication date
CN101452484B (zh) 2011-10-05
MXPA04006267A (es) 2005-03-31
CN101452484A (zh) 2009-06-10
US20040267824A1 (en) 2004-12-30
CA2471813A1 (en) 2004-12-25
KR20050001422A (ko) 2005-01-06
JP2005018787A (ja) 2005-01-20
AU2004202508A1 (en) 2005-01-20
DE602004023355D1 (de) 2009-11-12
ATE444531T1 (de) 2009-10-15
BRPI0402506A (pt) 2005-05-31
EP2096555A2 (en) 2009-09-02
EP2096555A3 (en) 2009-12-02
CN100461162C (zh) 2009-02-11
US7624126B2 (en) 2009-11-24
RU2380748C2 (ru) 2010-01-27
EP1492027B1 (en) 2009-09-30
CN1577327A (zh) 2005-02-09
RU2004119359A (ru) 2006-01-10
EP1492027A1 (en) 2004-12-29

Similar Documents

Publication Publication Date Title
JP4578160B2 (ja) キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し
US6615235B1 (en) Method and apparatus for cache coordination for multiple address spaces
US6507891B1 (en) Method and apparatus for managing internal caches and external caches in a data processing system
US6981105B2 (en) Method and apparatus for invalidating data in a cache
US6457103B1 (en) Method and apparatus for caching content in a data processing system with fragment granularity
US6557076B1 (en) Method and apparatus for aggressively rendering data in a data processing system
US8307364B2 (en) Multi-threaded annotator for hypertext information
US8452925B2 (en) System, method and computer program product for automatically updating content in a cache
JP4448444B2 (ja) モバイルアプリケーション用データをキャッシュするためのシステムおよび方法
JP4629371B2 (ja) キャッシュエントリを無効化する汎用依存関係モデル
JP3160719B2 (ja) コンピュータのネットワークからワールドワイドウェッブ上のページを捜し出したり、ドキュメントを捜し出したりするためのシステム及び方法
US8509266B2 (en) Using network traffic logs for search engine index updates
JP2004303211A (ja) データベース結果および導出オブジェクトをキャッシュし、無効にするためのシステムおよび方法
RU2358306C2 (ru) Подстановка после кэширования
JP2003006036A (ja) クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
US7765196B2 (en) Method and apparatus for web cache using database triggers
US20100325363A1 (en) Hierarchical object caching based on object version
JP2000137689A (ja) 共用データキャッシュ処理方法及びその実施装置並びにその処理プログラムを記録した媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100715

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

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

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

Free format text: PAYMENT UNTIL: 20130903

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4578160

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees