Couchbase Móvil permite una amplia gama de casos de uso offline-first de diversos grados de escala y complejidad. En un Correo electrónico:En el blog de Couchbase Lite, discutí patrones comunes al usar Couchbase Lite como almacén de datos NoSQL integrado en tus aplicaciones. Esos patrones se centraron en el almacenamiento local de datos. En esta entrada del blog, discutimos algunos patrones comunes y las mejores prácticas en lo que respecta a la sincronización de datos con el Pasarela de sincronización. Este post asume que estás familiarizado con los fundamentos de Couchbase Mobile. Si necesitas una introducción, consulta la documentación en Couchbase Lite y Pasarela de sincronización.
Patrón 1: Mantener los datos sincronizados mientras la aplicación está en segundo plano

El soporte de aplicaciones móviles en segundo plano varía drásticamente según la plataforma. De hecho, en ciertas plataformas como Android, el concepto de "aplicaciones en segundo plano" es bastante nebuloso/complicado. Así que cómo sincronizar datos mientras tu aplicación está en segundo plano depende mucho de la plataforma. Puedes encontrar una discusión sobre cómo Couchbase Lite reacciona al ciclo de vida de la aplicación en iOS, Android y Windows en nuestra documentación.
- Caso práctico
Al mantener los datos actualizados cuando no están en uso activo (o en primer plano), las aplicaciones pueden mejorar la experiencia del usuario final reduciendo el tiempo de arranque en posteriores lanzamientos.
- Acérquese a
- Hay que tener en cuenta que no hay garantía de que se permita a tu aplicación ejecutarse en segundo plano. Eso suele ser una decisión a nivel de sistema o a nivel de usuario.
- La forma en que una aplicación gestiona la sincronización en segundo plano depende de la plataforma
- Por lo general, se recomienda que, siempre que sea posible, la aplicación reaccione a los eventos adecuados del ciclo de vida de la aplicación y cierre el replicador antes de pasar a segundo plano.
- iOS
- Las réplicas continuas pasan a modo offline cuando la aplicación pasa a segundo plano.
- Utilice Servicio de notificaciones push de Apple (APNS) para enviar un notificación silenciosa para activar la aplicación en segundo plano o utilizar Actualización de la aplicación en segundo plano para permitir que el sistema despierte oportunamente la aplicación
- Cuando la aplicación se activa en segundo plano, realiza una replicación única para sincronizar los datos.
- Más información sobre el soporte de fondo en iOS en este entrada del blog.
- Android
- Hay un par de opciones disponibles si las aplicaciones tienen que ejecutar tareas en segundo plano
- Utilice Servicio de primer plano para réplicas de larga duración en segundo plano
- Utilice Jefe de trabajo para programar réplicas únicas que se ejecuten de forma asíncrona en segundo plano o utilizar Remote Mensajería en la nube Firebase (FCM) iniciar una solicitud de trabajo para ejecutar una replicación única
- Hay un par de opciones disponibles si las aplicaciones tienen que ejecutar tareas en segundo plano
- UWP
- Las réplicas continuas no pasan a modo offline cuando una aplicación pasa a segundo plano. No obstante, se recomienda que las aplicaciones cierren el replicador cuando pasen a segundo plano.
- Utilice notificaciones brutas enviado a través de Servicio de notificaciones push de Windows (WPNS) para activar la aplicación en segundo plano
- Cuando la aplicación se active en segundo plano, programe una tarea en segundo plano para realizar una replicación única y sincronizar los datos.
Patrón 2: Purga tras empuje

Couchbase Lite permite que las aplicaciones reciban notificaciones sobre el estado de replicación de un documento o conjunto de documentos a través de Eventos de replicación capacidad. Las aplicaciones pueden aprovechar esta capacidad para tomar las medidas oportunas sobre el documento en función de su estado, por ejemplo, eliminarlo.
- Caso práctico
Puede ser conveniente eliminar los documentos del almacén local del cliente una vez sincronizados con el servidor, por motivos de cumplimiento de la normativa o para evitar la sobrecarga de la base de datos local.
- Acérquese a
- Regístrese en Evento de replicación observador en Replicator
- Al recibir
onPushed
en los documentos, invoque purgar() API para eliminar documentos. Los documentos eliminados no se sincronizan.
Patrón 3: Aplicación de la vida útil de los documentos en el servidor a clientes desconectados

Couchbase Lite permite a las aplicaciones establecer fechas de caducidad en documentos locales a través de Fecha de expiración función. Las aplicaciones pueden aprovechar esta capacidad para caducar localmente un documento en Couchbase Lite independientemente de la conectividad con el servidor.
- Caso práctico
Los documentos creados en el servidor pueden asociarse a un TTL o fecha de caducidad que dicta cuándo debe purgarse el documento del sistema (clientes y servidor). Cuando haya conectividad de red, los documentos eliminados en el servidor se sincronizarán con el cliente, de modo que también se eliminarán en el cliente. Sin embargo, es probable que los clientes estén desconectados cuando los documentos caduquen en el servidor y puede ser importante que estos documentos se eliminen de los clientes en el momento oportuno.
- Acérquese a
- Modele sus documentos para incluir una propiedad definida por el usuario que especifique la hora UTC en la que expira el documento. Llamémosla válidoHasta.
- Regístrese en Evento de replicación observador en el cliente Replicante
- Al recibir
Tire de
en documento(s), utilice el botón válidoHasta para establecer el TTL de los documentos que utilizan la función setFechaCaducidad() API - Cuando los documentos caducan en el cliente, se purgan automáticamente del cliente independientemente de la conectividad de red. Los documentos purgados no se sincronizan.
- En el lado del servidor, los documentos pueden purgarse independientemente
- Advertencia: : Si la fecha de caducidad (definida por válidoHasta ) se actualiza mientras los clientes están desconectados, los clientes no serán notificados de este cambio. Por lo tanto, es posible que los documentos se eliminen prematuramente en los clientes cuando no están conectados. Por lo tanto, este método es seguro siempre que la vida útil del documento no cambie después de su creación. Vamos a discutir otro enfoque para manejar estos casos.
Patrón 4: Controlar cuándo y qué documentos se sincronizan con el servidor

Couchbase Lite permite que las aplicaciones establezcan parámetros muy precisos filtros en el replicador que determina qué documentos se envían al servidor. Esta capacidad puede aprovecharse para controlar cuándo y qué documentos se sincronizan con el servidor.
- Caso práctico
En una blogEn el artículo anterior, hablamos de cómo se puede utilizar una instancia separada de una base de datos para almacenar datos locales. Aunque este patrón funciona cuando se necesita una segregación estricta de los datos y si no se requieren consultas de unión entre bases de datos, hay casos de uso en los que se desea un control detallado sobre cuando los cambios locales deben ser sincronizados. También puede utilizar este patrón como alternativa al patrón de base de datos pre-construida con el fin de hacer cumplir que los documentos son sólo locales (es decir, nunca sincronizados).
- Acérquese a
- Modele sus documentos para incluir un "status" que controla el flujo de trabajo empresarial. Por ejemplo, utilice un valor de "en curso" para indicar cuando los cambios no están listos para ser sincronizados y un valor de estado de "comprometido" cuando sea necesario subir los cambios. Si necesita hacer que los documentos sean sólo locales, utilice un archivo "ámbito" con un valor de "local" para indicar que los documentos no deben sincronizarse
- Configurar adecuado Filtro de replicación en el replicador. El filtro debe inspeccionar la propiedad del documento (como se ha definido anteriormente) para determinar si un documento necesita ser sincronizado o no
- Cada vez que hay cambios listos para ser enviados, el replicador de Couchbase Lite aplica la función de filtrado y los documentos se sincronizan sólo si se cumplen los criterios de filtrado.
Patrón 5: Control del orden de prioridad del conjunto inicial de documentos sincronizados con el cliente

Pasarela de sincronización canales permiten a las aplicaciones separar los datos en función de su tipo, finalidad, permisos de control de acceso, etc. Esto puede aprovecharse para separar los datos en función de su prioridad.
- Caso práctico
La capacidad de priorizar los documentos recibidos por los clientes garantizaría que éstos pudieran ponerse en marcha con los cambios documentales más relevantes en cuanto se hubieran extraído sin tener que esperar a que el resto de los documentos se sincronizaran. Los cambios restantes, de menor prioridad, se descargan más tarde. Esto reduce los tiempos de respuesta de la aplicación en el arranque inicial.
- Acérquese a
- Asigne documentos a distintos canales en función de su prioridad. Por ejemplo, puede asignar documentos a canales de prioridad "baja", "media" o "alta".
- En el lado del cliente, en el lanzamiento inicial, realice una replicación pull de una sola vez del canal de mayor prioridad especificando el parámetro canales filtro. Una vez que la sincronización de los documentos en el canal completala aplicación puede iniciar otra replicación para los canales restantes.
- También puede configurar un replicador continuo para el canal de mayor prioridad y extraer los canales restantes sólo bajo demanda utilizando la replicación de una sola vez. Esto garantizará que el canal de mayor prioridad se mantenga sincronizado en tiempo real.
¿Qué sigue?
En este post, cubrimos algunos patrones de uso comunes en Couchbase Lite relacionados con la sincronización de datos hacia y desde Sync Gateway y el servidor Couchbase. Seguiremos publicando posts describiendo otros consejos y recomendaciones para resolver casos de uso comunes.
Si tiene alguna pregunta o sugerencia, deje un comentario a continuación o póngase en contacto conmigo en Twitter o correo electrónico me . El Foros de Couchbase son otro buen lugar para plantear preguntas.
Agradecimientos
Me gustaría agradecer las contribuciones del equipo de desarrollo de Couchbase Lite y Sync Gateway, en concreto Adam Fraser y Jim Borden por su reseña de la entrada del blog.