gpt4 book ai didi

mongodb - 配置 MongoDB "schema"的最佳实践时间/地点是何时/何地?

转载 作者:可可西里 更新时间:2023-11-01 10:35:19 27 4
gpt4 key购买 nike

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

比如创建索引或者设置shard key应该如何管理?这段代码应该去哪里?

最佳答案

最好有意识地在 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 中断..!!

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 将停止对数据库的其他操作,直到索引完成。想象一下代码中的无害更改,需要一个新索引来提高性能——这个更改被粗心地 checkin 并部署到生产环境中……突然间,您的生产环境 MongoDB 正在为您的应用程序服务器加速,因为 MongoDB 是在做任何其他事情之前在内部添加新索引first... outch!显然这已经发生在一些人身上,这就是为什么他们在 MongoDB session 上不断提醒人们要小心不要“以编程方式”要求索引。

新版本的 MongoDB 允许后台索引——你应该总是这样做,例如db.yourcollection.ensureIndex(..., {background: true})

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

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

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

关于mongodb - 配置 MongoDB "schema"的最佳实践时间/地点是何时/何地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7654907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com