(57)【要約】  コンテンツ管理システムは、少なくとも２つのコンテンツサーバコンピュータと、各々のコンテンツサーバに対応し、コンテンツサーバによって表示されるページについてのキャッシュオブジェクトを記憶するためのページキャッシュを有するキャッシュメモリと、キャッシュオブジェクトについての従属性情報を記憶するための従属性キャッシュと、他のキャッシュに対する従属性情報の変更を複製するための通知キャッシュとを含む。
2014528607.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツ管理システムであって、
少なくとも２つのコンテンツサーバコンピュータと、
各々のコンテンツサーバに対応するキャッシュメモリとを備え、キャッシュメモリは、
コンテンツサーバによって表示されるページについてのキャッシュオブジェクトを記憶するためのページキャッシュと、
キャッシュオブジェクトについての従属性情報を記憶するための従属性キャッシュと、
他のキャッシュに対する従属性情報の変更を複製するための通知キャッシュとを含む、コンテンツ管理システム。
【請求項２】
ローカルキャッシュを有する少なくとも１つのサテライトサーバをさらに含む、請求項１に記載のコンテンツ管理システム。
【請求項３】
コンテンツサーバコンピュータに対応するキャッシュメモリがクラスタ化される、請求項１に記載のコンテンツ管理システム。
【請求項４】
ページキャッシュ、従属性キャッシュおよび通知キャッシュはキャッシュメモリの区画を含む、請求項１に記載のコンテンツ管理システム。
【請求項５】
分散型メモリシステムを管理する、コンピュータにより実現される方法であって、
少なくとも２つのキャッシュメモリを維持するステップを含み、各々のキャッシュメモリは、少なくとも１つのキャッシュオブジェクトと、キャッシュオブジェクトに関連付けられた従属性とを含み、前記方法はさらに、
キャッシュメモリのうち１つのキャッシュメモリにおいて、キャッシュメモリのうち別のキャッシュメモリ内のキャッシュオブジェクトに関する更新された情報を受信するステップと、
１つのキャッシュメモリ内のキャッシュオブジェクトを無効化するステップと、
従属性を用いて、１つのメモリ内の他のキャッシュオブジェクトがそれらの後続のアクセス時に無効化されるべきかどうかを判断するステップとを含む、方法。
【請求項６】
キャッシュメモリは、コンテンツサーバのローカルキャッシュおよびサテライトサーバのローカルキャッシュを含む、請求項５に記載の方法。
【請求項７】
キャッシュメモリは、ウェブページが両方のメモリに同時に存在するダブルバッファリングを使用する、請求項６に記載の方法。
【請求項８】
ウェブページについての要求を受信するステップと、
ウェブページがいずれかの無効なキャッシュオブジェクトを有するかどうかを判断するステップとをさらに含む、請求項５に記載の方法。
【請求項９】
ウェブページがいずれかの無効なキャッシュオブジェクトを有するかどうかを判断するステップは、キャッシュオブジェクトに関連付けられたフラグをチェックするステップを含む、請求項８に記載の方法。
【請求項１０】
ページが無効なキャッシュオブジェクトを有する場合、キャッシュからウェブページを削除するステップをさらに含む、請求項９に記載の方法。
【請求項１１】
新しいページを生成するステップと、
新しいページを供給するステップと、
新しいページをページキャッシュに記録するステップと、
新しいページに関連付けられた従属性を従属性キャッシュに記録するステップとを含む、請求項１０に記載の方法。
【請求項１２】
命令を記憶する１つ以上の非一時的なコンピュータ読取可能媒体であって、
プロセッサによって実行されたときに、
各々が少なくとも１つのキャッシュオブジェクトと、キャッシュオブジェクトに関連付けられた従属性とを含む少なくとも２つのキャッシュメモリを維持するステップと、
キャッシュメモリのうち１つのキャッシュメモリにおいて、キャッシュメモリのうち別のキャッシュメモリ内のキャッシュオブジェクトに関する更新された情報を受信するステップと、
１つのキャッシュメモリ内のキャッシュオブジェクトを無効化するステップと、
従属性を用いて、１つのメモリ内の他のキャッシュオブジェクトがそれらの後続のアクセス時に無効化されるべきかどうかを判断するステップと、を含む方法を前記プロセッサに実行させる、コンピュータ読取可能媒体。
【請求項１３】
キャッシュメモリが、コンテンツサーバのローカルキャッシュおよびサテライトサーバのローカルキャッシュを含む、請求項１２に記載の１つ以上の非一時的なコンピュータ読取可能媒体。
【請求項１４】
キャッシュメモリは、ウェブページが両方のメモリに同時に存在するダブルバッファリングを使用する、請求項１２に記載の１つ以上の非一時的なコンピュータ読取可能媒体。
【請求項１５】
ウェブページについての要求を受信するステップと、
ウェブページがいずれかの無効なキャッシュオブジェクトを有するかどうかを判断するステップとを含む、請求項１２に記載の１つ以上の非一時的なコンピュータ読取可能媒体。
【請求項１６】
ウェブページがいずれかの無効なキャッシュオブジェクトを有するかどうかを判断するステップは、キャッシュオブジェクトに関連付けられたフラグをチェックするステップを含む、請求項１２に記載の１つ以上の非一時的なコンピュータ読取可能媒体。
【請求項１７】
ページが無効なキャッシュオブジェクトを有する場合、キャッシュからウェブページを削除するステップをさらに含む、請求項１６に記載の１つ以上の非一時的なコンピュータ読取可能媒体。
【請求項１８】
請求項５から１１のいずれかに記載の方法を１つ以上のプロセッサに実行させるプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
コンテンツ管理システムは、開発者がインターネット全体にわたり、オンラインサイトを通じてユーザにまで供給されたコンテンツを公開しリフレッシュすることを可能にする。これらのサイトのコンテンツはすぐに変更され、開発者はサイトを絶えず公開し更新する。なお、この明細書中で用いられる用語「サイト」は、インターネットサイト、ポータル、一般にアクセス可能なサイト、パスワードで保護されたサイト、および、専用のドメイン内で展開される排他的なサイトなどを含む。この明細書中の説明はコンテンツ管理システムのコンテキストの改善に焦点を合わせているが、以下に説明する改善例は、いくつかのノードにわたって迅速かつ頻繁に更新される情報を管理する如何なるシステムにも適用される。
【０００２】
典型的には、コンテンツ管理システムは共用の集中型リポジトリを有する。コンテンツサーバおよびローカルサーバを含むシステムの各層はローカルキャッシュを有し得る。ローカルキャッシュは、サイトが、セントラルレポジトリに問合せする必要なしに、頻繁にアクセスされた項目を迅速に表示することを可能にする。これらのキャッシュを管理し、キャッシュのコンテンツを確実に最新かつ有効な状態にしておくことにより、システムリソースがかなり消費されてしまう可能性がある。
【０００３】
キャッシュ管理を行わない場合、サイトは、情報を更新するかまたは情報を無効なものとしてマークする手段がなければ、期限切れの情報または変更された情報を表示してしまう可能性がある。キャッシュ管理では、一般に、キャッシュとセントラルレポジトリとの間で送信されたアップデートが必要となるが、これにより、各々に記憶された情報が別のものに記憶された情報を確実に反映したものとなる。これにより、サイトがキャッシュ内のデータに依拠して、それらデータを正確に表示することが可能となる。この更新プロセスに起因して、期限切れのデータまたは無効になったデータなどの「不良な」データが識別される。
【図面の簡単な説明】
【０００４】
【図１】コンテンツ管理システムの例を示す図である。
【図２】分散型キャッシュアーキテクチャの実施例を示す図である。
【図３】キャッシュ内のアセットを無効化する方法の実施例を示すフローチャートである。
【図４】キャッシュにおける無効なアセットを含むページを無効化する方法の実施例を示すフローチャートである。
【図５】ローカルキャッシュ構造の実施例を示す図である。
【発明を実施するための形態】
【０００５】
実施例の詳細な説明
以下の説明では、実施例の構造および動作を理解し易くするために例を用いる可能性がある。これらの例は特許請求の範囲を限定するよう意図されたものではなく、そのように解釈されるべきではない。
【０００６】
図１は、分散型キャッシュシステムを採用したコンテンツ管理システムの例を示す。この明細書中で用いられる用語として、「分散型キャッシュ」は、システム内のノードに取付けられた複数のローカルキャッシュで構成されるキャッシュシステムを意味する。ノードは、開発に用いられるコンテンツサーバ、公開に用いられるコンテンツサーバ、および来訪者によるリモートアクセスに用いられるサテライトサーバで構成され得る。サテライトサーバはエッジキャッシングシステムであって、キャッシュする目的で、それらサテライトサーバは単にそれら自体のローカルキャッシュを含む他のノードとなる。
【０００７】
変更されたコンテンツを含むコンテンツ管理システムは、これらの変更を頻繁に公開することとなる。この明細書中の説明ではこれを動的な公開と称する場合がある。たとえば、コンテンツ管理システムは、製品を販売するウェブサイトで構成されてもよい。ウェブサイトはいくつかの異なるウェブページを含む可能性があり、その何ページかは場合によってはリアルタイムでデータ入力されて（populated）表示され得る。販売中の製品は、サイト上のいくつかの異なるウェブページ内に存在し得る。たとえば、衣類小売り業者は、アセットまたはキャッシュオブジェクトとも称され得る項目を表示させてもよく、この項目は、女性用の衣類および靴についてのページ、運動競技用の衣類および用具についてのページ、ならびに、すべての靴についてのページ上で、１足の女性用ランニングシューズで構成される。
【０００８】
この１足の靴はアセットを表わす。アセットは、ウェブページをデータ入力するのに用いられる如何なる項目をも含み得る。例として、写真、テキスト、図などを含み得る。アセットには、いくつかの異なる属性が関連付けられてもよい。靴などを例とした製品の場合、これらの属性は、靴の画像、それらの価格、ブランド名などを含み得る。典型的なシステムにおいては、それらの属性のうちの１つが変わると、その製品に関するページが無効化される可能性がある。無効化はページレベルで起こる可能性があるが、キャッシュされた如何なるオブジェクトのレベルでも起こり得る。キャッシングを必要とするデータの量および更新の頻度により、データベースアクセス時間、アーキテクチャの他の部分に対する負荷、および、期限切れの情報を削除するのにかかる時間が増大してしまう。期限切れの情報が存在していると、システムの効率が低下し、顧客満足度が低下してしまう。
【０００９】
特定のウェブサイトのユーザまたは来訪者は、システムの生成側を確認することとなる。図１に図示のとおり、コンテンツ管理システム１０が他のいくつかの構成要素を有することは明らかである。開発システム１２は、システム内のアセットに対する変更を公開するのに用いられるコンテンツサーバ１４を有する。コンテンツサーバは、データベース１５から頻繁にアクセスされたアセットを記憶するローカルキャッシュを有する。管理およびステージングシステム１８はまた、生成システム２０およびデータベース１７に対する変更を公開するのに用いられるコンテンツサーバ１６を有する。生成システム２０は、２２などのコンテンツサーバ、ならびに２４および２６などのサテライトサーバを有する。ユーザまたは来訪者２９は、典型的には、サテライトサーバを介してウェブサイトのページにアクセスするだろう。これらのサーバの各々は複数のローカルキャッシュを有し、これらローカルキャッシュ同士が固有の態様でリンクされて分散型キャッシュとして作用する。各々のサーバはまた、１つ以上のプロセッサを有し、これら１つ以上のプロセッサは、１セットの命令を含みかつコンピュータ読取可能な不揮発性媒体に記憶されたプログラムを実行する。
【００１０】
分散型キャッシュシステムの実施例を図２に示す。ローカルキャッシュは、使用パターンおよび構成に基づいてデータ入力され、キャッシュの量は典型的には利用可能なメモリまたは他のリソースによって制限される。しかしながら、システム全体をさらに効率的に機能させるために、これらのキャッシュの各々がキャッシュ全体を視認する必要はない。変更は１つのローカルキャッシュから他のノードにまで配信される。この場合、ノードは、サーバおよびそのローカルキャッシュで構成される。サーバはコンテンツサーバまたはサテライトサーバで構成されてもよい。コンテンツサーバを構成するサーバでは、開発者がコンテンツをアセットの形で生成および開発する。サテライトサーバは、コンテンツサーバからキャッシュ更新を受信する。
【００１１】
システムアーキテクチャは多くの形を取り得る。図２のシステム実施例３０においては、３４などのコンテンツサーバはコンテンツサーバクラスタ３２に存在し得る。３４などの各コンテンツサーバは３６などのローカルキャッシュを有する。ローカルキャッシュは、繰返しアクセスされたデータがメモリ内で速やかにアクセスされることを可能にして、データベースまたはネットワークがアクセスするソースで構成され得るデータソース３８に対する度重なる呼出しを回避する。
【００１２】
システムはまた、典型的には、４０などの少なくとも１つのサテライトサーバを含む。コンテンツサーバと同様に、４０などのサテライトサーバの各々はローカルキャッシュ４２およびデータソース４４を有する。上述のとおり、「Ａ」などのアセットの属性がコンテンツサーバで更新されると、コンテンツサーバは、サテライトサーバだけでなくそれ自体のローカルキャッシュにも変更を伝達することとなる。現行のシステムの性能利点は、以下により詳細に説明される伝達の性質に起因している。アセットの属性が変更されると、この変更によりいくつかの事象が引起こされる。図３は、分散型キャッシュを更新する方法の実施例のフローチャートを示す。
【００１３】
変更があった場合、更新された情報をシステム内の他のキャッシュが有するように、これら他のキャッシュにこの変更を伝える必要がある。さらに、変更された属性は、同様に変更されるであろう関連する従属性を有し得る。たとえば、１例として上で用いられた靴には価格の変更があるかもしれない。これは、製造業者がそれらの製品すべてについての価格を上げるかまたは下げることに起因している。以下により詳細に説明されるキャッシュの一部においては、アセットの異なる属性間の従属性が追跡される。従属性は、この場合製造業者である、このアセットに関連付けられる重要項目のリストである。
【００１４】
アセットについての価格変更が発生すると、システムは、キャッシュの従属性部分をチェックし、アセットに関連付けられる従属性を含めて、これらを同様に無効化する。これらの従属性は、そのページ上のそのアセットを含む他のウェブページから成るキャッシュオブジェクトの形を取ってもよい。従属性は従属性キャッシュに記憶されるオブジェクトである。図５に図示のとおり、「オブジェクトキャッシュ」はこのような１セットの従属性へのリンクを維持する。このようなリンクは、従属性キャッシュの識別子、すなわち「オブジェクトキャッシュ」の一部として維持される文字列値、に基づいている。
【００１５】
図３および図４は、プログラムを実行することによってサーバの１つ以上のプロセッサが動作するプロセスを示す。図３においては、５０において、アセットにおける変更が発生する。この変更は、システムにおいて開発者または他の管理者によって公開される変更により、コンテンツサーバで起こるだろう。５２において、コンテンツサーバは、分散型キャッシュにおける他のローカルキャッシュに変更を配信する。加えて、５４において、コンテンツサーバがまた、それ自体のキャッシュにおけるアセットを無効化するだろう。なお、これらのプロセスが同時にまたは如何なる順序でも行われる可能性があり、特定の順序がこの明細書の説明から示唆されるべきでないことに留意されたい。
【００１６】
受信ノードは、配信された変更を受信し、５６においてそれら自体の従属性キャッシュをチェックする。アセット識別子が従属性キャッシュに存在する場合、５８において、ノードが、識別子を無効なものとしてマークする。識別子は、当該識別子に関連付けられるフラグビットを含み得る。この場合、フラグビットは、０または１に設定されて、識別子を有効または無効なものとしてマークし得る。一実施例においては、フラグは、真／偽を示すブールフラグ（Boolean flag）から成る。従属性キャッシュに存在するアセット識別子はまた、そのキャッシュにおけるそれらの生成時に割当てられたバージョン番号でバージョン化される。オブジェクトキャッシュにおけるこれらの識別子に対して維持されるリンクはまたバージョン識別子を含む。この技術により、連続した無効化動作と従属性キャッシュへの追加との間に存在する可能性のある如何なる競合状態も排除される。
【００１７】
性能利点は、無効化されたアセットを有するページが要求されるまで、無効なアセットを備えたページをノードが評価しないことに起因している。無効化されたアセットは、当該アセットを参照するページにとってもはや利用可能ではないので、ページ自体が無効化される。図４は、ページについての要求を処理するためのプロセスの実施例を示す。６０において、ノードがページについての要求を受信する。６２において、ノードは、ページがいずれかの無効なアセットを有しているかどうかを判断するために従属性キャッシュをチェックして、ページを無効にする。ページが有効なアセットを有している場合、６４において、システムがページをウェブサイト来訪者に供給する。ページが無効であることを意味する無効なアセットを当該ページが有している場合、６８において、当該ページがキャッシュから削除される。
【００１８】
なお、ページが無効なものとしてマークされることにより、結果として、単に、ページについての要求が受信されたときに、７０において、そのページがデータストアからの新しい情報で再生成されるに過ぎないことに留意されたい。そうでない場合、ページは、単に、無効なものとしてマークされたアセットを有したままとなる。ページが再生成されると、７２において、システムが新しいページを供給する。従属性キャッシュを更新するために、７４において、ページがオブジェクトキャッシュに記憶され、そして、従属性キャッシュに従属性を記憶させることによって、その従属性が更新される。ページは、次いで、ページがリンクされているアセットが無効化されるまで、またはページが期限切れになるまで有効なままとなる。
【００１９】
このプロセスにおいて２つの異なる動作が行われる。第１に、オブジェクトの無効化は、ユーザの編集、公開された新しい情報または他の何らかの動作によってもたらされる。第２に、キャッシュされたオブジェクトについてキャッシュから読出しが行われる。無効化が行われているとき、キャッシュされたデータはいずれも実際には削除されない。従属性の入力だけが無効なものとしてマークされる。キャッシュオブジェクトはこの従属性を保持して、キャッシュに引続き存在させるようにする。キャッシュの読出しが行われると、システムは、それがもはや有効ではないと判断し、このため、それがキャッシュに存在する理由がなくなる。次いで、システムは、読出時に無効なオブジェクトを削除する。また、スカベンジャ（scavenger）として作用するクリーンアッププロセス時にオブジェクトを削除してもよい。削除には、ハッシュ表のような構造内のセルを空にすることが必要となる可能性がある。別の実施例では、システムに無効性を無視させるかまたは上書きさせて、この無効性をシステムに検討させないようにしてもよい。
【００２０】
これらのページは、後のアクセス時に無効化され、無効化されたものとしてマークされる。言換えれば、従属性が無効化されると、いくつかのページが無効化の候補になる可能性があるが、システムは、それらページのいずれが候補に該当するかを認識または配慮しない。システムは単純に認識していないだけであって、それは後のアクセス時に計算される。これにより性能が著しく向上する。このため、システムは、何百万にものぼり得るページが無効なリンクを含むかどうかをチェックして、それらページを無効なリンクを含むものとしてマークするために、これら何百万ものページにかけてスパイダを機能させる必要はない。
【００２１】
図５は、上述のプロセスを可能にするキャッシュ構造の実施例を示す。ローカルキャッシュ８０は３つのサブキャッシュまたはキャッシュの区画を有する。これらは、そこからページが供給されるオブジェクトキャッシュ８２、従属性キャッシュ８４および通知キャッシュ８６を含む。ページが要求されると、オブジェクトキャッシュ８２は、無効なアセットについてチェックするために従属性キャッシュ８４をチェックする。変更によってアセットが無効化されると、通知キャッシュ８６は、必要に応じて、他のクラスタメンバまたはサテライトサーバキャッシュに変更を伝達する。これにより従属性キャッシュも更新される。
【００２２】
キャッシュの更新は、コンテンツサーバと他のコンテンツサーバとの間、およびコンテンツサーバとサテライトサーバとの間で起こる可能性がある。コンテンツサーバは、通知キャッシュを用いて他のコンテンツサーバを更新する。ページおよび従属性は更新されず、単に無効化の通知がなされる。上述のとおり、無効化によって単に従属性が削除されて、ページが無効にされる。典型的には、読出動作が行われると、無効なページがキャッシュから削除される。代替的には、それら無効なページを削除するためにバッググラウンド動作が定期的に実行されてもよい。
【００２３】
コンテンツサーバとサテライトサーバとの間の更新はさまざまに作用する。サテライトサーバは、典型的な読出し動作時にページデータを読出すが、特別なヘッダから従属性を受取る。無効化プロセスはずらして行われてもよく、ページの再生成や、ダブルバッファリングされたキャッシングが可能となり得る。ページの再生成は、セッションの公開中にページを再生成するための巡回を含み得る。
【００２４】
ダブルバッファリングされたキャッシングは、実際に公開中のウェブサイト上でコンテンツサーバおよびサテライトサーバキャッシュをタンデムに用いることを必要とし得る。これにより、ページがコンテンツサーバまたはサテライトサーバ上ではキャッシュ内に常に維持されることが確実になり、ページ要求による過負荷からコンテンツサーバが保護される。これにより、ウェブサイトが空白ページまたは破損したリンクを表示することも防止される。ダブルバッファリングされたキャッシングは、ＨＴＴＰ要求によりリモートサテライトサーバがコンテンツサーバと通信することを維持することによって行われる。サテライトサーバは、引続き、通常の方法でＨＴＴＰ要求およびキャッシュによってページデータを読出すこととなる。ページデータは、この場合、従属性情報を含んでおり、この従属性情報は、リモートサテライトサーバにもストリーミングされるアセット識別子の、カンマで区切られたリストの形を取り得る。
【００２５】
リモートサテライトサーバの場合、ページを伝達することにより、コンテンツサーバノードおよびサテライトサーバノードが同じページをホストにすることが可能となり、各ノードはページを再生成する必要がなくなる。ページを再生成するためにデータベースを参照する代わりに、ノードは、新たに生成されたページおよび再生成されたページを、これらのページが再生成およびキャッシュされたノードから、それらのローカルキャッシュに受信する。ページをキャッシュすることにより、それらページの伝達が引起こされてもよい。
【００２６】
この態様で、ノードは、ディスク上にキャッシュを保持し、故障から回復させることができる。分散型アーキテクチャがボトルネックを防止し、ページを伝達することによりページを再生成する必要がなくなる一方で、ページの再生成がバックグラウンドモードであることにより、システムがページを再生成している間にリモートサテライトサーバがページを供給し続けることが可能となる。
【００２７】
このように、データベース性能を監視するための方法およびシステムの特別な実施例を上記の点で説明してきたが、このような特定の言及は、添付の特許請求の範囲の記載を除いて、この発明の範囲に対する限定とみなされるよう意図されたものではない。
【図１】
2014528607.tif 000003
【図２】
2014528607.tif 000004
【図３】
2014528607.tif 000005
【図４】
2014528607.tif 000006
【図５】
2014528607.tif 000007
【国際調査報告】
2014528607.tif 000008
2014528607.tif 000009
2014528607.tif 000010