nosql - and - couchbase server
Couchbase Lite implementa el protocolo de replicación CouchDB y es 100% compatible con CouchDB. Sin embargo, Couchbase Server no requiere ciertos metadatos de documentos que los documentos de CouchDB contienen por razones de rendimiento. Sync Gateway es la forma en que los metadatos necesarios se agregan a Couchbase Server.
Creo que hay algunas diferencias esenciales entre CouchDB y Couchbase Server que deben ser señaladas.
No escribiré sobre las ventajas de cambiar de CouchDB al Servidor de Couchbase porque se describen en casi todas partes (vea El futuro de CouchDB por Damien Katz o Couchbase vs. Apache CouchDB por Couchbase). En su lugar, intentaré enumerar las características de CouchDB que no encontrará en el servidor de Couchbase .
Todos los nombres relacionados con CouchDB y Couchbase pueden ser realmente confusos, así que actualicé 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 relacionado de una manera que no es tan obvia en los nombres.
Primero, estaba CouchDB, una base de datos creada por Damien Katz, un antiguo desarrollador de IBM. Su nombre oficial se cambió a Apache CouchDB después de que se convirtió en un proyecto de Apache.
Una empresa llamada CouchIO se fundó para trabajar en Apache CouchDB y luego cambió su nombre a CouchOne (por "su nombre" me refiero al nombre de la empresa, 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ó con el desarrollo del software Membase y luego cambió su nombre a Couchbase Server.
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 utiliza el protocolo Memcached y no la API RESTful de CouchDB. Mientras tanto, CouchDB sigue siendo CouchDB, mantenido activamente y mejorado como un proyecto Apache.
Ahora a las diferencias relevantes:
Licenciamiento
El Servidor Couchbase no es completamente open-source / software libre . Hay dos versiones: Community Edition (gratuita pero no las últimas correcciones de errores) y Enterprise Edition (existen restricciones de uso, disposiciones de confidencialidad, auditorías realizadas por Couchbase Inc. que "se realizarán durante el horario comercial habitual en las instalaciones del Licenciatario" y otros términos típicos software propietario que muchas personas pueden encontrar inaceptable).
CouchDB es un proyecto de código abierto / software libre (sin compromiso) de The Apache Software Foundation y se lanza bajo la Licencia Apache, Versión 2.0 (compatible con DFSG, aprobada por FSF, aprobada por OSI, compatible con GPL, sin derechos de copia) , comercial-amigable).
Filosofía
Nunca lo he visto directamente, pero esta puede ser la diferencia más importante entre esas dos bases de datos porque se trata de la filosofía subyacente de los modelos informáticos distribuidos y no solo de ciertas características, API o licencias. CouchDB y el servidor Couchbase difieren completamente en su filosofía de construir sistemas distribuidos y bases de datos.
De acuerdo con 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 O bien 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 DE ESTAS ES CORRECTA? POR FAVOR COMENTA.
Caracteristicas
Esto es lo que encontré como una lista de características de CouchDB que no son compatibles con el servidor de Couchbase:
- no API RESTful (solo para vistas, no para operaciones CRUD)
- no _changes feed
- 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)
- no hay replicación entre una base de datos CouchDB y un servidor Couchbase
- sin archivos adjuntos explícitos (tiene que almacenar archivos adicionales como nuevos pares clave / valor)
- no hay API HTTP para todo (necesita usar los SDK de Couchbase Server o una de las bibliotecas de clientes experimentales en Couchbase Develop, así que no haga experimentos con curl y wget )
- ninguna API de CouchDB (en su lugar usa la API de Memcached )
- 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 las aplicaciones web (tiene que 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)
- ninguna consistencia eventual
- no es completamente open-source / software libre
- 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, ya sea que la falta de ellas sea una desventaja o no sea estrictamente subjetiva, pero creo que la decisión de cambiar de CouchDB a Couchbase Server o no 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 CouchDB que alimentan a NodeCamp, hable de Mikeal Rogers o uno de los excelentes tutoriales de CouchApp de J. Chris Anderson, entonces debe darse cuenta de que si desea cambiar al Servidor de Couchbase, entonces Habrá que olvidarse de casi todo de lo que estaban hablando.
Por eso, diría que el servidor Couchbase 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á usando 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 la licencia). Pero si realmente está utilizando alguna de las características que son únicas en CouchDB (como la fuente de cambios, CouchApps, arquitectura de dos niveles, replicación de igual a igual, 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.
La gente suele tener la impresión errónea (quizás después de leer cosas como "¿Cuál es el futuro de CouchDB? Es Couchbase" ) que CouchDB está algo obsoleto por el Servidor de Couchbase, o que es una versión antigua y heredada de Couchbase. Mientras tanto, CouchDB es un proyecto de código abierto que se mantiene 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 aún se mantienen nuevas herramientas para crear CouchApps en desarrollo (por ejemplo, ver el proyecto Kanso ), entonces CouchDB no irá a ningún lado pronto.
Espero que se aclare la confusión. Por favor corrígeme si me equivoco en algo aquí.
Actualizar:
Couchbase Server es en realidad un nuevo nombre para el Servidor Membase (el Servidor Membase fue renombrado a Servidor Couchbase en algún lugar alrededor de la versión 1.8). Ver Couchbase 2011 año en revisión :
Desafortunadamente, confundimos a muchos de nuestros potenciales usuarios. Además del servidor Membase 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 lanzar vistas previas para desarrolladores de Couchbase Server 2.0, que incorporaba la tecnología CouchDB en el Servidor Membase, pero este producto no era compatible con el Servidor único Couchbase (o CouchDB). [...] Membase Server será renombrado como Couchbase Server 1.8 en su próxima versión en enero, un pequeño paso que simplemente alivia la confusión de "nombre". Como se planificó desde el principio, la versión Couchbase Server 2.0 (actualmente en Developer Preview 3) agregará funciones de índice y consulta. Si bien Couchbase Server 2.0 incorporará tecnología sustancial del proyecto CouchDB, no será compatible con CouchDB y no debería verse como una "versión de CouchDB". [Énfasis agregado]
Ver también:
- Comentarios a "The Future of CouchDB" por Damien Katz (eliminado en 2012, disponible en el archivo web )
- Comentarios a "Why Couchbase?" por Damien Katz (eliminado en 2012, disponible en el archivo web )
- Couchbase 2011 año en revisión
- El servidor Membase es ahora el servidor Couchbase
- Actualización técnica de Couchbase
- Diferencia entre Cloudant y CouchOne
Hemos escrito con más detalle la relación entre CouchDB y Couchbase . En pocas palabras, Couchbase Server toma toda la bondad NoSQL masticable de CouchDB, y le da el borde duro nítido de un glaseado de memcache.
Si es nuevo en NoSQL, básicamente, almacena su JSON en Couchbase. Es muy rápido y puede escalar hasta las cargas de tráfico tan grandes que es probable que vea.
Como una base de datos relacional, le devuelve lo que almacenó, cuando lo necesita. Yay bases de datos!
A diferencia de una base de datos relacional, en lugar de tener que especificar por adelantado lo que va a almacenar, puede almacenarlo (somos una actualización inmediata si está usando memcached) y lo ayudaremos a resolverlo más adelante. .
Son piezas de software diferentes pero similares. He remezclado el contenido de la respuesta principal en una imagen que podría ayudar a aclarar la "diferencia", así como las cosas comunes:
Un comentario de Matt Ingenthron se suma a esto:
Para agregar un poco de contexto / correcciones: los fundadores de NorthScale son Steve Yen y Dustin Sallings. Me uní a ellos poco después de fundar. Además, Damien no se unió a Couchbase más tarde, formó parte de CouchIO / Couch One antes de la fusión. Citando una fuente histórica y divertida: https://youtube.com/watch?v=aZ_JOnU8tkI