(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6185917
(24)【登録日】2017年8月4日
(45)【発行日】2017年8月23日
(54)【発明の名称】クラスタにおける効率的なキャッシュ管理
(51)【国際特許分類】
G06F 12/00 20060101AFI20170814BHJP
【FI】
G06F12/00 546K
【請求項の数】12
【全頁数】10
(21)【出願番号】特願2014-533379(P2014-533379)
(86)(22)【出願日】2012年9月28日
(65)【公表番号】特表2014-528607(P2014-528607A)
(43)【公表日】2014年10月27日
(86)【国際出願番号】US2012057858
(87)【国際公開番号】WO2013049530
(87)【国際公開日】20130404
【審査請求日】2015年9月17日
(31)【優先権主張番号】13/488,184
(32)【優先日】2012年6月4日
(33)【優先権主張国】US
(31)【優先権主張番号】61/541,613
(32)【優先日】2011年9月30日
(33)【優先権主張国】US
(31)【優先権主張番号】61/578,679
(32)【優先日】2011年12月21日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】カドラバル,ハレーシュ・エス
【審査官】
田中 幸雄
(56)【参考文献】
【文献】
特表2009−510578(JP,A)
【文献】
特表2008−529127(JP,A)
【文献】
米国特許出願公開第2007/0156965(US,A1)
【文献】
特開2005−18787(JP,A)
【文献】
欧州特許出願公開第1492027(EP,A1)
【文献】
米国特許第7096418(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
コンテンツ管理システムであって、
少なくとも2つのコンテンツサーバコンピュータと、
各々のコンテンツサーバに対応するキャッシュメモリとを備え、キャッシュメモリは、
コンテンツサーバによって表示されるページについてのキャッシュオブジェクトを記憶するためのページキャッシュと、
キャッシュオブジェクトについての従属性情報を記憶するための従属性キャッシュと、
他のキャッシュに対し変更された従属性情報を複製するための通知キャッシュとを含む、コンテンツ管理システム。
【請求項2】
ローカルキャッシュを有する少なくとも1つのサテライトサーバをさらに含む、請求項1に記載のコンテンツ管理システム。
【請求項3】
コンテンツサーバコンピュータに対応する複数のキャッシュメモリを有する、請求項1または2に記載のコンテンツ管理システム。
【請求項4】
ページキャッシュ、従属性キャッシュおよび通知キャッシュはキャッシュメモリの区画を含む、請求項1から3のいずれかに記載のコンテンツ管理システム。
【請求項5】
分散型メモリシステムを管理する、コンピュータにより実現される方法であって、
前記分散型メモリシステムは、少なくとも2つのキャッシュメモリを備え、各々のキャッシュメモリは、少なくとも1つのキャッシュオブジェクトと、キャッシュオブジェクトに関連付けられた従属性とを含み、前記方法は、
キャッシュメモリのうち1つのキャッシュメモリにおいて、キャッシュメモリのうち別のキャッシュメモリ内のキャッシュオブジェクトに関する更新された情報を受信するステップと、
1つのキャッシュメモリ内のキャッシュオブジェクトを無効化するステップと、
従属性を用いて、1つのメモリ内の他のキャッシュオブジェクトがそれらの後続のアクセス時に無効化されるべきかどうかを判断するステップとを含む、方法。
【請求項6】
前記少なくとも2つのキャッシュメモリは、コンテンツサーバのローカルキャッシュメモリおよびサテライトサーバのローカルキャッシュメモリを含む、請求項5に記載の方法。
【請求項7】
前記コンテンツサーバのローカルキャッシュメモリおよびサテライトサーバのローカルキャッシュメモリを、ウェブページが両方のキャッシュメモリに同時に存在するダブルバッファリングに使用するステップをさらに含む、請求項6に記載の方法。
【請求項8】
ウェブページについての要求を受信するステップと、
ウェブページがいずれかの無効なキャッシュオブジェクトを有するかどうかを判断するステップとをさらに含む、請求項5に記載の方法。
【請求項9】
ウェブページがいずれかの無効なキャッシュオブジェクトを有するかどうかを判断するステップは、キャッシュオブジェクトに関連付けられたフラグをチェックするステップを含む、請求項8に記載の方法。
【請求項10】
ページが無効なキャッシュオブジェクトを有する場合、キャッシュからウェブページを削除するステップをさらに含む、請求項9に記載の方法。
【請求項11】
新しいページを生成するステップと、
新しいページを供給するステップと、
新しいページをページキャッシュに記録するステップと、
新しいページに関連付けられた従属性を従属性キャッシュに記録するステップとを含む、請求項10に記載の方法。
【請求項12】
請求項5および請求項8から11のいずれかに記載の方法を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
コンテンツ管理システムは、開発者がインターネット全体にわたり、オンラインサイトを通じてユーザにまで供給されたコンテンツを公開しリフレッシュすることを可能にする。これらのサイトのコンテンツはすぐに変更され、開発者はサイトを絶えず公開し更新する。なお、この明細書中で用いられる用語「サイト」は、インターネットサイト、ポータル、一般にアクセス可能なサイト、パスワードで保護されたサイト、および、専用のドメイン内で展開される排他的なサイトなどを含む。この明細書中の説明はコンテンツ管理システムのコンテキストの改善に焦点を合わせているが、以下に説明する改善例は、いくつかのノードにわたって迅速かつ頻繁に更新される情報を管理する如何なるシステムにも適用される。
【0002】
典型的には、コンテンツ管理システムは共用の集中型リポジトリを有する。コンテンツサーバおよびローカルサーバを含むシステムの各層はローカルキャッシュを有し得る。ローカルキャッシュは、サイトが、セントラルレポジトリに問合せする必要なしに、頻繁にアクセスされた項目を迅速に表示することを可能にする。これらのキャッシュを管理し、キャッシュのコンテンツを確実に最新かつ有効な状態にしておくことにより、システムリソースがかなり消費されてしまう可能性がある。
【0003】
キャッシュ管理を行わない場合、サイトは、情報を更新するかまたは情報を無効なものとしてマークする手段がなければ、期限切れの情報または変更された情報を表示してしまう可能性がある。キャッシュ管理では、一般に、キャッシュとセントラルレポジトリとの間で送信されたアップデートが必要となるが、これにより、各々に記憶された情報が別のものに記憶された情報を確実に反映したものとなる。これにより、サイトがキャッシュ内のデータに依拠して、それらデータを正確に表示することが可能となる。この更新プロセスに起因して、期限切れのデータまたは無効になったデータなどの「不良な」データが識別される。
【図面の簡単な説明】
【0004】
【
図1】コンテンツ管理システムの例を示す図である。
【
図2】分散型キャッシュアーキテクチャの実施例を示す図である。
【
図3】キャッシュ内のアセットを無効化する方法の実施例を示すフローチャートである。
【
図4】キャッシュにおける無効なアセットを含むページを無効化する方法の実施例を示すフローチャートである。
【
図5】ローカルキャッシュ構造の実施例を示す図である。
【発明を実施するための形態】
【0005】
実施例の詳細な説明
以下の説明では、実施例の構造および動作を理解し易くするために例を用いる可能性がある。これらの例は特許請求の範囲を限定するよう意図されたものではなく、そのように解釈されるべきではない。
【0006】
図1は、分散型キャッシュシステムを採用したコンテンツ管理システムの例を示す。この明細書中で用いられる用語として、「分散型キャッシュ」は、システム内のノードに取付けられた複数のローカルキャッシュで構成されるキャッシュシステムを意味する。ノードは、開発に用いられるコンテンツサーバ、公開に用いられるコンテンツサーバ、および来訪者によるリモートアクセスに用いられるサテライトサーバで構成され得る。サテライトサーバはエッジキャッシングシステムであって、キャッシュする目的で、それらサテライトサーバは単にそれら自体のローカルキャッシュを含む他のノードとなる。
【0007】
変更されたコンテンツを含むコンテンツ管理システムは、これらの変更を頻繁に公開することとなる。この明細書中の説明ではこれを動的な公開と称する場合がある。たとえば、コンテンツ管理システムは、製品を販売するウェブサイトで構成されてもよい。ウェブサイトはいくつかの異なるウェブページを含む可能性があり、その何ページかは場合によってはリアルタイムでデータ入力されて(populated)表示され得る。販売中の製品は、サイト上のいくつかの異なるウェブページ内に存在し得る。たとえば、衣類小売り業者は、アセットまたはキャッシュオブジェクトとも称され得る項目を表示させてもよく、この項目は、女性用の衣類および靴についてのページ、運動競技用の衣類および用具についてのページ、ならびに、すべての靴についてのページ上で、1足の女性用ランニングシューズで構成される。
【0008】
この1足の靴はアセットを表わす。アセットは、ウェブページをデータ入力するのに用いられる如何なる項目をも含み得る。例として、写真、テキスト、図などを含み得る。アセットには、いくつかの異なる属性が関連付けられてもよい。靴などを例とした製品の場合、これらの属性は、靴の画像、それらの価格、ブランド名などを含み得る。典型的なシステムにおいては、それらの属性のうちの1つが変わると、その製品に関するページが無効化される可能性がある。無効化はページレベルで起こる可能性があるが、キャッシュされた如何なるオブジェクトのレベルでも起こり得る。キャッシングを必要とするデータの量および更新の頻度により、データベースアクセス時間、アーキテクチャの他の部分に対する負荷、および、期限切れの情報を削除するのにかかる時間が増大してしまう。期限切れの情報が存在していると、システムの効率が低下し、顧客満足度が低下してしまう。
【0009】
特定のウェブサイトのユーザまたは来訪者は、システムの生成側を確認することとなる。
図1に図示のとおり、コンテンツ管理システム10が他のいくつかの構成要素を有することは明らかである。開発システム12は、システム内のアセットに対する変更を公開するのに用いられるコンテンツサーバ14を有する。コンテンツサーバは、データベース15から頻繁にアクセスされたアセットを記憶するローカルキャッシュを有する。管理およびステージングシステム18はまた、生成システム20およびデータベース17に対する変更を公開するのに用いられるコンテンツサーバ16を有する。生成システム20は、22などのコンテンツサーバ、ならびに24および26などのサテライトサーバを有する。ユーザまたは来訪者29は、典型的には、サテライトサーバを介してウェブサイトのページにアクセスするだろう。これらのサーバの各々は複数のローカルキャッシュを有し、これらローカルキャッシュ同士が固有の態様でリンクされて分散型キャッシュとして作用する。各々のサーバはまた、1つ以上のプロセッサを有し、これら1つ以上のプロセッサは、1セットの命令を含みかつコンピュータ読取可能な不揮発性媒体に記憶されたプログラムを実行する。
【0010】
分散型キャッシュシステムの実施例を
図2に示す。ローカルキャッシュは、使用パターンおよび構成に基づいてデータ入力され、キャッシュの量は典型的には利用可能なメモリまたは他のリソースによって制限される。しかしながら、システム全体をさらに効率的に機能させるために、これらのキャッシュの各々がキャッシュ全体を視認する必要はない。変更は1つのローカルキャッシュから他のノードにまで配信される。この場合、ノードは、サーバおよびそのローカルキャッシュで構成される。サーバはコンテンツサーバまたはサテライトサーバで構成されてもよい。コンテンツサーバを構成するサーバでは、開発者がコンテンツをアセットの形で生成および開発する。サテライトサーバは、コンテンツサーバからキャッシュ更新を受信する。
【0011】
システムアーキテクチャは多くの形を取り得る。
図2のシステム実施例30においては、34などのコンテンツサーバはコンテンツサーバクラスタ32に存在し得る。34などの各コンテンツサーバは36などのローカルキャッシュを有する。ローカルキャッシュは、繰返しアクセスされたデータがメモリ内で速やかにアクセスされることを可能にして、データベースまたはネットワークがアクセスするソースで構成され得るデータソース38に対する度重なる呼出しを回避する。
【0012】
システムはまた、典型的には、40などの少なくとも1つのサテライトサーバを含む。コンテンツサーバと同様に、40などのサテライトサーバの各々はローカルキャッシュ42およびデータソース44を有する。上述のとおり、「A」などのアセットの属性がコンテンツサーバで更新されると、コンテンツサーバは、サテライトサーバだけでなくそれ自体のローカルキャッシュにも変更を伝達することとなる。現行のシステムの性能利点は、以下により詳細に説明される伝達の性質に起因している。アセットの属性が変更されると、この変更によりいくつかの事象が引起こされる。
図3は、分散型キャッシュを更新する方法の実施例のフローチャートを示す。
【0013】
変更があった場合、更新された情報をシステム内の他のキャッシュが有するように、これら他のキャッシュにこの変更を伝える必要がある。さらに、変更された属性は、同様に変更されるであろう関連する従属性を有し得る。たとえば、1例として上で用いられた靴には価格の変更があるかもしれない。これは、製造業者がそれらの製品すべてについての価格を上げるかまたは下げることに起因している。以下により詳細に説明されるキャッシュの一部においては、アセットの異なる属性間の従属性が追跡される。従属性は、この場合製造業者である、このアセットに関連付けられる重要項目のリストである。
【0014】
アセットについての価格変更が発生すると、システムは、キャッシュの従属性部分をチェックし、アセットに関連付けられる従属性を含めて、これらを同様に無効化する。これらの従属性は、そのページ上のそのアセットを含む他のウェブページから成るキャッシュオブジェクトの形を取ってもよい。従属性は従属性キャッシュに記憶されるオブジェクトである。
図5に図示のとおり、「オブジェクトキャッシュ」はこのような1セットの従属性へのリンクを維持する。このようなリンクは、従属性キャッシュの識別子、すなわち「オブジェクトキャッシュ」の一部として維持される文字列値、に基づいている。
【0015】
図3および
図4は、プログラムを実行することによってサーバの1つ以上のプロセッサが動作するプロセスを示す。
図3においては、50において、アセットにおける変更が発生する。この変更は、システムにおいて開発者または他の管理者によって公開される変更により、コンテンツサーバで起こるだろう。52において、コンテンツサーバは、分散型キャッシュにおける他のローカルキャッシュに変更を配信する。加えて、54において、コンテンツサーバがまた、それ自体のキャッシュにおけるアセットを無効化するだろう。なお、これらのプロセスが同時にまたは如何なる順序でも行われる可能性があり、特定の順序がこの明細書の説明から示唆されるべきでないことに留意されたい。
【0016】
受信ノードは、配信された変更を受信し、56においてそれら自体の従属性キャッシュをチェックする。アセット識別子が従属性キャッシュに存在する場合、58において、ノードが、識別子を無効なものとしてマークする。識別子は、当該識別子に関連付けられるフラグビットを含み得る。この場合、フラグビットは、0または1に設定されて、識別子を有効または無効なものとしてマークし得る。一実施例においては、フラグは、真/偽を示すブールフラグ(Boolean flag)から成る。従属性キャッシュに存在するアセット識別子はまた、そのキャッシュにおけるそれらの生成時に割当てられたバージョン番号でバージョン化される。オブジェクトキャッシュにおけるこれらの識別子に対して維持されるリンクはまたバージョン識別子を含む。この技術により、連続した無効化動作と従属性キャッシュへの追加との間に存在する可能性のある如何なる競合状態も排除される。
【0017】
性能利点は、無効化されたアセットを有するページが要求されるまで、無効なアセットを備えたページをノードが評価しないことに起因している。無効化されたアセットは、当該アセットを参照するページにとってもはや利用可能ではないので、ページ自体が無効化される。
図4は、ページについての要求を処理するためのプロセスの実施例を示す。60において、ノードがページについての要求を受信する。62において、ノードは、ページがいずれかの無効なアセットを有しているかどうかを判断するために従属性キャッシュをチェックして、ページを無効にする。ページが有効なアセットを有している場合、64において、システムがページをウェブサイト来訪者に供給する。ページが無効であることを意味する無効なアセットを当該ページが有している場合、68において、当該ページがキャッシュから削除される。
【0018】
なお、ページが無効なものとしてマークされることにより、結果として、単に、ページについての要求が受信されたときに、70において、そのページがデータストアからの新しい情報で再生成されるに過ぎないことに留意されたい。そうでない場合、ページは、単に、無効なものとしてマークされたアセットを有したままとなる。ページが再生成されると、72において、システムが新しいページを供給する。従属性キャッシュを更新するために、74において、ページがオブジェクトキャッシュに記憶され、そして、従属性キャッシュに従属性を記憶させることによって、その従属性が更新される。ページは、次いで、ページがリンクされているアセットが無効化されるまで、またはページが期限切れになるまで有効なままとなる。
【0019】
このプロセスにおいて2つの異なる動作が行われる。第1に、オブジェクトの無効化は、ユーザの編集、公開された新しい情報または他の何らかの動作によってもたらされる。第2に、キャッシュされたオブジェクトについてキャッシュから読出しが行われる。無効化が行われているとき、キャッシュされたデータはいずれも実際には削除されない。従属性の入力だけが無効なものとしてマークされる。キャッシュオブジェクトはこの従属性を保持して、キャッシュに引続き存在させるようにする。キャッシュの読出しが行われると、システムは、それがもはや有効ではないと判断し、このため、それがキャッシュに存在する理由がなくなる。次いで、システムは、読出時に無効なオブジェクトを削除する。また、スカベンジャ(scavenger)として作用するクリーンアッププロセス時にオブジェクトを削除してもよい。削除には、ハッシュ表のような構造内のセルを空にすることが必要となる可能性がある。別の実施例では、システムに無効性を無視させるかまたは上書きさせて、この無効性をシステムに検討させないようにしてもよい。
【0020】
これらのページは、後のアクセス時に無効化され、無効化されたものとしてマークされる。言換えれば、従属性が無効化されると、いくつかのページが無効化の候補になる可能性があるが、システムは、それらページのいずれが候補に該当するかを認識または配慮しない。システムは単純に認識していないだけであって、それは後のアクセス時に計算される。これにより性能が著しく向上する。このため、システムは、何百万にものぼり得るページが無効なリンクを含むかどうかをチェックして、それらページを無効なリンクを含むものとしてマークするために、これら何百万ものページにかけてスパイダを機能させる必要はない。
【0021】
図5は、上述のプロセスを可能にするキャッシュ構造の実施例を示す。ローカルキャッシュ80は3つのサブキャッシュまたはキャッシュの区画を有する。これらは、そこからページが供給されるオブジェクトキャッシュ82、従属性キャッシュ84および通知キャッシュ86を含む。ページが要求されると、オブジェクトキャッシュ82は、無効なアセットについてチェックするために従属性キャッシュ84をチェックする。変更によってアセットが無効化されると、通知キャッシュ86は、必要に応じて、他のクラスタメンバまたはサテライトサーバキャッシュに変更を伝達する。これにより従属性キャッシュも更新される。
【0022】
キャッシュの更新は、コンテンツサーバと他のコンテンツサーバとの間、およびコンテンツサーバとサテライトサーバとの間で起こる可能性がある。コンテンツサーバは、通知キャッシュを用いて他のコンテンツサーバを更新する。ページおよび従属性は更新されず、単に無効化の通知がなされる。上述のとおり、無効化によって単に従属性が削除されて、ページが無効にされる。典型的には、読出動作が行われると、無効なページがキャッシュから削除される。代替的には、それら無効なページを削除するためにバッググラウンド動作が定期的に実行されてもよい。
【0023】
コンテンツサーバとサテライトサーバとの間の更新はさまざまに作用する。サテライトサーバは、典型的な読出し動作時にページデータを読出すが、特別なヘッダから従属性を受取る。無効化プロセスはずらして行われてもよく、ページの再生成や、ダブルバッファリングされたキャッシングが可能となり得る。ページの再生成は、セッションの公開中にページを再生成するための巡回を含み得る。
【0024】
ダブルバッファリングされたキャッシングは、実際に公開中のウェブサイト上でコンテンツサーバおよびサテライトサーバキャッシュをタンデムに用いることを必要とし得る。これにより、ページがコンテンツサーバまたはサテライトサーバ上ではキャッシュ内に常に維持されることが確実になり、ページ要求による過負荷からコンテンツサーバが保護される。これにより、ウェブサイトが空白ページまたは破損したリンクを表示することも防止される。ダブルバッファリングされたキャッシングは、HTTP要求によりリモートサテライトサーバがコンテンツサーバと通信することを維持することによって行われる。サテライトサーバは、引続き、通常の方法でHTTP要求およびキャッシュによってページデータを読出すこととなる。ページデータは、この場合、従属性情報を含んでおり、この従属性情報は、リモートサテライトサーバにもストリーミングされるアセット識別子の、カンマで区切られたリストの形を取り得る。
【0025】
リモートサテライトサーバの場合、ページを伝達することにより、コンテンツサーバノードおよびサテライトサーバノードが同じページをホストにすることが可能となり、各ノードはページを再生成する必要がなくなる。ページを再生成するためにデータベースを参照する代わりに、ノードは、新たに生成されたページおよび再生成されたページを、これらのページが再生成およびキャッシュされたノードから、それらのローカルキャッシュに受信する。ページをキャッシュすることにより、それらページの伝達が引起こされてもよい。
【0026】
この態様で、ノードは、ディスク上にキャッシュを保持し、故障から回復させることができる。分散型アーキテクチャがボトルネックを防止し、ページを伝達することによりページを再生成する必要がなくなる一方で、ページの再生成がバックグラウンドモードであることにより、システムがページを再生成している間にリモートサテライトサーバがページを供給し続けることが可能となる。
【0027】
このように、データベース性能を監視するための方法およびシステムの特別な実施例を上記の点で説明してきたが、このような特定の言及は、添付の特許請求の範囲の記載を除いて、この発明の範囲に対する限定とみなされるよう意図されたものではない。