Node.js

Exclusão em massa de documentos por prefixo de chave composta usando Node.js

Uma pergunta comum que é feita na Fóruns do Couchbase e no Stack Overflow é como
excluir todos os registros de um bucket que tenham uma chave que comece com algum valor. Em outras palavras, como excluir todos os registros que compartilham uma chave
chave composta específica. A solução simples é criar uma exibição do Couchbase e executar uma consulta de intervalo.

Você pode executar consultas de intervalo com todos os SDKs do Couchbase, mas, neste exemplo específico, veremos como fazer isso com o Node.js.

Os pré-requisitos

Antes de tentar fazer o que se segue, você deve ter os seguintes itens instalados e configurados:

  • Node.js e NPM (Node Package Manager) instalados
  • Couchbase 3.0+

Nossos dados de amostra

No restante deste exemplo, usaremos alguns documentos de amostra em um bucket que chamarei de balde de teste.
Os documentos em nosso bucket terão os seguintes nomes de chave:

  • usuário::nraboy
  • usuário::mingenthron
  • usuário::blawson
  • produto::1
  • produto::2
  • produto::3

O conteúdo desses documentos não é realmente importante para este exemplo. O que importa é o prefixo que escolhi usar para cada um dos documentos
dois tipos de documentos. Eu optei por usar usuário:: para representar documentos do usuário e produto:: para representar
documentos do produto. As chaves completas representam chaves compostas.

Criando nossa visualização do Couchbase

Temos muitos documentos (não realmente) em nosso bucket do Couchbase. É provável que não consigamos nos lembrar de todas as chaves para fazer um cálculo direto de valor-chave
pesquisas. Por esse motivo, precisaremos criar um Couchbase View.

Você pode criar visualizações do Couchbase por meio de código, mas, para este exemplo específico, vamos criar uma por meio do Couchbase Dashboard. Sinal
no painel do Couchbase e clique no botão Visualizações e selecione a guia balde de teste que você criou anteriormente.

Escolha criar uma nova visualização de desenvolvimento e chame o documento de design _design/dev_docs com um nome de exibição de
by_id. O código da visualização padrão deve estar bom, mas, caso não esteja, você deve se certificar de que a visualização se pareça com o código
seguintes:

Essa exibição emitirá todos os documentos e a chave será cada um dos IDs dos documentos.

Nosso aplicativo Node.js

Neste ponto, vamos criar um novo aplicativo Node.js para facilitar a compreensão das coisas.

Preparação do projeto

Usando o Terminal (Mac/Linux) ou o Prompt de Comando (Windows), execute o seguinte comando:

Responda a todas as perguntas e estará tudo certo. Você também pode simplesmente criar seu NPM package.json do zero e o arquivo
adicione o seguinte conteúdo:

Ainda não terminamos. Precisamos instalar as dependências do projeto antes de começarmos a planejar isso
aplicativo. No prompt de comando ou no terminal, execute o seguinte comando:

Isso instalará o Express Framework e o SDK do Couchbase Node.js.

O código que importa

Se você ainda não o fez, crie um app.js que fica ao lado de seu arquivo package.json em seu projeto.
O conteúdo desse arquivo deve ser o seguinte:

Há muita coisa acontecendo aqui, por isso vou detalhá-la.

Não há muito com o que se preocupar acima. Estamos apenas incluindo o Couchbase SDK e o Express Framework para uso em nosso aplicativo. No entanto, abaixo
você verá que estamos nos conectando ao nosso cluster e abrindo um determinado bucket:

Estamos nos conectando a uma instância do Couchbase hospedada localmente e abrindo nosso balde de teste mencionado anteriormente.

Agora vamos dar uma olhada em algo fantástico!

Estamos preparando um objeto ViewQuery de nosso _design/dev_docs documento de design e by_id visualizar. Para consultar apenas
para documentos específicos, usaremos o que é chamado de consulta de intervalo. Já sabemos que nossa visualização está retornando documentos com o
id do documento como o valor da chave. Isso significa que, com uma consulta de intervalo, podemos determinar quais chaves queremos receber.

Na consulta de intervalo, a chave de início será usuário:: porque queremos excluir todos os documentos do usuário. A tecla end também
conter usuário::mas têm o caractere unicode u02ad anexado a ele. Isso capturará tudo
prefixado com o que estamos procurando. Mais informações sobre esse tipo de consulta de intervalo podem ser vistas na seção
Documentação oficial do Couchbase.

Por fim, executamos essa consulta e capturamos os resultados. Os resultados são percorridos em loop e excluímos cada registro, um a um, conforme mostrado
no seguinte:

Toda exclusão emitida no Node.js será sem bloqueio para que a camada do aplicativo não trave. Quando uma solicitação de exclusão chega ao Couchbase Server,
o documento é marcado para exclusão e, posteriormente, é excluído quando ocorre a compactação.

Execute a linha acima para ver esse projeto em ação.

Conclusão

Usando consultas de intervalo, você pode consultar determinados documentos em uma exibição e, em seguida, optar por excluí-los. Os documentos específicos neste exemplo
tinha chaves compostas prefixadas com usuário:: na chave.

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

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

3 Comentários

  1. Swapnil Sonawane agosto 25, 2015 em 7:13 am

    Isso também pode ser feito com o servidor Couchbase 2.5 e o cliente java 1.4?

    1. Sim, esse conceito também deve funcionar nesse caso, a visualização deve ser a mesma, mas o código Java será obviamente diferente do anterior.

  2. Outra opção que sempre recomendo às pessoas, dependendo da rapidez com que precisam excluir coisas e da carga que podem colocar em seu cluster do Couchbase, é, em vez de excluir o objeto diretamente, colocar um TTL aleatório em cada um dos objetos entre agora e daqui a X dias. Assim, o cluster do Couchbase se encarregará de excluir o objeto do bucket quando o TTL expirar, diminuindo a carga no cluster.

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.