MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

La memorizzazione nella cache dei risultati delle query ripetute in MongoDB

Non so chi l'abbia detto, ma MongoDB ha un modo per memorizzare nella cache le query, infatti utilizza l'LRU del sistema operativo per memorizzare nella cache poiché non esegue la gestione della memoria stessa.

Finché il tuo set di lavoro si adatta alla LRU senza che il sistema operativo debba eseguire il paging o scambiarlo costantemente, dovresti leggere questa query dalla memoria nella maggior parte dei casi. Quindi, sì, MongoDB può memorizzare nella cache ma tecnicamente non lo fa; il sistema operativo lo fa.

I meccanismi di memorizzazione nella cache per risolvere questo tipo di problemi sono gli stessi nella maggior parte delle tecnologie, indipendentemente dal fatto che si tratti di MongoDB o SQL. Ovviamente, questo conta solo se è un problema, probabilmente stai ottimizzando la microsezione se me lo chiedi; a meno che tu non riceva traffico di tipo Facebook o Google o Youtube.

L'argomento della memorizzazione nella cache va su un argomento enorme che va dalla memorizzazione nella cache delle query in MongoDB/Memcache/Redis pre-aggregati ecc. alla memorizzazione nella cache di HTML e altre risorse Web per lavorare il meno possibile sul lato server.

Il tuo scenario, personalmente come ho detto, sembra che tu stia pensando male alla potenza sprecata del computer. Anche se dovessi memorizzare nella cache questa query in un'altra raccolta/tecnologia, probabilmente utilizzeresti la stessa quantità di energia e risorse per recuperare il risultato da quella tecnologia che se non ti preoccupassi. Tuttavia, questo presupposto dipende dal fatto che tu abbia gli indici, lo schema, la configurazione, ecc. giusti

Ti consiglio di leggere alcuni link sulla buona progettazione di schemi e sulla creazione di indici:

Sì, penso che cercando di preoccuparti della memorizzazione nella cache delle query stai ottimizzando prematuramente, soprattutto se non vuoi decollare, quale sarebbe il 90% del carico sul tuo server ogni volta; caricamento della pagina stessa.

Mi concentrerei sul tuo schema e sugli indici e poi mi preoccuperei della memorizzazione nella cache se ne hai davvero bisogno.