Data Warehouse : Benchmarking entre gigantes.

Ammon Cunha
Estoca
Published in
6 min readFeb 1, 2022

Decisões são extremamente comuns no dia a dia de dados. Qual visualização devo fornecer para meu cliente, quais são as melhores oportunidades nesse funil de compras ou até mesmo se devo ou não investir em determinada ação empresarial. Essas são algumas das perguntas que mais integram nosso dia a dia e consequentemente são provas da importância da “pessoinha” de dados em um ambiente corporativo.

Mas, para que exista um ambiente de dados propicio para uma tomada de decisão cada vez mais assertiva, é necessário tomar algumas decisões extremamente importantes antes de sair produzindo visualizações ou até mesmo respondendo perguntas de negócio.

Qual é a abordagem que irei utilizar em meus dados? Onde armazenarei as informações do meu negócio? Quais serão as fontes destas informações e como planejo usá-las em minha rotina? Essas são algumas das perguntas que sempre me faço quando vou iniciar um estudo de um ambiente onde construiremos uma cultura de decidir através dos dados. E não poderia ser diferente aqui na Estoca.

Vivemos um processo incrível de questionamentos sobre para onde vamos com nossas informações, qual nosso objetivo de negócio com elas e até mesmo qual será o uso destes dados no dia a dia, porém falarei desses processos em uma outra oportunidade.

Hoje, meu principal objetivo é compartilhar como foi elaborado o racional para entender qual é o melhor ambiente de Data Warehouse que temos, quando olhamos para o negócio da Estoca no cenário atual e nos próximos anos. Obviamente, não sou o maior conhecedor de engenharia de dados e meu objetivo não é trazer detalhes profundos dos testes que fizemos e sim, compartilhar o racional usado para comparar 3 gigantes quando o assunto é DW.

Vamos ao que interessa..

Comparamos 3 grandes provedores de Data Warehouse que temos hoje no mercado. São eles : Google BigQuery , Amazon Redshift e Snowflake.

Quando iniciamos os testes, alinhamos que seria contemplado nesse estudo os seguintes tópicos:

  • Arquitetura
  • Segurança
  • Gerenciamento e manutenção do Ambiente.
  • Escalabilidade
  • Preço
  • Ingestão de dados
  • Facilidade de uso
  • Integrações

Não vou detalhar cada um deles nesse artigo, porém, comentarei sobre alguns dos resultados que foram importantíssimos para tomarmos nossa decisão.

O primeiro ponto que considero fundamental é o quanto o provedor do DW te entrega de possibilidades para gerenciar seu ambiente de acordo com sua demanda.

Neste momento da decisão temos que considerar se o time que temos ou pretendemos ter será de especialistas em infraestrutura, com capacidade de extrair da ferramenta a melhor performance.

Digo isso, porque algumas ferramentas como AWS Redshift e Presto, exigem um nível de conhecimento mais alto para garantir que a capacidade computacional que está sendo usada entrega a melhor performance para aquele cenário de uso da informação. Com isso, é extremamente importante considerar que ter ferramentas no estilo Self Hosted, podem exigir que se tenha um time com um conhecimento técnico de infra um pouco mais avançada do que no cenário contrário que veremos a seguir.

Já do outro lado da força temos o BigQuery e o Snowflake, que seguem um estilo mais Serverless, “assumindo a responsabilidade” de provisionar a melhor capacidade computacional de uma maneira automatizada para as requisições.

Um outro ponto que consideramos é a relação entre custo vs velocidade de processamento da consulta. Fizemos alguns testes com algumas querys que temos em nosso DW e pesquisamos alguns testes que foram feitos em outros benchmarkings que usamos como referência de estudo.

Esta imagem é um exemplo dos vários comparativos que consumimos ao longo do benchmarking na procura de entender como os 3 principais DW’s do mercado reagiram aos testes feitos.

Outro ponto relevante que discutimos sobre as principais diferenças entre os 3 DW’s foi escalabilidade. Enquanto o Redshift exige um redimensionamento para alterar as capacidade computacionais (o que acaba sendo um processo um pouco oneroso de se fazer, tendo em vista que o Storage e a Instância são uma coisa só) o BigQuery e o Snowflake oferecem essa possibilidade de escala de uma maneira extremamente mais fluida. Um ponto de destaque para o Snowflake, que com apenas uma linha de código em SQL, consigo aumentar o tamanho da minha capacidade computacional, com alguns milissegundos de processamento para processar tal requisição.

Integração também foi outro ponto que consideramos. Tanto AWS Redshift quanto Google BigQuery são extremamente amigáveis com suas soluções em cloud. Porém, quando é necessário atuar em um cloud que não seja o seu nativo, as coisas não são tão simples quanto deveriam ser. Existem algumas preocupações e algumas configurações que devem ser feitas para que o tão sonhado Multicloud seja possível. Entretanto, isso acaba sendo um diferencial para o Snowflake, que interage muito bem com seus amigos de mercado.

Nos quesitos de segurança, backups e facilidade de uso, os três entregam uma solução satisfatória. Todos eles possuem medidas de segurança como HIPAA, PCI DSS entre outros.

Conclusão

Amazon Redshift entrega uma solução extremamente rápida e eficaz, principalmente quando o assunto é alto volume e processamentos Streaming de dados. Painéis trabalhando informações real time ou aplicações com um consumo muito ativo podem ser o mundo ideal para essa poderosa ferramenta. Entretanto dentro de nossa realidade, não acreditamos que ter um auto custo com times especialistas (para extrair o melhor da ferramenta) ou até mesmo altas capacidades de processamentos de dados simultâneos á um custo bem maior do que encontramos em outra solução , fariam sentido neste momento. Entendemos a potência que o AWS nos oferece, porém não nos trás hoje o melhor custo beneficio.

Google BigQuery é uma ferramenta tão poderosa quanto seus concorrente. Ele se destaca quando as requisições são de grandes volumes de dados porém com uma baixa frequência. Picos de dados sendo consultados, com algum tempo ocioso pós essas consultas, fazem com que o Bigquery entregue uma performance interessante. O custo dele em usos contínuos (nos testes que fizemos e vimos outras pessoas fazerem) faz com que seu custo seja muito alto e sua principal “vantagem” de auto escala não seja utilizada de maneira muito eficaz. Em nossos testes, ele acabou sendo o mais caro (na relação de Billing por consulta), porém entrega um preço muito atrativo no Storage da informação.

Snowflake foi a ferramenta escolhida por nós. Além de oferecer uma capacidade de processamento tão eficaz quanto seus concorrentes, ela trás consigo uma adequação muito interessante na relação de “custos com capacidade computacional”. Sua inteligência de desligar e ligar os Warehouses (nome que o Snowflake dá para suas instâncias) faz com que sua performance sempre seja muito assertiva para um volume de dados constantes. No nosso caso, onde temos uma constância de requisições dentro de nosso ambiente de DW, ele apresentou a melhor performance. Seus custos e sua agilidade na hora de gerenciar os Warehouses, criar conexões com bancos transacionais e até mesmo de rodar consultas do dia a dia garantiram o primeiro lugar em nossa escolha.

A ideia principal até aqui foi demonstrar um pouco dos questionamentos que tivemos ao longo dessa escolha. Os detalhes de testes, as premissas de negócio que consideramos e coisas desse tipo, não trouxemos para essa discussão.

Posteriormente, iremos compartilhar também, como foi o processo de contratação da ferramenta, e quais foram algumas das configurações que fizemos no Snowflake para começar a utilizá-lo em nosso dia a dia.

Nos vemos em breve..

Créditos de conteúdo :

https://medium.com/2359media/redshift-vs-bigquery-vs-snowflake-a-comparison-of-the-most-popular-data-warehouse-for-data-driven-cb1c10ac8555

https://www.geeksforgeeks.org/google-big-query-vs-redshift-vs-snowflakes/

--

--