AWS SAA-C03/06 - Bancos de Dados2 min
DynamoDB Capacidade e Índices
Responda com suas palavras antes de ler o resto da nota.
- Que problema isso resolve?
- Quando usar / quando NÃO usar?
- Qual o principal trade-off (custo, latência, operação)?
- Que sinal no enunciado aponta pra isso?
- Com o que isso é confundido na prova?
Conceito
Unidades de capacidade — decore
| Unidade | Equivale a |
|---|---|
| 1 RCU | 1 leitura fortemente consistente de até 4 KB/s · ou 2 leituras eventualmente consistentes |
| 1 WCU | 1 escrita de até 1 KB/s |
Cálculo típico de prova: 100 leituras/s de itens de 6 KB, eventualmente consistentes.
6 KB → 2 blocos de 4 KB → 100 × 2 = 200 → eventual divide por 2 → 100 RCUs.
Modos de capacidade
| Provisioned | On-Demand | |
|---|---|---|
| Você define | RCU/WCU (com auto scaling opcional) | Nada |
| Custo | Mais barato em carga previsível | Por requisição, mais caro por unidade |
| Escala | Auto scaling reage em minutos | Instantânea |
| Use quando | Tráfego estável e conhecido | Imprevisível, novo, com picos bruscos |
Reserved Capacity dá desconto adicional sobre o modo provisionado com compromisso de 1 ou 3 anos.
Índices secundários
| LSI (Local) | GSI (Global) | |
|---|---|---|
| Partition key | A mesma da tabela | Diferente |
| Sort key | Alternativa | Qualquer |
| Quando criar | Só na criação da tabela | A qualquer momento |
| Capacidade | Compartilha com a tabela | Própria |
| Consistência | Suporta leitura forte | Só eventual |
| Limite | 5 por tabela, 10 GB por partition key | 20 por tabela |
- LSI só pode ser criado junto com a tabela. Se a questão diz "precisamos consultar por um novo atributo numa tabela existente", a resposta é GSI.
- GSI com capacidade insuficiente estrangula a tabela inteira nas escritas — o write na tabela precisa replicar pro índice.
Trade-offs
On-demand elimina o risco de estrangular e custa bem mais por requisição — vale enquanto o padrão é desconhecido; depois de estabilizar, migrar pra provisioned com auto scaling costuma cortar custo pela metade (a troca de modo é permitida uma vez a cada 24 h).
GSI dá liberdade de consulta e duplica o dado (você paga armazenamento e escrita duas vezes). Projetar só os atributos necessários (KEYS_ONLY ou INCLUDE) reduz esse custo.
Sinais de prova
- "Tráfego imprevisível, aplicação nova" → On-Demand
- "Carga estável, reduzir custo" → Provisioned + auto scaling (+ Reserved Capacity)
- "Consultar por um atributo novo numa tabela já existente" → GSI
- "Consulta alternativa mantendo a mesma partition key, leitura forte" → LSI (só na criação)
- "
ProvisionedThroughputExceededException" → capacidade insuficiente ou hot partition - "Escritas na tabela começaram a falhar depois de criar um índice" → GSI sem capacidade
Relacionado
Parte de 06 - MOC Bancos de Dados · Documentação AWS