¿DynamoDB admite transacciones?

Sí. DynamoDB admite transacciones ACID mediante TransactWriteItems y TransactGetItems. Cada transacción agrupa hasta 100 acciones sobre una o varias tablas de la misma cuenta y región en una única operación de todo o nada, con un límite de tamaño combinado de 4 MB. Si falla cualquier acción, no se aplica ninguna.

Las dos API de transacción

  • TransactWriteItems — agrupa acciones Put, Update, Delete y ConditionCheck de forma atómica. Síncrona e idempotente.
  • TransactGetItems — lee varios elementos en una única instantánea atómica y consistente.

Reglas y límites

  • Hasta 100 elementos por transacción, sobre una o varias tablas.
  • Todas las tablas deben estar en la misma cuenta y región.
  • El tamaño combinado de los elementos no puede superar los 4 MB.
  • No puedes apuntar dos veces al mismo elemento en una transacción.
  • En tablas globales, las garantías ACID se aplican solo dentro de la región donde se ejecutó la transacción — los cambios se replican a otras regiones tras la confirmación, y las tablas globales en modo de consistencia fuerte multirregión (MRSC) no admiten las API de transacción en absoluto.

Lo que cuesta la atomicidad

El mismo elemento, dos caminos, con ReturnConsumedCapacity activado:

PutItem, one 920-byte item                 ConsumedCapacity 1
TransactWriteItems, the same single Put    ConsumedCapacity 2

Una escritura transaccional vale por dos escrituras de capacidad, y una lectura transaccional por dos lecturas. De forma sostenida, esa duplicación es todo el compromiso: 100 escrituras por segundo de elementos de 1 KB cuestan 164,25 $ al mes en us-east-1 bajo demanda, o 328,50 $ si todas ellas pasan por una transacción. La calculadora de precios tiene un ajuste de consistencia transaccional exactamente para esta comparación.

El reintento que no se aplica dos veces

Una transacción que expira puede haberse confirmado igualmente, así que lo peligroso es el reintento, no la transacción. ClientRequestToken es lo que hace seguro el reintento. Enviando la misma transacción ADD counter :one dos veces con un solo token:

TransactWriteItems  (token order-4711)     200
TransactWriteItems  (token order-4711)     200
GetItem counter                            {"N": "1"}

Las dos llamadas tuvieron éxito y el contador se movió una vez. El token sigue siendo válido durante 10 minutos después de que termine la primera petición; reutilízalo más tarde y la segunda llamada es una transacción nueva, así que el contador vuelve a moverse. Reutilízalo dentro de la ventana con cualquier otro parámetro cambiado y DynamoDB devuelve IdempotentParameterMismatch.

Transacción frente a lote

A diferencia de BatchWriteItem, que aplica cada elemento por su cuenta (unas escrituras pueden llegar mientras otras fallan), una transacción es de todo o nada — úsala cuando una aplicación parcial corrompería tus datos.

Profundiza

Aprende patrones en transacciones en DynamoDB, y construye las expresiones de condición en las que se apoyan con el Expression Builder. Descarga DynoTable para preparar tus ediciones de elementos como diffs revisables y confirmarlas juntas como un lote transaccional.

Referencias

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba; el límite de 100 acciones y la ventana de idempotencia de 10 minutos se revisaron el 2026-07-28.

Los valores de ConsumedCapacity y la reejecución idempotente se reprodujeron el 2026-07-28 contra DynamoDB Local 3.3.0 mediante @aws-sdk/client-dynamodb 3.1095.0; los costes mensuales se calcularon a partir del precio bajo demanda por unidad de petición de escritura en us-east-1 de nuestra tabla de precios de AWS sincronizada.

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.