问题:一个应用程序中有数以万计的用户(但少于 50 万)。
解决方案:将每个用户的集合(10-20)存储在单独的用户命名空间中(每个客户端只有一个),以通过从每个用户的 id 'column' 转义来节省磁盘空间;加快命名空间小索引的查询时间;降低锁定率(https://jira.mongodb.org/browse/SERVER-1240);简化分片 (https://jira.mongodb.org/browse/SERVER-939)。
这个可以吗?或者我应该使用一个带有命名空间的通用集合?
感谢您的回答。
最佳答案
我想我明白你的问题,但如果我错了,请纠正我。似乎您希望将每个应用程序的用户存储在他们自己的集合中。这有几个优点和缺点,您必须根据复杂的 DBA 决策(如 R/W 比、负载等)来衡量这些优点和缺点。
优势
缺点
归根结底,您可以通过简单地对某些应用程序 key 进行分片来避免这些缺点的同时获得大部分这些好处。许多收集场景很诱人,但我认为最终不是 mongo 优化的。
关于用于多用户应用程序的 mongodb 数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082965/