MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Alguém já trabalhou com Aerospike? Como ele se compara ao MongoDB?


Eu usei Aerospike, MongoDB e Redis e testei muitos outros bancos de dados NoSQL. Eu diria que o Aerospike é muito bom no que faz, mas é diferente do MongoDB. Tudo depende do que você está planejando usar um banco de dados. Posso dar um exemplo do que estou usando para meus diferentes bancos de dados. Eu também posso falar sobre as diferenças entre eles e discutir os benefícios do Aerospike.

MongoDB

Estou usando o MongoDB como uma alternativa SQL. No meu banco de dados MongoDB tenho muitos campos diferentes. Muitas vezes, os campos estão mudando e precisarei aleatoriamente consultar vários campos. É um banco de dados muito não estruturado e o MongoDB é incrível nisso. Também usei o MongoDB como um armazenamento de valor-chave padrão. Ele funciona bem, mas eu tive o MongoDB com desempenho abaixo do ideal na escala de transações e na escala de tamanho do banco de dados. É certo que o banco de dados pode ter sido otimizado um pouco melhor, mas acho muito difícil encontrar documentação sobre como configurar o MongoDB corretamente em diferentes situações.

Redis

Redis é um armazenamento de valor-chave puro. O maior problema do Redis é que ele é puramente na memória (ele usará o disco como backup, mas você não pode armazenar mais informações do que a memória disponível). É extremamente rápido para o que é usado. Eu pessoalmente o uso para um pequeno banco de dados transacional:faço funções muito simples em teclas como contar quantas vezes um evento aconteceu para um determinado usuário. Também faço pesquisas rápidas na memória que preciso mapear para valores diferentes. O Redis é uma ótima ferramenta para um pequeno conjunto de dados e é extremamente rápido. A configuração é muito fácil também.

Aeropique

Eu pessoalmente uso o Aerospike para substituir o Redis quando é hora de escalar. Do meu entendimento, pode ser usado para mais. Assim como o Redis, o Aerospike é uma loja de valor-chave. Acredito que a edição de código aberto também suporta índices secundários que o Redis não suporta (não usei índices secundários em produção, mas fiz poucos testes neles).

A melhor característica do Aerospike é sua capacidade de escalar. O maior problema que eu precisava resolver ao analisar o Aerospike era dimensionar meu sistema para lidar com grandes conjuntos de dados e permanecer extremamente rápido. O projeto para o qual uso o Aerospike tem requisitos muito rigorosos de velocidade. Eu costumo fazer 3-4 pesquisas de banco de dados além de outros processamentos e preciso ter tempos de transação abaixo de 50ms. Algumas pesquisas estão em conjuntos de dados com mais de 300 GB. Não consegui encontrar uma solução para manter esses dados e torná-los acessíveis em um período de tempo razoável. O Redis obviamente não funcionará a menos que eu tenha uma máquina com mais de 300 GB de RAM. O MongoDB começou a ter um desempenho extremamente ruim em um tamanho muito inferior a 300 GB. Então dei uma chance ao Aerospike, e ele conseguiu lidar com tudo muito bem. A melhor coisa sobre o Aerospike:à medida que meu conjunto de dados cresceu, não tive que fazer muito mais do que montar uma nova caixa quando necessário. A velocidade manteve-se consistente.

Também acho a documentação do Aerospikes muito boa. Não é muito difícil de configurar e é muito fácil encontrar respostas para qualquer problema que surja.

Conclusão

Então, o Aerospike é tão bom quanto eles afirmam? Pessoalmente, não vi nada menos do que o que foi alegado. Eu não tive que escalar para 1 milhão de TPS, mas acredito que com hardware suficiente isso seria possível. Também acredito que os números mostram uma diferença de velocidade entre Aerospike e MongoDB. Aerospike é um banco de dados muito mais "configurado" e "planejado" que o MongoDB. Por causa disso, o Aerospike será muito mais rápido em escala do que o MongoDB. Ele só precisa se preocupar com um único (ou no caso de índices secundários, algumas centenas) índices ao contrário do MongoDB, que pode mudar dinamicamente. A pergunta que você realmente precisa fazer é o que você está tentando realizar com seu banco de dados. Em seguida, verifique qual banco de dados atenderá melhor às suas necessidades. Se você precisa de um banco de dados de armazenamento de chave-valor escalável, rápido, eu diria que o Aerospike é provavelmente o melhor que existe.

Deixe-me saber se você tiver alguma dúvida específica ou precisar de algo esclarecido. Eu provavelmente seria capaz de ajudá-lo.