sql >> Databáze >  >> NoSQL >> MongoDB

Výkon MongoDB – s více databázemi

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.




  1. MongoDB $kulatý

  2. Redis tcp-backlog

  3. Šest kritických součástí úspěšné správy dat

  4. Dávkové vložení/aktualizace pomocí Mongoidu?