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

标签 ruby-on-rails mongodb indexing mongoid nosql

我即将部署一个使用 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/

相关文章:

ruby-on-rails - Ruby/Rails 和 Sharepoint Web 服务

ruby-on-rails - assert_select 测试原始或 html_safe 未转义的内容

performance - 从性能角度来看 MongoDB 嵌入式与引用

mongodb - URI 验证断言失败 _setName.size

database - MongoDB 中的所有查询都是临时的吗?

c - 为什么我的数组索引比指针快

c - eclipse C 项目显示错误(无法解析符号)但它编译

ruby-on-rails - 避免在映射变量中使用引号

ruby-on-rails - PG::InvalidParameterValue: 错误:必须指定要安装的版本

python - 使用切片交换索引?