

# PERF 4  Como você seleciona sua solução de banco de dados?
<a name="w2aac19c11b5c11"></a>

 A solução de banco de dados ideal para um sistema varia conforme os requisitos de disponibilidade, consistência, tolerância da partição, latência, durabilidade, escalabilidade e capacidade de consulta. Muitos sistemas usam soluções de banco de dados diferentes para vários subsistemas e habilitam diferentes recursos para melhorar a performance. A seleção da solução e dos recursos de banco de dados incorretos para um sistema pode levar a uma menor performance do sistema. 

**Topics**
+ [PERF04-BP01 Compreender as características dos dados](perf_right_database_solution_understand_char.md)
+ [PERF04-BP02 Avaliar as opções disponíveis](perf_right_database_solution_evaluate_options.md)
+ [PERF04-BP03 Coletar e registrar métricas de performance do banco de dados](perf_right_database_solution_collect_metrics.md)
+ [PERF04-BP04 Escolher armazenamento de dados com base nos padrões de acesso](perf_right_database_solution_access_patterns.md)
+ [PERF04-BP05 Otimizar o armazenamento de dados com base nas métricas e nos padrões de acesso](perf_right_database_solution_optimize_metrics.md)

# PERF04-BP01 Compreender as características dos dados
<a name="perf_right_database_solution_understand_char"></a>

 Escolha soluções para o gerenciamento dos seus dados que correspondam de forma ideal às características, aos padrões de acesso e aos requisitos dos conjuntos de dados de sua workload. Ao selecionar e implementar uma solução de gerenciamento de dados, verifique se as características de consultas, de escalabilidade e de armazenamento são compatíveis com os requisitos dos dados da workload. Saiba como as várias opções de bancos de dados correspondem aos seus modelos de dados e quais opções de configuração são mais adequadas para seu caso de uso.  

 A AWS fornece vários mecanismos de banco de dados, incluindo bancos de dados relacionais, de chave-valor, de documentos, na memória, de grafos, de séries temporais e de ledger. Cada solução de gerenciamento de dados tem opções e configurações disponíveis para compatibilidade com seus casos de uso e modelos de dados. Sua workload deve poder usar várias soluções de banco de dados diferentes, baseadas nas características dos dados. Ao selecionar as melhores soluções de banco de dados para um problema específico, você pode se libertar de bancos de dados monolíticos, com a abordagem de tamanho único que é restritiva, e focar no gerenciamento de dados para atender às necessidades dos seus clientes. 

 **Resultado desejado:** As características dos dados da workload são documentadas com detalhes suficientes para facilitar a seleção e a configuração de soluções de banco de dados compatíveis e para fornecer insight das possíveis alternativas. 

 **Antipadrões comuns:** 
+  Não considerar maneiras para segmentar grandes conjuntos de dados em coleções de dados menores que têm características semelhantes, o que resulta na perda das oportunidades de usar bancos de dados com propósito específico que correspondem melhor às características dos dados e do crescimento. 
+  Não identificar os padrões de acesso aos dados no início, o que resulta em retrabalho caro e complexo posteriormente. 
+  Limitar o crescimento usando estratégias de armazenamento de dados que não são dimensionáveis tão rapidamente quanto necessário. 
+  Escolher um tipo de banco de dados para todas as workloads. 
+  Fixar-se em uma única solução de banco de dados porque há experiência e conhecimento internos de um tipo específico de solução de banco de dados. 
+  Manter uma solução de banco de dados porque ela funciona bem em um ambiente on-premises. 

 **Benefícios do estabelecimento desta prática recomendada:** Familiarize-se com todas as soluções de banco de dados da AWS para poder determinar a solução de banco de dados correta para as diversas workloads. Depois de selecionar a solução de banco de dados adequada para a sua workload, você poderá experimentar rapidamente cada uma dessas ofertas de banco de dados para determinar se elas continuam atendendo às necessidades da sua workload. 

 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Alto 
+  A economia de custo possível pode não ser identificada. 
+  Os dados podem não estar protegidos no nível necessário. 
+  O acesso aos dados e a performance do armazenamento podem não ser ideais. 

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

 Defina as características dos dados e os padrões de acesso da workload. Analise todas as soluções de banco de dados disponíveis para identificar a solução que é compatível com as necessidades dos seus dados. Em uma determinada workload, vários bancos de dados podem ser selecionados. Avalie cada serviço ou grupo de serviços e analise-os individualmente. Se soluções alternativas possíveis de gerenciamento de dados forem identificadas para todos ou para parte dos dados, experimente com implementações alternativas que possam desvendar benefícios de custo, segurança, performance e confiabilidade. Atualize a documentação existente caso uma nova abordagem de gerenciamento de dados seja adotada. 


|  **Tipo**  |  **Serviços da AWS**  |  **Características principais**  |  **Casos de uso comuns**  | 
| --- | --- | --- | --- | 
|  Relacional  |  Amazon RDS, Amazon Aurora  |  Integridade referencial, transações ACID, esquema para gravação  |  ERP, CRM, software comercial pronto para uso  | 
|  Chave-valor  |  Amazon DynamoDB  |  Throughput alto, baixa latência, escalabilidade quase infinita  |  Carrinhos de compras (comércio eletrônico), catálogos de produtos, aplicações de chat  | 
|  Documentos  |  Amazon DocumentDB  |  Armazenar documentos JSON e consultar por qualquer atributo  |  Gerenciamento de conteúdo (CMS), perfis de clientes, aplicações móveis  | 
|  Na memória  |  Amazon ElastiCache, Amazon MemoryDB  |  Latência de microssegundos  |  Armazenamento em cache, placares de jogos  | 
|  Bancos de dados  |  Amazon Neptune  |  Dados altamente relacionais em que os relacionamentos entre os dados têm significado  |  Redes sociais, mecanismos de personalização, detecção de fraudes  | 
|  Séries temporais  |  Amazon Timestream  |  Dados em que a dimensão primária é o tempo  |  DevOps, IoT, monitoramento  | 
|  Coluna ampla  |  Amazon Keyspaces  |  Workloads do Cassandra.  |  Manutenção de equipamentos industriais, otimização de rotas  | 
|  Ledger  |  Amazon QLDB  |  Ledger de alterações imutável e verificável de forma criptográfica  |  Sistemas de registro, saúde, cadeias de suprimentos, instituições financeiras  | 

 **Etapas da implementação** 

1.  Como os dados estão estruturados? (por exemplo, não estruturados, chave-valor, semiestruturados, relacionais) 

   1.  Se os dados estiverem estruturados, considere um armazenamento de objetos, como o [Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) , ou um banco de dados NoSQL, como o [Amazon DocumentDB.](https://aws.amazon.com/documentdb/) 

   1.  Para dados de chave-valor, considere o [DynamoDB](https://aws.amazon.com/documentdb/), [o ElastiCache for Redis](https://aws.amazon.com/elasticache/redis/) ou [o MemoryDB.](https://aws.amazon.com/memorydb/) 

   1.  Se os dados tiverem uma estrutura relacional, qual nível de integridade referencial é necessário? 

      1.  Para restrições de chave estrangeira, bancos de dados relacionais, como o [Amazon RDS](https://aws.amazon.com/rds/) e [Aurora](https://aws.amazon.com/rds/aurora/) , podem fornecer esse nível de integridade. 

      1.  Normalmente, em um modelo de dados NoSQL, você desnormalizaria os dados em um único documento ou coleção de documentos para serem recuperados em uma única solicitação e não fazendo junção entre documentos ou tabelas;  

1.  A conformidade com as ACID (atomicidade, consistência, isolamento, durabilidade) é necessária? 

   1.  Se as propriedades ACID associadas aos bancos de dados relacionais forem necessárias, considere um banco de dados relacional, como o [Amazon RDS](https://aws.amazon.com/rds/) e [o Aurora.](https://aws.amazon.com/rds/aurora/) 

1.  Qual é o modelo de consistência necessário? 

   1.  Se a sua aplicação puder tolerar consistência eventual, considere uma implementação NoSQL. Analise as outras características para ajudar a escolher qual [banco de dados NoSQL](https://aws.amazon.com/nosql/) é mais adequado. 

   1.  Se for necessária forte consistência, use leituras altamente consistentes com o [DynamoDB](https://aws.amazon.com/documentdb/) ou um banco de dados relacional, como o [Amazon RDS](https://aws.amazon.com/rds/). 

1.  Quais formatos de consulta e resultado são compatíveis? (por exemplo, SQL, CSV, Parque, Avro, JSON etc.) 

1.  Quais tipos de dados, tamanhos de campos e quantidades gerais estão presentes? (por exemplo, texto, numérico, espacial, séries temporais calculadas, binário ou blob, documento) 

1.  Como as necessidades de armazenamento serão alteradas ao longo do tempo? Como isso afeta a escalabilidade? 

   1.  Bancos de dados de tecnologia sem servidor, como o [DynamoDB](https://aws.amazon.com/documentdb/) e [Amazon Quantum Ledger Database](https://aws.amazon.com/qldb/) , escalarão dinamicamente até quase armazenamento ilimitado. 

   1.  Os bancos de dados relacionais têm limites superiores em armazenamento provisionado e devem ser particionados horizontalmente por meio de mecanismos, como fragmentação, quando atingem esses limites. 

1.  Qual é a proporção de consultas de leitura em relação a consultas de gravação? O armazenamento em cache melhoraria a performance? 

   1.  Workloads de leitura pesada podem se beneficiar de uma camada de armazenamento em cache, esse pode ser o [ElastiCache](https://aws.amazon.com/elasticache/) ou [o DAX,](https://aws.amazon.com/dynamodb/dax/) se o banco de dados for o DynamoDB. 

   1.  As leituras também podem ser descarregadas em réplicas de leitura com bancos de dados relacionais, como o [Amazon RDS](https://aws.amazon.com/rds/). 

1.  O armazenamento e a modificação (OLTP – Processamento de transações on-line) ou a recuperação e a geração de relatórios (OLAP – Processamento analítico on-line) têm uma prioridade mais alta. 

   1.  Para processamento transacional de throughput alto, considere um banco de dados NoSQL, como o DynamoDB ou o Amazon DocumentDB. 

   1.  Para consultas de análise, considere um banco de dados em colunas, como o [Amazon Redshift](https://aws.amazon.com/redshift/) , ou exporte os dados para o Amazon S3 e execute análises usando o [Athena](https://aws.amazon.com/athena/) ou [o QuickSight.](https://aws.amazon.com/quicksight/) 

1.  Qual é o grau de confidencialidade desses dados e qual nível de proteção e criptografia eles precisam? 

   1.  Todos os mecanismos do Amazon RDS e do Aurora são compatíveis com a criptografia de dados em repouso usando o AWS KMS. O Microsoft SQL Server e o Oracle também são compatíveis com a Transparent Data Encryption (TDE – Criptografia transparente de dados) ao usar o Amazon RDS. 

   1.  Para o DynamoDB, use controle de acesso refinado com o [IAM](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) para controlar quem tem acesso a quais dados no nível principal. 

1.  Qual nível de durabilidade os dados exigem? 

   1.  O Aurora replica automaticamente os dados entre três zonas de disponibilidade em uma região, o que significa que seus dados são altamente duráveis com menos chance de perda de dados. 

   1.  O DynamoDB é automaticamente replicado entre várias zonas de disponibilidade, fornecendo alta disponibilidade e durabilidade dos dados. 

   1.  O Amazon S3 fornece 11 noves de durabilidade. Muitos serviços de banco de dados, como o Amazon RDS e o DynamoDB, são compatíveis com a exportação de dados para o Amazon S3 para retenção de longo prazo e arquivamento. 

1.  Os requisitos do [objetivo de tempo de recuperação (RTO) ou do objetivo de ponto de recuperação (RPO)](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html) influenciam a solução? 

   1.  O Amazon RDS, o Aurora, o DynamoDB, o Amazon DocumentDB e o Neptune são compatíveis com a recuperação pontual e o backup e a recuperação sob demanda.  

   1.  Para requisitos de alta disponibilidade, as tabelas do DynamoDB podem ser replicadas globalmente usando o recurso [tabelas globais,](https://aws.amazon.com/dynamodb/global-tables/) e os clusters do Aurora podem ser replicados entre várias regiões usando o recurso banco de dados global. Além disso, os buckets do S3 podem ser replicados entre Regiões da AWS usando a replicação entre regiões.  

1.  Você quer se livrar de mecanismos de bancos de dados comerciais/custos de licenças? 

   1.  Considere os mecanismos de código aberto, como o PostgreSQL e o MySQL no Amazon RDS ou no Aurora 

   1.  Utilize o [AWS DMS](https://aws.amazon.com/dms/) e [o AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/) para executar migrações de mecanismos de bancos de dados comerciais para código aberto 

1.  Qual a expectativa operacional para o banco de dados? A mudança para serviços gerenciados é uma preocupação principal? 

   1.  Utilizar o Amazon RDS em vez do Amazon EC2 e o DynamoDB ou o Amazon DocumentDB em vez de um host automático de um banco de dados NoSQL pode reduzir a sobrecarga operacional. 

1.  Como o banco de dados é acessado atualmente? É acessado apenas por aplicação ou há usuários de inteligência de negócios (BI) e outras aplicações prontas para uso conectadas? 

   1.  Se você tiver dependências de ferramentas externas, poderá ser necessário manter a compatibilidade com os bancos de dados com os quais elas são compatíveis. O Amazon RDS é totalmente compatível com as diferentes versões de mecanismo aos quais oferece suporte, incluindo o Microsoft SQL Server, o Oracle, o MySQL e o PostgreSQL. 

1.  Veja a seguir uma lista de serviços dos gerenciamento de dados potenciais, e onde eles podem ser melhor utilizados: 

   1.  Bancos de dados relacionais armazenam dados com esquemas e relacionamentos predefinidos entre eles. Esses bancos de dados são projetados para oferecer suporte a transações ACID (atomicidade, consistência, isolamento, durabilidade) e manter a integridade referencial e uma forte consistência de dados. Muitas aplicações tradicionais, planejamento de recursos empresariais (ERP), gerenciamento de relacionamentos com o cliente (CRM) e comércio eletrônico usam bancos de dados relacionais para armazenar seus dados. É possível executar muitos desses mecanismos de banco de dados no Amazon EC2 ou escolher um dos serviços gerenciados pela AWS [de banco de dados](https://aws.amazon.com/products/databases/): [Amazon Aurora](https://aws.amazon.com/rds/aurora), [Amazon RDS](https://aws.amazon.com/rds)e aos [Amazon Redshift](https://aws.amazon.com/redshift). 

   1.  Bancos de dados de chave/valor são otimizados para padrões de acesso comuns, normalmente visando armazenar e recuperar grandes volumes de dados. Esses bancos de dados fornecem tempos de resposta rápidos, mesmo sob volumes extremos de solicitações simultâneas. Aplicações da web de alto tráfego, sistemas de comércio eletrônico e aplicações de jogos são os casos de uso habituais para bancos de dados de chave-valor. Na AWS, é possível utilizar o [Amazon DynamoDB](https://aws.amazon.com/dynamodb/), um banco de dados totalmente gerenciado, multirregião, multimestre e durável com recursos incorporados de segurança, backup e restauração, além de armazenamento em cache na memória para aplicações na escala da Internet. 

   1.  Os bancos de dados na memória são usados para aplicações que exigem acesso em tempo real aos dados, latência mais baixa e throughput mais alto. Ao armazenar dados diretamente na memória, esses bancos de dados fornecem latência de microssegundos às aplicações para as quais a latência de milissegundos não é suficiente. Você pode usar bancos de dados em memória para armazenamento de aplicativos em cache, gerenciamento de sessões, placares de jogos e aplicativos geoespaciais. [Amazon ElastiCache](https://aws.amazon.com/elasticache/) é um datastore na memória totalmente gerenciado, compatível com o [Redis](https://aws.amazon.com/elasticache/redis/) ou [Memcached](https://aws.amazon.com/elasticache/memcached). No caso de aplicações que também requerem durabilidade mais alta, [Amazon MemoryDB for Redis](https://aws.amazon.com/memorydb/) oferece isso em combinação com um serviço durável de banco de dados na memória para performance ultrarrápida. 

   1.  Um banco de dados de documentos é projetado para armazenar dados semiestruturados, como documentos semelhantes a JSON. Esses bancos de dados ajudam os desenvolvedores a criar e atualizar rapidamente aplicativos como gerenciamento de conteúdo, catálogos e perfis de usuário. [Amazon DocumentDB](https://aws.amazon.com/documentdb/) é um serviço totalmente gerenciado de banco de dados de documentos rápido, escalável e altamente disponível compatível com cargas de trabalho do MongoDB. 

   1.  Um armazenamento em colunas amplas é um tipo de banco de dados NoSQL. Ele usa tabelas, linhas e colunas, mas ao contrário de um banco de dados relacional, os nomes e o formato das colunas podem variar de linha para linha na mesma tabela. Normalmente, você vê um repositório de coluna ampla em aplicativos industriais de alta escala para manutenção de equipamentos, gerenciamento de frotas e otimização de rotas. [Amazon Keyspaces (para Apache Cassandra)](https://aws.amazon.com/mcs/) é um serviço escalável, gerenciado e altamente disponível de banco de dados de coluna ampla, compatível com Apache Cassandra. 

   1.  Bancos de dados gráficos são para aplicativos que precisam navegar e consultar milhões de relações entre conjuntos de dados gráficos altamente conectados com latência de milissegundos em grande escala. Muitas empresas usam bancos de dados gráficos para detecção de fraudes, redes sociais e mecanismos de recomendação. [Amazon Neptune](https://aws.amazon.com/neptune/) é serviço totalmente gerenciado, rápido e confiável de banco de dados gráfico que facilita a criação e execução de aplicações que funcionam com conjuntos de dados altamente conectados. 

   1.  Bancos de dados de séries temporais são eficientes para coletar, sintetizar e derivar insights de dados que mudam ao longo do tempo. Aplicativos de IoT, DevOps e telemetria industrial podem utilizar bancos de dados de séries temporais. [Amazon Timestream](https://aws.amazon.com/timestream/) é um serviço rápido, escalável e totalmente gerenciado de banco de dados de séries temporais para aplicativos operacionais e de IoT que facilita o armazenamento e a análise de trilhões de eventos por dia. 

   1.  Bancos de dados de livro-razão fornecem uma autoridade centralizada e confiável para manter um registro escalável, imutável e criptograficamente verificável de transações para cada aplicativo. Vemos os bancos de dados de livro-razão empregados em sistemas de registro, cadeia de suprimentos, inscrições e até mesmo transações bancárias. [Amazon Quantum Ledger Database (Amazon QLDB)](https://aws.amazon.com/qldb/) é um banco de dados ledger totalmente gerenciado que fornece um log de transações transparente, imutável e criptograficamente verificável pertencente a uma autoridade confiável central. O Amazon QLDB monitora todas as alterações de dados do aplicativo e mantém um histórico completo e verificável das alterações ao longo do tempo. 

 **Nível de esforço para o plano de implementação: **Se uma workload for movida de uma solução de banco de dados para outra, poderá haver um nível *alto* de esforço envolvido na refatoração dos dados e da aplicação.   

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

 **Documentos relacionados:** 
+  [Bancos de dados em nuvem com a AWS ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [Armazenamento em cache de banco de dados da AWS ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Práticas recomendadas do Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Performance do Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [10 melhores dicas de desempenho do Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Práticas recomendadas do Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Melhores práticas do Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 
+  [Escolha entre o EC2 e o Amazon RDS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/comparison.html) 
+  [Melhores práticas para a implementação do Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.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:** 
+  [Optimize Data Pattern using Amazon Redshift Data Sharing (Otimizar padrão de dados usando o compartilhamento de dados do Amazon Redshift)](https://wellarchitectedlabs.com/sustainability/300_labs/300_optimize_data_pattern_using_redshift_data_sharing/) 
+  [Migrações de bancos de dados](https://github.com/aws-samples/aws-database-migration-samples) 
+  [MS SQL Server: Demonstração de replicação do AWS Database Migration Service (DMS) ](https://github.com/aws-samples/aws-dms-sql-server) 
+  [Workshop prático de modernização de bancos de dados](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Amostras do Amazon Neptune](https://github.com/aws-samples/amazon-neptune-samples) 

# PERF04-BP02 Avaliar as opções disponíveis
<a name="perf_right_database_solution_evaluate_options"></a>

 Compreenda as opções de bancos de dados e como elas podem otimizar a performance antes de você selecionar a sua solução de gerenciamento de dados. Use testes de carga para identificar as métricas de banco de dados que são importantes para a sua workload. Ao explorar as opções de bancos de dados, considere vários aspectos, como grupos de parâmetros, opções de armazenamento, memória, computação, réplica de leitura, consistência eventual, pooling de conexão e opções de armazenamento em cache. Experimente com essas várias opções de configuração para melhorar as métricas. 

 **Resultado desejado:** Uma workload pode ter uma ou mais soluções de banco de dados usadas com base nos tipos de dados. A funcionalidade e os benefícios do banco de dados correspondem de maneira ideal as características dos dados, os padrões de acesso e os requisitos da workload. Para otimizar a performance e o custo do banco de dados, você deve avaliar os padrões de acesso aos dados para determinar as opções de banco de dados apropriadas. Avalie os tempos de consulta aceitáveis para garantir que as opções de bancos de dados atendam aos requisitos. 

 **Antipadrões comuns:** 
+  Não identificação dos padrões de acesso aos dados. 
+  Não ter ciência das opções de configuração da solução de gerenciamento de dados escolhida. 
+  Contar somente com o aumento do tamanho da instância sem examinar outras opções de configuração. 
+  Não testar as características de escalabilidade da solução escolhida. 

 

 **Benefícios do estabelecimento desta prática recomendada:** A exploração e a experimentação das opções de bancos de dados permitem que você reduza o custo da infraestrutura, melhore a performance e a escalabilidade e diminua o esforço necessário para manter suas workloads. 

 **Nível de exposição a riscos quando esta prática recomendada não é estabelecida:** Alto 
+  Precisar otimizar para um banco de dados *de tamanho único* significa fazer compromissos desnecessários. 
+  Custos mais altos como resultado da não configuração da solução de banco de dados para que corresponda aos padrões de tráfego. 
+  Podem surgir problemas operacionais por causa da escalabilidade. 
+  Os dados podem não estar protegidos no nível necessário. 

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

 Compreenda as características dos dados da sua workload para poder configurar as opções de seu banco de dados. Execute testes de carga para identificar as métricas-chave de performance e os gargalos. Use essas características e métricas para avaliar as opções do banco de dados e experimentar com diferentes configurações. 


|  Serviços da AWS  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Escalabilidade da computação  |  Aumente o tamanho das instâncias, as instâncias do Aurora Serverless escalam automaticamente em resposta a mudanças na carga  |  Escalabilidade automática de leitura/gravação com modo de capacidade sob demanda ou escalabilidade automática da capacidade de leitura/gravação provisionada em modo de capacidade provisionada  |  Aumentar o tamanho das instâncias  |  Aumentar o tamanho das instâncias, adicionar nós ao cluster  |  Aumentar o tamanho das instâncias  |  Escala automaticamente para ajustar a capacidade  |  Escalabilidade automática de leitura/gravação com modo de capacidade sob demanda ou escalabilidade automática da capacidade de leitura/gravação provisionada em modo de capacidade provisionada  |  Escala automaticamente para ajustar a capacidade  | 
|  Aumento da escala de leituras horizontalmente  |  Todos os mecanismos são compatíveis com réplicas de leitura. O Aurora é compatível com a escalabilidade automática de instâncias de réplicas de leitura.  |  Aumentar as unidades de capacidade de leitura provisionadas  |  Réplicas de leitura  |  Réplicas de leitura  |  Réplicas de leitura. Compatível com a escalabilidade automática de instâncias de réplicas de leitura  |  Escala automaticamente  |  Aumentar as unidades de capacidade de leitura provisionadas  |  Automaticamente aumenta a escala verticalmente para limites de simultaneidade documentados  | 
|  Aumento da escala de gravações horizontalmente  |  Aumentando o tamanho da instância, realizando gravações em lote na aplicação ou adicionando uma fila na frente do banco de dados. A escalabilidade horizontal via fragmentação em nível de aplicação entre várias instâncias  |  Aumentar as unidades de capacidade de leitura provisionadas. Garantir a chave de partição ideal para evitar o controle de utilização de gravação em nível de partição  |  Aumento do tamanho da instância primária  |  Usar o Redis em modo de cluster para distribuir gravações entre fragmentos  |  Aumentar o tamanho das instâncias  |  As solicitações de gravação podem ser limitadas durante a escalabilidade. Se você encontrar exceções de controle de utilização, continue a enviar dados no mesmo throughput (ou mais alto) para escalar automaticamente. Gravações em lote para reduzir solicitações de gravação simultâneas  |  Aumentar as unidades de capacidade de leitura provisionadas. Garantir a chave de partição ideal para evitar o controle de utilização de gravação em nível de partição  |  Automaticamente aumenta a escala verticalmente para limites de simultaneidade documentados  | 
|  Configuração do mecanismo  |  Grupos de parâmetros  |  Não aplicável  |  Grupos de parâmetros  |  Grupos de parâmetros  |  Grupos de parâmetros  |  Não aplicável  |  Não aplicável  |  Não aplicável  | 
|  Armazenamento em cache  |  Armazenamento em cache na memória, configurável por meio de grupos de parâmetros. Emparelhar com um cache dedicado, como o ElastiCache for Redis, para descarregar solicitações de itens acessados comumente  |  Cache totalmente gerenciado do DAX (DAX) disponível  |  Armazenamento em cache na memória. Opcionalmente, emparelhar com um cache dedicado, como o ElastiCache for Redis, para descarregar solicitações de itens acessados comumente  |  A função primária é o armazenamento em cache  |  Usar cache dos resultados de consultas somente leitura para armazenar o resultado em cache  |  O Timestream tem duas camadas de armazenamento, uma delas é uma camada na memória de alta performance  |  Implantar um cache dedicado separado, como o ElastiCache for Redis, para descarregar solicitações de itens acessados comumente  |  Não aplicável  | 
|  Alta disponibilidade/recuperação de desastres  |  A configuração recomendada para workloads de produção é a execução de uma instância em espera em uma segunda zona de disponibilidade, para fornecer resiliência em uma região.  Para obter resiliência entre regiões, o Aurora Global Database pode ser usado  |  Altamente disponível em uma região. As tabelas podem ser replicada entre regiões usando as tabelas globais do DynamoDB  |  Crie várias instâncias entre zonas de disponibilidade para obter disponibilidade.  Os snapshots podem ser compartilhados entre regiões, e os clusters podem ser replicados usando o DMS para fornecer replicação entre regiões/recuperação de desastres.  |  A configuração recomenda para clusters de produção é criar pelo menos um nó em uma zona de disponibilidade secundária.  É possível usar o datastore global do ElastiCache para replicar clusters entre regiões.  |  As réplicas de leitura em outas zonas de disponibilidade funcionam como destinos de failover.  Os snapshots podem ser compartilhados entre regiões, e os clusters podem ser replicados usando os streams do Neptune para replicação de dados entre dois clusters em duas regiões diferentes.  |  Altamente disponibilidade em uma região. A replicação entre regiões exige o desenvolvimento de uma aplicação personalizada usando o SDK do Timestream  |  Altamente disponível em uma região.  A replicação entre regiões exige a lógica de uma aplicação personalizada ou ferramentas de terceiros  |  Altamente disponível em uma região.  Para replicação entre regiões, exporte o conteúdo do diário do Amazon QLDB para um bucket do S3 e configure o bucket para replicação entre regiões.  | 

 

 **Etapas da implementação** 

1.  Quais opções de configuração estão disponíveis para os bancos de dados selecionados? 

   1.  Os grupos de parâmetros do Amazon RDS e do Aurora permitem ajustar as configurações em nível de mecanismo comum de bancos de dados, como a memória alocada para o cache ou o ajuste do fuso horário do banco de dados. 

   1.  Para serviços de bancos de dados provisionados, como o Amazon RDS, o Aurora, o Neptune, o Amazon DocumentDB e os implantados no Amazon EC2, é possível alterar o tipo de instância, o armazenamento provisionado e as réplicas de leitura. 

   1.  O DynamoDB permite especificar dois modos de capacidade: sob demanda e provisionado. Para levar workloads diferentes em conta, é possível alterar entre esses modos e aumentar a capacidade alocada em modo provisionado a qualquer momento. 

1.  A leitura ou a gravação da workload é pesada?  

   1.  Quais são as soluções disponíveis para descarregar leituras (réplicas de leitura, armazenamento em cache etc.)?  

      1.  Em tabelas do DynamoDB, é possível descarregar leituras usando o DAX para armazenamento em cache. 

      1.  Em bancos de dados relacionais, é possível criar um cluster do ElastiCache for Redis e configurar a aplicação para ler no cache primeiro, recorrendo ao banco de dados se o item não estiver presente. 

      1.  Todos os bancos de dados relacionais, como o Amazon RDS e o Aurora, e os bancos de dados NoSQL provisionados, como o Neptune e o Amazon DocumentDB, são compatíveis com a adição de replicas de leitura para descarregar as partes de leitura da workload. 

      1.  Os bancos de dados de tecnologia sem servidor, como o DynamoDB, escalarão automaticamente. Verifique se você tem unidades de capacidade de leitura suficientes (RCU) provisionadas para tratar a workload. 

   1.  Quais são as soluções disponíveis para escalar gravações (fragmentação de chave de partição, introdução de uma fila etc.)? 

      1.  No caso de bancos de dados relacionais, é possível aumentar o tamanho da instância para acomodar uma workload maior, ou aumentar as IOPs provisionadas para permitir um throughput mais alto para o armazenamento subjacente. 
         +  Também é possível introduzir uma fila na frente do banco de dados, em vez de gravar diretamente no banco de dados. Esse padrão permite desacoplar a ingestão do banco de dados e controlar a taxa de fluxo, para que o banco de dados não fique sobrecarregado.  
         +  O uso solicitações de gravação em lote em vez de criar muitas transações de curta duração pode ajudar a melhorar o throughput em bancos de dados relacionais de alto volume de gravação. 

      1.  Os bancos de dados de tecnologia sem servidor, como o DynamoDB, podem escalar o throughput de gravação automaticamente ou ajustar as unidades da capacidade de gravação (WCU) provisionadas, dependendo do modo da capacidade.  
         +  Mas ainda pode ser possível encontrar problemas com partições *quentes,* ao atingir os limites do throughput de uma determinada chave de partição. Isso pode ser mitigado ao escolher uma chave de partição mais igualmente distribuída ou fragmentar a gravação da chave de partição.  

1.  Quais são os picos de transações por segundo (TPS) atuais ou esperados? Teste usando esse volume de tráfego e esse volume \$1X% para compreender as características da escalabilidade. 

   1.  Ferramentas nativas, como a pg\$1bench do PostgreSQL, podem ser usadas para testes de estresse do banco de dados e para compreender os gargalos e as características de escalabilidade. 

   1.  Tráfego do tipo produção deve ser capturado para que possa ser reproduzido para a simulação das condições reais, além de workloads sintéticas. 

1.  Ao usar computação de tecnologia sem servidor ou escalável elasticamente, teste o impacto da escalabilidade disso no banco de dados. Se apropriado, introduza agrupamento ou gerenciamento de conexões para reduzir o impacto no banco de dados.  

   1.  O RDS Proxy pode ser usado com o Amazon RDS e o Aurora para gerenciar as conexões ao banco de dados.  

   1.  Bancos de dados de tecnologia sem servidor, como o DynamoDB, não têm conexões associadas a eles, mas considere a capacidade provisionada e as políticas de escalabilidade automática para lidar com picos na carga. 

1.  A carga é previsível? Há picos na carga e períodos de inatividade? 

   1.  Se houver períodos de inatividade, considere reduzir a escala verticalmente da capacidade provisionada ou o tamanho da instância durante esses períodos. Aurora Serverless V2 aumentará e reduzirá a escala verticalmente com base na carga. 

   1.  No caso de instâncias que não são de produção, considere pausá-las ou interrompê-las durante os horários sem trabalho. 

1.  É necessário segmentar e separar seus modelos de dados com base nos padrões de acesso e nas características dos dados? 

   1.  Considere usar o AWS DMS ou o AWS SCT para mover os dados para outros serviços. 

## Nível de esforço do plano de implementação: 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-data-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-database-configuration-options-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

Ao estabelecer essa prática recomendada, lembre-se das características e das métricas atuais dos dados. A coleta dessas métricas, o estabelecimento de uma linha de base e o uso dessas métricas para identificar as opções ideais de configuração de bancos de dados é *baixo* to *moderado* . Isso é melhor validade com testes de carga e experimentação. 

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

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

 

 **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:** 
+  [Exemplos do Amazon DynamoDB](https://github.com/aws-samples/aws-dynamodb-examples) 
+  [Amostras de migração de bancos de dados da AWS](https://github.com/aws-samples/aws-database-migration-samples) 
+  [Workshop de modernização de banco de dados](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Como trabalhar com parâmetros no Amazon RDS para bancos de dados Postgress](https://github.com/awsdocs/amazon-rds-user-guide/blob/main/doc_source/Appendix.PostgreSQL.CommonDBATasks.Parameters.md) 

# PERF04-BP03 Coletar e registrar métricas de performance do banco de dados
<a name="perf_right_database_solution_collect_metrics"></a>

 Para compreender como está a performance dos sistemas de gerenciamento de dados, é importante rastrear métricas relevantes. Essas métricas ajudam a otimizar seus recursos de gerenciamento de dados para garantir que os requisitos da workload sejam atendidos, e que você tenha uma visão geral clara de como está a performance da sua workload. Use ferramentas, bibliotecas e sistemas que registram as medidas de performance relacionadas ao banco de dados. 

 

 Há métricas relacionadas ao sistema que hospeda o banco de dados (como, CPU, armazenamento, memória, IOPS), e há métricas para avaliar os próprios dados (como, transações por segundo, taxas de consultas, tempos de resposta, erros). Essas métricas devem estar prontamente acessíveis para qualquer equipe de suporte e operacional, e devem ter registro histórico suficiente para que seja possível identificar tendências, anomalias e gargalos. 

 

 **Resultado desejado:** Para monitorar a performance das workloads de seus bancos de dados, registre várias métricas de performance ao longo de um período. Isso permite detectar anomalias e avaliar a performance em relação às métricas de negócios para garantir que as necessidades da workload sejam atendidas. 

 **Antipadrões comuns:** 
+  Você só usa a pesquisa manual de arquivos de log para métricas. 
+  Você só publica métricas para ferramentas internas usadas pela equipe e não tem uma imagem abrangente da workload. 
+  Você só usa as métricas padrão registradas pelo software de monitoramento selecionado. 
+  Você só analisa as métricas quando há um problema. 
+  Você só monitora as métricas em nível do sistema, não captura as métricas de acesso aos dados e de uso. 

 **Benefícios do estabelecimento desta prática recomendada:** O estabelecimento de uma linha de base de performance ajuda a compreender o comportamento normal e os requisitos das workloads. Padrões anormais podem ser identificados e depurados mais rapidamente, melhorando a performance e a confiabilidade do banco de dados. A capacidade do banco de dados pode ser configurada para garantir um custo ideal sem comprometer a performance. 

 **Nível de exposição a riscos quando esta prática recomendada não é estabelecida:** Alto 
+  A inabilidade de diferenciar o nível de performance fora do normal versus normal criam dificuldades na identificação de problemas e na tomada de decisões. 
+  A economia de custo possível pode não ser identificada. 
+  Os padrões de crescimento não serão identificados resultando em degradação da confiabilidade e da performance. 

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

 Identifique, colete, agregue e correlacione métricas relacionadas ao banco de dados. As métricas devem incluir as métricas do sistema subjacente que oferece suporte ao banco de dados e do banco de dados. As métricas do sistema subjacente podem incluir métricas de utilização de CPU, memória, armazenamento em disco disponível, E/S de disco e entrada e saída da rede, enquanto as métricas de banco de dados devem incluir transações por segundo, tempos de resposta, uso de índice, bloqueios de tabela, tempos limite de consultas e número de conexões abertas. Esses dados são essenciais para compreender como está a performance da workload e como a solução de banco de dados é usada. Use essas métricas como parte de uma abordagem orientada por dados para ajustar e otimizar os recursos da sua workload.  

 **Etapas da implementação:** 

1.  Quais métricas de bancos de dados é importante rastrear? 

   1.  [Métricas de monitoramento do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) 

   1.  [Monitoramento com insights da performance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 

   1.  [Monitoramento aprimorado](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html) 

   1.  [Métricas do DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html) 

   1.  [Monitoramento do DynamoDB DAX](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.Monitoring.html) 

   1.  [Monitoramento do MemoryDB](https://docs.aws.amazon.com/memorydb/latest/devguide/monitoring-cloudwatch.html) 

   1.  [Monitoramento do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics.html) 

   1.  [Métricas e dimensões de séries temporais](https://docs.aws.amazon.com/timestream/latest/developerguide/metrics-dimensions.html) 

   1.  [Métricas em nível de cluster do Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Monitoring.Metrics.html) 

   1.  [Monitoramento do Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html) 

   1.  [Monitoramento do Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/monitoring.html) 

1.  O monitoramento do banco de dados se beneficiaria de uma solução de machine learning que detecta problemas de performance por anomalias operacionais? 

   1.  [O Amazon DevOps Guru for Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.how-it-works.html) fornece visibilidade dos problemas de performance e faz recomendações de ações corretivas. 

1.  São necessários detalhes em nível de aplicação sobre o uso do SQL? 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql) pode ser instrumentado na aplicação para obter insights e encapsular todos os pontos de dados em uma única consulta; 

1.  Você tem uma solução de registro em log e de monitoramento aprovada? 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) pode coletar métricas nos recursos na sua arquitetura. Você também pode coletar e publicar métricas personalizadas para descobrir métricas de negócio ou derivadas. Use o CloudWatch ou soluções de terceiros para definir alarmes que indiquem quando os limites são violados. 

1.  Você identificou e configurou suas políticas de retenção de dados para que correspondam às suas metas operacionais e de segurança? 

   1.  [Retenção de dados padrão para métricas do CloudWatch](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [Retenção de dados padrão do CloudWatch Logs](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

 **Nível de esforço do plano de implementação: **Há um nível de esforço *médio* para identificar, rastrear, coletar, agregar e correlacionar métricas de todos os recursos de banco de dados. 

## 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/) 
+  [Insights de performance do Amazon RDS](https://aws.amazon.com/rds/performance-insights/) 

 **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:** 
+  [Level 100: Monitoring with CloudWatch Dashboards (Nível 100: monitoramento com os painéis do CloudWatch)](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [AWS Dataset Ingestion Metrics Collection Framework (Framework da coleção de métricas de ingestão de conjuntos de dados da AWS)](https://github.com/awslabs/aws-dataset-ingestion-metrics-collection-framework) 
+  [Amazon RDS Monitoring Workshop (Workshop sobe o monitoramento do AWS RDS)](https://www.workshops.aws/?tag=Enhanced%20Monitoring) 

# 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/) 

# PERF04-BP05 Otimizar o armazenamento de dados com base nas métricas e nos padrões de acesso
<a name="perf_right_database_solution_optimize_metrics"></a>

 Use características de performance e padrões de acesso que otimizem o modo como os dados são armazenados ou consultados para obter a melhor performance possível. Meça como otimizações, p. ex., indexação, distribuição de chave, design do data warehouse ou estratégias de armazenamento em cache afetam a performance do sistema ou a eficiência geral. 

 **Antipadrões comuns:** 
+  Você só usa a pesquisa manual de arquivos de log para métricas. 
+  Você só publica métricas em ferramentas internas. 

 **Benefícios do estabelecimento desta prática recomendada:** Para garantir que você esteja atendendo às métricas necessárias para a carga de trabalho, você deve monitorar as métricas de performance do banco de dados relacionadas a leituras e gravações. Você pode usar esses dados para adicionar novas otimizações para leituras e gravações na camada de armazenamento de dados. 

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

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

 Otimizar o armazenamento de dados com base em métricas e padrões: use as métricas relatadas para identificar todas as áreas com baixa performance na sua workload e otimizar os componentes do banco de dados. Cada sistema de banco de dados tem características relacionadas a performance diferentes a serem avaliadas, como a maneira de indexar, armazenar em cache ou distribuir os dados entre vários sistemas. Meça o impacto de suas otimizações. 

## 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/) 
+  [Analisar as anomalias da performance com o DevOps Guru for RDS](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/devops-guru-for-rds.html) 
+  [Modo de capacidade de leitura/gravação do DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.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:** 
+  [Laboratórios práticos do Amazon DynamoDB](https://amazon-dynamodb-labs.workshop.aws/hands-on-labs.html) 