O Couchbase Gateway de sincronização O feed de alterações pode ser útil para conduzir vários tipos de lógica além das replicações. Para ajudar a entender os meandros do feed de alterações, desenvolvi uma ferramenta simples. Nesta postagem do blog, falarei sobre o que o aplicativo faz. Nas postagens seguintes, examinarei o código e falarei sobre os principais resultados a serem conhecidos.
Introdução
O Couchbase Mobile A pilha é composta por três componentes, Servidor Couchbase, Gateway de sincronizaçãoe Couchbase Lite. Cada um desses elementos é útil por si só. No entanto, em um cenário típico, todos eles funcionam juntos.
A sincronização sofisticada e robusta de dados é complicada. É nesse ponto que o Couchbase Mobile se destaca. Em vez de depender de uma rede sempre ativa ou de relógios inconsistentes, ele usa o Multiversion Concurreny Control (MVCC). Essa abordagem oferece aos desenvolvedores confiabilidade e capacidade flexível de lidar com conflitos de documentos.
O Sync Gateway é a chave para permitir a sincronização de dados entre todas as partes. Para fazer isso, o Couchbase Mobile usa algo chamado feed de alterações. Os clientes do Couchbase Lite acessam o feed para conduzir a replicação de dados. Embora o feed de alterações tenha sido projetado apenas com essa finalidade em mente, ele também pode servir a outros objetivos. Por isso, vale a pena entendê-lo com mais profundidade.
CBM altera o Explorer
Eu chamo a ferramenta de CBM Changes Explorer. O aplicativo permite que você manipule simultaneamente os dados via Couchbase Lite, enquanto monitora um feed de alterações do Sync Gateway. Você também pode executar mais de uma instância ao mesmo tempo, dando a possibilidade de ver como os clientes e o Sync Gateway interagem ao entrar e sair da linha.

Esta animação mostra a interface do usuário em ação. Na parte superior, temos três painéis. O painel mais à esquerda mostra uma lista de todos os documentos no banco de dados local (Couchbase Lite). O painel central mostra o conteúdo de qualquer documento selecionado na lista da esquerda e permite editar e salvar novos documentos ou revisões de documentos.
O painel mais à direita mostra a saída do feed de alterações do Sync Gateway.
Os campos de nome de usuário e senha definem os valores usados na autenticação básica entre o Couchbase Lite e o Sync Gateway. Se você ativar o usuário GUEST, nenhuma autenticação será necessária. O botão "Apply" ativa e desativa o uso da autenticação. (Isso significa que, mesmo que você tenha fornecido credenciais, poderá desativar a autenticação com a alternância).
O botão Salvar tenta salvar o JSON atual no painel Conteúdo como uma nova revisão. Você pode criar um novo documento inserindo uma estrutura sem _rev entrada. Você também pode criar facilmente novas revisões de um documento existente, selecionando-o primeiro na lista de documentos, modificando o conteúdo e salvando-o em seguida. As _rev terá automaticamente o valor atual, que o Couchbase Lite precisa para criar uma revisão descendente.
O botão Sync ativa e desativa as replicações contínuas push e pull entre o cliente Couchbase Lite e o Sync Gateway.
Exemplo: Exibição de conflitos na saída do feed de alterações
Combinando esses recursos, você pode criar conflitos de revisão para ver como eles funcionam. Sincronize um documento com duas instâncias separadas do aplicativo. Desative a sincronização. Em seguida, faça alterações diferentes no documento em cada instância do cliente. Ative a sincronização novamente e você terá um conflito.
Para demonstrar, aqui está o feed de alterações para uma atualização de um documento sem conflitos
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "mudanças": [ { "rev": "3-dcb456e2abf57fcedd3c912d73f0dc47" } ], "doc": { "_id": "doc", "_rev": "3-dcb456e2abf57fcedd3c912d73f0dc47", "canais": [ "105.3" ], "chave": "#2" }, "id": "doc", "seq": 7 } |
E aqui está o mesmo documento com um conflito
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "seq" : 7, "id" : "doc", "doc" : { "_id" : "doc", "_rev" : "3-dcb456e2abf57fcedd3c912d73f0dc47", "canais" : [ "105.3" ], "chave" : "#2" }, "mudanças" : [ { "rev" : "3-dcb456e2abf57fcedd3c912d73f0dc47" }, { "rev" : "3-07e37dc9e819d7a4c20e5d125f56c714" } ] } ], "last_seq" : "7" } |
(Observação: a saída do feed de alterações é controlada por vários parâmetros. Para obter o feed mostrado acima, você precisa definir active_only para falso, incluir_docs para verdadeiroe estilo para todos_docs.)
Observe a diferença no mudanças matriz. Ele lista duas revisões. Os dados do documento ainda mostram apenas a revisão vencedora padrão. Os dados de outras revisões permanecem disponíveis para que possamos escolher como resolver os conflitos. Em um aplicativo do mundo real, gostaríamos de resolver esse conflito. Caso contrário, os dados alternativos permanecem no banco de dados e podem fazer com que ele cresça desnecessariamente.
Próximas etapas
Mencionei apenas uma pequena parte do que você pode experimentar. Você também pode usar ferramentas de linha de comando e a interface de administração do Sync Gateway. Dê uma olhada aqui para saber mais sobre isso.
O código do aplicativo em si consiste em cerca de 400 linhas de código e outras 100 linhas para a interface do usuário xml. Examinarei o código na parte 2 desta postagem. Existem alguns recursos simples que tornariam o aplicativo mais útil, portanto, contribuições são bem-vindas.
O projeto está agora no GitHub. Você pode encontrar instruções sobre como compilar, executar e empacotar o aplicativo para distribuição lá.
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.
Entre em contato comigo pelo Twitter com perguntas, comentários, tópicos que você gostaria de ver etc. @HodGreeley
[...] o código foi extraído de uma ferramenta que criei. Leia sobre a ferramenta em si nesta postagem. Você pode encontrar o código-fonte no GitHub [...]
[...] uma ferramenta para ajudar a examinar e entender o feed. Você pode ler uma introdução e uma descrição na primeira parte desta série de duas partes. O código também serve como um exemplo de como ouvir o [...]