.NET

Estruturas de dados de lista, fila e dicionário do .NET Core com o suporte do Couchbase

A adição do API de subdocumento para o Couchbase 4.5 abriu o caminho para o suporte eficiente à estrutura de dados em Couchbase.

Nesta postagem do blog, vou mostrar uma demonstração de três tipos de estruturas de dados que você pode usar com o Couchbase .NET SDK:

  • Lista - uma lista de objetos, basicamente uma lista apoiada pelo Couchbase
  • Queue - uma fila de objetos, basicamente uma fila apoiada pelo Couchbase
  • Dicionário - um dicionário de objetos, basicamente um Dictionary apoiado pelo Couchbase

Também discutirei um pouco sobre como isso funciona nos bastidores.

Se quiser, você pode jogar em casa. O código-fonte deste blog é disponível no GitHube O download do Couchbase Server é gratuito (as visualizações da versão 5 para desenvolvedores estão disponíveis mensalmente).

Lista

Uma lista é uma estrutura de dados .NET que é mantida na memória. Com as estruturas de dados fornecidas pelo SDK do Couchbase .NET, você pode armazená-la em um documento do Couchbase.

Para criar uma lista com base no Couchbase:

A string "myList" corresponde à chave do documento que conterá a lista. Ao usar CouchbaseListum único documento com essa chave será criado (se ainda não existir um). Se já existir um documento com essa chave, CouchbaseList o utilizará.

Agora você pode adicionar/remover itens da lista e tudo isso será mantido no documento. Você também pode executar outras operações, como obter uma contagem dos itens na lista.

O código acima resultaria em um documento com uma chave "myList" que se parece com o seguinte. Observe que o item com número 5 não está listado, pois foi removido.

Há algo sutil no exemplo acima que precisa ser destacado. Observe que eu usei var item = list[5]; e depois item.foo e item.num no WriteLine. Se eu usasse lista[5].foo e lista[5].num diretamente, o que resultaria em duas chamadas de subdocumentos diferentes para o Couchbase. Além de essa eficiência não ser a ideal, é possível que os valores mudem entre as duas chamadas.

Fila

Muito semelhante à Lista, você pode criar uma fila apoiada no Couchbase:

Uma fila é armazenada da mesma forma que uma lista. A diferença é que a ordenação é significativa, e isso se reflete nas operações que você executa em uma fila: Enqueue e Dequeue.

O código acima resultaria em um documento com uma chave "myQueue" (veja o JSON abaixo). Observe que não há nenhum objeto na matriz com o número "0" porque ele foi retirado da fila.

Dicionário

Espero que esteja vendo um padrão agora. Para criar um dicionário:

Novamente, um documento será criado com a chave fornecida. As operações que podem ser realizadas incluem Adicionar, Remover e o indexador [] operação.

Um documento de dicionário tem a seguinte aparência:

Uma observação sobre a dinâmica C#: usei dinâmico para manter os exemplos de código curtos e simples. Em seu aplicativo, provavelmente será melhor usar um tipo C# definido de verdade. Tudo isso é serializado para JSON no Couchbase, é claro.

Nos bastidores

Antes de a API de subdocumentos ser lançada no Couchbase Server 4.5, essas estruturas de dados eram possívelé claro. O problema é que você carregaria o documento inteiro, o colocaria em uma lista, faria alterações na lista e depois salvaria o documento inteiro. Se você tiver estruturas de dados grandes, mas estiver apenas lendo ou fazendo alterações em um único item, isso geralmente resultaria em perda de tempo e de largura de banda e, possivelmente, em maior contenção.

A API de subdocumentos (que você pode usar diretamente; eu a abordei na seção API de subdocumento no Couchbase Server 4.5 com o SDK do .NET (revisitado) ) é usado nos bastidores do CouchbaseList, CouchbaseQueuee CouchbaseDictionary. Portanto, quando você adiciona um item a um CouchbaseListPor exemplo, apenas esse item está sendo enviado pelo cabo, não a lista inteira.

Algumas operações ainda precisarão obter o documento inteiro. Por exemplo, iterar em uma coleção usando um antes de recuperará o documento completo. A remoção de um item de uma lista resultará na digitalização do documento completo. Porém, se as operações de subdocumento surgirem no futuro para dar suporte a essas ações, as implementações do SDK serão atualizadas de acordo.

Resumo

Essas estruturas de dados são outra ferramenta para ajudá-lo a gerenciar seus dados. Como elas usam a API de subdocumento, geralmente têm mais desempenho do que uma abordagem de documento inteiro. Para obter mais detalhes, consulte a seção Documentação sobre estruturas de dados.

Tem dúvidas? Comentários? Precisa de ajuda? Visite nossos fórunsEntre em contato comigo Twitter @mgrovesou deixe um comentário.

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

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

2 Comentários

  1. [...] muitos outros belos exemplos de estruturas de dados do Couchbase .NET no blog de Matthew Grove [...]

  2. [...] Em fevereiro, escrevi um blog sobre o uso de estruturas de dados com o .NET (e o .NET Core): Lista, Fila e Dicionário. [...]

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.