O plano para esta postagem no blog começou com o desejo de esclarecer um detalhe específico sobre como o Couchbase Mobile's Gateway de sincronização trata da remoção do acesso de um cliente a um documento. Vou escrever um pouco sobre o Sync Gateway canais para fornecer uma base. Se você já estiver familiarizado com o Sync Gateway e os canais, poderá pular a primeira parte.

Entendendo os canais do Sync Gateway

Gateway de sincronizaçãoA parte de "cola" do Couchbase Mobile A pilha de documentos, que tem a capacidade de atribuir documentos a algo que chamamos de canais. Os canais funcionam como um mecanismo de organização e segurança.

Este gráfico pode ajudá-lo a entender como os canais funcionam. Ele mostra conceitualmente a ideia do Sync Gateway alimentando documentos para os canais durante uma replicação.

Symbolic: channels as pipes

Você controla a atribuição de documentos a canais por meio do Sync Gateway função de sincronização. Cada tubo azul no diagrama representa um canal. As setas verdes ilustram a ideia de que a função de sincronização pode atribuir qualquer documento individual a qualquer número de canais.

Isso permite que você agrupe documentos relacionados, facilitando a organização do fluxo de informações. Por exemplo, você pode criar um canal para cada usuário de um aplicativo. Você pode alterar seu modelo de dados e documentos o quanto quiser. Basta marcar cada documento com o ID do usuário.

Os canais são tão úteis que fizemos com que a função de sincronização padrão os criasse automaticamente. Ela atribui um documento a um conjunto de canais com base na presença de um canais no documento. Ou, em outras palavras, se você não fornecer uma função de sincronização, o Sync Gateway usará o seguinte equivalente:

(As funções de sincronização são escritas em JavaScript. canal é uma função definida pelo Sync Gateway).

Para usar os canais, um cliente simplesmente solicita os canais desejados ao configurar uma replicação. Mas e quanto à segurança? Não seria bom que qualquer cliente pudesse acessar o canal que quisesse.

O Sync Gateway só enviará documentos para clientes autorizados. Isso acontece em uma base por canal. Você pode autorizar um cliente com base em um ID de usuário autenticado ou em uma função à qual o usuário está atribuído.

Esse diagrama dá uma ideia visual de como a atribuição de canais (feita pelo Sync Gateway), as solicitações de acesso a canais (feitas por um cliente durante a execução de uma replicação) e a autorização se combinam para determinar quais documentos um cliente pode extrair.

Venn diagram showing accessible documents as intersection of Sync Gateway assigned documents, authorized access, and client requested channels

O círculo azul representa os canais aos quais a função de sincronização atribui um documento. O círculo amarelo representa os canais que um cliente solicita. Por fim, o círculo vermelho representa os canais que um usuário ou função tem autorização para acessar. A seção verde representa os documentos que o cliente receberá.

Um, não espere, dois bits complicados

A descrição acima pode parecer muito simples. Há muito mais a entender sobre o Sync Gateway e como ele pode ser configurado. Para terminar, quero falar sobre dois casos que tendem a confundir as pessoas.

Acesso de leitura vs. acesso de gravação

Observe que a relação entre um cliente e o Sync Gateway aqui não é simétrica. O Sync Gateway se encarrega de alimentar os documentos com base nos canais. Os clientes não. Isso tem o resultado aparentemente estranho de que um cliente pode enviar (gravar) um documento que não pode extrair (ler)! (Dizemos push e pull para indicar que está ocorrendo uma replicação e a direção do fluxo de dados).

Digamos que estamos usando a função de sincronização padrão e autorizamos a extração com base no ID do usuário. A usuária Alice cria um documento e coloca "Bob" no campo canais propriedade. Quando Alice envia o documento para o Sync Gateway, ela não pode mais retirá-lo. O Sync Gateway atribui a nova revisão ao canal de Bob. Alice não pode extrair o documento, mas Bob pode.

Acesso perdido

Aqui está outro caso extremo. O que acontece se um cliente perder o acesso a um documento? Como acabamos de ver, o cliente pode até ter causado isso.

O Couchbase Mobile usa o que é conhecido como controle de simultaneidade de várias versões para lidar com todas as nuances do uso off-line e com os sofisticados produtos de sincronização. A perda de acesso não é o mesmo que a exclusão do documento. Além disso, o cliente pode já ter uma versão mais antiga.

O Couchbase lida com isso criando uma revisão especial do documento. É uma revisão de lápide, o que significa que não tem conteúdo. No entanto, ao contrário de uma lápide que marca um documento excluído, esse tipo marca o documento como tendo sido removido. (Isso aparece nos metadados do documento).

Para a maioria das finalidades, o Couchbase Lite se comportará como se o documento não existisse. Ele não será exibido em consultas, por exemplo. No entanto, ainda há maneiras de recuperá-lo. Você pode verificar se um documento foi removido chamando seu .isGone() method. (Observe que o tombstone só é criado quando um cliente como o Couchbase Lite puxa o tombstone durante uma replicação).

Concluindo

O Sync Gateway é um software versátil por si só. É um componente essencial do Couchbase Mobile, fundamental para resolver alguns dos problemas difíceis que surgem com uma plataforma de dados que oferece suporte total ao uso off-line.

Espero ter dado uma ideia de um aspecto do Sync Gateway (canais), juntamente com algumas dicas importantes. Para aproveitar ao máximo o Sync Gateway, reserve um tempo para explorar a seção documentação.

Pós-escrito

Confira mais recursos em nosso portal do desenvolvedor e nos siga no Twitter @CouchbaseDev.

Você pode postar perguntas em nosso fóruns. E participamos ativamente de Estouro de pilha.

Você pode me seguir pessoalmente em @HodGreeley

Autor

Postado por Hod Greeley, Advogado do desenvolvedor, Couchbase

Hod Greeley é um defensor dos desenvolvedores da Couchbase e mora no Vale do Silício. Ele tem mais de duas décadas de experiência como engenheiro de software e gerente de engenharia. Trabalhou em diversas áreas de software, incluindo física e química computacional, segurança de computadores e redes, finanças e dispositivos móveis. Antes de ingressar na Couchbase em 2016, Hod liderou as relações com desenvolvedores para dispositivos móveis na Samsung. Hod é Ph.D. em física química pela Universidade de Columbia.

Deixar uma resposta