Couchbase Móvil

¿Acceso denegado o acceso perdido? Algunos consejos sobre Sync Gateway

El plan para esta entrada de blog comenzó con el deseo de aclarar un detalle particular acerca de cómo Couchbase Mobile's Pasarela de sincronización se encarga de eliminar el acceso de un cliente a un documento. Voy a escribir un poco sobre Sync Gateway canales para sentar las bases. Si ya conoce Sync Gateway y los canales, puede saltarse la primera parte.

Canales de la puerta de sincronización

Pasarela de sincronizaciónla parte "adhesiva" del Couchbase Móvil stack, tiene la capacidad de asignar documentos a algo que llamamos canales. Los canales actúan como mecanismo de organización y seguridad.

Este gráfico puede ayudarle a imaginarse cómo funcionan los canales. Muestra conceptualmente la idea de Sync Gateway alimentando documentos a los canales durante una replicación.

Symbolic: channels as pipes

La asignación de documentos a canales se controla a través de Sync Gateway función de sincronización. Cada tubo azul del diagrama representa un canal. Las flechas verdes ilustran la idea de que la función de sincronización puede asignar cualquier documento individual a cualquier número de canales.

Esto le permite agrupar documentos relacionados, facilitando la organización del flujo de información. Por ejemplo, puedes crear un canal para cada usuario de una aplicación. Puedes cambiar el modelo de datos y los documentos todo lo que quieras. Sólo tienes que etiquetar cada documento con el id de usuario.

Los canales son tan útiles que hemos hecho que la función de sincronización por defecto los cree automáticamente. Asigna un documento a un conjunto de canales basándose en la presencia de un canales del documento. O, dicho de otro modo, si no proporciona una función de sincronización, Sync Gateway utiliza el siguiente equivalente:

(Las funciones de sincronización están escritas en JavaScript. canal es una función definida por Sync Gateway).

Para utilizar canales, un cliente sólo tiene que solicitar los que desee al configurar una replicación. Pero, ¿qué pasa con la seguridad? No estaría bien que cualquier cliente pudiera acceder al canal que quisiera.

Sync Gateway sólo enviará documentos a los clientes autorizados. Esto ocurre por canal. Puede autorizar a un cliente en función de un identificador de usuario autenticado o de una función asignada al usuario.

Este diagrama da una idea visual de cómo la asignación de canales (realizada por Sync Gateway), las solicitudes de acceso a canales (realizadas por un cliente mientras se ejecuta una replicación) y la autorización se combinan para determinar qué documentos puede extraer un cliente.

Venn diagram showing accessible documents as intersection of Sync Gateway assigned documents, authorized access, and client requested channels

El círculo azul representa los canales a los que la función de sincronización asigna un documento. El círculo amarillo representa los canales que solicita un cliente. Por último, el círculo rojo representa los canales a los que un usuario o rol tiene autorización para acceder. La sección verde representa los documentos que recibirá el cliente.

Uno, no espere, Dos Tricky Bits

La descripción anterior puede parecer muy sencilla. Hay mucho más que entender acerca de Sync Gateway y cómo se puede configurar. Quiero terminar hablando de dos casos que tienden a hacer tropezar a la gente.

Lectura frente a escritura

Observe que la relación entre un cliente y Sync Gateway aquí no es simétrica. Sync Gateway se encarga de alimentar los documentos en función de los canales. Los clientes no. Esto tiene el resultado aparentemente extraño de que un cliente puede empujar (escribir) un documento que no puede tirar (leer). (Decimos push y pull para indicar que se está produciendo una replicación, y la dirección del flujo de datos).

Digamos que estamos usando la función de sincronización por defecto, y autorizamos la extracción basándonos en el id de usuario. El usuario Alice crea un documento y pone "Bob" en el campo canales propiedad. Una vez que Alice envía el documento a Sync Gateway, ya no puede extraerlo. Sync Gateway asigna la nueva revisión al canal de Bob. Alice no puede extraer el documento, pero Bob sí.

Acceso perdido

He aquí otro caso extremo. ¿Qué ocurre si un cliente pierde el acceso a un documento? Como acabamos de ver, el cliente podría incluso haberlo provocado.

Couchbase Mobile utiliza lo que se conoce como control de concurrencia multi-versión para manejar todos los matices que el uso offline y la sincronización sofisticada producen. Perder el acceso no es lo mismo que borrar el documento. Además, el cliente puede tener ya una versión anterior.

Couchbase maneja esto creando una revisión especial del documento. Es una revisión lápida, lo que significa que no tiene contenido. Sin embargo, a diferencia de una lápida que marca un documento borrado, este tipo marca el documento como que ha sido eliminado. (Esto aparece en los metadatos del documento).

Para la mayoría de los propósitos, Couchbase Lite se comportará como si el documento no existiera. No se mostrará en las consultas, por ejemplo. Sin embargo, todavía hay formas de recuperarlo. Puedes comprobar si un documento ha sido eliminado llamando a su archivo .isGone() método. (Ten en cuenta que el tombstone sólo se crea cuando un cliente como Couchbase Lite tira del tombstone durante una replicación).

Conclusión

Sync Gateway es una pieza versátil de software por derecho propio. Es un componente crítico de Couchbase Mobile, clave para resolver algunos de los problemas difíciles que vienen con una plataforma de datos que soporta completamente el uso fuera de línea.

Espero haber dado una idea de un aspecto de Sync Gateway (canales), junto con un par de consejos importantes. Para sacar el máximo provecho de Sync Gateway, tómese su tiempo para explorar la sección documentación.

Posdata

Consulte más recursos en nuestra portal para desarrolladores y síganos en Twitter @CouchbaseDev.

Puede enviar preguntas a nuestro foros. Y participamos activamente en Stack Overflow.

Puede seguirme personalmente en @HodGreeley

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

Autor

Publicado por Hod Greeley

Hod Greeley es desarrollador de Couchbase y vive en Silicon Valley. Tiene más de dos décadas de experiencia como ingeniero de software y director de ingeniería. Ha trabajado en una variedad de campos de software, incluyendo física computacional y química, seguridad informática y de redes, finanzas y móviles. Antes de unirse a Couchbase en 2016, Hod dirigió las relaciones con desarrolladores para móviles en Samsung. Hod es doctor en física química por la Universidad de Columbia.

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.