Las aplicaciones de Atlas App Services pueden tener uno de dos modos de sincronización de dispositivos: sincronización basada en particiones y sincronización flexible. La sincronización basada en particiones es un modo más antiguo y debería considerar migrar a la sincronización flexible.
La migración de una aplicación de App Services que usa sincronización basada en particiones a sincronización flexible es un proceso automático. Aparte de actualizar la versión del SDK, la migración de los modos de sincronización no requiere cambios en el código de la aplicación cliente.
La migración da como resultado que los clientes de sincronización basada en particiones se comuniquen con un backend de sincronización flexible. Recomendamos eventualmente migrar el código de su aplicación cliente para utilizar también la sincronización flexible en lugar de la sincronización basada en particiones.
Requisitos
Servicios de aplicaciones Aplicación:
Actualmente utiliza Partition-Based Sync
Clúster Atlas vinculado:
Utilice MongoDB 5.0 o posterior para compatibilidad con sincronización flexible
Sea un nivel de clúster M10+
Tener habilitada la configuración del registro de operaciones basado en el tiempo
Aplicaciones cliente:
Versión mínima del SDK del dispositivo Atlas:
Swift SDK v10.40.0 o posterior
SDK de Kotlin v1.9.0 o posterior
Node.js SDK v11.10.0 o posterior
React Native SDK v11.10.0 o posterior
.NET SDK v11.1.0 o posterior
Java SDK v10.16.0 o posterior
Tenga configurado un controlador de restablecimiento de cliente.
Qué saber antes de migrar
Migrar el modo de sincronización de tu aplicación implica cambios que afectan tanto a las aplicaciones cliente como al backend de la aplicación. Debes tener en cuenta los efectos y planificar con antelación.
Las aplicaciones cliente que no cumplan con el requisito de versión mínima del SDK no podrán sincronizarse después de la migración.
La duración de una migración es directamente proporcional a la cantidad de datos que necesitan ser migrados. Cuantos más datos existan, más tiempo tomará la migración.
Las migraciones se pueden cancelar durante la migración o revertir dentro de un período de tiempo determinado una vez finalizada la migración.
Las notificaciones de progreso no funcionarán después de la migración porque Flexible Sync no las admite.
Las aplicaciones cliente conectadas al backend de sincronización basada en particiones experimentarán un restablecimiento del cliente después de migrar el backend a la sincronización flexible. Debe usar un controlador de restablecimiento de cliente con la recuperación habilitada para no perder los cambios pendientes anteriores al restablecimiento del cliente.
La creación de nuevas tablas en un backend de sincronización flexible migrado mediante el modo de desarrollo desde un cliente de sincronización basada en particiones puede generar un comportamiento inesperado.
Etapas de la migración
Puedes ver la etapa de tu migración en la interfaz de usuario de App Services. Una migración en modo de sincronización consta de tres etapas:
Sincronizando metadatos de Partition-Based Sync
En esta etapa, las aplicaciones cliente pueden conectarse al backend de tu aplicación, pero las escrituras locales no se sincronizarán. Estas escrituras se perderán si no tienes un controlador de restablecimiento de cliente para recuperar los cambios no sincronizados.
Los clientes recibirán actualizaciones de las colecciones sincronizadas, pero no podrán enviar cargas ni recibir acuses de recibo de carga.
Creación de metadatos de sincronización flexible
Los clientes no pueden conectarse en esta etapa. La duración de esta etapa es directamente proporcional a la cantidad de datos en las colecciones sincronizadas.
Migración completada
Manage Sync Migration aparece en la página Device Sync si la migración no ha sido confirmada ni revertida.
Una vez finalizada la migración, consulte la sección Después de la migración para obtener más información sobre cómo los clientes de sincronización basada en particiones interactúan con el backend de sincronización flexible.
Migrar la sincronización basada en particiones a la sincronización flexible
Tras iniciar la migración de la sincronización basada en particiones a la sincronización flexible, el proceso es prácticamente automático. Sin embargo, puede controlar partes importantes de la migración.
Durante una migración, puedes cancelarla. Después, puedes revertirla o confirmarla manualmente.
Comenzar la migración
Antes de comenzar una migración, asegúrese de conocer las etapas y los efectos de la migración.
La migración generalmente tiene efectos similares a la finalización y reactivación de la sincronización de dispositivos. Existen algunos efectos adicionales:
En la interfaz de usuario de App Services, todas las páginas de configuración serán de solo lectura. Por ejemplo, las pantallas Reglas, Esquemas, Funciones y Desencadenadores.
Su aplicación experimentará un período de sincronización de solo lectura y luego un período de inactividad.
La nueva configuración de sincronización flexible establecerá el tiempo máximo sin conexión del cliente en 30 días.
El almacenamiento en su clúster Atlas utilizado por los metadatos de sincronización de dispositivos se duplica temporalmente. Los metadatos de sincronización basada en particiones y los de sincronización flexible deben coexistir temporalmente. Según el tamaño de los datos sincronizados, esto podría afectar la facturación cada vez que migre. Los metadatos duplicados se eliminan después de revertir o confirmar la migración.
Para migrar de la sincronización basada en particiones a la sincronización flexible:
Navegue a la pantalla Device Sync:
Desde la Interfaz de usuario Realm, haz clic en Device Sync en el menú de navegación de la izquierda. La pestaña Dashboard se muestra por defecto.
Seleccione la pestaña Configuration.
Haga clic en Start migration.
haga clic para ampliarRevisa la información sobre el proceso de migración y haz clic en Next: Migration Requirements.
Asegúrese de cumplir con los requisitos de migración y luego haga clic en Start Migration.
Nota
Interrupción temporal de la sincronización
Los clientes no podrán sincronizar sus escrituras locales hasta que se complete la migración.
Una vez completada la migración, las aplicaciones cliente de Sincronización basada en particiones se restablecerán. Después, podrán comunicarse con el backend de Sincronización flexible de tu aplicación. Puedes deshabilitar y volver a habilitar la Sincronización flexible y las aplicaciones cliente seguirán comunicándose con tu backend.
Si vuelve a habilitar la sincronización basada en particiones, perderá el estado "migrado". Esto significa que deberá realizar otra migración si desea usar la sincronización flexible en el backend con aplicaciones cliente de sincronización basada en particiones.
Migrar permisos y reglas
Los permisos y las reglas de tu aplicación se migrarán automáticamente si las reglas de sincronización basada en particiones tienen equivalentes directos en las reglas de App Services. Esto anulará las reglas de App Services definidas previamente.
En el paso 4 anterior, verá si sus permisos y reglas se pueden migrar automáticamente. En el paso Review Migration Process de la interfaz de usuario de App Services, busque Rules & Permissions.
Algunas estrategias de reglas de sincronización basadas en particiones no se pueden traducir directamente a reglas de App Services. Es posible que deba migrar manualmente los permisos que incluyen:
%functionoperador.Las reglas de función no son compatibles con Flexible Sync y no se pueden migrar.
%or,%not,%nor,%andexpansiones.Estos permisos pueden funcionar, pero presentan suficientes matices como para que deba probarlos para garantizar el comportamiento esperado. Probar nuevos permisos no funcionará en la aplicación que está migrando. En su lugar, cree una nueva aplicación de Sincronización Flexible para probar los permisos migrados manualmente. Luego, aplique los permisos probados a la aplicación que está migrando.
Consulte la lista de expansiones compatibles con Flexible Sync para ver todas las expansiones admitidas.
También debe consultar la Guía de permisos de sincronización de dispositivos para obtener más información sobre cómo trabajar con permisos.
Cancelar la migración
Puede cancelar una migración en cualquier momento mientras esté en curso. Esto devolverá a tu aplicación la Partition-Based Sync, con todas las configuraciones tal como estaban antes de que se iniciara la migración.
Si cancela una migración, deberá comenzar desde el principio con los futuros intentos de migración.
Para cancelar una migración:
Navega a la pantalla Device Sync:
Desde la Interfaz de usuario Realm, haz clic en Device Sync en el menú de navegación de la izquierda. La pestaña Dashboard se muestra por defecto.
Seleccione la pestaña Configuration.
En el banner de notificación, haga clic en Cancel Migration.
haga clic para ampliarEsto cancelará la migración. Deberás migrar de nuevo si deseas habilitar la Sincronización Flexible en el futuro.
Migración de confirmaciones
Una vez completada la migración, esta se encuentra en estado de evaluación. Puedes confirmarla manualmente para que sea permanente o revertirla para que tu aplicación vuelva a la sincronización basada en particiones.
Si no confirmas ni reviertes la migración, se confirmará automáticamente según tu ventana mínima de oplog. Por ejemplo, si tu oplog window mínima es de 48 horas, tendrás 48 horas para revertir tu migración.
Una vez confirmada una migración, los metadatos de sincronización basada en particiones anteriores se eliminan y no es posible revertir la migración.
Para confirmar manualmente una migración:
Navega a la pantalla Device Sync:
Desde la Interfaz de usuario Realm, haz clic en Device Sync en el menú de navegación de la izquierda. La pestaña Dashboard se muestra por defecto.
Seleccione la pestaña Configuration.
En la parte superior de la página, haga clic en el menú desplegable Manage migration y luego seleccione Delete Partition-Based Sync metadata.
![Confirma una migración]()
Confirme que desea eliminar sus metadatos y comprometerse con la migración a Flexible Sync.
Importante
Una vez eliminados, no podrás recuperar los metadatos de sincronización basada en particiones.
Revertir migración
Puede revertir una migración una vez completada y antes de que se haya confirmado.
Las migraciones completadas se confirman automáticamente según su ventana mínima de registro de operaciones. Puede aumentar o disminuir el tiempo disponible para revertir una migración ajustando la ventana mínima de registro de operaciones.
No es posible revertir una migración que ya se ha confirmado.
De manera similar a cancelar una migración, si revierte una migración, deberá comenzar desde el principio con los futuros intentos de migración.
Para revertir una migración:
Navega a la pantalla Device Sync:
Desde la Interfaz de usuario Realm, haz clic en Device Sync en el menú de navegación de la izquierda. La pestaña Dashboard se muestra por defecto.
Seleccione la pestaña Configuration.
Desde la sección Manage Sync, haga clic en el menú desplegable Manage migration y luego seleccione Revert back to Partition-Based Sync.
![Revertir una migración]()
Esto revertirá la migración. Debes migrar de nuevo si deseas habilitar la sincronización flexible en el futuro.
Después de la migración del backend
El backend migrado utiliza un campo de clave de partición en los modelos de objetos para asignar los objetos del cliente de sincronización basada en particiones a sus equivalentes de sincronización flexible en el backend. Si los modelos de objetos no tienen un campo de clave de partición, el backend inyecta uno automáticamente en cada objeto que crea el cliente de sincronización basada en particiones.
Estas son algunas otras características del campo inyectado que debes conocer:
El campo inyectado sigue esta
<yourPartitionKey> == <yourPartitionValue>estructura:. La clave del campo se deriva de la configuración anterior del backend de sincronización basada en particiones. El valor se deriva de la configuración actual del cliente de sincronización basada en particiones.El campo inyectado no se sincroniza con el cliente que creó el objeto. Esto significa que el cliente de origen no podrá leer el campo
partitionKeyinyectado.
El cliente de sincronización basada en particiones crea automáticamente suscripciones de sincronización para cada tabla donde esté partitionKey == partitionValue activa. Esto continuará hasta que migre su aplicación cliente a la sincronización flexible.
Tras migrar la aplicación cliente a Flexible Sync, el backend dejará de inyectar el campo de clave de partición. Si la aplicación cliente utiliza este campo para administrar las suscripciones de sincronización, debería añadirlo a sus modelos de objetos.
Si no lo hace, los objetos creados en nuevas versiones de su aplicación no se sincronizarán con los clientes que usen versiones anteriores del código de la aplicación cliente.
Migrar la aplicación cliente a Flexible Sync
Una vez migrado el backend de su aplicación a Flexible Sync, le recomendamos migrar su aplicación cliente a Flexible Sync. Al migrar su aplicación cliente a Flexible Sync, el cliente dejará de crear automáticamente suscripciones de sincronización para cada modelo de objetos en el modelo de datos de su aplicación.
También recomendamos eliminar todas las suscripciones de sincronización y luego crear nuevas suscripciones para sus datos. Esta es la forma más clara de controlar qué datos se sincronizan después de una migración.
Si desea eliminar suscripciones individuales, las suscripciones generadas automáticamente utilizan un formato de nomenclatura específico: flx_migrated_ + el nombre de su modelo de objetos. Por ejemplo, el nombre de suscripción de un modelo de objetos Person sería flx_migrated_Person.
Puedes conservar las suscripciones generadas automáticamente si no quieres eliminarlas y volver a crearlas. Sin embargo, como estas suscripciones no se crean en tu código de cliente, pueden dificultar su mantenimiento y ampliación.
Para obtener más información sobre la actualización del código del cliente tras migrar de Partition-Based Sync a Flexible Sync, consulta:
- Kit de desarrollo de software .NET
- Migrar de la sincronización basada en particiones a la sincronización flexible - SDK de .NET
- Kit de desarrollo de software de Swift
- Migrar de la sincronización basada en particiones a la sincronización flexible - Swift SDK



