.NET

CRUD do ASP.NET Core com NoSQL: Parte 3

Os aplicativos ASP.NET CRUD consistem em criar, ler, atualizar e excluir. Em Parte 1Em seguida, configuramos um projeto básico do ASP.NET Core. Em Parte 2adicionamos o primeiro ler usando uma consulta SQL++ em relação aos dados da lista de desejos.

O SQL++ do Couchbase é uma linguagem de consulta avançada, que contém todos os melhores recursos do SQL relacional, com um superconjunto de recursos para consulta de dados JSON.

No entanto, o SQL++ não é a única maneira de interagir com os dados no Couchbase. Nesta postagem, exploraremos o uso da API de valor-chave.

Valor-chave versus SQL?

Se você tem um histórico relacional, provavelmente está acostumado com o SQL sendo o único maneira de interagir com os dados (mesmo que você esteja usando uma ferramenta como o Entity Framework Core, ele ainda está usando SQL). Um dos excelentes recursos de um banco de dados NoSQL (como o Couchbase) é que, embora o SQL esteja disponível, também há outros métodos de acesso disponíveis. (Por isso, o backrônimo "Not Only SQL").

Para o Couchbase, a maneira mais eficiente de acessar os dados é por meio de pesquisa de valor-chave. Todos os outros índices e consultas suportados pelo Couchbase (SQL++, Pesquisa de texto completo, Análises, Eventose outros) são, em última análise, construídos ou dependem da simples pesquisa de valores-chave.

A API de valor-chave lhe proporcionará o melhor desempenho, onde:

    • Uma chave é especificada, ou
    • Seu código recebe uma chave, ou
    • Você pode construir uma chave de forma determinística

Exemplos: quando usar chave-valor

Aqui estão alguns exemplos de quando (e quando NÃO) usar a API de valor-chave para leitura:

Caso de uso Chave-valor? Por que ou por que não?
Pesquisar um usuário com a chave "73892 Sim Pesquisa direta
Pesquisar apenas o endereço de e-mail de um usuário com a chave "73892 Sim Mesmo que o documento do usuário seja grande, o Couchbase tem um recurso baseado em chave API de subdocumentoque permite que você recupere uma parte do documento.
Pesquisar um grupo de usuários com as chaves "73892“, “47212", e “90491” Sim Isso pode exigir várias operações de pesquisa de chave, mas ainda assim pode ser mais rápido do que usar um SQL SELECT ... WHERE ... IN consulta.
Pesquisar os comentários de uma postagem de blog Talvez Se os comentários de um post de blog estiverem em um único documento e a chave do post de blog for conhecida, uma chave de comentário de post de blog poderá ser criada. Por exemplo, a chave do post do blog é Eu gosto de balõesPara obter comentários, use a tecla I-like-balloons::comments
Pesquisar todos os usuários de "Ohio Não O estado do usuário é provavelmente um atributo "secundário", não uma chave (vários usuários podem ser de Ohio). Esse é um bom caso de uso para o SQL++
Pesquisar produtos com "balões" em sua descrição Não As descrições são um atributo secundário, não uma chave (vários produtos podem ter "balões" em sua descrição). Esse é um bom caso de uso para a Pesquisa de texto completo (FTS)

Observe que o Couchbase tem uma arquitetura que prioriza a memória. O cache interno significa que uma pesquisa de valor-chave geralmente recupera dados diretamente da memória - latência de microssegundos, sem espera no disco.

Minha regra geral é: use a API de valor-chave sempre que possível e, quando necessário, recorra a uma opção mais flexível, como SQL++ ou Full-Text Search.

Criar um ponto de extremidade Get CRUD

Vamos criar um ponto de extremidade que use a API de valor-chave para recuperar um único item da lista de desejos.

Esse ponto de extremidade exigirá que a ID do item da lista de desejos seja fornecida como parâmetro:

Neste exemplo, não precisamos de um agrupamento (como fizemos com o SQL++), mas precisamos de um objeto coleção objeto. Observe que, como a coleção de listas de desejos está no objeto Padrão escopo, podemos pular a obtenção do escopo e ir diretamente do balde para a coleção.

Quando o item é devolvido da GetAsync, está em um IGetResult objeto. O Couchbase não armazena objetos C#, ele armazena JSON. Portanto, para serializar em um objeto Item da lista de desejos objeto, use item.ContentAs.

Essa API lhe dá flexibilidade: um documento retornado do Couchbase pode ser serializado para Item da lista de desejos aqui e talvez AmazonWishlistItem em outra parte do aplicativo.

Chave-valor em ação

Execute o aplicativo ASP.NET Core e vamos dar uma olhada na página OpenAPI/Swagger atualizada.

ASP core dotnet tutorial with Couchbase

O ponto de extremidade /api/get/{id} sob Presentes deve estar listado. Expanda esse endpoint clicando nele. Ao contrário do /api/getall esse ponto de extremidade requer um parâmetro: o ID do item da lista de desejos que você deseja obter.

Se você não se lembrar de um dos GUIDs, poderá executar /api/getall primeiro e copie um deles, ou use: "31c9cc33-8dfe-440c-bd1b-bb038939d2e0" (que foi a identificação que dei à camisa do Joey Votto). Clique aqui Experimente, cole essa ID e clique em Executar:

Test the ASPNET Core Couchbase Endpoint

Observe que, na resposta, a ID retornada é nulo. Isso se deve ao fato de que, como expliquei em Parte 2O Couchbase armazena o ID como metadados. Nessa situação, isso não é um grande problema. O ID foi fornecido como parâmetro, portanto, você poderia simplesmente atribuí-lo ao objeto C# que está sendo retornado:

Como alternativa, se você não quiser retornar a ID você pode criar uma classe de visualização C# separada que tenha apenas nome e usá-lo com ContentAs.

E quanto à validação e ao tratamento de erros?

Que sensato de sua parte perguntar! Esse endpoint definitivamente não está pronto para a produção. O que está faltando?

    • Tratamento de erros: e se houver uma exceção?
    • Validação: e se a ID informada for inválida?
    • Autenticação/autorização: e se o consumidor dessa API não tiver acesso de leitura?
    • Registro: e se algo não der muito certo e quisermos examinar o resultado mais tarde?

Todas essas são preocupações importantes. Para a maioria delas, o ASP.NET Core tem funcionalidade integrada e/ou bibliotecas populares de terceiros disponíveis para ajudar você. Mas não deixe de conferir a documentação do Couchbase em Manipulação de erros com o .NET SDK e Visão geral do gerenciamento de segurança.

O que vem a seguir?

O projeto ASP.NET Core está conectado ao Couchbase Capella e está lendo dados por meio do SQL++ e da API de valor-chave.

Na próxima postagem do blog, veremos como criar e atualizar dados ("C" e "U").

Nesse meio tempo, você deve:

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.

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.