MongoDB предварительно выделяет место для документа в закрытой коллекции - PullRequest
2 голосов
/ 21 марта 2012

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

Что-то вроде: вставьте документ + 1 МБ нулей, затем обновите документ, уменьшив «поддельные» нули.

1 Ответ

2 голосов
/ 21 марта 2012

То, что вы, по сути, описываете, это заполнение вручную. Я не делал этого раньше в контексте закрытой коллекции, но нет никаких причин, чтобы это не сработало. В целом, рекомендуется избегать дорогостоящих перемещений документа, который увеличивается из-за обновления.

Я также советовал людям, работающим с SO, делать это раньше, на самом деле, когда они смотрят на плюсы / минусы встраивания и ссылок в их схеме (сохраняйте последние 5 комментариев в блоге, фиксируя длину основного поля, ссылка для всей истории, например. Официальные руководства по заполнению здесь:

http://www.mongodb.org/display/DOCS/Padding+Factor#PaddingFactor-ManualPadding

В закрытой коллекции вы можете обновлять, но не увеличивать ее, как вы упомянули, но вы можете вставить больший документ, чем был там раньше, тогда старые документы должны будут освободить место, и несколько экземпляров могут «выпасть» из коллекции.

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