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.
The Flutter SDK only supports Flexible Sync. You must configure your App Services backend to use Flexible Sync.
Nota
The Flutter SDK does not support Partition-Based Sync.
Realms sincronizados
You can configure a realm to automatically synchronize data between many devices that each have their own local copy of the data. Synced realms use a different configuration than local-only realms and require an Atlas App Services backend to handle the synchronization process.
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.
Synced Realms vs. Non-Synced Realms
Synced realms differ from non-synced local Realm in a couple of ways:
Synced realms attempt to sync changes with your backend App Services App, whereas non-synced realms do not.
Synced realms can be accessed by authenticated users, while non-synced realms have no concept of users or authentication.
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".
What is 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.
A subscription set contains a set of queries. Flexible Sync returns documents matching those queries, where the user has the appropriate permissions to read or write the documents. If documents match the query, but the client does not have the permission to read or write them, they do not sync to the client application.
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 utilizar Device Sync en tu aplicación de cliente, abre un realm sincronizado con una configuración de sincronización flexible. Luego, gestiona las suscripciones para determinar qué documentos sincronizar.
Enable Flexible Sync on the Backend
Before you can start syncing data from your client application using the SDK, you must enable Flexible Sync in the App Services backend.
Para empezar, consulta la documentación del backend sobre la habilitación de Device Sync.
Actualizaciones de grupos para mejorar el rendimiento
Every write transaction for a subscription set has a performance cost. If you need to make multiple updates to a Realm object during a session, consider keeping edited objects in memory until all changes are complete. This improves sync performance by only writing the complete and updated object to your realm instead of every change.
Cómo funciona Device Sync
Device Sync adds network synchronization between an App Services backend and client devices on top of all of the functionality of Realm. When you use Realm with Sync, realms exist on device, similar to using Realm without Sync. However, changes to the data stored in those realms synchronize between all client devices through a backend App Services instance. That backend also stores realm data in a cloud-based Atlas cluster running 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.