Написание тяжелых dml-операций в MongoDB

Я использую MongoDB (2.2) в Linux, и у меня есть несколько вопросов.

У меня есть схема со многими полями + подполями и одним индексом для этих полей.

  1. Как быстро выполняются обновления/удаления в индексе - у меня около 3 обновлений/удалений и т. д. в секунду.
  2. Есть ли правило, например, после 10 000 обновлений вы должны сжимать или перестраивать индекс?
  3. Изменения в полях сразу видны в индексе? Если нет, есть ли задержка или временная таблица для этого обновления/удаления?

Заранее спасибо - Брэндон


person user2001384    schedule 22.01.2013    source источник
comment
Да, индекс обновляется синхронно с данными. Нет никакой задержки.   -  person Sergio Tulentsev    schedule 22.01.2013
comment
Индексы обновляются без задержки, но когда вы удаляете данные в mongodb, если вы не выполняете команду db.repair(), выпущенные данные не будут освобождены для операционной системы, имейте в виду: api.mongodb.org/wiki/current/Excessive%20Disk%20Space.html   -  person cubbuk    schedule 22.01.2013
comment
Индексы могут быть задержаны, если они отправлены в фоновый режим. выпущенные данные будут отправлены в список сегментов $deletedlist, каждый из которых представляет возможный размер удаленного документа. Когда новый документ вставляется или обновляется и его необходимо переместить, MongoDB выполнит поиск около 30 (или около того) таких сегментов, чтобы определить, подходит ли новый размер записи. Использование постоянно растущих документов может привести к фрагментации с помощью этого метода, однако вы можете использовать отступы в размере 2 в вашем документе, чтобы снизить риск перемещения.   -  person Sammaye    schedule 22.01.2013


Ответы (1)


  1. Индексы обновляются во время вставки/обновления/удаления. Что касается производительности, лучшим ответом было бы просто протестировать ее.
  2. Не то чтобы я знал. Если вам нужно регулярно выполнять сжатие или восстановление, у вас также должна быть репликация (но вы можете иметь ее на том же хосте, если позволяют ресурсы).
  3. Да (ну, при том же подключении к БД - при другом это может занять немного больше времени. Но если у вас возникла эта проблема, я все равно не тот, кто вам ответит;)

Сказав это, я настоятельно рекомендую вам взглянуть на некоторые презентации на http://www.10gen.com/presentations - извините, я не могу указать те, которые были особенно интересны и полезны, я предлагаю вам просмотреть и выбрать те, которые кажутся вам интересными.

Обратите внимание, что MongoDB делает вещи СОВЕРШЕННО по-другому и имеет довольно много ошибок для неподготовленных. Однако это отличная БД, если вы знаете, как ее использовать.

person johndodo    schedule 03.02.2013