Pergunta

Precisamos de uma solução de armazenamento em cache que essencialmente cache os dados (arquivos de texto) de 3 dias a uma semana com base nas preferências e critérios do usuário. Nesse caso, o cache baseado em memória não faz sentido para nós. Fomos encaminhados para Memcachedb, mas também pensei em algumas soluções SQL.

Nosso aplicativo atual usa o RDMS (MySQL) e acho que faz sentido usar o MemcachedB, no entanto, o NOSQL atrai, pois é algo mais no horizonte. No entanto, não implantamos um aplicativo de nível de produção no NOSQL e o material beta não se estabelece bem com a gerência/investidores. Qualquer como o que você pensa e como você abordaria?

Obrigada

Foi útil?

Solução

CouchDB e MongoDB são ótimos bancos de dados, mas são escolhas terríveis para uma camada de cache no topo do seu RDBMS existente. Além do fato de que eles ainda são bastante imaturos, eles não se adequam ao propósito. Além disso, em termos de velocidade, você estaria melhor sem uma camada de cache do que usar CouchDB ou MongoDB-eles são mais lentos para ler/gravação simples do que o MySQL. Sim, os bancos de dados NoSQL são "legais", mas isso não significa que você deve usá -los para algo que eles não deveriam fazer.

Eu iria com Memcached, pois é a coisa mais rápida e leve que você encontrará, e é bem conhecido e bem apoiado.

Outras dicas

Se você está preocupado com o apelo à gerência e aos investidores, e o sistema atual (você menciona o MySQL) funciona, por que você mudaria? Você está passando de um projeto bastante estável para projetos ainda na versão beta e que valor você agrega se o sistema atual já funcionar?

Como mencionado acima, todos os recursos do CouchDB contêm ETAGs.

O que não foi mencionado é que você pode colocar algum Solução de cache HTTP na frente do CouchDB e faça com que faça o cache baseado em ETAG. Dessa forma, você pode usar o Varnish, Nginx, o que quiser.

Eu também daria uma olhada em Cassandra ( http://cassandra.apache.org/ ). Eu tentei Memcachedb e CouchDB, de alguma forma achei Cassandra mais atraente (não sei sobre PHP desde que trabalho com Coldfusion). Aqui está a pergunta relacionada Módulo Cassandra PHP

O CouchDB já faz um cache: quando você obtém um documento, o servidor também envia o cabeçalho HTTP ETAG (é o mesmo que a revisão do documento no CouchDB).

Na próxima vez que o navegador solicitar o mesmo documento que envia o ETAG recebido. Se o documento não foi modificado, o servidor responderá com o código HTTP 304 não modificado E seu navegador recupera o documento do cache local.

No entanto, se você precisar armazenar arquivos de cache para diferentes momentos com base nas preferências do usuário, mesmo que o arquivo de texto altere, provavelmente sua melhor opção é escrever um código personalizado que envie os cabeçalhos de cache HTTP da aprovação com base nas preferências do usuário.

Para completar, outra boa opção é Redis. Você obtém desempenho comparável ao Memcache, mas o Redis também suporta várias estruturas de dados (hashes, listas, conjuntos, conjuntos classificados) e operações atômicas.

Se você se mencionou com persistência, deve conferir o Redis. Possui toda a funcionalidade memetaada (e muito mais) junto com a persistência.

Eu não tentei, mas lembro -me de ler que Redis também apoiou a API em memcaches também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top