Обновить или удалить, что быстро? - PullRequest
3 голосов
/ 11 января 2012

Я использую mongoDB для приложения. Это приложение требует высокой частоты чтения, записи и обновления.

Я просто обеспокоен обновлением и удалением функций. Какой из них быстр среди этих двух? Я индексирую коллекцию по одному атрибуту. Update и Delete оба выполняют мою цель, но я не уверен, какой из них идеален и имеет лучшую производительность.

Ответы [ 2 ]

1 голос
/ 11 января 2012

Довольно странный вопрос, но вот вещи, на которых вы можете основать свое решение:

  • Удаление позволит сохранить коллекцию в оптимальном размере.Обновление (я предполагаю, что вы имеете в виду что-то вроде установки удаленного флага в значение true) приведет к постоянно растущей коллекции, что в конечном итоге замедлит работу.
  • Обновления на месте (обновления, которые не приводят к тому, что документ долженперемещаться из-за увеличения размера) всегда быстрее обновлений или удалений, которые требуют (пере) перемещения документов.
  • Безопасный = ложные записи значительно улучшат пропускную способность обновлений и удалений за счет отсутствиявозможность проверить успешность обновления / удаления.
1 голос
/ 11 января 2012

Я бы сказал, что вместо того, чтобы принимать решение о том, используете ли вы Update или Delete для своего решения, вы больше посмотрите на атрибут SafeMode.

SafeMode.True указывает, что вы ожидаете ответа от сервера, который будет среди прочего содержать подтверждение того, была ли команда выполнена успешно или нет. Этот параметр блокирует выполнение до тех пор, пока вы не получите ответ от сервера.

SafeMode.False не будет ожидать никакого ответа, и это в основном оптимистичная команда. Вы ожидаете, что это сработает, но у вас нет возможности это подтвердить. Ожидание ответа не блокирует выполнение, поэтому вы получаете производительность, потому что все, что вам нужно сделать, это отправить запрос.

Теперь вам нужно учесть, что Deletes освободит нам место на сервере, но вы потеряете историю и возможность отслеживания данных. Обновления позволят вам сохранять исторические записи, но вам нужно будет убедиться, что ваши запросы исключают записи, помеченные для удаления.

Очевидно, вам решать, лучше ли удалять или обновлять, но я думаю, что основное внимание следует уделить тому, используете ли вы SafeMode true или false для повышения производительности.

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