Você sabe as principais diferenças entre Data Lake e um Data Warehouse?

 

Data Lake tem como proposta armazenar , centralizar e disponibilizar um grande número de dados brutos, de diversas fontes e que não necessariamente já se tenha uma fonte de consulta para eles.

Enquanto em um Data Warehouse a ideia é tratar, transformar e já deixar os dados preparados para a consulta e já pensando minimamente na forma a qual será consumida.

Tendo isso em mente a AWS disponibiliza diversas ferramentas, e a proposta do Redshift é justamente disponibilizar um serviço híbrido, permitindo inclusive a interação entre esses 2 “mundos”.

Apesar de nada impedir de se utilizar os nodes do Redshift como repositório para todos os dados de um Data Lake isso não é nada saudável para o bolso, pensando nisso a AWS criou o Redshift Spectrum, que basicamente utiliza a engine do Redshift para fazer consultas no s3, utilizando assim a mesma fonte que o AWS Athena poderia utilizar por exemplo, mas entregando uma performance muito maior.

Redshift e Reshift Spectrum

Nas palavras da própria AWS , “O Amazon Redshift é um serviço de armazenamento de dados rápido, totalmente gerenciado e em escala de petabytes, que torna mais simples e acessível a análise eficiente de todos os seus dados” . Redshift entrega queries rápidas e performance de I/O para virtualmente qualquer tamanho de dataset através do uso de armazenamento colunas e paralelização e distribuição de queries através de múltiplos nós, além de cache de queries mais utilizadas. Cada nó armazena uma capacidade máxima de storage dependendo do tipo de máquina configurada no cluster.

Cada nó de Redshift custa um valor que pode ser relativamente alto. Levando em consideração isso, o Spectrum pode passar a ser uma boa alternativa já que não se paga por armazenamento, mas somente por consulta e com isso há a possibilidade de se interagir com as tabelas do Redshift (ex: fazer joins entre as tabelas Redshift e Spectrum), porém se paga um preço na performance.

O Redshift fornece conexão através de JDBC e ODBC ou nativamente se for utilizado Amazon QuickSight.

Uma estrutura interessante para lidar com um projeto misto mesclando duas soluções de Big Data no mesmo contexto pode ser vista no desenho abaixo:

É possível inclusive utilizar N Clusters Redshift compartilhando a camada do Spectrum afim de paralelizar para escalar a concorrência assim se obter uma melhor performance como descrito no blog da Amazon: https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/

Athena

Segundo a AWS “ O Amazon Athena é um serviço de consultas interativas que facilita a análise de dados no Amazon S3 usando SQL padrão. O Athena não precisa de servidor. Portanto, não há infraestrutura para gerenciar e você paga apenas pelas consultas executadas.” portando é um serviço gerenciado pela amazon, sem servidores e que faz consulta no S3 em formato SQL a um preço baixo, pagando por leitura e com uma baixa performance se comparando com Redshift.

Benchmark: RedShift | RedShift (Spectrum) | Athena

Como teste empírico realizei uma carga inicial de pouco mais 37 milhões de registros com data de acesso ao sistema.

A query executada visa agrupar por dia e ordenar por quantidade de acessos.

SELECT date_trunc(‘day’, access_date) “day”, count(0) access

FROM [schema].full_table_access_data

GROUP by 1

ORDER BY 2 desc

Abaixo os resultados:

RedShift

1ª execução : 0,350s

2ª execução : 0,149s

RedShift (Spectrum)

1ª execução : 2,418s

2ª execução : 0,838s

Athena

1ª execução : 6,54s

2ª execução : 5,37s

Tabela de resultados dos testes a partir da segunda query:

RedShift (0,149s) -> Athena (5,37s) — Redshift 36x mais rápido

RedShift (0,149s) -> Redshift Spectrum (0,838s) — 5,6x mais rápido

Redshift Spectrum (0,838s) -> Athena (5,37s) — 6,4x mais rápido

*Os testes foram realizados em um cluster dc2.large, ou seja, com HDD storage.

Conclusão

Athena é uma boa e barata alternativa em comparação ao Redshift ,porém caso exista a necessidade de um Data Warehouse a utilização do Spectrum se torna mais vantajosa em relação à performance, preço e utilização.