
Couchbase Server , originalmente conocido como Membase , es un paquete de software de base de datos NoSQL multimodal , de código abierto y distribuido ( arquitectura sin recursos compartidos ), optimizado para aplicaciones interactivas. Estas aplicaciones pueden atender a muchos usuarios concurrentes mediante la creación, el almacenamiento, la recuperación, la agregación, la manipulación y la presentación de datos. Para satisfacer las necesidades de este tipo de aplicaciones, Couchbase Server está diseñado para proporcionar acceso a documentos clave-valor o JSON de fácil escalabilidad, con baja latencia y alto rendimiento sostenido. Está diseñado para implementarse en clústeres, desde una sola máquina hasta implementaciones a gran escala que abarcan muchas máquinas.
Couchbase Server proporcionó compatibilidad de protocolo de cliente con memcached , [ 3 ] pero agregó persistencia de disco , replicación de datos , reconfiguración de clúster en vivo, reequilibrio y multitenencia con particionamiento de datos .
Historia del producto
Membase fue desarrollado por varios líderes del proyecto memcached , quienes fundaron la empresa NorthScale para desarrollar un almacén de clave-valor con la simplicidad, velocidad y escalabilidad de memcached, pero también con las capacidades de almacenamiento, persistencia y consulta de una base de datos. El código fuente original de membase fue aportado por NorthScale, y los copatrocinadores del proyecto, Zynga y Naver Corporation (entonces conocida como NHN), impulsaron un nuevo proyecto en membase.org en junio de 2010. [ 4 ]
El 8 de febrero de 2011, los fundadores del proyecto Membase y Membase, Inc. anunciaron una fusión con CouchOne (una empresa con muchos de los principales actores detrás de CouchDB ) con una fusión de proyectos asociada. La empresa fusionada se llamó Couchbase, Inc. En enero de 2012, Couchbase lanzó Couchbase Server 1.8. En septiembre de 2012, Orbitz dijo que había cambiado algunos de sus sistemas para usar Couchbase. [ 5 ] En diciembre de 2012, se lanzó Couchbase Server 2.0 (anunciado en julio de 2011) e incluyó un nuevo almacén de documentos JSON , indexación y consultas, MapReduce incremental y replicación entre centros de datos . [ 6 ] [ 7 ]
Arquitectura
Cada nodo de Couchbase consta de un servicio de datos, un servicio de índices, un servicio de consultas y un gestor de clústeres. A partir de la versión 4.0, los tres servicios pueden distribuirse para ejecutarse en nodos separados del clúster si es necesario. En términos del teorema CAP de Eric Brewer , Couchbase es normalmente un sistema de tipo CP, lo que significa que proporciona consistencia y tolerancia a particiones , o bien puede configurarse como un sistema AP con múltiples clústeres.
gestor de clúster
El gestor de clúster supervisa la configuración y el comportamiento de todos los servidores en un clúster de Couchbase. Configura y supervisa la comunicación entre nodos, como la gestión de flujos de replicación y las operaciones de reequilibrio. También proporciona funciones de agregación de métricas y consenso para el clúster, así como una interfaz de gestión de clúster RESTful . El gestor de clúster utiliza el lenguaje de programación Erlang y la plataforma Open Telecom .
Replicación y conmutación por error
La replicación de datos dentro de los nodos de un clúster se puede controlar con varios parámetros. En diciembre de 2012, se agregó soporte para la replicación entre diferentes centros de datos . [ 6 ]
gestor de datos
El gestor de datos almacena y recupera documentos en respuesta a las operaciones de datos de las aplicaciones. Escribe datos en disco de forma asíncrona tras confirmar la operación al cliente. En la versión 1.7 y posteriores, las aplicaciones pueden, opcionalmente, asegurarse de que los datos se escriban en más de un servidor o en disco antes de confirmar la escritura al cliente. Los parámetros definen la antigüedad de los elementos, que afecta al momento en que se persisten los datos, y cómo se gestiona la memoria máxima y la migración de la memoria principal al disco. Admite conjuntos de trabajo mayores que una cuota de memoria por "nodo" o "cubo". Los sistemas externos pueden suscribirse a flujos de datos filtrados, lo que permite, por ejemplo, la indexación de búsqueda de texto completo , el análisis de datos o el archivado. [ 8 ]
Formato de datos
Un documento es la unidad básica de manipulación de datos en Couchbase Server. Los documentos se almacenan en formato JSON sin esquemas predefinidos. También se pueden almacenar documentos que no sean JSON en Couchbase Server (binarios, valores serializados, XML, etc.).
Caché gestionada por objetos
Couchbase Server incluye una caché integrada gestionada por objetos y con múltiples subprocesos que implementa API compatibles con memcached, como get, set, delete, append, prepend, etc.
Motor de almacenamiento
Couchbase Server cuenta con un diseño de almacenamiento de adición al final que lo hace inmune a la corrupción de datos, a los errores de memoria insuficiente (OOM killers) o a la pérdida repentina de energía. Los datos se escriben en el archivo de datos de forma de solo adición, lo que permite a Couchbase realizar escrituras mayoritariamente secuenciales para la actualización y proporcionar patrones de acceso optimizados para la E/S del disco.
Actuación
Altoros realizó una prueba de rendimiento en 2012, comparando Couchbase Server con otras tecnologías. [ 9 ] Cisco Systems publicó una prueba de rendimiento que medía la latencia y el rendimiento de Couchbase Server con una carga de trabajo mixta en 2012. [ 10 ]
Licencias y soporte
Couchbase Server es una versión empaquetada de la tecnología de software de código abierto de Couchbase y está disponible en una edición comunitaria sin correcciones de errores recientes con una licencia Apache 2.0 [ 11 ] y una edición para uso comercial. [ 12 ] Hay compilaciones de Couchbase Server disponibles para los sistemas operativos Ubuntu, Debian, Red Hat, SUSE, Oracle Linux, Microsoft Windows y macOS.
Couchbase ha ofrecido kits de desarrollo de software para los lenguajes de programación .NET , PHP , Ruby , Python , C , Node.js , Java , Go y Scala .
SQL++
El lenguaje de consulta SQL++ (anteriormente N1QL) se utiliza para manipular los datos JSON en Couchbase, al igual que SQL manipula los datos en los sistemas de gestión de bases de datos relacionales (RDBMS). Dispone de sentencias SELECT, INSERT, UPDATE, DELETE y MERGE para operar con datos JSON. Inicialmente se anunció en marzo de 2015 como "SQL para documentos". [ 13 ]
El modelo de datos SQL++ no está en primera forma normal (N1NF) y admite atributos anidados y normalización orientada al dominio . El modelo de datos SQL++ también es un superconjunto y una generalización propia del modelo relacional .
Ejemplo
{ "correo electrónico" : "testme@example.org" , "amigos" : [ { "nombre" : "Pavan" }, { "nombre" : "Ravi" } ] }- Me gusta la consulta
SELECT*FROM`bucket`WHEREemailLIKE"%@example.org";
- consulta de matriz
SELECT*FROM`bucket`WHEREANYxINfriendsSATISFIESx.name="Pavan"END;
Couchbase Móvil
Couchbase Mobile / Couchbase Lite es una base de datos móvil que proporciona replicación de datos. [ 14 ]
Couchbase Lite (originalmente TouchDB) proporciona bibliotecas nativas para bases de datos NoSQL sin conexión con mecanismos de replicación punto a punto o cliente-servidor integrados . [ 15 ] Sync Gateway gestiona el acceso seguro y la sincronización de datos entre Couchbase Lite y Couchbase Server. [ 16 ]
Couchbase Lite agregó soporte para búsqueda vectorial en la versión 3.2, [ 17 ] permitiendo soporte de la nube al borde para la búsqueda vectorial en aplicaciones móviles.
Usos
Couchbase comenzó como una evolución de Memcached , una caché de datos de alta velocidad, y puede usarse como un reemplazo directo para Memcached, proporcionando alta disponibilidad para la aplicación memcached sin cambios en el código. [ 18 ]
Couchbase se utiliza para dar soporte a aplicaciones donde se requiere un modelo de datos flexible, fácil escalabilidad y un alto rendimiento constante, como el seguimiento de la actividad del usuario en tiempo real o el almacenamiento de preferencias de usuario o aplicaciones en línea. [ 19 ]
Couchbase Mobile, que almacena datos localmente en los dispositivos (generalmente dispositivos móviles), se utiliza para crear aplicaciones "sin conexión" que pueden funcionar cuando un dispositivo no está conectado a una red y sincronizarse con Couchbase Server una vez que se restablece la conexión de red. [ 20 ]
El Catalyst Lab de la Universidad Northwestern utiliza Couchbase Mobile para dar soporte a la aplicación Evo, un programa de investigación sobre estilos de vida saludables donde se utilizan datos para ayudar a los participantes a mejorar la calidad de su dieta, su actividad física, el estrés o el sueño. [ 21 ]
Amadeus utiliza Couchbase con Apache Kafka para respaldar su estrategia “abierta, simple y ágil” para consumir e integrar datos sobre programas de fidelización para aerolíneas y otros socios de viajes. [ 22 ]
A partir de 2012, desempeñó un papel en los sistemas de almacenamiento en caché de LinkedIn , incluyendo el almacenamiento en caché de backend para productos de reclutamiento y empleos, contadores para mecanismos de defensa de seguridad y para aplicaciones internas. [ 23 ]
Alternativas
En cuanto al almacenamiento en caché, Couchbase compite con Memcached y Redis . En cuanto a las bases de datos de documentos, Couchbase compite con otros sistemas de bases de datos orientados a documentos . Se suele comparar con MongoDB , Amazon DynamoDB , Oracle RDBMS , DataStax , Google Bigtable , MariaDB , IBM Cloudant , Redis Enterprise , SingleStore y MarkLogic . [ 24 ] [ 25 ]
Bibliografía
- Brown, MC (22 de junio de 2012). Introducción a Couchbase Server (1.ª ed.). O'Reilly Media. pág. 88. ISBN 978-1449331061.
- Ostrovsky, David; Haji, Mahoma; Rodenski, Yaniv (26 de noviembre de 2015), Pro Couchbase Server 2ª ed. (2ª ed.), Apress , pág. 349, ISBN 978-1484211861
- Potsangbam, Henry (23 de noviembre de 2015), Learning Couchbase (1.ª ed.), Packt , p. 202, ISBN 978-1785288593
- Vohra, Deepak (3 de agosto de 2015), Desarrollo profesional de Couchbase: una plataforma NoSQL para la empresa (1.ª ed.), Apress , pág. 331, ISBN 978-1484214350
- Sangudi, Gerald; et al. (20 de octubre de 2017), N1QL: Una guía práctica (2.ª edición) (2.ª ed.), Autoeditado , p. 423
- Vemulapalli, Sitaram; et al. (10 de mayo de 2018), Guía de las características de N1QL en Couchbase 5.5: Edición especial , Publicación propia, pág. 112
- Chamberlin, Don ; (19 de octubre de 2018) SQL++ para usuarios de SQL: un tutorial, Couchbase
Referencias
- ↑ Damien Katz (8 de enero de 2013). "La irrazonable eficacia de C" . Recuperado el 30 de septiembre de 2016 .
- 1 2 "Couchbase adopta la licencia BSL" . El blog de Couchbase . 26 de marzo de 2021.
- ↑ "NewProtocols - memcached - Klingon - Memcached - Google Project Hosting" . 22 de agosto de 2011. Consultado el 4 de junio de 2013 .
- ↑ Shashank Tiwari (31 de agosto de 2011). Professional NoSQL . John Wiley & Sons. págs. 15–16 . ISBN 9781118167809.
- ↑ "Equilibrando Oracle y el código abierto en Orbitz" . GigaOM . 21 de septiembre de 2012. Archivado del original el 23 de septiembre de 2012. Consultado el 19 de septiembre de 2016 .
- 1 2 Andrew Brust (12 de diciembre de 2012). "Lanzamiento de Couchbase 2.0; implementa el almacenamiento de documentos JSON" . ZDNet .
- ↑ Derrick Harris (29 de julio de 2011). "Couchbase llega a la versión 2.0, impulsa SQL para NoSQL" . GigaOm . Archivado del original el 2 de octubre de 2016. Recuperado el 19 de septiembre de 2016 .
- ↑ Trond Norbye (15 de marzo de 2010). "¿Quieres saber qué están haciendo tus servidores memcached? ¡Toca sus servidores!" . Blog de Couchbase .
- ↑ Frank Weigel (30 de octubre de 2012). "Benchmarking Couchbase" . Couchbase. Archivado del original el 20 de marzo de 2015. Consultado el 30 de septiembre de 2016 .
- ↑ "Cisco y Solarflare logran una drástica reducción de la latencia en aplicaciones web interactivas con Couchbase, una base de datos NoSQL" (PDF) . Cisco Systems . 18 de junio de 2012. Archivado del original (PDF) el 13 de agosto de 2012. Consultado el 7 de octubre de 2016 .
- ↑ "Proyectos de código abierto de Couchbase" . Sitio web de Couchbase . Consultado el 7 de octubre de 2016 .
- ↑ "Ediciones de servidor de Couchbase" . Couchbase. Archivado del original el 27/12/2012 . Consultado el 07/12/2012 .
- ↑ Andy Slater (24 de marzo de 2015). "¡Shhh! No se lo digas a nadie, pero Couchbase es un serio aspirante: Couchbase Live Europe 2015" . Consultado el 13 de febrero de 2018 .
- ↑ "DB-Engines: Couchbase incluyendo Mobile" . DB-Engines . Archivado del original el 29 de julio de 2013. Consultado el 29 de junio de 2021 .
- ↑ "Lite | Couchbase" . www.couchbase.com . Consultado el 11 de mayo de 2020 .
- ↑ "Sync Gateway Couchbase" . DB-Engines . Archivado del original el 29 de julio de 2013. Consultado el 29 de junio de 2021 .
- ↑ "Búsqueda vectorial | Couchbase" . www.couchbase.com .
- ↑ Jaquier, Yannick (27-09-2016). "Servidor Couchbase como clúster Memcached (parte 2)" . IT World . Recuperado el 09-02-2022 .
- ↑ "Introducción a Couchbase: base de datos de documentos NoSQL" . Today Software Magazine . Consultado el 9 de febrero de 2022 .
- ↑ "Couchbase Mobile" . Comunidad DEV . 6 de febrero de 2022. Consultado el 9 de febrero de 2022 .
- ↑ "Cómo el Catalyst Lab de Northwestern amplía su programa de comportamiento saludable con Couchbase" . VentureBeat . 31 de diciembre de 2021. Consultado el 9 de febrero de 2022 .
- ↑ "Amadeus Loyalty gana el premio Couchbase Community Award en la categoría de computación en la nube" . Amadeus IT Group . 20 de enero de 2022.
- ↑ Michael Kehoe (6 de diciembre de 2017). "Ecosistema Couchbase en LinkedIn" . engineering.linkedin.com . Consultado el 9 de febrero de 2022 .
- ↑ "Principales competidores y alternativas de Couchbase - Gartner 2022 - Sistemas de gestión de bases de datos en la nube" . Gartner . Consultado el 9 de febrero de 2022 .
- ↑ "De MongoDB a Couchbase: una introducción para desarrolladores y expertos - Base de datos DZone" . dzone.com . Consultado el 9 de febrero de 2022 .
Enlaces externos
- Arquitectura de computación distribuida
- NoSQL
- Software multiplataforma
- Almacenamiento estructurado
- Sistemas de gestión de bases de datos cliente-servidor
- Software relacionado con bases de datos para Linux
- Aplicaciones de la computación distribuida
- Bases de datos
- Gestión de datos
- Almacenes de datos distribuidos
- Bases de datos orientadas a documentos
- Software que utiliza la licencia Business Source