No Couchbase 4.0, o N1QL foi introduzido como uma forma de dar aos desenvolvedores mais flexibilidade ao consultar seus dados NoSQL armazenados no Servidor Couchbase. Você poderia executar consultas SQL em dados JSON e tudo seria incrível. No entanto, com o N1QL tão bom quanto ele é, havia recursos que deixavam a desejar. Com o avanço rápido para o Couchbase 5.0, muitos desses recursos agora são realidade. Veja, por exemplo, a capacidade de usar subconsultas em consultas N1QL. Esse recurso já existia, mas o Couchbase Server 5.0 traz expressões de subconsulta, em que as subconsultas podem ser usadas em expressões genéricas.

No momento em que este artigo foi escrito, em janeiro de 2017, o Couchbase 5.0 estava disponível em uma versão para desenvolvedores. Embora os recursos estejam chegando, eles ainda não estão em uma compilação pronta para produção. Mais informações sobre compilações de desenvolvedor podem ser encontradas neste anúncio no blog sobre o assunto.

Vamos dar uma olhada no que significa a subconsulta em um documento aninhado. Para a base deste exemplo, trabalharemos com os dois documentos a seguir:

O documento abaixo terá uma chave de documento de ordem::1 e funciona como um recibo para uma pessoa:

O documento abaixo terá uma chave de documento de ordem::2 e funcionará como um recibo para uma pessoa diferente:

O importante a ser observado e a base por trás desse exemplo é o fato de que temos objetos aninhados em uma matriz, o que torna o documento complexo. É essa complexidade que estamos buscando.

Então, digamos que queremos obter o total que cada pessoa gastou em videogames. Normalmente, isso seria feito usando uma subconsulta com alguma função de agregação. O seguinte é possível no Couchbase Server 5.0:

É claro que as subconsultas não se limitam apenas à agregação. Você pode usar em dados aninhados como parte de uma EXISTE condição, MERGEou qualquer outra coisa. Digamos que quiséssemos descobrir se pokemon-azul existe no recibo de qualquer pessoa. Poderíamos fazer algo assim para consultar esses dados:

No entanto, só porque você pode usar subconsultas, não significa que deva fazê-lo em todos os cenários, pois há outras maneiras que podem gerar melhor desempenho. Em vez de usar uma subconsulta no exemplo acima, talvez você possa tentar o seguinte:

Ambas as consultas realizam a mesma tarefa, mas uma lhe proporcionará um desempenho melhor do que a outra. O que realmente importa é quais são suas necessidades como resultado e, então, você poderá definir uma consulta que corresponda a elas.

Vamos ver outro exemplo de como as expressões de subconsulta podem funcionar. E se quiséssemos usá-las em um LET cláusula como a seguinte:

Supondo que tivéssemos mais de um documento para um cliente, os totais seriam agregados e veríamos o histórico total de compras para esse cliente específico. Usamos LET versus LOCAÇÃO porque queremos que os valores sejam determinados antes de tentar agrupá-los e agregá-los.

Outros cenários em que as expressões de subconsulta podem fazer sentido são MERGE e LOCAÇÃO cláusulas.

Para obter mais informações sobre como usar o N1QL com o Couchbase, visite o site Portal do desenvolvedor do Couchbase.

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.

Deixar uma resposta