Uma pergunta frequente feita pela comunidade de desenvolvedores do Couchbase é "como posso realizar operações do tipo bulk?" A expectativa é que uma plataforma de dados de alto desempenho ofereça suporte à criação de lotes para melhorar o desempenho. Todos os clientes do SDK do Couchbase oferecem suporte a operações em lote. Por meio de lotes, as solicitações são canalizadas pela rede. Aumentar o throughput da rede, reduzir a latência e utilizar melhor os recursos da rede é o objetivo das operações de batching. O Guia do desenvolvedor do Couchbase contém informações mais detalhadas e considerações arquitetônicas específicas sobre a criação de lotes. Se você não estiver familiarizado com nosso guia de desenvolvimentoé um ótimo lugar para aprender os prós e contras do desenvolvimento com o Couchbase. Todos os exemplos de código mencionados em nosso guia de desenvolvimento, inclusive o usado neste blog, estão todos em um único local conveniente repositório do github.
Passo a passo da operação Go Bulk
Para criar um aplicativo simples com o Couchbase, primeiro inclua "gocb" nos pacotes de importação do aplicativo. Como lembrete, as conexões do aplicativo com o Couchbase são instanciadas uma vez e reutilizadas como uma conexão leve e persistente com o cluster. Isso permite que as alterações dinâmicas na topologia ocorram sem nenhuma interrupção no aplicativo e que as operações no nível do bucket sejam executadas com eficiência.
Para executar operações CRUD em documentos no Couchbase, usamos a API de bucket. A API de bucket em golang inclui um tipo chamado BulkOp, que é uma interface para executar operações em massa. Primeiro, precisamos abrir uma conexão com o cluster e, em seguida, usar a referência de bucket que definimos para uso no aplicativo
O objetivo do aplicativo é inserir 10 documentos no Couchbase. O Couchbase é um banco de dados de documentos e fala JSON por padrão. Uma maneira fácil de criar os documentos a serem usados com as operações em massa é criar primeiro uma estrutura do tipo JSON com um único campo chamado "Item". Para simplificar as coisas, duas variáveis são instanciadas para ajudar a nomear a chave e o valor de cada documento.
No exemplo abaixo, são criados dois arrays de gocb.BulkOp. Um para executar a inserção em massa e o outro para fazer a obtenção em massa.
Por meio do maravilhoso marshalling JSON do golang, 10 itens que usam uma referência ao tipo InsertOp são adicionados à matriz de itens que serão inseridos em massa
O tipo BulkOp tem um método chamado "Do" que, na verdade, executa o pipelining de solicitações em uma operação em lote no cluster. O método Do retornará um erro, se houver, ou nulo.
A recuperação dos itens usando um bulk get funciona da mesma forma. Usando a segunda matriz "itemsGet", é criado um agrupamento de itens usando uma referência ao tipo GetOp.
Este breve exemplo mostra a simplicidade do uso de operações em massa com o Couchbase e o poder do go sdk. Há suporte para outras operações em massa, incluindo prepend, remove, replace, getandtouch, upsert, touch. Os documentos da API que listam todos os métodos estão disponíveis em godocs.