我即将使用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/)。
答案 0 :(得分:2)
您似乎假设您必须定期重建索引。不是这种情况。 MongoDB在您写入相关数据时更新索引。
我可以看到生产索引重建的唯一可能原因是: