¿Qué es lo que más te gusta de CouchDB?
Ventajas de CouchDB son:
CouchDB permite la replicación de sí mismo fácilmente, lo que lleva al intercambio de datos entre diferentes dispositivos.
CouchDB permite una estructura de datos flexible, lo que significa que cualquier tipo de datos puede almacenarse juntos.
CouchDB utiliza API HTTP para una comunicación fácil entre bases de datos.
ReduceMap permite optimizar la combinación de datos.
¡Gestión de bases de datos orientadas a documentos! Esto por sí solo vale la pena: poder describir tu registro en un documento JSON y luego indexarlo es ENORME.
Puedes almacenar el MISMO documento en múltiples instancias de bases de datos, y debido al motor de CouchDB, no es un problema.
RÁPIDO: Acceder a JSON es programáticamente fácil de analizar, y por lo tanto, hace que sea una opción.
Puede replicar y sincronizar con navegadores web a través de PouchDB. Esto te permite mantener una copia sincronizada de tu base de datos en el lado del cliente, lo que ofrece un acceso a datos mucho más rápido que lo que permitirían las solicitudes HTTP continuas, y habilita el uso sin conexión.
Soporte simple de Map/Reduce. El sistema M/R te permite procesar terabytes de documentos en paralelo, guardar los resultados y solo necesitas reprocesar documentos que han cambiado en actualizaciones posteriores. Aunque no es tan poderoso como Hadoop, es un sistema de consulta fácil de usar que es difícil de estropear.
Soporte de Sharding y Clustering. A partir de CouchDB 2.0, soporta clustering y sharding de documentos entre instancias sin necesidad de un balanceador de carga para determinar a dónde deben ir las solicitudes.
La replicación de Maestro a Maestro te permite clonar, hacer copias de seguridad continuas y escuchar cambios a través del protocolo de replicación, incluso sobre enlaces WAN poco fiables. Reseña recopilada por y alojada en G2.com.
¿Qué es lo que no te gusta de CouchDB?
Contras de CouchDB son:
CouchDB ocupa espacio adicional para la sobrecarga, lo cual es una desventaja importante en comparación con otras bases de datos.
Crear consultas aleatorias, que no tienen ninguna vista, es costoso.
No tiene búsqueda de texto completo incorporada.
Aunque hay formas: couchdb-lucene, elasticsearch, más algunas más:
No soporta transacciones.
Esto significa que hacer cumplir la unicidad de un campo en todos los documentos no es seguro, por ejemplo, garantizar que un nombre de usuario sea único. Otra consecuencia de la incapacidad de CouchDB para soportar la noción típica de una transacción es que cosas como incrementar/decrementar un valor y guardarlo de nuevo también son peligrosas. No hay muchas instancias en las que quisiéramos simplemente incrementar/decrementar algún valor donde no pudiéramos simplemente almacenar los documentos individuales por separado y agregarlos con una vista.
Datos relacionales
Si los datos tienen mucho sentido estar en la tercera forma normal, y tratamos de seguir esa forma en CouchDB, vamos a tener muchos problemas. Una posible forma de resolver este problema es con colaciones de vistas, pero podríamos estar constantemente luchando con el sistema. Si los datos pueden ser reformateados para estar mucho más desnormalizados, entonces CouchDB funcionará bien.
Almacén de datos
El problema con esto es que las vistas temporales en CouchDB en grandes conjuntos de datos son realmente lentas. Usar CouchDB y vistas permanentes podría funcionar bastante bien. Sin embargo, en la mayoría de los casos, una base de datos orientada a columnas de algún tipo es una herramienta mucho mejor para el trabajo de almacenamiento de datos. Reseña recopilada por y alojada en G2.com.