MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mise en cache des résultats de requête répétitifs dans MongoDB

Je ne sais pas qui a dit cela, mais MongoDB a un moyen de mettre en cache les requêtes, en fait il utilise le LRU du système d'exploitation pour mettre en cache car il ne gère pas lui-même la mémoire.

Tant que votre ensemble de travail s'intègre dans le LRU sans que le système d'exploitation n'ait à le paginer ou à l'échanger constamment, vous devriez lire cette requête à partir de la mémoire la plupart du temps. Donc, oui, MongoDB peut mettre en cache mais techniquement ce n'est pas le cas ; le système d'exploitation le fait.

Les mécanismes de mise en cache pour résoudre ce type de problèmes sont les mêmes pour la plupart des technologies, que ce soit par MongoDB ou SQL. Bien sûr, cela n'a d'importance que si c'est un problème, vous êtes probablement en train de micro-optimiser si vous me demandez ; sauf si vous obtenez un trafic de type Facebook ou Google ou Youtube.

Le sujet de la mise en cache aborde un vaste sujet qui va de la mise en cache des requêtes dans MongoDB/Memcache/Redis pré-agrégés, etc. à la mise en cache du HTML et d'autres ressources Web pour faire le moins de travail possible sur le serveur.

Votre scénario, personnellement, comme je l'ai dit, donne l'impression que vous pensez mal à la puissance informatique gaspillée. Même si vous deviez mettre en cache cette requête dans une autre collection/technologie, vous utiliseriez probablement la même quantité de puissance et de ressources pour récupérer le résultat de cette technologie que si vous ne vous en souciez pas. Cependant, cette hypothèse revient à avoir les bons index, schéma, configuration, etc.

Je vous recommande de lire quelques liens sur la bonne conception de schéma et la création d'index :

Oui, je pense qu'en essayant de vous soucier de la mise en cache des requêtes, vous optimisez prématurément, surtout si vous ne voulez pas décoller, ce qui représenterait 90 % de la charge sur votre serveur à chaque fois ; chargement de la page elle-même.

Je me concentrerais sur votre schéma et vos index, puis je m'occuperais de la mise en cache si vous en avez vraiment besoin.