2010-01-02 15 views
55

No me he ensuciado las manos ni con CouchDB ni con MongoDB pero me gustaría hacerlo pronto ... También he leído un poco sobre ambos sistemas y me parece que cubren los mismos casos ... ¿O estoy perdiendo una característica distintiva clave?¿Son MongoDB y CouchDB los sustitutos perfectos?

Me gustaría utilizar un almacenamiento basado en documentos en lugar de un RDBMS tradicional en mi próximo proyecto. También necesito el almacén de datos a

  • manejar grandes objetos binarios (imágenes y vídeos)
  • replicar automáticamente para físicamente nodos separados
  • haciendo que la necesidad de un RDBMS adicional superflua

son tanto igualmente bien adecuado para estos requisitos?

Gracias!

Respuesta

49

En realidad, he usado ambos bastante extensamente, ambos para proyectos muy diferentes.

Yo diría que son igualmente adecuados para los requisitos que enumera, sin embargo, hay bastantes diferencias entre los dos. IMO, la más grande es su capacidad de consulta. CouchDB no tiene 'consultas' en el sentido RDBMS (seleccione * de ...) sino que usa 'views' que son más como procedimientos almacenados (esencialmente, consultas estáticas definidas en la base de datos (1)). MongoDB tiene mucho more 'usual' querying.

Básicamente se trata de los requisitos de su aplicación. Si proporciona más información, podría arrojar más luz sobre lo que podría importar en esa situación.

(1): se puede tener temporalmente, las consultas no estáticos en CouchDB pero no está recomendado para su uso en producción

+1

Gran información - También he estado buscando una breve descripción de cuándo usar Cassandra vs Mongo/Couch. ¿Tiene alguna sugerencia/enlace sobre esto? –

+0

Muy buena información de hecho. ¿Las vistas se pueden definir después o son parte del diseño inicial? –

11

Mongo utiliza más consultas "tradicionales". Active la indexación por clave y use una sintaxis de consulta SQLish.

Las vistas de CouchDB pueden hacer una indexación y relaciones mucho más profundas, pero requieren que hagas un poco más de trabajo y entiendas cómo funciona la clasificación de claves para realizar las consultas.

También existe una gran diferencia en los sistemas de replicación. La replicación de Mongo se parece mucho a la mayoría de las soluciones RDBMS con maestros y esclavos y todo eso. La replicación de CouchDB es más de igual a igual, sin master/slave, cada CouchDB es un nodo.

11

La replicación de CouchDB está hecha para mantener geográficamente separados los sitios en sincronización. Maneja correctamente errores de red y otros al reiniciar la replicación donde se quedó. Los nodos participantes incluso se pueden desconectar de forma deliberada.

4

Antes de utilizar MongoDB, me gustaría recomendar que tome un vistazo a la siguiente: http://groups.google.com/group/mongodb-user/browse_thread/thread/460dbd49a5b6b267. MongoDB tiene una pequeña posibilidad de corromper datos debido a su falta de fsync con cada escritura.

+1

que se debe corregir a partir de la versión 1.7.5? http://groups.google.com/group/mongodb-user/browse_thread/thread/4b94744f1f709048 –

0

Desde el punto de vista de desarrollador, la mayor diferencia es la consulta en vivo de mongo frente a la vista de sofá (que debe ser "compilada"). Desde el punto de vista operativo, el sofá funciona completamente en http-rest. Si puede configurar servidores http, sabe cómo configurar coach. Con Mongo debes aprender a configurar los servidores de configuración, el conjunto de réplicas y los mongos (tipo de equilibrador).

Cuestiones relacionadas