Respuestas:
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.
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:
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).
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.
Esto es lo que encontré como una lista de características CouchDB que no son compatibles con el servidor Couchbase:
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í.
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]
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:
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
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'.