在生产中使用MongoDB构建索引的时间和频率

时间:2011-10-27 11:43:18

标签: ruby-on-rails mongodb indexing mongoid nosql

我即将使用MongoDB作为存储部署Web应用程序。问题是,在本地我可以随时建立索引(也自动完成) - 但你不应该在生产中这样做。现在切换到生产我不太确定何时构建索引以及多长时间。我应该每天都这样做吗?我应该每周做一次吗?我的项目就像一个小型社交网络 - 所以我想有一天我会有大约100,000个用户。根据数据量,构建索引可能需要数小时甚至数天。

我打算在后台构建索引(请参阅此处http://www.mongodb.org/display/DOCS/Indexing+as+a+Background+Operation)。它仍然会导致写入锁定,但构建作业将暂停以允许其他读取者和编写者访问数据库 - 因此,如果我在数据库上存在大量负载,则后台索引构建仍会影响性能的负面办法。所以它应该在流量最小的时间窗口内完成(在这里研究http://www.javabeat.net/articles/353-indexing-in-practice-using-mongodb-1.html)。

是否有人有关于在生产中创建索引的时间和频率(最好是包含大量数据)的经验?我正在使用Rails与Mongoid(http://mongoid.org/)。

1 个答案:

答案 0 :(得分:2)

您似乎假设您必须定期重建索引。不是这种情况。 MongoDB在您写入相关数据时更新索引。

我可以看到生产索引重建的唯一可能原因是:

  • 实时优化(例如,向字段添加索引,因为它会显着提高性能)
  • 部署涉及架构更改后
  • 与索引相关的错误(不应发生)