キャッシュはビジネスレイヤーまたはデータレイヤーの単純なLAMPスタックの一部ですか?
3 に答える
ビジネス、データ、またはデータを含み、データを処理するその他のレイヤーのすべてのデータに適用される可能性があるのは、横断的関心事です。
memcached は単純なLAMP スタックの一部ではありません。基本的な LAMP アプリは、データベースからデータを直接取得し、それをビューにテンプレート化します。単純なアプリケーション (および多くの複雑なアプリケーションでさえ) には、それ以上は必要ありません。
アプリケーションに memcached を追加するのは、計算が遅すぎてすべてをオンザフライで実行できないデータがあるためです。確かに memcache はデータ レイヤーにあると見なされますが、memcache に依存している場合は、データベース サーバーの一貫性が失われます。つまり、通常、データがキャッシュされる期間に基づいて、アプリケーション固有のルールをいくつか含める必要があります。アプリのビジネス ロジック。確かに、それはビジネス層に影響を与えます。また、キャッシュしているものが事前に入力されたビュー (HTML など) である場合は、プレゼンテーション層にも触れています。
この広範で簡単にカプセル化できない性質が、本当に必要になるまで memcache をアプリケーションに導入すべきではない理由です。それがパフォーマンスに必要な基盤であると思い込まないでください。データベースには、一貫性をあきらめたり、キャッシュの有効期限の複雑さを追加したりすることなく活用できるテーブルキャッシュとクエリキャッシュもあることに注意してください。
Memcached は、データベースと Web サーバーの間に位置します。これはキャッシュですが、さらに重要なのは明示的なキャッシュです。そのため、物事はそれ自体ではうまくいきません。そこから「置き」、「得る」必要があります。最大の利点は、データベースよりも 10 倍近く高速であることです。また、memcached からデータを取得する場合は、SQL 呼び出しを行う必要がないため、データベースでより重要なことを実行するサイクルを節約できます。
したがって、本のカタログ Web サイトは、80% が読み取り、20% が書き込みの理想的な候補です。詳しくは<こちら>。