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

Cosa significa adattare il working set nella RAM per MongoDB?

"Working set" è fondamentalmente la quantità di dati E di indici che saranno attivi/in uso dal tuo sistema.

Quindi, ad esempio, supponiamo di avere 1 anno di dati. Per semplicità, ogni mese si riferisce a 1 GB di dati per un totale di 12 GB e per coprire il valore di ogni mese hai 1 GB di indici per un totale di 12 GB per l'anno.

Se accedi sempre ai dati degli ultimi 12 mesi, il tuo set di lavoro è:12 GB (dati) + 12 GB (indici) =24 GB.

Tuttavia, se in realtà accedi solo ai dati degli ultimi 3 mesi, il tuo set di lavoro è:3 GB (dati) + 3 GB (indici) =6 GB. In questo scenario, se avessi 8 GB di RAM e iniziassi ad accedere regolarmente ai dati degli ultimi 6 mesi, il tuo set di lavoro inizierebbe a superare la RAM disponibile e avrebbe un impatto sulle prestazioni.

Ma in generale, se hai abbastanza RAM per coprire la quantità di dati/indici a cui prevedi di accedere frequentemente, allora andrà tutto bene.

Modifica:risposta alla domanda nei commenti
Non sono sicuro di seguirlo bene, ma proverò a rispondere. In primo luogo, il calcolo per il working set è una "cifra di ball park". In secondo luogo, se hai un indice (ad es.) 1 GB su user_id, solo la parte di quell'indice a cui si accede comunemente deve essere nella RAM (ad es. supponiamo che il 50% degli utenti sia inattivo, quindi 0,5 GB dell'indice saranno più frequenti richiesto/necessario nella RAM). In generale, più RAM hai, meglio è, soprattutto perché è probabile che il working set cresca nel tempo a causa del maggiore utilizzo. È qui che entra in gioco lo sharding:dividi i dati su più nodi e puoi scalare in modo conveniente. Il tuo set di lavoro viene quindi diviso su più macchine, il che significa che più possono essere mantenute nella RAM. Hai bisogno di più RAM? Aggiungi un altro computer su cui eseguire lo shard.