Thumbtack ha publicado hoy una excelente entrada en su blog (enlace). Destaca los resultados preliminares de las pruebas de rendimiento ejecutadas con Couchbase Server, MongoDB y DataStax Enterprise (Apache Cassandra). Los resultados finales se incluirán en un informe comparativo. Thumbtack consultó con Couchbase, MongoDB y DataStax para asegurarse de que las bases de datos estaban configuradas para un rendimiento óptimo basado tanto en la carga de trabajo como en el hardware. ¿El resultado? Couchbase Server superó a MongoDB y DataStax Enterprise tanto en cargas de trabajo de lectura intensiva como en cargas de trabajo equilibradas.
El rendimiento es un requisito fundamental de las bases de datos. Tiene un impacto directo en la experiencia del usuario y la satisfacción del cliente. Una base de datos de alto rendimiento permite a muchos usuarios acceder a los datos al mismo tiempo y hacerlo sin demora. Tiene un impacto directo en el coste. Una base de datos de alto rendimiento requiere menos nodos. Si se despliega en la nube, requiere menos instancias, menos suscripciones y genera menos gastos. Si se despliega en un centro de datos, requiere menos servidores, menos suscripciones y resulta en menos consumo de energía (enlace). Reduce los costes.
Ejecución
- Las pruebas de rendimiento se ejecutaron con YCSB.
- Las pruebas de rendimiento se ejecutaron en servidores dedicados.
- Las pruebas de rendimiento se ejecutaron en cuatro servidores.
- Las pruebas de rendimiento se ejecutaron con dos cargas de trabajo operativas:
- Lectura intensiva: 95% de lectura / 5% de escritura
- Equilibrada: 50% Lectura / 50% Escritura
- Las pruebas de rendimiento se ejecutaron con cargas de varios clientes.
Datos
- Valores: 20M
- Tamaño del valor: 150 bytes
- Réplicas: 2
- 90% En memoria
Intensivo de lectura
Couchbase Server, 6,5 veces el rendimiento de MongoDB.
Couchbase Server, 7,5 veces el rendimiento de DataStax Enterprise.
MongoDB, el doble de latencia de lectura que Couchbase Server.
DataStax Enterprise, 3,1 veces la latencia de lectura de Couchbase Server.
* La latencia se mide en milisegundos.
** La carga de trabajo para MongoDB se redujo de 96 hilos de cliente a 64 hilos de cliente para reducir la latencia.
No es ninguna sorpresa.
En primer lugar, Couchbase Server cuenta con una caché integrada en memoria para ofrecer el máximo rendimiento de lectura (enlace). Fue diseñado para el rendimiento, y eso requiere un acceso eficiente a los datos en la memoria.
En segundo lugar, Couchbase Server aprovecha los clientes inteligentes. Los clientes de Couchbase Server requieren una petición (cliente a nodo) mientras que los clientes de MongoDB y DataStax Enterprise requieren dos peticiones (cliente a nodo, nodo a nodo). Los clientes de Couchbase Server determinan en qué nodo están almacenados los datos y le envían una petición de lectura directa. Sin embargo, los clientes de MongoDB envían peticiones de lectura a los routers. El router determina en qué nodo están almacenados los datos y le envía la petición de lectura (enlace). Los clientes de DataStax Enterprise envían solicitudes de lectura a nodos aleatorios. El nodo aleatorio determina en qué nodo están almacenados los datos y le reenvía la petición de lectura (enlace).
Una solicitud es más rápida que dos.
Equilibrado
Couchbase Server, 7,6 veces el rendimiento de MongoDB.
Couchbase Server, 2,7 veces el rendimiento de DataStax Enterprise.
MongoDB, 3 veces la latencia de escritura de Couchbase Server.
* La latencia se mide en milisegundos.
** La carga de trabajo para MongoDB se redujo de 96 hilos de cliente a 64 hilos de cliente para reducir la latencia.
No es ninguna sorpresa.
Para ofrecer el mayor rendimiento de escritura, Couchbase Server escribe primero en una caché integrada en memoria. Después, sincroniza la caché con el dispositivo de almacenamiento para mayor durabilidad (enlace).
Al igual que las operaciones de lectura, MongoDB y DataStax Enterprise requieren dos peticiones para las operaciones de escritura. Couchbase Server no lo hace.
Couchbase Server escala las escrituras a todos los nodos de un despliegue, mientras que MongoDB limita las escrituras a los nodos primarios (enlace). Como resultado, los cuatro nodos de Couchbase Server ejecutaron operaciones de escritura. Sin embargo, sólo dos nodos MongoDB ejecutaron operaciones de escritura. Los dos nodos restantes eran nodos secundarios.
Couchbase Server implementa el bloqueo a nivel de documento. Esto permite a los nodos de Couchbase Server ejecutar muchas escrituras a la vez. Sin embargo, MongoDB implementa un único bloqueo por base de datos (enlace). Los nodos MongoDB están limitados a ejecutar una sola escritura a la vez por base de datos.
DataStax Enterprise mantuvo una baja latencia en las solicitudes de escritura durante las cargas de trabajo de escritura intensiva. Sin embargo, no pudo hacerlo con las peticiones de lectura. Como resultado, el aumento de la latencia de lectura redujo el rendimiento.
Notas
A pesar de estar configurado para una fuerte consistencia, el rendimiento de Couchbase Server fue entre 2 y 7 veces superior al de MongoDB y DataStax Enterprise.
MongoDB fue configurado para una consistencia eventual.
Como resultado, MongoDB ejecuta operaciones de lectura en ambos nodos primarios y nodos secundarios para aumentar el rendimiento. Reduce las operaciones de lectura. Sin embargo, sacrifica la consistencia al permitir que las operaciones de lectura devuelvan datos inconsistentes. Con la configuración por defecto, MongoDB ejecuta operaciones de lectura en los nodos primarios para mantener la consistencia (enlace). Sin embargo, disminuye el rendimiento.
DataStax Enterprise se configuró para una coherencia eventual.
Como resultado, DataStax Enterprise ejecuta operaciones de lectura y escritura con un único nodo para aumentar el rendimiento. Sin embargo, sacrifica la coherencia al permitir que las operaciones de lectura devuelvan datos incoherentes. Cuando se configura para consistencia fuerte, DataStax Enterprise ejecuta operaciones de lectura y escritura en múltiples nodos (es decir, quórum) para mantener la consistencia (enlace). Sin embargo, disminuye el rendimiento.
Rendimiento, latencia y concurrencia
Thumbtack esperaba que Couchbase Server superara a la competencia. Está diseñado para la escalabilidad y el rendimiento, y esta ingeniería se refleja en la arquitectura. Está diseñado para un alto rendimiento, baja latencia y concurrencia.
El rendimiento de Couchbase Server es aproximadamente el doble que el de MongoDB y DataStax Enterprise con una carga de trabajo ligera. Esto se debe a que su latencia es aproximadamente la mitad que la de los otros. Si la prueba de rendimiento se realizara con un único hilo cilíndrico, la latencia determinaría el rendimiento. Sin embargo, la concurrencia es un factor decisivo. Couchbase Server aún no está saturado. Al aumentar la carga de trabajo, el rendimiento aumentó. MongoDB y DataStax Enterprise están más o menos saturados con cargas de trabajo ligeras. Bajo cargas de trabajo mayores, su latencia aumentó.
* El x-asix es el número total de hilos de cliente YCSB.
Resumen
Couchbase Server no sólo ofrece el máximo rendimiento, sino que es fácil de escalar (enlace) y es coherente (enlace).
PDF con una descripción completa de la prueba y los resultados preliminares.
El informe completo ya está disponible disponible.
interesante, ¿podría compartir el código fuente de la prueba? thx
Hola Alonso,
Están utilizando una bifurcación de YCSB e incluirán los parámetros de configuración en el informe final de evaluación comparativa.
https://github.com/brianfrankc…
¿Alguna prueba de la velocidad relativa de MapReduce?
Hola Serge,
Es una gran pregunta. Aunque no creo que YCSB pueda utilizarse para realizar consultas de referencia, sospecho que podría ampliarse para hacerlo. A medida que todas las bases de datos NoSQL añadan un soporte de consultas más rico, es muy posible que eso ocurra.
https://github.com/brianfrankc…
¿No veo nada sobre la versión de la base de datos, los detalles del hardware y la optimización de cada base de datos? ¿Puede actualizar esta información?
Encontrará todos los detalles en el informe final. También actualizaremos este post.
http://info.couchbase.com/2014…
Qué versión de las bases de datos NoSQL se utiliza en el benchmark.
¿Por qué se desactivan los registros de commit en Cassandra?
Este no es un entorno de producción típico con los registros de commit desactivados.
Hola Tom,
Couchbase Server 2.5.1 / Cassandra 2.0.9 / MongoDB 2.6.4
El registro de commits se desactivó para mejorar el rendimiento de Cassandra.
[...] Vea los resultados aquí. [...]