Solutions Architect

Bancos de dados

Escolher o motor que combina com o padrão de acesso e escalá-lo para leituras, escritas e conexões. Faz parte do Domínio 3: Projetar arquiteturas de alto desempenho, 24% do conteúdo pontuado.

Amazon RDS

Amazon Relational Database Service

Página oficial

Bancos relacionais gerenciados em instâncias que você dimensiona. Você escolhe motor, classe de instância e armazenamento, e a AWS cuida de patches, backups e failover.

Pontos-chave

  • Motores: Db2, MariaDB, MySQL, Oracle, PostgreSQL e SQL Server. PostgreSQL para SQL avançado, extensões e consultas complexas, MySQL ou MariaDB para cargas web simples e amplamente suportadas, Oracle ou SQL Server quando licença ou recursos exigem.
  • Classes de instância: uso geral (db.m*), otimizadas para memória (db.r*, db.x*, db.z1d), expansíveis (db.t*) e classes Optimized Reads com NVMe local. Escala vertical trocando a classe.
  • Réplicas de leitura: cópias assíncronas que atendem leituras, até 15 por origem (Db2 até 3). Podem ficar em outra AZ ou outra Região e ser promovidas a instância independente para DR. O RDS não cria nem remove réplicas sozinho.
  • Autoscaling de armazenamento: aumenta o disco quando o espaço livre fica em 10% ou menos por pelo menos 5 minutos, até o limite máximo definido. Nunca reduz.
  • Armazenamento magnético foi descontinuado. Instâncias novas usam gp3 ou SSD com IOPS provisionadas.

Na prova

"Relatórios deixam o banco de produção lento" -> réplica de leitura, não Multi-AZ (a standby do Multi-AZ em instância não atende leituras). "I/O consistente e de baixa latência para OLTP" -> IOPS provisionadas (io2 Block Express), não gp2.

Tipos de armazenamento do RDS

TipoQuando usar
gp3Escolha padrão. Base de 3.000 IOPS e 125 MiB/s, com mais desempenho provisionado sem depender do tamanho (até 64.000 IOPS).
gp2Geração anterior. 3 IOPS por GiB, picos de 3.000 IOPS em volumes pequenos.
io2 Block ExpressOLTP com I/O intenso. Até 256.000 IOPS com latência abaixo de 1 ms. Tipo de IOPS provisionadas recomendado.
io1IOPS provisionadas da geração anterior. Até 256.000 IOPS, latência de poucos ms.
Página oficial

Motor compatível com MySQL e PostgreSQL, com uma camada de armazenamento distribuída compartilhada entre a instância de escrita e as leitoras, o que torna réplicas baratas e o failover rápido.

Pontos-chave

  • Armazenamento: 6 cópias dos dados em 3 AZs, num volume de cluster que cresce sozinho, até 256 TiB nas versões recentes do motor.
  • Aurora Replicas: até 15 por cluster, com atraso normalmente bem abaixo de 100 ms. O reader endpoint distribui as conexões e o failover promove uma réplica por prioridade (tier 0 é a mais alta).
  • Aurora Serverless v2: capacidade em ACUs (cerca de 2 GiB de memória cada) de 0 a 256, escalando em passos de até 0,5 ACU. Em 0 ACU a instância pausa nas versões suportadas.
  • Global Database: até 10 Regiões secundárias, replicação normalmente abaixo de 1 segundo, RPO de 1 segundo e RTO abaixo de 1 minuto. Até 16 instâncias de leitura por secundária. Write forwarding encaminha escritas para a primária.
  • I/O-Optimized: sem cobrança por I/O de leitura e escrita. Compensa quando o I/O passa de 25% da conta do Aurora (economia de até 40%). De Standard para I/O-Optimized uma vez a cada 30 dias.

Na prova

"Carga relacional imprevisível ou com picos, pagar pelo uso" -> Aurora Serverless v2. "Leituras globais com atraso abaixo de 1 segundo e DR entre Regiões" -> Aurora Global Database, não réplicas de leitura do RDS entre Regiões.

Página oficial

Banco serverless de chave-valor e documentos, com latência de poucos milissegundos em qualquer escala. O desempenho depende do modo de capacidade e de quão bem a chave de partição distribui o tráfego.

Pontos-chave

  • On-demand: paga por requisição, sem planejar capacidade, para tráfego desconhecido ou com picos. Provisionado: define RCUs e WCUs, com auto scaling, para tráfego previsível e mais barato. De provisionado para on-demand até 4 vezes em 24 horas, a volta a qualquer momento.
  • RCU: 1 leitura fortemente consistente ou 2 eventualmente consistentes por segundo de um item de até 4 KB. WCU: 1 escrita por segundo de um item de até 1 KB. Transações custam o dobro.
  • Chave de partição: use um atributo de alta cardinalidade (ID de usuário, ID de dispositivo) para espalhar as requisições. Chave de baixa cardinalidade gera partições quentes e throttling.
  • Tamanho do item: até 400 KB. Objetos grandes vão para o S3 e o item guarda a chave.
  • PITR: restaura para qualquer segundo dentro de um período configurável de 1 a 35 dias.

Na prova

"Milhões de requisições por segundo, sem esquema, latência de poucos ms" -> DynamoDB, não RDS. Throttling em poucas chaves indica chave de partição ruim, não falta de capacidade total.

Página oficial

Índices, cache, fluxo de alterações, expiração e replicação entre Regiões levam o DynamoDB além de buscas simples por chave.

Pontos-chave

  • GSI: chave de partição e de ordenação diferentes, criado a qualquer momento, só leituras eventualmente consistentes, capacidade própria. Cota padrão de 20 por tabela.
  • LSI: mesma chave de partição, outra chave de ordenação, criado só junto com a tabela, aceita leitura fortemente consistente. Até 5 por tabela e 10 GB por valor de chave de partição.
  • DAX: cache em memória na frente do DynamoDB, compatível com a API, leituras em microssegundos, até 10x mais rápido.
  • Streams: alterações de itens em ordem, guardadas por 24 horas e consumidas pelo Lambda para processamento por eventos. TTL apaga itens expirados em poucos dias, sem consumir capacidade de escrita.
  • Global tables: réplicas multiativas em várias Regiões. O padrão MREC replica normalmente em até 1 segundo. MRSC dá consistência forte entre Regiões e é escolhido na criação.

Na prova

"DynamoDB com muita leitura, latência de microssegundos, sem mudar código" -> DAX, não ElastiCache. "Consultar por outro atributo depois que a tabela existe" -> GSI (LSI não pode ser adicionado depois).

Página oficial

Cache em memória gerenciado com Valkey, Redis OSS ou Memcached. Tira leituras repetidas do banco e guarda sessões, em clusters de nós ou serverless.

Pontos-chave

  • Valkey ou Redis OSS: replicação, failover automático entre AZs, backup e restauração, pub/sub e sorted sets (rankings). O Global Datastore replica entre Regiões.
  • Memcached: multithread e simples, sem replicação e sem failover. Serve para um cache de objetos que pode ser perdido.
  • Lazy loading (cache-aside): lê do cache e, se faltar, lê do banco e preenche o cache. Só guarda o que é pedido, mas o dado pode ficar desatualizado e cada miss custa 3 idas.
  • Write-through: atualiza o cache a cada escrita no banco. O dado nunca fica velho, mas toda escrita faz 2 idas e dados nunca lidos ocupam memória.
  • TTL: some uma expiração a qualquer estratégia para limitar dados velhos e liberar memória.

Na prova

"Ranking, ordenação, cache com alta disponibilidade, sessões com failover" -> ElastiCache para Valkey ou Redis OSS. "Cache simples e multithread, sem persistência" -> Memcached.

Página oficial

Cada modelo de dados tem o seu motor gerenciado. A prova descreve os dados e as consultas e espera o serviço correspondente.

Pontos-chave

  • Amazon DocumentDB: documentos JSON, compatível com MongoDB.
  • Amazon Keyspaces: banco wide-column serverless, compatível com Apache Cassandra.
  • Amazon Neptune: banco de grafos para dados muito conectados, consultado com Gremlin, openCypher ou SPARQL.
  • Amazon Redshift: data warehouse colunar para análises (OLAP) sobre grandes volumes, não para transações.

Na prova

"Migrar MongoDB com o mínimo de mudanças" -> DocumentDB. "Carga Cassandra, sem servidores" -> Keyspaces. "Rede social, fraude em rede, recomendações" -> Neptune.

Requisito para banco

RequisitoEscolha
Relacional, joins, transaçõesRDS ou Aurora
Chave-valor em qualquer escalaDynamoDB
Cache abaixo de 1 msElastiCache, ou DAX para DynamoDB
Documentos (MongoDB)DocumentDB
Wide-column (Cassandra)Keyspaces
Relações em grafoNeptune
Análise sobre terabytesRedshift

RDS Proxy

Amazon RDS Proxy

Página oficial

Pool de conexões gerenciado entre a aplicação e o banco. Absorve rajadas de conexões e mantém as conexões abertas durante o failover.

Pontos-chave

  • Pool de conexões: muitos clientes de vida curta (funções Lambda) compartilham poucas conexões com o banco.
  • Failover: reduz o tempo de failover em até 66% no Aurora e no RDS.
  • Segurança: as credenciais ficam no AWS Secrets Manager e a autenticação IAM pode ser exigida. O proxy nunca é público e roda na VPC do banco.
  • Motores: Aurora MySQL, Aurora PostgreSQL, RDS for MySQL, PostgreSQL, MariaDB e SQL Server.

Na prova

"Funções Lambda esgotam as conexões do banco" ou "erros de too many connections" -> RDS Proxy, não uma classe de instância maior.

Migração de bancos

AWS Database Migration Service

Página oficial

O AWS DMS leva os dados para a AWS enquanto a origem continua operando. Trocar de motor exige também converter esquema e código.

Pontos-chave

  • Homogênea: mesmo motor (MySQL para RDS for MySQL). O DMS ou as ferramentas nativas do motor movem os dados.
  • Heterogênea: motores diferentes (Oracle para Aurora PostgreSQL). Converta esquema e código com o DMS Schema Conversion ou o AWS Schema Conversion Tool e depois mova os dados com o DMS.
  • CDC: a captura de alterações replica as mudanças contínuas para um corte com downtime quase zero.
  • Origem continua no ar: as aplicações seguem usando a origem durante a migração.

Na prova

"Oracle para PostgreSQL com downtime mínimo" -> DMS Schema Conversion (ou SCT) + DMS com CDC. O DMS sozinho não converte procedures nem esquema.