Servidor Couchbase

A nova API de subdocumento do Couchbase Server 4.5

Introdução

O Couchbase Server 4.5 acaba de ser lançado, então vamos testá-lo! Uma visão geral completa de todos os excelentes novos recursos pode ser encontrada em aqui. Este artigo destacará o novo recurso da API Sub-Document. O que é um subdocumento? O documento a seguir contém um subdocumento que pode ser acessado pelo campo "tags":

Até o momento

Nas versões anteriores do Couchbase (<4.5), a atualização de um documento precisava seguir o seguinte padrão:

  • Obter o documento inteiro que precisa ser atualizado
  • Atualizar os documentos no lado do cliente (por exemplo, atualizando apenas algumas propriedades)
  • Escreva todo o documento de volta

Um exemplo simples de código Java seria:

Agora com 4,5

A nova API de subdocumento é um recurso do lado do servidor que permite que você (surpresa, surpresa...) obtenha ou modifique apenas um subdocumento de um documento existente no Couchbase. As vantagens são:

  •  Melhor usabilidade no lado do cliente
    • As operações CRUD podem ser realizadas com base em caminhos
    • Nos casos em que a modificação não depende do valor anterior, você pode atualizar um documento sem a necessidade de buscá-lo antecipadamente
    • Você pode manter referências importantes entre os documentos com mais facilidade
  •  Desempenho aprimorado
    • Ele economiza a largura de banda da rede e tem uma latência melhor, pois não é necessário transferir todo o documento pela rede

A API de subdocumento também permite que você obtenha ou modifique valores internos ou matrizes de um (sub)documento.

  • Operações de pesquisa: Consulta o documento para um caminho específico, por exemplo, GET, EXISTS
  • Operações de mutação: Modificar um ou vários caminhos em um documento, por exemplo, UPSERT, ARRAY_APPEND, COUNTER

Uma descrição mais detalhada da API pode ser encontrada na documentação do Couchbase: https://developer.couchbase.com/documentation/server/4.5/sdk/subdocument-operations.html.

A atualização de um documento agora pode seguir o seguinte padrão:

  • Atualize diretamente uma propriedade ou subdocumento especificando o caminho no qual ele pode ser encontrado

Nosso exemplo em Java agora seria simplificado para:

"Travamento" otimista

O Couchbase Server não tem um gerenciador de transações embutido, mas se você falar sobre o comportamento transacional, os requisitos geralmente são menores do que o que um gerenciador de transações ACID forneceria (por exemplo, lidar apenas com acesso simultâneo em vez de ser totalmente compatível com ACID). No Couchbase, um documento tem um valor chamado C(ompare) A(nd) S(wap). Esse valor é alterado assim que um documento é modificado no lado do servidor.

  • Obter um documento com um valor CAS específico
  • Alterar as propriedades no lado do cliente
  • Tente substituir o documento passando o valor CAS antigo. Se o valor CAS tiver sido alterado no servidor, você saberá que outra pessoa modificou o documento nesse intervalo e, portanto, poderá tentar aplicar novamente suas alterações.

Portanto, o CAS é usado para uma abordagem de bloqueio otimista. Ela é otimista porque você espera poder aplicar suas alterações e lidar com o caso de isso não ser possível porque outra pessoa o alterou antes. Uma abordagem pessimista seria bloquear o documento antecipadamente para que ninguém mais possa escrevê-lo até que esse bloqueio seja liberado novamente.

Agora você pode fazer a seguinte pergunta:

  • O que acontece se eu modificar um subdocumento e outra pessoa atualizar o mesmo ou outro subdocumento do mesmo documento?

As operações de subdocumento são atômicas. Atomicidade significa tudo ou nada. Portanto, se você atualizar um subdocumento sem recuperar uma mensagem de erro, poderá ter certeza de que a atualização foi realizada no lado do servidor. Isso significa que, se cinco clientes estiverem anexando um elemento a uma matriz incorporada, você pode ter certeza de que todos os cinco valores foram anexados. No entanto, a atomicidade não significa consistência em relação ao estado. Portanto, não está lhe informando sobre conflitos. Portanto, se dois clientes estiverem atualizando o mesmo subdocumento, ambas as atualizações serão executadas, mas, para descobrir se houve um conflito em relação a essas atualizações, você ainda precisará do valor CAS (ou usar bloqueio pessimista em vez disso). No entanto, se você tiver certeza de que os clientes atuam em subdocumentos diferentes, saberá que não haverá conflito e, portanto, o valor CAS não será necessário.

Resumo

A nova API Sub-Documento é um dos novos recursos excelentes do Couchbase 4.5. Ela permite que você não precise buscar o documento inteiro para ler/modificar apenas uma parte dele. Isso significa uma melhor usabilidade do ponto de vista do cliente. Uma das principais vantagens é que ele melhora o desempenho, especialmente se estiver trabalhando com documentos maiores.

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

Autor

Postado por David Maier

David Maier é engenheiro de soluções principal da Couchbase. David é a principal pessoa de contato técnico na região DACH para assuntos relacionados ao Couchbase, pré-vendas, análise de requisitos, revisões de arquitetura, apresentações para clientes, PoC-s, desenvolvimento de aplicativos de demonstração etc

Um comentário

  1. Obrigado pelo artigo. Sou novo no couchbase, então, por favor, perdoe meu uso da terminologia.

    O artigo diz "sub"-documento, mas os exemplos mostram a atualização de atributos (e não do subdocumento). Isso significa que, mesmo que haja um documento simples com alguns atributos (pares KV), um desses atributos pode ser atualizado usando essa API de subdocumento?

    Agradecimentos

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.