Servidor Couchbase

Pedido no Couchbase Functions - Parte 1

O Couchbase Functions está sendo apresentado na versão 5.5 do Couchbase Server sob o código Serviço de eventos do Couchbase. O Couchbase Functions permite que você aproxime a lógica de negócios orientada por dados dos seus dados. A lógica de negócios definida pelo usuário pode ser acionada em tempo real no servidor quando os dados são alterados como resultado das interações que ocorrem nos aplicativos da Web e de borda. Quando a computação reside mais perto dos dados, é importante entender como a computação se comporta quando os dados, que ela está ouvindo, mudam. Tentaremos entender como o Eventing Service reage à ordenação das mutações.

Vamos começar e entender o comportamento com um exemplo simples. Vamos criar uma função de teste com o seguinte código e assumir as configurações padrão (ou seja, 3 trabalhadores) para a função.

Observação: Escolha "Tudo" no limite de alimentação em todas as operações abaixo durante a implementação da função.

No Bucket de origem que essa função escuta, vamos inserir cerca de 10 documentos com IDs de documento numéricos crescentes. No arquivo de log do aplicativo para essa função, você verá algo semelhante às seguintes entradas.

 TTente cancelar a implantação e implantar a função acima e observe que a ordem dos IDs(/alterações) não é a mesma. Você pode repetir essa etapa algumas vezes para reforçar essa observação.

Take-Away#1 : A função não processa os documentos na ordem em que foram inseridos.

Agora, vamos excluir um dos documentos que foi inserido (em nosso exemplo, excluí o DocId#2). Observamos imediatamente a seguinte entrada no registro (que está correta):

Agora, vamos cancelar a implementação da função e implementá-la novamente. Observamos a seguinte ordem:

Observamos isso:

  • "Created Doc ID:" "2" está faltando
  • "Deleted Doc ID:" "2" aparece antes na ordem de processamento e não depois.

Take-Away#2 : Desduplicação

Operações sucessivas (/alterações/mutações) em um documento são agrupadas (dedup'ed), quando ocorrem em rápida sucessão, pelo Couchbase Server, de modo que a sobrecarga no disco e na memória seja minimizada. O Couchbase Server envia somente a versão mais recente de um documento no fluxo DCP.

No exemplo acima, esse é o motivo pelo qual o manipulador OnUpdate não é acionado, pois a exclusão do DocID foi a mais recente na sequência de operações no documento; ou seja, quando UPDATE e DELETE acontecem em ordem, eles são agrupados para DELETE, que acontece mais tarde na linha do tempo. Ou seja, quando várias atualizações (ou até mesmo uma única atualização) em um documento são seguidas pela exclusão do documento, apenas o evento Delete é visto pelo Couchbase Functions, pois as atualizações são agrupadas no evento final, que é a exclusão do documento.

Um comportamento semelhante será observado se um documento passar por várias atualizações em uma pequena janela e, em seguida, uma função consumir as alterações; somente a última alteração ocorrida no documento será vista e as alterações intermediárias serão perdidas. Esse é o caso apenas quando uma nova função é implantada em um bucket existente com muitas alterações ocorrendo em um bucket.

Se a função for implantada e ocorrerem alterações em um documento, cada alteração será tratada pela função. Porém, se o número de alterações ocorridas em um documento for muito alto em um pequeno intervalo de tempo, o Couchbase Server ainda fará uma certa quantidade de desduplicação, e isso pode fazer com que nem todas as alterações acionem a função.

Ou seja, se 10 documentos foram inseridos e um deles foi excluído, então, quando uma função é implementada, não é garantido que a operação de exclusão (no documento inserido e depois no excluído) será vista no final pela função.

Take-Away#3 : A função não processa as mutações na ordem em que foram feitas.

Então, o que está acontecendo aqui? Em Parte 2 Nesta série do blog, vamos nos aprofundar nos bastidores do Eventing Service do Couchbase e entender como os Eventing Workers processam as mutações.

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

Autor

Postado por Venkat Subramanian, gerente de produtos

Venkat trabalha com desenvolvimento e gerenciamento de produtos e vem desenvolvendo plataformas e produtos de dados/análise. Uma parte significativa de sua experiência foi na Oracle, onde passou de engenheiro da equipe de Enterprise Manager da Oracle a gerente de produtos do conjunto de produtos de BI/Analytics da Oracle. No passado, ele trabalhou em startups, ajudando a desenvolver produtos de aprendizado de máquina/NLP e sistemas de decisão distribuídos. Ele está sempre por perto em @venkasub.

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.