Este documento resume os principais tópicos sobre o Amazon Redshift, incluindo uma visão geral da arquitetura, abordagem colunar de armazenamento, Distkey e Sortkey, Spectrum e um caso de uso da Arezzo&Co.
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftAmazon Web Services LATAM
O Amazon Redshift usa uma variedade de inovações para obter um desempenho de consulta muito elevado em conjuntos de dados com tamanhos variando de centenas de gigabytes a um petabyte ou mais.
Nessa sessão será exposto boas práticas do Amazon Redshift, o dataware da AWS. Tem como intuito de expor de formas efetivas de migração, cargas de dados, realizar tunnings nas suas consultas.
Será apresentado um resumo do seguinte artigo:
The Vertica Analytic Database: C-Store 7 Years Later.
Andrew Lamb, Matt Fuller, Ramakrishna Varadarajan Nga Tran,
Ben Vandiver, Lyric Doshi, Chuck Bear Vertica Systems, An HP
Company, Cambridge, MA. Apresentado em VLDB 2012 Istambul.
Onde é mostrado um exemplo de RDBMS comercial usando os
conceitos de "Column Store", que já abriga um banco com 8PB.
Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...Amazon Web Services LATAM
O serviço de banco de dados Amazon RDS permite que você disponibilize um ambiente de Banco de Dados seguro, pre-configurado e altamente disponível em alguns cliques. Ele permite uma capacidade com ótimo custo benefício e escalável, automatizando tarefas que consomem tempo do DBA, provendo seis motores de bancos de dados para escolha: Amazon Aurora, Oracle, MS SQLServer, PostegreSQL, MySQL and MariaDB. Nesta sessão nós vamos olhar com atenção para as funções do Amazon RDS e explicar como funcionam. Nós também vamos promover uma discussão sobre o AWS Database Migration Service e AWS Schema Conversion Tool, que vão ajudar a migrar seus bancos de dados e Data Warehouse com mínimo downtime, do ambiente on-premises para o Amazon RDS ou outros serviços da AWS. Você pode experimentar a Liberdade de rodar suas aplicações com alta performance, escalabilidade, alta disponibilidade e compatibilidade sem o alto custo de ambientes proprietários.
https://aws.amazon.com/pt/products/databases/
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftAmazon Web Services LATAM
O Amazon Redshift usa uma variedade de inovações para obter um desempenho de consulta muito elevado em conjuntos de dados com tamanhos variando de centenas de gigabytes a um petabyte ou mais.
Nessa sessão será exposto boas práticas do Amazon Redshift, o dataware da AWS. Tem como intuito de expor de formas efetivas de migração, cargas de dados, realizar tunnings nas suas consultas.
Será apresentado um resumo do seguinte artigo:
The Vertica Analytic Database: C-Store 7 Years Later.
Andrew Lamb, Matt Fuller, Ramakrishna Varadarajan Nga Tran,
Ben Vandiver, Lyric Doshi, Chuck Bear Vertica Systems, An HP
Company, Cambridge, MA. Apresentado em VLDB 2012 Istambul.
Onde é mostrado um exemplo de RDBMS comercial usando os
conceitos de "Column Store", que já abriga um banco com 8PB.
Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...Amazon Web Services LATAM
O serviço de banco de dados Amazon RDS permite que você disponibilize um ambiente de Banco de Dados seguro, pre-configurado e altamente disponível em alguns cliques. Ele permite uma capacidade com ótimo custo benefício e escalável, automatizando tarefas que consomem tempo do DBA, provendo seis motores de bancos de dados para escolha: Amazon Aurora, Oracle, MS SQLServer, PostegreSQL, MySQL and MariaDB. Nesta sessão nós vamos olhar com atenção para as funções do Amazon RDS e explicar como funcionam. Nós também vamos promover uma discussão sobre o AWS Database Migration Service e AWS Schema Conversion Tool, que vão ajudar a migrar seus bancos de dados e Data Warehouse com mínimo downtime, do ambiente on-premises para o Amazon RDS ou outros serviços da AWS. Você pode experimentar a Liberdade de rodar suas aplicações com alta performance, escalabilidade, alta disponibilidade e compatibilidade sem o alto custo de ambientes proprietários.
https://aws.amazon.com/pt/products/databases/
AWS Meetup Rio - Qual banco usar e quando?Pedro Pisa
Nestra palestra, realizada no dia 30/08/2016, no Senac-RJ, apresentei as principais soluções de bancos de dados disponíveis na AWS e as diferenças entre elas, bem como alguns casos de uso sugeridos para cada um.
Replicação multi-master, sincronização filtrada e transformação com SymmetricDSCesar Romero
Como configurar o SymmetricDS para replicação multi-master de bancos de dados de diferentes fornecedores e sistemas de arquivos.
A adoção do SymmetricDS como ferramenta de replicação representou um caso de sucesso que merece ser compartilhado com a comunidade, esta ferramenta OpenSource desenvolvida em Java provou ser uma das melhores disponíveis e eliminou a necessidade de desenvolvimento de ferramentas de replicação de dados para diferentes projetos. Além da replicação de bancos de dados, ela suporta a replicação multi-master de vários níveis entre até mais de 20 bancos de dados diferentes e de arquivos até mesmo no Android.
"Varios clientes estão migrando suas aplicações analíticas, processamento de dados (ETL) e aplicações de data science rodando com Apache Hadoop, Spark e data warehouse a partir de ambientes em datacenter local para o Amazon EMR com o objetivo de economia, maior disponibilidade e melhoria de desempenho.
Amazon EMR é um serviço gerenciado que permite com que você analise uma quantidade imensa de dados usando as ultimas versões de mais de 15 ferramentas open-source presentes no ecossistema Apache Hadoop e Spark. Essa sessão permitirá idenficar os componentes, aplicações e tarefas presentes no seu atual ambiente e demonstrar as melhores práticas para migrar esses componentes para o Amazon EMR. Nos iremos expliar como mover seus HDFS para o Amazon S3, um serviço de armazenamento altamente durável e como os baixos custos de instâncias EC2 Spot e auto-scaling podem ajudá-lo a ter mais eficiência com baixo custo. Também iremos explicar os fundamentos de segurança e dicas de ajustes para acelerar a migração de sua aplicação de produção."
https://aws.amazon.com/pt/emr/
O Amazon EMR - Elastic Map Reduce, é uma solução gerenciada que oferece clusters Hadoop prontos para usar. Se voce quer experimentar com Big Data, a hora é agora. Nesta apresentação fazemos um passo-a-passo desde a criação até a execução de soluções para Big Data com Amazon EMR.
O AWS Database Migration Service ajuda você a migrar bancos de dados para a AWS de modo fácil e seguro. O banco de dados de origem permanece totalmente operacional durante a migração, minimizando períodos de inatividade para aplicativos que dependem do banco de dados.
Aprenda como gigantes do comércio eletrônico brasileiro como Magazine Luiza, Dafiti e Kanui já se beneficiam da escalabilidade, agilidade e segurança dos serviços da Amazon Web Services sem que precisem adivinhar a capacidade necessária para a BlackFriday, além de pagarem somente pelo uso.
What’s new in Amazon Aurora - ADB204 - São Paulo AWS SummitAmazon Web Services
Fully compatible with MySQL and PostgreSQL, Amazon Aurora offers the speed, reliability, and availability of commercial databases at one-tenth the cost. Aurora takes away all the stress of running your own database, managing your data in a fully referenced, self-healing storage system. But to get the most out of it, you’ll want to keep up with all the changes and improvements implemented in the last few months. This session provides an overview of Aurora, explores recently announced features—such as Serverless, Multi-Master, and Performance Insights—and helps you get started.
O Elastic Cache é um serviço de cache avançado que voce pode usar nas suas aplicações que estão na nuvem da AWS. Apresentamos aqui os seus conceitos básicos e modos de uso.
AWS Meetup Rio - Qual banco usar e quando?Pedro Pisa
Nestra palestra, realizada no dia 30/08/2016, no Senac-RJ, apresentei as principais soluções de bancos de dados disponíveis na AWS e as diferenças entre elas, bem como alguns casos de uso sugeridos para cada um.
Replicação multi-master, sincronização filtrada e transformação com SymmetricDSCesar Romero
Como configurar o SymmetricDS para replicação multi-master de bancos de dados de diferentes fornecedores e sistemas de arquivos.
A adoção do SymmetricDS como ferramenta de replicação representou um caso de sucesso que merece ser compartilhado com a comunidade, esta ferramenta OpenSource desenvolvida em Java provou ser uma das melhores disponíveis e eliminou a necessidade de desenvolvimento de ferramentas de replicação de dados para diferentes projetos. Além da replicação de bancos de dados, ela suporta a replicação multi-master de vários níveis entre até mais de 20 bancos de dados diferentes e de arquivos até mesmo no Android.
"Varios clientes estão migrando suas aplicações analíticas, processamento de dados (ETL) e aplicações de data science rodando com Apache Hadoop, Spark e data warehouse a partir de ambientes em datacenter local para o Amazon EMR com o objetivo de economia, maior disponibilidade e melhoria de desempenho.
Amazon EMR é um serviço gerenciado que permite com que você analise uma quantidade imensa de dados usando as ultimas versões de mais de 15 ferramentas open-source presentes no ecossistema Apache Hadoop e Spark. Essa sessão permitirá idenficar os componentes, aplicações e tarefas presentes no seu atual ambiente e demonstrar as melhores práticas para migrar esses componentes para o Amazon EMR. Nos iremos expliar como mover seus HDFS para o Amazon S3, um serviço de armazenamento altamente durável e como os baixos custos de instâncias EC2 Spot e auto-scaling podem ajudá-lo a ter mais eficiência com baixo custo. Também iremos explicar os fundamentos de segurança e dicas de ajustes para acelerar a migração de sua aplicação de produção."
https://aws.amazon.com/pt/emr/
O Amazon EMR - Elastic Map Reduce, é uma solução gerenciada que oferece clusters Hadoop prontos para usar. Se voce quer experimentar com Big Data, a hora é agora. Nesta apresentação fazemos um passo-a-passo desde a criação até a execução de soluções para Big Data com Amazon EMR.
O AWS Database Migration Service ajuda você a migrar bancos de dados para a AWS de modo fácil e seguro. O banco de dados de origem permanece totalmente operacional durante a migração, minimizando períodos de inatividade para aplicativos que dependem do banco de dados.
Aprenda como gigantes do comércio eletrônico brasileiro como Magazine Luiza, Dafiti e Kanui já se beneficiam da escalabilidade, agilidade e segurança dos serviços da Amazon Web Services sem que precisem adivinhar a capacidade necessária para a BlackFriday, além de pagarem somente pelo uso.
What’s new in Amazon Aurora - ADB204 - São Paulo AWS SummitAmazon Web Services
Fully compatible with MySQL and PostgreSQL, Amazon Aurora offers the speed, reliability, and availability of commercial databases at one-tenth the cost. Aurora takes away all the stress of running your own database, managing your data in a fully referenced, self-healing storage system. But to get the most out of it, you’ll want to keep up with all the changes and improvements implemented in the last few months. This session provides an overview of Aurora, explores recently announced features—such as Serverless, Multi-Master, and Performance Insights—and helps you get started.
O Elastic Cache é um serviço de cache avançado que voce pode usar nas suas aplicações que estão na nuvem da AWS. Apresentamos aqui os seus conceitos básicos e modos de uso.
2. Amazon Redshift
Tópicos
Data Lake
Amazon Redshift
Visão geral da arquitetura
Arquitetura do cluster
A abordagem colunar
Distkey, Sortkey e Tunning
Spectrum
Um caso de uso
Tópicos relevantes
Perguntas frequentes
3. Amazon Redshift
Data Lake
Um Data Lake é um repositório centralizado que permite
armazenar [todos ?] os dados estruturados e não
estruturados em qualquer[?] escala e consumi-los em
diferentes tipos de análise ou ferramentas - de painéis e
visualizações a processamento de big data, análise em
tempo real e aprendizado de máquina para orientar
melhores decisões
4. Amazon Redshift
Data Lake
• Dados estruturados
• Dados semi ou não estruturados
• csv, txt, pdf
• Vídeo
• Som
• Imagem
6. Amazon Redshift
Redshift
O Amazon Redshift é um data warehouse rápido e
gerenciável que torna simples e econômica a análise de
todos os seus dados usando ferramentas SQL padrão e
ferramentas de Business Intelligence.
Ele permite executar consultas analíticas complexas em
petabytes de dados estruturados usando otimização
sofisticada de querys, armazenamento colunar de alta
performance e execução maciçamente paralela de
consultas
7. Amazon Redshift
Redshift
:: Características importantes ::O Amazon Redshift é um data warehouse rápido e
gerenciável que torna simples e econômica a análise de
todos os seus dados usando ferramentas SQL padrão e
ferramentas de Business Intelligence.
Ele permite executar consultas analíticas complexas em
petabytes de dados estruturados usando otimização
sofisticada de querys, armazenamento colunar de alta
performance e execução maciçamente paralela de
consultas
10. Amazon Redshift
Redimensionamento Elástico (Elastic Resize)
O Redshift atualiza o snapshot no S3 com os dados
mais recentes
Novos nós são adicionados (scaling up) ou removidos
(scaling down) durante esse período
O cluster está disponível para queries de leitura e
escrita. Queries que estão em espera são alocadas
em uma fila automaticamente
Importante
As opções do Elastic Resize dependem do tipo de nó
12. Amazon Redshift
Distkey e Tipos de Distribuição
Distribuição uniforme
Otimização de joins
Otimização de agregações
Tabelas medias ou
pequenas (<2-3mb)
(ex. Dimensões)
Quando não conseguimos
definir uma distribuição
adequada
O Amazon Redshift distribui os registros em todo o
cluster de acordo com o estilo de distribuição e com
base no valor da coluna DISTKEY, que
apropriadamente coloca uma quantidade semelhante
de linhas em cada fatia do nó.
Se não encontramos a coluna mais apropriada para
distribuição, podemos ‘simular’ a partir de uma coluna
de data, por exemplo:
(concat('1',to_char(dt_pedido,'YYDDD')))::int
Neste caso, pega a data do pedido e converte para o
format Gregoriano
13. Amazon Redshift
A abordagem colunar
Maiores informações em
https://docs.aws.amazon.com/pt_br/redshift/latest/dg/c_columnar_storage_disk_mem_mgmnt.html
14. Amazon Redshift
Zone Maps
(A)
select count(1)
from order_items
where placed_at between '2018-1-1'
and '2019-1-1'
(B)
select
blocknum as block,
minvalue as min,
maxvalue as max
from stv_blocklist, stv_tbl_perm
where stv_blocklist.tbl = stv_tbl_perm.id
and stv_blocklist.slice = stv_tbl_perm.slice
and stv_tbl_perm.name = 'order_items'
and stv_blocklist.col = 1 /* placed_at */
order by blocknum
15. Amazon Redshift
Sortkeys
O Amazon Redshift armazena os dados no cluster de acordo com a chave de classificação definida em cada tabela e o
otimizador de consultas usa esta ordenação para determinar o melhor plano de execução.
Se Sortkey for definido em nível de tabela, o número máximo de colunas permitidas é 400.
Melhores práticas para definição de uma Sortkey:
1. Se dados recentes forem consultados com frequência, considere utilizar uma coluna timestamp como chave principal
2. Se uma coluna for usada com frequência em clausulas where, considere utilizar essa coluna na Sortkey
3. Colunas frequentemente utilizadas em "join" podem ser boas candidatas a Sortkey
Maiores informações em
https://aws.amazon.com/pt/blogs/big-data/amazon-redshift-engineerings-advanced-table-design-playbook-compound-and-interleaved-sort-keys/
16. Amazon Redshift
Sortkeys
Tipos de Sortkey
Compound: Formada por todas as colunas definidas na Sortkey.
Chaves de classificação compostas tendem a acelerar “joins”,
operações de agregação e “order by” ou funções de janela que
utilizem “partition by”
Interleaved: Aplica peso igual a todas as colunas da chave.
Contudo, tem um alto custo de manutenção e pode comprometer o
desempenho em consultas onde não utilizamos todas as colunas
na clausula “where”. Portanto, usemos com cuidado.
17. Amazon Redshift
Tunning
Analyze <type> <Table> Atualiza as estatísticas da tabela
Ex: analyze [compression] us_experimento.sales;
Vaccum (Recuperação de blocos e reordenação)
Vacuum full <tabela>
vacuum delete <tabela> : limpeza física de registros deletados
Vacuum sort only <tabela> : reorganização de sortkeys
** Considere a criação de um script que faça Vacuum (delete|sort only) e Analyze em períodos de pouca
utilização do BD. Em nossa arquitetura, criamos um script que executa Vacuum e Analyze para todas as
DIMENSÕES, iniciando quando a última tabela é atualizada (na madrugada).
Importante: Isso não é uma regra e pode se adequar para cada ambiente
18. Amazon Redshift
Tunning
Exemplo: Analisando a compressão da tabela RS_ORDERS
Note o encode das colunas na criação da tabela
Resultado do analyze
% aproximado de ganho de compactação
19. Amazon Redshift
Tunning
Exemplo: Analisando a compressão da tabela RS_ORDERS
Recriação da tabela com o encode sugerido pelo analyze
Resultado do analyze após recriar a tabela
Note o % estimado redução. Próximo de 0 indica que está com o
encode adequado
20. Amazon Redshift
Tunning select i.schema as schema_location,
i.table as table_name,
i.encoded as are_columns_encoded,
i.diststyle as distyle_and_key,
i.sortkey1 as first_sortkey,
i.sortkey1_enc as sortkey_compression,
i.sortkey_num as no_sort_keys,
i.skew_sortkey1 as sortkey_skew_ratio,
i.size as size_in_blocks_mb,
i.tbl_rows as total_rows,
i.skew_rows as row_skew_ratio,
i.pct_used as percent_space_used,
i.unsorted as percent_unsorted,
i.stats_off as stats_needed
from svv_table_info i
where i.schema = '<schemaname>'
and i.table = '<tablename>'
21. Amazon Redshift
Ainda sobre Tunning
WLM – Work Load Management (Filas de execução)
Atua na coordenação da concorrência de execução das consultas
e a respectiva priorização
22. Amazon Redshift
Ainda sobre Tunning
WLM – Work Load Management (Filas de execução)
Exemplo de filas
Fila 1 com 60% de recursos do cluster para o grupo Tableau
File 2 com 40% de recursos do cluster para o grupo Dev
23. Amazon Redshift
Tunning
Resumo
• COPY (analisa e compacta tabelas automaticamente )
• DISTKEY e SORTKEY influenciam o desempenho
• DISTKEY “ruim” induz cargas de trabalho desequilibradas (Skew)
• Atenção no uso das chave de classificação (SORTKEY)
(Alguns) Tipos de Compactação de colunas
• Raw Encoding
• Zstandard (ZSTD) Encoding
• Byte-Dictionary Encoding
• LZO Encoding
Pontos chave
• Desenho de tabelas
• Tamanho e tipo de dado (Coluna)
• Tipo de compactação (encoding)
• Seleção de Distkey
• Seleção de Sortkey
• Execução de Vacuum
• Execução de Analyze
24. Amazon Redshift
O comando Copy
Carrega dados para uma tabela do Redshift a partir de arquivos
localizados em um bucket do Amazon S3. O comando COPY
espera que os dados de origem estejam em arquivos de
texto UTF-8 delimitados por um caractere. O delimitador
padrão é um caractere de pipe ( | )
Maiores informações em
https://docs.aws.amazon.com/pt_br/redshift/latest/dg/r_COPY.html
copy
orders from 's3://redshift-immersionday-labs/data/orders/orders.tbl'
iam_role 'arn:aws:iam::[Your-AWS_Account_Id]:role/[Your-Redshift-Role]'
region 'us-west-2' lzop delimiter '|' COMPUPDATE PRESET;
25. Amazon Redshift
O comando Copy
Maiores informações em
https://docs.aws.amazon.com/pt_br/redshift/latest/dg/r_COPY.html
copy
orders from 's3://redshift-immersionday-labs/data/orders/orders.tbl'
iam_role 'arn:aws:iam::[Your-AWS_Account_Id]:role/[Your-Redshift-Role]'
region 'us-west-2' lzop delimiter '|' COMPUPDATE PRESET;
Execute o este SQL para
ver os erros gerados a partir de um COPY
select *
from stl_load_errors
where starttime >= <data_inicial>
and starttime <= <data_final>
order by starttime desc
Carrega dados para uma tabela do Redshift a partir de arquivos
localizados em um bucket do Amazon S3. O comando COPY
espera que os dados de origem estejam em arquivos de
texto UTF-8 delimitados por um caractere. O delimitador
padrão é um caractere de pipe ( | )
26. Amazon Redshift
Spectrum
O Redshift Spectrum simplifica o processo de exploração
de arquivos estruturados e semiestruturados (dados
externos) armazenados no S3.
A partir do Spectrum é possível “rodar” consultas SQL
contra arquivos no S3 como se estes fossem tabelas em
um banco de dados
Maiores informações em
https://docs.aws.amazon.com/pt_br/redshift/latest/dg/c-using-spectrum.html#c-spectrum-overview
27. Amazon Redshift
Spectrum
Ex. Executar um SUM
1. Select sum(<coluna>)
from s3.tabela
1. Query compilada pelo leader
node
2. Plano de execução é enviado
aos nós de computação
3. Nós obtém as partições dos
dados a partir do catálogo de
dados
4. Nós enviam requests para o
engine do Spectrum
5. Spectrum escaneia o S3
31. Amazon Redshift
Perguntas frequentes
1) select current_time,
c.relname,
l.database,
l.transaction,
l.pid,
a.usename,
l.mode,
l.granted,
'SELECT pg_terminate_backend('||l.pid ||')'
from pg_locks l
join pg_catalog.pg_class c ON c.oid = l.relation
join pg_catalog.pg_stat_activity a ON a.procpid = l.pid
where l.pid <> pg_backend_pid();
2) SELECT pg_terminate_backend(<PID>);
32. Amazon Redshift
Perguntas frequentes
unload ('
select [coluna-1],
[coluna-2],
[coluna-N]
from tabela'
)
to 's3://datalake/temporarios/tabela.csv'
iam_role 'arn:aws:iam::123456789000:role/Redshift-DL-01'
delimiter as ';'
parallel off
header;
33. Amazon Redshift
João G. Gutheil
Coordenador de BI -Arezzo&Co
Vice-Coordenador do Grupo de Usuários de BI - GUBI - Sucesu/RS
Espec. em Gestão do Conhecimento e Int. Estratégica – UCS
joao.gutheil@arezzo.com.br
jgutheil@gmail.com
https://www.linkedin.com/in/joaogutheil/