DVAAWSのサービスを使用した開発
開発者が DynamoDB テーブルへの読み取り負荷を軽減するために ElastiCache for Redis を導入しようとしています。アプリケーションの特性は以下の通りです。
・読み取りが書き込みの 10 倍以上多い
・データの鮮度よりも読み取りのレスポンス速度を優先する
・アクセス頻度が低いデータも一定数存在する
このユースケースに最も適したキャッシュ戦略はどれですか?
Aライトスルー (Write-Through) — データ書き込み時に常にキャッシュを更新し、キャッシュミスが発生しないようにする
すべての書き込み時にキャッシュを同時更新するため常に最新状態を保てる一方、実際にはアクセスされないデータもキャッシュに蓄積されてメモリが無駄になるリスクがあり、アクセス頻度に偏りがあるこのユースケースには不向きです。
Bレイジーローディング (Lazy Loading / Cache-Aside) — キャッシュミス時のみ DB からデータを取得してキャッシュに保存する
✓ 正解
キャッシュミス時のみDBからデータを取得してキャッシュに格納するため、実際にアクセスされるデータだけがキャッシュされます。読み取り比率が高くアクセス頻度の偏りがあるこのユースケースに最もメモリ効率よく対応できます。
Cライトビハインド (Write-Behind) — 書き込みをキャッシュに行い、非同期でバックグラウンドで DB に反映させる
書き込みをキャッシュに先行させDBへ非同期で反映する書き込み最適化の戦略であり、読み取りが書き込みの10倍以上多いこのユースケースにおける読み取り負荷の軽減という目的には直接寄与しません。
Dリードスルー (Read-Through) — キャッシュライブラリがキャッシュミス時に自動的に DB から取得してクライアントに返す
キャッシュライブラリがキャッシュミス時に自動でDBからデータを取得する方式ですが、アクセス頻度の低いデータもキャッシュしてしまう可能性があり、メモリ効率の面ではレイジーローディングに劣ります。
解説
レイジーローディング(キャッシュアサイドパターン)は、実際にアクセスされたデータのみをキャッシュするため、メモリ効率が高いです。アクセス頻度の低いデータはキャッシュされないため無駄なメモリ消費を避けられます。初回アクセス時はキャッシュミスが発生しますが、以降は高速なキャッシュから提供されます。
選択肢Aのライトスルー (Write-Through) は、すべての書き込みでキャッシュを更新するため、アクセスされないデータもキャッシュに蓄積されメモリが無駄になる可能性があります。
選択肢Cのライトビハインド (Write-Behind) は、書き込みをキャッシュに先行して行い非同期でDBへ反映する書き込み最適化戦略であり、読み取り負荷の軽減には直接寄与しないためこのユースケースには不適切です。
選択肢Dのリードスルー (Read-Through) は、キャッシュライブラリがキャッシュミス時に自動でDBからデータを取得する方式ですが、アクセス頻度の低いデータもキャッシュしてしまう可能性があり、メモリ効率の面でレイジーローディングに劣ります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →