Рекомендуется ли Memcache при использовании MongoDB? - PullRequest
33 голосов
/ 25 ноября 2010

Я хотел бы знать, рекомендуется ли использовать Memcache при использовании базы данных NoSQL, такой как mongoDB.

Ответы [ 4 ]

56 голосов
/ 25 ноября 2010

Концепция использования memcache проистекает из того, что у вас где-то сидит «лишняя память».MongoDB и MySQL (и большинство БД) будут занимать каждый мегабайт оперативной памяти, которую они могут получить.

В случае очень распространенного MySQL / Memcache очень хорошо задокументировано, что использование Memcache больше касается сокращения запросовнагрузка на сервер, чем речь идет об ускорении запросов.Хорошая реализация memcache, в основном, просто пытается сохранить наиболее распространенные данные в памяти, чтобы сервер баз данных мог перебирать большие объемы данных.

На самом деле, я использовал memcache.как правило, полагается на memcache для поддержания производительности системы.

Итак, вернемся к первоначальному вопросу, где у вас есть дополнительная память?

Если у вас есть дополнительная память в Интернетесервера, вы можете использовать Memcache.Конечно, вы также можете запустить Mongo локально на веб-сервере.Просто подчините данные, которые вам нужны, от мастера.

Если у вас есть дополнительная оперативная память на других компьютерах, то нет смысла использовать memcache.Просто добавьте больше узлов в ваш набор реплик MongoDB или шард.Вот где на самом деле сияет MongoDB.Из-за шардинга / репликации вы можете увеличить объем оперативной памяти в Mongo Horizontally для повышения производительности.С SQL очень трудно «просто добавить больше серверов», потому что объединения не очень хорошо масштабируются.Но с Mongo вполне возможно просто «добавить больше узлов» к проблеме.

11 голосов
/ 25 ноября 2010

MongoDB хранит все в памяти в любом случае и работает в том же духе, будучи системой, основанной на значении ключа, однако я считаю, что MongoDB более гибок, поскольку позволяет хранить объекты BSON внутри себя.для пояснения MongoDB использует BSON, специализированную форму JSON, для хранения всех своих данных, включая объекты внутри объектов.)

3 голосов
/ 25 ноября 2010

Сначала нет. Если позже у вас возникнут проблемы с производительностью, добавьте слой кэширования (memcache). Но вы ничего не получите, если собираетесь использовать Redis, например, так как Redis уже хранит все в памяти.

1 голос
/ 30 октября 2016

Ответ будет зависеть от ваших вариантов использования.
Как правило, доступ к ОЗУ на несколько порядков быстрее, чем к диску.
Даже самые быстрые SSD-накопители имеют доступ примерно в 100 раз медленнее, чем ОЗУ.

Теперь я не знаю, есть ли в Mongo система кеширования (скорее всего, так и есть) или какова политика удаления, но как программист я предпочел бы кеш, где я могу хранить / извлекатьи удалять элементы по желанию.Поэтому я бы предпочел использовать решение для кеширования даже с Mongo.

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

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