MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Zwischenspeichern von sich wiederholenden Abfrageergebnissen in MongoDB

Ich weiß nicht, wer das gesagt hat, aber MongoDB hat eine Möglichkeit, Abfragen zwischenzuspeichern, tatsächlich verwendet es die LRU des Betriebssystems zum Zwischenspeichern, da es selbst keine Speicherverwaltung durchführt.

Solange Ihr Arbeitssatz in die LRU passt, ohne dass das Betriebssystem ihn ständig auslagern oder austauschen muss, sollten Sie diese Abfrage meistens aus dem Speicher lesen. Also, ja, MongoDB kann zwischenspeichern, aber technisch gesehen tut es das nicht; das Betriebssystem tut es.

Die Caching-Mechanismen zur Lösung dieser Art von Problemen sind bei den meisten Technikern gleich, unabhängig davon, ob sie von MongoDB oder SQL stammen. Natürlich ist dies nur wichtig, wenn es ein Problem ist, Sie optimieren wahrscheinlich, wenn Sie mich fragen; es sei denn, Sie erhalten Traffic vom Typ Facebook, Google oder Youtube.

Das Caching-Thema befasst sich mit einem riesigen Thema, das vom Caching von Abfragen in vorab aggregierten MongoDB/Memcache/Redis usw. bis zum Caching von HTML und anderen Webressourcen reicht, um serverseitig so wenig Arbeit wie möglich zu machen.

Ihr Szenario klingt, wie gesagt, persönlich so, als ob Sie über die verschwendete Computerleistung falsch denken. Selbst wenn Sie diese Abfrage in einer anderen Sammlung/Technologie zwischenspeichern würden, würden Sie wahrscheinlich die gleiche Menge an Leistung und Ressourcen verbrauchen, um das Ergebnis von dieser Technologie abzurufen, als wenn Sie sich einfach nicht darum kümmern würden. Diese Annahme hängt jedoch davon ab, ob Sie die richtigen Indizes, Schemas, Einstellungen usw. haben.

Ich empfehle Ihnen, einige Links zu gutem Schemadesign und Indexerstellung zu lesen:

Ja, ich denke, wenn Sie versuchen, sich Gedanken über das Zwischenspeichern von Abfragen zu machen, optimieren Sie vorzeitig, insbesondere wenn Sie nicht abnehmen möchten, was jedes Mal 90% der Last auf Ihrem Server ausmachen würde. Laden der Seite selbst.

Ich würde mich auf Ihr Schema und Ihre Indizes konzentrieren und mich dann um das Caching kümmern, wenn Sie es wirklich brauchen.