O DynamoDB suporta transações?
Sim. O DynamoDB suporta transações ACID via TransactWriteItems e TransactGetItems. Cada transação agrupa até 100 ações em uma ou mais tabelas na mesma conta e Região em uma única operação de tudo ou nada, com um limite de tamanho combinado de 4 MB. Se qualquer ação falhar, nenhuma é aplicada.
As duas APIs de transação
TransactWriteItems— agrupa açõesPut,Update,DeleteeConditionCheckde forma atômica. Síncrona e idempotente.TransactGetItems— lê vários itens em um único snapshot atômico e consistente.
Regras e limites
- Até 100 itens por transação, em uma ou mais tabelas.
- Todas as tabelas precisam estar na mesma conta e Região.
- O tamanho combinado dos itens não pode passar de 4 MB.
- Você não pode mirar o mesmo item duas vezes em uma transação.
- Em tabelas globais, as garantias ACID valem apenas dentro da Região onde a transação rodou — as mudanças replicam para outras Regiões depois do commit, e tabelas globais em modo de consistência forte multirregional (MRSC) não suportam as APIs de transação de jeito nenhum.
Quanto custa a atomicidade
O mesmo item, dois caminhos, com ReturnConsumedCapacity ligado:
PutItem, one 920-byte item ConsumedCapacity 1
TransactWriteItems, the same single Put ConsumedCapacity 2Uma escrita transacional vale duas escritas de capacidade, e uma leitura transacional vale duas leituras. De forma sustentada, essa duplicação é a troca inteira: 100 escritas por segundo de itens de 1 KB custam US$164,25 por mês em us-east-1 on-demand, ou US$328,50 se cada uma delas passar por uma transação. A calculadora de preços tem uma configuração de consistência transacional exatamente para essa comparação.
O retry que não se aplica duas vezes
Uma transação que atinge o timeout pode ter sido confirmada mesmo assim, então o retry é a parte perigosa, não a transação. O ClientRequestToken é o que torna o retry seguro. Enviando a mesma transação ADD counter :one duas vezes sob um mesmo token:
TransactWriteItems (token order-4711) 200
TransactWriteItems (token order-4711) 200
GetItem counter {"N": "1"}As duas chamadas tiveram sucesso e o contador andou uma vez. O token continua válido por 10 minutos depois que a primeira requisição termina; reutilize-o mais tarde e a segunda chamada é uma transação nova, então o contador anda de novo. Reutilize-o dentro da janela com qualquer outro parâmetro alterado e o DynamoDB retorna IdempotentParameterMismatch.
Transação vs lote
Ao contrário do BatchWriteItem, que aplica cada item por conta própria (algumas escritas podem entrar enquanto outras falham), uma transação é tudo ou nada — use-a quando uma aplicação parcial corromperia os seus dados.
Aprofunde-se
Aprenda padrões em transações do DynamoDB, e monte as expressões de condição de que elas dependem com o Expression Builder. Baixe o DynoTable para preparar as suas edições de itens como diffs revisáveis e fazer o commit de todas juntas como um lote transacional.
Referências
- Amazon DynamoDB Transactions: How it works — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- How DynamoDB global tables work — Amazon DynamoDB Developer Guide
Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima; o limite de 100 ações e a janela de idempotência de 10 minutos foram reverificados em 2026-07-28.
Os valores de ConsumedCapacity e a repetição idempotente foram reproduzidos em 2026-07-28 no DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0; os custos mensais foram calculados a partir do preço on-demand de unidade de requisição de escrita em us-east-1 na nossa tabela de preços sincronizada da AWS.