JP2006500669A - 分散キャッシュ内でデータを維持するための方法、システム、およびプログラム - Google Patents

分散キャッシュ内でデータを維持するための方法、システム、およびプログラム Download PDF

Info

Publication number
JP2006500669A
JP2006500669A JP2004539246A JP2004539246A JP2006500669A JP 2006500669 A JP2006500669 A JP 2006500669A JP 2004539246 A JP2004539246 A JP 2004539246A JP 2004539246 A JP2004539246 A JP 2004539246A JP 2006500669 A JP2006500669 A JP 2006500669A
Authority
JP
Japan
Prior art keywords
cache
target
data unit
latest
update information
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
JP2004539246A
Other languages
English (en)
Other versions
JP2006500669A5 (ja
JP4391943B2 (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 JP2006500669A publication Critical patent/JP2006500669A/ja
Publication of JP2006500669A5 publication Critical patent/JP2006500669A5/ja
Application granted granted Critical
Publication of JP4391943B2 publication Critical patent/JP4391943B2/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/10File systems; File servers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】分散キャッシュ内でデータを維持するための方法、システム、およびプログラムを提供すること。
【解決手段】オブジェクトのコピーが少なくとも1つのキャッシュ内で維持され、複数のキャッシュがそのオブジェクトの異なるバージョンを有することができ、そのオブジェクトは、変更可能なデータ・ユニットを有することが可能である。各キャッシュ内で維持される各オブジェクトに対する更新情報が維持され、各キャッシュ内の各オブジェクトに対する更新情報は、オブジェクト、そのオブジェクトを含むキャッシュ、およびそのオブジェクト内の各データ・ユニットが変更されたかどうかを示す。あるターゲット・キャッシュ内のあるターゲット・オブジェクト内のターゲット・データ・ユニットに対する変更を受け取った後、そのターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示すように更新され、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、ターゲット・データ・ユニットが変更されていないことを示す。

Description

本発明は、分散キャッシュ内でデータを維持するための方法、システム、およびプログラムに関する。
インターネットのユーザは、しばしば、中央のインターネット・サーバにデータを要求する。インターネット情報プロバイダ(internet information provider)が直面する挑戦課題の1つは、インターネットのトラフィック量とユーザ数が指数関数的なレートで増加する間に、ユーザの要求に対して情報を返すための適時の応答レートを維持するという目標である。この増大する数のユーザにサービスを提供するという必要に対する1つの解決策は、データのコピーを異なる場所で維持し、ユーザのデータ要求を、異なる地理的な場所にあるミラー・サーバを通して処理して、そのミラー・サーバに最も近いユーザにサービスを提供するようにすることである。他の解決案では、データのコピーを維持する分散キャッシュの使用を要するが、そこでは中央ディレクトリを維持して、分散キャッシュ・サーバにあるデータを追跡するようにする。キャッシュ・サーバを組織内の様々なポイントで展開して、クライアント・ユーザの特定のグループにサービスを提供することができる。中央ディレクトリにより、キャッシュ・サーバ内のオブジェクトに関する情報を維持するためのマッピングが提供される。
CRISP(Caching and Replication InternetService Performance、インターネット・サービスの性能のためのキャッシュおよび複製)プロジェクトでは、コンテンツをマッピング・サービスによって共用する自律的プロキシ・サーバの集まりとして構造化された、分散プロキシ・キャッシュを利用するインターネット・キャッシュ・サービスが開発されている。
クライアントのWebアクセス要求を処理するために、分散キャッシュが現在使用されているとはいえ、インターネットのWeb要求など、クライアントのネットワーク要求を処理するさらに改善された技法を提供することが、当技術分野では引き続き求められている。
第1の態様においては、本発明は、分散キャッシュ内でデータを維持するための方法であって、少なくとも1つのキャッシュ内でオブジェクトのコピーを維持するステップであって、複数のキャッシュがオブジェクトの異なるバージョンを有することができ、オブジェクトが、変更可能なデータ・ユニットを有することが可能であるステップと、各キャッシュ内で維持される各オブジェクトに対する更新情報を維持するステップであって、各キャッシュ内の各オブジェクトに対する更新情報が、オブジェクト、オブジェクトを含むキャッシュ、およびオブジェクト内の各データ・ユニットが変更されたかどうかを示すステップと、あるターゲット・キャッシュ内のあるターゲット・オブジェクト内のターゲット・データ・ユニットに対する変更を受け取った後、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、ターゲット・データ・ユニットが変更されていないことを示すステップとを含む方法を提供する。
本方法は、好ましくは、データ・ユニットを変更する要求を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示す場合、ターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに受け取った変更を適用するステップをさらに実行する。
本方法は、好ましくは、変更を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていないことを示す場合、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含んでいるかどうかを判断するステップと、別のキャッシュが最新のターゲット・データ・ユニットの値を含んでいない場合、変更をターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに適用するステップと、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、データ・ユニットが変更されていないことを示すステップをさらに実行する。
本方法は、好ましくは、変更を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていないことを示す場合、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含んでいるかどうかを判断するステップと、別のキャッシュが最新のターゲット・データ・ユニットの値を含む場合、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出し、ターゲット・キャッシュ内のターゲット・オブジェクトを、取り出した最新のターゲット・データ・ユニットの値で更新するステップとをさらに実行する。
本方法は、好ましくは、ターゲット・キャッシュ内のターゲット・オブジェクトを最新のターゲット・データ・ユニットの値で更新した後、受け取った変更をターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに適用するステップと、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、データ・ユニットが変更されていないことを示すステップをさらに実行する。
好ましくは、中央サーバが、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含むかどうかを判断するステップと、最新のターゲット・データ・ユニットの値を別のキャッシュから取り出すステップとを実行し、本方法は、中央サーバによって、最新のターゲット・データ・ユニットの値を返すステップをさらに含み、最新のターゲット・データ・ユニットの値がターゲット・キャッシュに適用された後でターゲット・データ・ユニットに対する変更がターゲット・キャッシュに適用される。
好ましくは、各キャッシュにキャッシュ・サーバが1つ結合され、各キャッシュ・サーバが、キャッシュ・サーバの結合される少なくとも1つのキャッシュ内の各オブジェクトに対する更新情報を維持し、中央サーバが各キャッシュ内の各オブジェクトに対する更新情報を維持する。
本方法は、好ましくは、各キャッシュ内の各オブジェクトに対する無効化情報を維持するステップであって、あるキャッシュ内のあるオブジェクトに対する無効化情報がオブジェクト内の各データ・ユニットが有効か無効かを示すステップをさらに実行する。
本方法は、好ましくは、ターゲット・オブジェクトおよびターゲット・キャッシュに対する無効化情報が、ターゲット・データ・ユニットが無効であることを示す場合、更新情報から、ターゲット・オブジェクトに対する最新のターゲット・データ・ユニットの値を含むキャッシュを判断するステップと、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出し、ターゲット・キャッシュ内のターゲット・オブジェクトを最新のターゲット・データ・ユニットの値で更新するステップとをさらに実行する。
本方法は、好ましくは、ターゲット・キャッシュ内のターゲット・オブジェクトを最新のターゲット・データ・ユニットの値で更新した後、ターゲット・キャッシュ内のターゲット・オブジェクト内のターゲット・データ・ユニットに受け取った変更を適用するステップと、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップと、ターゲット・オブジェクトを含む各キャッシュに対する無効化情報を、ターゲット・データ・ユニットが無効であることを示すように更新するステップとをさらに実行する。
本方法は、好ましくは、判断したキャッシュ内のターゲット・オブジェクトに対する更新情報を、データ・ユニットが変更されていないことを示すように更新するステップをさらに実行する。
好ましくは、中央サーバが、ターゲット・オブジェクトおよびターゲット・キャッシュに対する無効化情報が、ターゲット・データ・ユニットが無効であることを示すかどうかを判断するステップと、ターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含むキャッシュを判断するステップと、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出すステップとを実行し、本方法は、中央サーバによって、最新のターゲット・データ・ユニットの値を返すステップをさらに含み、最新のターゲット・データ・ユニットの値がターゲット・キャッシュ内のターゲット・オブジェクトに適用された後でターゲット・データ・ユニットに対する変更がターゲット・キャッシュに適用される。
好ましくは、各キャッシュにキャッシュ・サーバが1つ結合され、各キャッシュ・サーバが、キャッシュ・サーバの結合される少なくとも1つのキャッシュ内の各オブジェクトに対する更新情報を維持し、中央サーバが各キャッシュ内の各オブジェクトに対する更新情報および無効化情報を維持し、本方法は、ターゲット・データ・ユニットへの変更を受け取るターゲット・キャッシュ・サーバによって、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示すかどうかを判断するステップと、ターゲット・キャッシュ・サーバによって、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示すかどうかを判断した後、ターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットを更新するステップとをさらに含む。
本方法は、好ましくは、ターゲット・キャッシュ・サーバによって、ターゲット・データ・ユニットを変更するために要求を中央サーバに送るステップと、中央サーバによって、(i)他のキャッシュが最新のターゲット・データ・ユニットの値をもっていない場合、最新のターゲット・データ・ユニットの値を含まない、または(ii)別のキャッシュが最新のターゲット・データ・ユニットの値をもっている場合、最新のターゲット・データ・ユニットの値を含む変更を進めるためにメッセージをターゲット・キャッシュ・サーバに返すステップと、ターゲット・キャッシュ・サーバによって、受け取った変更をターゲット・データ・ユニットの値に適用する前に受け取った最新のターゲット・データ・ユニットの値をターゲット・キャッシュ内のターゲット・ページに適用するステップとをさらに含む。
第2の態様では、本発明は、複数のキャッシュと、少なくとも1つのキャッシュ内でオブジェクトのコピーを維持する手段であって、キャッシュがオブジェクトの異なるバージョンを有することができ、オブジェクトが、変更可能なデータ・ユニットを有することが可能である手段と、各キャッシュ内で維持される各オブジェクトに対する更新情報を維持する手段であって、各キャッシュ内の各オブジェクトに対する更新情報が、オブジェクト、オブジェクトを含むキャッシュ、およびオブジェクト内の各データ・ユニットが変更されたかどうかを示す手段と、あるターゲット・キャッシュ内のあるターゲット・オブジェクト内のターゲット・データ・ユニットに対する変更を受け取った後、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新する手段であって、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、ターゲット・データ・ユニットが変更されていないことを示す手段とを含む、データを維持するためのシステムを提供する。
システムは、好ましくは、データ・ユニットを変更する要求を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示す場合、ターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに受け取った変更を適用する手段をさらに含む。
システムは、好ましくは、変更を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていないことを示す場合、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含んでいるかどうかを判断するステップと、別のキャッシュが最新のターゲット・データ・ユニットの値を含んでいない場合、変更をターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに適用するステップと、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、データ・ユニットが変更されていないことを示すステップを実行する手段をさらに含む。
システムは、好ましくは、変更を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていないことを示す場合、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含んでいるかどうかを判断するステップと、別のキャッシュが最新のターゲット・データ・ユニットの値を含む場合、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出し、ターゲット・キャッシュ内のターゲット・オブジェクトを、取り出した最新のターゲット・データ・ユニットの値で更新するステップとを実行する手段をさらに含む。
システムは、好ましくは、各キャッシュ内の各オブジェクトに対する無効化情報を維持する手段であって、あるキャッシュ内のあるオブジェクトに対する無効化情報がオブジェクト内の各データ・ユニットが有効か無効かを示す手段をさらに含む。
システムは、好ましくは、ターゲット・オブジェクトおよびターゲット・キャッシュに対する無効化情報が、ターゲット・データ・ユニットが無効であることを示す場合、更新情報から、ターゲット・オブジェクトに対する最新のターゲット・データ・ユニットの値を含むキャッシュを判断する手段と、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出し、ターゲット・キャッシュ内のターゲット・オブジェクトを最新のターゲット・データ・ユニットの値で更新する手段とをさらに含む。
好ましくは、中央サーバが、ターゲット・オブジェクトおよびターゲット・キャッシュに対する無効化情報が、ターゲット・データ・ユニットが無効であることを示すかどうかを判断する手段と、ターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含むキャッシュを判断する手段と、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出すことのための手段を実装し、システムは、中央サーバによって、最新のターゲット・データ・ユニットの値を返す手段をさらに含み、最新のターゲット・データ・ユニットの値がターゲット・キャッシュ内のターゲット・オブジェクトに適用された後でターゲット・データ・ユニットに対する変更がターゲット・キャッシュに適用される。
第3の態様では、本発明は、コンピュータ・システムにロードされ、そこで実行されると、第1の態様による方法の諸ステップをすべて実行するコンピュータ・プログラム・コードを含む、コンピュータ・プログラムを提供する。
好ましくは、本発明は、分散キャッシュ内でデータを維持するための製品であって、当該製品が動作を実行させ、この動作が少なくとも1つのキャッシュ内でオブジェクトのコピーを維持するステップであって、複数のキャッシュがオブジェクトの異なるバージョンを有することができ、オブジェクトが、変更可能なデータ・ユニットを有することが可能であるステップと、各キャッシュ内で維持される各オブジェクトに対する更新情報を維持するステップであって、各キャッシュ内の各オブジェクトに対する更新情報が、オブジェクト、オブジェクトを含むキャッシュ、およびオブジェクト内の各データ・ユニットが変更されたかどうかを示すステップと、あるターゲット・キャッシュ内のあるターゲット・オブジェクト内のターゲット・データ・ユニットに対する変更を受け取った後、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、ターゲット・データ・ユニットが変更されていないことを示すステップとを含む、製品を提供する。
製品は、データ・ユニットを変更する要求を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示す場合、ターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに受け取った変更を適用するステップをさらに実行することができる。
製品は、変更を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていないことを示す場合、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含んでいるかどうかを判断するステップと、別のキャッシュが最新のターゲット・データ・ユニットの値を含んでいない場合、変更をターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに適用するステップと、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、データ・ユニットが変更されていないことを示すステップをさらに実行することができる。
製品は、変更を受け取った後で、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていないことを示す場合、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含んでいるかどうかを判断するステップと、別のキャッシュが最新のターゲット・データ・ユニットの値を含む場合、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出し、ターゲット・キャッシュ内のターゲット・オブジェクトを、取り出した最新のターゲット・データ・ユニットの値で更新するステップとをさらに実行することができる。
製品は、ターゲット・キャッシュ内のターゲット・オブジェクトを最新のターゲット・データ・ユニットの値で更新した後、受け取った変更をターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに適用するステップと、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、データ・ユニットが変更されていないことを示すステップをさらに実行することができる。
製品は、中央サーバが、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含むかどうかを判断するステップと、最新のターゲット・データ・ユニットの値を別のキャッシュから取り出すステップとを実行し、この動作は、中央サーバによって、最新のターゲット・データ・ユニットの値を返すステップをさらに含み、最新のターゲット・データ・ユニットの値がターゲット・キャッシュに適用された後でターゲット・データ・ユニットに対する変更がターゲット・キャッシュに適用される、製品とすることができる。
製品は、各キャッシュにキャッシュ・サーバが1つ結合され、各キャッシュ・サーバが、キャッシュ・サーバの結合される少なくとも1つのキャッシュ内の各オブジェクトに対する更新情報を維持し、中央サーバが各キャッシュ内の各オブジェクトに対する更新情報を維持する、製品とすることができる。
製品は、各キャッシュ内の各オブジェクトに対する無効化情報を維持するステップであって、あるキャッシュ内のあるオブジェクトに対する無効化情報がオブジェクト内の各データ・ユニットが有効か無効かを示すステップをさらに実行することができる。
製品は、ターゲット・オブジェクトおよびターゲット・キャッシュに対する無効化情報が、ターゲット・データ・ユニットが無効であることを示す場合、更新情報から、ターゲット・オブジェクトに対する最新のターゲット・データ・ユニットの値を含むキャッシュを判断するステップと、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出し、ターゲット・キャッシュ内のターゲット・オブジェクトを最新のターゲット・データ・ユニットの値で更新するステップとをさらに実行することができる。
製品は、ターゲット・キャッシュ内のターゲット・オブジェクトを最新のターゲット・データ・ユニットの値で更新した後、ターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに受け取った変更を適用するステップと、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、ターゲット・データ・ユニットが変更されていることを示すように更新するステップと、ターゲット・オブジェクトを含む各キャッシュに対する無効化情報を、ターゲット・データ・ユニットが無効であることを示すように更新するステップとをさらに実行することができる。
製品は、判断したキャッシュ内のターゲット・オブジェクトに対する更新情報を、データ・ユニットが変更されていないことを示すように更新するステップをさらに実行することができる。
製品は、中央サーバが、ターゲット・オブジェクトおよびターゲット・キャッシュに対する無効化情報が、ターゲット・データ・ユニットが無効であることを示すかどうかを判断するステップと、ターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含むキャッシュを判断するステップと、最新のターゲット・データ・ユニットの値を判断したキャッシュから取り出すステップとを実行し、この動作が、中央サーバによって、最新のターゲット・データ・ユニットの値を返すステップをさらに含み、最新のターゲット・データ・ユニットの値がターゲット・キャッシュ内のターゲット・オブジェクトに適用された後でターゲット・データ・ユニットに対する変更がターゲット・キャッシュに適用される、製品とすることができる。
製品は、各キャッシュにキャッシュ・サーバが1つ結合され、各キャッシュ・サーバが、キャッシュ・サーバの結合される少なくとも1つのキャッシュ内の各オブジェクトに対する更新情報を維持し、中央サーバが各キャッシュ内の各オブジェクトに対する更新情報および無効化情報を維持し、この動作が、ターゲット・データ・ユニットへの変更を受け取るターゲット・キャッシュ・サーバによって、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示すかどうかを判断するステップと、ターゲット・キャッシュ・サーバによって、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示すかどうかを判断した後、ターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットを更新するステップとをさらに含む、製品とすることができる。
製品は、ターゲット・キャッシュ・サーバによって、ターゲット・データ・ユニットを変更するために要求を中央サーバに送るステップと、中央サーバによって、(i)他のキャッシュが最新のターゲット・データ・ユニットの値をもっていない場合、最新のターゲット・データ・ユニットの値を含まない、または(ii)別のキャッシュが最新のターゲット・データ・ユニットの値をもっている場合、最新のターゲット・データ・ユニットの値を含む変更を進めるためにメッセージをターゲット・キャッシュ・サーバに返すステップと、ターゲット・キャッシュ・サーバによって、受け取った変更をターゲット・データ・ユニットの値に適用する前に受け取った最新のターゲット・データ・ユニットの値をターゲット・キャッシュ内のターゲット・ページに適用するステップとをさらに実行することができる。
分散キャッシュ内でデータを維持するための方法、システム、およびプログラムが提供される。オブジェクトのコピーが少なくとも1つのキャッシュ内で維持され、複数のキャッシュがそのオブジェクトの異なるバージョンを有することができ、そのオブジェクトは、変更可能なデータ・ユニットを有することが可能である。各キャッシュ内で維持される各オブジェクトに対する更新情報が維持され、各キャッシュ内の各オブジェクトに対する更新情報は、オブジェクト、そのオブジェクトを含むキャッシュ、およびそのオブジェクト内の各データ・ユニットが変更されたかどうかを示す。あるターゲット・キャッシュ内のあるターゲット・オブジェクト内のターゲット・データ・ユニットに対する変更を受け取った後、そのターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示すように更新され、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報も、ターゲット・データ・ユニットが変更されていないことを示す。
別の実装形態では、データ・ユニットを変更する要求を受け取った後でターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていることを示す場合には、受け取った変更はターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに適用される。
また別の場合、変更を受け取った後でターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていないことを示す場合には、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含むかどうかに関して判断を行うことができる。別のキャッシュが最新のターゲット・データ・ユニットの値を含まない場合、変更がターゲット・キャッシュ内のターゲット・オブジェクト内のデータ・ユニットに適用され、ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報がターゲット・データ・ユニットが変更されていることを示すように更新されるが、他のどのキャッシュ内のターゲット・オブジェクトに対する更新情報はデータ・ユニットが変更されていないことを示す。
また別の実装形態では、変更を受け取った後でターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報が、ターゲット・データ・ユニットが変更されていないことを示す場合には、別のキャッシュがターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含むかどうかに関して判断が行われる。別のキャッシュが最新のターゲット・データ・ユニットの値を含む場合、その最新のターゲット・データ・ユニットの値が判断されたキャッシュから取り出され、ターゲット・キャッシュ内のターゲット・オブジェクトが取り出された最新のターゲット・データ・ユニットの値で更新される。
また別の場合、各キャッシュ内の各オブジェクトに対して無効化情報を維持することができるが、あるキャッシュ内のあるオブジェクトに対する無効化情報はそのオブジェクト内の各データ・ユニットが有効化無効化を示す。
ここに説明する実装形態により、複数の分散キャッシュにおけるデータ・オブジェクトの分散ストレージを、その分散キャッシュで維持されるデータに関してどのような非整合的なデータ操作も実行を回避するように管理する技法が提供される。
本発明の好ましい一実施形態を、例としてのみ、添付の図面を参照して、次に定義する。
以下の説明では、本明細書の一部であり、本発明のいくつかの実施形態を例示する添付の図面を参照する。本発明の範囲を逸脱することなく、他の実施形態を利用してもよく、構造上および操作上の変更を行ってもよいことが了解されている。
図1に、本発明の諸態様を実装できるネットワーク・コンピューティング環境を図示している。複数のキャッシュ・サーバ2a、2b...2nが中央サーバ4に接続しており、ここで中央サーバ4はインターネット6、または当技術分野に知られる何らかのタイプのネットワークに接続されている。キャッシュ・サーバおよび中央サーバ2a、2b...2n、4はサーバ・クラス・マシン、ワークステーション、パーソナル・コンピュータなどを含む、当技術分野に知られるどのようなタイプのコンピューティング装置を含んでいてもよい。キャッシュ・サーバ2a、2b...2nはそれぞれ、インターネット6からダウンロードされたWebページを、メモリ・ページ10a、10b...10nとして保存するキャッシュ8a、8b...8nに結合されている。メモリ・ページ10a、10b...10nのそれぞれは、オブジェクトまたはコンポーネントを含むことができ、これを本明細書ではデータ・ユニット12a、12b...12n、14a、14b...14n、および16a、16b...16nと呼ぶが、ここでデータ・ユニットは変更することが可能である。データ・ユニットは、ワード、フィールド、ライン、フレーム、ページ全体、パラグラフ、オブジェクトなどを含めて、メモリ・ページ10a、10b...10n内部のどのような度合いの粒度(granularity)も含むことができる。図1には、各キャッシュ8a、8b...8nを、各ページが同じ数のデータ・ユニットを有する、同じ数のページを含むものとして示しているが、ここで説明する実装形態では、各キャッシュ8a、8b...8nは異なる数のメモリ・ページ、および、各メモリ・ページが異なる数のデータ・ユニットを有する、異なるメモリ・ページを維持することができる。異なるキャッシュ8a、8b...8n内のメモリ・ページは、たとえばURL(UniversalResource Locators)など、異なるインターネット・アドレスにある、異なるインターネットWebサーバからダウンロードされたWebページを代表することができる。メモリ・ページは、Webページを同じファイル・フォーマットでも異なるファイル・フォーマットでも格納することができる。メモリ・ページは、HTML(HypertextMarkup Language、ハイパーテキスト・マークアップ言語)、XML(Extensible Markup Language、拡張マークアップ言語)、テキスト・ファイル、ムービー・ファイル、画像ファイル、サウンド・ファイルなど、当技術分野に知られるどのようなメディア・ファイル・フォーマットのコンテンツも含むことができる。
複数のクライアント・システム18a、18b、18c、18d、18e、18f、18gは、ブラウザ20a、20b、20c、20d、20e、20f、20gを含んでおり、これらブラウザは、Webページに対する要求を指定されたキャッシュ・サーバ2a、2b、2nへと通信し、クライアントの要求がキャッシュ8a、8b...8nから処理できるようにする。クライアント・システム18a、18b...18gは、パーソナル・コンピュータ、ラップトップ・コンピュータ、ワークステーション、メインフレーム、電話(telephony)装置、ハンドヘルド・コンピュータ、サーバ、ネットワーク・アプライアンス(network appliance)など、当技術分野に知られるどのようなコンピューティング装置を含んでいてもよく、ブラウザ20a、20b...20gは、インターネット・ブラウザ・プログラム、ムービー・プレイヤー、サウンド・プレイヤーなど、ネットワークを介してファイルを要求し、そのようなファイルからのデータをユーザに対して当技術分野に知られるどのようなメディア・フォーマットにでも変換する能力のあるどのようなプログラムを含んでいてもよい。特定の実装形態では、ブラウザ20a、20b...20gのユーザは、キャッシュ8a、8b...8n内のメモリ・ページにあるデータ・ユニット内のデータを変更または更新を行ってもよい。
中央サーバ4は、中央ディレクトリ・サーバ・プログラム22を含み、キャッシュ・サーバ2a、2b...2nはそれぞれ、キャッシュ関連操作を実行するためのキャッシュ・サーバ・プログラム24a、24b...24nを含む。中央サーバ・ディレクトリ・プログラム22は、中央ディレクトリ26を維持するが、これは各キャッシュ8a、8b...8n内の各メモリ・ページ内にある更新の可能なデータ・ユニットに関する情報を維持している。また、各キャッシュ・サーバ・プログラム24a、24b...24nは、ローカル・キャッシュ・ディレクトリ28a、28b...28nを維持するが、これはローカル・キャッシュ8a、8b...8n内のメモリ・ページ10a、10b...10n内にある更新の可能なデータ・ユニットに関する情報を維持するエントリを有する。ローカル・キャッシュ・ディレクトリ28a、28b...28n内のエントリは、同じメモリ・ページに対する中央ディレクトリ26内のエントリに対応している。
図2には、中央ディレクトリ26およびローカル・キャッシュ・ディレクトリ28a、28b...28n内で維持されるエントリのフォーマット50を示している。各エントリ50は、そのエントリに対応するページのコピー1つをローカル・キャッシュ8a、8b...8nで維持するローカル・キャッシュ・ディレクトリ28a、28b...28nごとに、1つまたは複数の情報の組(tuple)を含む。各エントリ50は、特定のメモリ・ページ・アドレス1つに対応しており、ここでそのページのコピー1つを異なるキャッシュ8a、8b...8nが維持してもよい。このページのコピーを有するキャッシュ8a、8b...8nごとに維持される情報の組のそれぞれは、次のものを含む。
キャッシュ・サーバID:52a...52n:そのエントリによって代表されるメモリ・ページを含む特定のキャッシュ・サーバ2a、2b...2nを示す。この情報は、ローカル・キャッシュ・ディレクトリ28a、28b...28n内のエントリでは自由選択としてよい。
更新ワード(update word):54a...54n:各ワードは複数のビットを含み、そこでは、この更新ワードが代表するページ内の更新可能なデータ・ユニットごとに1ビットが提供される。各ビットは、キャッシュ8a、8b...8n内のそのページ内のデータ・ユニットが変更されている場合は「オン」にセットされ、対応するデータ・ユニットが変更されていない場合は「オフ」にセットされる。
無効化ワード(invalidation word):56a...56n:数ビットからなる1個のワードであり、そこでは、キャッシュ8a、8b...8n内の各メモリ・ページ10a、10b...10n内のデータ・ユニットに対応する1ビットが存在する。あるビットが「オン」にセットされると、そのようなビットが代表する、ローカル・キャッシュ8a、8b...8nにあるメモリ・ページ内のそのデータ・ユニットにあるデータが無効または更新済みであることが示され、「オフ」にセットされると、ローカル・キャッシュ8a、8b...8nにあるメモリ・ページ内のそのデータ・ユニットが更新済みでない、または無効でないことが示される。このワードは、ローカル・キャッシュ・ディレクトリ28a、28b...28n内のエントリに対しては自由選択としてよい。
図3および5には、キャッシュ・サーバ・プログラム24a、24b...24n内に実装される論理を示してあり、図4および6には、中央ディレクトリ・サーバ・プログラム22内に実装される論理を示してある。これらは、メモリ・ページおよびその中にあるデータ・ユニットへのアクセスを調整して、クライアント18a、18b...18gがデータに高速にアクセスできるように、データ整合性を維持するためのものである。
図3および4には、キャッシュ・サーバ・プログラム24a、24b...24nおよび中央ディレクトリ・サーバ・プログラム22がそれぞれ、要求されたWebページの一部であるメモリ・ページへの読み取りアクセスをクライアント・ブラウザ20a、20b...20gに提供するために実行する動作を示している。図3について述べると、制御は、ブロック100で、キャッシュ・サーバ・プログラム24a、24b...24nがブラウザ20a、20b...20gの1つからあるメモリ・ページに対する要求を受け取ることから始まる。特定の実装形態では、各クライアント18a、18b...18gが、そのページ要求をすべて1つの指定されたキャッシュ・サーバ2a、2b...2nに振り向けることもある。代替方法として、各クライアントは、要求を多くの指定された代替キャッシュ・サーバのうちの1つに振り向けることもできる。要求を受け取るのに応答して、要求されたページが、受け取ったキャッシュ・サーバ2a、2b...2nに結合されたキャッシュ8a、8b...8n内にある場合は(ブロック102)、キャッシュ・サーバ・プログラム24a、24b...24nが、要求されたメモリ・ページをキャッシュ8a、8b...8nから返す(ブロック104)。そのような実装形態では、キャッシュ・サーバ・プログラム24a、24b...24nは、あるページに対するキャッシュ8a、8b...8nからのアクセスを即時に提供するが、返されるページは、あるデータ・ユニットに対する値の最新のコピーを有していない可能性がある。要求されたページが、接続されている(attached)キャッシュ8a、8b...8n内にない場合は、キャッシュ・サーバ・プログラム24a、24b...24nは、要求されたページに対する要求を中央サーバ4に送り(ブロック106)、制御は図4のブロック120に移り、そこでは中央ディレクトリ・サーバ・プログラム22がその要求を処理する。
図4について述べると、中央ディレクトリ・サーバ・プログラム22が、メモリ・ページに対する要求を受け取る(ブロック120)のに応答して、中央ディレクトリ26が要求されたページに対するエントリを含んでいるかどうかを判断する(ブロック122)。そうでない場合、中央ディレクトリ・サーバ・プログラム22は、要求されたページをインターネット6からダウンロードする(ブロック124)。中央ディレクトリ26内のエントリ50が、取り出されたページに対して生成され(ブロック126)、ここで生成されたエントリ50は、キャッシュ・サーバIDフィールド52a...52nにおいてその要求を発したキャッシュ・サーバ2a、2b...2nを識別し、更新ワード54a...54nおよび無効化ワード56a...56nを、すべてのデータ・ユニット・ビット(図2)が初め(initially)「オフ」にセットされた状態で含む。次いで、取り出されたページおよび生成されたエントリ50が、要求側キャッシュ・サーバ2a、2b...2nに返されて(ブロック128)、ローカル・キャッシュ8a、8b...8n内にバッファリングされ、受け取った新しいエントリがローカル・キャッシュ・ディレクトリ28a、28b...28n内で維持される。
中央ディレクトリ26内に要求されたページに対するエントリがあり(ブロック122)、かつ、その要求されたページに対して他のどのキャッシュ・サーバ2a、2b...2nもデータ・ユニット12a、12b...12n、14a、14b...14n、および16a、16b...16nを更新していないことを示す、「オン」にセットされたデータ・ユニット・ビット54a...54n(図2)が要求されたページに対する更新ワード54a...54nにあるエントリが存在しない場合(ブロック130)、中央ディレクトリ・サーバ・プログラム22は、要求されたページに対するエントリ50内の1つの情報の組にあるキャッシュ・サーバIDフィールド52a...52nにおいて識別される1つのキャッシュ・サーバ2a、2b...2nから、要求されたページにアクセスする(ブロック132)。どのキャッシュ・サーバ2a、2b...2nも、維持するデータ・ユニットには更新されたデータがないので、そのページは、エントリ50において識別されるどのキャッシュ8a、8b...8nからでもアクセスすることができる。中央ディレクトリ・サーバ・プログラム22は、1つの情報の組を生成し(ブロック134)、要求されたページに対するエントリ50に付加するが、ここで生成される情報の組は、フィールド52a...52nにおいて要求側キャッシュ・サーバ2a、2b...2nが識別され、更新ワード54a...54nおよび無効化ワード56a...56nを、すべてのデータ・ユニット・ビット54a...54nおよび56a...56nが「オフ」にセットされた状態で含む。取り出したページおよび生成した情報の組は、要求側キャッシュ・サーバに返される(ブロック136)。代替実装形態では、情報の組を送る代わりに、生成した更新ワード54a...54nだけを送ってもよいことに注意されたい。
要求されたページに対するエントリ50内の、別のキャッシュ・サーバ2a、2b...2nに対する1つの情報の組にある更新ワード54a...54n内で、あるデータ・ユニット・ビットが「オン」にセットされている場合(ブロック130)、中央ディレクトリ・サーバ・プログラム22は、要求されたページに対するエントリ50内で、その更新ワード54a...54nのデータ・ユニット・ビットが最も多く「オン」にセットされている情報の組を決定する(ブロック138)。次いで、中央ディレクトリ・サーバ・プログラム22は、決定された情報の組のフィールド52a...52nにおいて識別されるキャッシュ・サーバ2a、2b...2nから、要求されたページを取り出す(ブロック140)が、この情報の組は最新のデータ・ユニットの値の数が最大となっている。「オン」にセットされたデータ・ユニット・ビットのある更新ワード54a...54nを有するページに対するエントリ50の他の組のそれぞれについて、中央ディレクトリ・サーバ・プログラム22は、「オン」にセットされているビットに対応している対応データ・ユニットに、その組のフィールド52a...52nにおいて識別されるキャッシュ・サーバ2a、2b...2nからアクセスし、アクセスしたデータを、取り出したページ内の対応データ・ユニットに付加する(ブロック142)。取り出したページに対するエントリに対する組は、要求側キャッシュ・サーバ2a、2b...2nについて生成されて、フィールド52a...52nにおいて要求側キャッシュ・サーバ2a、2b...2nが識別され、更新ワード54a...54nおよび無効化ワード56a...56nを、すべてのデータ・ユニット・ビットが「オフ」にセットされた状態で含む(ブロック144)。次いで、制御はブロック136に進んで、取り出したページおよび生成した組(またはその関係のある部分)を、要求側キャッシュ・サーバ2a、2b...2nに返す。
図3および4の論理について述べると、クライアント・ブラウザのページ要求は、まず、ローカル・キャッシュ8a、8b...8nから処理され、次に、ローカル・キャッシュ内にコピーがない場合は、リモート・キャッシュからになる。ローカル・キャッシュまたはリモート・キャッシュ内に要求されたページのコピーがない場合は、そのページはインターネット6からダウンロードされる。レイテンシ・アクセス時間(latency access times)はインターネットを介したダウンロードの場合がもっとも長いため、ダウンロードを、好ましくはローカル・キャッシュから、次いでリモート・キャッシュから、最終的にインターネットから行うことにより、アクセスのパフォーマンスが最適化される。さらに、ある特定の実装形態では、リモート・キャッシュに格納されているページを初めて受け取る場合、返されるページは、すべてのリモート・キャッシュ内で維持されるデータ・ユニットからの最新の値を含む。
図5には、ターゲット・ページと呼ばれるあるページにある、ターゲット・データ・ユニットと呼ばれるデータ・ユニットを変更する、クライアント・ブラウザ20a、20b...20gによる要求を取り扱うための、キャッシュ・サーバ・プログラム24a、24b...24nに実装される論理を示している。制御は、ブロック200で、キャッシュ・サーバ・プログラム24a、24b...24nが、あるページ内のあるデータ・ユニットを変更する要求を1つのクライアント18a、18b...18gから受け取ることから始まる。このクライアントは、その要求を受け取るキャッシュ・サーバ2a、2b...2nにページ要求を送信するように割り当てられている。要求されたページに対するローカル・キャッシュ・ディレクトリ28a、28b...28n内の更新ワード内の、このターゲット・データ・ユニットに対応するデータ・ユニット・ビットが、「オン」にセットされている場合(ブロック202)、これは、受け取り側キャッシュ・サーバと呼ばれる、その要求を受け取るキャッシュ・サーバ2a、2b...2nが、ターゲット・データ・ユニット12a、12b...12n、14a、14b...14n、16a、16b...16nに対する最新の値を有していることを示すが、その場合、受け取り側のキャッシュ・サーバ・プログラム24a、24b...24nは、受け取り側キャッシュ・サーバ2a、2b...2nに結合されたキャッシュ8a、8b...8n内のターゲット・ページ内のデータ・ユニットを、受け取った変更されたデータ・ユニットで更新する(ブロック204)。そうではなく、受け取り側キャッシュ・サーバ2a、2b...2nにあるローカル・キャッシュ・ディレクトリ28a、28b...28n内の更新ワード54a...54nの、このターゲット・データ・ユニットに対応するビットが「オン」にセットされていない場合、受け取り側のキャッシュ・サーバ・プログラム24a、24b...24nは、ターゲット・ページ内のターゲット・データ・ユニットを変更する要求を中央サーバ4に送る(ブロック206)。
図6には、中央ディレクトリ・サーバ・プログラム22が、(図5のブロック206で)受け取り側キャッシュ・サーバ2a、2b...2nからの要求に応答して、ターゲット・ページ内のターゲット・データ・ユニットを変更するために実行する動作を示している。そのような要求を受け取るのに応答して(ブロック210)、中央ディレクトリ・サーバ・プログラム22は、要求されたページに対するエントリ50内の、(フィールド52a...52nで示される)受け取り側キャッシュ・サーバ2a、2b...2nに対する組の中の無効化ワード56a...56n内のターゲット・データ・ユニットに対応するデータ・ユニット・ビットが、「無効」を意味する「オン」にセットされているかどうかを判断する(ブロック214)。そうである場合、ある別のキャッシュ・サーバ2a、2b...2nがこのターゲット・データ・ユニットを変更していることになる。そのような場合には、中央ディレクトリ・サーバ・プログラム22が、ターゲット・データ・ユニット・ビットが「オン」にセットされている更新ワード(図2)を有する、その別のキャッシュ・サーバ2a、2b...2nに対するエントリの中にある組を決定する(ブロック216)。このエントリはすなわち、対象となるデータ・ユニットに対する最新のデータを有するキャッシュ・サーバに対するエントリである。次いで、中央ディレクトリ・サーバ・プログラム22は、ターゲット・データ・ユニットの最新の値を、この決定された組において示される別のキャッシュ・サーバ2a、2b...2nから取り出し(ブロック218)、取り出した最新のデータ・ユニットの値を受け取り側キャッシュ・サーバに返す(ブロック220)。この決定された組では、別のキャッシュ・サーバ2a、2b...2nに対する更新ワード54a...54n内のターゲット・データ・ユニット・ビットが「オフ」にセットされるが、これは、この更新動作の後、受け取り側キャッシュ・サーバが、ターゲット・データ・ユニットを更新し、そのターゲット・データ・ユニットに対する最新の値を有することになるからである。
受け取り側キャッシュ・サーバに最新のデータの値を提供した後(ブロック222より)または受け取り側キャッシュ・サーバが、ターゲット・データ・ユニットに対する最新の値を有していない場合(ブロック214の「いいえ」の分岐より)、制御はブロック224および226に進んで、中央ディレクトリ・サーバ・プログラム22が、要求側キャッシュ・サーバに対するエントリ内で、更新ワード54a...54n内のターゲット・データ・ユニットに対応するデータ・ユニット・ビットを「オン」に、要求側キャッシュ・サーバに対するエントリ内の無効化ワード56a...56n内のビットを「オフ」にセットする(ブロック224)。また、中央ディレクトリ・サーバ・プログラム22は、他のすべてのキャッシュ・サーバに対する、ターゲット・ページに対するエントリ50内の組の中の無効化ワード56a...56n内のデータ・ユニット・ビットを「オン」にセットし、このターゲット・ページの他のキャッシュ・サーバが有するコピーにある、ターゲット・データに対するデータは無効であることを示す(ブロック226)。次いで、中央ディレクトリ・サーバ・プログラム22は、メッセージを要求側キャッシュ・サーバに返して(ブロック228)、ターゲット・データ・ユニットの変更を進める。このメッセージは、また、明示的にせよ暗黙にせよ、要求側キャッシュ・サーバへのメッセージを含んで、受け取ったページに対する有効化および無効化ワード(validation and invalidation words)内の関係するビットを更新して、要求側キャッシュ・サーバがそのページ内で更新中のデータ・ユニットに対する最新の更新を有することを示すこともできる。代替実装形態で、中央ディレクトリ・サーバ・プログラム22が、変更された有効化および無効化ワードを返すこともできる。
キャッシュ・サーバ・プログラム24a、24b...24nは、変更されたターゲット・データ・ユニットを中央ディレクトリ・サーバ・プログラム22から受け取ると(図5のブロック250)、自分のキャッシュ8a、8b...8n内のターゲット・ページ内のターゲット・データ・ユニットを、受け取った変更されたデータ・ユニットで更新する(ブロック252)。要求側のキャッシュ・サーバ・プログラム24a、24b...24nは、ターゲット・データ・ユニットを変更するメッセージを受け取ると(ブロック254)、クライアント・ブラウザ20a、20b...20gから受け取った変更されたデータ・ユニットをキャッシュ8a、8b...8n内のページ10a、10b...10nに付加する(256)。
ここで説明する実装形態により、クライアント・ブラウザによって1つのキャッシュ・サーバにおいて更新が行え、同時に、すべてのキャッシュ・サーバの間でデータ整合性が維持される、分散キャッシュ・サーバ・システムのためのプロトコルが提供される。また、この実装形態により、緩やかなデータ更新整合性が提供されるが、これは、データがブラウザにおいて更新される場合、変更中のデータを含むページのコピーを有するリモート・キャッシュ・サーバに対して、中央ディレクトリ内で無効化データ・ビット(invalidated data bit)だけがセットされるためである。リモート・キャッシュ・サーバには更新についての情報はなにも含まれず、リモート・キャッシュ・サーバおよびクライアントにあるブラウザは、最新のデータ・ユニットの値を有していないローカル・キャッシュからページを読み続けることができる。しかし、最新のデータをもたないキャッシュ・サーバからデータを受け取るブラウザが、データ・ユニットを変更しようと試みた場合には、そのブラウザは更新を適用する前に最新のデータを受け取ることになる。
実装の詳細に関する追加(Additional ImplementationDetails)
分散キャッシュ・サーバ・システムを管理するためのここで説明した技法は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを製造するための標準的なプログラム上または工学上の技法あるいはそれらの組合せを使用して、方法、装置または製品として実装することができる。本明細書で使用する「製品」(article of manufacture)という用語は、ハードウェア論理(たとえば、集積回路チップ、プログラマブル・ゲート・アレイ(PGA、ProgrammableGate Array)、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)など)、または磁気記憶媒体(たとえば、ハード・ディスク・ドライブ、フロッピー(R)ディスク、テープなど)、光ストレージ(たとえば、CD−ROM、光ディスクなど)、揮発性および不揮発性記憶装置(たとえば、EEPROM、ROM、PROM、RAM、DRAM、SRAM、ファームウェア、プログラマブル論理など)などのコンピュータ可読媒体で実装されるコードまたは論理を指す。コンピュータ可読媒体内のコードは、プロセッサによってアクセスされ実行される。好ましい実施形態が実装されるコードは、伝送媒体を通してまたはネットワークを介してファイル・サーバから、さらにアクセス可能とすることができる。そのような場合には、コードが実装される製品は、ネットワーク伝送ライン、無線伝送媒体、空間を伝播する信号、電波、赤外線信号などの伝送媒体を含むことができる。したがって、「製品」は、コードが実施される媒体を含むことができる。さらに、「製品」は、コードが実施され(embodied)、処理され、実行されるハードウェアおよびソフトウェアのコンポーネントの組合せを含むことができる。もちろん、この構成に対しては、本発明の範囲を逸脱することなく多くの変更を行うことができ、製品は当技術分野に知られるどのような情報担持媒体(informationbearing medium)を含むこともできることが、当業者には理解されよう。
ここで説明した実装形態では、無効化ワードも更新ワードもどちらも、中央サーバ内の各エントリ内の情報の組ごとに維持される。代替実装形態では、更新ワードだけが維持される。そのような実装形態では、中央サーバは、要求側キャッシュ・サーバが古い(stale)データをもっているかどうかを判断するために、他のキャッシュ・サーバに対する組の中の更新ワードを処理して、他のキャッシュ・サーバのどれかがデータ・ユニットを変更しているかどうかを判断しなければならないはずである。
ここで説明した実装形態では、キャッシュ内で維持されるページは、メモリ・ページを含み、そこでは複数のメモリ・ページに、インターネットを介してあるURLからアクセスされる単一のWebページに対するデータが格納されていた。代替方法として、キャッシュ内のメモリ・ページが複数のWebページを含むのでもよい。
ここで説明した実装形態では、中央サーバおよび中央ディレクトリ・サーバ・プログラムが更新動作を管理して、更新の適用前に要求側キャッシュ・サーバが最新のデータを受け取ることを保証するようにしていた。代替実装形態では、中央サーバおよび中央ディレクトリ・サーバ・プログラムが実行するものとして説明した動作をキャッシュ・サーバ間に分散させて、分散中央ディレクトリを提供するのでもよい。そのような、中央ディレクトリ・サーバ・プログラムの実行する動作が分散している実装形態では、中央サーバで更新ワードおよび無効化ワード内で維持される情報は、キャッシュ・サーバに分散されて、キャッシュ・サーバが分散キャッシュ管理動作を実行することが可能になるはずである。
ここで説明した実装形態では、各キャッシュ・サーバが、キャッシュ・サーバ2a、2b...2nに対するキャッシュ8a、8b...8n内で維持されるページごとに更新ワードのコピーを維持していた。代替方法として、キャッシュ・サーバが更新ワードを維持せずに、その代わりすべての整合性操作を中央サーバを通して取り扱うのでもよい。
更新ワードおよび無効化ワード内に含まれるものとして説明した情報は、更新および無効化の情報を提供するための、当技術分野に知られる1つまたは複数のどのようなデータ構造でも実装することができる。たとえば、更新および無効化の情報は、1つまたは複数のデータ・オブジェクト、データベース内のデータ・レコード、テーブル内のエントリ、別々のオブジェクトなどで実装することもできる。
キャッシュ内で維持されるページは、クライアントまたはユーザがデータを入力または付加してオブジェクトの内容を変更するどのようなタイプのマルチメディア・オブジェクトを含む、どのようなデータ・オブジェクトのタイプ(data object type)を含んでいてもよい。
ここで説明した実装形態では、キャッシュのそれぞれに結合される、分離したキャッシュ・サーバがある。キャッシュおよびキャッシュ・サーバは、密閉された同じユニット内にあってもよく、または別々のユニット内にあってもよい。代替実装形態では、1つのキャッシュ・サーバを複数のキャッシュに結合し、結合された複数のキャッシュに対する更新情報を維持するのでもよい。
ここで説明した実装形態では、中央サーバがインターネットからページをダウンロードしていた。代替方法として、中央サーバは、インターネット、LAN(Local Area Network、構内通信網)、WAN(Wide Area Network、広域通信網)、SAN(StorageArea Network、ストレージ・エリア・ネットワーク)などのどのようなネットワークからページをダウンロードするのでもよい。さらに、キャッシュ・サーバが直接にインターネットにアクセスしてページをダウンロードするのでもよい。
図3〜6に示した論理では、特定の順序で起きる特定のイベントが示されている。代替実装方法では、特定の動作を、変更または除去を行って、異なる順序で実行してもよい。その上、諸ステップを上述の論理に付加し、やはりここで説明した実装形態に整合するものとすることも可能である。さらに、本明細書で述べた動作が逐次的に起きるのでもよく、特定の動作が並列に処理されるのでもよい。さらにまた、動作は単一の処理装置によっても分散型の処理装置によっても実行することができる。
図7に、図1に示す中央サーバやキャッシュ・サーバなどの、ネットワーク・コンポーネントのコンピュータ・アーキテクチャ300の一実装形態を示す。アーキテクチャ300は、プロセッサ302(たとえば、マイクロプロセッサ)、メモリ304(たとえば、揮発性記憶装置)、およびストレージ306(たとえば、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどの不揮発性ストレージ)を含むことができる。ストレージ306は、内蔵(internal)ストレージ装置あるいは接続された(attached)またはネットワーク・アクセス可能なストレージを含むことができる。ストレージ306内のプログラムは、メモリ304へとロードされ、プロセッサ302によって当技術分野に知られる方法で実行される。このアーキテクチャは、さらに、ネットワークとの通信を可能にするネットワーク・カード308を含む。入力装置310は、プロセッサ302にユーザ入力を提供するために使用され、キーボード、マウス、ペン・スタイラス、マイクロフォン、タッチ・スクリーン(touchsensitive display screen)、または当技術分野に知られる他のどのようなアクティベーションまたは入力の機構を含んでいてもよい。出力装置312は、プロセッサ302、または、ディスプレイ・モニタ、プリンタ、ストレージなどの他のコンポーネントから送信される情報を変換する能力がある。
本発明の諸態様が実装される分散ネットワーク・コンピューティング環境を示す図である。 ネットワーク・コンピューティング環境内の異なるキャッシュで維持されるデータに関する情報を維持するためのデータ構造を示す図である。 本発明の実装形態に従ってオブジェクトまたはページに対する要求を処理する論理を示す図である。 本発明の実装形態に従ってオブジェクトまたはページをキャッシュに返す論理を示す図である。 本発明の実装形態に従ってキャッシュ内のオブジェクトを変更する要求を処理する論理を示す図である。 本発明の実装形態に従ってキャッシュ内のオブジェクトを変更する要求を処理する論理を示す図である。 キャッシュ・サーバおよび中央サーバ、ならびに他のコンピューティング装置など、ネットワーク環境内のコンピューティング・コンポーネントのアーキテクチャを示す図である。

Claims (10)

  1. 分散キャッシュ内でデータを維持するための方法であって、
    少なくとも1つのキャッシュ内でオブジェクトのコピーを維持するステップであって、複数のキャッシュが前記オブジェクトの異なるバージョンを有することができ、前記オブジェクトが、変更可能なデータ・ユニットを有することが可能であるステップと、
    各キャッシュ内で維持される各オブジェクトに対する更新情報を維持するステップであって、各キャッシュ内の各オブジェクトに対する前記更新情報が、前記オブジェクト、前記オブジェクトを含む前記キャッシュ、および前記オブジェクト内の各データ・ユニットが変更されたかどうかを示すステップと、
    あるターゲット・キャッシュ内のあるターゲット・オブジェクト内のターゲット・データ・ユニットに対する変更を受け取った後、前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、前記ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内の前記ターゲット・オブジェクトに対する前記更新情報も、前記ターゲット・データ・ユニットが変更されていないことを示すステップと
    を含む方法。
  2. 前記データ・ユニットを変更する要求を受け取った後で、
    前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する前記更新情報が、前記ターゲット・データ・ユニットが変更されていることを示す場合、前記ターゲット・キャッシュ内の前記ターゲット・オブジェクト内の前記データ・ユニットに前記受け取った変更を適用するステップ
    をさらに実行する、請求項1に記載の方法。
  3. 前記変更を受け取った後で、
    前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する前記更新情報が、前記ターゲット・データ・ユニットが変更されていないことを示す場合、別のキャッシュが前記ターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含んでいるかどうかを判断するステップと、
    別のキャッシュが前記最新のターゲット・データ・ユニットの値を含んでいない場合、前記変更を前記ターゲット・キャッシュ内の前記ターゲット・オブジェクト内の前記データ・ユニットに適用するステップと、
    前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、前記ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内の前記ターゲット・オブジェクトに対する前記更新情報も、前記データ・ユニットが変更されていないことを示すステップ
    をさらに実行する、請求項1または2に記載の方法。
  4. 前記変更を受け取った後で、
    前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する前記更新情報が、前記ターゲット・データ・ユニットが変更されていないことを示す場合、別のキャッシュが前記ターゲット・オブジェクトおよび最新のターゲット・データ・ユニットの値を含んでいるかどうかを判断するステップと、
    別のキャッシュが前記最新のターゲット・データ・ユニットの値を含む場合、前記最新のターゲット・データ・ユニットの値を前記判断したキャッシュから取り出し、前記ターゲット・キャッシュ内の前記ターゲット・オブジェクトを、前記取り出した最新のターゲット・データ・ユニットの値で更新するステップと
    をさらに実行する、請求項1、2、または3に記載の方法。
  5. 前記ターゲット・キャッシュ内の前記ターゲット・オブジェクトを前記最新のターゲット・データ・ユニットの値で更新した後、前記受け取った変更を前記ターゲット・キャッシュ内の前記ターゲット・オブジェクト内の前記データ・ユニットに適用するステップと、
    前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する更新情報を、前記ターゲット・データ・ユニットが変更されていることを示すように更新するステップであって、他のどのキャッシュ内の前記ターゲット・オブジェクトに対する前記更新情報も、前記データ・ユニットが変更されていないことを示すステップ
    をさらに含む、請求項4に記載の方法。
  6. 中央サーバが、別のキャッシュが前記ターゲット・オブジェクトおよび前記最新のターゲット・データ・ユニットの値を含むかどうかを判断するステップと、前記最新のターゲット・データ・ユニットの値を前記別のキャッシュから取り出すステップとを実行し、
    前記中央サーバによって、前記最新のターゲット・データ・ユニットの値を返すステップをさらに含み、前記最新のターゲット・データ・ユニットの値が前記ターゲット・キャッシュに適用された後で前記ターゲット・データ・ユニットに対する変更が前記ターゲット・キャッシュに適用され、各キャッシュにキャッシュ・サーバが1つ結合され、各キャッシュ・サーバが、前記キャッシュ・サーバの結合される前記少なくとも1つのキャッシュ内の各オブジェクトに対する更新情報を維持し、前記中央サーバが各キャッシュ内の各オブジェクトに対する更新情報を維持する、請求項4に記載の方法。
  7. 各キャッシュ内の各オブジェクトに対する無効化情報を維持するステップであって、あるキャッシュ内のあるオブジェクトに対する前記無効化情報が前記オブジェクト内の各データ・ユニットが有効か無効かを示すステップと、
    前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する前記無効化情報が、前記ターゲット・データ・ユニットが無効であることを示す場合、前記更新情報から、前記ターゲット・オブジェクトに対する最新のターゲット・データ・ユニットの値を含むキャッシュを判断するステップと、
    前記最新のターゲット・データ・ユニットの値を前記判断したキャッシュから取り出し、前記ターゲット・キャッシュ内の前記ターゲット・オブジェクトを前記最新のターゲット・データ・ユニットの値で更新するステップと、
    前記ターゲット・キャッシュ内の前記ターゲット・オブジェクトを前記最新のターゲット・データ・ユニットの値で更新した後、前記ターゲット・キャッシュ内の前記ターゲット・オブジェクト内の前記データ・ユニットに前記受け取った変更を適用するステップと、
    前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する前記更新情報を、前記ターゲット・データ・ユニットが変更されていることを示すように更新するステップと、
    前記ターゲット・オブジェクトを含む各キャッシュに対する前記無効化情報を、前記ターゲット・データ・ユニットが無効であることを示すように更新するステップと、
    前記判断したキャッシュ内の前記ターゲット・オブジェクトに対する前記更新情報を、前記データ・ユニットが変更されていないことを示すように更新するステップと
    をさらに含む、請求項1ないし6のいずれかに記載の方法。
  8. 中央サーバが、前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する前記無効化情報が、前記ターゲット・データ・ユニットが無効であることを示すかどうかを判断するステップと、前記ターゲット・オブジェクトおよび前記最新のターゲット・データ・ユニットの値を含むキャッシュを判断するステップと、前記最新のターゲット・データ・ユニットの値を前記判断したキャッシュから取り出すステップとを実行し、
    前記中央サーバによって、前記最新のターゲット・データ・ユニットの値を返すステップをさらに含み、前記最新のターゲット・データ・ユニットの値が前記ターゲット・キャッシュ内の前記ターゲット・オブジェクトに適用された後で前記ターゲット・データ・ユニットに対する変更が前記ターゲット・キャッシュに適用される、請求項7に記載の方法。
  9. 複数のキャッシュと、
    少なくとも1つのキャッシュ内でオブジェクトのコピーを維持する手段であって、前記キャッシュが前記オブジェクトの異なるバージョンを有することができ、前記オブジェクトが、変更可能なデータ・ユニットを有することが可能である手段と、
    各キャッシュ内で維持される各オブジェクトに対する更新情報を維持する手段であって、各キャッシュ内の各オブジェクトに対する前記更新情報が、前記オブジェクト、前記オブジェクトを含む前記キャッシュ、および前記オブジェクト内の各データ・ユニットが変更されたかどうかを示す手段と、
    あるターゲット・キャッシュ内のあるターゲット・オブジェクト内のターゲット・データ・ユニットに対する変更を受け取った後、前記ターゲット・オブジェクトおよびターゲット・キャッシュに対する前記更新情報を、前記ターゲット・データ・ユニットが変更されていることを示すように更新する手段であって、他のどのキャッシュ内の前記ターゲット・オブジェクトに対する前記更新情報も、前記ターゲット・データ・ユニットが変更されていないことを示す手段と
    を含む、データを維持するためのシステム。
  10. コンピュータ・システムにロードされ、そこで実行されると、請求項1ないし8のいずれか一項に記載の方法の諸ステップをすべて前記コンピュータ・システムに実行させるコンピュータ・プログラム・コードを含む、コンピュータ・プログラム。
JP2004539246A 2002-09-27 2003-09-26 分散キャッシュ内でデータを保持するための方法、システム、およびプログラム Expired - Fee Related JP4391943B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/259,945 US6973546B2 (en) 2002-09-27 2002-09-27 Method, system, and program for maintaining data in distributed caches
PCT/GB2003/004193 WO2004029834A1 (en) 2002-09-27 2003-09-26 Method, system, and program for maintaining data in distributed caches

Publications (3)

Publication Number Publication Date
JP2006500669A true JP2006500669A (ja) 2006-01-05
JP2006500669A5 JP2006500669A5 (ja) 2009-06-18
JP4391943B2 JP4391943B2 (ja) 2009-12-24

Family

ID=32029590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004539246A Expired - Fee Related JP4391943B2 (ja) 2002-09-27 2003-09-26 分散キャッシュ内でデータを保持するための方法、システム、およびプログラム

Country Status (9)

Country Link
US (1) US6973546B2 (ja)
EP (1) EP1546924B1 (ja)
JP (1) JP4391943B2 (ja)
CN (1) CN100511220C (ja)
AU (1) AU2003267650A1 (ja)
CA (1) CA2498550C (ja)
DE (1) DE60311116T2 (ja)
TW (1) TWI258657B (ja)
WO (1) WO2004029834A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010286993A (ja) * 2009-06-10 2010-12-24 Nec Access Technica Ltd アクセス分散システム、中継装置、方法及びプログラム

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030105811A1 (en) * 2001-05-02 2003-06-05 Laborde Guy Vachon Networked data stores for measurement data
US7254617B2 (en) * 2002-12-06 2007-08-07 Scott Ruple Distributed cache between servers of a network
US20040225730A1 (en) * 2003-01-17 2004-11-11 Brown Albert C. Content manager integration
US20040216084A1 (en) * 2003-01-17 2004-10-28 Brown Albert C. System and method of managing web content
US20040143626A1 (en) * 2003-01-21 2004-07-22 Dell Products L.P. Method and system for operating a cache for multiple files
US7480699B2 (en) * 2004-01-20 2009-01-20 International Business Machines Corporation System and method for replacing an application on a server
US7975018B2 (en) * 2004-07-07 2011-07-05 Emc Corporation Systems and methods for providing distributed cache coherence
US20070112812A1 (en) * 2005-11-09 2007-05-17 Harvey Richard H System and method for writing data to a directory
US8321486B2 (en) * 2005-11-09 2012-11-27 Ca, Inc. Method and system for configuring a supplemental directory
US8458176B2 (en) * 2005-11-09 2013-06-04 Ca, Inc. Method and system for providing a directory overlay
US8326899B2 (en) * 2005-11-09 2012-12-04 Ca, Inc. Method and system for improving write performance in a supplemental directory
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8176256B2 (en) * 2008-06-12 2012-05-08 Microsoft Corporation Cache regions
US8943271B2 (en) 2008-06-12 2015-01-27 Microsoft Corporation Distributed cache arrangement
US9286293B2 (en) * 2008-07-30 2016-03-15 Microsoft Technology Licensing, Llc Populating and using caches in client-side caching
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
US8108612B2 (en) * 2009-05-15 2012-01-31 Microsoft Corporation Location updates for a distributed data store
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
WO2011056108A1 (en) * 2009-11-06 2011-05-12 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for pre-caching in a telecommunication system
US9952968B2 (en) * 2010-01-29 2018-04-24 Micro Focus Software, Inc. Methods and system for maintaining data coherency in distributed data cache network
US20110213825A1 (en) * 2010-02-26 2011-09-01 Rovi Technologies Corporation Dynamically configurable clusters of apparatuses
US8667057B1 (en) 2010-10-01 2014-03-04 Google Inc. Method and system for delivering object update messages including payloads
CN102073494B (zh) * 2010-12-30 2014-05-07 用友软件股份有限公司 缓存数据管理方法和装置
US9380127B2 (en) 2011-05-18 2016-06-28 Alibaba Group Holding Limited Distributed caching and cache analysis
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
KR20130087810A (ko) * 2012-01-30 2013-08-07 삼성전자주식회사 이동통신 시스템에서 협력적 캐슁 방법 및 장치
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9298719B2 (en) * 2012-09-04 2016-03-29 International Business Machines Corporation On-demand caching in a WAN separated distributed file system or clustered file system cache
US9519902B2 (en) * 2013-06-25 2016-12-13 Quisk, Inc. Fraud monitoring system with distributed cache
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9858084B2 (en) 2013-03-15 2018-01-02 Bitmicro Networks, Inc. Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
CN104219327B (zh) * 2014-09-27 2017-05-10 上海瀚之友信息技术服务有限公司 一种分布式缓存系统
CN105630823B (zh) * 2014-11-04 2019-03-12 阿里巴巴集团控股有限公司 基于分布式系统的缓存数据的监控方法、装置和系统
CN104572968B (zh) * 2014-12-30 2018-06-26 北京奇虎科技有限公司 一种页面更新方法和装置
CN105608197B (zh) * 2015-12-25 2019-09-10 Tcl集团股份有限公司 一种高并发下Memcache数据的获取方法及系统
CN105701233B (zh) * 2016-02-18 2018-12-14 南京焦点领动云计算技术有限公司 一种优化服务器缓存管理的方法
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
CN109947780A (zh) * 2017-08-17 2019-06-28 天津数观科技有限公司 一种利用代理程序更新缓存的方法、装置及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105481A (ja) * 1996-09-30 1998-04-24 Hitachi Ltd サービス仲介方法および装置
JP2001512604A (ja) * 1997-02-21 2001-08-21 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) インターネット上におけるデータキャッシング
JP2001526814A (ja) * 1997-05-22 2001-12-18 トラスティーズ・オブ・ボストン・ユニバーシティ 分散型キャッシュ、プリフェッチ、複写の方法およびそのシステム
JP2002251313A (ja) * 2001-02-23 2002-09-06 Fujitsu Ltd キャッシュサーバ及び分散キャッシュサーバシステム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307477A (en) 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5784590A (en) 1994-06-29 1998-07-21 Exponential Technology, Inc. Slave cache having sub-line valid bits updated by a master cache
US6047357A (en) 1995-01-27 2000-04-04 Digital Equipment Corporation High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy
US5822763A (en) 1996-04-19 1998-10-13 Ibm Corporation Cache coherence protocol for reducing the effects of false sharing in non-bus-based shared-memory multiprocessors
US5933849A (en) 1997-04-10 1999-08-03 At&T Corp Scalable distributed caching system and method
US6256712B1 (en) 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6269432B1 (en) * 1998-10-23 2001-07-31 Ericsson, Inc. Distributed transactional processing system having redundant data
US6405289B1 (en) * 1999-11-09 2002-06-11 International Business Machines Corporation Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response
US6721856B1 (en) * 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10105481A (ja) * 1996-09-30 1998-04-24 Hitachi Ltd サービス仲介方法および装置
JP2001512604A (ja) * 1997-02-21 2001-08-21 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) インターネット上におけるデータキャッシング
JP2001526814A (ja) * 1997-05-22 2001-12-18 トラスティーズ・オブ・ボストン・ユニバーシティ 分散型キャッシュ、プリフェッチ、複写の方法およびそのシステム
JP2002251313A (ja) * 2001-02-23 2002-09-06 Fujitsu Ltd キャッシュサーバ及び分散キャッシュサーバシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010286993A (ja) * 2009-06-10 2010-12-24 Nec Access Technica Ltd アクセス分散システム、中継装置、方法及びプログラム

Also Published As

Publication number Publication date
EP1546924B1 (en) 2007-01-10
TWI258657B (en) 2006-07-21
TW200412497A (en) 2004-07-16
CA2498550A1 (en) 2004-04-08
JP4391943B2 (ja) 2009-12-24
EP1546924A1 (en) 2005-06-29
US6973546B2 (en) 2005-12-06
CN1672151A (zh) 2005-09-21
CN100511220C (zh) 2009-07-08
DE60311116D1 (de) 2007-02-22
DE60311116T2 (de) 2007-07-12
WO2004029834A1 (en) 2004-04-08
AU2003267650A1 (en) 2004-04-19
US20040064650A1 (en) 2004-04-01
CA2498550C (en) 2011-02-01

Similar Documents

Publication Publication Date Title
JP4391943B2 (ja) 分散キャッシュ内でデータを保持するための方法、システム、およびプログラム
US10462251B2 (en) System, method and storage medium for managing items within file directory structure
US9380022B2 (en) System and method for managing content variations in a content deliver cache
US6658462B1 (en) System, method, and program for balancing cache space requirements with retrieval access time for large documents on the internet
US11403262B2 (en) Local networked storage linked to remote networked storage system
US7024452B1 (en) Method and system for file-system based caching
CA2200138C (en) A url rewriting pseudo proxy server
US9086978B2 (en) Caching electronic document resources in a client device having an electronic resource database
CN1234086C (zh) 用于高速缓存文件信息的系统和方法
US20050240574A1 (en) Pre-fetching resources based on a resource lookup query
JP4953811B2 (ja) ローカルipアドレス変換のための方法と装置
CN103152367A (zh) 一种缓存的动态维护更新方法及系统
JP2004078783A (ja) Wwwブラウザのキャッシュ管理装置、そのキャッシュ管理方法及びプログラム
CN109634753B (zh) 切换浏览器内核的数据处理方法、装置、终端和存储介质
JPH1124982A (ja) 履歴に基づくWebページ先読み方式
US7349942B1 (en) Storage medium having a manageable file directory structure
US7930479B2 (en) System and method for caching and retrieving from cache transaction content elements
JP2000137689A (ja) 共用データキャッシュ処理方法及びその実施装置並びにその処理プログラムを記録した媒体
JP6782219B2 (ja) データ活用支援装置、データ活用支援システム、及びデータ活用支援方法
JP2004070957A (ja) 検索システム
CN117478635A (zh) 一种dns预缓存防止错误缓存的系统及方法
Song et al. Reorganization of Web Site Structure Using Web Logs
De Silva Performance evaluation of selective summary cache via simulations
JP2002024078A (ja) イメージファイル管理サーバ
KR20010003611A (ko) 새문서 미리가져오기를 이용한 캐슁 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060711

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090421

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090421

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090519

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090819

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

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

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

Free format text: PAYMENT UNTIL: 20121016

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4391943

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121016

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131016

Year of fee payment: 4

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

LAPS Cancellation because of no payment of annual fees