Memcachedb по сравнению с MongoDB и CouchDB с точки зрения файлового кэширования?
Нам необходимо решение для кэширования, которое по существу кэширует данные (текстовые файлы) в любом месте от 3 дней до недели в зависимости от пользовательских предпочтений и критериев. В этом случае кэширование на основе памяти не имеет смысла для нас. Нас отослали в MemcacheDB, но я также подумал о некоторых решениях NO SQL.
Наше текущее приложение использует RDMS (MYSQL), и я думаю, что имеет смысл использовать MemcacheDB, однако NOSQL действительно привлекателен, так как это нечто большее на горизонте. Однако мы не развернули приложение производственного уровня под NOSQL, и бета-версия не подходит для менеджмента / инвесторов. Любой, каковы ваши мысли и как бы вы решили это?
Благодарю вас
6 ответов
CouchDB и MongoDB являются отличными базами данных, но они являются ужасным выбором для уровня кэширования поверх существующей РСУБД. Помимо того, что они все еще довольно незрелые, они совсем не подходят для этой цели. Кроме того, по скорости вам будет лучше обходиться без слоя кэша, чем при использовании CouchDB или MongoDB- они оба медленнее для простого чтения / записи, чем даже MySQL. Да, базы данных NoSQL "крутые", но это не значит, что вы должны использовать их для чего-то, что они не должны были делать.
Я бы выбрал Memcached, так как это самая быстрая и легкая вещь, которую вы найдете, и она хорошо известна и поддерживается.
Если вы беспокоитесь об обращении к руководству и инвесторам, и текущая система (вы упоминаете MySQL) работает, почему вы бы изменились? Вы переходите от довольно стабильного проекта к проектам, которые все еще находятся в бета-версии, и какую ценность вы добавляете, если текущая система уже работает?
Как упоминалось выше, все ресурсы CouchDB содержат etags.
Что не было упомянуто, так это то, что вы можете поместить любое решение для кэширования HTTP перед CouchDB и использовать его для кэширования на основе etag. Таким образом, вы можете использовать Varnish, Nginx, все, что вы хотите.
Если вы запоминаете с постоянством, вы должны проверить Redis. Он обладает всеми функциональными возможностями memecached (и не только), но и постоянством.
Я сам не пробовал, но помню, что читал, что Redis также поддерживает memcached API.
CouchDB уже выполняет некоторое кэширование: когда вы получаете документ, сервер также отправляет заголовок HTTP ETag (он совпадает с ревизией документа в CouchDB).
В следующий раз, когда браузер запрашивает тот же документ, он отправляет полученный Etag. Если документ не был изменен, сервер отвечает HTTP-кодом 304 Not Modified, и ваш браузер получает документ из его локального кэша.
Однако, если вам необходимо кэшировать файлы разное время в зависимости от предпочтений пользователя, даже если текстовый файл изменяется, вероятно, вам лучше всего написать собственный код, который отправляет заголовки кэширования HTTP с учетом предпочтений пользователя.
Для полноты еще один хороший вариант Redis. Вы получаете производительность, сопоставимую с Memcache, но Redis также поддерживает различные структуры данных (хэши, списки, наборы, отсортированные наборы) и атомарные операции.
Я также взглянул бы на Кассандру ( http://cassandra.apache.org/). Я пробовал MemcacheDB и CouchDB, как-то нашел Cassandra более привлекательным (не знаю о PHP, так как я работаю с Coldfusion). Вот связанный с этим вопрос Cassandra PHP модуль