Principiante7 min de lectura

DynamoDB Acciones basadas en elementos

DynamoDB API se divide en tres familias: acciones basadas en elementos que funcionan en un solo elemento por su clave principal, Query que lee un rango dentro de una partición, y Scan que lee todo. Esta guía es la primera familia: las cuatro operaciones. usas más: GetItem, PutItem, UpdateItem, DeleteItem. son los mas baratos llamadas más rápidas DynamoDB ofertas y acertar en sus distinciones (especialmente Put vs Update) previene una clase de errores de pérdida accidental de datos.

¿Cuáles son las operaciones basadas en elementos de DynamoDB?

Las operaciones basadas en elementos de DynamoDB son las cuatro llamadas que actúan sobre un solo elemento mediante su clave principal completa: GetItem lo lee, PutItem lo crea o lo reemplaza por completo, UpdateItem modifica atributos específicos en su lugar y DeleteItem lo elimina. Cada uno aborda exactamente un elemento, lo que las convierte en las llamadas más rápidas y económicas, a diferencia de Query y Scan, que leen muchos.

  • GetItem: lee un elemento por su clave principal completa.
  • PutItem: crea o reemplaza completamente un elemento.
  • UpdateItem: crea o modifica atributos específicos de un elemento existente.
  • DeleteItem: elimina un elemento por su clave principal completa.
  • Los cuatro requieren la clave primaria completa (clave de partición, más clave de clasificación si la la tabla tiene uno): abordan exactamente un elemento.
  • PutItem sobrescribe todo el elemento; UpdateItem es quirúrgico; confundirlos es cómo los atributos desaparecen silenciosamente.

El rasgo definitorio: un elemento, clave completa

Cada acción basada en elementos se dirige a un elemento único mediante su clave principal completa. eso es lo que los hace rápidos y baratos: DynamoDB codifica la clave de partición, go va directamente al Artículo, hecho. Sin filtrado, sin scanning. Si no conoce la clave completa, estas no son las herramienta adecuada; para eso están Query y Scan.

Supongamos que ejecuta cuentas de usuario con la clave USER#<id>:PK: USER#204 email, displayName, plan, createdAt- GetItem en USER#204 → ese usuario, directamente.

  • DeleteItem el USER#204 → elimina ese usuario.

Ambos necesitan la clave exacta. Sin clave, sin acción basada en elementos.

PutItem vs UpdateItem — el que muerde

Ésta es la distinción que vale la pena interiorizar:

  • PutItem escribe el elemento completo. Si USER#204 ya existe y usted PutItem con solo {email, displayName}, los atributos plan y createdAt existentes son gone: una venta reemplaza todo el elemento, no se fusiona.
  • UpdateItem cambia solo lo que nombras. UpdateItem con un SET email = … deja todos los demás atributos intacto y crea el elemento si no existía (un upsert).
Reemplazar todo el artículoCambia algunos atributos,conserva el resto.Modify one existing item?PutItemUpdateItem

Regla general: busque UpdateItem para cambiar un elemento existente y use PutItem sólo cuando realmente quiere decir "escribir este elemento como el estado completamente nuevo". ambos PutItem y UpdateItem aceptan una expresión de condición para que puedas hacer la escritura condicional ("solo si aún no existe").

Acciones basadas en elementos en DynoTable

¿Quiere las API llamadas crudas detrás de estas acciones? Reúna las expresiones y el valor escrito. mapas en el DynamoDB generador de expresiones, y convertir un elemento simple JSON al formato escrito de API con el DynamoDB JSON convertidor.

En DynoTable, ese mismo trabajo es visual: abre un elemento en la cuadrícula para leerlo (un GetItem), editar atributos y confirmar (un UpdateItem), agregar o reemplazar una fila (un PutItem), o eliminar uno, un elemento a la vez.<figure class="doc-media-placeholder" data-kind="screenshot" data-src="docs/guide-dynamodb-item-based-actions-grid.png"

Leer un solo elemento en la Vista rápida de DynoTable, con las acciones Editar elemento y Copiar como JSON.

Escollos + próximos pasos

  • PutItem reemplaza todo el elemento: para cambiar algunos campos sin perder el descanso, use UpdateItem.
  • Debes conocer la clave principal completa: ninguna clave significa Query/Scan, no una acción de elemento.
  • ¿Muchos elementos a la vez? No los repita uno por uno. operaciones por lotes doblarlos en menos viajes de ida y vuelta.
  • ¿Necesita recuperar el valor antiguo/nuevo? Establezca ReturnValues en lugar de un seguimiento GetItem.
  • Relacionado: query vs scan cubre el lado de lectura múltiple.

¿Quiere leer, escribir y eliminar elementos sin escribir una línea de código API? Descargue DynoTable y trabaje con sus tablas directamente.

Costo: un artículo, un salto

Las lecturas basadas en elementos son el acceso direccionable más barato en DynamoDB. Un GetItem en una fila de 2 KB consume 1 RCU eventualmente consistentes (un bloque de 4 KB, redondeado arriba). Un Query que devuelve la misma fila porque conocía la clave de partición y La clave de clasificación cuesta la misma capacidad, pero si solo conoce la clave de partición y filtro en el código de la aplicación, usted paga por cada elemento en la partición.

OperaciónClaves requeridasUso típicoForma de capacidad
GetItemClave primaria completaPunto leído por id1 bloque por artículo
PutItemClave primaria completaCrear o reemplazar el artículo completo1 WCU por KB, redondeado
UpdateItemClave primaria completaAtributos del parcheFacturas por tamaño de artículo escritas
DeleteItemClave primaria completaQuitar filaIgual que escribir en el tamaño del artículo
Query + filtroPartición (+ condición de clasificación opcional)Muchos artículos en una particiónSuma de elementos coincidentes

Pegue un elemento representativo en el calculadora de tamaño de artículo, luego multiplica por solicitudes por segundo en el calculadora de precios cuando una ruta activa utiliza GetItem en un bucle versus un Query bien codificado.

Expresiones de condición en escrituras

Tanto PutItem como UpdateItem aceptan opciones opcionales. expresiones de condición. Patrones típicos:

  • attribute_not_exists(pk) en colocación: inserción de solo creación sin carrera.
  • attribute_exists(pk) en la actualización: rechace crear un código auxiliar accidentalmente.
  • plan = :old en la actualización: simultaneidad optimista; reintentar si otro escritor Cambió el plan primero.

DeleteItem también admite condiciones: elimine solo si status = :closed, por ejemplo. Las condiciones no agregan un cargo de lectura por separado; DynamoDB los evalúa contra el elemento almacenado durante el intento de escritura.

Construya las condiciones visualmente en el DynamoDB generador de expresiones; copiar el ConditionExpression más ExpressionAttributeNames y ExpressionAttributeValues en tu llamada SDK.

Idempotencia y seguridad de sobrescritura

PutItem sin una condición es el último escritor que gana en todo el artículo. Para webhook manejadores o consumidores de SQS, combine opciones de venta con attribute_not_exists en un atributo de marcador, o use UpdateItem con SET processed = :true protegido por attribute_not_exists(processed).

Cuando necesite los valores de atributos anteriores para un registro de auditoría, agregue ReturnValues en el mismo UpdateItem en su lugar de un GetItem anterior: un viaje de ida y vuelta, sin carrera de lectura/escritura.

Elegir la acción del elemento correcta

IntenciónLlamarGuardia
Leer perfil por ID de usuarioGetItem
Crear usuario si está ausentePutItemattribute_not_exists(pk)
Cambiar correo electrónico, conservar otros camposUpdateItemopcional email <> :old
Reemplazar todo el blob de configuraciónPutItemsólo cuando el payload esté completo
Eliminar ticket cerradoDeleteItemstatus = :closed
Leer 50 tickets por claves conocidasBatchGetItemno 50× GetItem en serie

La puesta en escena escribe en DynoTable

DynoTable etapas UpdateItem y PutItem localmente antes de la confirmación. tu revisas diferencias de atributos, ejecute PartiQL comprobaciones opcionales y luego confirme, lo que se asigna al API llamadas reales arriba. La fila masiva elimina el lote en BatchWriteItem debajo del capó con reintento en artículos no procesados.

Para la generación de código SDK, ensamble cláusulas de actualización en el generador de expresiones y pegue el archivo emitido SDK fragmento v3 junto a las pruebas de su controlador.

Actualizado