JP2012530294A - ガベージコレクション中の分散キャッシュの可用性 - Google Patents
ガベージコレクション中の分散キャッシュの可用性 Download PDFInfo
- Publication number
- JP2012530294A JP2012530294A JP2012515159A JP2012515159A JP2012530294A JP 2012530294 A JP2012530294 A JP 2012530294A JP 2012515159 A JP2012515159 A JP 2012515159A JP 2012515159 A JP2012515159 A JP 2012515159A JP 2012530294 A JP2012530294 A JP 2012530294A
- Authority
- JP
- Japan
- Prior art keywords
- node
- instance
- state
- data module
- data
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
ガベージコレクション中の分散キャッシュへのアクセスを管理する技法について、本明細書に記載する。ガベージコレクションが、ノードに関して実施されるべきであるとき、ノードは、一次状態にある、ノードに含まれるデータモジュール(複数可)のインスタンスを二次状態に置くことを要求する要求をデータマネージャに送り得る。データマネージャは、データモジュール(複数可)の状態を二次状態に変えることができる。データマネージャは、別のノードに含まれるデータモジュール(複数可)の別のインスタンスの状態を一次状態に変えることができる。ガベージコレクションがノードに関して完了すると、ノードは、二次状態に置かれたデータモジュール(複数可)が一次状態に戻されることを要求する別の要求をデータマネージャに送ることができる。データマネージャは、こうしたデータモジュール(複数可)を一次状態に戻すことができる。
Description
本発明は、ガベージコレクション中の分散キャッシュの可用性に関する。
コンピュータ科学という背景において、キャッシュとは、他の所に(たとえば、データベースや他のデータ記憶システム内に)格納されているオリジナルデータの複写であるデータの集合体である。キャッシュに格納されたデータはしばしば、オリジナルデータのうち、頻繁に使われる一部分である。たとえば、オリジナルデータは、キャッシュに関連づけられたアクセス時間と比較して、比較的長いアクセス時間に起因して、アクセスするのが不経済であり得る。したがって、データベースまたは他のデータ記憶システムよりも、キャッシュにあるデータにアクセスすることが望ましいであろう。
分散キャッシュとは、データが複数のマシン(たとえば、コンピュータや他の処理システム)上に格納されているキャッシュである。分散キャッシュは、スケーラビリティをもたらすが、スケーラビリティはしばしば、オリジナルデータを格納するデータ記憶システム(たとえば、リレーショナルデータベース)ではもたらされない。しかしながら、マネージドコード(たとえば、Java(登録商標)、CLR(共通言語ランタイム)など)で書かれた分散キャッシュはしばしば、ガベージコレクション操作など、いくつかの操作に関してボトルネックに遭う。
キャッシュは、データ構造などの(ただし、それに限定されない)オブジェクトを格納するのに使うことができる。オブジェクトは、アプリケーションによってオブジェクトを読み取らせ、または書き込ませるためのアドレスなど、一意の識別子に関連づけられ得る。様々な理由により、キャッシュに格納された一定のオブジェクトは、どのアプリケーションによっても、それ以上参照されない場合がある。この場合、キャッシュ内にこうしたオブジェクトを維持するのに必要とされるリソース(たとえば、キャッシュに関連づけられたメモリ)が、無駄にされる。この問題に対処するために、「ガベージコレクション」操作が、どのアプリケーションによっても参照されないオブジェクトを識別し、こうしたオブジェクトを維持するのに使われるリソースを回復するのに使われ得る。
通常、ガベージコレクション操作は、オブジェクトが少なくとも1つのアプリケーションによって参照されるかどうか判定するためにオブジェクトが分析されている間、そのオブジェクトを「ロック」する。オブジェクトをロックすることにより、プロセス(たとえば、ソフトウェアアプリケーションに関連づけられたプロセス)が、そのオブジェクトにアクセスすることが防止される。したがって、分散キャッシュへのアクセスを管理するエンティティには、ロックされたオブジェクトを格納するマシンが非応答的であるように見え得る。エンティティはしたがって、マシンを再構成しようと不必要に試みる場合がある。
単一のインスタンスと同じ量のデータを格納するために、分散キャッシュの複数のインスタンスを複数のマシンの間で稼動させると、単一のインスタンスを稼動させるよりも、ガベージコレクション操作中にロックされるオブジェクトの数を削減することができる。しかしながら、複数のキャッシュインスタンスを稼動させると、より多くのオーバーヘッドが必要になり、データがすべて、単一のプロセス(たとえば、結合、依存性など)におメモリにあることを必要とするプロセスの実施を妨げる場合がある。各マシンが、同じデータのそれぞれのインスタンスを格納する複製型分散キャッシュでは、あるマシン上のオブジェクトへのアクセスは、そのオブジェクトが別のマシン上でロックされている場合、負荷分散を用いて提供することができる。しかしながら、このような負荷分散は、各マシンがデータのそれぞれの区画(partition)を格納する分割型(partitioned)分散キャッシュにおいては可能でない。
様々な手法、特に、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する手法について、本明細書に記載する。分散キャッシュは、複数のマシン(たとえば、コンピュータや他の処理システム)によってホストされる複数のノードからなる。各ノードは、分散キャッシュの1つまたは複数のデータモジュールを含む。データモジュールとは、分散キャッシュのそれぞれの部分(たとえば、区画(複数可)や他の適切な部分)または分散キャッシュの複製である。分散キャッシュのどの部分も、複数のノードに渡って複製され得ることに留意されたい。たとえば、ある部分の第1のインスタンスは第1のノードに含まれてよく、その部分の第2のインスタンスは第2のノードに含まれてよく、以下同様である。さらに、ノードは、分散キャッシュの同じ部分の複数のインスタンスを含み得る。しかしながら、「分散キャッシュの複製」は、分散キャッシュに格納された全データのインスタンスを指す。ノードに関して実施されるガベージコレクション操作は、そのノードに含まれるデータのインスタンス(複数可)をロックし得る。しかしながら、分散キャッシュの一部または全部が、複数のノードに渡って複製されると、データの他の1つまたは複数のインスタンスが、分散キャッシュの他のノード(複数可)上で利用可能になってよく、その結果ガベージコレクション操作の実施により、データにアクセスしようと試みるプロセス(たとえば、ソフトウェアアプリケーションに関連づけられたプロセス)にとって、データがアクセス不可能にならない。
データマネージャとは、1つまたは複数のプロセッサを含む、少なくとも1つのコンピュータまたは他の処理システム(複数可)であり、分散キャッシュのデータモジュールを複数のノードの間に分散させる。複製シナリオでは、データモジュールの複数のインスタンスは、「高可用性」のために異なるノードに格納することができる。データマネージャは、それぞれのデータモジュールのどのインスタンスが、それぞれのデータモジュールの一次(primary)インスタンスになるべきであるか、および、どれがデータモジュールの二次(secondary)インスタンスになるべきであるかも判定する。キャッシュ操作に関してのデータモジュールの一次インスタンスは、データモジュールに関してのキャッシュ操作が最初に向けられ、またはデータモジュールに関してのキャッシュ操作が開始される、データモジュールのインスタンスである。キャッシュ操作の例は、読取り操作、書込み操作、削除操作、通知操作などを含むが、それに限定されない。たとえば、読取り(または書込み)操作がデータモジュールに関して最初に向けられるデータモジュールのインスタンスは、その読取り(または書込み)操作に関してデータモジュールの一次インスタンスである。別の例では、削除(または通知)操作がデータモジュールに関して開始されるデータモジュールのインスタンスは、その削除(または通知)操作に関してデータモジュールの一次インスタンスである。キャッシュ操作に関してのデータモジュールの二次インスタンスは、本質的に、キャッシュ操作に関してデータモジュールの「バックアップ」インスタンスである。
データマネージャは、データモジュール(複数可)のインスタンス(複数可)の状態を変えることが可能でよく、その結果、ガベージコレクション操作が、データモジュールの第1のインスタンスに関して実施され得る。たとえば、データマネージャは、データモジュールの第1のインスタンスの状態を、一次状態から二次状態に変えることができる。ノードに含まれるデータモジュールの全インスタンスが二次状態にあるとき、ノードは、オフラインであると言われる。たとえば、キャッシュ操作は、オフラインであるノードに含まれるデータモジュールのインスタンスが二次状態にあるので、データモジュールのそうしたインスタンスの所では開始されず、そこに最初に向けられない。別の例では、データマネージャは、データモジュールの第2のインスタンスの状態を二次状態から一次状態に変えることができ、そうすることによって、データモジュールに格納されているデータが、ガベージコレクション操作中に利用可能になる。
ノードが、ガベージコレクション操作がそのノードに関して実施されるべきであるという指示を受信すると、ノードは、ノードに関してのガベージコレクション操作の実行に先立って、一次状態にある、ノードに含まれるデータモジュール(複数可)のインスタンスを二次状態に置かせることを要求する要求をデータマネージャに送ることができる。ノードが、ガベージコレクション操作がそのノードに関して完了したという指示を受信すると、ノードは、二次状態に置かれたデータモジュール(複数可)のインスタンスが一次状態に戻されることを要求する別の要求をデータマネージャに送ることができる。
ノードに関してのガベージコレクション操作の実行に先立って、ノードをオフライン状態に置くための要求が分散キャッシュのノードから受信される方法例について記載する。ノードに含まれるデータモジュール(複数可)のインスタンスの状態は、要求の受信に応答して、プロセッサ(複数可)を使って一次状態から二次状態に変えられる。インスタンスの一次状態は、データモジュール(複数可)に関してのキャッシュ操作(複数可)が、ノードに含まれるデータモジュール(複数可)のインスタンスの所で開始され、またはそこに最初に向けられるものであることを示す。インスタンスの二次状態は、データモジュール(複数可)に関してのキャッシュ操作(複数可)が、ノードに含まれるデータモジュール(複数可)のインスタンスの所で開始されるものではないこと、またはそこに最初に向けられるものではないことを示す。
ノードに関してのガベージコレクション操作の実行に先立って、ノードをオフライン状態に置くための要求が、分散キャッシュのノードから受信される別の方法例について記載する。ノードからの要求の受信に応答して、ノードに含まれるデータモジュール(複数可)のインスタンス(複数可)を除く、データモジュール(複数可)のすべてのインスタンスが、ガベージコレクション操作によってロックされるという判定が行われる。ノードに含まれるデータモジュール(複数可)のインスタンス(複数可)を除く、データモジュール(複数可)のすべてのインスタンスがガベージコレクション操作によってロックされるという判定に応答して、ガベージコレクション操作がそのノードに関して延期されるべきという要求が行われる。
ノードに関してのガベージコレクション操作の実行に先立って、ノードをオフライン状態に置くための要求が分散キャッシュのノードから受信される、さらに別の方法例について記載する。ノードからの要求の受信に応答して、ノードの負荷が閾値と比較される。負荷が閾値を超えることに基づいて、ガベージコレクション操作がそのノードに関して延期されるべきという要求が行われる。
分散キャッシュのノードでインジケータが受信される、さらに別の方法例について記載する。インジケータは、ガベージコレクション操作が、ノードに関して実施されるべきであることを示す。ノードをホストするマシンのプロセッサ(複数可)を使って、要求がノードからデータマネージャに送られる。この要求は、ガベージコレクション操作の実行に先立って、ノードに含まれるデータモジュール(複数可)のインスタンスを二次状態に置くことを求める。
分散キャッシュのノードでインジケータが受信される、さらに別の方法例について記載する。インジケータは、ガベージコレクション操作がノードに関して完了されたことを示す。ノードをホストするマシンのプロセッサ(複数可)を使って、要求がノードからデータマネージャに送られる。この要求は、ノードに関してのガベージコレクション操作の完了に応答して、ノードに含まれるデータモジュール(複数可)のインスタンスを二次状態から一次状態に戻すことを求める。
受信モジュールおよび状態モジュールを含むデータマネージャ例について記載する。受信モジュールは、ノードに関してのガベージコレクション操作の実行に先立って、ノードをオフライン状態に置くための要求を分散キャッシュのノードから受信するように構成される。状態モジュールは、要求に応答して、ノードに含まれるデータモジュール(複数可)のインスタンスの状態を一次状態から二次状態に変えるように構成される。
コンピュータプログラム製品についても記載される。このコンピュータプログラム製品は、プロセッサベースのシステムがガベージコレクション操作中の分散キャッシュへのアクセスを管理することを可能にするコンピュータプログラム論理が記録されたコンピュータ可読媒体を含む。コンピュータプログラム製品は、第1のプログラム論理モジュールおよび第2のプログラム論理モジュールを含む。第1のプログラム論理モジュールは、プロセッサベースのシステムが、第1のノードに関してのガベージコレクション操作の実行に先立って、第1のノードをオフライン状態に置くための、第1のノードからの要求に応答して、分散キャッシュの第1のノードに含まれるデータモジュール(複数可)の第1のインスタンスの状態を一次状態から二次状態に変えることを可能にするためのものである。第2のプログラム論理モジュールは、プロセッサベースのシステムが、要求に応答して、分散キャッシュの第2のノードに含まれるデータモジュール(複数可)の第2のインスタンスの状態を二次状態から一次状態に変えることを可能にするためのものである。
本概要は、「発明を実施するための形態」において後でさらに説明する概念の抜粋を、簡略化した形で紹介するためのものである。本概要は、特許請求の範囲に記載された主題の主要な特徴または本質的な特徴を特定することは意図しておらず、特許請求の範囲に記載された主題の範囲を限定するのに使われることも意図していない。さらに、本発明は、本文書の「発明を実施するための形態」および/または他のセクションに記載される特定の実施形態に限定されないことに留意されたい。このような実施形態は、例示目的でのみ本明細書に提示される。本明細書に含まれる教示内容に基づいて、当業者には追加実施形態が明らかであろう。
本明細書に組み込まれ、本明細書の一部をなす添付の図面は本発明の実施形態を例示し、記述とともに関連する原理を説明し当業者が本開示技術を行い、利用することを可能にするのにさらに役立つ。
分散キャッシュの論理表現例を示す図である。
一次データ区画をもつ分割型分散キャッシュにおけるPutおよびGet操作の要求および応答をルーティングするのに使われるルーティングプロトコル例を示すブロック図である。
一次および二次データ区画をもつ分割型分散キャッシュにおけるPutおよびGet操作の要求および応答をルーティングするのに使われるルーティングプロトコル例を示すブロック図である。
複製型分散キャッシュにおけるPutおよびGet操作の要求および応答をルーティングするのに使われるルーティングプロトコル例を示すブロック図である。
ローカルキャッシュを使ってPutおよびGet操作の要求および応答をルーティングするのに使われるルーティングプロトコル例を示すブロック図である。
ある実施形態による分散キャッシュを使用するコンピュータシステム例を示すブロック図である。
いくつかの実施形態による、ノードに含まれるデータモジュール(複数可)のインスタンスに対する状態変化を要求する方法を示すフローチャートである。
いくつかの実施形態による、ノードに含まれるデータモジュール(複数可)のインスタンスに対する状態変化を要求する方法を示すフローチャートである。
ある実施形態による、図1に示すマシンの実装例を示すブロック図である。
ある実施形態による、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する方法のフローチャートのそれぞれの部分を示す図である。
ある実施形態による、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する方法のフローチャートのそれぞれの部分を示す図である。
ある実施形態による、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する方法のフローチャートのそれぞれの部分を示す図である。
ある実施形態による、図1に示すデータマネージャの実装形態例を示すブロック図である。
いくつかの実施形態による、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する方法を示すフローチャートである。
ある実施形態による、図1に示すデータマネージャの実装形態例を示すブロック図である。
いくつかの実施形態による、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する方法を示すフローチャートである。
ある実施形態による、図1に示すデータマネージャの実装形態例を示すブロック図である。
実施形態が実装され得るコンピュータ例を示す図である。
本開示技術の特徴および利点が、これ以降で記載する詳細な説明を、同じ参照文字が全体を通して対応する要素を特定する図面と併せ読むと、より明らかになるであろう。図面において、同じ参照番号は概して、同一の、機能的に同様の、および/または構造的に同様の要素を示す。要素が最初に現れる図面は、対応する参照番号の左端の数字(複数可)で示される。
この詳細な説明は、後のセクションでさらに詳しく論じられる概念の一部を紹介するための導入セクションで始まる。分散キャッシュの実装例が、次のセクションで記載される。ガベージコレクション中の分散キャッシュの可用性を提供する実施形態例が次いで論じられ、結論セクションが続く。
I.概論
以下の詳細な説明では、本発明の例示的な実施形態を図解する添付の図面を参照する。しかしながら、本発明の範囲は、こうした実施形態に限定されるのではなく、添付の請求項によって定義される。したがって、例示する実施形態の修正バージョンなど、添付の図面に示すもの以外の実施形態も、やはり本発明によって包含され得る。
以下の詳細な説明では、本発明の例示的な実施形態を図解する添付の図面を参照する。しかしながら、本発明の範囲は、こうした実施形態に限定されるのではなく、添付の請求項によって定義される。したがって、例示する実施形態の修正バージョンなど、添付の図面に示すもの以外の実施形態も、やはり本発明によって包含され得る。
本明細書における、「一実施形態」、「実施形態」、「実施形態例」などへの言及は、記載される実施形態が、ある特定の特徴、構造、または特性を含み得るが、すべての実施形態がこうした特定の特徴、構造、または特性を必ずしも含まなくてよいことを示す。さらに、このようなフレーズは、同じ実施形態を必ずしも指すわけではない。さらに、ある特定の特徴、構造、または特性が、ある実施形態に関連して記載される場合は、明示的に記載されているかどうかに関わらず、他の実施形態に関連してこのような特徴、構造、または特性を実装することが、当業者の知識の範囲内であると言えよう。
実施形態例は、ガベージコレクション操作中の分散キャッシュへのアクセスを管理することが可能である。分散キャッシュは、複数のマシン(たとえば、コンピュータや他の処理システム)によってホストされる複数のノードからなる。各ノードは、分散キャッシュの1つまたは複数のデータモジュールを含む。データモジュールとは、分散キャッシュのそれぞれの部分(たとえば、区画(複数可)もしくは他の適切な部分)または分散キャッシュの複製である。分散キャッシュのどの部分も、複数のノードに渡って複製され得ることに留意されたい。たとえば、ある部分の第1のインスタンスは第1のノードに含まれてよく、その部分の第2のインスタンスは第2のノードに含まれてよく、以下同様である。さらに、ノードは、分散キャッシュの同じ部分の複数のインスタンスを含み得る。しかしながら、「分散キャッシュの複製」は、分散キャッシュに格納された全データのインスタンスを指す。ノードに関して実施されるガベージコレクション操作は、ノードに含まれるデータのインスタンス(複数可)をロックし得る。しかしながら、分散キャッシュの一部または全部が、複数のノードに渡って複製されると、データの他の1つまたは複数のインスタンスが分散キャッシュの他のノード(複数可)上で利用可能になってよく、その結果ガベージコレクション操作の実施により、データにアクセスしようと試みるプロセス(たとえば、ソフトウェアアプリケーションに関連づけられたプロセス)にとって、データがアクセス不可能にはならない。
データマネージャとは、1つまたは複数のプロセッサを含む少なくとも1つのコンピュータまたは他の処理システム(複数可)であり、分散キャッシュのデータモジュールのインスタンスを、それぞれのノードをホストする複数のマシンの間に分散させる。複製シナリオでは、データモジュールの複数のインスタンスが、そうしたデータモジュールの「高可用性」のために異なるノードに格納され得る。データマネージャは、それぞれのデータモジュールのどのインスタンスがそれぞれのデータモジュールの一次インスタンスになるべきか、また、どれがデータモジュールの二次インスタンスになるべきかも判定する。キャッシュ操作に関してのデータモジュールの一次インスタンスは、データモジュールに関してのキャッシュ操作がそこに最初に向けられ、またはデータモジュールに関してのキャッシュ操作がそこで開始されるデータモジュールのインスタンスである。キャッシュ操作の例は、読取り操作、書込み操作、削除操作、通知操作などを含むが、それに限定されない。たとえば、データモジュールに関しての読取り(または書込み)操作が最初に向けられるデータモジュールのインスタンスは、その読取り(または書込み)操作に関してのデータモジュールの一次インスタンスである。別の例では、データモジュールに関しての削除(または通知)操作が開始されるデータモジュールのインスタンスは、その削除(または通知)操作に関してのデータモジュールの一次インスタンスである。キャッシュ操作に関してのデータモジュールの二次インスタンスは、本質的に、キャッシュ操作に関してのデータモジュールの「バックアップ」インスタンスである。
実施形態例によると、データマネージャは、データモジュール(複数可)のインスタンス(複数可)の状態を変えることが可能であり、その結果、ガベージコレクション操作が、一次データモジュールに関して実施され得る。たとえば、データマネージャは、データモジュールの第1のインスタンスの状態を、一次状態から二次状態に変えることができる。ノードに含まれるデータモジュールの全インスタンスが二次状態にあるとき、ノードは、オフラインであると言われる。たとえば、キャッシュ操作は、オフラインであるノードに含まれるデータモジュールのインスタンスが二次状態にあるので、そうしたデータモジュールの所で開始されず、そこに最初に向けられない。別の例では、データマネージャは、データモジュールの第2のインスタンスの状態を二次状態から一次状態に変えることができ、そうすることによって、データモジュールに格納されているデータが、ガベージコレクション操作中に利用可能になる。
実施形態例によると、ガベージコレクション操作がノードに関して実施されるべきだという指示をノードが受信すると、ノードは、データマネージャに要求を送る。この要求は、ノードに含まれるとともに一次状態にあるデータモジュール(複数可)のインスタンスを、ノードに関してのガベージコレクション操作の実行に先立って二次状態に置かせることを求める。ガベージコレクション操作がノードに関して完了したという指示をノードが受信すると、ノードは、一次状態から二次状態に置かれたデータモジュール(複数可)のインスタンスが二次状態から一次状態に戻されることを要求する別の要求をデータマネージャに送ることができる。
II.分散キャッシュの実装例
図1は、分散キャッシュ100の論理表現例である。分散キャッシュとは、データが複数のマシン(たとえば、マシン102A〜102N)上に格納されるキャッシュである。マシンとは、分散キャッシュの1つまたは複数のノードをサポートするように構成されたコンピュータ(たとえば、サーバ)または他の処理システムである。各ノードは、分散キャッシュの1つまたは複数のデータモジュールを含む。データモジュールとは、分散キャッシュのそれぞれの部分(たとえば、区画(複数可)もしくは他の適切な部分)または分散キャッシュの複製である。分散キャッシュのどの部分も、複数のノードに渡って複製され得ることに留意されたい。たとえば、ある部分の第1のインスタンスは第1のノードに含まれてよく、その部分の第2のインスタンスは第2のノードに含まれてよく、以下同様である。さらに、ノードは、分散キャッシュの同じ部分の複数のインスタンスを含み得る。しかしながら、「分散キャッシュの複製」は、分散キャッシュに格納された全データのインスタンスを指す。
図1は、分散キャッシュ100の論理表現例である。分散キャッシュとは、データが複数のマシン(たとえば、マシン102A〜102N)上に格納されるキャッシュである。マシンとは、分散キャッシュの1つまたは複数のノードをサポートするように構成されたコンピュータ(たとえば、サーバ)または他の処理システムである。各ノードは、分散キャッシュの1つまたは複数のデータモジュールを含む。データモジュールとは、分散キャッシュのそれぞれの部分(たとえば、区画(複数可)もしくは他の適切な部分)または分散キャッシュの複製である。分散キャッシュのどの部分も、複数のノードに渡って複製され得ることに留意されたい。たとえば、ある部分の第1のインスタンスは第1のノードに含まれてよく、その部分の第2のインスタンスは第2のノードに含まれてよく、以下同様である。さらに、ノードは、分散キャッシュの同じ部分の複数のインスタンスを含み得る。しかしながら、「分散キャッシュの複製」は、分散キャッシュに格納された全データのインスタンスを指す。
分散キャッシュ100は、名前付きキャッシュ106A、106Bを含む。名前付きキャッシュとは、データを論理グループ化したものである。名前付きキャッシュは、論じやすくするためにデータベースと考えてよいが、実施形態例の範囲は、この点において限定されない。名前付きキャッシュ106A、106Bは、フェイルオーバ、満了、削除などを含むが、それに限定されない、物理的構成およびキャッシュポリシーを指定する。指定された分散キャッシュ(たとえば、分散キャッシュ100)と通信する必要があるアプリケーションは、同じ名前付きキャッシュをインスタンス化する。
アプリケーションは、様々なキャッシュ用のポリシーに基づいて、1つまたは複数の名前付きキャッシュを使うことができる。たとえば、第1のタイプのデータ(たとえば、アクティビティデータ)は、分割された名前付きキャッシュに格納することができ、第2のタイプのデータ(たとえば、参照データ)は、複製された名前付きキャッシュに格納することができる。分割型および複製型分散キャッシュについては、後でより詳細に論じる。
2つの名前付きキャッシュ(すなわち、名前付きキャッシュ106A、106B)が、例示目的で図1に示されているが、限定的であることは意図していない。分散キャッシュ100は、任意の数の名前付きキャッシュを含み得ることが、当業者には認識されよう。名前付きキャッシュ106Aは、製品カタログに関連づけられたデータを格納するように示されており、名前付きキャッシュ106Bは、電子機器目録に関連づけられたデータを格納するように示されているが、名前付きキャッシュは、データの任意の適切なグループ化を格納し得ることが理解されよう。
ノード104A〜104Z(別名「キャッシュホスト」)はそれぞれ、分散キャッシュ100の1つまたは複数のデータモジュールを含む。データモジュールとは、分散キャッシュのそれぞれの部分(たとえば、区画(複数可)もしくは他の適切な部分)または分散キャッシュの複製である。分散キャッシュのどの部分も、複数のノードに渡って複製され得ることに留意されたい。たとえば、ある部分の第1のインスタンスは第1のノードに含まれてよく、その部分の第2のインスタンスは第2のノードに含まれてよく、以下同様である。さらに、ノードは、分散キャッシュの同じ部分の複数のインスタンスを含み得る。しかしながら、「分散キャッシュの複製」は、分散キャッシュに格納された全データのインスタンスを指す。ノード104A〜104Zは、まとめて「クラスタ」と呼ばれる。
名前付きキャッシュ106A、106Bはそれぞれ、1つまたは複数の領域を含む。領域とは、名前付きキャッシュ内のオブジェクトを論理グループ化したものである。たとえば、名前付きキャッシュ106Aが、例示目的のために領域108A〜108Yを含むように図1に示されている。したがって、ノード104A〜104Zの間の各データモジュールは、名前付きキャッシュ106Aおよび/または名前付きキャッシュ106Bの1つまたは複数のそれぞれの領域を含み得る。領域は、論じやすくするためにテーブルと考えてよいが、実施形態の範囲は、この点において限定されない。たとえば、領域は、キー値ペアの任意のセットを格納することができる。キー値ペアは、キーおよび対応する値を含む。キーは、たとえば、分散キャッシュ100内の場所を見つけるのに使われる文字列とすることができる。値は、キーによって示される場所に対応するデータ(たとえば、オブジェクト)である。キー値ペアのそれ以上の考察は、後で図2〜5を参照して行われる。
アプリケーションは、名前付きキャッシュ(たとえば、名前付きキャッシュ106Aまたは106B)にアクセスするために、必ずしも領域を指定する必要はないことに留意されたい。たとえば、アプリケーションは、対応するオブジェクトへのキーのみを使うプット(put)、ゲット(get)、および除去API(アプリケーションプログラミングインターフェイス)を使うことができる。実際、アプリケーションによって書き込まれるキー値ペアは、領域を考慮せずに名前付きキャッシュを越えて分散され得るので、アプリケーションは、領域を使わないとき、より拡張する。たとえば、キー値ペアの作成および書込み中に領域が指定されない場合、キー値ペアは、たとえば、暗黙的に作成された複数の領域に自動的に分割され得る。
各領域108A〜108Yは、1つまたは複数のキャッシュ項目を含む。図1に示すように、領域108Aは、例示目的のためにキャッシュ項目110A〜110Pを含む。キャッシュ項目は、キー、オブジェクトペイロード、1つまたは複数のタグ、有効時間(TTL)、作成されたタイムスタンプ、バージョン番号、他の内部記帳情報などを含み得るが、それに限定されない他の情報とともにキャッシュされるべきオブジェクトを含む、最低レベルのキャッシングを表す。キャッシュ項目110A〜110Pはそれぞれ、例示目的のためにキー、ペイロード、およびタグを含むように示されているが、実施形態例は、この点において限定されないことが理解されよう。たとえば、キャッシュ項目110A〜110Pは、それぞれのキー、ペイロード、および/またはタグを必ずしも含む必要はない。別の例では、キャッシュ項目110A〜110Pは、図1に示すキー、ペイロード、および/またはタグに加えて、またはその代わりに、情報を含み得る。以下は、名前付きキャッシュおよび領域の作成を示すC#コードの例である。
上に挙げたコード例は、限定的であることは意図していない。適切などのタイプのコードも、名前付きキャッシュおよび/または領域を作成するのに使われ得ることが理解されよう。
複製シナリオでは、データモジュールの複数のインスタンスが、「高可用性」のためにノード104A〜104Zに渡って格納され得る。ノード104A〜104Zはそれぞれ、分散キャッシュ100の1つまたは複数のどのデータモジュールに関しても、一次ノードでも二次ノードでもよい。一次ノードとは、指定されたデータモジュールの一次インスタンスを含むノードである。たとえば、指定されたデータモジュールへのアクセスは、指定されたデータモジュール用の一次ノードにルーティングされる。二次ノードとは、指定された領域の二次インスタンスを含むノードである。たとえば、名前付きキャッシュが、高可用性のためにデータモジュールの「バックアップインスタンス」をもつように構成される場合、一次ノードが、データモジュールへのアクセスを提供するのに指定され、1つまたは複数の他のノードが、たとえば、一次インスタンスがアクセス不可能になった場合にデータモジュールの1つまたは複数のそれぞれの二次インスタンスを含むように選ばれる。データモジュールの一次インスタンスに対して行われる変更は、二次インスタンスにおいて反映される。このような変更は、同期して、または非同期に二次インスタンスに対しても与えられ得る。非同期手法では、データモジュール用の一次ノードが故障した場合、二次ノード(複数可)が、ログをディスクに書き込ませる必要なく、データモジュールに格納されているデータを読み取るのに使われ得る。たとえば、一次ノードの故障により、二次ノードが一次ノードになるので、データモジュールは、アクセス可能なままである。
ノードは、1つまたは複数の第1のデータモジュールに関しての一次ノード、および同じ分散キャッシュの1つまたは複数の第2のデータモジュールに関しての二次ノードでよい。たとえば、ノードが、第1のデータモジュール(複数可)の一次インスタンスをもつことを指定される場合、ノードは、第1のデータモジュール(複数可)に関して一次ノードであると見なされる。第1のデータモジュールのインスタンスを含むが、その第1のデータモジュールへのアクセスを提供しない他のどのノードも、その第1のデータモジュールに関して二次ノードであると見なされる。ノードが、第2のデータモジュール(複数可)へのアクセスを提供しない場合、ノードは、第2のデータモジュール(複数可)に関して、二次ノードであると見なされる。第2のデータモジュールへのアクセスを提供するノードは、その第2のデータモジュールに関して一次ノードであると見なされる。
分散キャッシュ100は、分割型キャッシュ、複製型キャッシュ、またはローカルキャッシュを含むが、それに限定されない、様々なキャッシュタイプのいずれでもよい。こうしたタイプの分散キャッシュはそれぞれ、1つまたは複数の任意のデータモジュールの複数のインスタンスを含み得ることを理解されたい。たとえば、データモジュールの複数のインスタンスは、分散キャッシュの複数のそれぞれのノードに格納することができる。別の例では、データモジュールの複数のインスタンスは、共通ノード上に格納することができる。各データモジュールのあるインスタンスは、それぞれのデータモジュールの一次インスタンスとして指定することができる。データモジュールの他のインスタンスは、それぞれのデータモジュールの二次インスタンスとして指定される。
アプリケーションは、たとえば、キャッシュされるべきデータのタイプに基づいて、適切なタイプのキャッシュを選ぶことができる。分割型キャッシュとは、名前付きキャッシュがその上で定義されるノードの間に分割された領域を含むキャッシュである。クラスタに渡る複数のマシン(たとえば、マシン102A〜102N)の複合メモリは、データをキャッシュするのに使うことができ、こうすることによって、分散キャッシュ100にとって利用可能なメモリの量を増やすことができる。データ区画に関連づけられた全キャッシュ操作は、それぞれのキャッシュ操作に関しての、データ区画の一次インスタンス(複数可)を含むノード(複数可)の所で開始され、またはそこに最初に向けられる。
分割型キャッシュは、所望のスケールを達成するのに使うことができる。たとえば、マシンおよび/またはノードが分散キャッシュ100に追加されて、自動負荷分散が起こることが可能になり得る。たとえば、マシン102A〜102N(またはノード104A〜104Z)の間に格納されている一部の区画は、追加されたマシンおよび/またはノードに移動することができる。このような自動負荷分散の結果、修正されたクラスタに渡ってキーが分散され得る。アクセス要求は、より多くのマシンにルーティングすることができ、その結果、スループットが増加し得る。追加マシンは、追加メモリをもたらし得る。追加メモリにより、分散キャッシュ100は、より多くのデータを格納することが可能になり得る。
図2は、データ区画(複数可)の一次インスタンス(複数可)210A〜210Cをもつ分割型分散キャッシュにおいて、Put操作206およびGet操作208の要求および応答をルーティングするのに使われるルーティングプロトコル例200のブロック図である。一次インスタンス(複数可)210A〜210Cはそれぞれ、1つまたは複数のそれぞれのデータ区画の1つまたは複数の一次インスタンスを含む。図2の実施形態では、ノード104A〜104Cがそれぞれ、それぞれのデータ区画(複数可)の一次インスタンス(複数可)のみを含むので、データ区画のどの複製も、ノード104A〜104Cに含まれないことに留意されたい。データ区画のただ1つのインスタンスが、所与のときに一次インスタンスになり得る。Put操作(たとえば、Put操作206)が、分散キャッシュ(たとえば、分散キャッシュ100)にデータを書き込む。Get操作(たとえば、Get操作208)が、分散キャッシュ(たとえば、分散キャッシュ100)からデータを読み取る。Put操作206およびGet操作208は、それぞれのキャッシュクライアント202A、202Bによって実施される。
キャッシュクライアントとは、分散キャッシュ内のデータ区画に関してデータを書き込み、および/または読み取るためにノードと通信するソフトウェアアプリケーションである。キャッシュクライアントは、簡易キャッシュクライアントまたはルーティングキャッシュクライアントとして構成され得る。簡易キャッシュクライアントとは、クラスタ内の1つのノード(たとえば、ノード104A〜104Cの1つ)と接触するように構成されたキャッシュクライアントである。簡易キャッシュクライアントは、ルーティング能力をもたず、各キャッシュオブジェクトが分散キャッシュ内でどこに格納されるかを追跡しない。簡易キャッシュクライアントが、オブジェクトを格納していない、またはそのオブジェクト用の一次ノードではないノードに対してオブジェクトを要求した場合、そのノードは、クラスタからオブジェクトを取得し、次いで、オブジェクトを簡易キャッシュクライアントに戻す。一方、ルーティングクライアントとは、ルーティング能力をもつキャッシュクライアントである。ルーティングキャッシュクライアントは、クラスタ内のノード(たとえば、ノード104A〜104C)に渡るキャッシュオブジェクトの配置を追跡するためのルーティングテーブルを含む。ルーティングキャッシュクライアントは、キャッシュオブジェクトそれぞれがどこにあるかを追跡するので、ルーティングキャッシュクライアントは、メモリにオブジェクトを格納しているノードに対して直接要求を行うことができる。
図2に示すように、キャッシュクライアント202A、202Bは、例示目的のために簡易キャッシュクライアントとして構成される。しかしながら、キャッシュクライアント202Aまたは202Bのどの1つまたは複数も、ルーティングキャッシュクライアントとして構成され得ることが理解されよう。図2において、Put操作206は、キー「K2」に値「V2」を割り当てる。ノード104Aのルーティングレイヤ204Aは、キー「K2」がノード104Bに関連づけられていると判定する。したがって、ルーティングレイヤ204Aは、Put操作206に関連づけられた要求を、ノード104Bの一次データ区画210Bにルーティングする。ルーティングレイヤ204Cは、キー「K2」に対するGet操作208に対応する要求を、やはり一次データ区画210Bにルーティングする。ルーティングレイヤは、キャッシュクライアントに組み込まれ得ることに留意されたい。したがって、ルーティングレイヤ204Aは、キャッシュクライアント202Aに組み込むことができ、および/またはルーティングレイヤ204Cは、キャッシュクライアント202Bに組み込むことができる。
図3は、データ区画(複数可)の一次インスタンス(複数可)210A〜210Cおよびデータ区画(複数可)の二次インスタンス(複数可)302A〜302Cをもつ分割型分散キャッシュにおいて、Put操作206およびGet操作208の要求および応答をルーティングするのに使われるルーティングプロトコル例300のブロック図である。ノード104A〜104Cに渡ってデータ(たとえば、キー値ペア「K1、V1」、「K2、V2」、および「K3、V3」)が複製されるが、データ区画210A〜210Cおよび302A〜302Cは複製されない。図3に示すように、キャッシュクライアント202Aは、キー「K2」をもつ値「V2」をノード104Aにプット(put)するための要求を送る。ルーティングレイヤ204Aは、キー「K2」がノード104Bに属すと判定し、したがってキー「K2」をノード104Bにルーティングする。ノード104Bは、Put操作206をローカルに実施し、また、Put操作206に対応するプット(put)要求を二次ノード104Aおよび104Cに送る。ノード104Aおよび104Cは、キー値ペア「K2、V2」の二次インスタンスを含むので、ノード104Aおよび104Cは、キー値ペア「K2、V2」に関して二次ノードであると思われる。ノード104Bは、キー値ペア「K2、V2」に対する要求がノード104Bから受信済みであるという、ノード104Aおよび104Cからの確認応答を待つ。このような確認応答を受信すると、ノード104Bは、Put操作の成功を確認するインジケータをノード104Aに与える。ノード104Aは、インジケータをキャッシュクライアント202Aに転送する。
Get操作208は、図2を参照して上で論じたのと同様にして実施される。たとえば、ルーティングレイヤ204Cが、Get操作208に対応する要求を、キー「K2」を含む一次データ区画210Bにルーティングする。
図4は、複製型分散キャッシュにおいて、Put操作206およびGet操作208の要求および応答をルーティングするのに使われるルーティングプロトコル例400のブロック図である。図4に示すように、ノード104A〜104Cは、複製データ区画(複数可)402A〜402Cそれぞれのインスタンスを含む。複製データ区画402A〜402Cの各インスタンスは、キー値ペア「K1、V1」、「K2、V2」、および「K3、V3」を含む。キャッシュクライアント202Aは、Put操作206に対応するPut要求をノード104Aに与える。Put要求は、キー「K2」および値「V2」を含む。ノード104Aは、ルーティングレイヤ204Aを介してPut要求をノード104Bにルーティングする。というのは、この例ではノード104Bがキー「K2」に対する一次ノードだからである。ノード104Bは、Put要求を受信したことに応答して、書込み操作をローカルに実施する。ノード104Bは、ノード104Bが書込み操作を実施済みであることを示す通知をノード104Aに与える。ノード104Aは、通知をキャッシュクライアント202Aに転送する。その間、ノード104Bは、分散キャッシュの他の全ノード(たとえば、この例ではノード104C)に変更を非同期に伝播する。Get操作208は、複製型分散キャッシュではローカルに実施される。
図5は、ローカルキャッシュ502A、502Bを使ってPut操作206およびGet操作208の要求および応答をルーティングするのに使われるルーティングプロトコル例500のブロック図である。図5に示すように、キャッシュクライアント202A、202Bは、それぞれのローカルキャッシュ502A、502Bを含む。たとえば、アプリケーションは、頻繁にアクセスされる項目のためのアプリケーションプロセス空間においてローカルキャッシュを維持することができる。各ローカルキャッシュ502A、502Bは、それぞれのルーティングレイヤ504A、504Bを含むように示してある。ローカルキャッシュ502A、502Bにおいて、ペイロードは、たとえば、逆シリアル化コストおよび/または一次ノードへのネットワークホップを節約するように、オブジェクトの形で保つことができ、そうすることによって、分散キャッシュの性能が向上し得る。
III.ガベージコレクション中の分散キャッシュへのアクセスを管理する実施形態例
図6は、ある実施形態による、分散キャッシュ(たとえば、図1に示す分散キャッシュ100)を使用するコンピュータシステム例600のブロック図である。概して、コンピュータシステム600は、データのインスタンス(たとえば、オブジェクト)を、分散キャッシュのノードの間に格納するように動作する。図6に示すように、コンピュータシステム600は、複数のユーザシステム602A〜602M、ガベージコレクタ604、データマネージャ606、ネットワーク608、データベース610、およびキャッシュホスティングシステム612を含む。キャッシュホスティングシステム612は、複数のマシン102A〜102Nを含むが、マシンについては後でより詳細に論じる。ユーザシステム602A〜602M、ガベージコレクタ604、データマネージャ606、データベース610、およびマシン102A〜102Nの間の通信は、公知のネットワーク通信プロトコルを使ってネットワーク608を介して実施される。ネットワーク608は、ワイドエリアネットワーク(たとえば、インターネット)、LAN(ローカルエリアネットワーク)、別のタイプのネットワーク、またはその組合せとすることができる。
図6は、ある実施形態による、分散キャッシュ(たとえば、図1に示す分散キャッシュ100)を使用するコンピュータシステム例600のブロック図である。概して、コンピュータシステム600は、データのインスタンス(たとえば、オブジェクト)を、分散キャッシュのノードの間に格納するように動作する。図6に示すように、コンピュータシステム600は、複数のユーザシステム602A〜602M、ガベージコレクタ604、データマネージャ606、ネットワーク608、データベース610、およびキャッシュホスティングシステム612を含む。キャッシュホスティングシステム612は、複数のマシン102A〜102Nを含むが、マシンについては後でより詳細に論じる。ユーザシステム602A〜602M、ガベージコレクタ604、データマネージャ606、データベース610、およびマシン102A〜102Nの間の通信は、公知のネットワーク通信プロトコルを使ってネットワーク608を介して実施される。ネットワーク608は、ワイドエリアネットワーク(たとえば、インターネット)、LAN(ローカルエリアネットワーク)、別のタイプのネットワーク、またはその組合せとすることができる。
ユーザシステム602A〜602Mは、コンピュータまたは他の処理システムであり、それぞれ、マシン102A〜102Nと通信することが可能であり、1つまたは複数のプロセッサを含む。ユーザシステム602A〜602Mは、分散キャッシュに格納されているデータにアクセスすることが可能であり、分散キャッシュは、キャッシュホスティングシステム612によってホストされる。分散キャッシュは、ノード614A〜614Nを含み、ノードは、それぞれのマシン102A〜102Nによってホストされる。たとえば、ユーザシステム602A〜602Mは、マシンへのデータの書込みを要求するPut要求をマシン102A〜102Nに与えるように構成され得る。別の例では、ユーザシステム602A〜602Mは、マシンに格納されているデータの読取りを要求するGet要求をマシン102A〜102Mに与えるように構成され得る。たとえば、ユーザが、ユーザによって所有され、あるいはユーザにとってアクセス可能なユーザシステム602上に展開されたクライアントを使って、Put要求またはGet要求を開始することができる。
キャッシュホスティングシステム612は、分散キャッシュをホストする。キャッシュホスティングシステム612は、複数のマシン102A〜102Nを含む。マシン102A〜102Nは、コンピュータまたは他の処理システムであり、それぞれ、ユーザシステム602A〜602Mと通信することが可能であり、1つまたは複数のプロセッサを含む。マシン102A〜102Nは、それぞれのノード(複数可)614A〜614Nをホストするように構成される。各ノードは、分散キャッシュのそれぞれのデータモジュール(複数可)を含む。図6に示すように、第1のノード(複数可)614Aは、第1のデータモジュール(複数可)616Aを含み、第2のノード(複数可)614Bは、第2のモジュール(複数可)616Bを含み、以下同様である。
データモジュールとは、分散キャッシュのそれぞれの部分(たとえば、キャッシュ項目(複数可)、領域(複数可)、区画(複数可)など)または分散キャッシュの複製である。分散キャッシュのどの部分も、ノード614A〜614Nに渡って複製され得ることに留意されたい。たとえば、ある部分の第1のインスタンスが、第1のノード(複数可)614Aの1つのノードに含まれてよく、その部分の第2のインスタンスが、第2のノード(複数可)614Bの1つのノードに含まれてよく、以下同様である。さらに、ノードは、分散キャッシュの同じ部分の複数のインスタンスを含み得る。たとえば、第1のノード(複数可)614Aの1つのノードが、キャッシュ項目(複数可)、領域(複数可)、データ区画(複数可)、または分散キャッシュの他の任意の適切な部分の2つ以上のインスタンスを含み得る。しかしながら、「分散キャッシュの複製」は、分散キャッシュに格納された全データのインスタンスを指す。ノードに関して実施されるガベージコレクション操作は、ノードに含まれるデータのインスタンス(複数可)をロックすることができる。しかしながら、分散キャッシュの一部または全部が、ノード614A〜614Nに渡って複製されると、データの他の1つまたは複数のインスタンスが、分散キャッシュの他のノード(複数可)上で利用可能になってよく、その結果、ガベージコレクション操作の実施により、データが、データにアクセスしようと試みるプロセス(たとえば、アプリケーション618A〜618Nに関連づけられたプロセス)にとってアクセス不可能にはならない。
データモジュールの任意の数のインスタンスが、ノード614A〜614Nの間に格納され得るが、データモジュールのただ1つのインスタンスが、所与のときのキャッシュ操作に関して、そのデータモジュールの一次インスタンスとして指定され得る。キャッシュ操作に関するデータモジュールの一次インスタンスは、キャッシュ操作に関して一次状態にあると言われ、他のどのインスタンスも、キャッシュ操作に関して二次状態にあると言われる。データモジュールの一次インスタンスを含むノードは、そのデータモジュール用の一次ノードと呼ばれることに留意されたい。データモジュールの二次インスタンスを含むノードは、そのデータモジュール用の二次ノードと呼ばれる。ノードは、一部のデータモジュール用には一次ノードに、他のデータモジュール用には二次ノードになり得ることが理解されよう。
様々なアプリケーションのどれもが、マシン102A〜102N上に展開され得る。図6に示すように、第1のアプリケーション(複数可)618Aは、マシン102A上に展開され、第2のアプリケーション(複数可)618Bはマシン102B上に展開され、以下同様である。アプリケーション(複数可)618A〜618Nは、分散キャッシュに書き込まれるべき新規データを作成し、または分散キャッシュに格納されている既存データを読み取り、または修正する操作を実施することができる。たとえば、アプリケーション618A〜618Nは、Put要求およびGet要求を使って、マシン102A〜102Nに渡ってデータをそれぞれ書き込み、および読み取ることができる。いくつかの実施形態例では、ユーザシステム602A〜602Mは、ネットワーク608を経由する必要なく、アプリケーション618A〜618Nの1つまたは複数にアクセスすることが可能である。アプリケーション(複数可)618A〜618Nのどの1つまたは複数も、それぞれのマシン102A〜102N上に展開されるのに加えて、またはその代わりに、それぞれのユーザシステム602A〜602M上に展開され得る。
キャッシュは、データ構造などの(ただし、それに限定されない)オブジェクトを格納するのに使うことができる。オブジェクトは、アプリケーションによってオブジェクトを読み取らせ、または書き込ませるためのアドレスなど、一意の識別子に関連づけられ得る。様々な理由により、キャッシュに格納された一定のオブジェクトは、どのアプリケーションによっても、それ以上参照されない場合がある。この場合、キャッシュ内にこうしたオブジェクトを維持するのに必要とされるリソース(たとえば、キャッシュに関連づけられたメモリ)が、無駄にされる。この問題に対処するために、「ガベージコレクション」操作が、どのアプリケーションによっても参照されないオブジェクトを識別し、こうしたオブジェクトを維持するのに使われるリソースを回復するのに使われ得る。
オブジェクトのインスタンスが、オブジェクトが少なくとも1つのアプリケーションによって参照されるかどうか判定するために、ガベージコレクション操作に従って分析されている間、ガベージコレクタ604は、オブジェクトのそのインスタンスを「ロックする」ことができる。オブジェクトのインスタンスをロックすることにより、プロセス(たとえば、アプリケーション(複数可)618A〜618Nに関連づけられたプロセス)が、オブジェクトのそのインスタンスにアクセスすることが防止される。しかしながら、分散キャッシュは、オブジェクトの他のインスタンス(複数可)を含むことができ、こうしたインスタンス(複数可)は、一次状態にあるとともにガベージコレクション操作によってロックされていない限り、ガベージコレクション操作中にアクセス可能でよいことが理解されよう。ガベージコレクション操作中に分散キャッシュにおいてオブジェクトへのアクセスを管理する技法については、データマネージャ606および図7〜15に示す実施形態例を参照して後でより詳細に論じる。
ガベージコレクタ604は、例示目的のために、スタンドアロン型コンピュータ(複数可)または処理システム(複数可)であるように図6に示されているが、限定的であることは意図していない。ガベージコレクタ604は、キャッシュホスティングシステム612に部分的または全体的に組み込まれ得ることが理解されよう。たとえば、ガベージコレクタ604の一部または全部が、マシン102A〜102Nの1つの上に格納され、またはマシン102A〜102Nの任意の2つ以上の間に分散され得る。
データマネージャ606は、1つまたは複数のプロセッサを含む少なくとも1つのコンピュータまたは他の処理システム(複数可)であり、分散キャッシュのデータモジュールのインスタンスを、マシン102A〜102Nの間に分散する。データマネージャ606は、それぞれのデータモジュールのどのインスタンスが一次データモジュールになるべきであり、どれが二次データモジュールになるべきかも判定する。
データマネージャ606は、ガベージコレクション操作中の分散キャッシュへのアクセスを管理するように構成される。たとえば、データマネージャ606は、ガベージコレクション操作がノードに関して実施される前に、ノードに含まれるデータモジュールのインスタンスが二次状態にあることを保証するように構成され得る。この例では、データマネージャ606は、別のノードに含まれるデータモジュールの別のインスタンスの状態を一次状態に変えることができ、そうすることによって、データモジュール中のデータは、ガベージコレクション操作中にアクセス可能になる。ガベージコレクション操作が実施されるべきノードが、分散キャッシュ内のデータモジュールの唯一のインスタンスを含む場合、データマネージャ606は、別のノードに含まれるべき、データモジュールの別のインスタンスを生成することができ、そうすることによって新規インスタンスは、ガベージコレクション操作の実施中にデータモジュールの一次インスタンスとして設定され得る。ガベージコレクション操作中の分散キャッシュへのアクセスを管理する技法についてのそれ以上の考察は、図7〜15を参照して後で行われる。
データマネージャ606は、例示目的のために、スタンドアロン型コンピュータ(複数可)または処理システム(複数可)であるように図6に示されているが、限定的であることは意図していない。データマネージャ606は、キャッシュホスティングシステム612に部分的または全体的に組み込まれ得ることが理解されよう。たとえば、データマネージャ606の一部または全部が、マシン102A〜102Nの1つの上に格納され、またはマシン102A〜102Nの任意の2つ以上の間に分散され得る。
データベース610は、オリジナルデータ620を、データベースモデル(たとえば、リレーショナルモデル、階層モデル、ネットワークモデルなど)に従って構造化された様式で格納するように構成される。ユーザシステム602A〜602Mおよび/またはマシン102A〜102Nは、SQL(Structured Query Language)、SPARQL、XPath(extensible markup language path language)などを含むが、それに限定されないクエリ言語(複数可)に従ってオリジナルデータ620にアクセスすることができる。分散キャッシュの1つまたは複数のどのデータモジュール616A〜616Cも、たとえば、オリジナルデータ620のうち、頻繁に使われる一部分を格納することができる。オリジナルデータ620は、分散キャッシュに関連づけられたアクセス時間と比較して、データベース610に関連づけられた比較的長いアクセス時間に起因して、アクセスするのが不経済であり得る。したがって、データベース610よりも、ノード614A〜614Nの所のデータにアクセスすることが望ましいであろう。
図7、8は、いくつかの実施形態による、ノードに含まれるデータモジュール(複数可)のインスタンスに対する状態変化を要求する方法のフローチャート700、800を示す。フローチャート700、800は、分散キャッシュのノードをホストするマシンの観点から記載されている。フローチャート700、800は、たとえば、図6に示すキャッシュホスティングシステム612のマシン102A〜102Nのどれによっても実施することができる。例示目的のために、フローチャート700、800は、図9に示すマシン102’を参照して記載されているが、このマシンは、ある実施形態によるマシン102の例である。本文書では、プライム記号が、参照番号を修飾するのに使われる場合は常に、その修飾参照番号は、参照番号に対応する要素の例示的(または代替)実装形態を示す。
図9に示すように、マシン102’は、ノード614’を含む。ノード614’は、受信モジュール902および要求モジュール904を含む。それ以上の構造および動作実施形態が、フローチャート700および800に関する考察に基づいて、当業者には明らかであろう。フローチャート700について、以下の通り記載する。
図7に示すように、フローチャート700の方法は、ステップ702で始まる。ステップ702で、インジケータが分散キャッシュのノードで受信される。インジケータは、ガベージコレクション操作がノードに関して実施されるべきであることを示す。たとえば、ノードは、ガベージコレクション操作を実施するべきであるガベージコレクタ(たとえば、ガベージコレクタ604)からインジケータを受信し得る。ある実装例では、図9のノード614’の受信モジュール902が、インジケータを受信する。
ステップ704で、ノードをホストするマシンの1つまたは複数のプロセッサを使って、ノードに関してのガベージコレクション操作の実行に先立って、ノードに含まれる少なくとも1つのデータモジュールのインスタンスが二次状態に置かれることを要求する要求が、ノードからデータマネージャに送られる。インスタンスの一次状態は、少なくとも1つのデータモジュールに関してのキャッシュ操作(複数可)が、ノードに含まれる少なくとも1つのデータモジュールのインスタンスの所で開始され、またはそこに最初に向けられるものであることを示す。インスタンスの二次状態は、少なくとも1つのデータモジュールに関してのキャッシュ操作(複数可)が、ノードに含まれる少なくとも1つのデータモジュールのインスタンスの所で開始されないこと、またはそこに最初に向けられるものではないことを示す。
たとえば、ノードは、一次状態にある、ノードに含まれるデータモジュールのどのインスタンスも、二次状態に置かれることを要求し得る。別の例では、ノードは、一次状態にある、ノードに含まれる選択された1つまたは複数のデータモジュール(複数可)のインスタンスが二次状態に置かれることを要求し得る。ある実装例では、要求モジュール904が要求を送る。たとえば、要求は、マシン102’の1つまたは複数のプロセッサを使って送られ得る。
図8に示すように、フローチャート800の方法は、ステップ802で始まる。ステップ802で、インジケータが、分散キャッシュのノードで受信される。インジケータは、ガベージコレクション操作がノードに関して完了されたことを示す。たとえば、ノードは、ガベージコレクション操作を実施したガベージコレクタ(たとえば、ガベージコレクタ604)から、インジケータを受信し得る。ある実装例では、図9のノード614’の受信モジュール902が、インジケータを受信する。
ステップ804で、ノードに関してのガベージコレクション操作の完了に応答して、ノードに含まれる少なくとも1つのデータモジュールのインスタンスが二次状態から一次状態に戻されることを要求する要求が、ノードをホストするマシンの1つまたは複数のプロセッサを使って、ノードからデータマネージャに送られる。
インスタンスの一次状態は、少なくとも1つのデータモジュールに関してのキャッシュ操作(複数可)が、ノードに含まれる少なくとも1つのデータモジュールのインスタンスの所で開始され、またはそこに最初に向けられるものであることを示す。インスタンスの二次状態は、少なくとも1つのデータモジュールに関してのキャッシュ操作(複数可)が、ノードに含まれる少なくとも1つのデータモジュールのインスタンスの所で開始されないこと、またはそこに最初に向けられるものではないことを示す。
たとえば、ノードは、ガベージコレクション操作の実施を期待して二次状態に置かれた、ノードに含まれるデータモジュールのどのインスタンスも、一次状態に戻されることを要求し得る。別の例では、ノードは、ガベージコレクション操作の実施を期待して二次状態に置かれた、ノードに含まれる選択された1つまたは複数のデータモジュールのインスタンスが、一次状態に戻されることを要求し得る。ある実装例では、要求モジュール904が、データマネージャに要求を送る。たとえば、要求は、マシン102’の1つまたは複数のプロセッサを使って送ることができる。
図10A〜10Cは、ある実施形態による、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する方法のフローチャートのそれぞれの部分を示す。フローチャート1000は、データマネージャの観点から記載される。フローチャート1000は、たとえば、図6に示すコンピュータシステム600のデータマネージャ606によって実施することができる。例示目的のために、フローチャート1000は、図11に示すデータマネージャ606’を参照して記載されているが、このデータマネージャは、ある実施形態によるデータマネージャ606の例である。図11に示すように、データマネージャ606’は、受信モジュール1102、状態モジュール1104、判定モジュール1106、生成モジュール1108、転送モジュール1110、消去モジュール1112、および要求モジュール1114を含む。それ以上の構造および動作実施形態が、フローチャート1000に関する考察に基づいて当業者には明らかであろう。フローチャート1000について、以下の通り記載する。
図10Aに示すように、フローチャート1000の方法は、ステップ1002で始まる。ステップ1002で、第1のノードに関してのガベージコレクション操作の実行に先立って、第1のノードをオフライン状態に置くための要求が、分散キャッシュの第1のノードから受信される。ノードは、そのノードに含まれるデータモジュールの全インスタンスが二次状態にあるとき、オフライン状態にある。たとえば、データモジュールのこのようなインスタンスは、データモジュールに含まれるデータにアクセスすることを試みるアプリケーションにとってアクセス不可能とすることができる。ある実装例では、受信モジュール1102が、第1のノードから要求を受信する。
ステップ1004で、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの状態が、要求の受信に応答して、データマネージャの少なくとも1つのプロセッサを使って、一次状態から二次状態に変えられる。たとえば、データマネージャは、一次状態にある第1のノードに含まれるデータモジュールのどのインスタンスも、二次状態に変えることができる。別の例では、データマネージャは、一次状態にある、第1のノードに含まれる、選択された1つまたは複数のデータモジュール(複数可)のインスタンスを二次状態に変えることができる。ある実装例では、状態モジュール1104は、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの状態を一次状態から二次状態に変える。
第1のインスタンスの一次状態は、少なくとも1つのデータモジュールに関してのキャッシュ操作(複数可)が、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの所で開始され、またはそこに最初に向けられるものであることを示す。第1のインスタンスの二次状態は、少なくとも1つのデータモジュールに関してのキャッシュ操作(複数可)が、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの所で開始されないこと、またはそこに最初に向けられるものではないことを示す。
ステップ1006で、ガベージコレクション操作中に少なくとも1つのデータモジュールの可用性を維持するかどうか、判定が行われる。ある実装例では、判定モジュール1106が、少なくとも1つのデータモジュールの可用性を維持するかどうか判定する。少なくとも1つのデータモジュールの可用性が、ガベージコレクション操作中に維持されるべきでない場合、フローチャート1000は終わる。しかしながら、少なくとも1つのデータモジュールの可用性が維持されるべきである場合、フローはステップ1008に続く。
ステップ1008で、分散キャッシュの第2のノードが、少なくとも1つのデータモジュールの第2のインスタンスを含むかどうか判定が行われる。たとえば、第1のノード以外の、分散キャッシュのいずれかのノードが、ガベージコレクション操作によってロックされていない少なくとも1つのデータモジュールの1つまたは複数のインスタンスを含むかどうか判定が行われ得る。ある実装例では、判定モジュール1106が、少なくとも1つのデータモジュールの第2のインスタンスを第2のノードが含むかどうか判定する。第2のノードが、少なくとも1つのデータモジュールの第2のインスタンスを含む場合、フローはステップ1012に続く。しかしながら、第2のノードが少なくとも1つのデータモジュールの第2のインスタンスを含まない場合、フローはステップ1010に続く。
ステップ1010で、第2のノードにおいて、少なくとも1つのデータモジュールの第2のインスタンスが生成される。たとえば、第2のノードは、ガベージコレクション操作がそれに対して実施されていない分散キャッシュのノードでよい。ある実装例では、生成モジュール1108が、第2のノードにおいて少なくとも1つのデータモジュールの第2のインスタンスを生成する。
ステップ1012で、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスの状態が、二次状態から一次状態に変えられる。第2のインスタンスの一次状態は、少なくとも1つのデータモジュールに関してのキャッシュ操作(複数可)が、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスの所で開始され、またはそこに最初に向けられるものであることを示す。第2のインスタンスの二次状態は、少なくとも1つのデータモジュールに関してのキャッシュ操作(複数可)が、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスの所で開始されないこと、またはそこに最初に向けられるものではないことを示す。
たとえば、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスの状態を一次状態に変えることにより、データモジュールに含まれるデータが、ガベージコレクション操作中に利用可能になることが可能になり得る。ある実装例では、状態モジュール1104が、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスの状態を二次状態から一次状態に変える。ステップ1012が実施されると、フローはステップ1014に続くが、このステップは図10Bに示す。
ステップ1014で、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスに向けられる、分散キャッシュの第3のノード内でログ記録するための書込み要求が転送されるべきかどうかに関して、判定が行われる。たとえば、第3のノードに含まれる少なくとも1つのデータモジュールの第3のインスタンスが、書込み要求に関してデータモジュールに対して行われるべき全変更のログを維持することができる。ログは、たとえば、第2のインスタンスがアクセス不可能になった場合に、変更に関する情報を復元する目的で維持され得る。ある実装例では、判定モジュール1106が、第3のノードにログ記録するための書込み要求を転送するかどうか判定する。書込み要求が、第3のノードに転送されるべきでない場合、フローはステップ1018に続く。転送されるべきである場合、ステップ1016に続く。
ステップ1016で、書込み要求は、ログ記録のために第3のノードに転送される。ある実装例では、転送モジュール1110が、第3のノードに書込み要求を転送する。
ステップ1018で、第1のノードに関してガベージコレクション操作が完了したかどうかに関して、判定が行われる。たとえば、ガベージコレクション操作を実施するガベージコレクタ(たとえば、ガベージコレクタ604)が、第1のノードに関してのガベージコレクション操作の完了に応答して、第1のノードに関してガベージコレクション操作が完了したことを示すインジケータを第1のノードに与え得る。ある実装例では、判定モジュール1106が、ガベージコレクション操作が完了したかどうか判定する。ガベージコレクション操作が完了していない場合、フローはステップ1018に戻る。完了している場合、フローはステップ1020に続く。
ステップ1020で、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの状態が一次状態に戻されるべきかどうかに関して、判定が行われる。たとえば、判定は、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの状態を一次状態に戻させることを求める要求が受信されるかどうかに基づき得る。データマネージャと通信するように構成された、分散キャッシュの第1のノード、第2のノード、または別のノードが、このような要求を、第1のノードに関してガベージコレクション操作が完了すると与え得る。ある実装例では、判定モジュール1106が、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの状態が一次状態に戻されるべきかどうか判定する。第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの状態が、一次状態に戻されるべきでない場合、フローチャート1000は終わる。戻されるべきである場合、フローはステップ1022に続くが、このステップは図10Cに示す。
ステップ1022で、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの状態が、二次状態から一次状態に戻される。ある実装例では、状態モジュール1104が、第1のノードに含まれる少なくとも1つのデータモジュールの第1のインスタンスの状態を二次状態から一次状態に戻す。
ステップ1024で、第2のノード内の少なくとも1つのデータモジュールの第2のインスタンスが、ステップ1010で生成されたかどうかに関して、判定が行われる。たとえば、ステップ1010が完了すると、インジケータを、ステップ1010が実施されたことを示す値をもつようにセットすることができる。この例によると、ステップ1024での判定は、インジケータの値に基づき得る。ある実装例では、判定モジュール1106が、第2のノード内の少なくとも1つのデータモジュールの第2のインスタンスがステップ1010で生成されたかどうか判定する。少なくとも1つのデータモジュールの第2のインスタンスが、ステップ1010で第2のノード内で生成された場合、フローはステップ1028に続く。そうでない場合、フローはステップ1026に続く。
ステップ1026で、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスの状態が、一次状態から二次状態に戻される。ある実装例では、状態モジュール1104が、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスの状態を、一次状態から二次状態に戻す。ステップ1026が実施されると、フローチャート1000は終わる。
ステップ1028で、少なくとも1つのデータモジュールの第2のインスタンスが、第2のノードから消去される。ある実装例では、消去モジュール1112が、少なくとも1つのデータモジュールの第2のインスタンスを第2のノードから消去する。第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスは、必ずしも消去される必要はないことが理解されよう。たとえば、第2のノードに含まれる少なくとも1つのデータモジュールの第2のインスタンスの状態は、消去されるのではなく、二次状態に置かれ得る。この例によると、ステップ1022の完了の後、フローは、すべてのケースにおいてステップ1026に続くことになり、フローチャート1000は、その後終了することになる。
ステップ1030で、ガベージコレクション操作を第2のノードに関して実施させることを求める要求がデータマネージャにおいて受信されたかどうかに関して、判定が行われる。たとえば、要求は、第1のノード、第2のノード、またはデータマネージャと通信するように構成された別のノードから受信され得る。ある実装例では、判定モジュール1106が、ガベージコレクション操作を第2のノードに関して実施させることを求める要求がデータマネージャ606’において受信されたかどうか判定する。このような要求が受信されない場合、フローチャート1000は終わる。しかしながら、このような要求が受信された場合、フローはステップ1032に続く。
ステップ1032で、第2のノードに関してガベージコレクション操作の実施を要求する要求がガベージコレクタに送られる。たとえば、少なくとも1つのデータモジュールの第2のインスタンスが第2のノードから消去されるステップ1028の実施の後、第2のインスタンスは、依然として第2のノード上に存在し得るが、第2のインスタンスはもはや、どのアプリケーションによっても参照することができない。したがって、第2のノードに関してのガベージコレクション操作の実施は、第2のノードから第2のインスタンスを物理的に除去し得る。ある実装例では、要求モジュール1114が、第2のノードに関してのガベージコレクション操作の実施を要求する要求をガベージコレクタに送る。
いくつかの実施形態例では、フローチャート1000の1つまたは複数のステップ1002、1004、1006、1008、1010、1012、1014、1016、1018、1020、1022、1024、1026、1028、1030、および/または1032は、実施しなくてよい。さらに、ステップ1002、1004、1006、1008、1010、1012、1014、1016、1018、1020、1022、1024、1026、1028、1030、および/または1032に追加される、またはその代わりのステップを実施してよい。
データマネージャ606’は、受信モジュール1102、状態モジュール1104、判定モジュール1106、生成モジュール1108、転送モジュール1110、消去モジュール1112、および/または要求モジュール1114の1つまたは複数を含まなくてよいことが理解されよう。さらに、データマネージャ606’は、受信モジュール1102、状態モジュール1104、判定モジュール1106、生成モジュール1108、転送モジュール1110、消去モジュール1112、および/または要求モジュール1114に追加される、またはその代わりのモジュールを含み得る。
図12は、ある実施形態による、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する方法のフローチャート1200を示す。フローチャート1200は、データマネージャの観点から記載される。フローチャート1200は、たとえば、図6に示すコンピュータシステム600のデータマネージャ606によって実施することができる。例示目的のために、フローチャート1200は、図13に示すデータマネージャ606’’を参照して記載されているが、このデータマネージャは、ある実施形態によるデータマネージャ606の例である。図13に示すように、データマネージャ606’’は、受信モジュール1102’、判定モジュール1106’、および要求モジュール1114’を含む。それ以上の構造および動作実施形態が、フローチャート1200に関する考察に基づいて当業者には明らかであろう。フローチャート1200について、以下の通り記載する。
図12に示すように、フローチャート1200の方法は、ステップ1202で始まる。ステップ1202で、ノードに関してのガベージコレクション操作の実行に先立って、ノードをオフライン状態に置くための要求が、分散キャッシュのノードから受信される。ある実装例では、受信モジュール1102’が、ノードをオフライン状態に置くための要求をノードから受信する。
ステップ1204で、第2のノードからの要求の受信に応答して、ノードに含まれる少なくとも1つのデータモジュールの1つまたは複数のインスタンスを除く、少なくとも1つのデータモジュールのすべてのインスタンスが、ガベージコレクション操作によってロックされるという判定が行われる。ロックされるデータモジュールとは、ガベージコレクション操作がそれに対して実施されるデータモジュールである。たとえば、ステップ1204での判定は、分散キャッシュのガベージコレクタ(たとえば、ガベージコレクタ604)またはノード(複数可)(たとえば、ノード614A〜614Nのいずれか)から受信される、ガベージコレクション操作がそれに対して実施されているデータモジュール(たとえば、データモジュール616A〜616Nのいずれか)を示すインジケータ(複数可)に基づき得る。ある実装例では、判定モジュール1106’が、ノードに含まれる少なくとも1つのデータモジュールの1つまたは複数のインスタンスを除く、少なくとも1つのデータモジュールのすべてのインスタンスがガベージコレクション操作によってロックされると判定する。たとえば、データマネージャ606’’の1つまたは複数のプロセッサが、判定を行うのに使われ得る。
ステップ1206で、ノードに含まれる少なくとも1つのデータモジュールの1つまたは複数のインスタンスを除く、少なくとも1つのデータモジュールのすべてのインスタンスがガベージコレクション操作によってロックされるという判定に応答して、ガベージコレクション操作がノードに関して延期されるべきであるという要求が行われる。ある実装例では、要求モジュール1114’が、ガベージコレクション操作が第1のノードに関して延期されることを要求する。
図14は、ある実施形態による、ガベージコレクション操作中の分散キャッシュへのアクセスを管理する別の方法のフローチャート1400を示す。フローチャート1400は、データマネージャの観点から記載される。フローチャート1400は、たとえば、図6に示すコンピュータシステム600のデータマネージャ606によって実施することができる。例示目的のために、フローチャート1400は、図15に示すデータマネージャ606’’’を参照して記載されているが、このデータマネージャは、ある実施形態によるデータマネージャ606の例である。図15に示すように、データマネージャ606’’’は、受信モジュール1102’’、比較モジュール1502、および要求モジュール1114’’を含む。それ以上の構造および動作実施形態が、フローチャート1400に関する考察に基づいて当業者には明らであろう。フローチャート1400について、以下の通り記載する。
図14に示すように、フローチャート1400の方法は、ステップ1402で始まる。ステップ1402で、ノードに関してのガベージコレクション操作の実行に先立って、ノードをオフライン状態に置くための要求が、分散キャッシュのノードから受信される。ある実装例では、受信モジュール1102’’が、ノードをオフライン状態に置くための要求をノードから受信する。
ステップ1404で、ノードからの要求の受信に応答して、ノードの負荷が閾値と比較される。負荷は、指定された期間内にノードによって処理される要求の数、消費されつつあるノードの帯域幅の割合、および/または他の任意の適切な要因(複数可)に基づき得る。ある実装例では、比較モジュール1502が、ノードの負荷を閾値と比較する。
ステップ1406で、負荷が閾値を超えることに基づいて、ガベージコレクション操作がノードに関して延期されるべきという要求が行われる。いくつかの実施形態によると、比較的高い負荷は、ノードがかなりの量のデータに対して一次ノードとして働くことを示し得る。たとえば、ガベージコレクション操作をノードに関して実施することにより、ノードに含まれるデータの一次インスタンスをロックすることができる。この例によると、ガベージコレクション操作をノードに関して実施することにより、一次インスタンスがガベージコレクション操作によってロックされるのでデータをアクセス不可能にさせることになる。別の例では、ノードに含まれる一次インスタンスの状態を二次状態に変えることができ、別のノードに含まれるデータの別のインスタンス(または単一のノードに、もしくは複数のノードに渡って含まれるデータのそれぞれの部分の複数のインスタンス)を、一次状態に変えることができる。この例によると、ノードに含まれる一次インスタンスの状態を二次状態に、他のノード(複数可)に含まれる他のインスタンス(複数可)の状態を一次状態に変えるのに、かなりのリソースが必要となり得る。ある実装例では、要求モジュール1114’’が、ガベージコレクション操作がノードに関して延期されることを要求する。
図16は、実施形態が実装され得るコンピュータ例1600を示す。図1、6に示したマシン102A〜102N、図6に示したユーザシステム602A〜602M、ガベージコレクタ604、データマネージャ606、もしくはデータベース610のどの1つもしくは複数も、または図9、11、13、および15に示したものの1つもしくは複数のどのサブコンポーネントも、コンピュータ1600の1つまたは複数の特徴および/または代替特徴を含むコンピュータ1600を使って実装することができる。コンピュータ1600は、たとえば、従来のパーソナルコンピュータ、モバイルコンピュータ、またはワークステーションの形の汎用コンピューティングデバイスでもよく、コンピュータ1600は、特殊目的コンピューティングデバイスでもよい。本明細書に挙げるコンピュータ1600の記述は、説明のために行われ、限定的であることは意図していない。実施形態は、当業者に公知であるように、それ以外のタイプのコンピュータシステムでも実装することができる。
図16に示すように、コンピュータ1600は、処理ユニット1602と、システムメモリ1604と、システムメモリ1604を含む様々なシステムコンポーネントを処理ユニット1602に結合するバス1606とを含む。バス1606は、メモリバスまたはメモリコントローラ、周辺バス、グラフィック専用高速バス、および様々なバスアーキテクチャのいずれかを使うプロセッサまたはローカルバスを含む、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。システムメモリ1604は、ROM(Read Only Memory)1608およびRAM(Random Access Memory)1610を含む。基本入出力システム1612(BIOS)が、ROM1608に格納されている。
コンピュータ1600は、ハードディスクに読み書きするハードディスクドライブ1614、取外し可能磁気ディスク1618を読み取り、または書き込む磁気ディスクドライブ1616、およびCD ROM、DVD ROM、または他の光学媒体など、取外し可能光ディスク1622を読み取り、または書き込む光ディスクドライブ1620というドライブの1つまたは複数も有する。ハードディスクドライブ1614、磁気ディスクドライブ1616、および光ディスクドライブ1620は、それぞれ、ハードディスクドライブインターフェイス1624、磁気ディスクドライブインターフェイス1626、および光ドライブインターフェイス1628によってバス1606に接続される。ドライブおよびその関連コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびコンピュータの他のデータの不揮発性記憶を可能にする。ハードディスク、取外し可能磁気ディスクおよび取外し可能光ディスクについて記載されているが、たとえばフラッシュメモリカード、デジタルビデオディスク、RAM、ROMなど、他のタイプのコンピュータ可読媒体も、データを格納するのに使われ得る。
いくつかのプログラムモジュールを、ハードディスク、磁気ディスク、光ディスク、ROM、またはRAM上に格納することができる。こうしたプログラムは、オペレーティングシステム1630、1つまたは複数のアプリケーションプログラム1632、他のプログラムモジュール1634、およびプログラムデータ1636を含む。アプリケーションプログラム1632またはプログラムモジュール1634は、本明細書に記載されるように、たとえば、ノード104A〜104Z、名前付きキャッシュ106A〜106B、領域108A〜108Y、キャッシュ項目110A〜110P、キャッシュクライアント202A〜202B、ルーティングレイヤ204A〜204C、Put操作206、Get操作208、一次データモジュール210A〜210C、二次データモジュール302A〜302C、複製されたデータモジュール402A〜402C、ローカルキャッシュ502A〜502B、ルーティングレイヤ504A〜504B、ノード614A〜614N、データモジュール(複数可)616A〜616N、アプリケーション(複数可)618A〜618N、受信モジュール902、要求モジュール904、受信モジュール1102、状態モジュール1104、判定モジュール1106、生成モジュール1108、転送モジュール1110、消去モジュール1112、要求モジュール1114、比較モジュール1502、フローチャート700(フローチャート700のどのステップも含む)、フローチャート800(フローチャート800のどのステップも含む)、フローチャート1000(フローチャート1000のどのステップも含む)、フローチャート1200(フローチャート1200のどのステップも含む)、および/またはフローチャート1400(フローチャート1400のどのステップも含む)を実装するコンピュータプログラム論理を含み得る。
ユーザは、キーボード1638およびポインティングデバイス1640などの入力デバイスを通してコンピュータ1600にコマンドおよび情報を入れることができる。他の入力デバイス(図示せず)は、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含み得る。こうしたおよび他の入力デバイスはしばしば、バス1606に結合されたシリアルポートインターフェイス1642を介して処理ユニット1602に接続されるが、パラレルポート、ゲームポート、またはUSB(Universal Serial Bus)など、他のインターフェイスによって接続することもできる。
モニタ1644または他のタイプの表示デバイスも、ビデオアダプタ1646などのインターフェイスを介してバス1606に接続される。モニタに加え、コンピュータ1600は、スピーカおよびプリンタなど、他の周辺出力デバイス(図示せず)を含み得る。
コンピュータ1600は、ネットワークインターフェイスもしくはアダプタ1650、モデム1652、またはネットワークを越えて通信を確立する他の手段を介してネットワーク1648(たとえば、インターネット)に接続される。モデム1652は、内部にあっても外部にあってもよく、シリアルポートインターフェイス1642を介してバス1606に接続される。
本明細書で使用する「コンピュータプログラム媒体」および「コンピュータ可読媒体」という用語は、概してハードディスクドライブ1614、取外し可能磁気ディスク1618、取外し可能光ディスク1622に関連づけられたハードディスクなどの媒体、ならびに、たとえばフラッシュメモリカード、デジタルビデオディスク、RAM、ROMなど、他の媒体を指すのに使われる。
上述したように、コンピュータプログラムおよびモジュール(アプリケーションプログラム1632および他のプログラムモジュール1634を含む)は、ハードディスク、磁気ディスク、光ディスク、ROM、またはRAM上に格納することができる。このようなコンピュータプログラムは、ネットワークインターフェイス1650またはシリアルポートインターフェイス1642を介して受信することもできる。このようなコンピュータプログラムは、アプリケーションによって実行され、またはロードされると、本明細書で論じた実施形態の特徴をコンピュータ1600が実装することを可能にする。したがって、このようなコンピュータプログラムは、コンピュータ1600のコントローラを表す。
実施形態は、どのコンピュータ使用可能媒体上にも格納されたソフトウェア(たとえば、コンピュータ可読命令)を備えるコンピュータプログラム製品も対象とする。このようなソフトウェアは、1つまたは複数のデータ処理デバイスにおいて実行されると、データ処理デバイス(複数可)を、本明細書に記載されたように動作させる。実施形態は、現時点で公知であり、または将来公知になる、どのコンピュータ使用可能またはコンピュータ可読媒体も利用し得る。コンピュータ可読媒体の例は、RAM、ハードドライブ、フロッピーディスク、CD ROM、DVD ROM、zipディスク、テープ、磁気記憶デバイス、光学記憶デバイス、MEMSベースの記憶デバイス、ナノテクノロジーベースの記憶デバイスなどの記憶デバイスを含むが、それに限定されない。
IV.結論
様々な実施形態を上述したが、こうした実施形態は、例示の目的でのみ提示されるのであって、限定ではないことを理解されたい。形および細部における様々な変更が、本発明の精神および範囲から逸脱することなく行われ得ることが当業者には明らかであろう。したがって、本発明の範囲は、上述の例示的な実施形態のいずれによっても限定されるべきではなく、添付の請求項およびその等価物によってのみ定義されるべきである。
様々な実施形態を上述したが、こうした実施形態は、例示の目的でのみ提示されるのであって、限定ではないことを理解されたい。形および細部における様々な変更が、本発明の精神および範囲から逸脱することなく行われ得ることが当業者には明らかであろう。したがって、本発明の範囲は、上述の例示的な実施形態のいずれによっても限定されるべきではなく、添付の請求項およびその等価物によってのみ定義されるべきである。
Claims (15)
- 分散キャッシュ(100)の第1のノード(614A〜614N)から、前記第1のノード(614A〜614N)に関してのガベージコレクション操作の実行に先立って、前記第1のノード(614A〜614N)をオフライン状態に置くための要求を受信するステップと、
前記要求の受信に応答して、少なくとも1つのプロセッサ(1602)を使って、前記第1のノード(614A〜614N)に含まれる少なくとも1つのデータモジュール(616A〜616N)の第1のインスタンスの状態を一次状態から二次状態に変えるステップであって、前記第1のインスタンスの前記一次状態は、前記少なくとも1つのデータモジュール(616A〜616N)に関してのキャッシュ操作が、前記少なくとも1つのデータモジュール(616A〜616N)の前記第1のインスタンスの所で開始され、またはそこに最初に向けられるものであることを示し、前記第1のインスタンスの前記二次状態は、前記少なくとも1つのデータモジュール(616A〜616N)に関しての前記キャッシュ操作が、前記第1のインスタンスの所で開始されないこと、またはそこに最初に向けられるものではないことを示す、ステップと
を含むことを特徴とする方法。 - 前記要求の受信に応答して、前記分散キャッシュ(100)の第2のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の第2のインスタンスの状態を前記二次状態から前記一次状態に変えるステップであって、前記第2のインスタンスの前記一次状態は、前記少なくとも1つのデータモジュール(616A〜616N)に関してのキャッシュ操作が、前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスの所で開始され、またはそこに最初に向けられるものであることを示し、前記第2のインスタンスの前記二次状態は、前記少なくとも1つのデータモジュール(616A〜616N)に関しての前記キャッシュ操作が、前記第2のインスタンスの所で開始されないこと、またはそこに最初に向けられるものではないことを示す、ステップをさらに含むことを特徴とする請求項1に記載の方法。
- 前記第2のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスに向けられる、前記分散キャッシュ(100)の第3のノード(614A〜614N)上でログ記録するための書込み要求を転送するステップをさらに含むことを特徴とする請求項2に記載の方法。
- 前記ガベージコレクション操作の完了に応答して、前記第1のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の前記第1のインスタンスの前記状態を、前記二次状態から前記一次状態に戻すステップと、
前記ガベージコレクション操作の完了に応答して、前記第2のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスの前記状態を、前記一次状態から前記二次状態に戻すステップと
をさらに含むことを特徴とする請求項2に記載の方法。 - 前記要求の受信に応答して、前記第2のノード(614A〜614N)内で前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスを生成するステップをさらに含み、
前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスの前記状態を変える前記ステップは、前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスを生成する前記ステップに応答して実施されることを特徴とする請求項2に記載の方法。 - 前記ガベージコレクション操作の完了に応答して、前記第1のノード(614A〜614N)の前記少なくとも1つのデータモジュール(616A〜616N)の前記第1のインスタンスの前記状態を、前記二次状態から前記一次状態に戻すステップと、
前記ガベージコレクション操作の完了に応答して、前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスを、前記第2のノード(614A〜614N)から消去するステップと
をさらに含むことを特徴とする請求項5に記載の方法。 - 前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスを、前記第2のノード(614A〜614N)から消去する前記ステップに応答して、前記第2のノード(614A〜614N)に関してガベージコレクション操作の実施を要求するステップをさらに含むことを特徴とする請求項6に記載の方法。
- 第2のノード(614A〜614N)に関しての前記ガベージコレクション操作の実行に先立って、前記第2のノード(614A〜614N)をオフライン状態に置くための要求を前記分散キャッシュ(100)の前記第2のノード(614A〜614N)から受信するステップと、
前記第2のノード(614A〜614N)からの前記要求の受信に応答して、前記第2のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の1つまたは複数の第2のインスタンスを除く、前記少なくとも1つのデータモジュール(616A〜616N)のすべてのインスタンスが、前記ガベージコレクション操作によってロックされると判定するステップと、
前記第2のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の前記1つまたは複数の第2のインスタンスを除く、前記少なくとも1つのデータモジュール(616A〜616N)のすべてのインスタンスが、前記ガベージコレクション操作によってロックされるという判定に応答して、前記ガベージコレクション操作が前記第2のノード(614A〜614N)に関して延期されることを要求するステップと
をさらに含むことを特徴とする請求項1に記載の方法。 - 第2のノード(614A〜614N)に関しての前記ガベージコレクション操作の実行に先立って、前記第2のノード(614A〜614N)をオフライン状態に置くための要求を前記分散キャッシュ(100)の前記第2のノード(614A〜614N)から受信するステップと、
前記第2のノード(614A〜614N)からの前記要求の受信に応答して、前記第2のノード(614A〜614N)の負荷を閾値と比較するステップと、
前記負荷が前記閾値を超えることに基づいて、前記ガベージコレクション操作が前記第2のノード(614A〜614N)に関して延期されることを要求するステップと
をさらに含むことを特徴とする請求項1に記載の方法。 - 前記少なくとも1つのデータモジュール(616A〜616N)に関しての前記キャッシュ操作は、前記少なくとも1つのデータモジュール(616A〜616N)に関しての書込み要求であることを特徴とする請求項1に記載の方法。
- 制御論理が格納されたコンピュータ可読媒体を備えるコンピュータプログラム製品であって、前記制御論理は、
請求項1から10のいずれかに記載の前記方法ステップを実施するようになされたコンピュータ可読プログラム手段を備えることを特徴とするコンピュータプログラム製品。 - 分散キャッシュ(100)の第1のノード(614A〜614N)から、前記第1のノード(614A〜614N)に関してのガベージコレクション操作の実行に先立って、前記第1のノード(614A〜614N)をオフライン状態に置くための要求を受信するように構成された受信モジュール(1102)と、
前記要求に応答して、前記第1のノード(614A〜614N)に含まれる少なくとも1つのデータモジュール(616A〜616N)の第1のインスタンスの状態を一次状態から二次状態に変えるように構成された状態モジュール(1104)であって、前記第1のインスタンスの前記一次状態は、前記少なくとも1つのデータモジュール(616A〜616N)に関してのキャッシュ操作が、前記少なくとも1つのデータモジュール(616A〜616N)の前記第1のインスタンスの所で開始され、またはそこに最初に向けられるものであることを示し、前記第1のインスタンスの前記二次状態は、前記少なくとも1つのデータモジュール(616A〜616N)に関しての前記キャッシュ操作が、前記第1のインスタンスの所で開始されないこと、またはそこに最初に向けられるものではないことを示す、状態モジュール(1104)と
を備えることを特徴とするデータマネージャ。 - 前記状態モジュール(1104)は、前記要求の受信に応答して、前記分散キャッシュ(100)の第2のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の第2のインスタンスの状態を前記二次状態から前記一次状態に変えるようにさらに構成され、前記第2のインスタンスの前記一次状態は、前記少なくとも1つのデータモジュール(616A〜616N)に関してのキャッシュ操作が、前記少なくとも1つのデータモジュール(616A〜616N)の前記第2のインスタンスの所で開始され、またはそこに最初に向けられるものであることを示し、前記第2のインスタンスの前記二次状態は、前記少なくとも1つのデータモジュール(616A〜616N)に関しての前記キャッシュ操作が、前記第2のインスタンスの所で開始されないこと、またはそこに最初に向けられるものではないことを示すことを特徴とする請求項12に記載のデータマネージャ。
- 前記受信モジュール(1102)は、第2のノード(614A〜614N)に関しての前記ガベージコレクション操作の実行に先立って、前記第2のノード(614A〜614N)をオフライン状態に置くための要求を前記分散キャッシュ(100)の前記第2のノード(614A〜614N)から受信するようにさらに構成され、
前記データマネージャは、
前記第2のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の1つまたは複数の第2のインスタンスを除く、前記少なくとも1つのデータモジュール(616A〜616N)のすべてのインスタンスが、前記ガベージコレクション操作によってロックされると判定するように構成された判定モジュール(1106)と、
前記第2のノード(614A〜614N)に含まれる前記少なくとも1つのデータモジュール(616A〜616N)の前記1つまたは複数の第2のインスタンスを除く、前記少なくとも1つのデータモジュール(616A〜616N)のすべてのインスタンスが、前記ガベージコレクション操作によってロックされるという判定に応答して、前記ガベージコレクション操作が前記第2のノード(614A〜614N)に関して延期されることを要求するように構成された要求モジュール(1114)と
をさらに備えることを特徴とする請求項12に記載のデータマネージャ。 - 前記受信モジュール(1102)は、第2のノード(614A〜614N)に関しての前記ガベージコレクション操作の実行に先立って、前記第2のノード(614A〜614N)をオフライン状態に置くための要求を前記分散キャッシュ(100)の前記第2のノード(614A〜614N)から受信するようにさらに構成され、
前記データマネージャは、
前記第2のノード(614A〜614N)からの前記要求の受信に応答して、前記第2のノード(614A〜614N)の負荷を閾値と比較するように構成された比較モジュール(1502)と、
前記負荷が前記閾値を超えることに基づいて、前記ガベージコレクション操作が前記第2のノード(614A〜614N)に関して延期されることを要求するように構成された要求モジュール(1114)と
をさらに備えることを特徴とする請求項12に記載のデータマネージャ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/484,185 | 2009-06-13 | ||
US12/484,185 US20100318584A1 (en) | 2009-06-13 | 2009-06-13 | Distributed Cache Availability During Garbage Collection |
PCT/US2010/038222 WO2010144739A2 (en) | 2009-06-13 | 2010-06-10 | Distributed cache availability during garbage collection |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012530294A true JP2012530294A (ja) | 2012-11-29 |
Family
ID=43307285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012515159A Withdrawn JP2012530294A (ja) | 2009-06-13 | 2010-06-10 | ガベージコレクション中の分散キャッシュの可用性 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100318584A1 (ja) |
JP (1) | JP2012530294A (ja) |
CN (1) | CN102460411A (ja) |
WO (1) | WO2010144739A2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9380127B2 (en) | 2011-05-18 | 2016-06-28 | Alibaba Group Holding Limited | Distributed caching and cache analysis |
US8458702B1 (en) * | 2012-02-28 | 2013-06-04 | Google Inc. | Method for implementing user space up-calls on java virtual machine before/after garbage collection |
US9385915B2 (en) * | 2012-11-30 | 2016-07-05 | Netapp, Inc. | Dynamic caching technique for adaptively controlling data block copies in a distributed data processing system |
US9684607B2 (en) | 2015-02-25 | 2017-06-20 | Microsoft Technology Licensing, Llc | Automatic recovery of application cache warmth |
US10664495B2 (en) * | 2014-09-25 | 2020-05-26 | Oracle International Corporation | System and method for supporting data grid snapshot and federation |
US9684596B2 (en) * | 2015-02-25 | 2017-06-20 | Microsoft Technology Licensing, Llc | Application cache replication to secondary application(s) |
US20170123700A1 (en) | 2015-11-03 | 2017-05-04 | Samsung Electronics Co., Ltd. | Io redirection methods with cost estimation |
US10254998B2 (en) * | 2015-11-03 | 2019-04-09 | Samsung Electronics Co., Ltd. | Coordinated garbage collection of flash devices in a distributed storage system |
US11068390B2 (en) * | 2019-02-01 | 2021-07-20 | EMC IP Holding Company LLC | Scalable garbage collection for deduplicated storage |
US10802965B2 (en) | 2019-02-05 | 2020-10-13 | Microsoft Technology Licensing, Llc | Reducing synchronization reliance in garbage collection marking |
US11068393B2 (en) | 2019-10-17 | 2021-07-20 | Microsoft Technology Licensing, Llc | Enhanced concurrency garbage collection stack scanning |
US11422932B2 (en) | 2019-12-20 | 2022-08-23 | Microsoft Technology Licensing, Llc | Integrated reference and secondary marking |
US11392427B2 (en) | 2020-01-06 | 2022-07-19 | Microsoft Technology Licensing, Llc | Lock-free reading of unitary value sets |
US11556379B2 (en) * | 2021-01-13 | 2023-01-17 | EMC IP Holding Company LLC | Protect cloud objects from attacks |
US11907117B2 (en) | 2022-06-08 | 2024-02-20 | Dell Products L.P. | Efficient method to dynamically select a protection duration for retention locking deduplicated objects |
US11954023B2 (en) | 2022-07-20 | 2024-04-09 | Microsoft Technology Licensing, Llc | Garbage collection prefetching state machine |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5960087A (en) * | 1996-07-01 | 1999-09-28 | Sun Microsystems, Inc. | Distributed garbage collection system and method |
US6629113B1 (en) * | 1999-06-30 | 2003-09-30 | International Business Machines Corporation | Method and system for dynamically adjustable and configurable garbage collector |
US6836820B1 (en) * | 2002-02-25 | 2004-12-28 | Network Appliance, Inc. | Flexible disabling of disk sets |
US20070067373A1 (en) * | 2003-11-03 | 2007-03-22 | Steven Higgins | Methods and apparatuses to provide mobile applications |
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7424499B2 (en) * | 2005-01-21 | 2008-09-09 | Microsoft Corporation | Lazy timestamping in transaction time database |
US8112525B2 (en) * | 2006-05-16 | 2012-02-07 | Oracle International Corporation | Engine near cache for reducing latency in a telecommunications environment |
US20080086567A1 (en) * | 2006-10-10 | 2008-04-10 | Bea Systems, Inc. | SIP server architecture for improving latency in message processing |
US8001539B2 (en) * | 2007-02-28 | 2011-08-16 | Jds Uniphase Corporation | Historical data management |
US7900011B2 (en) * | 2007-07-19 | 2011-03-01 | International Business Machines Corporation | Apparatus, system, and method for improving system performance in a large memory heap environment |
US8868623B2 (en) * | 2007-10-30 | 2014-10-21 | International Business Machines Corporation | Enhanced garbage collection in a multi-node environment |
EP2241977B1 (en) * | 2009-04-17 | 2015-05-27 | Accenture Global Services Limited | Exchangeable application components |
-
2009
- 2009-06-13 US US12/484,185 patent/US20100318584A1/en not_active Abandoned
-
2010
- 2010-06-10 JP JP2012515159A patent/JP2012530294A/ja not_active Withdrawn
- 2010-06-10 CN CN2010800271041A patent/CN102460411A/zh active Pending
- 2010-06-10 WO PCT/US2010/038222 patent/WO2010144739A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20100318584A1 (en) | 2010-12-16 |
WO2010144739A3 (en) | 2011-03-03 |
CN102460411A (zh) | 2012-05-16 |
WO2010144739A2 (en) | 2010-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012530294A (ja) | ガベージコレクション中の分散キャッシュの可用性 | |
US11099747B2 (en) | Hierarchical scale unit values for storing instances of data | |
US11153380B2 (en) | Continuous backup of data in a distributed data store | |
JP5006348B2 (ja) | 応答出力キャッシュに対するマルチキャッシュ協調 | |
US8176256B2 (en) | Cache regions | |
US10789217B2 (en) | Hierarchical namespace with strong consistency and horizontal scalability | |
US7120651B2 (en) | Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping | |
US11561930B2 (en) | Independent evictions from datastore accelerator fleet nodes | |
JP5007350B2 (ja) | ハードウェアベースのファイルシステムのための装置および方法 | |
US8495131B2 (en) | Method, system, and program for managing locks enabling access to a shared resource | |
CA2747786C (en) | Asynchronous distributed garbage collection for replicated storage clusters | |
JP5411250B2 (ja) | 冗長データ記憶システムへの指示に従ってのデータ配置 | |
US9251003B1 (en) | Database cache survivability across database failures | |
CN112236753A (zh) | 使用基于索引节点编号的依赖图更快地重放元数据和数据操作 | |
JP2004326162A (ja) | ネットワークシステム、サーバ、データ処理方法及びプログラム | |
CN105122241A (zh) | 具有数据库引擎和独立分布式存储服务的数据库系统 | |
JP2004511840A (ja) | 他のノードのキャッシュに基づくあるノードのキャッシュ内のデータの置換管理 | |
JP2005504369A (ja) | マルチノード環境の中でジャーナル処理を実現するためのシステムおよび方法 | |
US10885023B1 (en) | Asynchronous processing for synchronous requests in a database | |
JP2018520420A (ja) | ハイブリッドオブジェクトストレージデバイスのためのキャッシュアーキテクチャおよびアルゴリズム | |
CN107992270B (zh) | 一种多控存储系统全局共享缓存的方法及装置 | |
CN104158863A (zh) | 基于事务级别全程高速缓冲的云存储机制 | |
US20080028147A1 (en) | Affecting a caching algorithm used by a cache of a storage system | |
US10223184B1 (en) | Individual write quorums for a log-structured distributed storage system | |
US10642745B2 (en) | Key invalidation in cache systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130903 |