Servidor Couchbase

Eventos: Apresentando os acessores avançados de bucket no Couchbase

Os Advanced Bucket Accessors no Couchbase possibilitam o acesso à funcionalidade avançada do armazenamento de valores-chave (KV) usando os seguintes operadores internos.

Eles utilizam os mesmos vínculos de bucket definidos no manipulador como Basic Bucket Accessors, mas expõem um conjunto mais rico de opções e operadores que podem ser usados para:

  1. Definir ou recuperar expirações
  2. Resolver condições de corrida por meio do CAS
  3. Manipular itens de KV quentes sob alta contenção

Observe que Acessores básicos de bucket são muito mais fáceis de usar, têm uma API trivial e também são um pouco mais rápidos do que os correspondentes Advanced Bucket Accessors.

No Couchbase Server 6.6.1, foram adicionados os seguintes acessores avançados de bucket:

Esses sete novos Bucket Accessors permitem utilizar e aproveitar o CAS diretamente para lidar com a contenção e/ou definir a expiração de um documento (ou TTL) no serviço de dados (ou KV) via Eventos além de realizar operações de contador atômico distribuído.

Por exemplo, em vez de confiar cegamente nos Basic Bucket Accessors para uma operação do tipo upsert src_bkt[id_str] = algum_docCom os Advanced Accessors, você pode resolver a contenção (ou possível contenção) em chaves que têm mutações simultâneas de diferentes origens com lógica orientada por JavaScript em sua Eventing Function.

    • Se o documento não existir, você poderá usar couchbase.insert(src_bkt, {"id: id_str}, some_doc) e verificar se o valor de retorno é bem-sucedido
    • Se o documento existir, você poderá usar couchbase.replace(src_bkt, {"id: id_str, "cas": current_cas}, some_doc) e verificar se o valor de retorno é bem-sucedido ou se há uma incompatibilidade de CAS.

Para ver exemplos completos, incluindo JavaScript, mutações de entrada, mutações de saída e/ou mensagens de registro para cada Advanced Bucket Accessor, consulte Scriptlets: Manipuladores de acessores avançados na seção de exemplos da documentação.

GET avançado: resultado = couchbase.get(binding, meta)

Essa operação permite ler um documento junto com metadados do bucket e operações subsequentes para utilizar o CAS ou verificar/modificar o data de expiração.

Compare isso com o Basic Bucket Accessor OBTER que simplesmente expõe uma ligação ou um mapa JavaScript, var adoc = src_bkt[meta.id]onde o valor de retorno é apenas o documento sem nenhum metadado.

Abaixo está um exemplo do Advanced OBTER operação.

Alguns exemplos de valores de retorno:

 

INSERÇÃO avançada: resultado = couchbase.insert(binding, meta, doc)

Essa operação permite criar um novo documento no bucket. Essa operação falhará se o documento com a chave especificada já existir. Permite especificar um tempo de expiração (ou TTL) a ser definido no documento.

Não há nenhuma operação do Basic Bucket Accessor análoga à do Advanced INSERIR operação (como src_bkt[meta.id] = adoc é mais como um upsert).

Abaixo está um exemplo do Advanced INSERIR operação.

 

Alguns exemplos de valores de retorno:

 

UPSERT avançado: resultado = couchbase.upsert(binding, meta, doc)

Essa operação permite atualizar um documento existente no bucket ou, se não houver, criar um novo documento com a chave especificada. A operação não permite especificar o CAS (ele será silenciosamente ignorado). Ela também permite especificar um tempo de expiração (ou TTL) a ser definido no documento.

Compare isso com o Basic Bucket Accessor CONJUNTO que simplesmente usa um mapa JavaScript exposto definido por meio de um alias de vinculação de bucket src_bkt[meta.id] = adoc. Para o básico CONJUNTO não há valor de retorno (sem status e sem metadados) e, portanto, não há como verificar o valor do CAS.

Abaixo está um exemplo do Advanced UPSERT operação.

 

Um exemplo de valor de retorno:

 

REPLACE avançado: resultado = couchbase.replace(binding, meta, doc)

Esta operação substitui um documento existente no bucket. Essa operação falhará se o documento com a chave especificada não existir. Essa operação permite especificar um valor CAS que deve ser correspondido como uma pré-condição antes de prosseguir com a operação. Ela também permite especificar um tempo de expiração (ou TTL) a ser definido no documento.

Não há nenhuma operação do Basic Bucket Accessor análoga à do Advanced SUBSTITUIR operação (como src_bkt[meta.id] = adoc é mais como um upsert).

Abaixo está um exemplo do Advanced SUBSTITUIR operação.

 

Alguns exemplos de valores de retorno:

 

DELETE avançado: resultado = couchbase.delete(binding, meta)

Essa operação permite excluir um documento no compartimento especificado pela chave. Opcionalmente, pode ser especificado um valor CAS que será correspondido como uma pré-condição para prosseguir com a operação.

Compare isso com o Basic Bucket Accessor DEL que simplesmente usa uma ligação ou um mapa JavaScript exposto, excluir src_bkt[meta.id]onde não há valor de retorno (sem status e sem metadados).

Abaixo está um exemplo do Advanced DELETE operação.

 

Alguns exemplos de valores de retorno:

 

INCREMENTO avançado: resultado = couchbase.increment(binding, meta)

Essa operação incrementa atomicamente o campo contagem no documento especificado. O documento deve ter a estrutura abaixo:

 

O incremento retorna o valor pós-incremento.

Se o documento do contador especificado não existir, será criado um com contagem como 0 e a estrutura mencionada acima. Assim, o primeiro valor retornado será 1.

Devido a limitações na API do mecanismo KV, essa operação não pode manipular contadores de documentos completos no momento.

Não há nenhuma operação do Basic Bucket Accessor análoga à do Advanced INCREMENTO operação.

Abaixo está um exemplo do Advanced INCREMENTO operação.

 

Um exemplo de valor de retorno, supondo que você crie este KEY "my_atomic_counter:1" DOC {"count": 23} Se a função Eventing acima for implementada, a contagem será imediatamente incrementada:

 

DECREMENTO avançado: resultado = couchbase.decrement(binding, meta)

Essa operação diminui atomicamente o campo contagem no documento especificado. O documento deve ter a estrutura abaixo:

 

O decréscimo retorna o valor pós-decremento.

Se o documento do contador especificado não existir, será criado um com a função contagem como 0 e a estrutura mencionada acima. Como resultado, o primeiro valor retornado será -1.

Devido a limitações na API do mecanismo KV, essa operação não pode manipular contadores de documentos completos no momento.

Não há nenhuma operação do Basic Bucket Accessor análoga à do Advanced DECREMENTO operação.

Abaixo está um exemplo do Advanced DECREMENTO operação.

 

Um exemplo de valor de retorno, supondo que você crie este KEY "my_atomic_counter:1" DOC {"count": 23} Se a função Eventing acima for implementada, a contagem será imediatamente diminuída:

 

Referências

 

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

Autor

Postado por Jon Strabala, gerente principal de produtos da Couchbase

Jon Strabala é gerente de produto principal, responsável pelo Couchbase Eventing Service. Antes de ingressar na Couchbase, ele passou mais de 20 anos criando produtos de software em vários domínios, começando com EDA no setor aeroespacial e depois fazendo a transição para a criação de software corporativo com foco no que hoje é chamado de "IoT" e "dados em escala". Jon trabalhou em várias pequenas empresas de consultoria de software até abrir e gerenciar sua própria empresa. Ele tem ampla experiência em NoSQL/NewSQL, tanto na contribuição quanto na comercialização de novas tecnologias, como bitmaps compactados e armazenamentos de colunas. Jon é bacharel em engenharia elétrica e mestre em engenharia da computação, ambos pela Universidade do Sul da Califórnia, e tem MBA pela Universidade da Califórnia em Irvine.

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.