我即将部署一个使用 MongoDB 作为存储的网络应用程序。问题是,我可以在本地随时建立索引(也可以自动完成)——但你不应该在生产中这样做。现在切换到生产环境,我不太确定何时构建索引以及构建索引的频率。我应该每天都做吗?我应该每周做一次吗?我的项目就像一个小型社交网络 - 假设有一天我将拥有大约 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/) 结合使用。
最佳答案
您似乎假设您必须定期重建索引。不是这种情况。 MongoDB 在您写入相关数据时更新索引。
我能看到的生产索引重建的唯一可能原因是:
- 实时优化(例如,向字段添加索引,因为它会显着提高性能)
- 在涉及架构更改的部署之后
- 在索引相关错误之后(不应发生)
关于ruby-on-rails - 在生产中使用 MongoDB 构建索引的时间和频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915361/