MongoDB と Tornado を使用しています。ただし、MongoDB はキャッシングを行わないという投稿もあります。
誰が言ったかはわかりませんが、MongoDB にはクエリをキャッシュする方法があります。実際、メモリ管理自体を行わないため、OS の LRU を使用してキャッシュします。
OS が常にページアウトしたりスワップしたりする必要がなく、作業セットが LRU に収まる限り、ほとんどの場合、このクエリをメモリから読み取る必要があります。はい、MongoDB はキャッシュできますが、技術的にはできません。OSが行います。
実際、これらのクエリの 99 は、コンピューターの能力の浪費です。
この種の問題を解決するためのキャッシング メカニズムは、MongoDB によるものであろうと SQL によるものであろうと、ほとんどの技術者で同じです。もちろん、これは問題がある場合にのみ重要です。私に尋ねると、おそらくマイクロ最適化です。Facebook、Google、または Youtube のようなトラフィックが発生しない限り。
キャッシングの問題は、事前に集約された MongoDB/Memcache/Redis などでクエリをキャッシングすることから、HTML やその他の Web リソースをキャッシングして、サーバー側での作業をできるだけ少なくすることまで、大きな問題になります。
あなたのシナリオは、私が個人的に言ったように、無駄なコンピューター パワーについて間違った考えをしているように聞こえます。このクエリを別のコレクション/技術にキャッシュしたとしても、その技術から結果を取得するために、気にしない場合と同じ量の電力とリソースを使用することになるでしょう。ただし、その前提は、適切なインデックス、スキーマ、セットアップなどを持っていることに帰着します。
優れたスキーマ設計とインデックス作成に関するリンクを読むことをお勧めします。
Tornado で毎回パーソナライズされたページをレンダリングしたいので、Nginx のようなもので静的なキャッシュ HTML を作成することはお勧めしません。
ええ、クエリのキャッシュについて心配しようとすると、特に離陸したくない場合は、時期尚早に最適化されていると思います。毎回サーバーの負荷の 90% になるでしょう。ページ自体をロードします。
スキーマとインデックスに焦点を当て、本当に必要な場合はキャッシュについて心配します。