La nostra applicazione ha bisogno di 5 collezioni in un db. Quando aggiungiamo i client a la nostra applicazione vorremmo mantenere il db separato per ogni cliente . Ad esempio, se disponiamo di 500 clienti, avremmo 500 000 db e 2500 raccolte (ogni db ha 5 raccolte). In questo modo possiamo separare ogni dato cliente.
Questa è una grande idea. Oltre alla separazione logica che questo ti fornirà, sarai anche in grado di utilizzare la sicurezza a livello di database in MongoDB per aiutare a prevenire l'accesso involontario ai dati di altri clienti.
La mia preoccupazione è, porterà a problemi di prestazioni?
No, e infatti vi aiuterà come con blocco a livello di database estremamente pesante conflitto di blocco per un cliente (se è possibile nel vostro scenario) non avrebbero influire sulle prestazioni di un altro cliente (ancora potrebbe se sono in competizione per la stessa larghezza di banda I/O ma se si utilizza l'opzione --directoryperdb allora si ha la possibilità di posizionare tali DB su dispositivi fisici separati
Sharding consentirà anche un ridimensionamento semplice in quanto non sarà nemmeno necessario suddividere le raccolte - puoi semplicemente ruotare i database su più frammenti per consentire la distribuzione del carico in cluster separati (se e quando raggiungi quel livello).
Contrariamente alla rivendicazione nell'altra risposta, il thread TTLMonitor NON carica i documenti nella RAM a meno che non vengano eliminati (e aggiunti all'elenco libero). Funzionano con gli indici TTL sia per indicare se i documenti devono essere scaduti, sia per localizzare direttamente il documento.
Consiglio vivamente contro il database una soluzione di molte raccolte in quanto non consente di partizionare il carico, né fornire sicurezza, né è più facile da gestire sul lato dell'applicazione.
fonte
2013-06-04 23:12:45
Su un numero elevato di clienti si potrebbe preferire invece cercare istanze isolate, ma ciò dipende da più di quello che è stato fornito da – Sammaye
, che sono i frammenti per - sono ciascuno un'istanza mongod separata/set di repliche. questa è una configurazione estremamente comune per molti utenti di MongoDB che ospitano tenant multipli e DB separati è una risposta standard qui. –