SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Amazon Redshift
jgutheil@gmail.com
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
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
Amazon Redshift
Data Lake
• Dados estruturados
• Dados semi ou não estruturados
• csv, txt, pdf
• Vídeo
• Som
• Imagem
Amazon Redshift
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
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
Amazon Redshift
Visão geral da arquitetura
Amazon Redshift
Arquitetura do Cluster
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ó
Amazon Redshift
Redimensionamento Elástico (Elastic Resize)
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
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
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
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/
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.
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
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
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
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>'
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
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
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
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;
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 ( | )
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
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
Amazon Redshift
Caso de uso – Arezzo&Co
Amazon Redshift
Caso de uso – Arezzo&Co
Visão simplificada da arquitetura
Amazon Redshift
Tópicos relevantes
https://docs.aws.amazon.com/pt_br/redshift/latest/dg/r_CREATE_TABLE_usage.htm/l
https://docs.aws.amazon.com/pt_br/redshift/latest/dg/access-advisor.html
https://www.sqlhammer.com/amazon-redshift-temporary-tables/
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>);
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;
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/

Mais conteúdo relacionado

Semelhante a Amazon Redshift

AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?Pedro Pisa
 
Hive vs impala vs spark - tuning
Hive vs impala vs spark - tuningHive vs impala vs spark - tuning
Hive vs impala vs spark - tuningTiago Simões
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandraRichiely Paiva
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29Juliana Nascimento
 
Replicação multi-master, sincronização filtrada e transformação com SymmetricDS
Replicação multi-master, sincronização filtrada e transformação com SymmetricDSReplicação multi-master, sincronização filtrada e transformação com SymmetricDS
Replicação multi-master, sincronização filtrada e transformação com SymmetricDSCesar Romero
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Amazon Web Services LATAM
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRAmazon Web Services LATAM
 
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon emr   cluster hadoop pronto para usar na nuvem awsAmazon emr   cluster hadoop pronto para usar na nuvem aws
Amazon emr cluster hadoop pronto para usar na nuvem awsAmazon Web Services LATAM
 
Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceAmazon Web Services LATAM
 
Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemAmazon Web Services LATAM
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandosrobinhoct
 
Construindo um Data Warehouse moderno com Amazon Redshift
Construindo um Data Warehouse moderno com Amazon RedshiftConstruindo um Data Warehouse moderno com Amazon Redshift
Construindo um Data Warehouse moderno com Amazon RedshiftAmazon Web Services LATAM
 
What’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
What’s new in Amazon Aurora - ADB204 - São Paulo AWS SummitWhat’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
What’s new in Amazon Aurora - ADB204 - São Paulo AWS SummitAmazon Web Services
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancadoAmazon Web Services LATAM
 

Semelhante a Amazon Redshift (20)

AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?
 
Hive vs impala vs spark - tuning
Hive vs impala vs spark - tuningHive vs impala vs spark - tuning
Hive vs impala vs spark - tuning
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandra
 
Começando com Amazon Redshift
Começando com Amazon RedshiftComeçando com Amazon Redshift
Começando com Amazon Redshift
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
Replicação multi-master, sincronização filtrada e transformação com SymmetricDS
Replicação multi-master, sincronização filtrada e transformação com SymmetricDSReplicação multi-master, sincronização filtrada e transformação com SymmetricDS
Replicação multi-master, sincronização filtrada e transformação com SymmetricDS
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMR
 
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon emr   cluster hadoop pronto para usar na nuvem awsAmazon emr   cluster hadoop pronto para usar na nuvem aws
Amazon emr cluster hadoop pronto para usar na nuvem aws
 
Introdução ao AWS Database Migration Service
Introdução ao AWS Database Migration ServiceIntrodução ao AWS Database Migration Service
Introdução ao AWS Database Migration Service
 
Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvem
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandos
 
Construindo um Data Warehouse moderno com Amazon Redshift
Construindo um Data Warehouse moderno com Amazon RedshiftConstruindo um Data Warehouse moderno com Amazon Redshift
Construindo um Data Warehouse moderno com Amazon Redshift
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 
What’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
What’s new in Amazon Aurora - ADB204 - São Paulo AWS SummitWhat’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
What’s new in Amazon Aurora - ADB204 - São Paulo AWS Summit
 
Apostila basica sql
Apostila basica sqlApostila basica sql
Apostila basica sql
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 

Amazon Redshift

  • 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
  • 28. Amazon Redshift Caso de uso – Arezzo&Co
  • 29. Amazon Redshift Caso de uso – Arezzo&Co Visão simplificada da arquitetura
  • 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/