No es la primera vez que hablo de FUD (enlace). Sin embargo, es la primera vez que me dirijo a FUD dirigido a Couchbase y eso es una gran cosa. Después de todo, sé lo que pasa después.

Primero te ignoran, luego se ríen de ti, después luchan contra ti y entonces ganas. - Gandhi

Creo que la mejor manera de hacer frente al FUD es abordarlo. Hoy, voy a abordar una entrada de blog de DataStax (enlace).

Escrituras asíncronas

Como MongoDB circa 2013, Couchbase realiza escrituras asíncronas por defecto.

Esto no es cierto. Sí, MongoDB realizaba escrituras asíncronas por defecto. No respondía a peticiones de escritura (enlace). Sin embargo, este ya no es el caso con MongoDB 2.6 (enlace). Couchbase Server no realiza escrituras asíncronas. Responde a peticiones de escritura.

Persistencia y rendimiento

Se puede forzar a Couchbase a que persista las escrituras en disco, pero al hacerlo se reduce el rendimiento; como no hay commitlog ni journaling, cada escritura debe actualizar el btree de Couchbase y fsync.

Esto es engañoso. Sí, Couchbase Server escribe primero en memoria. Después, sincroniza los datos en memoria con el dispositivo de almacenamiento. Sin embargo, también lo hace DataStax Enterprise (Apache Cassandra). Por defecto, no fsync después de escribir en el registro de commit. Por lo tanto, escribe primero en memoria. Escribe en la caché de páginas a través del sistema operativo. Si DataStax Enterprise está configurado para fsync después de escribir en el registro de confirmación, que mata el rendimiento.

Cubos y documentos

El motor de almacenamiento de Couchbase tiene problemas para manejar más de cinco cubos (análogos a las tablas relacionales).

Esto no es cierto. Un cubo es análogo a una base de datos. No hay esquema. No hay tablas. Esa es una de las ventajas de una base de datos de documentos.

Coherencia y disponibilidad

Couchbase se las arregla para no ser ni totalmente consistente, ni totalmente disponible: no puede servir lecturas durante la conmutación por error o particiones de red, pero todavía puede servir datos obsoletos a las lecturas.

No es cierto. y no tiene sentido. ¿No puede servir lecturas, pero sí puede servir datos a las lecturas?

Couchbase Server mantiene una fuerte consistencia. Por defecto, el failover automático está desactivado. Si un nodo no está disponible o no responde, sus datos no están disponibles. Couchbase Server es CP. Sin embargo, Couchbase Server puede ser configurado para AP.

¿Es DataStax Enteprise totalmente coherente? Puede encontrar la respuesta aquí.

FUD disipado.

Recomendaciones

DataStax ha publicado una entrada en su blog sobre cómo no realizar un benchmark de Apache Cassandra (enlace). Es un gran comienzo.

No realice pruebas comparativas de bases de datos distribuidas con máquinas virtuales, almacenamiento compartido, unidades mal configuradas, carga inadecuada y con conjuntos de datos pequeños.

Estoy de acuerdo. Sin embargo, la lista está incompleta.

1. No realice pruebas comparativas de bases de datos distribuidas con un único nodo.

Una base de datos distribuida tiene que hacer concesiones entre coherencia y disponibilidad (enlace), y esas compensaciones afectan al rendimiento. Si una prueba se realiza con un único nodo, se ignoran esas compensaciones y se oculta el impacto en el rendimiento. Los resultados de rendimiento son poco realistas y, por tanto, inútiles.

2. No realice pruebas comparativas de bases de datos distribuidas con diferentes configuraciones.

Por ejemplo, no configure Couchbase Server para fsync cada escritura mientras configura DataStax Enterprise para fsync cada diez (10) segundos (enlace y enlace). Los resultados de rendimiento son sesgados y, por tanto, inválidos. Parece que DataStax ha puesto commitlog_sync en batch. Eso es justo. Sin embargo, DataStax no graficó la latencia. Si commitlog_sync está configurado como batch, Apache Cassandra esperará 50 ms antes de completar una operación de escritura.

Bueno, eso es todo por hoy.

Autor

Publicado por Shane Johnson, Director de Marketing de Producto, Couchbase

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.

Dejar una respuesta