sql >> データベース >  >> NoSQL >> MongoDB

繰り返しクエリの結果をMongoDBでキャッシュする

    誰が言ったかはわかりませんが、MongoDBにはクエリをキャッシュする方法があります。実際、MongoDBはメモリ管理自体を行わないため、OSのLRUを使用してキャッシュします。

    ワーキングセットがLRUに適合し、OSがページアウトしたり、常にスワップしたりする必要がない限り、ほとんどの場合、このクエリをメモリから読み取る必要があります。つまり、はい、MongoDBはキャッシュできますが、技術的にはキャッシュできません。 OSはそうします。

    この種の問題を解決するためのキャッシングメカニズムは、MongoDBでもSQLでも、ほとんどの技術で同じです。もちろん、これは問題がある場合にのみ問題になります。私に尋ねれば、おそらくマイクロ最適化されています。 Facebook、Google、またはYoutubeタイプのトラフィックを取得しない限り。

    キャッシングサブジェクトは、事前に集約されたMongoDB / Memcache / Redisなどでのキャッシングクエリから、サーバー側での作業をできるだけ少なくするためのHTMLやその他のWebリソースのキャッシングに至るまでの巨大なサブジェクトになります。

    私が言ったように、あなたのシナリオは、無駄なコンピュータの電源について間違って考えているように聞こえます。このクエリを別のコレクション/技術にキャッシュする場合でも、気にしない場合と同じ量の電力とリソースを使用して、その技術から結果を取得する可能性があります。ただし、その前提は、適切なインデックス、スキーマ、セットアップなどを持っているかどうかにかかっています。

    優れたスキーマ設計とインデックス作成に関するリンクを読むことをお勧めします:

    ええ、クエリのキャッシュについて心配することで、時期尚早に最適化されていると思います。特に、離陸したくない場合は、毎回サーバーの負荷の90%になります。ページ自体を読み込んでいます。

    スキーマとインデックスに焦点を当て、本当に必要な場合はキャッシュについて心配します。



    1. MongoDB:スケジューラー(cronjob)をエミュレートするためにChange StreamでTTLイベントをキャプチャすることは可能ですか?

    2. MongoDB単一ドキュメントのサイズ制限は16MBです

    3. Mongolabnodejsトポロジが破壊されました

    4. マングースの多対多の参照を削除する