2011-10-22 199 views
13

Recientemente me he enamorado de CouchDB. Estoy muy emocionado por sus enormes beneficios y por su belleza. Ahora quiero asegurarme de no haberme olvidado de ninguna desventaja que demuestre la parada.Desventajas de CouchDB

¿Qué te viene a la mente? Adjunta hay una lista de puntos que he recopilado. ¿Hay algo para agregar?

  • Las publicaciones de blog de hasta 2010 afirman "no lo suficientemente maduro" (lo que sea que valga la pena).
  • Más lento que en la memoria DBMS.
  • Las actualizaciones in situ requieren la lógica del lado del servidor (update handlers).
  • Comercio disco vs. velocidad: las bases de datos pueden llegar a ser enormes en comparación con otros DBMS (sin embargo, existe la funcionalidad de compactación).
  • "Solo" eventual consistencia.
  • Las vistas temporales en grandes conjuntos de datos son muy lento.
  • Replicación de bases de datos grandes may fail.
  • Mapa/reducir paradigma requiere un replanteamiento (solo para completar).

El único punto que preocupa a mí es # 3 (actualizaciones in situ), porque es bastante incómodo.

+0

¿Qué pasa con la sobrecarga de comunicación HTTP? ¿Qué pasa con la dificultad para restringir los valores en el sofá (los únicos son difíciles de hacer) – Raynos

Respuesta

10
  • Los datos están en JSON

Lo que significa que los documentos son bastante grandes (BigData, ancho de banda de red, velocidad) y tener nombres de claves descriptivos realmente duele, ya que se suman al tamaño del documento.

más some more:

  • No es compatible con las transacciones

Esto significa que la aplicación de singularidad de un campo en todos los documentos no es seguro, por ejemplo, la aplicación de un nombre de usuario que es único.Otra consecuencia de la incapacidad de CouchDB para respaldar la noción típica de una transacción es que cosas como inc/disminuir un valor y guardarlo de vuelta también son peligrosas. No hay muchas instancias en las que quisiéramos simplemente aumentar/disminuir algún valor donde no pudiéramos simplemente almacenar los documentos individuales por separado y agregarlos con una vista.

  • de datos relacionales

Si los datos tiene mucho sentido estar en forma normal tercero, y tratamos de seguir esa forma en CouchDB, que se van a ejecutar en una gran cantidad de problema. Una posible forma de resolver este problema es con las intercalaciones de vistas, pero es posible que constantemente estemos peleando con el sistema. Si los datos pueden reformatearse para ser mucho más desnormalizados, entonces CouchDB funcionará bien.

  • almacén de datos

El problema con esto es que las opiniones temporales en CouchDB en grandes conjuntos de datos son muy lento. 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.

Pero CouchDB Rocks!

Pero no dejes que te descubra: los DB de NoSQL que se escriben en Erlang (CouchDB, Riak) son los mejores, ya que Erlang está diseñado para sistemas distribuidos. Diviértete con Couch!

5

2 cosas más, que me hacen llorar al usar CouchDB (aunque es impresionante):

  • que no está diseñado para los datos actualizados con frecuencia
  • No han incorporado en la búsqueda de texto completo
1
  • Actualmente no hay soporte para consultas ad-hoc (que podría cambiar con la llegada de UnQL)
  • falta de compatibilidad con el protocolo binario para una comunicación más rápida
+0

UnQL es inútil para ser honesto. Si todas las bases de datos NoSQL fueran compatibles con UnQL, pronto veríamos bases de datos NoUnQL. Las bases de datos NoSQL son interesantes porque no están diseñadas sobre la base de un lenguaje de consulta sino en una forma de almacenar datos. Esto hace las cosas tan locas como Rest database como CouchDB. En cuanto al protocolo binario, podría ser útil, pero por lo que puedo decir, la velocidad del protocolo http no es exactamente el gran problema con couchdb. –

0

No tiene nada que ver con la propia CouchDB, pero al ser una el recién llegado relativo en la escena significa que la mayoría de los administradores de sistemas aún no están familiarizados con él y no lo permitirán en ningún lugar cerca de "sus" centros de datos. Si estás en una situación en la que te estás desplegando en un entorno que no controlas, esta puede ser toda una batalla.

3
  • La falta de ACL lector (que sí existe para los escritores, sin embargo)

Como un viejo Lotus Domino pro yo estaba buscando para CouchDB como una alternativa para un nuevo proyecto que estoy iniciando y encontré el limita a los lectores a ser muy débil en Couch vs. Domino. En mi aplicación, la seguridad es una consideración importante y Couch requeriría una capa de middleware para manejar la seguridad del lector.

Si tiene una base de datos en la que está bien que todos los usuarios definidos puedan ver todos los documentos, entonces Couch parece una plataforma interesante.

Si es necesario restringir las lecturas, entonces deberá buscar una solución de middleware o considerar otra alternativa.

Nota para los desarrolladores de CouchDB: mejore las opciones de seguridad de la plataforma. Me doy cuenta de que disminuirán el rendimiento cuando se usan, pero ten en cuenta eso y haz que la opción esté disponible.

Ahora volviendo a determinar qué base de datos usar ...

+0

Sí. Esto me impide ejecutar aplicaciones exclusivas de Couch. – nisc

+0

En caso de que alguien esté interesado, Domino 8.5.3 incluye soporte de JSONRest a través de las funciones de Domino Data Service. Obtiene el modelo de seguridad completo de Domino junto con el soporte REST. Muy agradable. http://www-10.lotus.com/ldd/ddwiki.nsf/xpViewCategories.xsp?lookupName=Domino%20Data%20Service –