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ções Put, Update, Delete e ConditionCheck de 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 2

Uma 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

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.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.