为MongoDB 2.2中的每个集合创建一个不同的数据库

时间:2012-07-26 15:46:36

标签: mongodb

MongoDB 2.2每个数据库都有一个写锁定,而不是先前版本中服务器上的全局写锁定。如果我将每个集合存储在一个单独的数据库中,以便有效地为每个集合设置一个写锁定,那就没关系了。(这将使它看起来像MyISAM的表级锁定)。这种方法有问题吗?

2 个答案:

答案 0 :(得分:6)

锁定有一个关键限制,那就是local数据库。该数据库包含用于复制的oplog集合。

如果您正在生产中运行,则应该使用副本集运行。如果您正在使用副本集运行,则需要了解该数据库的写锁定效果。

如果它们都阻止等待oplog,那么将10个集合分解为10个数据集是没用的。

在采取重大步骤重写之前,请确保oplog不会导致问题。

另外,请注意MongoDB实现了DB级安全性。如果您正在使用任何安全功能,那么您现在正在创建更多要保护的数据库。

答案 1 :(得分:2)

是的,这将起作用,10gen实际上在他们的锁定谈判中提供了这个选项。

但是,我可能会隔离每个系列。大多数数据库似乎有2-5个高活动集合。为简单起见,最好将低活动集合保存在一个数据库中,并将高活动集合放在自己的数据库中。