Diseño de aplicaciones

Introducción a las colecciones - Dev Preview en Couchbase Server 6.5

Couchbase, una base de datos de documentos, permite una gran flexibilidad a la hora de almacenar diferentes tipos de documentos en un único bucket (bucket es el equivalente a una base de datos). Es frecuente la necesidad de referirse a documentos de un tipo similar de forma conjunta, por ejemplo, un minorista de ropa puede querer separar toda la ropa de todos los zapatos. Esto se puede hacer hoy en día con Couchbase utilizando prefijos clave o campos de tipo, pero hace que la aplicación sea más engorrosa. 

La contenedorización de elementos similares en la capa de base de datos no sólo simplifica la aplicación, sino que permite una mayor eficiencia en el procesamiento de datos en sus niveles más bajos. Además, disponer de niveles adicionales de contención bajo los buckets permite un control de acceso con una granularidad más fina que los buckets.

Esto abre la puerta a tener una plataforma multi-tenant más escalable con Couchbase de lo que permitiría el uso de buckets. Con estos objetivos hemos desarrollado la función denominada "Colecciones".

Couchbase Server 6.5 pone a disposición una Developer Preview de Collections.

En este blog, describiré a alto nivel qué son las colecciones, qué casos de uso permiten y la funcionalidad que proporcionan. El código de ejemplo se muestra en este entrada en el blog de Johan.

Nota: Las funciones de la versión preliminar para desarrolladores no pueden utilizarse en producción. Lee las directrices detalladas sobre la Developer Preview aquí: Documentación previa para desarrolladores.

¿Qué son las Colecciones?

Son contenedores lógicos de datos dentro de un bucket de Couchbase que agrupan datos similares, al igual que lo hace una "Tabla" en una base de datos relacional.

También hay otro nivel disponible para la organización de datos llamado "Ámbito", similar a un "Esquema" en una base de datos relacional. El espacio de nombres dentro de cada ámbito es independiente de los demás, por lo que puede tener los mismos nombres de colección en distintos ámbitos. Del mismo modo, las claves de los documentos deben ser únicas sólo dentro de una colección, por lo que pueden existir documentos con la misma clave en diferentes colecciones.

Con esta nueva introducción, ahora se pueden aplicar controles de acceso basados en funciones a nivel de clúster, bucket, ámbito y colección.

Nota: La Developer Preview no tiene el RBAC a nivel de alcance y colección pero estará disponible con la versión de producción en Couchbase 7.0.

Para una actualización sin problemas, y para la compatibilidad con versiones anteriores, cada cubo tiene un ámbito "_default" y el ámbito "_default" tiene una colección "_default". La colección _default proporciona compatibilidad con versiones anteriores, ya que una referencia directa al cubo se asignará automáticamente a la colección _default. Además, al actualizar, todos los datos existentes pasarán automáticamente a la colección _default. 

Aunque la colección _default se proporciona como mecanismo de compatibilidad con versiones anteriores, se recomienda que las nuevas aplicaciones se escriban utilizando una colección con nombre.

an example data containment hierarchy using scopes and collections in couchbase

Organización simplificada de datos con colecciones

Como ya se ha dicho, las nuevas agrupaciones lógicas permiten organizar mejor los datos, de forma similar a las tablas de una base de datos relacional.
Los beneficios incluyen:

  • Mapeo más fácil de esquemas relacionales a Couchbase mediante la creación de una colección para una tabla relacional correspondiente.
  • Posibilidad de referirse a documentos similares como una unidad para diversos fines, como la creación de un índice, la configuración de la replicación, la consulta, la copia de seguridad/restauración, etc.
  • Indexación más escalable, ya que el servicio de datos sólo tiene que enviar los documentos de la colección en lugar de que el indexador reciba los documentos de todo el bucket y los filtre.
  • Más fácil de escribir N1QL - las sentencias pueden acceder a una colección como una tabla directamente en lugar de tener que construirlas dinámicamente usando un atributo para el tipo de documento.

Por ejemplo, compare las consultas con y sin colecciones:

         SELECT * FROM productos WHERE tipo = 'ropa';

vs.

         SELECT * FROM productos.ropa;

Ejecución de aplicaciones multiusuario con colecciones

Las aplicaciones multiarrendatario requieren distintos niveles de aislamiento entre arrendatarios y distintos niveles de compartición de recursos de la infraestructura subyacente. 

Dentro de Couchbase hoy:

  • se consigue un aislamiento físico, lógico y de seguridad completo desplegando clústeres separados, pero se comparten menos recursos 
  • La seguridad y el aislamiento lógico se consiguen con varios buckets por cluster, pero tiene sus propios límites en términos de sobrecarga por bucket.
  • múltiples inquilinos colocados en un único bucket proporciona la mejor compartición de recursos, pero requiere que la aplicación gestione cualquier seguridad o aislamiento lógico.

Con la introducción de las colecciones (y su agrupación en ámbitos), Couchbase puede proporcionar seguridad y aislamiento lógico a niveles más granulares dentro de un bucket. Puedes tener miles de agrupaciones en un único bucket, lo que te permite alojar miles de inquilinos en un único cluster. En cambio, el número de buckets que se pueden alojar en un único cluster es limitado (nótese que este límite ha aumentado a 30 en Couchbase Server 6.5 con un dimensionamiento adecuado), y a menudo no es suficiente para las necesidades de las aplicaciones multi-tenant.

Consolidación de microservicios con colecciones

Las aplicaciones modernas a menudo se escriben como un conjunto de microservicios y una sola aplicación puede estar compuesta por cientos de microservicios. Aunque usar un bucket o incluso un clúster por microservicio sigue siendo una opción, las colecciones (y los ámbitos) proporcionan una alternativa más escalable para consolidar más microservicios en un único clúster de Couchbase.

La arquitectura multiarrendamiento y la basada en microservicios no son mutuamente excluyentes. Muchas aplicaciones multi-tenant se escriben utilizando una arquitectura de microservicios. Con los buckets, los ámbitos y las colecciones, ahora tienes muchos niveles de contención a tu disposición y esto te da flexibilidad sobre cómo quieres asignar inquilinos, microservicios y tablas.

Funciones disponibles en la versión preliminar para desarrolladores

Una vez que haya activado el interruptor Developer Preview en un clúster Couchbase 6.5 (Documentación previa para desarrolladores), puede empezar a utilizar colecciones y ámbitos. Algunas de las características clave del ámbito y la colección de la funcionalidad DP incluyen:

  • Compatibilidad con los buckets efímeros y Couchbase
  • Todos los SDKs de Couchbase soportan operaciones DDL y CRUD sobre ellos
  • Puedes crearlos y soltarlos - desde el SDK, REST API o couchbase-cli.
  • Puede realizar todas las operaciones CRUD en una colección (incluyendo subdoc). 
  • El recuento de elementos de cada colección está disponible con cbstats.
  • El protocolo DCP se ha mejorado para transmitir un único ámbito o una única colección (además de la capacidad existente de transmitir un único cubo).

Nota: DP es principalmente para el acceso Clave-Valor. RBAC estará disponible más adelante. La integración con XDCR, Indexing y N1QL, Eventing, Analytics y Mobile se previsualizará más adelante.

Próximos pasos

Aquí tienes algunos recursos para empezar a utilizar las nuevas funciones de la Developer Preview:

Descargar

Descargar Couchbase Server 6.5

 Documentación

Documentación de Couchbase Server 6.5 Collections

Notas de la versión de Couchbase Server 6.5

Novedades de Couchbase Server 6.5

 Blogs 

Introducción a Couchbase Collections con la aplicación de demostración

Blog: Anuncio de Couchbase Server 6.5 - Novedades y mejoras

Todos los blogs de 6.5

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Shivani Gupta

Shivani Gupta es Directora de Gestión de Producto en Couchbase para el Core Server. Shivani tiene más de 20 años de experiencia variada en Big Data, Sistemas Distribuidos y Bases de Datos en diferentes empresas, incluyendo Oracle, Microsoft, VMWare, Hortonworks y ahora Couchbase.

2 Comentarios

  1. ¿Cómo se integra esto con Couchbase Mobile? En concreto, ¿hay alguna forma sencilla de indicar a Sync Gateway que sincronice los documentos de un ámbito o colección determinados?

  2. Actualmente Couchbase Mobile sólo se integra con la colección por defecto. En una futura versión habrá una manera de decirle a Sync Gateway que sincronice documentos dentro de un ámbito o colección, pero todavía no.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.