Como fazer "algo" no N1QL?

Em primeiro lugar, Se você não estiver familiarizado com o N1QL, recomendo que dedique alguns minutos ao nosso treinamento gratuito sobre N1QL aquiou simplesmente brincar com ele aqui.

Em segundo lugar, como se trata de uma pergunta ampla, vamos analisar alguns cenários comuns:

 

Selecione o ID de um documento e todos os seus atributos:

Como escrever um JOIN:

Vamos consultar quais empresas voam do aeroporto de São Francisco (SFO) para qualquer lugar do mundo usando o exemplo de viagem:

O JUNTAR se parece com um SQL JOIN padrão, a única diferença aqui é a cláusula SOBRE AS CHAVES palavra-chave, para ler mais sobre ela Confira este artigo que explica visualmente os JOINs N1QL. O Couchbase 5.5 também adicionará suporte a ANSI JOINs

Como selecionar itens de uma matriz:

Documentos fornecidos como:

Se quisermos selecionar todas as crianças com mais de 10 anos de idade, podemos usar o comando INÚTIL palavra-chave:

 

 

Por que minha consulta está lenta?

Provavelmente, sua consulta não está atingindo nenhum índice. Você pode verificar isso executando a consulta com a opção explicar da seguinte forma:

Como você pode ver na imagem acima, a consulta está atingindo o PrimaryScan o que significa que ele está usando o índice primário. A criação de um índice secundário para ele possivelmente resolverá seu problema:

Ao executar a mesma consulta novamente, o resultado será algo como:

Se a sua consulta já estiver atingindo um índice, mas ainda tiver um desempenho ruim, talvez seja melhor adicionar um índice mais otimizado (como neste exemplo). Se você não estiver familiarizado com como criar um índice, dê uma olhada nesta postagem do blog

 

Como paginar os resultados no N1QL?

Você pode usar LIMITE e DESLOCAMENTO:

Confira este tutorial para ler mais sobre o assunto. Além disso, se você estiver usando o Spring Data, poderá adicionar um Paginável ao final da definição de seu método:

E então, em seu serviço, você pode usar o Solicitação de página objeto:

 

Minha consulta tem resultados ausentes/errados

Por padrão, o Couchbase suporta leitura após a escrita sempre que você obtém um documento por sua chave, mas seus índices e exibições são atualizados de forma assíncrona por meio do Data Change Protocol (DCP). Portanto, se você estiver executando uma consulta logo após uma gravação, ela poderá ser executada antes que as exibições/índices tenham a chance de ser atualizados.

O Couchbase tem tudo a ver com velocidade, e ninguém tem tempo para esperar até que todos os índices e exibições sejam atualizados para enviar a resposta de volta ao cliente de que uma gravação foi executada com êxito.

Mas há poucos cenários em que a consistência forte entre as gravações e as consultas é realmente necessária. Nesses casos, você pode especificar por meio do SDK que deseja esperar até que o índice/visualização que está usando seja atualizado:

Para saber mais sobre consistência de varredura, consulte a seção documentação oficial.

Em minha experiência pessoal, o único cenário em que preciso de consistência entre gravações e consultas é durante o testes de integração que é quando você realmente insere os dados e os consulta logo em seguida.

 

Como criar/usar índices de matriz.

Esse é um tópico interessante, pois indexação de matriz pode acelerar significativamente seu desempenho. Então, digamos que temos a seguinte estrutura de documento:

Agora, se precisarmos consultar as avaliações de hotéis, podemos fazer algo como:

Portanto, o índice mais simples para o revisões matriz vontade se parece com o seguinte:

E então, quando executamos a consulta, voilà:

Ele está usando o índice criado recentemente.

Para obter mais exemplos, consulte o documentação oficial ou leia este excelente artigo sobre como otimizar os índices de matriz.

 

Autor

Postado por Denis Rosa, defensor dos desenvolvedores, Couchbase

Denis Rosa é um Developer Advocate do Couchbase e mora em Munique, na Alemanha. Ele tem uma sólida experiência como engenheiro de software e fala fluentemente Java, Python, Scala e Javascript. Denis gosta de escrever sobre pesquisa, Big Data, IA, microsserviços e tudo o mais que possa ajudar os desenvolvedores a criar um aplicativo bonito, mais rápido, estável e escalável.

Deixar uma resposta