JP2006511876A - トランスペアレントなネットワークのエッジ・データ・キャッシュ - Google Patents

トランスペアレントなネットワークのエッジ・データ・キャッシュ Download PDF

Info

Publication number
JP2006511876A
JP2006511876A JP2004564792A JP2004564792A JP2006511876A JP 2006511876 A JP2006511876 A JP 2006511876A JP 2004564792 A JP2004564792 A JP 2004564792A JP 2004564792 A JP2004564792 A JP 2004564792A JP 2006511876 A JP2006511876 A JP 2006511876A
Authority
JP
Japan
Prior art keywords
query
cache
database
local
server
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.)
Granted
Application number
JP2004564792A
Other languages
English (en)
Other versions
JP2006511876A5 (ja
JP4416663B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2006511876A publication Critical patent/JP2006511876A/ja
Publication of JP2006511876A5 publication Critical patent/JP2006511876A5/ja
Application granted granted Critical
Publication of JP4416663B2 publication Critical patent/JP4416663B2/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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

Abstract

ローカル・アプリケーションによって実行される照会に基づいて、データを動的にキャッシュに入れるためのシステム(100)、装置(200)、及び方法(300)が提供され、ここで、このシステムは、完全なデータベース(101)を有する遠隔サーバ(108)と、該完全なデータベースのサブセットを含み、該遠隔サーバと信号通信状態にあるエッジ・サーバ(109)上のローカル・データベース(104)と、該完全なデータベースからの結果をキャッシュに入れ、局所的に生成されたデータを受信し、該ローカル・データベースと遠隔データベースとの間のデータの整合性を確保しながら、使用可能な格納要件に基づいてキャッシュ(600)のコンテンツを調整するための、該エッジ・サーバ上の該ローカル・データベース内にある共有テーブル(503、603)とを含む。この装置は、照会エバリュエータ(204)と、全てが該照会エバリュエータと信号通信状態にある、キャッシュ索引(206)と、キャッシュ・リポジトリ(208)と、リソース・マネージャ(209)と、包含関係チェッカ(207)と、照会パーサ(205)と、整合性マネージャ(210)とを含むエッジ・データ・キャッシュ(202)を含み、ローカル・サーバ(109、110)が少なくとも1つの遠隔サーバ(108)用のデータベース照会(400)に応じる方法は、該遠隔サーバの従前のデータベース照会の結果(412)を動的にキャッシュに入れ、ローカル・データベースを該ローカル・サーバと関連付け、複数のキャッシュ結果を該ローカル・データベース内の共有テーブル(503)に格納し、該ローカル・サーバを用いて新しいデータベース照会(410)に応じる際に複数のキャッシュ結果を使用する段階を含む。

Description

本開示は、分散ネットワーク上でデータベースをキャッシュに入れること向けられる。
分散ウェブ・アプリケーションの普及により、遠隔データベース・サーバにアプリケーションを照会する頻度が増加している。こうした照会の性能を改善し、データ可用性を高めるために、こうしたアプリケーションは、ローカル・データベース・キャッシュを用いることができる。例えば、コンテンツ分散ネットワーク内のエッジ・サーバは、データ・アクセスをスピードアップし、ネットワーク・エッジにおいて動的なウェブコンテンツをより迅速に生成するために、近くのデータベース・キャッシュを用いることができる。
エッジ・サーバ上でデータをキャッシュに入れるための典型的な技術は、(i)ローカル・マシン上でのデータベース全体又は該データベースの明示的部分の明示的複製、或いは(ii)従前の照会応答をキャッシュに入れること及び前にキャッシュに入れられた応答に対する新しい照会ステートメントの完全一致、のいずれかに依存している。複製手法において、キャッシュのコンテンツは、データベース・テーブルのどの部分をエッジ・ノード上で複製すべきかを判断しなければならない管理者によって、明示的に特定される。キャッシュ・コンテンツが、テーブル名又は「実体化ビュー」定義として特定されると、データが、起点サーバからエッジ・キャッシュにコピーされる。
照会応答キャッシュ手法において、アプリケーション照会の応答を用いて、データがキャッシュに動的に取り込まれる。キャッシュ内のデータは、各々の応答が、該応答を生成した照会ステートメントでタグ付けされた状態で、照会応答リストによって記載される。応答を使用し、一般的には文字列の比較によって、その照会がキャッシュに入れられた応答に対応する照会文字列と一致する場合に限り、次の照会に応答させる。照会応答キャッシュは、データを動的にキャッシュに入れることによって管理者制御に対する必要性を排除するが、データを別個の領域、すなわち照会応答ごとに1つの領域に非効率的に格納するというものである。多くの照会応答において同じ基本データを複製できるため、このことにより、大きなスペース・オーバーヘッドがもたらされる。これは、多くの場合、一般的に、基礎となるデータベースの重要な部分及び共通部分を含む照会応答が重複しているためである。さらに、キャッシュに入れられた照会応答は、同じ照会のまさにその再実行要求に応じるためだけに用いられ、該応答に含めることができる他の照会には応じないので、この手法の性能利点が制限されたものになる。例えば、30歳未満の全従業員の社会保障番号を見つけ出すために最初の照会が与えられる。SQLステートメントは、
SELECT employee.ssn FROM employee WHERE employee.age<30
となる。
この照会に対する応答がキャッシュに入れられ、キャッシュが、25歳未満の全従業員の社会保障番号を見つけ出すために新しい照会を受け取ると仮定すると、そのSQLステートンメントは、
SELECT employee.ssn FROM employee WHERE employee.age<25
となる。
25歳未満の全従業員は、30歳未満でもあるので、新しい照会の応答は、第1の応答内に含まれるが、完全一致検索に基づいた照会応答キャッシュは、該キャッシュからの該照会を処理することができない。
手短に言えば、明示的な管理者定義のデータ・キャッシュは、手動の介入を必要とし、該管理者が、各エッジ・サーバ上の作業負荷及びリソースについての詳細な知識を有することを想定している。照会応答キャッシュは、管理者のオーバーヘッドを排除するが、限定された有効性が限定され、スペース・オーバーヘッドが大きくなる。さらに、整合性の管理は、キャッシュに入れられたデータの表示と起点サーバ内の基本データとの間の不一致のために複雑なものとなる。整合性の制御は、一般に、いずれかの基本テーブルが変わるときに全ての照会応答を無効にするか、又は複雑な依存グラフを維持するかのいずれかを必要とする。
したがって、作業負荷の変更又はキャッシュが常駐するマシン上のリソース可用性の変更に従って、管理者がそのコンテンツを指定し、或いは仕様を適合させることが望ましい。キャッシュの格納オーバーヘッド及び整合性の維持が効率的であることがさらに望ましい。
従来技術のこれら及び他の欠点及び不利な点は、ローカル・アプリケーションによって実行される照会に基づいてデータを動的にキャッシュに入れることをサポートするための、コンピュータ・システム及び対応する方法によって対処される。
例示的なシステムは、完全なデータベースを有する遠隔サーバと、該完全なデータベースのサブセットを含み、該遠隔サーバと信号通信状態にあるエッジ・サーバ上のローカル・データベースと、該完全なデータベースからの結果をキャッシュに入れ、局所的に生成されたデータを受信し、該ローカル・データベースと遠隔データベースとの間のデータの整合性を保証しながら、使用可能な格納要件に基づいてキャッシュのコンテンツを調整するための、該エッジ・サーバ上の該ローカル・データベース内にある共有テーブルとを含む。
例示的な装置は、照会エバリュエータと、全てが該照会エバリュエータと信号通信状態にあるキャッシュ索引と、キャッシュ・リポジトリと、リソース・マネージャと、包含関係チェッカと、照会パーサと、整合性マネージャとを有するエッジ・データ・キャッシュを含む。
少なくとも1つの遠隔サーバに向けられたデータベース照会にローカル・サーバが応じるための、対応する例示的な対応方法が、該遠隔サーバの従前のデータベース照会の結果を動的にキャッシュに入れ、ローカル・データベースを該ローカル・サーバと関連付け、複数のキャッシュ結果を該ローカル・データベース内の共有テーブルに格納し、該ローカル・サーバによって新しいデータベース照会に応じる際に該複数のキャッシュ結果を使用する段階を含む。
本開示のこれら及び他の態様、特徴及び利点は、添付の図面と併せて読まれるべきである例示的な実施形態の以下の説明から明らかになるであろう。
本開示の実施形態は、以下の例示的な図面によるネットワーク・エッジでのトランスペアレントなデータのキャッシュ処理を教示する。
本開示の実施形態は、遠隔サーバに向けられたデータベース照会をローカル・マシンによって処理することを可能にする動的なデータベースのキャッシュ処理を提供するものである。キャッシュ処理は、ローカル・データベース・エンジンを利用して、部分的にではあるが意味的に整合性のある、従前の照会結果の「実体化ビュー」を維持する。アプリケーション照会のストリームに基づいて、データがキャッシュに動的に取り込まれる。照会述部上で作動する包含関係チェッカを用いて、新しい照会結果が、キャッシュに入れられた結果のユニオン内に含まれるかどうかを確定する。共通のローカル・テーブルを用いて、可能であれば重複する照会結果の間で物理的格納部を共有する。起点データベースから、挿入、削除、及び更新をキャッシュに入れられたローカル・データベースに伝えることによって、データ整合性が維持される。バックグラウンド・クリーニング・アルゴリズムが、整合性プロトコルによって伝えられる過剰な行並びにキャッシュから追い出すように印が付けられた照会に属する行を追い出すことによって、共通のローカル・テーブルのコンテンツを継続的又は周期的に整理する。この開示において、「照会応答」及び「照会結果」という用語は、互換性をもって用いられる。
以下の説明において、次の定義が、例示的な実施形態の原理及び/又は演算の理解の助けとなるであろう。
データベース・テーブルとは、リレーショナル・データベース・システムによって定義されるリレーショナル・テーブルである。
照会述部とは、照会結果において基本テーブル内のどの行を戻すかを選択するための基準として用いられる、照会において特定される制約(例えば、SQLステートメントのWHERE節)である。
照会結果とは、SQL照会によってデータベース・システムに戻される応答である。照会結果は、行と列を有するテーブルに似ている。
照会結果の組とは、多数の照会に対応する複数の結果の組である。
データ整合性とは、データベース・キャッシュ内のデータが、起点データベース内のデータに対して、所与の時間窓の範囲内で整合しているという要件である。正確には、現在時間Tcでキャッシュに入れられたデータ状態が、過去の時間Tpで起点データベース状態と整合していることを意味する。ここで、Tpは、所与の最大時間窓の範囲内である。
照会/トランザクション・タイムスタンプとは、単調に増加し、起点サーバで実行する全ての照会及びトランザクションと関連付けられる、サーバによって生成された固有の数である。タイムスタンプは、並行操作に対してトランザクション又は照会の逐次化順序を反映する。
リフレッシュ・メッセージとは、起点データベース内のテーブルへの新しい変更(例えば、挿入、更新、削除ステートメント)を反映する、起点サーバによってエッジ・キャッシュに送られるメッセージである。多数のリフレッシュ・メッセージにおいて、基本テーブルへの変更をバッチ処理することができるが、該リフレッシュ・メッセージは、これらが報告する変更が生じた順序で伝えられる。
即時更新の可視性とは、同じアプリケーションによる更新がうまく完了した後に、アプリケーション照会が、データベースへの更新の結果を監視しなければならない特性である。
単調状態遷移とは、第1の照会への応答を受信した後に、第2の照会が実行依頼される場合に、アプリケーションによってキャッシュに実行依頼される2つの連続する照会が、前進するデータベースの状態を、時を違えず監視する特性である。すなわち、第2の照会は、第1の照会によって監視された状態より新しいか又はより新しいデータベースの状態を、時を違えず監視する。
図1に示されるように、「エッジ・データ・キャッシュ」を用いる例示的なネットワークの実施形態が、全体を参照符号100で示される。ネットワーク100は、より大きなアプリケーション・システムの一部とすることができる。ネットワーク100は2つのエッジ・サーバ109及び110を含み、これらエッジ・サーバは、ウェブ要求を実行するクライアント・マシンに接続され、かつ、起点サーバ108にも接続されており、該起点サーバにおいて、主データベース及びウェブ・サイトがネットワーク接続107を介してホストされる。起点サーバ108は、データベース101と、アプリケーション・サーバ102と、ウェブ・サーバ103とを含む。エッジ・サーバ109、110の各々は、アプリケーション・サーバ105及びウェブ・サーバ106を含む。しかしながら、エッジ・サーバは、起点サイトに格納されたデータベース全体のレプリカを有するわけではない。代わりに、エッジ・サーバは、新規なエッジ・データ・キャッシュ104を使用する。動的コンテンツについての要求が、エッジ・サーバによって受信され、エッジ・アプリケーション・サーバ105の内部でホストされるアプリケーション・コンポーネントによって処理される。これらのコンポーネントは、データベース照会を発し、該データベース照会は、可能であれば、エッジ・データ・キャッシュ104によってインターセプトされ、ローカル・データベースにおいて処理される。ローカル・データベースによって照会を処理することができない場合には、エッジ・データ・キャッシュ104は、要求を起点データベース101に転送し、そこから結果を検索する。
図2を参照すると、エッジ・データ・キャッシュが、全体を参照符号200で示される。エッジ・データ・キャッシュ200は、主部分202と結合されたJava(商標)サーブレット201を含む。主部分202は、照会パーサ205と信号通信状態で結合されたJDBCインタフェース203と、包含関係チェッカ207と、照会エバリュエータ204と、キャッシュ索引206と、ローカル・リポジトリ208と、整合性マネージャ210と、リソース・マネージャ209とを含む。キャッシュの機能は、以下のコンポーネントとして実装される。
照会パーサ205は、SQL文字列を、「照会ステートメント」データ構造体、列のリストを特定する構文解析ツリー、ターゲット・テーブル、及び照会によってアクセスされる種々の節に変換する。特に、WHERE節は、AND−OR標準形態で格納されるブール述部に構文解析される。これが、包含関係チェッカにより、照会述部の対に等価演算及び包含関係演算を行うことを可能にする。
照会包含関係チェッカ207は、新しい照会の結果が前にキャッシュに入れられた照会結果に含まれるかどうかを判断する。従前の照会、従前の照会の適切なサブセット、又は多数の従前の照会のユニオンの適切なサブセットに対する完全一致として、包含関係をチェックすることができる。
キャッシュ索引206は、包含関係のチェックを提供する。照会述部が複雑であるか、又はキャッシュに入れられた照会の組が長過ぎるとき、包含関係のチェックは、計算に費用がかかることになる。新しい照会が受信されると、キャッシュ索引206は、前にキャッシュに入れられた照会の全てをチェックする代わりに、同じテーブル及び列上で作動する照会だけに焦点を合わせる。キャッシュ索引は、テーブル名及び列名に基づいて、キャッシュに入れられた照会を多重レベルのハッシュ・テーブル内に構成する。
照会エバリュエータ204は、キャッシュのコア・モジュールであり、キャッシュ論理を含む。照会エバリュエータ204は、アクセスがヒットであるかミスであるか、ミスの際にバックエンドによって戻された結果をキャッシュ内に挿入すべきかどうかを判断する。照会エバリュエータ204はまた、データを前もって取得し、キャッシュ性能を改善するために、照会をバックエンドに送る前にキャッシュ内に欠落している照会を再書き込みすることもできる。
リソース・マネージャ209は、ヒット率及び応答時間についての統計値と、キャッシュ構成パラメータとを維持する。収集された統計値がそうした必要性を示す場合には、リソース・マネージャ209は、特定の作業負荷に適合させるように構成パラメータを変えることができる。
キャッシュ・リポジトリ208は、結果を格納する。キャッシュ・ミスの際の照会結果は、キャッシュ・エバリュエータによって判断されるローカル・データベース・テーブルに格納される。本開示の実施形態は、ハイブリッドの物理的格納ポリシーを用いる。幾つかの照会は、照会結果モデルごとに1つのテーブルを用い、他の照会は、データがバックエンドの基本テーブルに部分的に取り込まれたローカル・レプリカを通じて、物理的格納部を共有する。
整合性マネージャ210は、バックエンド・データベースから受信したリフレッシュ・メッセージに応答して、局所的にキャッシュに入れられたデータに更新を適用する。
操作において、照会は、Java(商標)サーブレット201のようなアプリケーション又はアプリケーション・コンポーネントから送出される。照会は、データベース・キャッシュ202によって受信される。具体的には、キャッシュ203内のJDBCインタフェース・アダプタが、アプリケーションとの接続を担当する。インタフェース・アダプタは、Java(商標)JDBC規格によって定義され、必要とされるクラスの組の実装である。次に、「照会ステートメント」が、照会エバリュエータ204に送られる。照会エバリュエータは、照会を局所的又は遠隔的に実行するかどうかの決定と、キャッシュ操作の制御とを担当するモジュールである。照会ステートメントを受信すると、照会エバリュエータは、照会パーサ205を呼び出すことによって、受信したステートメントを構文解析する。パーサは、ステートメントを4つのカテゴリの1つに分類する。ステートメントの処理は、その照会カテゴリによって決まる。
ここで図3を参照すると、照会ツリーが、全体を参照符号300で示されている。照会ツリー300は、異なる照会カテゴリを示す。キャッシュ301によって受信された照会は、包含関係チェック可能照会302及び包含関係チェック不能照会303の2つのクラスに構成される。キャッシュに入れられた包含関係チェック可能照会が、後の任意の照会に応じることができ、その結果は、キャッシュに入れられた照会の結果のサブセットとなることが分かる。単一のテーブル上で作動し、又は多数のテーブルを結合させるが、group−by節も集約演算子も含まない照会が、包含関係チェック可能照会としてキャッシュに入れられる。これらは、全体の結果すなわち単純照会304と、部分的結果すなわち上位N個の照会305の2つのカテゴリにさらに分けることができる。
包含関係チェック不能照会は、キャッシュに入れることができるが、SQL文字列の完全一致検索を用いてマッチングが行なわれる。これらはさらに、集約照会306及び複合照会307の2つのカテゴリに分けられる。UDF、サブ照会、又はgroup−by節を使用する複合照会は、包含関係チェッカによっては処理されず、完全一致するものとしてキャッシュに入れられる。選択リスト内のMIN、MAX、及びAVGなどの集約演算子を用いてデータを集約する照会も、完全一致するものとしてキャッシュに入れられる。しかしながら、集約照会306は、その選択リスト内の集約演算子をドロップすることによって、包含関係チェック可能照会302に変換することができる。この最適化は、推測される利点が重要である場合に、キャッシュによって行なわれる。
単純照会の処理は、次のように進行する。単純照会は、その結果が基本テーブルの行及び列のサブセットであるというものである。したがって、単純照会は、「GROUP BY」節、サブ照会、又はユーザ定義機能のいずれをももたない。単純照会は、上位N個の照会ではなく、基本的な比較基本形を用いるWHERE節に基づいて、単に、単一のテーブルの一部又は多数のテーブルの結合を選択するというものである。単純照会の例が下記に与えられる。
SELECT employee.id FROM employee WHERE employee.age<25
図4に示されるように、高レベルの処理アルゴリズムが、全体を参照符号400で示される。高レベルの処理アルゴリズム400は、キャッシュ・ヒット又はキャッシュ・ミスの処理を提供するものである。照会を受信すると、キャッシュ索引を用いて、同じテーブル・リスト及び列のリスト上にある照会を検索する。次に、決定ブロック410において、包含関係チェッカを呼び出し、この照会が前にキャッシュに入れられたこれらの照会内に含まれるかどうかを確定する。
キャッシュ・ヒットの場合には、機能ブロック412において、照会がローカル・キャッシュ上で実行され、結果が戻される。機能ブロック412はまた、キャッシュ・リポジトリ414にも照会を送信し、該キャッシュ・リポジトリ414から結果を受信する。キャッシュ・ミスの場合には、照会は、バックエンド・サーバに該照会を送信する前に、機能ブロック416及び418において再書き込みされる。次の最適化が行われる。第1に、WHERE文節、order−by節、及びhaving節内に記載される列を含むように、選択リストが拡張される。この拡張の目的は、キャッシュにおいてヒットする将来の照会を実行できる可能性を最大化することである。第2に、一次キー列も選択リストに加えられる。重複する結果を有する多数の照会が同じ基本テーブルの同じ行を検索するとき、重複する行がキャッシュに挿入されるのを防止するために、一次キー列をキャッシュに入れることが必要とされる。バックエンドによって戻される結果は、ミスの際に常にキャッシュに挿入されるわけではない。決定ブロック420において高度な履歴ベースのアルゴリズムを用い、機能ブロック422において、どの照会がキャッシュに入れるに値するのかを決定することができる。結果は、出力として与えられ、キャッシュ・リポジトリ414に送信される。
上位N個の照会の処理は、次のように進行する。上位N個の照会は、通常、order−by節に従ってソートされた結果の組の最初から、指定された数の行を取得する。照会包含関係及び評価アルゴリズムは、単純な全体結果の照会のものとは異なる。上位N個の照会は、Fetch節を落とすことによって、単純照会に変換される。上述のように、包含関係は、これらの単純照会において実行される。最終ステップにおいて、Fetch節が考慮される。基本照会(Fetch節をもたない)はキャッシュ・ヒットであるが、Fetch節は、該基本照会をキャッシュ・ミスにすることがあることに注目されたい。例えば、下記の2つの照会Q1及びQ2、すなわち
Q1:SELECT id FROM item WHERE cost<15 ORDER BY cost FFNRO 20
Q2:SELECT id FROM item WHERE cost<5 ORDER BY cost FFNRO 20
を考える。
FETCH FIRST 20 ROWS ONLYアルゴリズム(FFNRO 20)節が、両方の照会に存在しない場合には、第2の照会の結果を、第1の照会の結果すなわちキャッシュ・ヒット内に含めることができる。しかしながら、その節が存在するときには、キャッシュ・ヒットは、単なる照会ステートメントの検査によって保証されるわけではない。したがって、上位N個の照会について包含関係チェックを処理する際の第2のステップは、キャッシュに入れられたデータ上で局所的な実行を試みることである。十分な行が検索される場合には、照会はキャッシュ・ヒットと考えられ、他の場合には、キャッシュ・ミスと考えられる。結果の一部だけがローカル・キャッシュ内に見出されるので、このタイプのキャッシュ・ミスは、「部分的ヒット」と呼ばれる。
包含関係チェックがいずれのマッチング照会も見出さないか、又は結果の組が十分な行を有していない場合には、元の照会QNが、修正された照会QN´に変換され、ここで、Fetch節内のNの値は、より大きなN´(N´=NExpansion−Factor)によって置き換えられる。例えば、実験におけるデフォルト係数値が2である場合には、要求される行数の2倍をフェッチする。要求されるアプリケーションより多くの行を検索することは、後の「部分的ヒット」照会、すなわち包含関係チェック・ステップを通過するが、要求されている行数を見出すことができない照会のイベントを減少させることを狙いとした発見的方法である。
集約照会の処理は、次のように進行する。集約照会は、その選択リスト内に集約演算子(例えば、MAX、MIN、AVG、SUM)を有し、他の場合には包含関係チェックが可能になる。次の照会Q3:
Q3:SELECT MAX(cost) FROM item WHERE id=10
を考える。
ヒットのためのマッチングが、2つのステップで進行する。まず、SQL文字列に基づいてQ3の完全一致についてのチェックが行われ、結果の組の全体がアプリケーションに戻される。次に、何らの完全一致が見出されなかった場合には、集約演算子を取り除くことによって、元の照会Q3が、照会Q4に修正される。
Q4:SELECT cost FROM item WHERE id=10
修正された照会Q4について包含関係の一致が見出された場合には、元の照会Q3が、ローカル・キャッシュ上で実行され、コストを局所的に集約し、結果をアプリケーションに戻す。ミスの際には、修正された照会Q4が、バックエンドで実行される。結果の組のサイズが閾値内である場合には、結果は、対応するローカル・テーブルに格納され、元の照会が局所的に実行される。このことは、異なる集約演算子を有する将来の照会をキャッシュにおいて処理することを可能にする。結果の組のサイズが大きすぎることが判明した場合には、元の照会Q3がバックエンドに送信され、その結果は、新しい完全一致テーブルに格納される。このことは、全く同じ集約条件を有する何らかの将来の照会をキャッシュから処理することを可能にする。この発見的方法は、キャッシュのサイズを必要以上に増大させることなく、キャッシュ・ヒットを増大させること目的としたものである。
複合照会は、複合節(例えば、ユーザ定義機能又はWHERE節におけるサブ照会)、或いはgroup−by節のいずれかのために、包含関係チェックが可能ではない。group−by節は、全く同じgroup−by節及びWHERE節を有する照会によってのみ用いることができる集約データを生成する。このように、包含関係チェックを行うことは、不適切である。代わりに、こうした照会の結果は、照会のSQL文字列によって索引が付けられた別個の結果テーブルに格納される。こうした照会についての包含関係チェックは、SQL文字列の完全一致に基づいている。このルックアップ・プロセスは、キーとしてSQL文字列を有するハッシュ・テーブルに基づいているので、非常に高速である。正確なSQL文字列がキャッシュに実行依頼される場合には、対応する結果テーブルにおいて、局所的な照会が実行され、テーブル全体を検索する(すなわち、「SELECTFROM LOCTAB」が局所的に実行される)。こうした照会は、費用がかからず、エッジ・サーバ上での処理時間が最小であることに注目されたい。
図5を参照すると、ローカル・リポジトリが、全体を参照符号500で示される。ローカル・リポジトリ500は、照会結果がどのようにローカル・キャッシュ・リポジトリ501に格納されるかを示す。リポジトリ501は、2つの区画、すなわち、一方は複合又は完全一致照会の格納のための区画502と、もう一方は包含関係チェック可能照会の格納のための区画503とに分けられる。完全一致照会は、別個のテーブルに格納され、その仕様がキャッシュに入れられた照会のSQL文字列に一致する新しい照会に応答するためだけに用いられる。例えば、照会Q5 504及びQ6 505は、これらの結果が重複するどうかに関係なく、別個のテーブルに格納される。
包含関係チェック可能照会は、共通のテーブルに格納される。同じ基本テーブル上の照会は、同じテーブルのローカル・コピーに格納される。例えば、図は、2つの照会Q7及びQ8が同じテーブルから「SELECT(選択)」されると仮定する。まず、照会Q7 506によって検索されたタプルが、キャッシュに挿入される。次に、第2の照会Q8によってフェッチされた行が、同じテーブルに挿入される507。Q8の結果が挿入されると、既存の行が、新たにフェッチされた値で更新される。そのため、2つの異なる照会によってフェッチされた同じ行は、キャッシュ内で複写されない。全ての照会は、それらをバックエンド・サーバに送信する前に、一次キーを取得するように再書き込みされるので、同一の行が発見される。
ここで、図6を参照すると、キャッシュ・テーブル構造が、全体を参照符号600で示される。キャッシュ・テーブル構造600は、ここでは「従業員」と呼ばれる、同じデータ・テーブル上の2つの照会の特定の例を示し、それらの結果データ構造601、602が、どのようにエッジ・データベース・キャッシュ内の同じローカル・テーブル603に格納されるかを示す。
図7には、整合性プロトコルが、全体を参照符号700で示されている。整合性プロトコル700は、バックエンド・サーバ部分702と信号通信状態にあるエッジ・サーバ部分701を含む。エッジ・サーバ部分701は、照会結果を挿入し、照会を実行するための、キャッシュ・リポジトリ704と信号通信状態にあるDBProxyユニットを含む。変更APPLYユニット705が、テーブルをリフレッシュするために、キャッシュ・リポジトリ704と信号通信状態にある。
バックエンド・サーバ部分702は、照会を受信し、結果を提供するためのDBProxyユニット703と信号通信状態にあるDBMSユニット706を含む。DBMSユニット706はさらに、キャッシュ・リポジトリ707に書き込み、該キャッシュ・リポジトリ707から読み取るための別のキャッシュ・リポジトリ707と信号通信状態にある。キャッシュ・リポジトリ707は、最後に書き込まれたデータを読み取るための、変更CAPTUREユニット708と信号通信状態にある。次に、変更CAPTUREユニット708は、メッセージをリフレッシュするための変更APPLY装置705と信号通信した状態で接続される。
このように、起点サーバによって伝えられる更新のストリームを利用することによって、データ整合性が確保される。従来の実体化ビュー手法は、基本データ内の変更に対するビュー定義(「データ」)を再実行することによって、キャッシュに入れられたビューを更新するというものである。しかしながら、キャッシュに入れる照会(「ビュー」)の数が潜在的に多数であるため、エッジ・データ・キャッシュは、より効率的な機構を必要とする。キャッシュに入れられたデータは、データが部分的に取り込まれたバックエンド・テーブルのコピーとして維持されるため、起点において基本テーブルにコミットされた変更は、照会を再実行する必要なく、単に、「現状のままで」キャッシュに入れられたバージョンに伝えることができる。基本テーブルへの更新、削除、及び挿入(「UDI」)は、データが部分的に取り込まれたエッジ上のものに伝えられ、適用される。キャッシュ上で実行することになる将来の照会が、これらの新しく伝えられた変更から、何らかのマッチング・タプルを検索する。この解法は、一般的に大部分のウェブ環境の遅い速度で変化するデータを想定したものであり、キャッシュに入れられたビューをどのように更新すべきかを判断する処理オーバーヘッドを低減させるために、潜在的に不必要なデータの伝搬をあきらめる。しかしながら、テーブルに大量の更新作業負荷がかかっている場合には、キャッシュ・リソース・マネージャが、指定期間の間だけ、ローカル・コピーを使用不可にすることができる。
エッジ・アプリケーションによって発せられる読み取り専用照会は、可能ならいつでもキャッシュから応じられる。更新トランザクションは、常に、最初に該更新トランザクションをローカル・キャッシュに適用することなく、実行のためにバックエンド・データベースに経路指定される。エッジ・データ・キャッシュは、大規模展開向けに設計されているので、整合性プロトコルは、可能な限り起点から疎結合されたものにしなければならない。その結果、キャッシュの整合性を確保する負担が、できる限り、リソースがより自然に拡大縮小するエッジ・キャッシュにかかるようにしなければならない。バックエンド・サーバは、周期的な更新の伝搬、別個のプロセス又はマシンに対して負担を軽減できるタスクを担当するだけにすべきである。強力な整合性保証を与えることは、キャッシュの有効性を制限し、高いコストを招くが、即時更新可視性及びデータ整合性のような幾つかの重要な整合性保証を確保できるかが、まもなく説明される。本開示は、起点において全てのUDIをテーブルに捕捉し、それらを「リフレッシュ・メッセージ」内にパッケージされた状態で、エッジ・キャッシュに転送するデータ・プロパゲータに依存している。データの変更は、トランザクション識別子によってタグ付けされたエッジに伝えられ、トランザクション・コミット順にエッジ・キャッシュに適用される。起点サイトでコミットされるトランザクションの効果を反映させる、入ってくるUDIのストリームが、局所的にキャッシュに入れられたテーブルに適用される。
UDIが伝えられ、タイムスタンプ順にキャッシュに適用されるので、このセクションに用いられる全てのタイムスタンプは、バックエンド・サーバ側のコミット・タイムスタンプを指し、キャッシュ内のタプル値は、起点からの最後の伝搬メッセージのタイムスタンプに対応するデータベースの状態を反映していなければならない。より正確には、伝搬メッセージのタイムスタンプは、そのメッセージ内に含まれるあらゆる更新トランザクションのうちの最大タイムスタンプである。データ整合性を確保する際の問題は、伝播メッセージ及びミスの際の照会結果の挿入によって、ローカル・テーブルを更新できることから生じる。
保証された整合性特性。キャッシュは、エッジ・アプリケーションについての幾つかの重要な整合性特性、すなわちデータ整合性、単調遷移、及び即時更新可視性を保証する。キャッシュは、本物のバックエンド・データベースのようなアプリケーションのように見える。しかしながら、キャッシュのコンテンツは、通常、バックエンド・データベースに格納されるものと同程度に最新のものではない。したがって、キャッシュは、現在の状態と異なる可能性がある状態をアプリケーションに反映するので、データベースの所与の状態を「エクスポート」するものである。データ整合性特性は、その時点におけるキャッシュによってエクスポートされたデータベースの状態が、常に、従前の時点におけるデータベースの過去の状態に対応することを要求する。エクスポートされた状態と実際の状態との間のずれも制限される。単調状態の遷移特性は、キャッシュによってエクスポートされたデータベースの状態が、時を違えずに前進することだけを示す。即時更新可視性の特性は、アプリケーションが更新をコミットし、後に照会を発する場合に、該照会が該更新(及び従前の更新の全て)の結果を監視することを要求する。
データ整合性及び単調遷移を保証すること。最初に、キャッシュが1分前のデータベース状態と一致すると仮定する。キャッシュ内に欠落し、起点で実行される新しい照会の結果が挿入された場合には、該キャッシュは、古いデータと新しいデータの混合物を含むことになる。データ整合性は、キャッシュに入れられたデータが、常にデータベースの単一の過去のバージョンと一致することを要求する。照会が起点において原子的に実行されると仮定する。照会が失敗し、遠隔式に実行される場合には、サーバは、該照会が実行されたときに、その最後のコミット・タイムスタンプtqを結果と共に戻す。
図8を参照すると、照会処理アルゴリズムが、全体を参照符号800で示される。照会処理アルゴリズム800は、整合性を考慮し、照会の包含関係チェックに基づいてキャッシュ・ヒットを登録するための機能ブロック801を含む。機能ブロック801は、ヒットが生じたかどうかを判断するために、決定ブロック802に制御を渡す。ヒットが生じた場合には、機能ブロック803に制御を渡し、共有キャッシュのロック、照会の局所的実行、及び共有キャッシュのロック解除を行う。しかしながら、ブロック802においてヒットが生じなかった場合には、機能ブロック804に制御を渡し、照会を遠隔的に実行し、決定ブロック805に制御を渡す。ブロック805は、遠隔的に実行された照会がうまくいかなかったのかどうかを判断する。うまくいった場合には、戻しブロック806に制御が渡り、キャッシュに入れられた結果「rc」を戻す。うまくいかなかった場合には、決定ブロック807に制御が渡り、結果が部分的なものでしかないのかどうかを判断する。部分的なものでしかない場合には、機能ブロック808に制御が渡り、キャッシュを排他的にロックし、結果を結果の組に挿入し、サーバからの付加的な情報を伝え、該キャッシュをロック解除する。機能ブロック808は、戻しブロック809に制御を渡し、結果の組「rs」を戻す。ブロック807の結果が偽であるか又はノーである場合には、制御は、戻しブロック809に直接渡る。
作動において、結果の挿入は、ブロック807において、照会のタイムスタンプを、起点サーバcache_tsから受信した最後の伝搬メッセージのタイムスタンプと比較することによって開始される。照会及びキャッシュのタイムスタンプは、図では、それぞれquery_ts(「tq」)及びcache_ts(「tc」)という長い名前によって、また、他の場所では、長い名前又は短い名前で呼ばれることに注意されたい。query_tsがcache_tsより大きい場合には、照会は、キャッシュのものより新しい状態を監視したものである。この通常の場合においては、ブロック808において、まずミスの結果が挿入され、あらゆる保留の伝搬メッセージが起点サーバから引き出され、キャッシュ全体を後の時間に早送りする。最後に、照会が索引に加えられる。しかしながら、cache_tsがquery_tsより大きい場合には、ミスの結果を即座に挿入することで、キャッシュに入れられたデータを過去の値に戻すことができ、伝搬メッセージによって適用される変更を逆にし、単調性要件に失敗する。これは、まれな競合状態であるため、こうした場合には、結果の挿入を省略することができる。これは、通常、後のミスの1つが、結果の挿入に成功するまで、照会をキャッシュに入れるのを遅らせるだけであり、キャッシュの有効性を著しく損なうものではない。
ブロック808におけるpropagate_from_server()の副次的作用として、cache_tsを増加させることができることに注目されたい。
ここで、図9を参照すると、結果をキャッシュに挿入するためのアルゴリズムが、全体を参照符号900で示される。ループ・ブロック901が、照会結果内の各タプルについてループを実行する。ブロック901のためのループは、タプルがキャッシュ内にあるかどうかを判断するための決定ブロック902を含む。タプルがキャッシュ内にある場合には、機能ブロック903に制御が渡り、該タプルを更新する。タプルがキャッシュ内にない場合には、機能ブロック904に制御が渡り、該タプルを挿入する。このように、操作において、キャッシュへの結果の組の挿入は、次のように進行する。すなわち、結果の組をキャッシュに挿入したとき、ブロック903において、既存の行が新しい値で上書きされ、一方、ブロック904において、既存のものでない行がテーブルに挿入される。
図10には、更新トランザクションを実行するためのアルゴリズムが、全体を参照符号1000で示される。機能ブロック1001が、結果「rc」についての遠隔照会を実行し、決定ブロック1002に制御を渡す。照会がうまくいった場合には、ブロック1002は、戻しブロック1003に制御を渡し、結果「rc」を戻す。照会がうまくいかなかった場合には、ブロック1002は、機能ブロック1004に制御を渡し、サーバからデータを伝える。ブロック1004は、戻しブロック1005に制御を渡し、結果「rc」を戻す。
このように、即時更新可視性が保証される。キャッシュへのエッジ・アプリケーションによって実行依頼された更新トランザクションは、起点データベース1001に経路指定される。さらに、更新トランザクションが完了した後に、アプリケーションに戻す前に該更新トランザクションを起点1004から引き出すことによって、更新の効果を迅速にフェッチすることができる。
キャッシュのスペース・オーバーヘッドが、キャッシュ置換えによって調整される。スペース・オーバーヘッドを制限し、通常制限されるエッジ・リソースの使用を最適化するために、エッジ・データのキャッシュは、データ整合性を保持しながら、キャッシュから未使用のデータを安全に追い出すバックグラウンドのガーベッジ・コレクション・プロセスに依存する。具体的には、キャッシュ置換えの目的は、制限された使用可能なスペース量に対するキャッシュの利点を最大化することである。ファイル及びメモリ・ページの従来の置換えとは対照的に、基礎となる行を多数の照会にわたって共有することができる。
キャッシュ置換えは、ローカル・データベースのスペース使用が高い水位線(「HWM」)値に達するときにトリガされる。次に、スペースが十分に空けられ、低い水位線(「LWM」)値より下に達するまで、置換えが始まる。置換えは、より多くの行をローカル・テーブルに挿入するためのスペース、又は新しいテーブルを作成するためのスペースがないときに、照会ミスについての要求に応じてトリガされるわけでない。置換えは、バックグラウンド・プロセスであり、照会処理及び更新操作と同時進行することが予想できる。
図11を参照すると、キャッシュ・クリーニング・アルゴリズムが、全体を参照符号1100で示される。アルゴリズム1100は、テーブルを拡張して新しい列「accessedFlag」を付加するための機能ブロック1101を含む。ブロック1101は、機能ブロック1102に制御を渡し、ローカル・テーブル内の全ての列について「accessedFlag」を偽に再設定する。ブロック1102は、機能ブロック1103に制御を渡し、キャッシュ内に留まる照会の組「S」を判断する。次に、機能ブロック1103は、機能ブロック1104に制御を渡し、組「S」内の全ての照会を再実行し、いずれかの選択された行の「accessedFlag」を真に設定する。次に、ブロック1104は、機能ブロック1105に制御を渡し、「accessedFlag」が偽である全ての行を削除する。
キャッシュ・クリーニングのためのアルゴリズム1100は、グループ置換えと呼ばれる。このアルゴリズムは、実装が簡単であり、ヒット、ミス、又は更新の伝搬時にオーバーヘッドを付加するものではない。ブロック1103において、置換えポリシーに基づいて、1組の「犠牲」照会に印が付けられ、キャッシュから削除される。「犠牲」照会だけに属する重複しない行に適正に印が付けられることを保証するために、次のステップが実行される。最初に、ブロック1102において、ローカル・テーブルの生成時に定義された制御列として実装されるaccessed flagが、キャッシュに入れられた全ての行と関連付けられ、偽に設定される。次に、ブロック1104において、非犠牲照会がバックグラウンドにおいて実行される。このバックグラウンド実行は、フォアグラウンド照会の性能に影響を及ぼさないように、長期間にわたって行われる。照会が実行されるときはいつも、制御列内の対応するエントリが、あらゆる選択された行について真に設定される。ブロック1105において、この命令実行段階の終わりに、制御列(accessed flag)が依然として偽の状態で、任意の行を安全に削除することができる。ガーベッジ・コレクション・サイクルが実行を開始した後に、キャッシュ・ミス又は整合性マネージャによって挿入又は更新される行の削除を防止するために、更新されるか又はローカル・テーブルに挿入される任意の行について制御列が設定される。
本開示の実施形態は、ある意味では、具体的には管理しやすさ及び作業負荷又はリソースの可用性の変更に適合する能力である照会応答キャッシュの利点と、具体的には非冗長データ格納のスペース効率及び効率的な更新ベースの整合性プロトコルをサポートする能力である基本テーブル・レプリケーションの利点との両方の世界の最良のものを達成する。
従って、本開示の実施形態の1つの態様は、ローカル・マシンを使用し、従前の照会の結果を動的にキャッシュに入れる際にキャッシュ・ポリシーを用いることによって、少なくとも1つの遠隔サーバ用のデータベース照会に応じることである。本開示の実施形態の別の態様は、ローカル・データベースをローカル・マシンと関連付け、該ローカル・データベースを使用して複数の照会結果を共有テーブルに格納することである。本開示の実施形態のさらに別の態様は、照会述部で作動する包含関係チェッカを用いることによって、新しい照会に応じる際に、局所的に格納された照会結果を使用することである。包含関係チェッカは、照会述部によって定められる新しい照会が必要とするデータが、論理的に、従前の照会の述部のユニオンによって記載されるキャッシュに入れられた複数の結果内のデータの組に含まれることを保証する。
本開示の実施形態の別の態様は、エッジ・キャッシュに格納されたデータが、可能ならいつでも、起点データベースにおいて定義されたテーブルの「部分的レプリカ」内に構成されることである。起点サーバから受信した照会結果は、ローカル・データベースに挿入される。同じ基本テーブルに対して行われる照会の結果は、該基本テーブルの局所的にキャッシュに入れられた同じバージョンに挿入される。本開示の実施形態のさらに別の態様は、結果が基本テーブルの行及び列の単純なサブセットでない場合に、サブ照会、集約、又はユーザ定義機能を含む照会のような複合照会の結果を、結果ごとに1つずつ、多数のテーブルとして局所的に格納することである。
本開示の実施形態のさらに別の態様は、トランスペアレントであり、アプリケーションへの変更を必要としないことである。また、キャッシュ論理が、データベースの外に常駐するので、バックエンド又はローカル・データベースのいずれとも両立性があり、データベース・サーバへの変更を必要としない。本開示の実施形態の別の態様は、起点において基本テーブルに生じる変更をエッジ・キャッシュに伝えることによって、また、入ってくる照会を処理する際に整合性認識アルゴリズムを用いることによって、局所的にキャッシュに入れられたデータの整合性が維持されることである。本開示の実施形態のさらに別の態様は、キャッシュが、整合性又は正確性を損なうことなく、ローカル・データベースから有用性が少ない照会結果を追い出すことによって、局所的に使用されるスペース量を調整できることである。
本開示のこれら及び他の特徴及び利点は、当業者であれば、本明細書内の教示に基づいて容易に確認することができる。本開示の教示は、ハードウェア、ソフトウェア、ファームウェア、専用プロセッサ、又はこれらの組み合わせの種々の形態で実装できることを理解すべきである。
本開示の教示は、例えば、ハードウェア及びソフトウェアの組み合わせとして実装することができる。さらに、ソフトウェアは、プログラム格納ユニット上で明白に具体化されたファームウェアとして実装されることが好ましい。ソフトウェアは、何らかの適切なアーキテクチャを含むマシンによってアップロードし、実行することができる。マシンは、1つ又はそれ以上の中央処理装置(CPU)、ランダム・アクセス・メモリ(「RAM」)、及び入力/出力(「I/O」)インタフェースのような、ハードウェアを有するコンピュータ・プラトフォーム上に実装されることが好ましい。コンピュータ・プラトフォームはまた、オペレーティング・システム及びマイクロ命令コードを含むこともできる。ここに記載された種々のプロセス及び機能は、ハードウェアによって実行することができるマイクロ命令コードの一部、又はソフトウェアの一部、或いはそれらの任意の組み合わせのいずれかとすることができる。さらに、他の種々の周辺装置を、付加的なデータ格納ユニットのようなコンピュータ・プラットフォームに接続することもできる。
さらに、添付の図面に示された構成システム・コポーネント及び方法の幾つかは、ソフトウェアとして実装されることが好ましいので、該システム・コンポーネント又はプロセス機能ブロック間の実際の接続は、本開示がプログラムされる方法によって異なり得ることを理解すべきである。本明細書の教示を考慮すれば、当業者には、これら及び本開示と同様の実装又は構成を考えることができるであろう。
例証となる実施形態は、ここでは添付の図面と関連して説明されるが、本開示が、それらの精密な実施形態に限定されないこと、及び、当業者であれば、本開示の範囲又は精神から逸脱することなく、種々の変更及び修正をもたらし得ることを理解すべきである。そのような変更及び修正の全ては、添付の特許請求の範囲に述べられる本開示の範囲内に含まれることが意図されている。
起点サーバに接続された2つのエッジ・サーバの概略図を示す。 図1のエッジ・サーバのデータ・キャッシュのブロック図を示す。 図2のエッジ・サーバのデータベース・キャッシュにおける異なるクラスの照会の樹形図を示す。 図1のエッジ・サーバについての照会処理全体の流れ図を示す。 図2のデータ・キャッシュによって用いられる共通スキーマの共有格納技術の概略図を示す。 図1の起点サーバ内の同じテーブル上の2つの照会に関するデータ・テーブルの例を示す。 整合性保守プロトコルの概略図を示す。 整合性が考慮された照会処理アルゴリズムの流れ図を示す。 結果をキャッシュに挿入するためのアルゴリズムの流れ図を示す。 更新トランザクションを実行するアルゴリズムの流れ図を示す。 キャッシュが占めるスペースを調整するために用いられるバックグラウンド・キャッシュ・クリーニング・アルゴリズムの流れ図を示す。

Claims (26)

  1. 照会エバリュエータ(204)と、
    前記照会エバリュエータと信号通信状態にあるキャッシュ索引(206)と、
    前記照会エバリュエータと信号通信状態にあるキャッシュ・リポジトリ(208)と、
    前記照会エバリュエータと信号通信状態にあるリソース・マネージャ(209)と、
    前記照会エバリュエータと信号通信状態にある包含関係チェッカ(207)と、
    前記照会エバリュエータと信号通信状態にある照会パーサ(205)と、
    前記照会エバリュエータと信号通信状態にある整合性マネージャ(210)と、
    を含むエッジ・データ・キャッシュ(202)。
  2. 前記エッジ・データ・キャッシュと信号通信状態にあるサーブレット(201)をさらに含む、請求項1に記載のデータ・キャッシュを含むエッジ・サーバ(200)。
  3. ローカル・アプリケーションによって実行される照会に基づいてデータを動的にキャッシュに入れるための、請求項2に記載のエッジ・サーバ(109、110)を含むシステム(100)であって、
    完全なデータベース(101)を有する遠隔サーバ(108)と、
    前記遠隔サーバと信号通信状態にあり、前記完全なデータベースのサブセットを含む前記エッジ・サーバ上のローカル・データベース(104)と、
    前記ローカル・データベースと前記遠隔サーバとの間の前記データの整合性を確保しながら、前記完全なデータベースからの結果をキャッシュに入れ、局所的に生成されたデータを受信し、利用可能な格納要件に基づいて前記キャッシュのコンテンツ(208)を調整するための、前記エッジ・サーバ上の該ローカル・データベース内の複数の共有テーブル(503、603)と、
    をさらに含むシステム(100)。
  4. ローカル・アプリケーションによって実行される照会に基づいてデータを動的にキャッシュに入れるための、エッジ・サーバ(109)を含むシステム(100)であって、
    遠隔サーバの従前のデータベース照会の結果を動的にキャッシュに入れるための手段と、
    ローカル・データベースをローカル・サーバと関連付けるための手段と、
    共有テーブル内の複数のキャッシュ結果を前記ローカル・データベースに格納するための手段と、
    前記ローカル・サーバによって新しいデータベース照会に応じる際に前記複数のキャッシュ結果を用いるための手段と、
    をさらに含むシステム(100)。
  5. ローカル・アプリケーションによって実行される照会に基づいてデータを動的にキャッシュに入れるためのプログラムであって、前記プログラムが、コンピュータに、
    遠隔サーバの従前のデータベース照会の結果を動的にキャッシュに入れ(414)、
    ローカル・データベースを前記ローカル・サーバと関連付け(420)、
    共有テーブル内の複数のキャッシュ結果を前記ローカル・データベースに格納し(422)、
    前記ローカル・サーバによって新しいデータベース照会に応じる(412)際に前記複数のキャッシュ結果を用いる、
    機能を実行させるプログラム。
  6. 少なくとも1つの遠隔サーバに向けられたデータベース照会にローカル・サーバが応じるための方法(400)であって、
    前記遠隔サーバの従前のデータベース照会の結果を動的にキャッシュに入れ(414)、
    ローカル・データベースを前記ローカル・サーバと関連付け(420)、
    共有テーブル内の複数のキャッシュ結果を前記ローカル・データベースに格納し(422)、
    前記ローカル・サーバによって新しいデータベース照会に応じる(412)際に前記複数のキャッシュ結果を用いる、
    段階を含む方法(400)。
  7. 前記複数のキャッシュ結果及び前記ローカル・データベースに挿入された他のいずれかのデータから、キャッシュに入れられたデータを形成し(705)、
    前記キャッシュに入れられたデータの整合性を確保する(708)、
    段階をさらに含む、請求項6に記載の方法。
  8. 少なくとも1つの調整基準に基づいて、前記共有テーブルのコンテンツを調整する(1103、1105)段階をさらに含む、請求項6に記載の方法。
  9. 前記少なくとも1つの調整基準が、前記ローカル・サーバ内の利用可能なスペース、前記照会の格納要件、該照会の実行コスト、該ローカル・サーバと前記遠隔サーバとの間のネットワーク性能、該ローカル・サーバ及び該遠隔サーバにかかる負荷、前記キャッシュに入れられた照会のアクセス速度、及びこれらのいずれの組み合わせをも含む基準のグループから取られた基準を含む、請求項8に記載の方法。
  10. 前記用いる段階が、前記少なくとも1つの遠隔サーバへの前記照会を加速させる段階を含む、請求項6に記載の方法。
  11. 前記格納する段階が、
    単一のデータベース・テーブル上の簡単な照会(304)及び上位N個の照会(305)の結果を共有基本テーブルに挿入し、
    結合照会の結果を共有結合テーブル内に保管し、
    全ての前記共有基本テーブル及び共有結合テーブルを含む共有テーブル・リポジトリを形成し、
    複合照会の結果を、照会結果ごとに1つずつ別個のテーブルに格納し、
    前記複数の別個のテーブルから完全一致リポジトリを形成する、
    段階を含む、請求項6に記載の方法。
  12. 前記挿入する段階が、
    単純照会が最初に基本テーブルに受信されるたびに、起点サーバ内の基本テーブルに対応するように、前記キャッシュ内に単一のローカル・テーブルを作成し、
    前記単純照会の結果を前記ローカル・テーブルに挿入し、
    前記基本テーブルへの次の単純照会の全ての結果を前記ローカル・テーブルに挿入する、
    段階を含む、請求項11に記載の方法。
  13. 前記保管する段階が、
    結合照会における各々の結合条件及びテーブル・リストに対応するように、前記キャッシュ内にローカル結合テーブルを作成し、
    同じ前記テーブル・リスト上にあり、同じ前記結合条件を有する次の前記結合照会の全ての結果を前記ローカル結合テーブルに挿入する、
    段階を含む、請求項11に記載の方法。
  14. 前記用いる段階が、
    前記照会が複雑な場合に、完全一致リポジトリにおいて前記新しい照会への応答を検索し、
    前記新しい照会が複雑でない場合に、共有テーブル・リポジトリにおいて前記データから該新しい照会への応答をサブ選択する、
    段階の少なくとも1つを含む、請求項6に記載の方法。
  15. 前記検索する段階が、
    前記新しい照会の前記SQL文字列が前記完全一致リポジトリ内に見出された場合に、該SQL文字列に対応する前記キャッシュ内の照会結果を前記アプリケーションに戻し、
    前記新しい照会の前記SQL文字列が前記完全一致リポジトリ内に見出されない場合に、該新しい照会を前記起点サーバに送信し、
    前記新しい照会の前記SQL文字列が前記完全一致リポジトリ内に見出されない場合に、受信した前記照会結果を前記完全一致リポジトリに挿入し、
    前記新しい照会の前記SQL文字列が前記完全一致リポジトリ内に見出されない場合に、キャッシュ内の前記照会結果を前記新しい照会のSQL文字列と関連付ける、
    段階を含む、請求項14に記載の方法。
  16. 前記サブ選択する段階が、
    前記新しい照会の結果の組の結果が、包含関係チェッカを有するキャッシュに入れられた照会結果のユニオン内に含まれることを証明しようと試み、
    前記証明を試みる段階がうまく完了した場合に、前記新しい照会において記載される前記テーブルをローカル・テーブル名に置き換え、
    前記証明を試みる段階がうまく完了した場合に、前記共有テーブル・リポジトリ上の前記新しい照会を評価し、
    前記照会が上位N個の照会である場合に、ローカル・キャッシュから受信した行数を数え、前記行数が、前記アプリケーションによって要求される行数を超えない場合に、前記新しい照会を再書き込みし、再書き込みされた照会を作成し、前記再書き込みされた照会を起点に送信し、前記起点サーバから受信した前記結果を共有テーブル・リポジトリに格納し、該再書き込みされた照会の述部を該共有テーブル・リポジトリの索引に付加し、該共有テーブル・リポジトリ上の該照会を評価し、前記評価段階の結果を前記アプリケーションに戻す、
    段階を含む、請求項14に記載の方法。
  17. 前記試みる段階が、
    前記新しい照会の選択リスト内の列のリストがマッチング照会のものに含まれ、該新しい照会の述部がマッチング照会の述部のものを論理的に含み、該新しい照会の種々の節において記載される全ての列が、前記マッチング照会の前記選択リスト内に含まれるという条件を満たす、キャッシュに入れられたマッチング照会を見つけ出し、
    前記新しい照会の選択リスト内の列の前記リストが、前記マッチング照会の各々の1つのものに含まれ、全ての述部が論理OR演算子によって接続されるとき、該新しい照会の述部が、前記マッチング照会述部の全ての分離によって形成された述部のものを論理的に含み、該新しい照会の種々の節において記載される全ての列が、マッチング照会の各々の前記選択リスト内に含まれるという条件を満たす、キャッシュに入れられたマッチング照会の組を見つけ出す、
    段階の少なくとも1つを含む、請求項12に記載の方法。
  18. 前記再書き込みする段階が、
    アクセスされたテーブルの一次キーを前記照会の選択リストに付加し、
    リソース・マネージャが、結果として生じる結果の組が大きすぎないか又はキャッシュに入れる価値があると推定する場合に、集約演算子を前記選択リストから落とし、
    前記照会によって要求される行数(N)を拡張し、より多くの行を検索する、
    段階を含む、請求項16に記載の方法。
  19. 前記確保する段階が、
    データ整合性、即時更新可視性、及び単調状態遷移を含むものとして、前記アプリケーションによって特定される整合性要件のグループの少なくとも1つを保証する段階を含む、請求項7に記載の方法。
  20. 従前の照会結果のデータ整合性を確保する段階をさらに含む請求項6に記載の方法であって、
    起点によって伝えられ、バックエンド・テーブルに適用された更新、削除、及び挿入を含むリフレッシュ・メッセージにデータ・キャッシュをサブスクライブし、
    前記リフレッシュ・メッセージを受信するたびに、前記更新、削除、及び挿入を共有テーブル・リポジトリ内の局所的にキャッシュに入れられたテーブルに適用し、
    リフレッシュ・メッセージにおいて参照される、前記完全一致リポジトリ内のいずれかの共有結合テーブルを変更されたものとして無効にし、
    リフレッシュ・メッセージのタイムスタンプを、その効果が前記メッセージ内に含まれるいずれかのトランザクションの最大のタイムスタンプと等しいリフレッシュ・メッセージと関連付け、
    キャッシュに入れられた組のタイムスタンプを、前記キャッシュに適用された最後のリフレッシュ・メッセージのタイムスタンプと等しい従前の照会結果と関連付け、
    新しい照会のタイムスタンプを新しい照会と関連付け、
    前記新しい照会のタイムスタンプを前記キャッシュに入れられた組のタイムスタンプと比較し、
    前記新しい照会のタイムスタンプが前記キャッシュに入れられた組のタイムスタンプを超える場合に、応答を該新しい照会に挿入し、
    前記新しい照会のタイムスタンプが前記キャッシュに入れられた組のタイムスタンプを超える場合に、データベース・サーバから保留のリフレッシュ・メッセージを検索する、
    段階を含む方法。
  21. 即時更新可視性を確保する段階をさらに含む請求項6に記載の方法であって、
    エッジ・データ・キャッシュによって受信される更新トランザクションを起点サーバに経路指定し、
    更新完了通知を前記起点サーバから受信した後及び完了状態を有する前記アプリケーションに応答する前に、該起点サーバからリフレッシュ・メッセージを引き出し、
    上記経路指定する段階及び引き出す段階が進行中である間に、前記アプリケーションによってキャッシュに入れられたデータへの一切のアクセスを確保しない、
    段階を含む方法。
  22. 前記調整する段階が、格納スペース管理ポリシーに従って、共有テーブルのクリーニングを開始する段階を含む、請求項8に記載の方法。
  23. 前記共有テーブルのクリーニングが、
    前記共有テーブルから各テーブル内の制御列を形成し、
    前記制御列内のエントリを偽に設定し、
    前記共有テーブル内で維持されることになる良好な照会を特定し、
    前記良好な照会についての応答に属する行に対応する、前記制御列内の全てのエントリに印を付け、
    前記制御列のエントリが依然として偽である前記共有テーブル内のいずれかの行を削除する、
    段階を含む、請求項15に記載の方法。
  24. データベース・サーバから検索された照会結果の組のデータ整合性を確保する方法(800)であって、
    起点によって伝えられ、バックエンド・テーブル(707)に適用された更新、削除、及び挿入を含むリフレッシュ・メッセージに前記データ・キャッシュをサブスクライブし、
    前記リフレッシュ・メッセージを受信するたびに、前記更新、削除、及び挿入を局所的にキャッシュに入れられたテーブル(704)に適用し、
    タイムスタンプを、その効果が前記メッセージ内に含まれるいずれかのトランザクションの最大のタイムスタンプと等しいリフレッシュ・メッセージと関連付け、
    一組のタイムスタンプを、前記キャッシュに適用された最後のリフレッシュ・メッセージの前記タイムスタンプと等しい従前の照会結果と関連付け、
    新しい照会のタイムスタンプを新しい照会と関連付け、
    前記新しい照会のタイムスタンプを前記組のタイムスタンプと比較し、
    前記新しい照会のタイムスタンプが該組のタイムスタンプを超える場合に、該新しい照会への応答を挿入し、
    前記新しい照会のタイムスタンプが前記組のタイムスタンプを超える場合に、前記データベース・サーバから保留のリフレッシュ・メッセージを検索する、
    段階を含むことを特徴とする方法。
  25. データベース・サーバから検索された照会結果の組のデータ整合性を確保するためのエッジ・サーバを含む請求項4に記載のシステムであって、前記システムが、
    起点によって伝えられ、バックエンド・テーブルに適用された更新、削除、及び挿入を含むリフレッシュ・メッセージにデータ・キャッシュをサブスクライブするための手段と、
    前記リフレッシュ・メッセージを受信するたびに、前記更新、削除、及び挿入を局所的に前記キャッシュに入れられたテーブルに適用するための手段と、
    タイムスタンプを、その結果が前記メッセージ内に含まれるトランザクションのいずれかの最大の前記タイムスタンプに等しいリフレッシュ・メッセージと関連付けるための手段と、
    一組のタイムスタンプを、前記キャッシュに適用される最後のリフレッシュ・メッセージの前記タイムスタンプと等しい従前の照会結果と関連付けるための手段と、
    新しい照会のタイムスタンプを新しい照会と関連付けるための手段と、
    前記新しい照会のタイムスタンプを前記組のタイムスタンプと比較するための手段と、
    前記新しい照会のタイムスタンプが前記組のタイムスタンプを超える場合に、該新しい照会への応答を挿入するための手段と、
    前記新しい照会のタイムスタンプが前記組のタイムスタンプを超える場合に、前記データベース・サーバから保留のリフレッシュ・メッセージを検索するための手段と、
    をさらに含むシステム。
  26. データベース・サーバから検索された照会結果の組のデータ整合性を確保するための請求項5に記載のプログラムであって、コンピュータに、
    起点によって伝えられ、バックエンド・テーブルに適用された更新、削除、及び挿入を含むリフレッシュ・メッセージにデータ・キャッシュをサブスクライブし、
    前記リフレッシュ・メッセージを受信するたびに、前記更新、削除、及び挿入を局所的にキャッシュに入れられたテーブルに適用し、
    タイムスタンプを、その効果が前記メッセージ内に含まれるいずれかのトランザクションの最大のタイムスタンプと等しいリフレッシュ・メッセージと関連付け、
    一組のタイムスタンプを前記キャッシュに適用された最後のリフレッシュ・メッセージの前記タイムスタンプと等しい従前の照会の結果と関連付け、
    新しい照会のタイムスタンプを新しい照会と関連付け、
    前記新しい照会のタイムスタンプを前記組のタイムスタンプと比較し、
    前記新しい照会のタイムスタンプが前記組のタイムスタンプを超える場合に、該新しい照会への応答を挿入し、
    前記新しい照会のタイムスタンプが前記組のタイムスタンプを超える場合に、前記データベース・サーバから保留のリフレッシュ・メッセージを検索する、
    機能をさらに実行させるプログラム。
JP2004564792A 2002-12-23 2003-10-14 トランスペアレントなネットワークのエッジ・データ・キャッシュ Expired - Fee Related JP4416663B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/328,229 US6950823B2 (en) 2002-12-23 2002-12-23 Transparent edge-of-network data cache
PCT/US2003/032778 WO2004061716A1 (en) 2002-12-23 2003-10-14 A transparent edge-of-network data cache

Publications (3)

Publication Number Publication Date
JP2006511876A true JP2006511876A (ja) 2006-04-06
JP2006511876A5 JP2006511876A5 (ja) 2008-12-18
JP4416663B2 JP4416663B2 (ja) 2010-02-17

Family

ID=32680768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004564792A Expired - Fee Related JP4416663B2 (ja) 2002-12-23 2003-10-14 トランスペアレントなネットワークのエッジ・データ・キャッシュ

Country Status (12)

Country Link
US (1) US6950823B2 (ja)
EP (1) EP1581886B1 (ja)
JP (1) JP4416663B2 (ja)
KR (1) KR100745883B1 (ja)
CN (1) CN1708757B (ja)
AT (1) ATE472774T1 (ja)
AU (1) AU2003279289A1 (ja)
CA (1) CA2507014C (ja)
DE (1) DE60333230D1 (ja)
IL (1) IL169267A0 (ja)
TW (1) TWI262406B (ja)
WO (1) WO2004061716A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007310592A (ja) * 2006-05-17 2007-11-29 Nomura Research Institute Ltd データ処理システム
JP2009266147A (ja) * 2008-04-30 2009-11-12 Internatl Business Mach Corp <Ibm> データベースと仮想テーブルの整合性を維持する方法および装置。
US8495041B2 (en) 2009-02-23 2013-07-23 International Business Machines Corporation Data structure, computer system, method and computer program for searching database
JP2019040409A (ja) * 2017-08-25 2019-03-14 Kddi株式会社 データベース管理装置、データベース管理方法、及びデータベース管理プログラム

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2471855C (en) * 2002-01-11 2013-03-19 Akamai Technologies, Inc. Java application framework for use in a content delivery network (cdn)
US7499910B2 (en) * 2002-06-27 2009-03-03 Siebel Systems, Inc. Detecting and processing cache hits for queries with aggregates
US7277718B2 (en) * 2002-07-22 2007-10-02 Cingular Wireless Ii, Llc Methods and apparatus for formatting information for a communication
JP4007594B2 (ja) * 2002-09-26 2007-11-14 株式会社東芝 動画像符号化装置及び方法、動画像符号化方式変換装置及び方法
US7089235B2 (en) * 2003-04-17 2006-08-08 International Business Machines Corporation Method for restricting queryable data in an abstract database
US20040236726A1 (en) * 2003-05-19 2004-11-25 Teracruz, Inc. System and method for query result caching
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
US7467131B1 (en) * 2003-09-30 2008-12-16 Google Inc. Method and system for query data caching and optimization in a search engine system
US9176719B2 (en) * 2004-02-26 2015-11-03 International Business Machines Corporation Resolving prerequisites for a client device in an open service gateway initiative (OSGI) framework
US7478396B2 (en) * 2004-03-22 2009-01-13 International Business Machines Corporation Tunable engine, method and program product for resolving prerequisites for client devices in an open service gateway initiative (OSGi) framework
US7337164B2 (en) * 2004-03-31 2008-02-26 Sap Ag Fast search with very large result set
US7840557B1 (en) * 2004-05-12 2010-11-23 Google Inc. Search engine cache control
US7457796B2 (en) * 2004-07-08 2008-11-25 International Business Machines Corporation Method using virtual replicated tables in a cluster database management system
US7395258B2 (en) * 2004-07-30 2008-07-01 International Business Machines Corporation System and method for adaptive database caching
US20060095403A1 (en) * 2004-11-03 2006-05-04 International Business Machines Corporation Method, system and program product for filtering model objects
US20060294088A1 (en) * 2005-06-27 2006-12-28 International Business Machines Corporation Method, system, and computer program product for caching dynamically generated queries
US8468152B2 (en) * 2005-08-04 2013-06-18 International Business Machines Corporation Autonomic refresh of a materialized query table in a computer database
GB0517585D0 (en) * 2005-08-30 2005-10-05 Ramakrishna Madhusudana Intuitive search which delivers fast results on the mobile phone
US20070143344A1 (en) * 2005-12-15 2007-06-21 International Business Machines Corporation Cache maintenance in a distributed environment with functional mismatches between the cache and cache maintenance
CN101005649A (zh) * 2006-01-19 2007-07-25 华为技术有限公司 一种多方通信业务的连接建立方法及系统
US7809882B1 (en) 2006-01-24 2010-10-05 Verizon Services Corp. Session independent backend data cache system
US7765275B2 (en) 2006-01-27 2010-07-27 International Business Machines Corporation Caching of private data for a configurable time period
US20070185836A1 (en) * 2006-02-09 2007-08-09 Handy-Bosma John H Method for caching faceted search results
US7805425B2 (en) 2006-04-28 2010-09-28 Microsoft Corporation Efficient database lookup operations
US8384700B2 (en) 2007-01-26 2013-02-26 Microsoft Corporation Linked shell
US20080005721A1 (en) * 2006-06-29 2008-01-03 Augusta Systems, Inc. Method and System for Rapidly Developing Sensor-Enabled Software Applications
US7735060B2 (en) * 2006-06-29 2010-06-08 Augusta Systems, Inc. Method and system for rapidly developing and deploying sensor-enabled software applications
US8095923B2 (en) * 2006-06-29 2012-01-10 Augusta Systems, Inc. System and method for deploying and managing intelligent nodes in a distributed network
US8015547B2 (en) * 2006-06-29 2011-09-06 Augusta Systems, Inc. Reconfigurable, hierarchical component-based architecture and framework and methods for rapidly developing sensor device-enabling software applications
US7698505B2 (en) * 2006-07-14 2010-04-13 International Business Machines Corporation Method, system and computer program product for data caching in a distributed coherent cache system
US7660787B2 (en) * 2006-07-19 2010-02-09 International Business Machines Corporation Customized, personalized, integrated client-side search indexing of the web
US7831620B2 (en) * 2006-08-31 2010-11-09 International Business Machines Corporation Managing execution of a query against a partitioned database
US7962442B2 (en) * 2006-08-31 2011-06-14 International Business Machines Corporation Managing execution of a query against selected data partitions of a partitioned database
US20080065590A1 (en) * 2006-09-07 2008-03-13 Microsoft Corporation Lightweight query processing over in-memory data structures
US7451225B1 (en) * 2006-09-12 2008-11-11 Emc Corporation Configuring a cache prefetch policy in a computer system employing object addressable storage
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
US7814234B2 (en) * 2006-10-30 2010-10-12 Microsoft Corporation Offline execution of web based applications
US8452756B2 (en) 2006-11-09 2013-05-28 International Business Machines Corporation Database execution detail repository
US7814095B2 (en) * 2006-12-27 2010-10-12 Sybase, Inc. Optimizing the navigation of one-to-one and one-to-many relationships using query batching in named transactions
US7925900B2 (en) 2007-01-26 2011-04-12 Microsoft Corporation I/O co-processor coupled hybrid computing device
US7774354B2 (en) * 2007-08-02 2010-08-10 International Business Machines Corporation Method and system for response time optimization for task list retrieval from databases
US7752219B2 (en) * 2007-08-21 2010-07-06 International Business Machines Corporation Apparatus, system, and method for customized event processing using a JDBC resource adapter
US20090164521A1 (en) * 2007-12-20 2009-06-25 George Lo Method and system for integrating multiple authoring applications in a collaborative environment
US7912812B2 (en) * 2008-01-07 2011-03-22 International Business Machines Corporation Smart data caching using data mining
US20100036804A1 (en) * 2008-08-05 2010-02-11 International Business Machines Corporation Maintained and Reusable I/O Value Caches
US20100036805A1 (en) * 2008-08-05 2010-02-11 International Business Machines Corporation System Maintainable and Reusable I/O Value Caches
CN102217225B (zh) * 2008-10-03 2014-04-02 杰出网络公司 内容递送网络加密
US8145652B2 (en) * 2008-10-09 2012-03-27 International Business Machines Corporation Automated propagation of non-conflicting queries in distributed databases
US8458166B2 (en) * 2008-10-09 2013-06-04 International Business Machines Corporation Dynamic context definitions in distributed databases
US9183260B2 (en) 2008-10-09 2015-11-10 International Business Machines Corporation Node-level sub-queries in distributed databases
US8285710B2 (en) 2008-10-09 2012-10-09 International Business Machines Corporation Automated query path reporting in distributed databases
US8301583B2 (en) * 2008-10-09 2012-10-30 International Business Machines Corporation Automated data conversion and route tracking in distributed databases
US8458208B2 (en) * 2008-10-09 2013-06-04 International Business Machines Corporation Automated data source assurance in distributed databases
GB2465773A (en) * 2008-11-27 2010-06-02 Symbian Software Ltd Data Storage and Access
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
US9111006B2 (en) * 2010-03-16 2015-08-18 Salesforce.Com, Inc. System, method and computer program product for communicating data between a database and a cache
US8898181B2 (en) * 2010-06-22 2014-11-25 Microsoft Corporation Subscription for integrating external data from external system
US9792307B2 (en) * 2010-07-27 2017-10-17 Oracle International Corporation Enterprise-based searching of new and updated data
US8612413B2 (en) * 2010-08-12 2013-12-17 Cdnetworks Co., Ltd. Distributed data cache for on-demand application acceleration
US20120130963A1 (en) * 2010-11-24 2012-05-24 Teradata Us, Inc. User defined function database processing
US8983902B2 (en) * 2010-12-10 2015-03-17 Sap Se Transparent caching of configuration data
US8412721B2 (en) * 2011-07-29 2013-04-02 International Business Machines Corporation Efficient data extraction by a remote application
US8560496B2 (en) * 2011-11-29 2013-10-15 Microsoft Corporation Database query across processes with change notification
US8843758B2 (en) * 2011-11-30 2014-09-23 Microsoft Corporation Migrating authenticated content towards content consumer
US10467212B2 (en) 2012-04-27 2019-11-05 Empire Technology Development Llc Multiple variable coverage memory for database indexing
US9026553B2 (en) * 2012-11-29 2015-05-05 Unisys Corporation Data expanse viewer for database systems
GB2510429A (en) 2013-02-05 2014-08-06 Ibm Assessing response routes in a network
CN104137100B (zh) * 2013-03-04 2017-11-24 株式会社东芝 数据库装置、程序及数据处理方法
CN104111962B (zh) * 2013-04-22 2018-09-18 Sap欧洲公司 具有批量操作的增强型事务高速缓存
CN104216901B (zh) * 2013-05-31 2017-12-05 北京新媒传信科技有限公司 信息搜索的方法和系统
KR101515304B1 (ko) * 2013-11-08 2015-07-02 한국산업기술대학교산학협력단 하둡 기반의 리듀스-사이드 조인 처리 시스템의 리듀스-사이드 조인 질의 처리 방법
CN103559307A (zh) * 2013-11-18 2014-02-05 中国农业银行股份有限公司 一种查询的缓存方法及装置
US10311054B2 (en) * 2014-01-08 2019-06-04 Red Hat, Inc. Query data splitting
US10114874B2 (en) * 2014-02-24 2018-10-30 Red Hat, Inc. Source query caching as fault prevention for federated queries
US10498663B2 (en) * 2014-03-12 2019-12-03 Amazon Technologies, Inc. Profile-based cache management
GB2524072A (en) * 2014-03-14 2015-09-16 Ibm Demand-driven dynamic aggregate
CN104268286A (zh) * 2014-10-21 2015-01-07 北京国双科技有限公司 一种查询热数据的方法
US10572442B2 (en) 2014-11-26 2020-02-25 Microsoft Technology Licensing, Llc Systems and methods for providing distributed tree traversal using hardware-based processing
CN109347925B (zh) * 2014-12-31 2021-07-09 华为技术有限公司 缓存方法、缓存边缘服务器、缓存核心服务器和缓存系统
CN106708819A (zh) * 2015-07-17 2017-05-24 阿里巴巴集团控股有限公司 一种数据缓存的预热方法及其装置
US20170034248A1 (en) * 2015-07-30 2017-02-02 Bank Of America Corporation File Movement Service Utility
US10848582B2 (en) 2015-09-11 2020-11-24 Amazon Technologies, Inc. Customizable event-triggered computation at edge locations
US11895212B2 (en) * 2015-09-11 2024-02-06 Amazon Technologies, Inc. Read-only data store replication to edge locations
US20170195449A1 (en) * 2015-12-30 2017-07-06 Business Objects Software, Ltd. Smart proxy for datasources
CN107193813B (zh) 2016-03-14 2021-05-14 阿里巴巴集团控股有限公司 数据表连接方式处理方法及装置
CN107789829B (zh) * 2016-09-06 2020-12-08 盛趣信息技术(上海)有限公司 一种游戏物品数据传输的方法
CN106407374A (zh) * 2016-09-09 2017-02-15 浪潮软件股份有限公司 一种适用于移动开发的高性能缓存方法
US10380137B2 (en) * 2016-10-11 2019-08-13 International Business Machines Corporation Technology for extensible in-memory computing
CN107665228B (zh) * 2017-05-10 2019-12-20 平安科技(深圳)有限公司 一种关联信息查询方法、终端及设备
CN107466482B (zh) * 2017-06-07 2021-07-06 香港应用科技研究院有限公司 在蜂窝通信系统中联合确定计算卸载和内容预取的方法和系统
US10721719B2 (en) * 2017-06-20 2020-07-21 Citrix Systems, Inc. Optimizing caching of data in a network of nodes using a data mapping table by storing data requested at a cache location internal to a server node and updating the mapping table at a shared cache external to the server node
US10740318B2 (en) * 2017-10-26 2020-08-11 Sap Se Key pattern management in multi-tenancy database systems
US11567934B2 (en) 2018-04-20 2023-01-31 Oracle International Corporation Consistent client-side caching for fine grained invalidations
CN108989062B (zh) * 2018-07-25 2020-05-01 北京达佳互联信息技术有限公司 更新群成员数据的方法、装置、终端、系统及存储介质
US11487737B2 (en) * 2019-03-26 2022-11-01 Sap Se Take over table opening for operators
US11163756B2 (en) * 2019-04-16 2021-11-02 Snowflake Inc. Querying over external tables in database systems
US11080257B2 (en) * 2019-05-13 2021-08-03 Snowflake Inc. Journaled tables in database systems
US11455305B1 (en) * 2019-06-28 2022-09-27 Amazon Technologies, Inc. Selecting alternate portions of a query plan for processing partial results generated separate from a query engine
CN110557432B (zh) * 2019-07-26 2022-04-26 苏州浪潮智能科技有限公司 一种缓存池均衡优化方法、系统、终端及存储介质
US20210173888A1 (en) * 2019-12-08 2021-06-10 Akamai Technologies Inc. Proxy server caching of database content
CN112632129B (zh) * 2020-12-31 2023-11-21 联想未来通信科技(重庆)有限公司 一种码流数据管理方法、装置及存储介质
US11727022B2 (en) 2021-03-19 2023-08-15 International Business Machines Corporation Generating a global delta in distributed databases
US11704327B2 (en) 2021-03-19 2023-07-18 International Business Machines Corporation Querying distributed databases
CN112883119B (zh) * 2021-04-30 2022-05-17 腾讯科技(深圳)有限公司 数据同步方法、装置、计算机设备及计算机可读存储介质
US11792147B2 (en) 2021-11-29 2023-10-17 Aidan Lok Communications networks
CN116910100B (zh) * 2023-09-08 2023-11-28 湖南立人科技有限公司 用于低代码平台的缓存数据处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2650180B2 (ja) * 1993-03-19 1997-09-03 サンケン電気株式会社 2方向性2端子サイリスタ
US5897632A (en) 1996-08-27 1999-04-27 At&T Corp Method and system for using materialized views to evaluate queries involving aggregation
US6275819B1 (en) 1999-03-16 2001-08-14 Novell, Inc. Method and apparatus for characterizing and retrieving query results
US6393415B1 (en) * 1999-03-31 2002-05-21 Verizon Laboratories Inc. Adaptive partitioning techniques in performing query requests and request routing
US6601062B1 (en) * 2000-06-27 2003-07-29 Ncr Corporation Active caching for multi-dimensional data sets in relational database management system
US6970939B2 (en) 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
WO2002069172A1 (en) * 2001-02-22 2002-09-06 Didera, Inc. Systems and methods for managing distributed database resources
US7035846B2 (en) * 2002-09-23 2006-04-25 International Business Machines Corporation Methods, computer programs and apparatus for caching directory queries

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007310592A (ja) * 2006-05-17 2007-11-29 Nomura Research Institute Ltd データ処理システム
JP2009266147A (ja) * 2008-04-30 2009-11-12 Internatl Business Mach Corp <Ibm> データベースと仮想テーブルの整合性を維持する方法および装置。
US8495041B2 (en) 2009-02-23 2013-07-23 International Business Machines Corporation Data structure, computer system, method and computer program for searching database
JP2019040409A (ja) * 2017-08-25 2019-03-14 Kddi株式会社 データベース管理装置、データベース管理方法、及びデータベース管理プログラム

Also Published As

Publication number Publication date
US6950823B2 (en) 2005-09-27
TWI262406B (en) 2006-09-21
EP1581886A4 (en) 2007-07-18
EP1581886B1 (en) 2010-06-30
CN1708757B (zh) 2010-04-28
WO2004061716A1 (en) 2004-07-22
CA2507014C (en) 2010-12-21
IL169267A0 (en) 2007-07-04
ATE472774T1 (de) 2010-07-15
CA2507014A1 (en) 2004-07-22
EP1581886A1 (en) 2005-10-05
CN1708757A (zh) 2005-12-14
TW200426625A (en) 2004-12-01
AU2003279289A1 (en) 2004-07-29
KR20050085133A (ko) 2005-08-29
KR100745883B1 (ko) 2007-08-02
DE60333230D1 (en) 2010-08-12
JP4416663B2 (ja) 2010-02-17
US20040133538A1 (en) 2004-07-08

Similar Documents

Publication Publication Date Title
JP4416663B2 (ja) トランスペアレントなネットワークのエッジ・データ・キャッシュ
US10296629B2 (en) Server supporting a consistent client-side cache
US8037040B2 (en) Generating continuous query notifications
US9697253B2 (en) Consistent client-side cache
US6487641B1 (en) Dynamic caches with miss tables
US10877956B2 (en) Transactional cache invalidation for inter-node caching
US7962481B2 (en) Query based invalidation subscription
US10353895B2 (en) Atomic visibility switch for transactional cache invalidation
US9411866B2 (en) Replication mechanisms for database environments
JP2006511876A5 (ja)
US8250044B2 (en) Byte-code representations of actual data to reduce network traffic in database transactions
US7117222B2 (en) Pre-formatted column-level caching to improve client performance
US20120117105A1 (en) Collaborative Database Operations
US11567934B2 (en) Consistent client-side caching for fine grained invalidations
US20190324676A1 (en) Paging and disk storage for document store
US20090106324A1 (en) Push-model based index deletion
US8150865B2 (en) Techniques for coalescing subqueries
US11210272B2 (en) Low latency cache synchronization in distributed databases
Yang Data synchronization for integration systems based on trigger
US20220138200A1 (en) Query processing using a predicate-object name cache
Vallath et al. Tuning the Database

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20050812

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081029

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20081029

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20081126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090127

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090721

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091021

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121204

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121204

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131204

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees