Couchbase, una base de datos de documentos, permite una gran flexibilidad para almacenar diferentes tipos de documentos en un solo bucket (siendo el bucket el equivalente a una base de datos). A menudo existe la necesidad de consultar juntos documentos de un tipo similar; por ejemplo, un minorista de ropa puede querer separar toda la ropa de todos los zapatos. Hoy en día pueden hacer esto con Couchbase utilizando prefijos de claves o campos de tipo, pero esto hace que la aplicación sea más compleja.
Tener la contenedorización de elementos similares en la capa de base de datos no solo simplifica la aplicación, sino que también permite eficiencias en el procesamiento de datos en sus niveles más bajos. Además, tener niveles adicionales de contención bajo los "buckets" permite un control de acceso con una granularidad más fina que la de los "buckets".
Esto abre la puerta a tener una plataforma multiinquilino más escalable con Couchbase de lo que permitirían los buckets. Es con estos objetivos que desarrollamos la característica denominada ‘Collections’.
Couchbase Server 6.5 pone a disposición una vista previa para desarrolladores de Collections.
En este blog, describiré a grandes rasgos qué son las colecciones, qué casos de uso permiten y qué funcionalidad ofrecen. Se muestra código de ejemplo en este publicación de blog de Johan.
Nota: Una característica de vista previa para desarrolladores no se puede utilizar en producción. Lea las pautas detalladas sobre la vista previa para desarrolladores aquí: Documentación de la vista 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 tanto, puedes tener los mismos nombres de colecciones en distintos ámbitos. De manera similar, las claves de los documentos deben ser únicas solo dentro de una colección; por lo tanto, pueden existir documentos con la misma clave en diferentes colecciones.
Con esta nueva incorporación, ahora se pueden aplicar controles de acceso basados en roles a nivel de clúster, depósito, ámbito y colección.
Nota: La versión Developer Preview no cuenta con el RBAC a nivel de ámbito y de colección, pero estará disponible en la versión de producción de Couchbase 7.0.
Para una actualización sin problemas y para mantener la compatibilidad con versiones anteriores, cada depósito 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 depósito se asignará automáticamente a la colección _default. Asimismo, al actualizar, todos los datos existentes irán automáticamente a la colección _default.
Si bien la colección _default se proporciona como un mecanismo de compatibilidad hacia atrás, se recomienda que las nuevas aplicaciones se escriban utilizando una colección con nombre.

Organización simplificada de datos con colecciones
Como se mencionó anteriormente, las nuevas agrupaciones lógicas permiten una mejor organización de los datos, de manera similar a las tablas en 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.
- Capacidad para tratar documentos similares como una unidad para diversos fines, tales como la creación de un índice, la configuración de la replicación, la realización de consultas, la copia de seguridad y la restauración, etc.
- La indexación es más escalable, ya que el servicio de datos solo tiene que enviar los documentos correspondientes a la colección, en lugar de que el indexador reciba los documentos de todo el bucket y tenga que filtrarlos.
- Es más fácil escribir en N1QL: las sentencias pueden acceder directamente a una colección como si fuera una tabla, en lugar de tener que construirla dinámicamente utilizando un atributo para el tipo del documento.
Por ejemplo, compara las consultas con y sin colecciones:
SELECT * FROM products WHERE type = ‘clothes’;
vs.
SELECT * FROM productos.ropa;
Ejecución de aplicaciones multitenant con colecciones
Las aplicaciones multitenant requieren distintos niveles de aislamiento entre los inquilinos y distintos niveles de uso compartido de los recursos de la infraestructura subyacente.
Novedades de Couchbase hoy:
- El aislamiento físico, de seguridad y lógico total se logra mediante la implementación de clústeres independientes, pero esto implica el menor nivel de uso compartido de recursos
- La seguridad y el aislamiento lógico se logran con múltiples _buckets_ por clúster, pero esto tiene sus propios límites en términos de sobrecarga por _bucket_
- La ubicación de varios inquilinos en un mismo grupo permite un mejor uso compartido de los recursos, pero requiere que la aplicación se encargue de cualquier aspecto relacionado con la seguridad o el aislamiento lógico.
Con la introducción de las colecciones (y su agrupación en ámbitos), Couchbase puede ofrecer seguridad y aislamiento lógico a niveles más granulares dentro de un bucket. Puedes tener miles de agrupaciones en un solo bucket, lo que te permite alojar a miles de inquilinos en un solo clúster. Por el contrario, el número de buckets que se pueden alojar en un solo clúster es limitado (ten en cuenta que este límite ha aumentado a 30 en Couchbase Server 6.5 con el dimensionamiento adecuado) y, a menudo, no es suficiente para las necesidades de las aplicaciones multitenant.
Consolidación de microservicios con colecciones
Las aplicaciones modernas suelen desarrollarse como un conjunto de microservicios, y una sola aplicación puede estar compuesta por cientos de microservicios. Si bien sigue siendo una opción utilizar un bucket o incluso un clúster por microservicio, las colecciones (y los ámbitos) ofrecen una alternativa más escalable para consolidar más microservicios en un solo clúster de Couchbase.
La arquitectura multitenant y la basada en microservicios no son mutuamente excluyentes. Muchas aplicaciones multitenant se desarrollan utilizando una arquitectura de microservicios. Con los buckets, los ámbitos y las colecciones, ahora tienes a tu disposición múltiples niveles de contención, lo que te brinda flexibilidad para asignar como desees a los inquilinos, los microservicios y las tablas.
Disponibilidad de las funciones en la versión preliminar para desarrolladores
Una vez que hayas activado la opción «Developer Preview» en un clúster de Couchbase 6.5 (Documentación de la vista previa para desarrolladores), puedes empezar a usar colecciones y ámbitos. Algunas de las características clave de los ámbitos y las colecciones de la funcionalidad DP incluyen:
- Compatibilidad con ellos tanto en los buckets de Ephemeral como en los de Couchbase
- Todos los SDK de Couchbase admiten operaciones DDL y CRUD en ellos
- Puedes crearlos y eliminarlos, ya sea desde el SDK, la API REST o couchbase-cli.
- Puedes realizar todas las operaciones CRUD en una colección (incluidas subdoc).
- El recuento de elementos de cada colección está disponible con cbstats.
- Se ha mejorado el protocolo DCP para permitir la transmisión de un solo ámbito o una sola colección (además de la capacidad ya existente de transmitir un solo depósito).
Nota: DP está diseñado principalmente para el acceso clave-valor. RBAC estará disponible más adelante. La integración con XDCR, la indexación y N1QL, los eventos, el análisis y la versión móvil se presentarán en versión preliminar más adelante.
Próximos pasos
Aquí tienes algunos recursos para empezar a usar las nuevas funciones de la Vista Previa para Desarrolladores:
Descargar
Descargar Couchbase Server 6.5
Documentación
Documentación de Colecciones de Couchbase Server 6.5
Notas de la versión de Couchbase Server 6.5
Novedades de Couchbase Server 6.5
Blogs
Primeros pasos con las colecciones de Couchbase utilizando la aplicación de demostración
Autor
2 respuestas
-
¿Cómo se integra esto con Couchbase Mobile? En particular, ¿hay una manera directa de indicarle a Sync Gateway que sincronice documentos dentro de un ámbito o colección en particular?
-
Actualmente, Couchbase Mobile se integra únicamente con la Colección Predeterminada. En una versión futura habrá una manera de indicarle a Sync Gateway que sincronice documentos dentro de un ámbito o colección, pero aún no.

Deja un comentario
Lo siento, debes estar conectado para publicar un comentario.