Coautor: Till Westmann, Diretor Sênior de Engenharia


O bits para o Couchbase 6.5, a próxima versão do Couchbase Server, já estão disponíveis. O serviço Analytics, que oferece suporte ao processamento eficiente de consultas paralelas, adicionou suporte às funções de janela definidas no padrão sql:2003.

Para muitos de nós (inclusive para mim), as funções de janela são esse recurso mágico que raramente usamos. Mas as funções de janela tornam as consultas SQL mais concisas, melhorando a legibilidade, o que facilita a manutenção de consultas para aplicativos do mundo real. As consultas expressas pelas funções de janela envolveriam, de outra forma, uniões e subconsultas dispendiosas que são difíceis de otimizar, resultando em consultas de execução lenta. Vou ilustrar esse ponto calculando um total em execução, que é o exemplo mais prático para o uso de funções de janela. Nesta postagem do blog, calcularei o total em execução de duas maneiras: a maneira antiga, usando um INNER JOIN, e as novas Window Functions disponíveis no Couchbase 6.5.

O que é um total acumulado?

A Total em execução é um total que é continuamente ajustado para levar em conta os itens à medida que são adicionados. Outro termo para isso é soma parcial. No exemplo abaixo, o total em execução para uma data de transação seria o total em execução do InvoiceID mais o TransactionAmount atual.

 

Embora eu tenha calculado o RunningTotal acima, observe que os três primeiros campos são os dados de origem e que o RunningTotal precisa ser calculado usando uma consulta SQL.

Pré-requisitos

Baixar Servidor Couchbase 6.5 e configurar um bucket do Couchbase para os dados de amostra para executar as consultas nesta postagem do blog.  

Crie um bucket do Couchbase chamado "invoices" com os dados abaixo.

No workbench do Analytics, execute a seguinte instrução para criar o conjunto de dados

Consulta Inner Join para total de execução em um determinado dia

Para cada InvoiceID, precisamos recuperar o valor da transação e todos os valores de transações anteriores a ela. Isso é feito usando um Inner Join com uma condição para obter cada fatura e as anteriores a ela.

JOINs e NoSQL nem sempre se deram bem juntos. De fato, a sabedoria convencional é que os dados no mundo NoSQL são desnormalizados para evitar JOINs. Mas o Couchbase Analytics foi criado para exploração de dados e análise ad-hoc que inclui junções e agregações complexas. O mecanismo de consulta do Analytics pode processar JOINs que não são suportados por outros fornecedores de NoSQL - 

Caso você esteja se perguntando como o Couchbase Analytics pode unir dados JSON, recomendo que você se aprofunde neste apresentação de vídeo com o professor Mike Carey, Arquiteto-chefe de consultoria para Couchbase. 

Consulta de função de janela para total de execução em um determinado dia

Se você não estiver familiarizado com as funções de janela, recomendo a leitura de Documentação do PostgresSQL que oferece uma ótima introdução: 

"A função de janela executa um cálculo em um conjunto de linhas da tabela que estão de alguma forma relacionadas à linha atual. Isso é comparável ao tipo de cálculo que pode ser feito com uma função de agregação. Mas, diferentemente das funções agregadas comuns, o uso de uma função de janela não faz com que as linhas sejam agrupadas em uma única linha de saída - as linhas mantêm suas identidades separadas. Nos bastidores, a função de janela é capaz de acessar mais do que apenas a linha atual do resultado da consulta."

Esta é a aparência da consulta real

Além da simplicidade e da concisão, há algumas coisas interessantes sobre a declaração acima -

  1.     Há uma função de agregação, mas não há cláusula group by. Normalmente, as funções de agregação exigem uma cláusula group by, mas como estamos usando a cláusula OVER, SUM é considerada uma função de janela.
  2.     A cláusula OVER recupera um conjunto específico de linhas, em relação à linha atual, e executa uma operação em um campo específico.
  3.     ORDER BY define a ordem lógica em que a função de janela é avaliada.

Observação: O Couchbase oferece suporte a funções de janela para os serviços de consulta e análise, e a mesma consulta pode ser executada nos workbenches de consulta e análise. Para executar no serviço de consulta, os seguintes índices precisam ser criados

O objetivo desta postagem do blog foi apresentar as funções de janela no Couchbase Analytics. As funções de janela NÃO são novas no SQL, elas fazem parte do padrão SQL e estão disponíveis em todos os principais bancos de dados relacionais e ferramentas de Big Data, como Hive e Spark. Com a versão 6.5, o Couchbase está trazendo essas funções para os bancos de dados de documentos. Se você quiser experimentar isso em primeira mão, por favor Faça o download dos bits e interaja conosco em fóruns.

Recursos

Couchbase Server 6.5 O que há de novo

Todos os blogs 6.5

Autor

Postado por Sachin Smotra, diretor de gerenciamento de produtos, Couchbase

A carreira de Sachin Smotra abrange mais de 15 anos de desenvolvimento de produtos de software em vários domínios, incluindo software Java Enterprise, soluções DRM para jogos móveis e conferências na Web. Como diretor de gerenciamento de produtos da Couchbase, ele é um líder de produto prático responsável pelas linhas de produtos Couchbase Mobile, IOT e Analytics, incluindo a divulgação da estratégia e da visão do produto com clientes, parceiros, desenvolvedores e analistas. Antes de ingressar na Couchbase, Sachin foi gerente sênior de gerenciamento de produtos na Cisco WebEx, onde liderou a equipe de produtos responsável por transformar a experiência do cliente de ponta a ponta em todo o ciclo de vida do produto WebEx - consideração, compra, uso e renovação. Antes de trabalhar na Cisco, Sachin trabalhou em diferentes startups em uma série de funções nas áreas de engenharia, arquitetura, gerenciamento de produtos e alianças.

Deixar uma resposta