Когда / Где находится наилучшее время / место для настройки "схемы" MongoDB? - PullRequest
2 голосов
/ 05 октября 2011

В приложении, которое использует MongoDB, когда / где наилучшее место для внесения изменений в базу данных, которые могли бы быть миграциями в реляционной базе данных?

Например, как следует управлять созданием индексов или заданием ключей шарда? Куда должен идти этот код?

1 Ответ

2 голосов
/ 05 октября 2011

, вероятно, лучше всего делать это в оболочке, сознательно !, потому что вы можете вызвать хаос, если случайно запустите такую ​​команду в неправильный момент и в неправильном экземпляре.

Самое главное: сделать это в автономном режиме на дополнительном ведомом экземпляре , если вы добавляете индекс в существующую БД!Для больших наборов данных создание индекса может занять часы, даже дни!

см. Также:

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

Если у вас большой набор данных, обязательно прочитайте о 4-квадратном отключении в прошлом году .. !!

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внутренне добавив новый индекс сначала прежде чем делать что-либо еще ... outch!Очевидно, что это произошло с парой людей, поэтому они продолжают напоминать людям на конференциях MongoDB, чтобы они не «программно» требовали индексов.

Новые версии MongoDB позволяют выполнять фоновую индексацию - вы всегда должны делать эточто, например, db.yourcollection.ensureIndex (..., {background: true})

в противном случае случается не так весело:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...