Alto rendimiento

Análisis de la referencia NoSQL

Vamos a diseccionar el Benchmark NoSQL de otoño de 2014.

Apache Cassandra / DataStax Enterprise. MongoDB. Servidor Couchbase.

Vamos.

Hardware

  Servidor (8) Cliente (32)
Procesador Intel Xeon E5-2620 V2 (2) Intel Core i5-4440
Memoria 64 GB 8 GB
Almacenamiento (datos) SSD SATA 6Gb/s de 100 GB (2)  
Almacenamiento (OS) SSD SATA 6Gb/s de 80 GB  

Red: 96 Gb/s (conmutador de 1 Gb/s con 48 puertos)

Espera, ¿96Gb/s? Es una matriz full duplex. (enlace)

¿Por qué no realizar pruebas comparativas con decenas de servidores?

Prefiero las pruebas realizadas en servidores bare-metal. No es barato.

Datos

  4 Nodos 6 Nodos 8 Nodos
Entradas 20M 30M 40M
Copias 2 2 2
Feilds 10 10 10
Campo 150 bytes 150 bytes 150 bytes
Entrada 1.500 bytes 1.500 bytes 1.500 bytes
Datos 55,8 GB 83,8 GB 111,6 GB

¿Por qué no comparar con terabytes de datos?

El objetivo es identificar el rendimiento y la escalabilidad de las bases de datos cuando los conjuntos de trabajo están en memoria. El conjunto de trabajo podría haber sido de 32 GB, o podría haber sido de 384 GB. No habría importado. Cabía en la memoria. El conjunto de trabajo podría haber sido 10% de los datos, o podría haber sido 90% de los datos. No habría importado. Cabía en la memoria.

Pensemos en los clientes que ven películas en Netflix. Hay muchísimos clientes. Sin embargo, sólo una fracción de ellos está viendo películas en un momento dado. Es un conjunto de trabajo. Pensemos en los usuarios de aplicaciones web y móviles. Yo juego a Words with Friends con mi mujer. Jugamos dos o tres partidas a la vez. De vez en cuando abro la aplicación. Me paso unos minutos, si no varios, jugando a las palabras adecuadas para machacarla. Nos encanta Amazon Prime. Sin embargo, solo compramos de vez en cuando. Cuando lo hacemos, formamos parte de un grupo de trabajo. Clientes que están comprando en ese momento. No todos los clientes. Luego están los datos en tiempo real. Consideremos el análisis del flujo de clics y los datos de los sensores. El conjunto de trabajo son los usuarios que actualmente visitan el sitio web. No todos los usuarios. El conjunto de trabajo es el último minuto, la última hora o el último día de los datos de los sensores. No todos los datos de los sensores.

Mientras que un conjunto de trabajo en memoria mejora el rendimiento de lectura, no mejora el rendimiento de escritura.

Todos los datos eran persistentes.

Configuración

Coherencia

Apache Cassandra, eventualmente consistente (ONE). MongoDB y Couchbase Server, consistentes.

Durabilidad / Persistencia

Apache Cassandra y MongoDB y Couchbase Server, persistencia asíncrona.

Nota: El registro de commit fue deshabilitado en Apache Cassandra.

Replicación

Hay dos ejemplares.

Topología

Apache Cassandra y Couchbase Server, un nodo por servidor. MongoDB, dos nodos por servidor.

Nota: MongoDB se basa en una topología maestro/esclavo. Para garantizar que todos los servidores respondan a las solicitudes de lectura/escritura de los clientes, se instalaron un maestro y un esclavo (de diferentes fragmentos) en cada servidor.

Cargas de trabajo

Lectura Pesada: 95% Lecturas / 5% Escrituras
Equilibrado: 50% Lecturas / 50% Escrituras

Nodos de base de datos e hilos cliente

Las pruebas se realizaron en despliegues de cuatro, seis y ocho servidores.

Las pruebas se realizaron con un número creciente de hilos de cliente.

Resultados

Leer más

Apache Cassandra

El rendimiento máximo se alcanza entre 248 y 496 hilos de cliente: 99.000 ops/s.
Añadir nodos aumenta el rendimiento.

La latencia nunca es inferior a 1 ms.
Añadir nodos disminuye la latencia.

MongoDB

El rendimiento máximo se alcanza entre 132 y 198 hilos de cliente: 227.000 ops/s.
Añadir nodos aumenta el rendimiento.

La latencia es inferior a 1 ms hasta 231 subprocesos de cliente: 200K ops/s.
Añadir nodos disminuye la latencia.

Servidor Couchbase

El rendimiento máximo es de 2.970 hilos de cliente: 1,62M ops/s.
Añadir nodos aumenta el rendimiento.

La latencia es inferior a 1 ms hasta 1.320 subprocesos de cliente: 1,44M ops/s.
Añadir nodos disminuye la latencia.

MongoDB contra Couchbase Server

Comparemos el rendimiento y la latencia de los servidores MongoDB y Couchbase con una carga equivalente.

El rendimiento de Couchbase Server aumenta cuando se incrementa la carga. MongoDB, no tanto.

La latencia de Couchbase Server es inferior a 0,6 ms hasta 264 hilos de cliente: 642K ops/s.
MongoDB es inferior a 1 ms hasta 231 hilos de cliente: 200K ops/s

Explicación

  • La latencia de lectura de MongoDB se beneficia de los archivos mapeados en memoria. Sin embargo, los archivos mapeados en memoria no rinden tan bien como la memoria directa. Eso, y que MongoDB se basa en una topología arcaica y compleja. De hecho, el benchmark comparó MongoDB con 16 nodos con Couchbase Server con 8 nodos.

Servidor Apache Cassandra contra Couchbase

El rendimiento de Couchbase Server aumenta cuando se incrementa la carga. Apache Cassandra, no tanto.

La latencia de Couchbase Server es inferior a 0,7 ms hasta 792 hilos de cliente: 1,22M ops/s.
La latencia de Apache Cassandra nunca es inferior a 1 ms.

Explicación

Apache Cassandra se basa en una caché de filas pobre y deshabilitada por defecto (JIRA).

Lectura y escritura equilibradas

Apache Cassandra

El rendimiento máximo se alcanza entre 272 y 544 hilos de cliente: 89.000 ops/s.
Añadir nodos aumenta el rendimiento.

La latencia es inferior a 1 ms hasta 680 hilos de cliente: 79K ops/s.
Añadir nodos disminuye la latencia.

MongoDB

El rendimiento máximo es de 256 hilos de cliente: 85.000 ops/s.
Añadir nodos aumenta el rendimiento.

La latencia nunca es inferior a 1 ms.
Añadir nodos disminuye la latencia.

Servidor Couchbase

El rendimiento máximo es de 3.000 hilos de cliente: 1,18 millones de operaciones/s.
Añadir nodos aumenta el rendimiento.

La latencia es inferior a 1 ms hasta 480 subprocesos de cliente: 499K ops/s.
Añadir nodos disminuye la latencia.

MongoDB contra Couchbase Server

Comparemos el rendimiento y la latencia de MongoDB y Couchbase Server con una carga equivalente.

El rendimiento de Couchbase Server aumenta cuando se incrementa la carga. MongoDB, no tanto.

La latencia de Couchbase Server es inferior a 0,8 ms hasta 360 hilos de cliente: 457K ops/s.
La latencia de MongoDB nunca es inferior a 1ms.

Explicación

Bueno, una sola cerradura no ayuda (manual | JIRA). El bloqueo a nivel de documento se solicita desde 2010.

Servidor Apache Cassandra contra Couchbase

El rendimiento de Couchbase Server aumenta cuando se incrementa la carga. Apache Cassandra, no tanto.

La latencia de Couchbase Server es inferior a 1ms hasta 480 hilos de cliente: 499K ops/s.
La latencia de Apache Cassandra es inferior a 1 ms hasta 680 hilos de cliente: 79K ops/s.

Explicación

La latencia de escritura de Apache Cassandra se beneficia de la memtable, pero Couchbas Server fue diseñado para la concurrencia.

Conclusión

  Lee Escribe
  Bajo rendimiento Alto rendimiento Bajo rendimiento Alto rendimiento
Apache Cassandra Pobre Pobre Genial Pobre
MongoDB Genial Pobre Pobre Pobre
Servidor Couchbase Genial Genial Genial Bien

¿Preguntas?

Comente o únase al debate en Reddit o HN.

Puede descargar el libro blanco aquí.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Shane Johnson

Shane K Johnson fue Director de Marketing de Producto en Couchbase. Antes de Couchbase, ocupó varios puestos en desarrollo y evangelización con formación en Java y sistemas distribuidos. Ha sido consultor de organizaciones de los sectores financiero, minorista, de las telecomunicaciones y de los medios de comunicación para diseñar e implantar arquitecturas basadas en sistemas distribuidos para datos y análisis.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.