Есть ли способ зарегистрировать обратный вызов для удалений в закрытой коллекции в Mongo? - PullRequest
0 голосов
/ 23 марта 2012

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

Есть ли способ, чтобы Mongo сделал это автоматически, или я могу зарегистрировать обратный вызов, который будет выполнять это действие?

Ответы [ 2 ]

1 голос
/ 23 марта 2012

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

Чтобы ответить на ваш актуальный вопрос; MongoDB не имеет обратных вызовов или триггеров. Однако есть несколько открытых запросов к ним.

РЕДАКТИРОВАТЬ (Небольшая разработка по технической реализации): MongoDB построен поверх файлов с отображенной памятью для своего механизма хранения. По сути, это означает, что это кэш «горячих» данных на основе LRU, где данные в этом случае могут быть как фактическими данными, так и индексными данными. В результате данные и связанные с ними индексные данные, к которым вы часто обращаетесь (в вашем случае данные, которые вы обычно имеете в своей закрытой коллекции), будут в памяти и, следовательно, будут очень быстро запрашивать. В типичных случаях использования разница в производительности между «активной» коллекцией и «архивной» коллекцией и только одной большой коллекцией должна быть небольшой. Как вы можете себе представить, если для процесса mongod доступно больше памяти, это означает, что в памяти может остаться больше данных, и в результате производительность улучшится. На mongodb.org есть несколько хороших презентаций от 10gen, в которых более подробно рассказывается, как правильно сбалансировать индексы и т. Д.

0 голосов
/ 23 марта 2012

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

Тем не менее, я не понимаю, почему вы хотели бы ограниченную коллекцию, а также хотели бы убрать свои вещи. Если вы уточните это в своем вопросе, я обновлю ответ.

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