5.2.2. パッシベーションが無効になったキャッシュローダー動作と有効化
パッシベーションが無効の場合、要素の変更、追加、または削除のたびに、キャッシュローダーを介してその変更がバックエンドストアで永続化されます。エビクションとキャッシュの読み込みの間に直接関係はありません。エビクションを使用しない場合、永続ストアの内容は基本的にメモリー内の内容のコピーになります。エビクションを実行する場合、永続的ストアには基本的にメモリー内の内容のスーパーセットになります(つまり、メモリーからエビクトされたエントリーが含まれます)。パッシベーションが有効になっていて、共有されていないストアの場合には、エビクションとキャッシュローダーの間に直接関係があります。キャッシュローダーを介して永続ストアへの書き込みは、エビクションプロセスの一部としてのみ実行されます。アプリケーションがメモリーに読み取られると、データは永続ストアから削除されます。この場合、メモリー内の内容と永続ストアは合計情報セットの 2 つのサブセットであり、サブセット間で交差はありません。共有ストアでは、以前にパッシベーションされたエントリーはストアに存在しますが、メモリーで上書きされた場合は古い値がある可能性があります。
以下の例は、6 ステッププロセスの各ステップの後に RAM と永続ストアのステータスを示す簡単な例です。
| 操作 | パッシベーションオフ | パッシベーション、共有オフ | パッシベーション、共有オン |
|---|---|---|---|
| keyOne を挿入 |
memory: keyOne |
memory: keyOne |
memory: keyOne |
| keyTwo の挿入 |
memory: keyOne, keyTwo |
memory: keyOne, keyTwo |
memory: keyOne, keyTwo |
| エビクションスレッドが実行され、keyOne のエビクト |
memory: keyTwo |
memory: keyTwo |
memory: keyTwo |
| keyOne の読み取り |
memory: keyOne, keyTwo |
memory: keyOne, keyTwo |
memory: keyOne, keyTwo |
| エビクションスレッドが実行され、keyTwo のエビクト |
memory: keyOne |
memory: keyOne |
memory: keyOne |
| keyTwo の削除 |
memory: keyOne |
memory: keyOne |
memory: keyOne |