

# 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 workload e requisitos das aplicações para decidir sobre serviços de dados e tecnologias ideais a serem usadas. 

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

 **Antipadrões comuns:** 
+ Você só seleciona um mecanismo 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 fins 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, particionamento de dados e armazenamento em cache ajuda a reduzir a sobrecarga operacional e a escalar com base nas necessidades da workload. 

 **Nível de risco exposto se esta prática recomendada não é 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.


|  AWS Services  |  Amazon RDS  |  Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Scaling Storage  | Storage can be scaled up manually or configured to scale automatically to a maximum of 64 TiB based on engine types. Provisioned storage cannot be decreased. |  Storage scales automatically up to maximum of 128 TiB and decreases when data is removed. Maximum storage size also depends upon specific Aurora MySQL or Aurora Postgres engine versions.  | Storage automatically scales. Tables are unconstrained in terms of size. | Storage scales automatically up to maximum of 64 TiB. Starting Amazon DocumentDB 4.0 storage can decrease by comparable amounts for data removal through dropping a collection or index. With Amazon DocumentDB 3.6 allocated space remains same and free space is reused when data volume increases. |  Storage is in-memory, tied to instance type or count.  |  Storage scales automatically can grow up to 128 TiB (or 64 TiB in few Regions). Upon data removal from, total allocated space remains same and is reused in the future.  | Organizes your time series data to optimize query processing and reduce storage costs. Retention period can be configured through in-memory and magnetic tiers. | Scales table storage up and down automatically as your application writes, updates, and deletes data. | Storage automatically scales. Tables are unconstrained in terms of size. | 

 

 **Etapas da implementação:** 

1.  Entenda os requisitos das transações, a conformidade de atomicidade, consistência, isolamento e durabilidade (ACID) e as leituras consistentes. Nem todo banco de dados é compatível com isso e a maioria dos bancos de dados NoSQL fornece um modelo de consistência eventual. 

1.  Considere os padrões de tráfego, a latência e os requisitos de acesso para uma aplicação distribuída globalmente a fim de identificar a solução de armazenamento ideal. 

1.  Analise padrões de consulta, padrões de acesso aleatório e consultas únicas. Considerações relativas à funcionalidade de consultas altamente especializadas para processamento de texto e de linguagem natural, às séries temporais e aos gráficos também devem ser avaliadas. 

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 automático da escala vertical até os limites documentados. Além disso, considere fazer a transição de dados mais antigos ao Amazon S3 para arquivamento, agregando dados históricos para análise ou escalando horizontalmente por meio de fragmentação. 

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

   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. Os requisitos base 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 (como replicação global, Multi-AZ, replicação de leitura e vários nós de gravação). 

 **Nível de esforço do plano de implementação:** baixo. 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:** 
+ [ Bancos de dados em nuvem com a AWS](https://aws.amazon.com/products/databases/)
+ [ Trabalhar com armazenamento para instâncias de banco de dados do Amazon RDS ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html)
+ [ Armazenamento do Amazon DocumentDB ](https://docs.aws.amazon.com/documentdb/latest/developerguide/how-it-works.html#how-it-works.storage)
+ [ Armazenamento em cache de banco de dados da AWS](https://aws.amazon.com/caching/database-caching/)
+ [ Armazenamento do Amazon Timestream ](https://docs.aws.amazon.com/timestream/latest/developerguide/storage.html)
+ [ Armazenamento no Amazon Keyspaces ](https://docs.aws.amazon.com/keyspaces/latest/devguide/Storage.html)
+ [ Perguntas frequentes do Amazon ElastiCache ](https://aws.amazon.com/elasticache/faqs/)
+ [ Armazenamento, confiabilidade e disponibilidade do Amazon Neptune ](https://docs.aws.amazon.com/neptune/latest/userguide/feature-overview-storage.html)
+ [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/) 
+ [Práticas recomendadas do Amazon DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [ Tipos de armazenamento do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 
+ [ Especificações de hardware para classes de instâncias do Amazon RDS ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#Concepts.DBInstanceClass.Types)
+ [ Limites de armazenamento do Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Limits.html#RDS_Limits.FileSize.Aurora)

 **Vídeos relacionados:** 
+ [ Banco de dados com propósito específico da AWS (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [ Armazenamento desmistificado do Amazon Aurora: como tudo funciona (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [ Análise minuciosa do Amazon DynamoDB: padrões de design avançados (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

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