Целесообразно ли использовать закрытую коллекцию Монго в кэш-памяти? - PullRequest
8 голосов
/ 30 сентября 2011

Целесообразно ли использовать закрытые коллекции Монго в качестве memcache бедного человека, предполагая, что он будет храниться в памяти большую часть времени?

Ответы [ 3 ]

12 голосов
/ 01 октября 2011

Вы можете определенно использовать закрытые коллекции для этой цели.Но важно знать основные ограничения.

  1. Срок действия данных истекает в зависимости от порядка вставки, а не времени до истечения срока действия
  2. Данные, к которым часто обращаются, все еще могут быть удалены из памяти
  3. _id столбцы не определены в ограниченных коллекциях по умолчанию, вам нужно будет обеспечить эти индексы.
  4. Объекты не могут быть изменены таким образом, чтобы изменить размер объекта.Например, вы можете увеличить существующее целое число, но не можете добавить поле или изменить строковое значение в записи.
  5. Ограниченные коллекции не могутбыть оскверненным .

Из-за # 1 & # 4 & # 5 вы определенно теряете некоторые основные функции Memcache.

Существует давно ожидаемый билет JIRAдля ограниченных коллекций на основе TTL , что, вероятно, именно то, что вы хотите.

Конечно, большой вопрос во всей этой дискуссии "где дополнительная память" ,Многие люди, которые используют MongoDB в качестве основного хранилища, просто отбрасывают Memcache.Если у вас есть куча дополнительной оперативной памяти, почему бы просто не использовать ее для хранения фактических данных вместо копий этих данных?

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

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

Коллекции с ограниченным доступом MongoDB: Приложения

1 голос
/ 01 октября 2011

Как сказал вице-президент Gates, закрытые коллекции можно использовать и ими легко управлять. Однако вы также можете использовать коллекции без ограничений, если вы:

  • есть выделенный сервер для memcache вашего бедняка
  • имеет много данных, которые не могут поместиться на одном сервере (или вы хотите запросить очень быстро)
  • можно справиться с TTL самостоятельно (просто добавьте одно поле)

Кэш MongoDB (mmap в Unix-подобных системах) обеспечивает «неограниченный» memcache, кеширующий часто используемые значения. Как сказано на странице FAQ по Монго:

Цель для Mongo - стать альтернативой стеку ORM / memcached / mysql

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