Device Sync sincroniza automáticamente los datos entre las aplicaciones cliente y un Aplicación backend de Atlas App Services. Cuando un dispositivo cliente está conectado, Sync sincroniza asincrónicamente los datos en segundo plano entre el dispositivo y el backend de Atlas App Services.
El SDK de Flutter solo es compatible con la sincronización flexible. Debe configurar el backend de App Services para usarla.
Nota
El SDK de Flutter no admite la sincronización basada en particiones.
Realms sincronizados
Puedes configurar un dominio para que sincronice automáticamente datos entre varios dispositivos, cada uno con su propia copia local. Los dominios sincronizados utilizan una configuración diferente a la de los dominios locales y requieren un backend de Atlas App Services para gestionar el proceso de sincronización.
Las aplicaciones siempre pueden crear, modificar y eliminar objetos de dominio sincronizados localmente, incluso sin conexión. Siempre que haya una conexión de red disponible, el SDK de Flutter para dominios abre una conexión con un servidor de aplicaciones y sincroniza los cambios con y desde otros clientes. El protocolo Atlas Device Sync y las transformaciones operativas del lado del servidor garantizan que todas las instancias completamente sincronizadas de un dominio vean exactamente los mismos datos, incluso si algunos cambios se produjeron sin conexión o se recibieron fuera de orden.
Reinos sincronizados vs. Reinos no sincronizados
Los reinos sincronizados se diferencian de los reinos locales no sincronizados en un par de formas:
Los reinos sincronizados intentan sincronizar los cambios con su aplicación de servicios de aplicaciones de backend, mientras que los reinos no sincronizados no lo hacen.
Los usuarios autenticados pueden acceder a los reinos sincronizados, mientras que los reinos no sincronizados no tienen concepto de usuarios ni autenticación.
Puedes copiar datos de un dominio no sincronizado a uno sincronizado y viceversa, pero no puedes sincronizar un dominio no sincronizado. Para convertir un dominio no sincronizado en uno sincronizado, sigue el proceso descrito en "Migrar una aplicación solo local a una aplicación sincronizada".
¿Qué es Flexible Sync?
Al seleccionar la Sincronización flexible para la configuración del backend de App Services, la implementación de su cliente debe incluir suscripciones a consultas en campos consultables. La Sincronización flexible funciona sincronizando los datos que coinciden con las suscripciones de consultas que mantiene en la aplicación cliente.
Un conjunto de suscripciones contiene un conjunto de consultas. Flexible Sync devuelve los documentos que coinciden con dichas consultas, siempre que el usuario tenga los permisos necesarios para leerlos o escribirlos. Si los documentos coinciden con la consulta, pero el cliente no tiene permisos para leerlos o escribirlos, no se sincronizan con la aplicación cliente.
Puedes formar consultas de Flexible Sync utilizando un subconjunto limitado de Realm Query Language. Para obtener más información sobre qué campos puedes consultar, consulta la documentación de Campos consultables.
Los conjuntos de suscripciones se basan en un tipo específico de objeto de Realm. Para sincronizar datos de varios tipos de objetos de Realm, se requieren varias suscripciones.
Para usar la Sincronización de Dispositivos en su aplicación cliente, abra un dominio sincronizado con una configuración de Sincronización Flexible. A continuación, administre las suscripciones para determinar qué documentos sincronizar.
Habilitar la sincronización flexible en el backend
Antes de poder comenzar a sincronizar datos desde su aplicación cliente mediante el SDK, debe habilitar la sincronización flexible en el backend de App Services.
Para comenzar, consulte la documentación del backend sobre cómo habilitar la sincronización de dispositivos.
Actualizaciones de grupo para un mejor rendimiento
Cada transacción de escritura para un conjunto de suscripciones tiene un coste de rendimiento. Si necesita realizar varias actualizaciones a un objeto de Realm durante una sesión, considere mantener los objetos editados en memoria hasta que se completen todos los cambios. Esto mejora el rendimiento de la sincronización al escribir solo el objeto completo y actualizado en su reino, en lugar de cada cambio.
Cómo funciona la sincronización de dispositivos
Device Sync añade sincronización de red entre un backend de App Services y los dispositivos cliente, además de todas las funciones de Realm. Al usar Realm con Sync, los realms existen en el dispositivo, de forma similar a cuando se usa Realm sin Sync. Sin embargo, los cambios en los datos almacenados en esos realms se sincronizan entre todos los dispositivos cliente a través de una instancia de App Services del backend. Este backend también almacena los datos del realm en un clúster Atlas basado en la nube que ejecuta MongoDB.
La sincronización de dispositivos se basa en un cliente de trabajo que se comunica con el backend de la aplicación mediante un hilo dedicado. Además, los dominios sincronizados guardan un historial de cambios en los objetos que contienen. La sincronización utiliza este historial para resolver conflictos entre los cambios del cliente y los del backend.
Las aplicaciones que utilizan Device Sync definen su esquema en el backend usando el esquema JSONLas aplicaciones cliente deben coincidir con ese esquema de backend para sincronizar los datos. Sin embargo, si prefiere definir su esquema inicial en el lenguaje de programación de su aplicación, puede usar el modo de desarrollo para crear un esquema JSON de backend basado en objetos nativos del SDK mientras escribe su aplicación. Sin embargo, una vez que su aplicación se utilice en producción, deberá modificar su esquema usando el esquema JSON en el backend.