Práticas recomendadas e tutoriais

Práticas recomendadas e padrões com o Couchbase Mobile - Parte 2

Couchbase Mobile permite uma ampla gama de casos de uso offline-first de diferentes graus de escala e complexidade. Em um artigo anterior postagemNo artigo "Couchbase Lite", discuti padrões comuns ao usar o Couchbase Lite como armazenamento de dados NoSQL incorporado em seus aplicativos. Esses padrões se concentraram no armazenamento local de dados. Nesta postagem do blog, discutimos alguns padrões comuns e práticas recomendadas relacionados à sincronização de dados com o Gateway de sincronização. Esta publicação pressupõe que você esteja familiarizado com os fundamentos do Couchbase Mobile. Se precisar de uma introdução, consulte os documentos em Couchbase Lite e Gateway de sincronização.

Padrão 1: manter os dados sincronizados enquanto o aplicativo está em segundo plano

couchbase mobile app background

O suporte a backgrounds em aplicativos móveis varia drasticamente de acordo com a plataforma. De fato, em determinadas plataformas, como o Android, o conceito de "aplicativos em segundo plano" é bastante nebuloso/complicado. Portanto, a forma como você sincronizaria os dados enquanto seu aplicativo está em segundo plano depende muito da plataforma. Você pode encontrar uma discussão sobre como o Couchbase Lite reage ao ciclo de vida do aplicativo em iOS, Android e Windows em nossa documentação.

  • Caso de uso

Ao manter os dados atualizados quando não estão em uso ativo (ou em primeiro plano), os aplicativos podem melhorar a experiência do usuário final, reduzindo o tempo de inicialização em lançamentos subsequentes.

  • Abordagem
    • Deve-se observar que não há garantia de que seu aplicativo terá permissão para ser executado em segundo plano. Normalmente, essa é uma decisão no nível do sistema ou do usuário.
    • O modo como um aplicativo lida com a sincronização em segundo plano depende da plataforma
    • Em geral, recomenda-se que, quando possível, seu aplicativo reaja a eventos adequados do ciclo de vida do aplicativo e feche o replicador antes de fazer a transição para o segundo plano
    • iOS
    • Android
      • Há algumas opções disponíveis se os aplicativos precisarem executar tarefas em segundo plano
    • UWP
      • As replicações contínuas não são transferidas para o modo off-line quando um aplicativo é colocado em segundo plano. No entanto, é recomendável que os aplicativos fechem o replicador quando fizerem a transição para segundo plano
      • Uso notificações brutas enviado via Serviço de notificação por push do Windows (WPNS) para ativar o aplicativo enquanto ele estiver em segundo plano
      • Quando o aplicativo for ativado em segundo plano, agende uma tarefa em segundo plano para fazer uma replicação única para sincronizar os dados

Padrão 2: purgar após empurrar

clear local database after syncing data

O Couchbase Lite oferece suporte à capacidade de os aplicativos serem notificados sobre o status de replicação de um documento ou conjunto de documentos por meio de Eventos de replicação capacidade. Os aplicativos podem aproveitar esse recurso para tomar as medidas apropriadas em relação ao documento, dependendo do status, como a eliminação do documento.

  • Caso de uso

Pode ser desejável remover documentos do armazenamento local do cliente após a sincronização com o servidor por motivos de conformidade com a governança ou para evitar o inchaço do banco de dados local.

  • Abordagem
    • Registro Evento de replicação observador no Replicator
    • Ao receber onPushed no(s) documento(s), invoque o evento purgar() API para eliminar o documento. Os documentos eliminados não são sincronizados.

Padrão 3: impondo o tempo de vida do documento no lado do servidor em clientes desconectados

Set local TTL on documents

O Couchbase Lite oferece suporte à capacidade dos aplicativos de definir datas de expiração em documentos locais por meio de Data de expiração recurso. Os aplicativos podem aproveitar esse recurso para expirar localmente um documento no Couchbase Lite, independentemente da conectividade com o servidor.

  • Caso de uso

Os documentos criados no servidor podem ser associados a uma TTL ou data de expiração que determina quando o documento deve ser eliminado do sistema (clientes e servidor). Quando houver conectividade de rede, os documentos excluídos no lado do servidor serão sincronizados com o lado do cliente para que também sejam excluídos no lado do cliente. No entanto, é provável que os clientes estejam off-line quando os documentos expirarem no servidor e pode ser importante que esses documentos sejam removidos dos clientes em tempo hábil.

  • Abordagem
    • Modele seus documentos para incluir uma propriedade definida pelo usuário que especifique a hora UTC em que o documento expira. Vamos chamá-la de validUntil.
    • Registro Evento de replicação observador no cliente Replicator
    • Ao receber Puxar no(s) documento(s), use o evento validUntil para definir o TTL em documentos usando o setExpirationDate() API
    • Quando os documentos expiram no cliente, eles são automaticamente eliminados do cliente, independentemente da conectividade da rede. Os documentos eliminados não são sincronizados.
    • No lado do servidor, os documentos podem ser eliminados de forma independente
    • Advertência : Se a expirationDate (conforme definido por validUntil ) é atualizada enquanto os clientes estão off-line, então os clientes não serão notificados dessa alteração. Portanto, é possível que os documentos sejam eliminados prematuramente nos clientes quando eles estiverem off-line. Portanto, essa abordagem é segura desde que o tempo de vida do documento não seja alterado após a criação. Discutiremos outra abordagem para lidar com esses casos.

Padrão 4: controle de quando e quais documentos são sincronizados com o servidor

controlling documents that get pushed to server

O Couchbase Lite oferece suporte à capacidade de os aplicativos definirem filtros no replicador que determina quais documentos são enviados para o servidor. Esse recurso pode ser aproveitado para controlar quando e quais documentos são sincronizados com o servidor.

  • Caso de uso

Em um artigo anterior blogNa seção "Como usar o banco de dados", discutimos como uma instância separada de um banco de dados pode ser usada para manter dados somente locais. Embora esse padrão funcione quando você precisa de uma segregação rigorosa dos dados e se não forem necessárias consultas de junção entre bancos de dados, há casos de uso em que você deseja um controle refinado sobre quando as alterações locais devem ser sincronizadas. Você também pode usar esse padrão como uma alternativa ao padrão de banco de dados pré-criado para impor que os documentos sejam somente locais (ou seja, nunca sincronizados).

  • Abordagem
    • Modele seus documentos para incluir um "status" que controla o fluxo de trabalho comercial. Por exemplo, use um valor de "em andamento" para indicar quando as alterações não estão prontas para serem sincronizadas e um valor de status de "comprometido" quando as alterações precisarem ser enviadas para cima. Se for necessário tornar os documentos somente locais, use um "escopo" com um valor de "local" para indicar que os documentos não devem ser sintetizados
    • Configurar o adequado Filtro de replicação no replicador. O filtro deve inspecionar a propriedade do documento (conforme definido acima) para determinar se um documento precisa ser sincronizado ou não
    • Toda vez que há alterações prontas para serem enviadas, a função de filtro é aplicada pelo replicador do Couchbase Lite e os documentos são sincronizados somente se os critérios do filtro forem atendidos.

Padrão 5: controle da ordem de prioridade do conjunto inicial de documentos sincronizados com o cliente

sync gateway channel priority

Gateway de sincronização canais permitem que os aplicativos separem os dados com base no tipo, na finalidade, nas permissões de controle de acesso etc. Isso pode ser aproveitado para separar os dados com base na prioridade.

  • Caso de uso

A capacidade de priorizar os documentos recebidos pelos clientes garantiria que os clientes pudessem começar a trabalhar com as alterações de documentos mais relevantes assim que elas fossem extraídas, sem ter que esperar que o restante dos documentos fosse sincronizado. As alterações de documentos restantes e de menor prioridade são retiradas posteriormente. Isso reduz o tempo de resposta do aplicativo na inicialização.

  • Abordagem
    • Atribua documentos a diferentes canais com base na prioridade. Por exemplo, você pode ter documentos atribuídos a canais de prioridade "baixa", "média" ou "alta".
    • No lado do cliente, na inicialização, faça uma replicação pull única do canal de prioridade mais alta, especificando o canais filtro. Quando a sincronização dos documentos no canal completaSe o aplicativo for usado, ele poderá iniciar outra replicação para os canais restantes.
    • Você também pode configurar um replicador contínuo para o canal de prioridade mais alta e extrair os canais restantes somente sob demanda usando a replicação de um disparo. Isso garantirá que o canal de prioridade mais alta seja mantido sincronizado em tempo real.

O que vem a seguir

Nesta postagem, abordamos alguns padrões de uso comuns no Couchbase Lite relacionados à sincronização de dados de e para o Sync Gateway e o servidor Couchbase. Continuaremos a publicar postagens descrevendo outras dicas e recomendações para solucionar casos de uso comuns.
Se tiver dúvidas ou comentários, deixe um comentário abaixo ou sinta-se à vontade para entrar em contato comigo pelo Twitter ou e-mail me . O Fóruns do Couchbase são outro bom lugar para entrar em contato com perguntas.

Agradecimentos

Gostaria de agradecer as contribuições da equipe de desenvolvimento do Couchbase Lite e do Sync Gateway, especificamente Adam Fraser e Jim Borden por sua análise da postagem do blog.

 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Priya Rajagopal, Diretora Sênior, Gerenciamento de Produtos

Priya Rajagopal é diretora sênior de gerenciamento de produtos da Couchbase, responsável pelas plataformas de desenvolvedor para a nuvem e a borda. Ela desenvolve software profissionalmente há mais de 20 anos em vários cargos técnicos e de liderança de produtos, com mais de 10 anos de foco em tecnologias móveis. Como delegada de padrões de IPTV da TISPAN, ela foi uma das principais colaboradoras das especificações de padrões de IPTV. Ela tem 22 patentes nas áreas de rede e segurança de plataforma.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.