Device Sync - SDK Flutter
Nesta página
O Device Sync sincroniza automaticamente os dados entre aplicativos cliente e umaplicação de backend do Atlas App Services . Quando um dispositivo cliente está online, o Sync sincroniza de forma assíncrona os dados em segundo plano entre o dispositivo e o backend do App Services.
O Flutter SDK oferece suporte apenas à Flexible Sync. Você deve configurar seu backend do App Services para usar o Flexible Sync.
Observação
O Flutter SDK não oferece suporte à sincronização baseada em partição.
Domínios sincronizados
Você pode configurar um domínio para sincronizar automaticamente os dados entre vários dispositivos, cada um com sua própria cópia local dos dados. Os domínios sincronizados usam uma configuração diferente dos domínios somente locais e exigem um backend do Atlas App Services para lidar com o processo de sincronização.
Os aplicativos podem sempre criar, modificar e excluir objetos de realm sincronizados localmente, mesmo quando estiver offline. Sempre que uma conexão de rede está disponível, o Realm Flutter SDK abre uma conexão com um servidor de aplicativos e sincroniza as alterações de e para outros clientes. O protocolo Atlas Device Sync e as transformações operacionais do lado do servidor garantem que todas as instâncias totalmente sincronizadas de um território vejam exatamente os mesmos dados, mesmo que algumas alterações tenham ocorrido offline e/ou tenham sido recebidas fora de ordem.
Realms sincronizados versus Realms não sincronizados
Os domínios sincronizados diferem dos Realm locais não sincronizados de algumas maneiras:
Os realms sincronizados tentam sincronizar as alterações com os aplicativos de backend do App Services, enquanto os realms não sincronizados, não.
Os realms sincronizados podem ser acessados por usuários autenticados, enquanto os realms não sincronizados não têm nenhum conceito de usuários ou autenticação.
Você pode copiar dados de um Realm não sincronizado para um Realm sincronizado e vice-versa, mas não é possível sincronizar um Realm não sincronizado . Para converter um Realm não sincronizado para um Realm sincronizado, você pode seguir o processo descrito em Migrar um aplicativo somente local para um aplicativo habilitado para sincronização.
O que é Flexible Sync?
Quando você seleciona Flexible Sync para sua configuração de backend do App Services, a implementação do cliente deve incluir assinaturas para queries em campos consultáveis. O Flexible Sync funciona sincronizando dados que correspondem às assinaturas de query que você mantém no aplicativo cliente.
Um conjunto de assinaturas contém um conjunto de queries. O Flexible Sync retorna documentos correspondentes a essas queries, onde o usuário tem as permissões apropriadas para ler ou gravar os documentos. Se os documentos corresponderem à query, mas o cliente não tiver permissão para lê-los ou gravá-los, eles não serão sincronizados com o aplicativo cliente.
Você pode formar queries de Flexible Sync usando um subconjunto limitado de RQL. Para saber mais sobre quais campos você pode executar queries, consulte a documentação sobre campos para query.
Os conjuntos de assinaturas são baseados em um tipo específico de objeto de Realm. Para sincronizar dados de vários tipos de objetos do Realm, você deve ter várias assinaturas.
Para usar o Device Sync em seu aplicativo cliente, abra um domínio sincronizado com uma configuração de Flexible Sync. Em seguida, gerencie assinaturas para determinar quais documentos sincronizar.
Habilite a Flexible Sync no backend
Antes de começar a sincronizar dados do seu aplicativo cliente usando o SDK, você deve ativar o Flexible Sync no backend do App Services.
Para começar, consulte a documentação de backend sobre como ativar o Device Sync.
Atualizações de grupo para melhorar o desempenho
Cada transação de escrita para um conjunto de assinaturas tem um custo de desempenho. Se você precisar fazer várias atualizações em um objeto do Realm durante uma sessão, considere manter objetos editados na memória até que todas as alterações sejam concluídas. Isso melhora o desempenho da sincronização, gravando apenas o objeto completo e atualizado em seu domínio, em vez de cada alteração.
Como funciona o Device Sync
O Device Sync adiciona sincronização de rede entre um backend do App Services e dispositivos cliente além de todas as funcionalidades do Realm. Quando você usa o Realm com Sync, existem domínios no dispositivo, semelhantes ao uso do Realm sem Sync. No entanto, as alterações nos dados armazenados nessas regiões são sincronizadas entre todos os dispositivos cliente por meio de uma instância dos App Services de backend. Esse backend também armazena dados do domínio em um Atlas cluster baseado em nuvem executando o MongoDB.
O Device Sync depende de um cliente de trabalho que se comunica com o backend do aplicativo em um thread dedicado no aplicativo. Além disso, os domínios sincronizados mantêm um histórico de alterações em objetos contidos. O Sync usa esse histórico para resolver conflitos entre alterações do cliente e alterações de backend.
Os aplicativos que usam o Device Sync definem seu esquema no backend usando o JSON schema . Os aplicativos do cliente devem corresponder a esse esquema de backend para sincronizar os dados. No entanto, se você preferir definir o esquema inicial na linguagem de programação do aplicativo, poderá usar o Modo de desenvolvimento para criar um JSON schema de backend com base em objetos nativos do SDK enquanto escreve o aplicação. No entanto, depois que seu aplicação for usado para fins de produção, você deverá alterar seu esquema usando o JSON schema no backend.