Servidor de Couchbase | ||
---|---|---|
Información general | ||
Tipo de programa | base de datos documental | |
Autor | Couchbase, Inc. | |
Desarrollador | Couchbase, Inc. | |
Lanzamiento inicial | 2010 de agosto | |
Licencia | Apache License | |
Estado actual | activo | |
Información técnica | ||
Programado en | C++, Erlang | |
Versiones | ||
Última versión estable | 6.5.1 ( 23.04.2020) | |
Enlaces | ||
Servidor de Couchbase, originalmente conocido como Membase, es un proyecto de código abierto, un paquete de software distribuido (del inglés arquitecturas shared-nothing) multi-modelo orientado a base de datos documental y que está optimizado para aplicaciones interactivas. Estas aplicaciones pueden servir a muchos usuarios al mismo tiempo mediante la creación, almacenamiento, recuperación, agregación, manipulación y presentación de datos. Para soportar este tipo de necesidades, Couchbase Server está diseñado para proporcionar acceso a documentos de valor-clave (del inglés key - value documents) o documentos JSON de fácil escala, con baja latencia y alto rendimiento sostenido. Está diseñado para ser agrupado a partir de una sola máquina a gran escala que abarca muchas máquinas (clúster).
El Servidor de Couchbase proporciona compatibilidad con el protocolo de cliente memcached,[1] agregando persistencia de disco, replicación de datos, reconfiguración del clúster en vivo, reequilibrio y multiusuario con partición de datos.
Membase fue desarrollado por varios dirigentes del proyecto memcached, que habían fundado la compañía, NorthScale, para desarrollar un almacén de datos claves-valor con la simplicidad, velocidad y escalabilidad de memcached, pero que también proporcionara el almacenamiento, la persistencia y las capacidades de consulta de una base de datos. El código fuente membase original fue aportado por NorthScale, y por los co-patrocinadores de Zynga y Naver (entonces conocido como NHN) a un nuevo proyecto sobre membase.org en junio de 2010.[2]
El 8 de febrero de 2011, los fundadores del proyecto Membase y Membase, Inc. anunciaron una fusión con CouchOne (una empresa con muchas de las principales figuras detrás de CouchDB) con una mezcla de proyecto asociado. La empresa fusionada fue llamada Couchbase, Inc. En enero de 2012, Couchbase lanzó Couchbase Server 1.8. En septiembre de 2012, Orbitz dijo que trasladó algunos de sus sistemas a utilizar Couchbase.[3] En diciembre de 2012, Couchbase Server 2.0 (anunciado en julio de 2011 y lanzado el 12 de diciembre), incluyó un nuevo almacén de documentos JSON, indexación y consulta, MapReduce incremental y replicación a través de los centros de datoss.[4][5]
Cada nodo de Couchbase consta de un servicio de datos, servicio de índice, servicio de consulta y componente de administrador de clúster. A partir de la versión 4.0, los tres servicios se pueden distribuir 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 de datos y tolerancia de partición, o puede ser configurado como un sistema de punto de acceso (AP) con varios clústeres.
El administrador del 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, así como la gestión de flujos de replicación y operaciones de reequilibrio. También proporciona funciones de agregación y de consenso métricas en el clúster y una interfaz de gestión de clústeres REST. El gestor de clúster utiliza el lenguaje de programación Erlang y Open Telecom Platform.
La replicación (informática) dentro de los nodos de un clúster se puede controlar con varios parámetros. En diciembre de 2012, se añadió la capacidad de replicación entre diferentes centros de datos.[4]
El gestor de datos almacena y reintenta documentos en respuesta a las operaciones de datos de las aplicaciones. De forma asíncrona escribe datos en el disco después de reconocer al cliente. En la versión 1.7 y posteriores, las aplicaciones pueden asegurar opcionalmente que los datos se escriban en más de un servidor o en disco antes de reconocer una escritura al cliente. Los parámetros definen las edades de los elementos que afectan cuando los datos se mantienen y cómo se gestiona la memoria máxima y la migración desde la memoria principal al disco. Soporta conjuntos de trabajo mayores que una cuota de memoria por "nodo" o "cubo". Los sistemas externos pueden suscribirse a los flujos de datos filtrados, apoyando, por ejemplo, indexación de búsqueda con texto completo, análisis de datos o archivo.[6]
Un documento es la unidad más básica de manipulación de datos en Couchbase Server. Los documentos se almacenan en formato JSON, sin esquemas predefinidos.
Couchbase Server incluye una caché integrada multi-hilo de objetos, que implementa las API compatibles con memcached tales como get, set, delete, append, prepend, etc.
Couchbase Server tiene un diseño de almacenamiento tail-append que es inmune a la corrupción de datos, agotamiento del espacio de memoria o caída eléctrica repentina. Los datos se escriben en el archivo de datos de forma append-only, lo que permite a Couchbase hacer principalmente escrituras secuenciales para actualizar y proporcionar patrones de acceso optimizados de E/S en el disco.
Una referencia de rendimiento realizado por Altoros en 2012, compara Couchbase Server con otras tecnologías.[7] Cisco Systems publicó un punto de referencia que mide la latencia y el rendimiento de Couchbase Server con una carga de trabajo mixta en 2012.[8]
Couchbase Server es una versión empaquetada del software de código abierto de CouchBase y está disponible en una edición de la comunidad sin recientes correcciones de errores con licencia Apache 2.0.[9] y una edición para uso comercial.[10] Couchbase Server está disponible para los sistemas operativos Ubuntu, Debian, Red Hat, SUSE, Oracle Linux, Microsoft Windows y Mac OS X.
Couchbase ha apoyado herramientas de desarrollo de software de los lenguajes de programación .Net, PHP, Ruby, Python, C, Node.js, Java, y Go.
El lenguaje de consulta N1QL (del inglés non-first normal form query language), se utiliza para la búsqueda de datos en el servidor. Se anunció en marzo de 2015, como "SQL para documentos".[11]
El modelo de datos N1QL es N1NF (del inglés non-first normal form) con soporte para atributos anidados y normalización orientada a dominio. El modelo de datos N1QL también es un superconjunto apropiado y una generalización del modelo relacional.