Memcachedb Versus Versus MongoDB CouchDB en termes de solution de mise en cache à base de fichiers?

StackOverflow https://stackoverflow.com/questions/2813204

Question

Nous avons besoin d'une solution de mise en cache qui met en cache essentiellement données (fichiers texte) allant de 3 jours à une semaine en fonction des préférences de l'utilisateur et les critères. Dans ce cas, la mise en cache à base de mémoire n'a pas de sens pour nous. On nous a cité memcachedb mais je pensais aussi quelques pas de solutions SQL.

Notre application actuelle utilise SGBDR (MYSQL) et je pense qu'il est logique d'utiliser memcachedb mais NoSQL ne fait pas appel car il est quelque chose de plus à l'horizon. Cependant, nous n'avons pas déployé une application de niveau de production sous NoSQL et la substance bêta ne se contente pas bien avec la direction / investisseurs. Toute façon, quelles sont vos pensées et comment voulez-vous y remédier?

Merci

Était-ce utile?

La solution

CouchDB et MongoDB sont les deux grandes bases de données, mais ils sont des choix terribles pour une couche de cache au-dessus de votre SGBDR existant. Outre le fait qu'ils sont encore assez immatures, ils ne conviennent pas le but du tout. , Sage vitesse vous serais également mieux aller sans une couche de cache que d'utiliser CouchDB ou MongoDB - ils sont à la fois plus lent pour la lecture simple, / MySQL même que écrit. Oui, les bases de données NoSQL sont « cool », mais cela ne signifie pas que vous devez les utiliser pour quelque chose qu'ils ne sont pas censés le faire.

Je partirais avec Memcached, car il est à peu près le plus rapide et le plus léger chose que vous trouverez, et il est bien connu et bien pris en charge.

Autres conseils

Si vous êtes inquiet au sujet de l'appel à la direction et aux investisseurs, et le système actuel (vous mentionnez MySQL) fonctionne, pourquoi voudriez-vous changer? Vous vous déplacez d'un projet assez stable à des projets encore en version bêta, et quelle valeur vous ajouter si le système actuel fonctionne déjà?

Comme mentionné ci-dessus, toutes les ressources CouchDB contiennent etags.

Ce qui n'a pas été mentionné est que vous pouvez mettre any solution mise en cache HTTP devant CouchDB et avoir fait la mise en cache à base de ETAG. De cette façon, vous pouvez utiliser Varnish, nginx, tout ce que vous voulez.

Je prendrais aussi un coup d'œil à Cassandra ( http://cassandra.apache.org/ ). J'ai essayé memcachedb et CouchDB, a trouvé en quelque sorte Cassandra plus attrayante (J'sais sur PHP depuis que je travaille avec Coldfusion). Voici question connexe Module Cassandra PHP

CouchDB fait déjà une mise en cache: lorsque vous recevez un document, le serveur envoie également l'en-tête ETag HTTP (c'est la même que la révision du document dans CouchDB).

La prochaine fois que le navigateur demande le même document, il envoie l'ETAG reçu. Si le document n'a pas été modifié le serveur répond avec le code HTTP 304 Not Modified et votre navigateur récupère le document à partir de son cache local.

Toutefois, si vous devez mettre en cache les fichiers pour différents temps en fonction des préférences de l'utilisateur, même si le fichier texte des modifications, probablement votre meilleure option est d'écrire du code personnalisé qui envoie les en-têtes de mise en cache HTTP appropriée en fonction des préférences de l'utilisateur.

Pour compléter une autre bonne option est Redis . Vous obtenez des performances comparables à Memcache mais Redis supporte différentes structures de données (hash, listes, ensemble, classés ensembles) et opérations atomiques.

Si vous Memcached avec persévérance, vous devriez vérifier Redis. Il a toutes les fonctionnalités memecached (et plus), ainsi que la persistance.

Je ne l'ai pas essayé moi-même, mais je ne me souviens avoir lu que Redis a également soutenu l'API memcached ainsi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top