MongoDB性能 - 拥有多个数据库

时间:2013-06-04 11:42:00

标签: mongodb database

我们的应用程序需要db中的5个集合。当我们向客户端添加客户端时,我们希望为每个客户维护单独的数据库。例如,如果我们有500个客户,我们将有500个dbs和2500个集合(每个db有5个集合)。这样我们就可以分离每个客户数据。我担心的是,它会导致任何性能问题吗?

  

更新:请遵循此google-group discussion

1 个答案:

答案 0 :(得分:37)

  

我们的应用程序需要db中的5个集合。当我们添加客户端时   我们的应用程序我们想为每个维护单独的数据库   顾客。例如,如果我们有500个客户,我们将有500 dbs   和2500个集合(每个db有5个集合)。这样我们就可以   将每个客户数据分开。

这是一个好主意。除了逻辑分离之外,您还可以使用MongoDB中的数据库级安全性来帮助防止无意中访问其他客户的数据。

  

我担心的是,它会导致任何性能问题吗?

不,实际上它会有所帮助,因为数据库级锁定一个客户的极其沉重的锁争用(如果在您的方案中可能)不会影响另一个客户的性能(如果他们竞争相同我仍然可能/ O带宽,但如果使用--directoryperdb选项,则可以将这些DB放在不同的物理设备上。

Sharding还允许轻松扩展,因为您甚至不需要对任何集合进行分区 - 您可以跨多个分片循环数据库以允许将负载分配到单独的集群(如果达到该级别时)

与其他答案中的声明相反,TTLMonitor线程不会将文档拉入RAM,除非它们被删除(并添加到空闲列表中)。他们使用TTL索引来判断是否有任何文档过期以及直接找到文档。

我强烈建议对一个数据库使用多个集合解决方案,因为它不允许您对负载进行分区,也不提供安全性,也不容易在应用程序端处理。