O MongoDB publicou outro benchmark realizado pela United Software Associates.
Os benchmarks são uma ferramenta útil para avaliar desempenho do banco de dados. Mas, para serem úteis, elas devem ser transparentes e repetíveis. Se não atenderem a esses padrões, os resultados serão questionáveis.
Em benchmarks recentes, o Couchbase e o MongoDB adotaram duas abordagens diferentes. O Couchbase documentou claramente a configuração completa e incluía os resultados de cada teste. O MongoDB não o fez.
As tabelas abaixo ilustram as diferentes abordagens adotadas pela Avalon Consulting, LLC e pela United Software Associates:
United Software Associates | Avalon Consulting, LLC | |
YCSB | ||
Entradas / Operações | 400M / 100M | 300M / 100M |
Tamanho do valor | Ausente | 1K |
Tamanho do conjunto de dados | Ausente | 286 GB |
Distribuição de solicitações | Zipfiano | Uniforme |
Banco de dados | ||
Nós | Ausente | MongoDB: 9 Servidor Couchbase: 9 |
Réplicas | Ausente | 3 (1 primária, 2 secundárias) |
Replicação | Ausente | MongoDB: Assíncrono Servidor Couchbase: Async |
Persistência | Ausente | MongoDB: Assíncrono Servidor Couchbase: Async |
Memória configurada (por nó) | Ausente | MongoDB: 30 GB Servidor Couchbase: 30GB |
Tamanho total do conjunto de dados (com réplicas) | Ausente | 858 GB |
Dados primários residentes na memória | Ausente | 32% |
Versão | ||
Banco de dados | MongoDB: 3.0.3 Servidor Couchbase: 3.0.2 |
MongoDB: 3.0.0 Servidor Couchbase: 3.0.2 |
Cliente | MongoDB: 3.0.0 Servidor Couchbase: 2.1.2 |
MongoDB: 2.1.3 Servidor Couchbase: 2.1.0 |
Hardware | ||
Servidores | Banco de dados: 3 YCSB: 1 |
Banco de dados: 9x AWS EC2 i2.2xlarge YCSB: 2-23x AWS EC2 r2.8xlarge |
Processadores | Ambos: 2x 3.0GHz | Banco de dados: 8 vCPU (2,5 GHz) YCSB: 32vCPU (2,5 GHz) |
Memória | Ambos: 96 GB | Banco de dados: 61 GB YCSB: 244 GB |
Armazenamento | Ambos: 2x 960GB SSD | Banco de dados: 2x SSD de 800 GB YCSB: 2x 320GB SSD |
Trabalho em rede | Ambos: 10GbE | Ambos: alto |
SO | Ambos: Ubuntu 14.10 | Banco de dados: CentOS 6 YCSB: Amazon Linux |
SO | ||
Páginas enormes transparentes (THP) | Desativado | Desativado |
NUMA | Desativado | Desativado |
Espero que o MongoDB e a DataStax me ajudem a aprimorar esse modelo para futuros benchmarks.
Resultados de benchmark da United Software Associates
Eles não publicaram os resultados de todos eles publicaram os resultados de um deles.
O benchmark indica que o número ideal de threads para cada banco de dados é 150 ou 350, dependendo da carga de trabalho, mas não indica o número de threads para os resultados publicados.
Carga de trabalho A Taxa de transferência
Fios | MongoDB | Servidor Couchbase |
105 | Ausente | Ausente |
140 | Ausente | Ausente |
175 | Ausente | Ausente |
210 | Ausente | Ausente |
245 | Ausente | Ausente |
280 | Ausente | Ausente |
315 | Ausente | Ausente |
350 | Ausente | Ausente |
Resultados - Latência da carga de trabalho A
Fios | MongoDB | Servidor Couchbase |
105 | Ler: Desaparecido Escrever: Missing |
Ler: Desaparecido Escrever: Missing |
140 | Ler: Desaparecido Escrever: Missing |
Ler: Desaparecido Escrever: Missing |
175 | Ler: Desaparecido Escrever: Missing |
Ler: Desaparecido Escrever: Missing |
210 | Ler: Desaparecido Escrever: Missing |
Ler: Desaparecido Escrever: Missing |
245 | Ler: Desaparecido Escrever: Missing |
Ler: Desaparecido Escrever: Missing |
280 | Ler: Desaparecido Escrever: Missing |
Ler: Desaparecido Escrever: Missing |
315 | Ler: Desaparecido Escrever: Missing |
Ler: Desaparecido Escrever: Missing |
350 | Ler: Desaparecido Escrever: Missing |
Ler: Desaparecido Escrever: Missing |
Avalon Consulting, LLC Resultados de referência
Eles publicaram os resultados de todos testes e indicou o número de threads para eles.
Carga de trabalho A Taxa de transferência
Fios | MongoDB | Servidor Couchbase |
105 | 61K | 110K |
140 | 65K | 141K |
175 | 67K | 154K |
210 | 70K | 170K |
245 | 74K | 193K |
280 | Latência máxima excedida | 238K |
315 | Latência máxima excedida | 245K |
350 | Latência máxima excedida | 252K |
Resultados - Latência da carga de trabalho A
Fios | MongoDB | Servidor Couchbase |
105 | Leitura: 1,42 ms Escrever: 2,05 ms |
Leitura: 0,78ms Gravação: 0,76 ms |
140 | Leitura: 2,01 ms Gravação: 2,97 ms |
Leitura: 0,79ms Gravação: 0,78 ms |
175 | Leitura: 3,16 ms Gravação: 3,54ms |
Leitura: 0,89ms Gravação: 0,88 ms |
210 | Leitura: 3,5 ms Gravação: 4,49ms |
Leitura: 0,93 ms Gravação: 0,92 ms |
245 | Leitura: 4,19 ms Gravação: 5,38ms |
Leitura: 0,92 ms Gravação: 0,91 ms |
280 | Latência máxima excedida | Leitura: 0,92 ms Gravação: 0,92 ms |
315 | Latência máxima excedida | Leitura: 1,06 ms Gravação: 0,99 ms |
350 | Latência máxima excedida | Leitura: 1,22 ms Gravação: 1,22 ms |
Configuração de referência
Um benchmark, se você se importar, deve responder às seguintes perguntas:
- Qual era a configuração do hardware?
- Como o sistema operacional foi configurado?
- Quais eram as versões do banco de dados e do cliente?
- Como os bancos de dados foram configurados?
- Como o YCSB foi configurado?
Então, qual configuração está faltando nesse benchmark da United Software Associates?
- O número de nós
- A configuração da réplica (# de réplicas
- A configuração de replicação (assíncrona ou sincronizada)
- A configuração de persistência (async ou sync)
- O tamanho dos valores
- O tamanho do conjunto de dados
- O tamanho do cache (por nó)
- O tamanho do conjunto total de dados (incluindo réplicas)
- A porcentagem de dados primários residentes na memória
- Os resultados de todas as execuções
- O número de threads para todas as execuções publicadas
Além disso, o repositório do GitHub mencionado neste white paper da United Software Associates não inclui a configuração do cliente para MongoDB, Cassandra ou Couchbase Server.
E quanto aos roteadores e servidores de configuração do MongoDB?
Eles foram implantados? Se sim, onde?
Não sei, pois esse benchmark não inclui todos da configuração. A primeira referência incluído mais da configuração, mas havia uma série de erros. Com esse benchmark, eles podem ter corrigido os erros, mas não incluíram todos da configuração.
Linha de fundo
É importante que os benchmarks sejam confiáveis. Qualquer pessoa deve ser capaz de reproduzir um benchmark e validar seus resultados. Toda a configuração deve ser fornecida e, de preferência, deve ser realizada na infraestrutura de nuvem. Caso contrário, os fornecedores podem manipular a configuração para fazer com que as comparações injustas pareçam justas.
Isso não é útil para ninguém.
Recursos
MongoDB + Benchmark da United Software Associates
Livro Branco | Código
Couchbase + Avalon Consulting, LLC Benchmark
Livro Branco | Código
Discutir sobre Notícias Hacker