Hoje, a Thumbtack Technology publicou uma postagem no blog destacando os resultados finais do benchmark NoSQL (link).
Em junho, os bancos de dados foram comparados em 4 servidores físicos. Eu podia ver o MongoDB e o DataStax no espelho retrovisor (link). Em seguida, os bancos de dados foram comparados em 4, 6 e 8 servidores físicos.
Os testes de desempenho foram executados com duas cargas de trabalho.
- Leitura intensiva (95% leitura / 5% gravação)
- Equilibrado (50% leitura / 50% gravação)
Leitura intensiva
O MongoDB foi dimensionado de 130 mil operações / segundo com 4 servidores para 227 mil operações / segundo com 8 servidores. A latência média foi inferior a um milissegundo. A latência é ótima, a taxa de transferência é não.
O Apache Cassandra (DataStax) foi dimensionado de 60 mil operações / segundo com 4 servidores para 99 mil operações / segundo com 8 servidores. A latência média ficou abaixo de 3ms. A latência não é boa, nem a taxa de transferência.
O Couchbase Server foi dimensionado de 903 mil operações / segundo com 4 servidores para 1,71 milhão de operações / segundo com 8 servidores. A latência média foi inferior a um milissegundo. A latência é excelente, a taxa de transferência é excelente.
Equilibrado
O MongoDB foi dimensionado de 50 mil operações / segundo com 4 servidores para 85 mil operações / segundo com 8 servidores. A latência média foi inferior a 2 ms. A latência é muito boa, a taxa de transferência é muito boa ruim.
O Apache Cassandra (DataStax) foi dimensionado de 53 mil operações / segundo com 4 servidores para 89 mil operações / segundo com 8 servidores. A latência média ficou abaixo de um milissegundo. A latência é ótima, o througput é não.
O Couchbase Server foi dimensionado de 800 mil operações / segundo com 4 servidores para 1,24 milhão de operações / segundo com 8 servidores. A latência média foi inferior a dois milissegundos. A latência é muito boa, a taxa de transferência é excelente.
Conclusão
O Apache Cassandra (DataStax) atende aos requisitos de baixa latência para solicitações de gravação, com baixa taxa de transferência. Ele não foi projetado para desempenho de leitura. Ele não aproveita a memória de forma eficaz (link). O Apache Cassandra foi projetado para uma época em que os servidores tinham pouca memória e discos giratórios.
O MongoDB atende aos requisitos de baixa latência para solicitações de leitura, com baixa taxa de transferência. Ele não foi projetado para desempenho de gravação. Ele é limitado por uma topologia mestre/escravo, bloqueio em todo o banco de dados (um por db por instância) e muito mais. O MongoDB foi projetado para... bem, não tenho certeza para o que foi projetado.
O Couchbase Server atende aos requisitos de baixa latência para leitura e solicitações de escrita, em qualquer rendimento. Ao contrário do MongoDB, ele não tem problemas de topologia e bloqueio. Ao contrário do Apache Cassandra, ele aproveita a memória de forma eficaz com um cache de objetos integrado e gerenciado. O Couchbase Server foi projetado para leitura e desempenho de gravação.
Não consigo ver o MongoDB e o DataStax no retrovisor. Não mais. Onde está você?
Tudo isso está no white paper (aqui).
Veja a opinião de Doug sobre os resultados de benchmark (aqui).
Talvez precisemos de uma seção do Couchbase se/após desenvolvermos conteúdo para esse banco de dados NoSQL também.