

# PERF04-BP04 Escolher armazenamento de dados com base nos padrões de acesso
<a name="perf_right_database_solution_access_patterns"></a>

 Use os padrões de acesso da carga de trabalho para decidir que serviços e tecnologias usar. Além dos requisitos não funcionais, como performance e escala, os padrões de acesso influenciam fortemente a escolha das soluções de banco de dados e de armazenamento. A primeira dimensão é a necessidade de transações, conformidade com ACID e leituras consistentes. Nem todo banco de dados é compatível com isso, e a maioria dos bancos de dados NoSQL fornecem um modelo de consistência eventual. A segunda importante dimensão seria a distribuição de gravações e leituras ao longo do tempo e do espaço. As aplicações distribuídas globalmente precisam considerar os requisitos de padrões de tráfego, de latência e de acesso para identificar a solução ideal de armazenamento. O terceiro aspecto essencial a considerar é a flexibilidade dos padrões de consultas, os padrões de acesso aleatório e as consultas de uma única vez. Considerações relativas à funcionalidade de consultas altamente especializadas para processamento de texto e de linguagem natural, às séries temporais e aos grafos também devem ser avaliadas. 

 **Resultado desejado:** O armazenamento de dados foi selecionado com base nos padrões de acesso aos dados identificados e documentados. Isso pode incluir as consulta mais comuns de leitura, gravação e exclusão, as necessidades de cálculos e agregações ad-hoc, a complexidade dos dados, a interdependência dos dados e a consistência exigida. 

 **Antipadrões comuns:** 
+  Você só seleciona um fornecedor de banco de dados para simplificar o gerenciamento de operações. 
+  Você pressupõe que os padrões de acesso aos dados permanecerão consistentes ao longo do tempo. 
+  Você implementa transações complexas, reversão e lógica de consistência na aplicação. 
+  O banco de dados está configurado para ser compatível com alta expansão potencial de tráfego, o que faz com que os recursos do banco de dados fiquem ociosos a maior parte do tempo. 
+  O uso de um banco de dados compartilhado para usos transacionais e analíticos. 

 **Benefícios do estabelecimento desta prática recomendada:** A seleção e a otimização do armazenamento de dados com base em padrões de acesso ajuda a reduzir a complexidade do desenvolvimento e a otimizar as oportunidades de performance. A compreensão de quando usar réplicas de leitura, tabelas globais e armazenamento em cache ajuda a reduzir a sobrecarga operacional e a escalar com base nas necessidades da workload. 

 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Médio 

## Orientações para a implementação
<a name="implementation-guidance"></a>

 Identifique e avalie o padrão de acesso aos dados para selecionar a configuração correta do armazenamento. Cada solução de banco de dados tem opções para configurar e otimizar sua solução de armazenamento. Use as métricas e os logs coletados e experimente com opções para encontrar a configuração ideal. Use a tabela a seguir para analisar as opções de armazenamento por serviço de banco de dados. 


|  Serviços da AWS  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Escalabilidade de armazenamento.  |  A opção de escalabilidade automática de armazenamento disponível para escalar automaticamente IOPS provisionadas de armazenamento também pode ser usada independentemente do armazenamento provisionado ao utilizar tipos de IOPs provisionadas de armazenamento.  |  Escala automaticamente. As tabelas não são restringidas em termos de tamanho.  |  A opção de escalabilidade automática de armazenamento disponível escala o armazenamento provisionado.  |  O armazenamento é na memória, vinculado ao tipo ou à contagem de instâncias.  |  A opção de escalabilidade automática de armazenamento disponível para escalar automaticamente o armazenamento provisionado.  |  Configura o período de retenção para camadas na memória e magnéticas em dias.  |  Aumenta verticalmente e reduz horizontalmente a escala do armazenamento de tabelas automaticamente.  |  Escala automaticamente. As tabelas não são restringidas em termos de tamanho.  | 

 

 **Etapas da implementação:** 

1.  Identifique e documente o crescimento antecipado dos dados e do tráfego. 

   1.  O Amazon RDS e o Aurora são compatíveis com o aumento da escala vertical automática até os limites documentados. Além disso, considere fazer a transição de dados mais antigos para arquivamento do Amazon S3, agregando dados históricos para análise ou escalando horizontalmente por meio de fragmentação. 

   1.  O DynamoDB e o Amazon S3 escalam até o volume de armazenamento quase ilimitado automaticamente. 

   1.  As instâncias e os bancos de dados do Amazon RDS em execução no EC2 podem ser redimensionados manualmente, e as instâncias do EC2 podem ter novos volumes do EBS adicionados posteriormente para armazenamento adicional.  

   1.  Os tipos de instância podem ser alterados com base nas alterações nas atividades. Por exemplo, é possível iniciar com uma instância menor para teste e escalar a instância quando o tráfego de produção começar a ser recebido no serviço. O Aurora Serverless V2 reduz a escala horizontalmente automaticamente em resposta a alterações na carga.  

1.  Documente os requisitos de performance em condições normais e em picos (transações por segundo (TPS) e consultas por segundo (QPS)) e de consistência (consistência ACID e eventual). 

1.  Documente os aspectos da implantação da solução e os requisitos de acesso ao banco de dados (global, Multi-AZ, replicação de leitura, vários nós de gravação). 

 **Nível de esforço para o plano de implementação: **Se você não tiver logs ou métricas para a solução de gerenciamento dos dados, será necessário realizar isso para identificar e documentar os padrões de acesso aos seus dados. Depois que o padrão de acesso aos dados for compreendido, o nível de esforço para selecionar e configurar o armazenamento dos seus dados é *baixo* . 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+ [ Armazenamento em cache de banco de dados da AWS](https://aws.amazon.com/caching/database-caching/)
+ [10 melhores dicas de desempenho do Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+ [Práticas recomendadas do Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+ [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/) 
+ [Melhores práticas do Amazon DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Práticas recomendadas do Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Performance do Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [Bancos de dados em nuvem com a AWS](https://aws.amazon.com/products/databases/)
+  [Tipos de armazenamento do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 

 **Vídeos relacionados:** 
+ [AWS purpose-built databases (DAT209-L) (Bancos de dados com propósito específico da AWS (DAT209-L))](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works (DAT309-R) (Armazenamento desmistificado do Amazon Aurora: Como tudo funciona (DAT309-R)) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [ Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Exemplos relacionados:** 
+  [Experimentar e testar com testes de carga distribuída na AWS](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 