Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Qual é o mecanismo de banco de dados orientado a documentos mais eficiente para armazenar milhares de documentos de tamanho médio?


Depende muito do caso de uso específico. Se você deseja consultar seus documentos em algo que não seja o ID, não deve escolher o Redis. Com o Redis, você teria que implementar seu próprio esquema de indexação, e isso é desnecessário.

Na verdade, existem muito poucos casos em que o Redis seria uma opção melhor para o que eu acho que é o seu caso de uso (não que haja algo de errado com o Redis, costumo usar o Redis e o Mongo, mas para coisas diferentes). Parece-me que você tem objetos que podem ser representados como hashes. Tanto o Mongo quanto o Redis podem armazenar hashes, mas o Mongo pode fazer muito mais. Com o Mongo você pode pesquisar um documento em qualquer um de seus campos, pode adicionar um índice para agilizar, e o campo nem precisa ser uma string, pode ser um número, data, lista, até mesmo um documento (ou uma lista de documentos), e todos os documentos não precisam caber na RAM (embora isso mude quando o recurso diskstore do Redis for concluído). Redis não tem nada disso. Você teria que implementar índices para poder pesquisar, não pode armazenar nada além de strings (o que às vezes é realmente inconveniente) e não pode armazenar nada além de hashes simples (sem recorrer a implementar ou usar algum tipo de mapeamento camada como Ohm).

Você também menciona a velocidade. O Redis é incrivelmente rápido e o Mongo também não é ruim, no entanto, para o seu caso de uso, o uso do Mongo pode ser mais rápido. Observe que eu digo usando Mongo, não que o próprio Mongo fosse mais rápido. O problema é que, se você usar o Redis e ainda quiser pesquisar um documento usando um campo que não seja a chave primária, você teria, como mencionei acima, que implementar isso sozinho. Uma pesquisa teria que fazer pelo menos duas solicitações ao Redis, uma para procurar no índice e outra para obter o documento. Se uma pesquisa resultar em mais de um documento, você terá que fazer uma solicitação para cada documento individualmente. A sobrecarga de fazer todas essas solicitações provavelmente tornaria o uso do Redis pior do que o uso do Mongo. Na minha experiência, qualquer coisa que não seja o cache, fila ou similar mais simples precisa fazer mais de uma solicitação ao Redis para obter tudo o que precisa.

Portanto, com as informações limitadas à minha disposição, recomendo o MongoDB.