Memcachedb и MongoDB против CouchDB с точки зрения файлового кэширования? - PullRequest
1 голос
/ 11 мая 2010

Нам нужно решение для кэширования, которое по существу кэширует данные (текстовые файлы) от 3 дней до недели в зависимости от предпочтений и критериев пользователя. В этом случае кэширование на основе памяти не имеет смысла для нас. Мы были переданы в MemcacheDB, однако я также подумал о некоторых решениях NO SQL.

Наше текущее приложение использует RDMS (MYSQL), и я думаю, что имеет смысл использовать MemcacheDB, однако NOSQL действительно привлекателен, так как это нечто большее. Однако мы не развернули приложение производственного уровня под NOSQL, и бета-версия не подходит для менеджмента / инвесторов. Любой, каковы ваши мысли и как бы вы решили это?

Спасибо

Ответы [ 6 ]

4 голосов
/ 12 мая 2010

CouchDB и MongoDB являются отличными базами данных, но они являются ужасным выбором для уровня кэша поверх существующей RDBMS. Помимо того, что они все еще довольно незрелые, они совсем не подходят для этой цели. Кроме того, по скорости вам будет лучше обходиться без слоя кэша, чем при использовании CouchDB или MongoDB - они оба медленнее для простого чтения / записи, чем даже MySQL. Да, базы данных NoSQL «крутые», но это не значит, что вы должны использовать их для чего-то, что они не должны были делать.

Я бы пошел с Memcached, так как это самая быстрая и легкая вещь, которую вы найдете, и она хорошо известна и поддерживается.

2 голосов
/ 11 мая 2010

Если вы беспокоитесь об обращении к руководству и инвесторам, и текущая система (вы упоминаете MySQL) работает, почему вы бы изменились? Вы переходите от довольно стабильного проекта к проектам, которые все еще находятся в бета-версии, и какую ценность вы добавляете, если текущая система уже работает?

1 голос
/ 12 мая 2010

Как упоминалось выше, все ресурсы CouchDB содержат etags.

Что не упоминалось, так это то, что вы можете поставить любое решение для кэширования HTTP перед CouchDB и сделать так, чтобы оно выполняло кэширование на основе etag. Таким образом, вы можете использовать Varnish, nginx, что хотите.

0 голосов
/ 12 мая 2010

Если вы постоянно сохраняете memcached, вам следует проверить Redis. Он обладает всеми функциональными возможностями memecached (и не только), а также постоянством.

Я сам не пробовал, но помню, что читал, что Redis также поддерживает memcached API.

0 голосов
/ 12 мая 2010

CouchDB уже выполняет некоторое кэширование: когда вы получаете документ, сервер также отправляет заголовок HTTP ETag (он совпадает с версией документа в CouchDB).

В следующий раз, когда браузер запрашивает тот же документ, он отправляет полученный Etag.Если документ не был изменен, сервер отвечает HTTP-кодом 304 Не изменено , и ваш браузер получает документ из его локального кэша.

Однако, если вам нужно кэшировать файлы для разныхвремя, основанное на пользовательских настройках, даже если текстовый файл изменяется, вероятно, лучше всего вам написать собственный код, который отправляет заголовки кэширования HTTP с учетом пользовательских предпочтений.

Для полноты данных другим хорошим вариантом является Redis .Вы получаете производительность, сопоставимую с Memcache, но Redis также поддерживает различные структуры данных (хэши, списки, наборы, отсортированные наборы) и элементарные операции.

0 голосов
/ 11 мая 2010

Я бы тоже взглянул на Кассандру (http://cassandra.apache.org/). Я пробовал MemcacheDB и CouchDB, как-то нашел Cassandra более привлекательным (не знаю о PHP, так как я работаю с Coldfusion). Вот соответствующий вопрос Cassandra PHP module

...