Nevím, kdo to řekl, ale MongoDB má způsob ukládání dotazů do mezipaměti, ve skutečnosti používá LRU operačního systému k ukládání do mezipaměti, protože sám neprovádí správu paměti.
Dokud se vaše pracovní sada vejde do LRU, aniž by ji OS musel neustále stránkovat nebo swapovat, měli byste tento dotaz nejčastěji číst z paměti. Takže ano, MongoDB umí cache, ale technicky ne; OS ano.
Mechanismy ukládání do mezipaměti pro řešení tohoto druhu problémů jsou u většiny techniků stejné, ať už jde o MongoDB nebo SQL. Samozřejmě na tom záleží pouze v případě, že se jedná o problém, pokud se mě zeptáte, pravděpodobně provádíte mikrooptimalizaci; pokud nezískáte návštěvnost typu Facebook, Google nebo Youtube.
Předmět ukládání do mezipaměti se zabývá rozsáhlým tématem, které sahá od ukládání dotazů do mezipaměti buď v předem agregovaných MongoDB/Memcache/Redis atd., až po ukládání HTML a dalších webových zdrojů do mezipaměti, aby bylo co nejméně práce na serveru.
Váš scénář, jak jsem již řekl, osobně zní, jako byste o plýtvání počítačem přemýšleli špatně. I kdybyste tento dotaz uložili do mezipaměti v jiné sbírce/technologii, pravděpodobně byste k získání výsledku z této technologie použili stejné množství energie a zdrojů, než kdybyste se prostě neobtěžovali. Tento předpoklad však spočívá v tom, že máte správné indexy, schéma, nastavení atd.
Doporučuji vám přečíst si několik odkazů na dobrý návrh schématu a vytvoření indexu:
- http://docs.mongodb.org/manual/core/indexes/
- https://docs .mongodb.com/manual/core/data-model-operations/#large-number-of-collections
Ano, myslím, že tím, že se snažíte starat se o ukládání dotazů do mezipaměti, předčasně optimalizujete, zvláště pokud nechcete vzlétnout, kolik by pokaždé představovalo 90 % zatížení vašeho serveru; načítání samotné stránky.
Zaměřil bych se na vaše schéma a indexy a pak bych se staral o ukládání do mezipaměti, pokud to opravdu potřebujete.