Diferencia entre CouchDB y Couchbase

270

¿Hay alguna diferencia esencial entre CouchDB y Couchbase ?

yojimbo87
fuente
45
Confundido acerca de los nombres? Yo también, así que comencé remezclando la información de nombres de esta respuesta principal en una visualización del historial de nombres , lo que debería ayudar a comprender cualquiera de estas respuestas.
Jeroen
@Jeroen Esa es una visualización impresionante. ¿Debería ser editado en esa respuesta superior?
Shoover
@shoover Thx, me alegro de que haya ayudado. No puedo juzgar si es lo suficientemente preciso, pero si rsp (el autor principal de esa respuesta) / la comunidad lo considera valioso, no dude en incluirlo bajo la licencia SO.
Jeroen

Respuestas:

555

Creo que hay algunas diferencias esenciales entre CouchDB y Couchbase Server que deben señalarse.

No escribiré sobre las ventajas de cambiar de CouchDB al Servidor de Couchbase porque se describen prácticamente en todas partes (vea El futuro de CouchDB por Damien Katz o Couchbase vs. Apache CouchDB por Couchbase). En cambio, intentaré enumerar las características de CouchDB que no encontrará en el servidor Couchbase .

Todos los nombres relacionados con CouchDB y Couchbase pueden ser realmente confusos, por lo que he actualizado esta respuesta, para comenzar con una breve explicación de los más importantes.

Nombres y confusión

Hay CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... todo diferente y, sin embargo, relacionado de una manera no tan obvia solo con los nombres.

Primero, estaba CouchDB, una base de datos creada por Damien Katz, un ex desarrollador de IBM. Su nombre oficial se cambió a Apache CouchDB después de convertirse en un proyecto Apache.

Una compañía llamada CouchIO fue fundada para trabajar en Apache CouchDB y luego cambió su nombre a CouchOne (por "su nombre" me refiero al nombre de la compañía, no al nombre de la base de datos).

CouchOne (anteriormente CouchIO) se fusionó con Membase (anteriormente NorthScale) para formar una nueva compañía llamada Couchbase. Membase (la compañía) desarrolló Membase (un producto del mismo nombre). Membase fue creado por varios líderes del proyecto Memcached y utilizó el protocolo Memcached. Después de la fusión de CouchOne y Membase, Couchbase continuó el desarrollo del software Membase y más tarde cambió su nombre a Servidor Couchbase.

Hoy creo que la mayoría de la gente cree que Couchbase Server es una nueva versión de CouchDB pero, de hecho, es una nueva versión de Membase. Todavía usa el protocolo Memcached y no la API RESTful de CouchDB. Mientras tanto, CouchDB sigue siendo CouchDB, mantenido y mejorado activamente como un proyecto Apache.

Ahora a las diferencias relevantes:

Licencia

El Servidor Couchbase no es completamente de código abierto / software libre . Hay dos versiones: Community Edition (gratuita pero sin las últimas correcciones de errores) y Enterprise Edition (existen restricciones de uso, disposiciones de confidencialidad, auditorías de Couchbase Inc. que "se llevarán a cabo durante el horario comercial habitual en las instalaciones del Licenciatario" y otros términos típicos a software propietario que muchas personas pueden encontrar inaceptable).

CouchDB es un proyecto de software libre / de código abierto (sin ataduras) de The Apache Software Foundation y se publica bajo la licencia Apache, versión 2.0 (compatible con DFSG, aprobado por FSF, aprobado por OSI, compatible con GPL, sin copyleft , comercial-friendly).

Filosofía

Nunca lo he visto señalado directamente, pero esta puede ser la diferencia más importante entre esas dos bases de datos porque se trata profundamente de la filosofía subyacente de los modelos de computación distribuida y no solo de ciertas características, API o licencias. CouchDB y Couchbase Server difieren completamente en su filosofía de construir sistemas distribuidos y bases de datos.

Según el teorema de CAP , es imposible que una base de datos distribuida proporcione simultáneamente consistencia, disponibilidad y tolerancia de partición.

CouchDB es un sistema de tipo AP (proporciona disponibilidad y tolerancia de partición ).

Couchbase Server es UN sistema de tipo CP (según Wikipedia ) O un sistema de tipo CA (según la actualización técnica de Couchbase ): ¿ CUÁL ES CORRECTO? POR FAVOR COMENTA.

Caracteristicas

Esto es lo que encontré como una lista de características CouchDB que no son compatibles con el servidor Couchbase:

  • sin API RESTful (solo para vistas, no para operaciones CRUD)
  • no _cambios de alimentación
  • sin replicación de igual a igual
  • no CouchApps
  • no Futon (hay una interfaz de administración diferente disponible)
  • sin ID de documento
  • sin noción de bases de datos (solo hay cubos)
  • sin replicación entre una base de datos CouchDB y un servidor Couchbase
  • sin archivos adjuntos explícitos (debe almacenar archivos adicionales como nuevos pares clave / valor)
  • no hay API HTTP para todo (debe usar los SDK de Couchbase Server o una de las bibliotecas de clientes experimentales en Couchbase Develop, por lo que no hay experimentos con curl y wget )
  • sin API CouchDB (utiliza la API Memcached en su lugar)
  • no puedes hacer todo desde el navegador (tienes que escribir una aplicación del lado del servidor)
  • no es posible una arquitectura de dos niveles para aplicaciones web (debe escribir una aplicación del lado del servidor para ubicarse entre el navegador y la base de datos, como con las bases de datos relacionales)
  • sin consistencia eventual
  • software no completamente libre / de código abierto
  • no es un reemplazo directo para CouchDB (parece un reemplazo directo para Memcached)

Esas características de CouchDB pueden o no ser importantes para usted, por lo que si la falta de ellas es una desventaja o no es estrictamente subjetivo, pero creo que la decisión de cambiar o no de CouchDB a Couchbase Server debe basarse en esas diferencias y su dependencia de esas características en sus implementaciones actuales de CouchDB.

Por ejemplo, si se ha interesado en CouchDB después de ver los cambios de The CouchDB, la charla NodeCamp de Mikeal Rogers o uno de los excelentes tutoriales de CouchApp de J. Chris Anderson, debe darse cuenta de que si desea cambiar al Servidor Couchbase, entonces usted tendrá que olvidarse de casi todo lo que estaban hablando.

Por eso, diría que Couchbase Server parece una evolución de Memcached y Membase (no una evolución de CouchDB) y, como tal, parece un gran producto si actualmente está utilizando Memchached o Membase. Si está utilizando CouchDB de la manera más básica, entonces puede considerar usar el Servidor Couchbase para las mismas cosas y puede o no funcionar mejor (si no le importan las restricciones de licencia). Pero si en realidad está utilizando alguna de las características que son únicas en CouchDB (como el feed de cambios, CouchApps, arquitectura de dos niveles, replicación punto a punto, etc.), puede olvidarse de esas características o quedarse con CouchDB. En cualquier caso, asegúrese de leer y comprender el tutorial Migración a Couchbase para usuarios de CouchDB antes de pensar en cambiar.

Las personas a menudo tienen la impresión equivocada (tal vez después de leer cosas como "¿Cuál es el futuro de CouchDB? Es Couchbase" ) de que CouchDB está de alguna manera obsoleto por el Servidor Couchbase, o que es una versión antigua y heredada de Couchbase. Mientras tanto, CouchDB es un proyecto de código abierto mantenido activamente, el servidor Couchbase es un proyecto completamente separado (es un proyecto más nuevo pero no es una versión más nueva de CouchDB, ni siquiera son compatibles) y dado que incluso las nuevas herramientas para crear CouchApps aún se mantienen en desarrollo (por ejemplo, ver el proyecto Kanso ), CouchDB no irá a ningún lado pronto.

Espero que aclare la confusión. Corrígeme si me equivoco en algo aquí.

Actualizar:

El Servidor Couchbase es en realidad un nuevo nombre para el Servidor Membase (el Servidor Membase fue renombrado como Servidor Couchbase en algún lugar alrededor de la versión 1.8). Ver Couchbase 2011 Year in Review :

Desafortunadamente, confundimos a muchos de nuestros usuarios potenciales. Además de Membase Server y nuestros nuevos productos móviles, también ofrecimos Couchbase Single Server, que era una "distribución" empaquetada de Apache CouchDB. Además de eso, comenzamos a publicar versiones preliminares para desarrolladores de Couchbase Server 2.0, que incorporaba la tecnología CouchDB en Membase Server, pero este producto no era compatible con Couchbase Single Server (o CouchDB). [...] Membase Server pasará a llamarse Couchbase Server 1.8 en su próximo lanzamiento en enero, un pequeño paso que simplemente alivia la confusión de "nombre". Como se planeó desde el principio, la versión Couchbase Server 2.0 (actualmente en Developer Preview 3) agregará funcionalidad de índice y consulta. Si bien Couchbase Server 2.0 incorporará una tecnología sustancial del proyecto CouchDB,no será compatible con CouchDB y no debería verse como una "versión de CouchDB". [énfasis añadido]

Ver también:

rsp
fuente
69
Bravo. Me alegra ver que algo realmente explica este lado de las cosas (todas las comparaciones existentes, como enumeró, tienen un sesgo notable de Couchbase).
Stuart P. Bentley
66
@WalterTross: En realidad, no usar CouchDB API, no ser RESTful y no usar HTTP no son exactamente las mismas cosas. Por ejemplo, Riak no usa la API CouchDB pero aún usa una API RESTful. Además, es posible que no use REST pero aún use HTTP (por ejemplo, SOAP u otro servicio web). Aquí quería dejar en claro que el servidor Couchbase no solo no usa la API CouchDB, sino que su API no es RESTful y ni siquiera usa HTTP en absoluto.
rsp
24
Considero que esta es la respuesta. Gracias.
skift
10
Con respecto a su pregunta "CP vs CA": en pocas palabras, es imposible tener un sistema "CA" a menos que esté hablando de una sola máquina. Siempre hay particiones en la red ( aphyr.com/posts/288-the-network-is-reliable ) y, por lo tanto, un sistema distribuido, en cualquier momento, hará que las compensaciones estén disponibles o sean consistentes frente a Particiones (pero nunca ambas). Entonces, por inducción Couchbase es CP. De hecho, esto se desprende de su estrategia de replicación detrás de vBuckets, que es a) 1: n maestro / esclavo (s) o b) 1..n basado en cadena versus, por ejemplo, un sistema modelado después de Dynamo (AP).
Greg Burd
9
A partir de hoy, hay una adición muy importante a este artículo: Couchbase SyncGateway. Esta es esencialmente una parte que lleva la replicación de CouchDB a Couchbase en un nivel compatible con API, de modo que CouchDB se puede replicar con Couchbase a través de SyncGateway. Lo cual es un gran problema desde una perspectiva de Couchbase Lite, que puede (excepto algunos casos de esquina) cambiar sin problemas de sincronización con CouchDB a sincronización con SyncGateway
Leonid Usov
39

Son piezas de software diferentes pero similares. He remezclado el contenido de la respuesta superior en una imagen que podría ayudar a aclarar la "diferencia", así como las cosas comunes:

la otra respuesta vinculada anteriormente es una descripción ampliada de esta imagen

Un comentario de Matt Ingenthron agrega a esto:

Para agregar algunos contextos / correcciones: los fundadores de NorthScale son Steve Yen y Dustin Sallings. Me uní a ellos poco después de la fundación. Además, Damien no se unió más tarde a Couchbase, formó parte de CouchIO / Couch One antes de la fusión. Citando una fuente histórica divertida: https://youtube.com/watch?v=aZ_JOnU8tkI

Jeroen
fuente
44
¡Esa es una información gráfica muy útil!
Zach Smith
3
Para agregar algunos contextos / correcciones: los fundadores de NorthScale son Steve Yen y Dustin Sallings. Me uní a ellos poco después de la fundación. Además, Damien no se unió más tarde a Couchbase, formó parte de CouchIO / Couch One antes de la fusión. Citando una fuente divertida e histórica: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron
1
@MattIngenthron Thx para la actualización. He deslizado su comentario en la respuesta, si encuentro el momento en que podría ajustar el diagrama de flujo en consecuencia.
Jeroen
1

Creo que CouchBase parece ser percibido como la alternativa 'empresarial' de CouchDB. Lo que en cierto modo parece ser cierto. Además de la falta de capacidad para adjuntar archivos a registros (documentos) y puntos finales REST 'listos para usar' en comparación con CouchDB, CouchBase tiene un lenguaje similar a SQL, es decir, N1QL (a veces pronunciado como un níquel). Esta es una de las razones por las que realmente no me gusta / recomiendo usar el término 'NoSQL'. Personalmente me gusta el término 'no relacional'.

Parik Chudasma
fuente