Naše aplikace potřebuje 5 kolekcí v db. Když do naší aplikace přidáváme klienty, rádi bychom pro každého zákazníka udržovali samostatnou databázi. Pokud máme například 500 zákazníků, měli bychom 500 dbsand 2500 kolekcí (každý db má 5 kolekcí). Tímto způsobem můžeme oddělit data každého zákazníka.
To je skvělý nápad. Kromě logického oddělení vám to poskytne také možnost používat zabezpečení na úrovni databáze v MongoDB, abyste zabránili neúmyslnému přístupu k datům jiných zákazníků.
Obávám se, že to povede k nějakým problémům s výkonem?
Ne a ve skutečnosti to pomůže, protože extrémně těžký spor o zámek pro jednoho zákazníka (pokud je to ve vašem scénáři možné) by neovlivnil výkon pro jiného zákazníka (stále by mohl, pokud soutěží o stejnou šířku pásma I/O ale pokud použijete volbu --directoryperdb, pak máte možnost umístit tyto databáze na samostatná fyzická zařízení.
Sdílení také umožní snadné škálování, protože dokonce nebudete muset rozdělovat žádné kolekce – můžete pouze cyklicky provádět databáze mezi více fragmenty, abyste umožnili distribuci zátěže do samostatných clusterů (pokud a až této úrovně dosáhnete).
Na rozdíl od tvrzení v druhé odpovědi vlákno TTLMonitor NEVYtahuje dokumenty do paměti RAM, pokud nejsou odstraněny (a přidány na bezplatný seznam). Pracují z indexů TTL, aby zjistili, zda některým dokumentům vypršela platnost, a také přímo lokalizovali dokument.
Důrazně bych doporučil řešení s mnoha kolekcemi v jedné databázi, protože vám neumožňuje rozdělit zátěž, ani poskytovat zabezpečení, ani není snazší s ním manipulovat na straně aplikace.