Couchbase Server , originalmente conocido como Membase , es un paquete de software de base de datos NoSQL multimodelo , orientado a documentos, distribuido ( arquitectura sin recursos compartidos ) y disponible en código fuente [2], optimizado para aplicaciones interactivas. Estas aplicaciones pueden servir a muchos usuarios simultáneos mediante la creación, el almacenamiento, la recuperación, la agregación, la manipulación y la presentación de datos. Para respaldar este tipo de necesidades de aplicaciones, Couchbase Server está diseñado para proporcionar acceso a documentos JSON o clave-valor de fácil escalabilidad, con baja latencia y alto rendimiento de sostenibilidad. Está diseñado para agruparse 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 partición de datos .
Membase fue desarrollado por varios líderes del proyecto memcached , quienes habían fundado una empresa, NorthScale, para desarrollar un almacén de claves y valores 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) a 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 consulta, MapReduce incremental y replicación en centros de datos . [6] [7]
Cada nodo de Couchbase consta de un servicio de datos, un servicio de índice, un servicio de consultas y un componente de administrador de clúster. A partir de la versión 4.0, los tres servicios se pueden distribuir para que se ejecuten en nodos separados del clúster si es necesario. En el lenguaje del teorema CAP de Eric Brewer , Couchbase normalmente es un sistema de tipo CP, lo que significa que proporciona coherencia y tolerancia a particiones , o se puede configurar como un sistema AP con múltiples clústeres.
El administrador de clúster supervisa la configuración y el comportamiento de todos los servidores de un clúster de Couchbase. Configura y supervisa el comportamiento entre nodos, como la gestión de flujos de replicación y operaciones de reequilibrio. También proporciona funciones de consenso y agregación de métricas para el clúster, y una interfaz de gestión de clúster RESTful . El administrador de clúster utiliza el lenguaje de programación Erlang y la Open Telecom Platform .
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]
El administrador de datos almacena y recupera documentos en respuesta a las operaciones de datos de las aplicaciones. Escribe datos en el disco de forma asincrónica después de confirmar la recepción por parte del cliente. En la versión 1.7 y posteriores, las aplicaciones pueden garantizar opcionalmente que los datos se escriban en más de un servidor o en el disco antes de confirmar la recepción de una escritura por parte del cliente. Los parámetros definen las edades de los elementos que afectan el momento en que se conservan 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 superiores a una cuota de memoria por "nodo" o "depósito". Los sistemas externos pueden suscribirse a flujos de datos filtrados, lo que admite, por ejemplo, la indexación de búsqueda de texto completo , el análisis de datos o el archivado. [8]
Un documento es la unidad más básica de manipulación de datos en Couchbase Server. Los documentos se almacenan en formato de documento JSON sin esquemas predefinidos. También se pueden almacenar documentos que no sean JSON en Couchbase Server (binarios, valores serializados, XML, etc.).
Couchbase Server incluye un caché administrado por objetos multiproceso integrado que implementa API compatibles con memcached como obtener, establecer, eliminar, agregar, anteponer, etc.
Couchbase Server tiene un diseño de almacenamiento de anexión de cola que es inmune a la corrupción de datos, a los eliminadores de OOM o a la pérdida repentina de energía. Los datos se escriben en el archivo de datos de manera que solo se puedan anexar, lo que permite a Couchbase realizar escrituras principalmente secuenciales para la actualización y proporcionar patrones de acceso optimizados para la E/S del disco.
En 2012, Altoros realizó una evaluación comparativa de rendimiento que comparó Couchbase Server con otras tecnologías. [9] Cisco Systems publicó una evaluación comparativa que midió la latencia y el rendimiento de Couchbase Server con una carga de trabajo mixta en 2012. [10]
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] Las compilaciones de Couchbase Server están disponibles para los sistemas operativos Ubuntu, Debian, Red Hat, SUSE, Oracle Linux, Microsoft Windows y macOS.
Couchbase ha admitido kits para desarrolladores de software para los lenguajes de programación .NET , PHP , Ruby , Python , C , Node.js , Java , Go y Scala .
En Couchbase se utiliza un lenguaje de consulta denominado SQL++ (anteriormente denominado N1QL) para manipular los datos JSON, de la misma forma que SQL manipula los datos en RDBMS. Tiene instrucciones SELECT, INSERT, UPDATE, DELETE y MERGE para operar con datos JSON. Se anunció inicialmente en marzo de 2015 como "SQL para documentos". [13]
El modelo de datos SQL++ es una forma normal no primera (N1NF) con soporte para atributos anidados y normalización orientada al dominio . El modelo de datos SQL++ también es un superconjunto adecuado y una generalización del modelo relacional .
{ "correo electrónico" : "[email protected]" , "amigos" : [ { "nombre" : "Pavan" }, { "nombre" : "Ravi" } ] }
SELECT * FROM `bucket` WHERE email LIKE "%@example.org";
SELECT * FROM `bucket` WHERE ANY x IN friends SATISFIES x.name = "Pavan" END;
Couchbase Mobile / Couchbase Lite es una base de datos móvil que proporciona replicación de datos. [14]
Couchbase Lite (originalmente TouchDB) ofrece bibliotecas nativas para bases de datos NoSQL offline con mecanismos de replicación de cliente a servidor o peer-to-peer integrados . [15] Sync Gateway administra el acceso seguro y la sincronización de datos entre Couchbase Lite y Couchbase Server. [16]
Couchbase comenzó como una evolución de Memcached , un caché de datos de alta velocidad, y puede usarse como un reemplazo directo de Memcached, brindando alta disponibilidad para aplicaciones memcached sin cambios de código. [17]
Couchbase se utiliza para respaldar aplicaciones que requieren un modelo de datos flexible, escalabilidad fácil y un alto rendimiento constante, como el seguimiento de la actividad del usuario en tiempo real o el suministro de un almacén de preferencias del usuario o aplicaciones en línea. [18]
Couchbase Mobile, que almacena datos localmente en dispositivos (normalmente 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 una conexión de red. [19]
El Catalyst Lab de la Universidad Northwestern utiliza Couchbase Mobile para respaldar la aplicación Evo, un programa de investigación sobre estilos de vida saludables en el que se utilizan datos para ayudar a los participantes a mejorar la calidad de su dieta, la actividad física, el estrés o el sueño. [20]
Amadeus utiliza Couchbase con Apache Kafka para respaldar su estrategia “abierta, sencilla y ágil” de consumo e integración de datos sobre programas de fidelización para aerolíneas y otros socios de viajes. Se necesita una alta escalabilidad cuando los eventos de viajes disruptivos crean la necesidad de reconocer y compensar a los clientes de alto valor. [21]
A partir de 2012, desempeñó un papel en los sistemas de almacenamiento en caché de LinkedIn , incluido el almacenamiento en caché de back-end para productos de reclutamiento y empleos, contadores para mecanismos de defensa de seguridad y para aplicaciones internas. [22]
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 lo suele comparar con MongoDB , Amazon DynamoDB , Oracle RDBMS , DataStax , Google Bigtable , MariaDB , IBM Cloudant , Redis Enterprise , SingleStore y MarkLogic . [23] [24]
{{cite web}}
: |last=
tiene nombre genérico ( ayuda )