sql >> Database >  >> NoSQL >> MongoDB

Wat betekent het om een ​​werkset in RAM voor MongoDB te passen?

"Werkset" is in feite de hoeveelheid gegevens EN indexen die actief/in gebruik zijn door uw systeem.

Stel dat u bijvoorbeeld over 1 jaar aan gegevens beschikt. Voor de eenvoud heeft elke maand betrekking op 1 GB aan gegevens, wat neerkomt op 12 GB in totaal, en om de gegevens van elke maand te dekken, hebt u 1 GB aan indexen, opnieuw in totaal 12 GB voor het jaar.

Als u altijd toegang heeft tot de gegevens van de afgelopen 12 maanden, dan is uw werkset:12 GB (data) + 12 GB (indexen) =24 GB.

Als u echter alleen toegang heeft tot de gegevens van de afgelopen 3 maanden, dan is uw werkset:3 GB (data) + 3 GB (indexen) =6 GB. In dit scenario, als u 8 GB RAM had en u begon regelmatig toegang te krijgen tot de gegevens van de afgelopen 6 maanden, dan zou uw werkset uw beschikbare RAM overschrijden en een invloed hebben op de prestaties.

Maar over het algemeen, als je genoeg RAM hebt om de hoeveelheid gegevens/indexen te dekken die je verwacht vaak te gebruiken, dan komt het goed.

Bewerken:reactie op vraag in opmerkingen
Ik weet niet zeker of ik het helemaal volg, maar ik zal proberen te antwoorden. Ten eerste is de berekening voor de werkset een "ballenparkcijfer". Ten tweede, als u een (bijv.) 1 GB index op user_id heeft, dan hoeft alleen het gedeelte van die index dat algemeen wordt gebruikt in het RAM te staan ​​(bijv. stel dat 50% van de gebruikers inactief is, dan zal 0,5 GB van de index vaker worden gebruikt vereist/nodig in RAM). Over het algemeen geldt:hoe meer RAM je hebt, hoe beter, vooral omdat de werkset in de loop van de tijd waarschijnlijk zal groeien als gevolg van toenemend gebruik. Dit is waar sharding van pas komt:verdeel de gegevens over meerdere knooppunten en u kunt kosteneffectief uitschalen. Je werkset is dan verdeeld over meerdere machines, waardoor er meer in het RAM kan worden bewaard. Meer RAM nodig? Voeg nog een machine toe om op te sharden.



  1. Vriendenrelaties opslaan in MongoDB?

  2. MongoDB-verzamelingsdocumenten automatisch verouderen

  3. MongoDB Upsert uitgelegd

  4. Hoe op te slaan in Redis gesorteerde set met server-side tijdstempel als score?