Olá pessoas!!! Após estudar sobre o Redshift, fiquei curioso sobre como seria a performance deste produto AWS em conjunto com o nosso querido Qlik Sense.

Alguns pontos sobre o Redshift

O Redshift é um produto AWS que possui algumas características interessantes:

  • É baseado em postgres;
  • É um banco de dados colunar;
  • Funciona de forma distribuída;

Sobre estes pontos, eu gostaria de abordar principalmente a característica de distribuição dos dados, pois ele possui três formas distintas de realizar esta distribuição. São elas: Even, Key e All distribution.

O Even distribution distribui os dados de forma igualitária para todos os nodes. Esta é a forma padrão que o Redshift oferece ao criar uma tabela sem especificar o tipo. Este formato oferece uma performance razoável.

O Key distribution é distribuído através de suas chaves de relacionamento, onde distribui os dados identificados para os mesmos nós. O que evita uma redistribuição excessiva.

Já o All distribution, distribui os dados para todos os nós, aumentando o custo de armazenamento.

Certo, mas qual usar em um DW?

Hum… DW distribuído?

Após ler a documentação que você encontra aqui, tive alguns insights sobre como usar cada tipo de distribuição para cada situação. Mas atenção! Esta é a minha opinião, e não tome-a como verdade. Leia a documentação, teste e chegue as suas conclusões, pois cada caso é um caso e talvez o meu cenário não esteja de acordo com as suas necessidades!

Bom, pelos testes que fiz e pensando em modelagem multidimensional eu cheguei à essas conclusões:

  • O primeiro tipo (Even distribution), pensando no tipo de distribuição de dados, eu usei em casos de Schema Snowflake nas dimensões de extremidade. Pois este tipo de dimensão se relaciona apenas com outra dimensão e não tem relacionamento direto com a fato.
  • O segundo tipo (Key distribution), como este tipo distribui chaves e relacionamentos utilizei para criar as dimensões que se relacionam diretamente com a fato – Detalhe: Eu não uso PFK em meus modelos, por tanto eu crio minhas tabelas fato sem chave primária. 
  • O ultimo tipo (All distribution), como ele distribui os dados para todos os nós, afim de melhorar a performance de todos os joins que serão necessários eu utilizei para dimensão de tempo e geográfica, pois no modelo que desenvolvi são dimensões que não sofrerão mudanças com frequência.

Agora vamos falar sobre o Qlik Sense

Sim! Eu sou Qlikeiro, ta bom?!

Minha experiencia em tentar fazer uma aplicação performática com o Sense foi um tanto quanto peculiar.

Identifiquei algumas questões que me deixaram intrigado, pois ao configurar a conexão e selecionar as tabelas para extração deste banco de dados orientado a colunas, a extração no Qlik Sense desktop, versão nov 2018 demorou quase 9 minutos. No modelo testado haviam poucas tabelas e a fato possuía uma pouco mais de 240 mil registros, então não deveria demorar tanto.

É triste 🙁

Pedi ajuda a uma turma muito fera em Qlik e recebi alguns direcionamentos, como por exemplo: desativar o IndexSearch no script e retirar o preceding load do script, porém não houve impacto significativo no tempo de carga.

Incomodado com o tempo de espera, fiz um teste no Qlikcloud usando o conector beta do Redshift e a carga demorou apenas 37 segundos.

Show!!!

Mas Victor, deve ser sua internet…

Será que seu problema não era rede? Porque não da pra comparar de cloud para cloud…

Não! Meu problema não era rede, pois fiz o teste no PowerBI e o tempo de carregamento foi algo em torno de 2:30 minutos, e não 9 minutos.

Então após muito sofrer e quebrar a cabeça, resolvi fazer um teste simples! Eu baixei o conector ODBC do Redshift, configurei o DSN de sistema e pasmem! A extração dos dados durou apenas 01:12 min.

E o PBI chorou…

Um detalhe importante é que aqui não foi realizada nenhuma otimização no script, apenas uma extração simples. Não gerei qvds, não delimitei dados, não limpei, não mudei parâmetros do script, não fiz nada! Apenas extraí os dados.

E então…

Após esta odisseia, acabei descobrindo que existe uma grande possibilidade do conector nativo da qlik para Redshift estar com problemas. Mas o Qlik continua sendo phoda!!!

Resultado de imagem para yoda
Para o lado verde da força, venha você

Victor Bertoldo


Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *