Ответ 1
Концепция использования memcache проистекает из идеи, что у вас есть "дополнительная RAM", сидящая где-то. И MongoDB, и MySQL (и большинство БД) будут принимать каждую мегабайт ОЗУ, которую они могут получить.
В случае с очень распространенным MySQL/Memcache, очень хорошо документировано, что использование Memcache больше связано с уменьшением загрузки запросов на сервере, чем с ускорением запросов. Хорошая реализация memcache в основном просто пытается сохранить наиболее распространенные данные в памяти, чтобы сервер базы данных мог отбросить большие файлы.
Фактически, мой опыт заключается в том, что использование memcache обычно становится опорой на memcache для поддержания производительности системы.
Итак, вернемся к исходному вопросу, где у вас есть дополнительная оперативная память?
Если у вас есть дополнительная оперативная память на веб-серверах, вы можете использовать Memcache. Конечно, вы также можете запустить Mongo локально на веб-сервере. Просто ведите данные, которые вам нужны от мастера.
Если у вас есть дополнительная оперативная память на других компьютерах, то нет смысла использовать memcache. Просто добавьте больше узлов в набор реплик MongoDB или осколок. Именно здесь на самом деле сияет MongoDB. Из-за sharding/replication вы можете добавить больше RAM в Mongo Horizontally для повышения производительности. С SQL очень сложно "просто добавить больше серверов", потому что объединения не очень хорошо масштабируются. Но с Mongo вполне возможно просто "добавить больше узлов" к проблеме.