sql >> Database >  >> NoSQL >> MongoDB

MongoDB-prestaties - meerdere databases hebben

Onze applicatie heeft 5 collecties in een db nodig. Als we klanten aan onze applicatie toevoegen, willen we voor elke klant een aparte database bijhouden. Als we bijvoorbeeld 500 klanten hebben, hebben we 500 dbs en 2500 collecties (elke db heeft 5 collecties). Op deze manier kunnen we elke klantgegevens scheiden.

Dat is een geweldig idee. Naast de logische scheiding die dit voor u biedt, kunt u ook beveiliging op databaseniveau in MongoDB gebruiken om onbedoelde toegang tot de gegevens van andere klanten te voorkomen.

Mijn zorg is, zal dit leiden tot prestatieproblemen?

Nee, en in feite zal het helpen, aangezien met vergrendeling op databaseniveau extreem zware vergrendelingsconflicten voor één klant (als dat mogelijk is in uw scenario) geen invloed hebben op de prestaties voor een andere klant (het kan nog steeds als ze strijden om dezelfde I/O-bandbreedte maar als je de optie --directoryperdb gebruikt, heb je de mogelijkheid om die DB's op aparte fysieke apparaten te plaatsen.

Sharding maakt ook eenvoudig schalen mogelijk, omdat u niet eens collecties hoeft te partitioneren - u kunt databases gewoon over meerdere shards heen en weer laten lopen om de belasting te verdelen over afzonderlijke clusters (als en wanneer u dat niveau bereikt).

In tegenstelling tot de bewering in het andere antwoord, trekt de TTLMonitor-thread GEEN documenten naar het RAM tenzij ze worden verwijderd (en toegevoegd aan de gratis lijst). Ze werken op basis van TTL-indexen, zowel om te bepalen of documenten verlopen moeten zijn als om het document rechtstreeks te lokaliseren.

Ik zou ten zeerste de oplossing voor één database met veel verzamelingen aanbevelen, omdat je daarmee de belasting niet kunt partitioneren, noch beveiliging kunt bieden, en het is ook niet gemakkelijker te hanteren aan de kant van de applicatie.




  1. Geheugenefficiënte manier om 32-bits geheel getal met teken op te slaan in Redis

  2. Docker Redis-verbinding geweigerd

  3. Verschillen tussen Microsoft.Extensions.Cashing.Redis en Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache

  4. MySQL naar MongoDB - Een cheatsheet voor beheerders