首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时/何地是配置MongoDB“模式”的最佳实践时间/地点?

何时/何地是配置MongoDB“模式”的最佳实践时间/地点?
EN

Stack Overflow用户
提问于 2011-10-05 06:47:59
回答 1查看 249关注 0票数 2

在使用MongoDB的应用程序中,何时/何处是进行关系数据库迁移的数据库更改的最佳位置?

例如,如何管理创建索引或设置分片键?这段代码应该放在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-05 07:00:48

最好是在shell中执行此操作,因为如果您意外地在错误的时间和错误的实例上启动了这样的命令,可能会造成严重后果。

最重要的是:如果您在现有数据库上添加索引,将在额外的从实例上离线执行此操作!对于大型数据集,构建索引可能需要几个小时,甚至几天!

另请参阅:

http://www.mongodb.org/display/DOCS/Indexes

http://www.javabeat.net/articles/print.php?article_id=353

http://www.mongodb.org/display/DOCS/Indexing+as+a+Background+Operation

http://nosql.mypopescu.com/post/1312926692/mongodb-indexes-and-indexing

如果您有大量的数据集,请务必阅读去年的4square outage。!!

http://www.infoq.com/news/2010/10/4square_mongodb_outage

http://blog.foursquare.com/2010/10/05/so-that-was-a-bummer/

http://highscalability.com/blog/2010/10/15/troubles-with-sharding-what-can-we-learn-from-the-foursquare.html

不想将索引放在某种脚本或配置文件中的一个主要原因是,在MongoDB中,索引操作是阻塞的(!) --这意味着MongoDB将停止数据库上的其他操作,直到索引完成。想象一下,代码中的一个无害的更改,需要一个新的索引来提高性能--这个更改被随意签入并部署到生产环境中……突然之间,你的生产MongoDB对你的应用服务器来说越来越弱了,因为MongoDB在做其他事情之前在内部添加了新的索引first……出去!显然,这种情况已经发生在一些人身上,这就是为什么他们在MongoDB会议上不断提醒人们要小心,不要‘以编程方式’需要索引。

新版本的MongoDB允许后台索引--您应该始终这样做,例如db.yourcollection.ensureIndex(...,{ background : true})

否则,就会发生一些不那么有趣的事情:

https://jira.mongodb.org/browse/SERVER-1341

https://jira.mongodb.org/browse/SERVER-3067

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7654907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档