2010-07-30 27 views
145

Soy un novato completo cuando se trata del movimiento NoSQL. He escuchado mucho sobre MongoDB y CouchDB. Sé que hay diferencias entre los dos. ¿Qué recomiendan aprender como primer paso en el mundo NoSQL?NoSQL - MongoDB vs CouchDB

+0

Como primer paso, mongoDB es mejor porque es más fácil de aprender pero tiene algunos problemas. No existe una mejor opción para usar una base de datos no SQL específica, depende de lo que tenga que hacer. Eche un vistazo a orientado a documentos, clave-valor, orientado a gráficos, orientado a columnas. – Chris

Respuesta

143

ver las siguientes enlaces

actualización: Me encontraron grandes comparison of NoSQL bases de datos.

MongoDB (3,2)

  • Escrito en: C++
  • punto principal: almacén de documentos JSON
  • Licencia: AGPL (Controladores: Apache)
  • Protocolo: Personal, binario (BSON)
  • Replicación maestro/esclavo (conmutación por error automática con conjuntos de réplicas)
  • Sharding built-in
  • consultas son expresiones de JavaScript
  • ejecución arbitraria del lado del servidor funciones javascript
  • Ha indexación geoespacial y consultas
  • motores de almacenamiento múltiples con diferentes características de rendimiento
  • Rendimiento sobre características
  • la validación de documentos
  • en diario
  • Potente marco de agregación
  • En los sistemas de 32 bits, limitado a ~ 2,5 Gb
  • búsqueda
  • texto integrados
  • GridFS para almacenar grandes volúmenes de datos + metadatos (no en realidad un FS)
  • centro de datos cuenta

Usar de: Si necesita consultas dinámicas Si prefiere definir índices, no asignar/reducir funciones. Si necesita un buen rendimiento en una gran base de datos. Si quería CouchDB, pero sus datos cambian demasiado, llenando los discos.

Por ejemplo: Para la mayoría de las cosas que harías con MySQL o PostgreSQL, pero tener columnas predefinidas realmente te frena.

CouchDB (1.2)

  • escrita en: Erlang
  • principal punto: coherencia DB, facilidad de uso
  • licencia: Apache
  • Protocolo: HTTP/descanso
  • la replicación bidireccional(),!
  • continua o ad-hoc,
  • con la detección de conflictos,
  • por lo tanto, maestro-maestro r eplicación. (!)
  • MVCC - operaciones de escritura no bloquean lee
  • Las versiones anteriores de los documentos están disponibles
  • Crash-único diseño (fiable)
  • necesidades de compactación de vez en cuando
  • Vistas: mapa incrustado/reducir
  • vistas de formato: listas & muestra
  • validación de documentos del lado del servidor posible
  • autenticación posible
  • actualizaciones en tiempo real a través de '_changes'
  • manejo
  • por lo tanto, el apego CouchApps (JS independientes apps)

mejor utilizados (!): Para acumular, de vez en cuando cambiar los datos, en la que consultas predefinidas deben ser ejecutadas. Lugares donde el control de versiones es importante.

Por ejemplo: sistemas CRM, CMS. La replicación maestro-maestra es una característica especialmente interesante, que permite implementaciones sencillas en varios sitios.

+1

Para cualquier persona interesada en que la licencia de servidor de MongoDB sea AGPL, echa un vistazo a [la política de licencias de mongodb] (http://www.mongodb.org/about/licensing/#licensing-policy) puede proporcionar algún alivio. – Patrick

+0

@amra Entonces, ¿quiere decir que si guardo los datos y los leo solo, usar couchdb es la mejor opción? – verystrongjoe

+0

@verystrongjoe Depende de la complejidad de los datos y las consultas. Generalmente no se puede decir cuál es el mejor. – amra

118

Si viene desde el mundo de MySQL, MongoDB va a "siéntase" mucho más natural para usted debido a su compatibilidad con el lenguaje de consulta.

Creo que eso es lo que hace que sea tan amigable para mucha gente.

CouchDB es fantástico si desea utilizar el excelente soporte de replicación maestro-maestro con una configuración multinodo, posiblemente en diferentes centros de datos o algo así.

La replicación de MongoDB (conjuntos de réplicas) es una configuración de maestro-esclavo-esclavo-esclavo *, solo puede escribir en el maestro en un conjunto de réplicas y leer de cualquiera de ellos.

Para una configuración de sitio estándar, está bien. Se asigna muy bien al uso de MySQL.

Pero si está tratando de crear un servicio global como un CDN que necesita mantener sincronizados todos los nodos globales aunque lean/escriban a todos ellos, algo como la replicación en CouchDB será una gran ayuda para usted .

Mientras que MongoDB tiene un lenguaje de consulta que puede usar y se siente muy intuitivo, CouchDB adopta un enfoque de "reducir mapas" y este concepto de vistas. Se siente extraño al principio, pero a medida que lo dominas, realmente comienza a sentirse intuitivo.

Aquí es una visión rápida por lo que tiene sentido:

  • tiendas CouchDB todos sus datos en un árbol B
  • Puede no "consulta" de forma dinámica con algo como "SELECT * FROM usuarios DONDE ... "
  • En su lugar, define" vistas "discretas de sus datos ..." aquí hay una vista de todos mis usuarios "," aquí hay una vista de todos los usuarios mayores de 10 "" aquí hay una vista de todos los usuarios mayores de 30 "y así sucesivamente.
  • Estas vistas se definen usando el enfoque map-reduce y se definen como funciones de JavaScript.
  • Cuando define una vista, la base de datos comienza a alimentar todos los documentos de la base de datos a la que asignó la vista, a través de ella y registra los resultados de sus funciones como el "índice" de esos datos.
  • Hay algunas consultas básicas que puede hacer en las vistas, como solicitar una clave específica (ID) o rango de ID, independientemente de lo que haga su función de mapa/reducir.
  • Lea a través de these slides, es la mejor aclaración de map/reduce en Couch que he visto.

Así que estas dos fuentes utilizan documentos JSON, pero CouchDB sigue esta más "cada servidor es un maestro y se puede sincronizar con el mundo" enfoque, que es fantástico, si lo necesita, mientras que MongoDB es realmente el MySQL de la NoSQL mundo.

Así que si eso suena más como lo que necesitas/quieres, ve por eso.

Pequeñas diferencias como el protocolo binario de Mongo frente a la interfaz RESTful de CouchDB son todos detalles menores.

Si quieres velocidad prima y al diablo con la seguridad de datos, se puede hacer Mongo correr más rápido que CouchDB como se puede decir que para operar sin memoria y no comprometan las cosas en el disco a excepción de intervalos dispersos.

Puede hacer lo mismo con Couch, pero su protocolo de comunicación basado en HTTP va a ser 2-4 veces más lento que la comunicación binaria en bruto con Mongo en esta "velocidad sobre todo!" guión.

Tenga en cuenta que la velocidad de locura enloquecida es inútil si un fallo del servidor o un disco daña y deja su DB en el olvido, por lo que el punto de datos no es tan sorprendente como podría parecer (a menos que esté haciendo en tiempo real sistemas de negociación en Wall Street, en cuyo caso mira a Redis).

Espero que todo ayude!

+0

"MongoDB es realmente el MySQL del mundo NoSQL" - No sé si las cosas han cambiado, pero este artículo de 2014 no está de acuerdo: http://www.sarahmei.com/blog/2013/11/11/ why-you-should-never-use-mongodb/ –

+0

Mientras que, en espíritu, creo que el comentario todavía funciona, tienes razón, MUCHO ha cambiado en la última media década y mi comentario debería descartarse fácilmente. –

2

Ahora hay muchas más bases de datos NoSQL en el mercado que nunca.Sugiero incluso echar un vistazo al Magic Quadrant de Gartner si está buscando una base de datos que también sea ideal para aplicaciones empresariales basadas en soporte, capacidad de expansión, administración y costo.

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

me gustaría sugerir Couchbase a cualquier persona que no está probado todavía, pero no se basa en la versión que se muestra en el informe (2.5.1), ya que es casi 2 revisiones detrás de donde CB servidor es hoy, cerca del lanzamiento de 4.0 en 2H15.

http://www.couchbase.com/coming-in-couchbase-server-4-0

La otra parte sobre Couchbase como un vendedor/producto es que es un tipo multi-uso de DB. Puede actuar como una tienda de K/V pura, una base de datos orientada a documentos con escalado multidimensional, Memcached, caché a un lado con persistencia y admite SQL compatible con ANSI 92 con uniones automáticas, replicación en clústeres de DR con solo presionar un botón y incluso tiene un componente móvil incorporado en el ecosistema.

Si nada más, vale la pena echarle un vistazo a las últimas referencias:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

1

vídeos en youtube Edureka respecto NoSQL son algunos de los mejores tutoriales en vídeo. Empecé en MongoDb & Cassandra después de ver estos videos.

https://www.youtube.com/watch?v=gJFG04Sy6NY 
https://www.youtube.com/watch?v=KSq6tMMXZ8s 
https://www.youtube.com/watch?v=3z1KFA2qcSo 

buenas presentaciones están disponibles en slideshare.net

http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1 

http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 

presentación Edureka en Slideshare es la extensión del vídeo en youtube. Puede tratar esta presentación como un resumen del video de youtube.