Edits of

Cópia do rascunho original da partitura de Handel

Foto cortesia de Adrian Pallant com permissão sob licença CC BY-SA 2.0

O U em CRUD

Em este Em um post anterior, escrevi sobre como começar a usar operações CRUD básicas em Couchbase Lite no Android. Nesta nota rápida, quero me aprofundar um pouco mais na atualização de documentos. Isso abrirá a porta para um conjunto totalmente novo de problemas. Vamos dar uma olhada.

O Couchbase Lite é um banco de dados orientado a documentos. Os documentos são armazenados como JSON objetos. Conforme descrito na postagem anterior, é fácil trabalhar diretamente com o conteúdo do documento. Eles são armazenados no objeto do documento como um mapa. Isso se encaixa perfeitamente nas formas nativas de manipular o conteúdo.

Ajustando a abordagem direta

Quando você recupera um documento, obtém uma cópia que contém uma versão imutável dos dados. Você pode lidar com isso copiando o mapa em um objeto map separado e, em seguida, substituindo o mapa antigo. Isso é mostrado neste trecho de código:

Na verdade, isso cria um novo revisão do documento, usando o novo corpo do documento.

Como alternativa, você pode usar createRevision() para obter um novo UnsavedRevision. Isso retorna uma cópia da última revisão, mas com conteúdo mutável. Assim, você pode manipular diretamente o mapa de propriedades. As alterações são confirmadas chamando salvar(). Esse trecho de código tem o mesmo efeito final que o anterior:

Revisões, você diz?

Isso é ótimo para muitos aplicativos. Ainda não falei muito sobre revisões. Você tem a ideia de que um documento está mudando. O Couchbase Lite tem uma noção de revisões de documentos para acompanhar essas alterações.

No entanto, as revisões são mais profundas do que apenas rastrear um conjunto linear de alterações. O que não salta aos olhos em exemplos como os que mostrei é a possibilidade de conflitos. Os conflitos ocorrem quando mais de uma atualização de uma revisão específica do documento é confirmada no banco de dados.

Pense nisso como se fosse um documento do mundo real. Talvez você escreva um artigo (ou uma postagem de blog!) e o envie para várias pessoas para receber comentários. Você recebe um conjunto de comentários e faz algumas alterações. Em seguida, outro conjunto de comentários retorna, com base no mesmo documento original. Faça isso com frequência suficiente e é quase certo que você chegará a um caso em que algumas alterações se sobrepõem. (Bem, para os desenvolvedores de software, provavelmente o melhor exemplo são os conflitos de mesclagem ao usar o controle de origem). Conflito!

Atualizador de documentos

Lidar com conflitos de documentos, histórico de revisões e assim por diante é mais do que eu gostaria de abordar neste post. Mas podemos ter uma ideia de como o Couchbase ajuda. Essa última abordagem de atualização pode parecer um exagero, mas você passará a apreciá-la quando a resolução de conflitos entrar em ação. Aqui está o código:

Uau, isso parece muito mais complexo do que os exemplos anteriores. Na verdade, é apenas um pouco mais complicado. Essa estrutura adicional acaba tornando a vida muito mais fácil. Então, o que está acontecendo?

Essa construção permite que o Couchbase Lite lide com o trabalho grunge de lidar com conflitos. Você define um retorno de chamada com base no Atualizador de documentos interface. O Couchbase Lite se encarregará de criar um novo UnsavedRevision como no exemplo anterior. Seu método precisa, então, fazer as alterações que você deseja. Ao retornar, o Couchbase Lite tenta automaticamente salvar o documento. Se ele detectar um conflito O Couchbase Lite simplesmente chama update() novamente. Retorno verdadeiro se você tiver feito alterações que deseja salvar, ou falso caso contrário.

Se quiser saber mais sobre revisões, colisões e resolução de conflitos, dê uma olhada em nosso guia aqui

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.

2 Comentários

  1. [...] Então, em resumo, temos um exemplo de criação e atualização de documentos. Essa não é a maneira preferida de atualizar, embora seja suficiente em muitos casos. Você pode ler mais sobre atualizações aqui. [...]

Deixar uma resposta